From ee28bda893a5d1763c53fe9076470d010a3f9525 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 11 Apr 2021 13:43:19 +0200 Subject: [PATCH 001/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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/720] 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 e9f38c6b90ea33234a75a1a95dc03b94c760f602 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 10:47:28 +0200 Subject: [PATCH 084/720] 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 085/720] 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 086/720] 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 973a8201adc6f6344affc40351d219c6e71b94e2 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 23 May 2021 16:44:01 +0000 Subject: [PATCH 087/720] 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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 IM6N<$g8i#Sx&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 088/720] 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 089/720] 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 090/720] =?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 091/720] 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 ba38f787e2f22c3e10d392bf94bd85bf3f712022 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 24 May 2021 11:09:47 +0000 Subject: [PATCH 092/720] 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 47b6a8d7f89e3c17268d72acf88411b8aa2a519b Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 25 May 2021 09:03:06 +0000 Subject: [PATCH 093/720] 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 f421e07d1cfaaa114481550391875da3295228f3 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Tue, 25 May 2021 21:51:50 +0200 Subject: [PATCH 094/720] 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 095/720] 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 096/720] 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 e797a4ec9be4447f2c5eef42c714f3339e603c84 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Tue, 25 May 2021 22:14:26 +0200 Subject: [PATCH 097/720] 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 098/720] 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 099/720] 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 100/720] 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 101/720] 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 102/720] 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 103/720] 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 104/720] 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 105/720] 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 00063cde739929be0bf44c456b3a4465373f4cf5 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 27 May 2021 09:34:12 +0200 Subject: [PATCH 106/720] speedup mcl_observer --- mods/ITEMS/REDSTONE/mcl_observers/init.lua | 86 +++++++++++----------- mods/MAPGEN/mcl_mapgen_core/init.lua | 2 +- 2 files changed, 46 insertions(+), 42 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_observers/init.lua b/mods/ITEMS/REDSTONE/mcl_observers/init.lua index 8f7f6c262..905ff9695 100644 --- a/mods/ITEMS/REDSTONE/mcl_observers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_observers/init.lua @@ -2,6 +2,10 @@ local S = minetest.get_translator("mcl_observers") mcl_observers = {} +local string = string + +local get_node = get_node + -- Warning! TODO: Remove this message. -- 'realtime' is experimental feature! It can slow down the everything! -- Please set it to false and restart the game if something's wrong: @@ -24,7 +28,7 @@ local rules_up = {{ x = 0, y = -1, z = 0, spread = true }} function mcl_observers.observer_activate(pos) minetest.after(mcl_vars.redstone_tick, function(pos) - local node = minetest.get_node(pos) + local node = get_node(pos) if not node then return end @@ -47,7 +51,7 @@ end -- TODO: Also scan metadata changes. -- TODO: Ignore some node changes. local function observer_scan(pos, initialize) - local node = minetest.get_node(pos) + local node = get_node(pos) local front if node.name == "mcl_observers:observer_up_off" or node.name == "mcl_observers:observer_up_on" then front = vector.add(pos, {x=0, y=1, z=0}) @@ -56,7 +60,7 @@ local function observer_scan(pos, initialize) else front = vector.add(pos, minetest.facedir_to_dir(node.param2)) end - local frontnode = minetest.get_node(front) + local frontnode = get_node(front) local meta = minetest.get_meta(pos) local oldnode = meta:get_string("node_name") local oldparam2 = meta:get_string("node_param2") @@ -94,7 +98,7 @@ local function observer_orientate(pos, placer) -- Placer pitch in degrees local pitch = placer:get_look_vertical() * (180 / math.pi) - --local node = minetest.get_node(pos) + --local node = get_node(pos) if pitch > 55 then -- player looking upwards -- Observer looking downwards minetest.set_node(pos, {name="mcl_observers:observer_down_off"}) @@ -156,7 +160,7 @@ mesecon.register_node("mcl_observers:observer", { timer:start(mcl_vars.redstone_tick) end, on_timer = function(pos, elapsed) - local node = minetest.get_node(pos) + local node = get_node(pos) minetest.set_node(pos, {name = "mcl_observers:observer_off", param2 = node.param2}) mesecon.receptor_off(pos, get_rules_flat(node)) end, @@ -208,7 +212,7 @@ mesecon.register_node("mcl_observers:observer_down", { timer:start(mcl_vars.redstone_tick) end, on_timer = function(pos, elapsed) - local node = minetest.get_node(pos) + local node = get_node(pos) minetest.set_node(pos, {name = "mcl_observers:observer_down_off", param2 = node.param2}) mesecon.receptor_off(pos, rules_down) end, @@ -291,138 +295,138 @@ if realtime then mcl_observers.remove_node = minetest.remove_node mcl_observers.bulk_set_node = minetest.bulk_set_node - minetest.add_node=function(pos,node) + function minetest.add_node(pos,node) mcl_observers.add_node(pos,node) - local n=minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z}) + local n = get_node({x=pos.x+1,y=pos.y,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).x==-1 then mcl_observers.observer_activate({x=pos.x+1,y=pos.y,z=pos.z}) end - n=minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z}) + n = get_node({x=pos.x-1,y=pos.y,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).x==1 then mcl_observers.observer_activate({x=pos.x-1,y=pos.y,z=pos.z}) end - n=minetest.get_node({x=pos.x,y=pos.y,z=pos.z+1}) + n = get_node({x=pos.x,y=pos.y,z=pos.z+1}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).z==-1 then mcl_observers.observer_activate({x=pos.x,y=pos.y,z=pos.z+1}) end - n=minetest.get_node({x=pos.x,y=pos.y,z=pos.z-1}) + n = get_node({x=pos.x,y=pos.y,z=pos.z-1}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).z==1 then mcl_observers.observer_activate({x=pos.x,y=pos.y,z=pos.z-1}) end - n=minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}) + n = get_node({x=pos.x,y=pos.y-1,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_u" then mcl_observers.observer_activate({x=pos.x,y=pos.y-1,z=pos.z}) end - n=minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}) + n = get_node({x=pos.x,y=pos.y+1,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_d" then mcl_observers.observer_activate({x=pos.x,y=pos.y+1,z=pos.z}) end end - minetest.set_node=function(pos,node) + function minetest.set_node(pos,node) mcl_observers.set_node(pos,node) - local n=minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z}) + local n = get_node({x=pos.x+1,y=pos.y,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).x==-1 then mcl_observers.observer_activate({x=pos.x+1,y=pos.y,z=pos.z}) end - n=minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z}) + n = get_node({x=pos.x-1,y=pos.y,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).x==1 then mcl_observers.observer_activate({x=pos.x-1,y=pos.y,z=pos.z}) end - n=minetest.get_node({x=pos.x,y=pos.y,z=pos.z+1}) + n = get_node({x=pos.x,y=pos.y,z=pos.z+1}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).z==-1 then mcl_observers.observer_activate({x=pos.x,y=pos.y,z=pos.z+1}) end - n=minetest.get_node({x=pos.x,y=pos.y,z=pos.z-1}) + n = get_node({x=pos.x,y=pos.y,z=pos.z-1}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).z==1 then mcl_observers.observer_activate({x=pos.x,y=pos.y,z=pos.z-1}) end - n=minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}) + n = get_node({x=pos.x,y=pos.y-1,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_u" then mcl_observers.observer_activate({x=pos.x,y=pos.y-1,z=pos.z}) end - n=minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}) + n = get_node({x=pos.x,y=pos.y+1,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_d" then mcl_observers.observer_activate({x=pos.x,y=pos.y+1,z=pos.z}) end end - minetest.swap_node=function(pos,node) + function minetest.swap_node(pos,node) mcl_observers.swap_node(pos,node) - local n=minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z}) + local n = get_node({x=pos.x+1,y=pos.y,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).x==-1 then mcl_observers.observer_activate({x=pos.x+1,y=pos.y,z=pos.z}) end - n=minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z}) + n = get_node({x=pos.x-1,y=pos.y,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).x==1 then mcl_observers.observer_activate({x=pos.x-1,y=pos.y,z=pos.z}) end - n=minetest.get_node({x=pos.x,y=pos.y,z=pos.z+1}) + n = get_node({x=pos.x,y=pos.y,z=pos.z+1}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).z==-1 then mcl_observers.observer_activate({x=pos.x,y=pos.y,z=pos.z+1}) end - n=minetest.get_node({x=pos.x,y=pos.y,z=pos.z-1}) + n = get_node({x=pos.x,y=pos.y,z=pos.z-1}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).z==1 then mcl_observers.observer_activate({x=pos.x,y=pos.y,z=pos.z-1}) end - n=minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}) + n = get_node({x=pos.x,y=pos.y-1,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_u" then mcl_observers.observer_activate({x=pos.x,y=pos.y-1,z=pos.z}) end - n=minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}) + n = get_node({x=pos.x,y=pos.y+1,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_d" then mcl_observers.observer_activate({x=pos.x,y=pos.y+1,z=pos.z}) end end - minetest.remove_node=function(pos) + function minetest.remove_node(pos) mcl_observers.remove_node(pos) - local n=minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z}) + local n = get_node({x=pos.x+1,y=pos.y,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).x==-1 then mcl_observers.observer_activate({x=pos.x+1,y=pos.y,z=pos.z}) end - n=minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z}) + n = get_node({x=pos.x-1,y=pos.y,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).x==1 then mcl_observers.observer_activate({x=pos.x-1,y=pos.y,z=pos.z}) end - n=minetest.get_node({x=pos.x,y=pos.y,z=pos.z+1}) + n = get_node({x=pos.x,y=pos.y,z=pos.z+1}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).z==-1 then mcl_observers.observer_activate({x=pos.x,y=pos.y,z=pos.z+1}) end - n=minetest.get_node({x=pos.x,y=pos.y,z=pos.z-1}) + n = get_node({x=pos.x,y=pos.y,z=pos.z-1}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).z==1 then mcl_observers.observer_activate({x=pos.x,y=pos.y,z=pos.z-1}) end - n=minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}) + n = get_node({x=pos.x,y=pos.y-1,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_u" then mcl_observers.observer_activate({x=pos.x,y=pos.y-1,z=pos.z}) end - n=minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}) + n = get_node({x=pos.x,y=pos.y+1,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_d" then mcl_observers.observer_activate({x=pos.x,y=pos.y+1,z=pos.z}) end end - minetest.bulk_set_node=function(lst, node) + function minetest.bulk_set_node(lst, node) mcl_observers.bulk_set_node(lst, node) for _, pos in pairs(lst) do - local n=minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z}) + local n = get_node({x=pos.x+1,y=pos.y,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).x==-1 then mcl_observers.observer_activate({x=pos.x+1,y=pos.y,z=pos.z}) end - n=minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z}) + n = get_node({x=pos.x-1,y=pos.y,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).x==1 then mcl_observers.observer_activate({x=pos.x-1,y=pos.y,z=pos.z}) end - n=minetest.get_node({x=pos.x,y=pos.y,z=pos.z+1}) + n = get_node({x=pos.x,y=pos.y,z=pos.z+1}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).z==-1 then mcl_observers.observer_activate({x=pos.x,y=pos.y,z=pos.z+1}) end - n=minetest.get_node({x=pos.x,y=pos.y,z=pos.z-1}) + n = get_node({x=pos.x,y=pos.y,z=pos.z-1}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_o" and minetest.facedir_to_dir(n.param2).z==1 then mcl_observers.observer_activate({x=pos.x,y=pos.y,z=pos.z-1}) end - n=minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}) + n = get_node({x=pos.x,y=pos.y-1,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_u" then mcl_observers.observer_activate({x=pos.x,y=pos.y-1,z=pos.z}) end - n=minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}) + n = get_node({x=pos.x,y=pos.y+1,z=pos.z}) if n and n.name and string.sub(n.name,1,24)=="mcl_observers:observer_d" then mcl_observers.observer_activate({x=pos.x,y=pos.y+1,z=pos.z}) end diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index b3db122e6..a6ceb4bf9 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -1869,7 +1869,7 @@ minetest.register_on_generated(function(minp, maxp, blockseed) mcl_vars.add_chunk(minp) end) -minetest.register_on_generated=function(node_function) +function minetest.register_on_generated(node_function) mcl_mapgen_core.register_generator("mod_"..tostring(#registered_generators+1), nil, node_function) end From f8ee9c79c24befa1d0ec5488a5c6ecea87e5a533 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 27 May 2021 09:34:58 +0200 Subject: [PATCH 107/720] fix crash :-( --- mods/ITEMS/REDSTONE/mcl_observers/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/REDSTONE/mcl_observers/init.lua b/mods/ITEMS/REDSTONE/mcl_observers/init.lua index 905ff9695..81c018016 100644 --- a/mods/ITEMS/REDSTONE/mcl_observers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_observers/init.lua @@ -4,7 +4,7 @@ mcl_observers = {} local string = string -local get_node = get_node +local get_node = minetest.get_node -- Warning! TODO: Remove this message. -- 'realtime' is experimental feature! It can slow down the everything! From f1c6c3b285ef7aaee1a203f3f7a75598cb422527 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 27 May 2021 09:41:20 +0200 Subject: [PATCH 108/720] [mcl_chests] fix warnings --- mods/ITEMS/mcl_chests/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index b92ed4c01..de7ef97ca 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -47,7 +47,7 @@ minetest.register_entity("mcl_chests:chest", { local playerlist = self.players playerlist[playername] = nil if self.is_open then - for _ in pairs(playerlist) do + if next(playerlist) then return end self:set_animation("close") From b8782d0af1a1f86cb9b990378f8e894264d36e85 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 27 May 2021 11:30:43 +0200 Subject: [PATCH 109/720] rename API doc file properly --- mods/ENTITIES/mcl_mobs/{readme.MD => README.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename mods/ENTITIES/mcl_mobs/{readme.MD => README.md} (100%) diff --git a/mods/ENTITIES/mcl_mobs/readme.MD b/mods/ENTITIES/mcl_mobs/README.md similarity index 100% rename from mods/ENTITIES/mcl_mobs/readme.MD rename to mods/ENTITIES/mcl_mobs/README.md From 3bedc8106883284b23db0de9de2f9b8213b65270 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 28 May 2021 00:07:06 +0200 Subject: [PATCH 110/720] fix some code style issues in lightning --- mods/ENTITIES/mcl_item_entity/init.lua | 21 +++++++++++---------- mods/ENVIRONMENT/lightning/init.lua | 25 +++++++++++++------------ 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index a73f586e9..7886664f8 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -363,6 +363,17 @@ if not time_to_live then time_to_live = 300 end +local function cxcz(o, cw, one, zero) + if cw < 0 then + table.insert(o, { [one]=1, y=0, [zero]=0 }) + table.insert(o, { [one]=-1, y=0, [zero]=0 }) + else + table.insert(o, { [one]=-1, y=0, [zero]=0 }) + table.insert(o, { [one]=1, y=0, [zero]=0 }) + end + return o +end + minetest.register_entity(":__builtin:item", { initial_properties = { hp_max = 1, @@ -642,16 +653,6 @@ minetest.register_entity(":__builtin:item", { -- 1st: closest -- 2nd: other direction -- 3rd and 4th: other axis - local cxcz = function(o, cw, one, zero) - if cw < 0 then - table.insert(o, { [one]=1, y=0, [zero]=0 }) - table.insert(o, { [one]=-1, y=0, [zero]=0 }) - else - table.insert(o, { [one]=-1, y=0, [zero]=0 }) - table.insert(o, { [one]=1, y=0, [zero]=0 }) - end - return o - end if math.abs(cx) < math.abs(cz) then order = cxcz(order, cx, "x", "z") order = cxcz(order, cz, "z", "x") diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 2b79bf5ce..3d5955d6e 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -1,6 +1,7 @@ --[[ Copyright (C) 2016 - Auke Kok +Adapted by MineClone2 contributors "lightning" is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as @@ -9,7 +10,7 @@ of the license, or (at your option) any later version. --]] -local S = minetest.get_translator("lightning") +local S = minetest.get_translator(minetest.get_current_modname()) local get_connected_players = minetest.get_connected_players local line_of_sight = minetest.line_of_sight @@ -22,22 +23,22 @@ local add_entity = minetest.add_entity local get_objects_inside_radius = minetest.get_objects_inside_radius local get_item_group = minetest.get_item_group -lightning = {} - -lightning.interval_low = 17 -lightning.interval_high = 503 -lightning.range_h = 100 -lightning.range_v = 50 -lightning.size = 100 --- disable this to stop lightning mod from striking -lightning.auto = true +lightning = { + interval_low = 17, + interval_high = 503, + range_h = 100, + range_v = 50, + size = 100, + -- disable this to stop lightning mod from striking + auto = true, +} local rng = PcgRandom(32321123312123) local ps = {} local ttl = -1 -local revertsky = function(dtime) +local function revertsky(dtime) if ttl == 0 then return end @@ -96,7 +97,7 @@ end -- lightning strike API -- * pos: optional, if not given a random pos will be chosen -- * returns: bool - success if a strike happened -lightning.strike = function(pos) +function lightning.strike(pos) if lightning.auto then after(rng:next(lightning.interval_low, lightning.interval_high), lightning.strike) end From 5f82e76862ef729ccdf238a5beae216c056d54b8 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 28 May 2021 00:34:58 +0200 Subject: [PATCH 111/720] fix many codestyle issues --- mods/ENVIRONMENT/mcl_weather/nether_dust.lua | 2 +- mods/ENVIRONMENT/mcl_weather/skycolor.lua | 2 +- mods/ENVIRONMENT/mcl_weather/snow.lua | 4 +- mods/ENVIRONMENT/mcl_weather/weather_core.lua | 21 +++---- mods/HELP/doc/doc/init.lua | 14 ++--- mods/HELP/doc/doc_identifier/init.lua | 9 +-- mods/HELP/doc/doc_items/init.lua | 60 +++++++++++-------- mods/HELP/mcl_craftguide/init.lua | 2 +- mods/HELP/tt/init.lua | 6 +- mods/HUD/hudbars/init.lua | 2 +- mods/HUD/mcl_experience/init.lua | 14 ++--- mods/HUD/mcl_inventory/creative.lua | 10 ++-- mods/HUD/mcl_inventory/init.lua | 4 +- mods/ITEMS/mcl_banners/init.lua | 16 ++--- mods/ITEMS/mcl_banners/patterncraft.lua | 4 +- mods/ITEMS/mcl_books/init.lua | 10 ++-- mods/ITEMS/mcl_bows/arrow.lua | 14 ++--- mods/ITEMS/mcl_bows/bow.lua | 10 ++-- mods/ITEMS/mcl_brewing/init.lua | 44 ++++---------- 19 files changed, 120 insertions(+), 128 deletions(-) diff --git a/mods/ENVIRONMENT/mcl_weather/nether_dust.lua b/mods/ENVIRONMENT/mcl_weather/nether_dust.lua index 16cdc9487..d328dae21 100644 --- a/mods/ENVIRONMENT/mcl_weather/nether_dust.lua +++ b/mods/ENVIRONMENT/mcl_weather/nether_dust.lua @@ -2,7 +2,7 @@ mcl_weather.nether_dust = {} mcl_weather.nether_dust.particles_count = 99 -- calculates coordinates and draw particles for Nether dust -mcl_weather.nether_dust.add_dust_particles = function(player) +function mcl_weather.nether_dust.add_dust_particles(player) for i=mcl_weather.nether_dust.particles_count, 1,-1 do local rpx, rpy, rpz = mcl_weather.get_random_pos_by_player_look_dir(player) minetest.add_particle({ diff --git a/mods/ENVIRONMENT/mcl_weather/skycolor.lua b/mods/ENVIRONMENT/mcl_weather/skycolor.lua index 488f6b1a1..6b89c33be 100644 --- a/mods/ENVIRONMENT/mcl_weather/skycolor.lua +++ b/mods/ENVIRONMENT/mcl_weather/skycolor.lua @@ -235,7 +235,7 @@ minetest.register_globalstep(function(dtime) end) -local initsky = function(player) +local function initsky(player) if (mcl_weather.skycolor.active) then mcl_weather.skycolor.force_update = true end diff --git a/mods/ENVIRONMENT/mcl_weather/snow.lua b/mods/ENVIRONMENT/mcl_weather/snow.lua index 9ec9fbac1..9f89a3a0a 100644 --- a/mods/ENVIRONMENT/mcl_weather/snow.lua +++ b/mods/ENVIRONMENT/mcl_weather/snow.lua @@ -6,7 +6,7 @@ mcl_weather.snow.particles_count = 15 mcl_weather.snow.init_done = false -- calculates coordinates and draw particles for snow weather -mcl_weather.snow.add_snow_particles = function(player) +function mcl_weather.snow.add_snow_particles(player) 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) @@ -30,7 +30,7 @@ mcl_weather.snow.add_snow_particles = function(player) end end -mcl_weather.snow.set_sky_box = function() +function mcl_weather.snow.set_sky_box() mcl_weather.skycolor.add_layer( "weather-pack-snow-sky", {{r=0, g=0, b=0}, diff --git a/mods/ENVIRONMENT/mcl_weather/weather_core.lua b/mods/ENVIRONMENT/mcl_weather/weather_core.lua index b8deba318..b41887208 100644 --- a/mods/ENVIRONMENT/mcl_weather/weather_core.lua +++ b/mods/ENVIRONMENT/mcl_weather/weather_core.lua @@ -39,7 +39,7 @@ mcl_weather.reg_weathers["none"] = { local storage = minetest.get_mod_storage() -- Save weather into mod storage, so it can be loaded after restarting the server -local save_weather = function() +local function save_weather() if not mcl_weather.end_time then return end storage:set_string("mcl_weather_state", mcl_weather.state) storage:set_int("mcl_weather_end_time", mcl_weather.end_time) @@ -47,7 +47,7 @@ local save_weather = function() end minetest.register_on_shutdown(save_weather) -mcl_weather.get_rand_end_time = function(min_duration, max_duration) +function mcl_weather.get_rand_end_time(min_duration, max_duration) local r if min_duration ~= nil and max_duration ~= nil then r = math.random(min_duration, max_duration) @@ -57,7 +57,7 @@ mcl_weather.get_rand_end_time = function(min_duration, max_duration) return minetest.get_gametime() + r end -mcl_weather.get_current_light_factor = function() +function mcl_weather.get_current_light_factor() if mcl_weather.state == "none" then return nil else @@ -68,7 +68,7 @@ end -- Returns true if pos is outdoor. -- Outdoor is defined as any node in the Overworld under open sky. -- FIXME: Nodes below glass also count as “outdoor”, this should not be the case. -mcl_weather.is_outdoor = function(pos) +function mcl_weather.is_outdoor(pos) local cpos = {x=pos.x, y=pos.y+1, z=pos.z} local dim = mcl_worlds.pos_to_dimension(cpos) if minetest.get_node_light(cpos, 0.5) == 15 and dim == "overworld" then @@ -79,7 +79,7 @@ end -- checks if player is undewater. This is needed in order to -- turn off weather particles generation. -mcl_weather.is_underwater = function(player) +function mcl_weather.is_underwater(player) local ppos = player:get_pos() local offset = player:get_eye_offset() local player_eye_pos = {x = ppos.x + offset.x, @@ -94,7 +94,7 @@ 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. -mcl_weather.get_random_pos_by_player_look_dir = function(player) +function mcl_weather.get_random_pos_by_player_look_dir(player) local look_dir = player:get_look_dir() local player_pos = player:get_pos() @@ -123,6 +123,7 @@ mcl_weather.get_random_pos_by_player_look_dir = function(player) end local t, wci = 0, mcl_weather.check_interval + minetest.register_globalstep(function(dtime) t = t + dtime if t < wci then return end @@ -146,7 +147,7 @@ minetest.register_globalstep(function(dtime) end) -- Sets random weather (which could be 'none' (no weather)). -mcl_weather.set_random_weather = function(weather_name, weather_meta) +function mcl_weather.set_random_weather(weather_name, weather_meta) if weather_meta == nil then return end local transitions = weather_meta.transitions local random_roll = math.random(0,100) @@ -166,7 +167,7 @@ end -- * explicit_end_time is OPTIONAL. If specified, explicitly set the -- gametime (minetest.get_gametime) in which the weather ends. -- * changer is OPTIONAL, for logging purposes. -mcl_weather.change_weather = function(new_weather, explicit_end_time, changer_name) +function mcl_weather.change_weather(new_weather, explicit_end_time, changer_name) local changer_name = changer_name or debug.getinfo(2).name.."()" if (mcl_weather.reg_weathers ~= nil and mcl_weather.reg_weathers[new_weather] ~= nil) then @@ -199,7 +200,7 @@ mcl_weather.change_weather = function(new_weather, explicit_end_time, changer_na return false end -mcl_weather.get_weather = function() +function mcl_weather.get_weather() return mcl_weather.state end @@ -273,7 +274,7 @@ if weather_allow_abm ~= nil and weather_allow_abm == false then end -local load_weather = function() +local function load_weather() local weather = storage:get_string("mcl_weather_state") if weather and weather ~= "" then mcl_weather.state = weather diff --git a/mods/HELP/doc/doc/init.lua b/mods/HELP/doc/doc/init.lua index a04d83bda..cadfff442 100644 --- a/mods/HELP/doc/doc/init.lua +++ b/mods/HELP/doc/doc/init.lua @@ -448,13 +448,13 @@ end doc.entry_builders = {} -- Scrollable freeform text -doc.entry_builders.text = function(data) +function doc.entry_builders.text(data) local formstring = doc.widgets.text(data, doc.FORMSPEC.ENTRY_START_X, doc.FORMSPEC.ENTRY_START_Y, doc.FORMSPEC.ENTRY_WIDTH - 0.4, doc.FORMSPEC.ENTRY_HEIGHT) return formstring end -- Scrollable freeform text with an optional standard gallery (3 rows, 3:2 aspect ratio) -doc.entry_builders.text_and_gallery = function(data, playername) +function doc.entry_builders.text_and_gallery(data, playername) -- How much height the image gallery “steals” from the text widget local stolen_height = 0 local formstring = "" @@ -476,7 +476,7 @@ end doc.widgets = {} -- Scrollable freeform text -doc.widgets.text = function(data, x, y, width, height) +function doc.widgets.text(data, x, y, width, height) if x == nil then x = doc.FORMSPEC.ENTRY_START_X end @@ -502,7 +502,7 @@ end -- Image gallery -- Currently, only one gallery per entry is supported. TODO: Add support for multiple galleries in an entry (low priority) -doc.widgets.gallery = function(imagedata, playername, x, y, aspect_ratio, width, rows, align_left, align_top) +function doc.widgets.gallery(imagedata, playername, x, y, aspect_ratio, width, rows, align_left, align_top) if playername == nil then return nil end -- emergency exit local formstring = "" @@ -591,7 +591,7 @@ doc.widgets.gallery = function(imagedata, playername, x, y, aspect_ratio, width, end -- Direct formspec -doc.entry_builders.formspec = function(data) +function doc.entry_builders.formspec(data) return data end @@ -802,7 +802,7 @@ function doc.get_sorted_entry_names(cid) local cat = doc.data.categories[cid] local used_eids = {} -- Helper function to extract the entry ID out of the output table - local extract = function(entry_table) + local function extract(entry_table) local eids = {} for k,v in pairs(entry_table) do local eid = v.eid @@ -1175,7 +1175,7 @@ minetest.register_on_joinplayer(function(player) end) ---[[ Add buttons for inventory mods ]] -local button_action = function(player) +local function button_action(player) doc.show_doc(player:get_player_name()) end diff --git a/mods/HELP/doc/doc_identifier/init.lua b/mods/HELP/doc/doc_identifier/init.lua index a3a35e2fa..a74eb16a3 100644 --- a/mods/HELP/doc/doc_identifier/init.lua +++ b/mods/HELP/doc/doc_identifier/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("doc_identifier") +local S = minetest.get_translator(minetest.get_current_modname()) local doc_identifier = {} @@ -6,15 +6,16 @@ doc_identifier.registered_objects = {} -- API doc.sub.identifier = {} -doc.sub.identifier.register_object = function(object_name, category_id, entry_id) + +function doc.sub.identifier.register_object(object_name, category_id, entry_id) doc_identifier.registered_objects[object_name] = { category = category_id, entry = entry_id } end -- END OF API -doc_identifier.identify = function(itemstack, user, pointed_thing) +function doc_identifier.identify(itemstack, user, pointed_thing) local username = user:get_player_name() - local show_message = function(username, itype, param) + local function show_message(username, itype, param) local vsize = 2 local message if itype == "error_item" then diff --git a/mods/HELP/doc/doc_items/init.lua b/mods/HELP/doc/doc_items/init.lua index edba0dae3..d492e6cf4 100644 --- a/mods/HELP/doc/doc_items/init.lua +++ b/mods/HELP/doc/doc_items/init.lua @@ -1,6 +1,12 @@ -local S = minetest.get_translator("doc_items") +local S = minetest.get_translator(minetest.get_current_modname()) local N = function(s) return s end +local math = math +local string = string + +local tostring = tostring +local pairs = pairs + doc.sub.items = {} -- Template texts @@ -34,13 +40,17 @@ local suppressed = { local forbidden_core_factoids = {} -- Helper functions -local yesno = function(bool) - if bool==true then return S("Yes") - elseif bool==false then return S("No") - else return "N/A" end +local function yesno(bool) + if bool == true then + return S("Yes") + elseif bool == false then + return S("No") + else + return "N/A" + end end -local groups_to_string = function(grouptable, filter) +local function groups_to_string(grouptable, filter) local gstring = "" local groups_count = 0 for id, value in pairs(grouptable) do @@ -66,7 +76,7 @@ local groups_to_string = function(grouptable, filter) end -- Removes all text after the first newline (including the newline) -local scrub_newlines = function(text) +local function scrub_newlines(text) local spl = string.split(text, "\n") if spl and #spl > 0 then return spl[1] @@ -76,7 +86,7 @@ local scrub_newlines = function(text) end --[[ Append a newline to text, unless it already ends with a newline. ]] -local newline = function(text) +local function newline(text) if string.sub(text, #text, #text) == "\n" or text == "" then return text else @@ -85,7 +95,7 @@ local newline = function(text) end --[[ Make sure the text ends with two newlines by appending any missing newlines at the end, if neccessary. ]] -local newline2 = function(text) +local function newline2(text) if string.sub(text, #text-1, #text) == "\n\n" or text == "" then return text elseif string.sub(text, #text, #text) == "\n" then @@ -97,7 +107,7 @@ end -- Extract suitable item description for formspec -local description_for_formspec = function(itemstring) +local function description_for_formspec(itemstring) if minetest.registered_items[itemstring] == nil then -- Huh? The item doesn't exist for some reason. Better give a dummy string minetest.log("warning", "[doc] Unknown item detected: "..tostring(itemstring)) @@ -111,7 +121,7 @@ local description_for_formspec = function(itemstring) end end -local get_entry_name = function(itemstring) +local function get_entry_name(itemstring) local def = minetest.registered_items[itemstring] if def._doc_items_entry_name ~= nil then return def._doc_items_entry_name @@ -122,7 +132,7 @@ local get_entry_name = function(itemstring) end end -doc.sub.items.get_group_name = function(groupname) +function doc.sub.items.get_group_name(groupname) if groupdefs[groupname] ~= nil and doc.sub.items.settings.friendly_group_names == true then return groupdefs[groupname] else @@ -130,7 +140,7 @@ doc.sub.items.get_group_name = function(groupname) end end -local burntime_to_text = function(burntime) +local function burntime_to_text(burntime) if burntime == nil then return S("unknown") elseif burntime == 1 then @@ -146,7 +156,7 @@ end * Full punch interval * Damage groups ]] -local factoid_toolcaps = function(tool_capabilities, check_uses) +local function factoid_toolcaps(tool_capabilities, check_uses) if forbidden_core_factoids.tool_capabilities then return "" end @@ -282,7 +292,7 @@ end - Digging times/groups - level group ]] -local factoid_mining_node = function(data) +local function factoid_mining_node(data) if forbidden_core_factoids.node_mining then return "" end @@ -344,7 +354,7 @@ local factoid_mining_node = function(data) end -- Pointing range of itmes -local range_factoid = function(itemstring, def) +local function range_factoid(itemstring, def) local handrange = minetest.registered_items[""].range local itemrange = def.range if itemstring == "" then @@ -364,7 +374,7 @@ local range_factoid = function(itemstring, def) end -- Smelting fuel factoid -local factoid_fuel = function(itemstring, ctype) +local function factoid_fuel(itemstring, ctype) if forbidden_core_factoids.fuel then return "" end @@ -392,7 +402,7 @@ local factoid_fuel = function(itemstring, ctype) end -- Shows the itemstring of an item -local factoid_itemstring = function(itemstring, playername) +local function factoid_itemstring(itemstring, playername) if forbidden_core_factoids.itemstring then return "" end @@ -405,7 +415,7 @@ local factoid_itemstring = function(itemstring, playername) end end -local entry_image = function(data) +local function entry_image(data) local formstring = "" -- No image for air if data.itemstring ~= "air" then @@ -434,7 +444,7 @@ factoid_generators.craftitems = {} * factoid_type: If set, oly returns factoid with a matching factoid_type. If nil, all factoids for this category will be generated * data: Entry data to parse ]] -local factoid_custom = function(category_id, factoid_type, data) +local function factoid_custom(category_id, factoid_type, data) local ftable = factoid_generators[category_id] local datastring = "" -- Custom factoids are inserted here @@ -450,7 +460,7 @@ local factoid_custom = function(category_id, factoid_type, data) end -- Shows core information shared by all items, to be inserted at the top -local factoids_header = function(data, ctype) +local function factoids_header(data, ctype) local datastring = "" if not forbidden_core_factoids.basics then @@ -510,7 +520,7 @@ local factoids_header = function(data, ctype) end -- Shows less important information shared by all items, to be inserted at the bottom -local factoids_footer = function(data, playername, ctype) +local function factoids_footer(data, playername, ctype) local datastring = "" datastring = datastring .. factoid_custom(ctype, "groups", data) datastring = newline2(datastring) @@ -812,7 +822,7 @@ doc.add_category("nodes", { -- Non-default drops if not forbidden_core_factoids.drops and data.def.drop ~= nil and data.def.drop ~= data.itemstring and data.itemstring ~= "air" then -- TODO: Calculate drop probabilities of max > 1 like for max == 1 - local get_desc = function(stack) + local function get_desc(stack) return description_for_formspec(stack:get_name()) end if data.def.drop == "" then @@ -904,7 +914,7 @@ doc.add_category("nodes", { -- Do some cleanup of the probability table if max == 1 or max == nil then -- Sort by rarity - local comp = function(p1, p2) + local function comp(p1, p2) return p1.rarity < p2.rarity end table.sort(probtables, comp) @@ -1232,7 +1242,7 @@ local function gather_descs() }) end - local add_entries = function(deftable, category_id) + local function add_entries(deftable, category_id) for id, def in pairs(deftable) do local name, ld, uh, im local forced = false diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index bfaef6011..378b420ff 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -726,7 +726,7 @@ local function make_formspec(name) return concat(fs) end -local show_fs = function(player, name) +local function show_fs(player, name) if sfinv_only then sfinv.set_player_inventory_formspec(player) else diff --git a/mods/HELP/tt/init.lua b/mods/HELP/tt/init.lua index a5ae24a35..838aa3fa5 100644 --- a/mods/HELP/tt/init.lua +++ b/mods/HELP/tt/init.lua @@ -7,11 +7,11 @@ tt.NAME_COLOR = mcl_colors.YELLOW -- API tt.registered_snippets = {} -tt.register_snippet = function(func) +function tt.register_snippet(func) table.insert(tt.registered_snippets, func) end -tt.register_priority_snippet = function(func) +function tt.register_priority_snippet(func) table.insert(tt.registered_snippets, 1, func) end @@ -60,7 +60,7 @@ end minetest.register_on_mods_loaded(append_snippets) -tt.reload_itemstack_description = function(itemstack) +function tt.reload_itemstack_description(itemstack) local itemstring = itemstack:get_name() local def = itemstack:get_definition() local meta = itemstack:get_meta() diff --git a/mods/HUD/hudbars/init.lua b/mods/HUD/hudbars/init.lua index a88d14dcf..8a1e97c9c 100644 --- a/mods/HUD/hudbars/init.lua +++ b/mods/HUD/hudbars/init.lua @@ -179,7 +179,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, direction, format_string_config.format_max_value = "%d" end - hudtable.add_all = function(player, hudtable, start_value, start_max, start_hidden) + function hudtable.add_all(player, hudtable, start_value, start_max, start_hidden) if start_value == nil then start_value = hudtable.default_start_value end if start_max == nil then start_max = hudtable.default_start_max end if start_hidden == nil then start_hidden = hudtable.default_start_hidden end diff --git a/mods/HUD/mcl_experience/init.lua b/mods/HUD/mcl_experience/init.lua index a40599d17..0343efa24 100644 --- a/mods/HUD/mcl_experience/init.lua +++ b/mods/HUD/mcl_experience/init.lua @@ -40,7 +40,7 @@ minetest.register_on_mods_loaded(function() registered_nodes = minetest.registered_nodes end) -local load_data = function(player) +local function load_data(player) local name = player:get_player_name() pool[name] = {} local temp_pool = pool[name] @@ -52,7 +52,7 @@ local load_data = function(player) end -- saves data to be utilized on next login -local save_data = function(player) +local function save_data(player) local name = player:get_player_name() local temp_pool = pool[name] local meta = player:get_meta() @@ -70,7 +70,7 @@ minetest.register_on_leaveplayer(function(player) end) -- create instance of new hud -hud_manager.add_hud = function(player,hud_name,def) +function hud_manager.add_hud(player,hud_name,def) local name = player:get_player_name() if minetest.is_creative_enabled(name) then return @@ -100,7 +100,7 @@ hud_manager.add_hud = function(player,hud_name,def) end -- delete instance of hud -hud_manager.remove_hud = function(player,hud_name) +function hud_manager.remove_hud(player,hud_name) local name = player:get_player_name() if player_huds[name] and player_huds[name][hud_name] then player:hud_remove(player_huds[name][hud_name]) @@ -109,7 +109,7 @@ hud_manager.remove_hud = function(player,hud_name) end -- change element of hud -hud_manager.change_hud = function(data) +function hud_manager.change_hud(data) local name = data.player:get_player_name() if player_huds[name] and player_huds[name][data.hud_name] then data.player:hud_change(player_huds[name][data.hud_name], data.element, data.data) @@ -117,7 +117,7 @@ hud_manager.change_hud = function(data) end -- gets if hud exists -hud_manager.hud_exists = function(player,hud_name) +function hud_manager.hud_exists(player,hud_name) local name = player:get_player_name() if player_huds[name] and player_huds[name][hud_name] then return true @@ -133,7 +133,7 @@ minetest.register_on_leaveplayer(function(player) end) -- is used for shutdowns to save all data -local save_all = function() +local function save_all() for name,_ in pairs(pool) do local player = minetest.get_player_by_name(name) if player then diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 4d73aca35..972456c3f 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -33,13 +33,13 @@ groups to be set. ]] do for name,def in pairs(minetest.registered_items) do if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) and def.description and def.description ~= "" then - local is_redstone = function(def) + local function is_redstone(def) return def.mesecons or def.groups.mesecon or def.groups.mesecon_conductor_craftable or def.groups.mesecon_effecor_off end - local is_tool = function(def) + local function is_tool(def) return def.groups.tool or (def.tool_capabilities ~= nil and def.tool_capabilities.damage_groups == nil) end - local is_weapon_or_armor = function(def) + local function is_weapon_or_armor(def) return def.groups.weapon or def.groups.weapon_ranged or def.groups.ammo or def.groups.combat_item or ((def.groups.armor_head or def.groups.armor_torso or def.groups.armor_legs or def.groups.armor_feet or def.groups.horse_armor) and def.groups.non_combat_armor ~= 1) end -- Is set to true if it was added in any category besides misc @@ -208,7 +208,7 @@ local filtername = {} local noffset_x_start = -0.24 local noffset_x = noffset_x_start local noffset_y = -0.25 -local next_noffset = function(id, right) +local function next_noffset(id, right) if right then noffset[id] = { 8.94, noffset_y } else @@ -291,7 +291,7 @@ filtername["inv"] = S("Survival Inventory") end]] -mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_size, show, page, filter) +function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, show, page, filter) --reset_menu_item_bg() pagenum = math.floor(pagenum) or 1 diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index 4c50a6c13..a0be9b02e 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -134,7 +134,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end) if not minetest.is_creative_enabled("") then - mcl_inventory.update_inventory_formspec = function(player) + function mcl_inventory.update_inventory_formspec(player) set_inventory(player) end end @@ -158,7 +158,7 @@ minetest.register_on_joinplayer(function(player) player:hud_set_hotbar_selected_image("mcl_inventory_hotbar_selected.png") local old_update_player = mcl_armor.update_player - mcl_armor.update_player = function(player, info) + function mcl_armor.update_player(player, info) old_update_player(player, info) set_inventory(player, true) end diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua index 63ad0c0b8..4ab291804 100644 --- a/mods/ITEMS/mcl_banners/init.lua +++ b/mods/ITEMS/mcl_banners/init.lua @@ -93,11 +93,11 @@ local layer_ratio = 255 local standing_banner_entity_offset = { x=0, y=-0.499, z=0 } local hanging_banner_entity_offset = { x=0, y=-1.7, z=0 } -local rotation_level_to_yaw = function(rotation_level) +local function rotation_level_to_yaw(rotation_level) return (rotation_level * (math.pi/8)) + math.pi end -local on_dig_banner = function(pos, node, digger) +local function on_dig_banner(pos, node, digger) -- Check protection local name = digger:get_player_name() if minetest.is_protected(pos, name) then @@ -116,7 +116,7 @@ local on_dig_banner = function(pos, node, digger) minetest.remove_node(pos) end -local on_destruct_banner = function(pos, hanging) +local function on_destruct_banner(pos, hanging) local offset, nodename if hanging then offset = hanging_banner_entity_offset @@ -136,15 +136,15 @@ local on_destruct_banner = function(pos, hanging) end end -local on_destruct_standing_banner = function(pos) +local function on_destruct_standing_banner(pos) return on_destruct_banner(pos, false) end -local on_destruct_hanging_banner = function(pos) +local function on_destruct_hanging_banner(pos) return on_destruct_banner(pos, true) end -local make_banner_texture = function(base_color, layers) +local function make_banner_texture(base_color, layers) local colorize if mcl_banners.colors[base_color] then colorize = mcl_banners.colors[base_color][4] @@ -174,7 +174,7 @@ local make_banner_texture = function(base_color, layers) end end -local spawn_banner_entity = function(pos, hanging, itemstack) +local function spawn_banner_entity(pos, hanging, itemstack) local banner if hanging then banner = minetest.add_entity(pos, "mcl_banners:hanging_banner") @@ -198,7 +198,7 @@ local spawn_banner_entity = function(pos, hanging, itemstack) return banner end -local respawn_banner_entity = function(pos, node, force) +local function respawn_banner_entity(pos, node, force) local hanging = node.name == "mcl_banners:hanging_banner" local offset if hanging then diff --git a/mods/ITEMS/mcl_banners/patterncraft.lua b/mods/ITEMS/mcl_banners/patterncraft.lua index 516624301..65699768e 100644 --- a/mods/ITEMS/mcl_banners/patterncraft.lua +++ b/mods/ITEMS/mcl_banners/patterncraft.lua @@ -259,7 +259,7 @@ for colorid, colortab in pairs(mcl_banners.colors) do end -- Create a banner description containing all the layer names -mcl_banners.make_advanced_banner_description = function(description, layers) +function mcl_banners.make_advanced_banner_description(description, layers) if layers == nil or #layers == 0 then -- No layers, revert to default return "" @@ -296,7 +296,7 @@ Parameters same as for minetest.register_craft_predict. craft_predict is set true when called from minetest.craft_preview, in this case, this function MUST NOT change the crafting grid. ]] -local banner_pattern_craft = function(itemstack, player, old_craft_grid, craft_inv, craft_predict) +local function banner_pattern_craft(itemstack, player, old_craft_grid, craft_inv, craft_predict) if minetest.get_item_group(itemstack:get_name(), "banner") ~= 1 then return end diff --git a/mods/ITEMS/mcl_books/init.lua b/mods/ITEMS/mcl_books/init.lua index b7bd20d9a..0839c1650 100644 --- a/mods/ITEMS/mcl_books/init.lua +++ b/mods/ITEMS/mcl_books/init.lua @@ -30,7 +30,7 @@ end -- Get the included text out of the book item -- itemstack: Book item -- meta: Meta of book (optional) -local get_text = function(itemstack) +local function get_text(itemstack) -- Grab the text local meta = itemstack:get_meta() local text = meta:get_string("text") @@ -56,7 +56,7 @@ local get_text = function(itemstack) return text end -local make_description = function(title, author, generation) +local function make_description(title, author, generation) local desc if generation == 0 then desc = S("“@1”", title) @@ -71,11 +71,11 @@ local make_description = function(title, author, generation) return desc end -local cap_text_length = function(text, max_length) +local function cap_text_length(text, max_length) return string.sub(text, 1, max_length) end -local write = function(itemstack, user, pointed_thing) +local function write(itemstack, user, pointed_thing) -- Call on_rightclick if the pointed node defines it if pointed_thing.type == "node" then local node = minetest.get_node(pointed_thing.under) @@ -96,7 +96,7 @@ local write = function(itemstack, user, pointed_thing) minetest.show_formspec(user:get_player_name(), "mcl_books:writable_book", formspec) end -local read = function(itemstack, user, pointed_thing) +local function read(itemstack, user, pointed_thing) -- Call on_rightclick if the pointed node defines it if pointed_thing.type == "node" then local node = minetest.get_node(pointed_thing.under) diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index a56b2e7cf..8b2eb0ac0 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_bows") +local S = minetest.get_translator(minetest.get_current_modname()) local math = math local vector = vector @@ -79,7 +79,7 @@ local ARROW_ENTITY={ } -- Destroy arrow entity self at pos and drops it as an item -local spawn_item = function(self, pos) +local function spawn_item(self, pos) if not minetest.is_creative_enabled("") then local item = minetest.add_item(pos, "mcl_bows:arrow") item:set_velocity({x=0, y=0, z=0}) @@ -89,7 +89,7 @@ local spawn_item = function(self, pos) self.object:remove() end -local damage_particles = function(pos, is_critical) +local function damage_particles(pos, is_critical) if is_critical then minetest.add_particlespawner({ amount = 15, @@ -111,7 +111,7 @@ local damage_particles = function(pos, is_critical) end end -ARROW_ENTITY.on_step = function(self, dtime) +function ARROW_ENTITY.on_step(self, dtime) mcl_burning.tick(self.object, dtime, self) self._time_in_air = self._time_in_air + .001 @@ -423,13 +423,13 @@ end -- Force recheck of stuck arrows when punched. -- Otherwise, punching has no effect. -ARROW_ENTITY.on_punch = function(self) +function ARROW_ENTITY.on_punch(self) if self._stuck then self._stuckrechecktimer = STUCK_RECHECK_TIME end end -ARROW_ENTITY.get_staticdata = function(self) +function ARROW_ENTITY.get_staticdata(self) local out = { lastpos = self._lastpos, startpos = self._startpos, @@ -451,7 +451,7 @@ ARROW_ENTITY.get_staticdata = function(self) return minetest.serialize(out) end -ARROW_ENTITY.on_activate = function(self, staticdata, dtime_s) +function ARROW_ENTITY.on_activate(self, staticdata, dtime_s) self._time_in_air = 1.0 self._in_player = false local data = minetest.deserialize(staticdata) diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index f752142c2..8d60f3969 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -33,7 +33,7 @@ local bow_load = {} -- Another player table, this one stores the wield index of the bow being charged local bow_index = {} -mcl_bows.shoot_arrow = function(arrow_item, pos, dir, yaw, shooter, power, damage, is_critical, bow_stack, collectable) +function mcl_bows.shoot_arrow(arrow_item, pos, dir, yaw, shooter, power, damage, is_critical, bow_stack, collectable) local obj = minetest.add_entity({x=pos.x,y=pos.y,z=pos.z}, arrow_item.."_entity") if power == nil then power = BOW_MAX_SPEED --19 @@ -75,7 +75,7 @@ mcl_bows.shoot_arrow = function(arrow_item, pos, dir, yaw, shooter, power, damag return obj end -local get_arrow = function(player) +local function get_arrow(player) local inv = player:get_inventory() local arrow_stack, arrow_stack_id for i=1, inv:get_size("main") do @@ -89,7 +89,7 @@ local get_arrow = function(player) return arrow_stack, arrow_stack_id end -local player_shoot_arrow = function(itemstack, player, power, damage, is_critical) +local function player_shoot_arrow(itemstack, player, power, damage, is_critical) local arrow_stack, arrow_stack_id = get_arrow(player) local arrow_itemstring local has_infinity_enchantment = mcl_enchanting.has_enchantment(player:get_wielded_item(), "infinity") @@ -162,7 +162,7 @@ S("The speed and damage of the arrow increases the longer you charge. The regula }) -- Iterates through player inventory and resets all the bows in "charging" state back to their original stage -local reset_bows = function(player) +local function reset_bows(player) local inv = player:get_inventory() local list = inv:get_list("main") for place, stack in pairs(list) do @@ -182,7 +182,7 @@ local reset_bows = function(player) end -- Resets the bow charging state and player speed. To be used when the player is no longer charging the bow -local reset_bow_state = function(player, also_reset_bows) +local function reset_bow_state(player, also_reset_bows) bow_load[player:get_player_name()] = nil bow_index[player:get_player_name()] = nil if minetest.get_modpath("playerphysics") then diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 1724a982d..bd44b429b 100644 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_brewing") +local S = minetest.get_translator(minetest.get_current_modname()) local function active_brewing_formspec(fuel_percent, brew_percent) @@ -325,7 +325,7 @@ local tiles = { "mcl_brewing_side.png^[transformFX", --front } -local allow_put = function(pos, listname, index, stack, player) +local function allow_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) @@ -335,7 +335,7 @@ local allow_put = function(pos, listname, index, stack, player) end end -local on_put = function(pos, listname, index, stack, player) +local function on_put(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() local str = "" @@ -352,18 +352,18 @@ 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 function after_dig(pos, oldnode, oldmetadata, digger) local meta = minetest.get_meta(pos) meta:from_table(oldmetadata) drop_brewing_stand_items(pos, meta) end]] -local on_destruct = function(pos) +local function on_destruct(pos) local meta = minetest.get_meta(pos) drop_brewing_stand_items(pos, meta) end -local allow_take = function(pos, listname, index, stack, player) +local function allow_take(pos, listname, index, stack, player) local name = player:get_player_name() if minetest.is_protected(pos, name) then minetest.record_protection_violation(pos, name) @@ -493,7 +493,6 @@ minetest.register_node("mcl_brewing:stand_100", { allow_metadata_inventory_put = allow_put, on_metadata_inventory_put = on_put, on_metadata_inventory_take = on_put, - on_construct = function(pos) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() @@ -503,7 +502,6 @@ minetest.register_node("mcl_brewing:stand_100", { local form = brewing_formspec meta:set_string("formspec", form) end, - on_receive_fields = function(pos, formname, fields, sender) local sender_name = sender:get_player_name() if minetest.is_protected(pos, sender_name) then @@ -511,10 +509,10 @@ minetest.register_node("mcl_brewing:stand_100", { return end end, - on_timer = brewing_stand_timer, on_rotate = on_rotate, }) + minetest.register_node("mcl_brewing:stand_010", { description = S("Brewing Stand"), _doc_items_create_entry = false, @@ -567,7 +565,6 @@ minetest.register_node("mcl_brewing:stand_010", { allow_metadata_inventory_put = allow_put, on_metadata_inventory_put = on_put, on_metadata_inventory_take = on_put, - on_construct = function(pos) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() @@ -577,7 +574,6 @@ minetest.register_node("mcl_brewing:stand_010", { local form = brewing_formspec meta:set_string("formspec", form) end, - on_receive_fields = function(pos, formname, fields, sender) local sender_name = sender:get_player_name() if minetest.is_protected(pos, sender_name) then @@ -585,10 +581,10 @@ minetest.register_node("mcl_brewing:stand_010", { return end end, - on_timer = brewing_stand_timer, on_rotate = on_rotate, }) + minetest.register_node("mcl_brewing:stand_001", { description = S("Brewing Stand"), _doc_items_create_entry = false, @@ -605,7 +601,6 @@ minetest.register_node("mcl_brewing:stand_001", { node_box = { type = "fixed", fixed = { - {-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume { 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base {-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base @@ -637,7 +632,6 @@ minetest.register_node("mcl_brewing:stand_001", { allow_metadata_inventory_put = allow_put, on_metadata_inventory_put = on_put, on_metadata_inventory_take = on_put, - on_construct = function(pos) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() @@ -647,7 +641,6 @@ minetest.register_node("mcl_brewing:stand_001", { local form = brewing_formspec meta:set_string("formspec", form) end, - on_receive_fields = function(pos, formname, fields, sender) local sender_name = sender:get_player_name() if minetest.is_protected(pos, sender_name) then @@ -655,10 +648,10 @@ minetest.register_node("mcl_brewing:stand_001", { return end end, - on_timer = brewing_stand_timer, on_rotate = on_rotate, }) + minetest.register_node("mcl_brewing:stand_110", { description = S("Brewing Stand"), _doc_items_create_entry = false, @@ -675,7 +668,6 @@ minetest.register_node("mcl_brewing:stand_110", { node_box = { type = "fixed", fixed = { - {-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume { 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base {-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base @@ -717,7 +709,6 @@ minetest.register_node("mcl_brewing:stand_110", { allow_metadata_inventory_put = allow_put, on_metadata_inventory_put = on_put, on_metadata_inventory_take = on_put, - on_construct = function(pos) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() @@ -727,7 +718,6 @@ minetest.register_node("mcl_brewing:stand_110", { local form = brewing_formspec meta:set_string("formspec", form) end, - on_receive_fields = function(pos, formname, fields, sender) local sender_name = sender:get_player_name() if minetest.is_protected(pos, sender_name) then @@ -735,10 +725,10 @@ minetest.register_node("mcl_brewing:stand_110", { return end end, - on_timer = brewing_stand_timer, on_rotate = on_rotate, }) + minetest.register_node("mcl_brewing:stand_101", { description = S("Brewing Stand"), _doc_items_create_entry = false, @@ -755,7 +745,6 @@ minetest.register_node("mcl_brewing:stand_101", { node_box = { type = "fixed", fixed = { - {-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume { 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base {-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base @@ -793,7 +782,6 @@ minetest.register_node("mcl_brewing:stand_101", { allow_metadata_inventory_put = allow_put, on_metadata_inventory_put = on_put, on_metadata_inventory_take = on_put, - on_construct = function(pos) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() @@ -803,7 +791,6 @@ minetest.register_node("mcl_brewing:stand_101", { local form = brewing_formspec meta:set_string("formspec", form) end, - on_receive_fields = function(pos, formname, fields, sender) local sender_name = sender:get_player_name() if minetest.is_protected(pos, sender_name) then @@ -811,10 +798,10 @@ minetest.register_node("mcl_brewing:stand_101", { return end end, - on_timer = brewing_stand_timer, on_rotate = on_rotate, }) + minetest.register_node("mcl_brewing:stand_011", { description = S("Brewing Stand"), _doc_items_create_entry = false, @@ -831,7 +818,6 @@ minetest.register_node("mcl_brewing:stand_011", { node_box = { type = "fixed", fixed = { - {-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume { 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base {-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base @@ -869,7 +855,6 @@ minetest.register_node("mcl_brewing:stand_011", { allow_metadata_inventory_put = allow_put, on_metadata_inventory_put = on_put, on_metadata_inventory_take = on_put, - on_construct = function(pos) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() @@ -879,7 +864,6 @@ minetest.register_node("mcl_brewing:stand_011", { local form = brewing_formspec meta:set_string("formspec", form) end, - on_receive_fields = function(pos, formname, fields, sender) local sender_name = sender:get_player_name() if minetest.is_protected(pos, sender_name) then @@ -887,10 +871,10 @@ minetest.register_node("mcl_brewing:stand_011", { return end end, - on_timer = brewing_stand_timer, on_rotate = on_rotate, }) + minetest.register_node("mcl_brewing:stand_111", { description = S("Brewing Stand"), _doc_items_create_entry = false, @@ -907,7 +891,6 @@ minetest.register_node("mcl_brewing:stand_111", { node_box = { type = "fixed", fixed = { - {-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume { 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base {-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base @@ -952,7 +935,6 @@ minetest.register_node("mcl_brewing:stand_111", { allow_metadata_inventory_put = allow_put, on_metadata_inventory_put = on_put, on_metadata_inventory_take = on_put, - on_construct = function(pos) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() @@ -962,7 +944,6 @@ minetest.register_node("mcl_brewing:stand_111", { local form = brewing_formspec meta:set_string("formspec", form) end, - on_receive_fields = function(pos, formname, fields, sender) local sender_name = sender:get_player_name() if minetest.is_protected(pos, sender_name) then @@ -970,7 +951,6 @@ minetest.register_node("mcl_brewing:stand_111", { return end end, - on_timer = brewing_stand_timer, on_rotate = on_rotate, }) From c260ef8c6e60201ccadde059758c57fe2deef3d5 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Fri, 28 May 2021 09:58:01 +0200 Subject: [PATCH 112/720] Add polish translation of doc --- mods/HELP/doc/doc/locale/doc.pl.tr | 52 ++++++++++++++++++++++++++++++ tools/dicts/polish.dic | 6 ++++ 2 files changed, 58 insertions(+) create mode 100644 mods/HELP/doc/doc/locale/doc.pl.tr diff --git a/mods/HELP/doc/doc/locale/doc.pl.tr b/mods/HELP/doc/doc/locale/doc.pl.tr new file mode 100644 index 000000000..bd0f3dbaa --- /dev/null +++ b/mods/HELP/doc/doc/locale/doc.pl.tr @@ -0,0 +1,52 @@ +# textdomain:doc +<=< +>=> +Access to the requested entry has been denied; this entry is secret. You may unlock access by progressing in the game. Figure out on your own how to unlock this entry.=Brak dostępu do zażądanego wpisu; ten wpis jest tajemnicą. Możesz odblokować do niego dostęp przez robienie postępów w grze. Wymyśl jak go odblokować. +All entries read.=Wszystkie wpisy przeczytane. +All help entries revealed!=Wszystkie wpisy pomocnicze odkryte! +All help entries are already revealed.=Wszystkie wpisy pomocnicze są już odkryte. +Allows you to reveal all hidden help entries with /help_reveal=Pozwala odkryć wszystkie wpisy pomocnicze przy użyciu /help_reveal +Category list=Lista kategorii +Currently all entries in this category are hidden from you.=Aktualnie wszystkie wpisy w tej kategorii są przed tobą ukryte. +Unlock new entries by progressing in the game.=Odblokuj nowe wpisy przez robienie postępów w grze. +Help=Pomoc +Entry=Wpis +Entry list=Lista wpisów +Error: Access denied.=Błąd: Odmowa dostępu. +Error: No help available.=Błąd: Brak dostępnej pomocy. +Go to category list=Idź do listy kategorii +Go to entry list=Idź do listy wpisów +Help > @1=Pomoc > @1 +Help > @1 > @2=Pomoc > @1 > @2 +Help > @1 > (No Entry)=Pomoc > @1 > (Brak wpisu) +Help > (No Category)=Pomoc > (Brak kategorii) +Hidden entries: @1=Ukryte wpisy: @1 +Nameless entry (@1)=Nienazwany wpis (@1) +New entries: @1=Nowe wpisy: @1 +New help entry unlocked: @1 > @2=Nowy wpis pomocniczy odblokowany: @1 > @2 +No categories have been registered, but they are required to provide help.=Nie zarejestrowano żadnych kategorii, ale są one wymagane do uzyskania pomocy. +The Documentation System [doc] does not come with help contents on its own, it needs additional mods to add help content. Please make sure such mods are enabled on for this world, and try again.=System dokumentacji [doc] nie ma sam z siebie żadnej zawartości, potrzebuje dodatkowych modów, które dodadzą zawartość. +Number of entries: @1=Liczba wpisów: @1 +OK=OK +Open a window providing help entries about Minetest and more=Otwórz okno aby zobaczyć wpisy pomocnicze na temat Minetest i innych rzeczy +Please select a category you wish to learn more about:=Wybierz kategorię o której chciałbyś się więcej dowiedzieć: +Recommended mods: doc_basics, doc_items, doc_identifier, doc_encyclopedia.=Rekomendowane mody: doc_basics, doc_items, doc_identifier, doc_encyclopedia. +Reveal all hidden help entries to you=Odkryj wszystkie ukryte wpisy pomocnicze +Show entry=Pokaż wpis +Show category=Pokaż kategorię +Show next entry=Pokaż następny wpis +Show previous entry=Pokaż poprzedni wpis +This category does not have any entries.=W tej kategorii nie ma żadnych wpisów. +This category has the following entries:=W tej kategorii są następujące wpisy: +This category is empty.=Ta kategoria jest pusta. +This is the help.=To jest pomoc. +You haven't chosen a category yet. Please choose one in the category list first.=Nie wybrano żadnej kategorii. Proszę wybrać jedną z listy kategorii. +You haven't chosen an entry yet. Please choose one in the entry list first.=Nie wybrano wpisu. Proszę wybrać jeden z listy wpisów. +Collection of help texts=Kolekcja tekstów pomocniczych. +Notify me when new help is available=Powiadom mnie gdy nowa pomoc jest dostępna. +Play notification sound when new help is available=Odegraj dźwięk powiadomienia gdy nowa pomoc jest dostępna +Show previous image=Pokaż poprzedni obrazek +Show previous gallery page=Pokaż poprzednią stronę galerii +Show next image=Pokaż następny obrazek +Show next gallery page=Pokaż następną stronę galerii + diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 197491dd1..d461bbdc4 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -39,6 +39,12 @@ wskazywalne zderzalne Zderzalne zderzalnego +Minetest +doc_basics +doc_identifier +help_reveal +doc_items +doc_encyclopedia Houstonia iskrzyłuda Iskrzyłuda From 69f85a1aa6a908062810ec6789711ce068a5b220 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Fri, 28 May 2021 10:06:49 +0200 Subject: [PATCH 113/720] Add polish translation of doc_identifier --- .../doc_identifier/locale/doc_identifier.pl.tr | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 mods/HELP/doc/doc_identifier/locale/doc_identifier.pl.tr diff --git a/mods/HELP/doc/doc_identifier/locale/doc_identifier.pl.tr b/mods/HELP/doc/doc_identifier/locale/doc_identifier.pl.tr new file mode 100644 index 000000000..3af2c377d --- /dev/null +++ b/mods/HELP/doc/doc_identifier/locale/doc_identifier.pl.tr @@ -0,0 +1,18 @@ +# textdomain:doc_identifier +Error: This node, item or object is undefined. This is always an error.=Błąd: Ten węzeł, przedmiot lub obiekt nie jest zdefiniowany. To zawsze jest błąd. +This can happen for the following reasons:=To może się zdarzyć z następujących powodów: +• The mod which is required for it is not enabled=• Mod który jest do tego potrzebny nie jest włączony +• The author of the game or a mod has made a mistake=• Autor gry lub moda popełnił błąd +It appears to originate from the mod “@1”, which is enabled.=Wygląda na to, że powodem jest mod "@1", który jest włączony. +It appears to originate from the mod “@1”, which is not enabled!=Wygląda na to, że powodem jest mod "@1", który nie jest włączony! +Its identifier is “@1”.=Identyfikator to "@1". +Lookup Tool=Narzędzie rozpoznające +No help entry for this block could be found.=Nie znaleziono wpisu pomocniczego dla tego bloku. +No help entry for this item could be found.=Nie znaleziono wpisu pomocniczego dla tego przedmiotu. +No help entry for this object could be found.=Nie znaleziono wpisu pomocniczego dla tego obiektu. +OK=OK +Punch any block, item or other thing about you wish to learn more about. This will open up the appropriate help entry. The tool comes in two modes which are changed by using. In liquid mode, this tool points to liquids as well while in solid mode this is not the case.=Uderz dowolny blok, przedmiot lub inną rzecz aby dowiedzieć się o niej czegoś. To otworzy odpowiedni wpis pomocniczy. Narzędzie jest dostępne w dwóch trybach które można zmienić przez kliknięcie Użyj. W trybie płynów narzędzie to wskazuje również na płyny, podczas gdy w trybie stałym tak nie jest. +This block cannot be identified because the world has not materialized at this point yet. Try again in a few seconds.=Ten blok nie może być zidentyfikowany, ponieważ świat jeszcze się nie zmaterializował. Spróbuj ponownie za kilka sekund. +This is a player.=To jest gracz. +This useful little helper can be used to quickly learn more about about one's closer environment. It identifies and analyzes blocks, items and other things and it shows extensive information about the thing on which it is used.=To jest małe pomocnicze narzędzie, które może być użyte by szybko dowiedzieć się więcej na temat bliskiego otoczenia. Identyfikuje ono oraz analizuje bloki, przedmioty i inne rzeczy oraz pokazuje dokładne informacje na temat tego na czym zostanie użyte. +Show help for pointed thing=Pokaż pomoc dla wskazywanej rzeczy From 1929df492b7d035d7216c983583ac08fefedefe4 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Fri, 28 May 2021 10:11:33 +0200 Subject: [PATCH 114/720] Add polish translation of mcl_craftguide --- .../locale/mcl_craftguide.pl.tr | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 mods/HELP/mcl_craftguide/locale/mcl_craftguide.pl.tr diff --git a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.pl.tr b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.pl.tr new file mode 100644 index 000000000..72e220531 --- /dev/null +++ b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.pl.tr @@ -0,0 +1,38 @@ +# textdomain: craftguide +Any shulker box=Dowolna skrzynia shulkerowa +Any wool=Dowolna wełna +Any wood planks=Dowolne deski +Any wood=Dowolne drewno +Any sand=Dowolny piasek +Any normal sandstone=Dowolny zwykły piaskowiec +Any red sandstone=Dowolny czerwony piaskowiec +Any carpet=Dowolny dywan +Any dye=Dowolna farba +Any water bucket=Dowolne wiadro wody +Any flower=Dowolny kwiat +Any mushroom=Dowolny grzyb +Any wooden slab=Dowolny drewniana płyta +Any wooden stairs=Dowolne drewniane schody +Any coal=Dowolny węgiel +Any kind of quartz block=Dowolny typ bloku kwarcu +Any kind of purpur block=Dowolny typ bloku purpury +Any stone bricks=Dowolne kamienne cegły +Any stick=Dowolny patyk +Any item belonging to the @1 group=Dowolny przedmiot z grupy @1 +Any item belonging to the groups: @1=Dowolny przedmiot należący do grup: @1 +Search=Wyszukaj +Reset=Zresetuj +Previous page=Poprzednia strona +Next page=Następna strona +Usage @1 of @2=Użycie @1 z @2 +Recipe @1 of @2=Receptura @1 z @2 +Burning time: @1=Czas wypalenia: @1 +Cooking time: @1=Czas pieczenia: @1 +Recipe is too big to be displayed (@1×@2)=Receptura jest zbyt długa do wyświetlenia (@1×@2) +Shapeless=Bezkształtne +Cooking=Pieczenie +Increase window size=Zwiększ rozmiar okna +Decrease window size=Zmniejsz rozmiar okna +No item to show=Brak przedmiotów do pokazania +Collect items to reveal more recipes=Zbierz przedmioty by odkryć więcej receptur + From 7da32dcc364b3b6725d8ad2a60cdc157f32015de Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Fri, 28 May 2021 17:19:41 +0200 Subject: [PATCH 115/720] Add polish translation of mcl_doc_basics --- .../locale/mcl_doc_basics.pl.tr | 512 ++++++++++++++++++ tools/dicts/polish.dic | 62 +++ 2 files changed, 574 insertions(+) create mode 100644 mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.pl.tr diff --git a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.pl.tr b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.pl.tr new file mode 100644 index 000000000..37fe955ca --- /dev/null +++ b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.pl.tr @@ -0,0 +1,512 @@ +# textdomain: mcl_doc_basics +Basics=Podstawy +Everything you need to know to get started with playing=Wszystko co musisz wiedzieć by zacząć grać +Advanced usage=Zaawansowane użycie +Advanced information which may be nice to know, but is not crucial to gameplay=Zaawansowane informacje które mogą być przydatne, ale nie są niezbędne podczas grania +Quick start=Szybki start +This is a very brief introduction to the basic gameplay:=Jest to bardzo krótki wstęp do podstawowej rozgrywki: +Basic controls:=Podstawowe sterowanie: +• Move mouse to look=• Porusz myszą by się rozglądać +• [W], [A], [S] and [D] to move=• Użyj [W], [A], [S] i [D] aby się poruszać +• [E] to sprint=• Użyj [E] aby biegać +• [Space] to jump or move upwards=• Użyj [Spacja] aby skakać lub poruszać się w górę +• [Shift] to sneak or move downwards=• Użyj [Shift] aby się skradać lub poruszać w dół +• Mouse wheel or [1]-[9] to select item=• Użyj kółka myszy lub klawiszy [1]-[9] aby wybrać przedmiot +• Left-click to mine blocks or attack=• Kliknij lewym przyciskiem by kopać bloki lub atakować +• Recover from swings to deal full damage=• Poczekaj aż ochłoniesz po zamachu, aby zadać pełne obrażenia +• Right-click to build blocks and use things=• Kliknij prawym przyciskiem aby kłaść bloki lub używać rzeczy +• [I] for the inventory=• Użyj [I] aby otworzyć ekwipunek +• First items in inventory appear in hotbar below=• Pierwsze przedmioty w ekwipunku pojawią się w pasku szybkiego dostępu +• Lowest row in inventory appears in hotbar below=• Najniższy wiersz ekwipunku pojawi się w pasku szybkiego dostępu +• [Esc] to close this window=• Użyj [Esc] aby zamknąć okno +How to play:=Jak grać: +• Punch a tree trunk until it breaks and collect wood=• Uderzaj pień drzewa aż się zniszczy i zbierz drewno +• Place the wood into the 2×2 grid (your “crafting grid”) in your inventory menu and craft 4 wood planks=• Umieść drewno w siatce 2×2 (twojej "siatce do wytwarzania") w twoim ekwipunku i wytwórz 4 deski +• Place them in a 2×2 shape in the crafting grid to craft a crafting table=• Umieść je w kształt 2×2 w twojej siatce do wytwarzania i wytwórz stół rzemieślniczy +• Place the crafting table on the ground=• Umieść stół rzemieślniczy na ziemi +• Rightclick it for a 3×3 crafting grid=• Kliknij go prawym przyciskiem aby zyskać dostęp do siatki 3×3 +• Use the crafting guide (book icon) to learn all the possible crafting recipes=• Użyj przewodnika do wytwarzania (ikona książki) aby poznać wszystkie możliwe receptury do wytwarzania +• Craft a wooden pickaxe so you can dig stone=• Wytwórz drewniany kilof aby wykopać kamień +• Different tools break different kinds of blocks. Try them out!=• Różne narzędzia są w stanie zniszczyć różne typy bloków. Wypróbuj je! +• Read entries in this help to learn the rest=• Przeczytaj inne wpisy aby dowiedzieć się resztę +• Continue playing as you wish. There's no goal. Have fun!=• Graj tak jak chcesz. Nie ma żadnego celu. Miłej zabawy! +Minetest=Minetest +Minetest is a free software game engine for games based on voxel gameplay, inspired by InfiniMiner, Minecraft, and the like. Minetest was originally created by Perttu Ahola (alias “celeron55”).=Minetest jest wolnym oprogramowaniem i silnikiem do gier opartych o rozgrywkę na voxelach, inspirowanym przez InfiniMinera, Minecrafta i podobnym. Minetest był oryginalnie stworzony przez Perttu Ahola (alias “celeron55”). +The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest can, however, be much more complex than this.=Gracz jest wrzucony do ogromnego świata stworzonego z sześcianów lub bloków. Te sześciany zwykle tworzą widoczny krajobraz i mogą być usuwane oraz stawiane niemal całkowicie dowolnie. Korzystając z zebranych przedmiotów nowe narzędzia i inne rzeczy mogą zostać utworzone. Gry w Minetest mogą jednak być dużo bardziej skomplikowane niż to. +A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorational blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.=Główną cechą Minetesta jest wbudowana możliwość budowania. Mody modyfikują istniejącą rozgrywkę. Mogą być tak proste jak dodanie kilku bloków dekoracyjnych, lub bardzo skomplikowane np. wprowadzając zupełnie nowe sposoby rozgrywki, generując zupełnie inny rodzaj świata i wiele innych rzeczy. +Minetest can be played alone or online together with multiple players. Online play will work out of the box with any mods, with no need for additional software as they are entirely provided by the server.=W Minetest można grać samotnie lub online z kilkoma graczami. Gra online będzie działać od razu z modami, bez potrzeby dodatkowych programów jako, że są one całkowicie dostarczane przez serwer. +Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums .=Minetest jest zwykle dystrybuowany wraz z prostą domyślną grą, nazwaną "Gra Minetest" (pokazana na obrazka 1 i 2). Prawdopodobnie już ją masz. Inne gry dla Minetesta mogą być pobrane z oficjalnych forum Minetesta . +Minetest as well as Minetest Game are both unfinished at the moment, so please forgive us when not everything works out perfectly.=Zarówno Minetest jak i Gra Minetest są aktualnie niedokończone, więc prosimy o wybaczenie jeśli nie wszystkie rzeczy działają idealnie. +Sneaking=Skradanie +Sneaking makes you walk slower and prevents you from falling off the edge of a block.=Skradanie sprawia, że chodzisz wolniej i zapobiega spadaniu z bloków. +To sneak, hold down the sneak key (default: [Shift]). When you release it, you stop sneaking. Careful: When you release the sneak key at a ledge, you might fall!=Aby się skradać przytrzymaj przycisk skradania (domyślnie: [Shift]). Gdy go puścisz, przestaniesz się skradać. Ostrożnie: Jeśli puścisz przycisk skradania na krawędzi możesz spaść! +• Sneak: [Shift]=• Skradanie: [Shift] +Sneaking only works when you stand on solid ground, are not in a liquid and don't climb.=Skradanie działa tylko gdy stoisz na stałym gruncie, nie w wodzie oraz nie podczas wspinania. +If you jump while holding the sneak key, you also jump slightly higher than usual.=Jeśli skoczysz podczas skradania, skoczysz nieco wyżej niż zwykle. +Sneaking might be disabled by mods. In this case, you still walk slower by sneaking, but you will no longer be stopped at ledges.=Skradanie może być wyłączone przez mody. W takim przypadku wciąż będziesz chodziła wolniej przy skradaniu, ale wciąż będziesz mogła spaść z bloków. +Controls=Sterowanie +These are the default controls:=To jest domyślne sterowanie: +Basic movement:=Podstawy poruszania: +• Moving the mouse around: Look around=• Poruszanie myszką: Rozglądnij się +• W: Move forwards=• W: Idź naprzód +• A: Move to the left=• A: Idź w lewo +• D: Move to the right=• D: Idź w prawo +• S: Move backwards=• S: Idź w tył +• E: Sprint=• E: Biegnij +While standing on solid ground:=Podczas stania na stałym gruncie: +• Space: Jump=• Spacja: Skok +• Shift: Sneak=• Shift: Skradanie +While on a ladder, swimming in a liquid or fly mode is active=Podczas wspinania, pływania w płynie lub aktywnego trybu latania: +• Space: Move up=• Spacja: W górę +• Shift: Move down=• Shift: W dół +Extended movement (requires privileges):=Rozszerzone poruszanie: +• J: Toggle fast mode, makes you run or fly fast (requires “fast” privilege)=• J: Przełącz tryb szybki, co umożliwia szybkie bieganie i latanie (wymaga przywileju "fast") +• K: Toggle fly mode, makes you move freely in all directions (requires “fly” privilege)=• K: Przełącz tryb latania, co umożliwia swobodne poruszanie w dowolnym kierunku (wymaga przywileju "fly") +• H: Toggle noclip mode, makes you go through walls in fly mode (requires “noclip” privilege)=• H: Przełącz tryb noclip, co umożliwia przechodzenie przez ściany w trybie latania (wymaga przywileju "noclip") +• E: Move even faster when in fast mode=• E: Poruszaj się jeszcze szybciej w trybie szybkim +• E: Walk fast in fast mode=• Poruszaj się szybciej w trybie szybkim +World interaction:=Interakcja ze światem: +• Left mouse button: Punch / mine blocks / take items=• Lewy przycisk myszy: Uderz / kop bloki / weź przedmiot +• Left mouse button: Punch / mine blocks=• Lewy przycisk myszy: Uderz / kop bloki +• Right mouse button: Build or use pointed block=• Prawy przycisk myszy: Zbuduj lub użyj wskazywany blok +• Shift+Right mouse button: Build=• Shift+Prawy przycisk myszy: Zbuduj +• Roll mouse wheel: Select next/previous item in hotbar=• Kręć kółkiem myszy: Wybierz następny/poprzedni przedmiot w pasku szybkiego dostępu +• Roll mouse wheel / B / N: Select next/previous item in hotbar=• Kręć kółkiem myszy / B / N: Wybierz następny/poprzedni przedmiot w pasku szybkiego dostępu +• 1-9: Select item in hotbar directly=• 1-9: Wybierz przedmiot z pasku szybkiego dostępu +• Q: Drop item stack=• Q: Wyrzuć grupę przedmiotów +• Shift+Q: Drop 1 item=• Shift+Q: Wyrzuć jeden przedmiot +• I: Show/hide inventory menu=• I: Pokaż/schowaj menu ekwipunku +Inventory interaction:=Interakcja z ekwipunkiem: +See the entry “Basics > Inventory”.=Zobacz wpis "Podstawy > Ekwipunek". +Camera:=Kamera: +• Z: Zoom=• Z: Przybliż +• F7: Toggle camera mode=• F7: Zmień tryb kamery +• F8: Toggle cinematic mode=• F8: Zmień na tryb kinowy +Interface:=Interfejs: +• Esc: Open menu window (pauses in single-player mode) or close window=• Esc: Otwórz okno menu (zatrzymuje grę w trybie pojedynczego gracza) lub zamknij okno +• F1: Show/hide HUD=• F1: Pokaż/ukryj interfejs +• F2: Show/hide chat=• F2: Pokaż/ukryj czat +• F9: Toggle minimap=• F9: Przełącz minimapę +• Shift+F9: Toggle minimap rotation mode=• Shift+F9: Przełącz tryb rotacji minimapy +• F10: Open/close console/chat log=• F10: Otwórz/zamknij konsolę/okno czatu +• F12: Take a screenshot=• F12: Zrób zrzut ekranu +Server interaction:=Interakcja z serwerem: +• T: Open chat window (chat requires the “shout” privilege)=• T: Otwórz okno czatu (chat wymaga przywileju "shout") +• /: Start issuing a server command=• /: Rozpocznij wpisywanie komendy serwera +Technical:=Techniczne: +• R: Toggle far view (disables all fog and allows viewing far away, can make game very slow)=• R: Przełącz tryb dalekiego widzenia (wyłącza mgłę i pozwala widzieć odległe obiekty, może znacząco spowolnić grę) +• +: Increase minimal viewing distance=• +: Zwiększ minimalny zasięg widzenia +• -: Decrease minimal viewing distance=• -: Zmniejsz minimalny zasięg widzenia +• F3: Enable/disable fog=• F3: Włącz/wyłącz mgłę +• F5: Enable/disable debug screen which also shows your coordinates=• F5: Włącz/wyłącz ekran debug'u, który pokazuje również twoje położenie +• F6: Only useful for developers. Enables/disables profiler=• F6: Przydatne tylko dla deweloperów. Włącza/wyłącza profiler +• P: Only useful for developers. Writes current stack traces=• P: Przydatne tylko dla deweloperów. Zapisuje aktualny zrzut stosu +Players=Gracze +Players (actually: “player characters”) are the characters which users control.=Gracze (właściwie "postacie graczy") są postaciami kontrolowanymi przez użytkowników. +Players are living beings. They start with a number of health points (HP) and a number of breath points (BP).=Gracze są żywymi stworzeniami. Zaczynają z pewną liczbą punktów życia (HP) oraz punktów oddechu (BP). +Players are capable of walking, sneaking, jumping, climbing, swimming, diving, mining, building, fighting and using tools and blocks.=Gracze są w stanie chodzić, skradać się, skakać, wspinać, pływać, nurkować, kopać, budować walczyć oraz korzystać z narzędzi i bloków. +Players can take damage for a variety of reasons, here are some:=Gracze mogą otrzymać obrażenia z wielu powodów, oto niektóre: +• Taking fall damage=• Obrażenia od upadku +• Touching a block which causes direct damage=• Dotknięcie bloku który zadaje obrażenia +• Drowning=• Tonięcie +• Being attacked by another player=• Zaatakowanie przez innego gracza +• Being attacked by a computer enemy=• Zaatakowanie przez przeciwnika sterowanego przez komputer +At a health of 0, the player dies. The player can just respawn in the world.=Gdy zdrowie osiągnie poziom 0, gracz umiera. Gracz może wtedy odrodzić się w świecie. +Other consequences of death depend on the game. The player could lose all items, or lose the round in a competitive game.=Inne konsekwencje śmierci zależą od gry. Gracz może stracić wszystkie przedmioty, lub stracić punkty w grze konkurencyjnej. +Some blocks reduce breath. While being with the head in a block which causes drowning, the breath points are reduced by 1 for every 2 seconds. When all breath is gone, the player starts to suffer drowning damage. Breath is quickly restored in any other block.=Niektóre bloki zmniejszają oddech. Podczas przebywania w bloku powodującym topienie się, punkty oddechu są zmniejszane o 1 co 2 sekundy. Gdy punkty oddechu się skończą, gracz zacznie otrzymywać obrażenia od tonięcia. Oddech szybko odnawia się w dowolnym innym bloku. +Damage can be disabled on any world. Without damage, players are immortal and health and breath are unimportant.=Obrażenia mogą zostać wyłączone w dowolnym świecie. Bez obrażeń gracze są nieśmiertelni, a ich życie i oddech są nieistotne. +In multi-player mode, the name of other players is written above their head.=W trybie wieloosobowym imię innych graczy jest napisane powyżej ich głów. +Items=Przedmioty +Items are things you can carry along and store in inventories. They can be used for crafting, smelting, building, mining, and more. Types of items include blocks, tools, weapons and items only used for crafting.=Przedmioty są rzeczami które możesz przenosić i przechowywać w ekwipunku. Mogą być wykorzystane do wytwarzania, przetapiania, budowania, kopania i w innych celach. Typy przedmiotów to m.in. bloki, narzędzia bronie oraz przedmioty użyteczne tylko w wytwarzaniu. +An item stack is a collection of items of the same type which fits into a single item slot. Item stacks can be dropped on the ground. Items which drop into the same coordinates will form an item stack.=Grupa przedmiotów jest zbiorem przedmiotów tego samego typu, która mieści się w jednym miejscu na przedmiot. Grupy przedmiotów mogą zostać upuszczone na ziemię. Przedmioty, które zostaną upuszczone na te same współrzędne utworzą grupę przedmiotów. +Dropped item stacks will be collected automatically when you stand close to them.=Upuszczone grupy przedmiotów zostaną podniesione automatycznie gdy staniesz w ich pobliżu. +Items have several properties, including the following:=Przedmioty mają wiele właściwości, między innymi: +• Maximum stack size: Number of items which fit on 1 item stack=• Maksymalny rozmiar grupy: Liczba przedmiotów które mieszczą się w jednej grupie +• Pointing range: How close things must be to be pointed while wielding this item=• Zasięg wskazywania: Jak blisko muszą być przedmioty aby można na nie wskazać za pomocą tego przedmiotu +• Group memberships: See “Basics > Groups”=• Przynależność do grupy: Zobacz "Podstawy > Grupy" +• May be used for crafting or cooking=• Mogą być używane do wytwarzania lub pieczenia +Tools=Narzędzia +Some items may serve as a tool when wielded. Any item which has some special use which can be directly used by its wielder is considered a tool.=Niektóre przedmioty służą jako narzędzia gdy trzyma się je w rękach. Dowolny przedmiot, który ma specjalne użycia które mogą być bezpośrednio użyte przez jego posiadacza jest uznawany za narzędzie. +A common subset of tools is mining tools. These are important to break all kinds of blocks. Weapons are a kind of tool. There are of course many other possible tools. Special actions of tools are usually done by left-click or right-click.=Częstym podzbiorem narzędzi są narzędzia do kopania. Są one istotne przy niszczeniu różnych typów bloków. Bronie są innym rodzajem narzędzia. Jest oczywiście wiele innych możliwych narzędzi. Specjalne akcje narzędzi są zwykle aktywowane przy użyciu lewego lub prawego przycisku myszy. +When nothing is wielded, players use their hand which may act as tool and weapon.=Gdy nic nie jest trzymane, gracze używają swojej ręki, która może służyć jako narzędzie i broń. +Mining tools are important to break all kinds of blocks. Weapons are another kind of tool. There are some other more specialized tools. Special actions of tools are usually done by right-click.=Narzędzia do kopania są istotne do niszczenia różnych bloków. Innym rodzajem narzędzi są bronie. Istnieją również inne, bardzie wyspecjalizowane narzędzia. Specjalne akcje narzędzi są zwykle wykonywane przy użyciu lewego oraz prawego przycisku myszy. +When nothing is wielded, players use their hand which may act as tool and weapon. The hand is capable of punching and deals minimum damage.=Gdy nic nie jest trzymane gracze używają swojej dłoni, która może służyć za narzędzie i za broń. Ręką można uderzać co zadaje minimalne obrażenia. +Many tools will wear off when using them and may eventually get destroyed. The damage is displayed in a damage bar below the tool icon. If no damage bar is shown, the tool is in mint condition. Tools may be repairable by crafting, see “Basics > Crafting”.=Wiele narzędzi będzie się zużywać podczas używania, co w końcu sprawi, że zostaną zniszczone. Zużycie jest wyświetlane jako pasek poniżej ikony narzędzia. Jeśli pasek nie jest pokazywany, narzędzie jest w idealnym stanie. Narzędzia mogą być naprawiane przez wytwarzania, zobacz "Podstawy > Wytwarzanie". +Weapons=Bronie +Some items are usable as a melee weapon when wielded. Weapons share most of the properties of tools.=Niektóre przedmioty są przydatne jako bronie wręcz gdy trzymane. Bronie mają wiele podobnych własności co narzędzia. +Melee weapons deal damage by punching players and other animate objects. There are two ways to attack:=Bronie wręcz zadają obrażenia przy uderzaniu graczy i innych obiektów. +• Single punch: Left-click once to deal a single punch=• Pojedyncze uderzenie: Kliknij lewy przycisk myszy aby wykonać jedno uderzenie +• Quick punching: Hold down the left mouse button to deal quick repeated punches=• Szybkie uderzenia: Przytrzymaj lewy przycisk myszy aby zadać szybkie, powtarzające się uderzenia +There are two core attributes of melee weapons:=Dwie istotne cechy każdej broni wręcz: +• Maximum damage: Damage which is dealt after a hit when the weapon was fully recovered=• Maksymalne obrażenia: Obrażenia zadawane gdy broń przy uderzeniu gdy broń jest całkowicie ochłonięta +• Full punch interval: Time it takes for fully recovering from a punch=• Pełny okres uderzenia: Czas który jest potrzebny do ochłonięcia broni po uderzeniu +A weapon only deals full damage when it has fully recovered from a previous punch. Otherwise, the weapon will deal only reduced damage. This means, quick punching is very fast, but also deals rather low damage. Note the full punch interval does not limit how fast you can attack.=Broń zadaje pełne obrażenia tylko gdy jest w pełni ochłonięta z poprzedniego uderzenia. W przeciwnym wypadku zadane obrażenia będą zmniejszone. To oznacza, że szybkie uderzanie jest bardzo szybkie, ale zadaje niskie obrażenia. Zauważ, że pełny okres uderzenia nie jest limitem na to jak szybko możesz atakować. +There is a rule which sometimes makes attacks impossible: Players, animate objects and weapons belong to damage groups. A weapon only deals damage to those who share at least one damage group with it. So if you're using the wrong weapon, you might not deal any damage at all.=Istnieje reguła która sprawia, że ataki są czasem niemożliwe: Gracze, ruchome obiekty i bronie należą do grup obrażeń. Broń zadaje obrażenia tylko tym, którzy należą do przynajmniej jednej z jej grup obrażeń. +Pointing=Wskazywanie +“Pointing” means looking at something in range with the crosshair. Pointing is needed for interaction, like mining, punching, using, etc. Pointable things include blocks, players, computer enemies and objects.="Wskazywanie" oznacza patrzenia na coś w zasięgu celownikiem. Wskazywanie jest wymagane podczas interakcji takich jak kopanie, uderzanie, używanie itp. Wskazywalne obiekty to między innymi bloki, gracze, przeciwnicy komputerowi i obiekty. +To point something, it must be in the pointing range (also just called “range”) of your wielded item. There's a default range when you are not wielding anything. A pointed thing will be outlined or highlighted (depending on your settings). Pointing is not possible with the 3rd person front camera.=Aby na coś wskazać musi być to w zasięgu wskazywania (zwykle nazywanym po prostu "zasięgiem") trzymanego przez ciebie przedmiotu. Gdy nic nie jest trzymane jest to zasięg domyślny. Wskazywany przedmiot będzie obrysowany lub podświetlony (w zależności od twoich ustawień). Wskazywanie nie jest możliwe gdy włączona jest przednia kamera trzecioosobowa. +A few things can not be pointed. Most blocks are pointable. A few blocks, like air, can never be pointed. Other blocks, like liquids can only be pointed by special items.=Na niektóre rzeczy nie można wskazywać. Większość bloków jest wskazywalna. Na niektóre bloki, np. powietrze, nie można wskazać. Inne bloki, takie jak płyny, mogą być wskazane tylko przy użyciu specjalnych przedmiotów. +Camera=Kamera +There are 3 different views which determine the way you see the world. The modes are:=Istnieją 3 różne widoki, które definiują w jaki sposób będziesz obserwował świat. Te widoki to: +• 1: First-person view (default)=• 1: Widok pierwszoosobowy (domyślny) +• 2: Third-person view from behind=• 2: Widok trzecioosobowy od tyłu +• 3: Third-person view from the front=• 3: Widok trzecioosobowy od przodu +You can change the camera mode by pressing [F7].=Możesz zmienić widok kamery naciskając [F7]. +You might be able to zoom with [Z] to zoom the view at the crosshair. This allows you to look further.=Możesz być w stanie przybliżać widok naciskając [Z]. To pozawala spojrzeć dalej w kierunku celownika. +Zooming is a gameplay feature that might be enabled or disabled by the game. By default, zooming is enabled when in Creative Mode but disabled otherwise.=Przybliżanie jako cecha rozgrywki może być włączone lub wyłączone przez grę. Domyślnie przybliżanie jest włączone w trybie Kreatywny i wyłączone w przeciwnym przypadku. +There is also Cinematic Mode which can be toggled with [F8]. With Cinematic Mode enabled, the camera movements become more smooth. Some players don't like it, it is a matter of taste.=Istnieje również tryb kinowy, który może być włączony naciskając [F8]. Gdy jest on włączony ruchy kamery są bardziej wygładzone. Niektórzy gracze go nie lubią, jest to kwestia gustu. +By holding down [Z], you can zoom the view at your crosshair. You need the “zoom” privilege to do this.=Przytrzymując [Z] możesz przybliżyć widok na swoim celowniku. Potrzebujesz przywileju "zoom" aby to zrobić. +• Switch camera mode: [F7]=• Zmień widok kamery: [F7] +• Toggle Cinematic Mode: [F8]=• Przełącz tryb kinowy: [F8] +• Zoom: [Z]=• Przybliż: [Z] +Blocks=Bloki +The world of MineClone 2 is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.=Świat MineClone 2 jest w całości złożony z bloków (a bardziej precyzyjnie voxeli). Bloki mogą być dodawane lub usuwane przy użyciu odpowiednich narzędzi. +The world is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.=Świat jest w całości złożony z bloków (a bardziej precyzyjnie voxeli). Bloki mogą być dodawane lub usuwane przy użyciu odpowiednich narzędzi. +Blocks can have a wide range of different properties which determine mining times, behavior, looks, shape, and much more. Their properties include:=Bloki mogą mieć wiele różnych właściwości określających czas kopania, zachowanie, wygląd, kształt i wiele więcej. Te własności to między innymi: +• Collidable: Collidable blocks can not be passed through; players can walk on them. Non-collidable blocks can be passed through freely=• Zderzalne: Przez bloki z tą własnością nie można przechodzić; gracze mogą po nich chodzić. Przez nie-zderzalne bloki można swobodnie przechodzić. +• Pointable: Pointable blocks show a wireframe or a halo box when pointed. But you will just point through non-pointable blocks. Liquids are usually non-pointable but they can be pointed at by some special tools=• Wskazywalne: Te bloki pokażą obwód lub poświatę gdy zostaną wskazane. Ale przez niewskazywalne bloki będziesz wskazywała bloki znajdujące się za nimi. Płyny są zwykła niewskazywalne, ale można na nie wskazać przy użyciu specjalnych narzędzi. +• Mining properties: By which tools it can be mined, how fast and how much it wears off tools=• Własności kopania: Przez jakie narzędzia mogą być wykopane, jak szybko oraz jak bardzo zużyje to narzędzie +• Climbable: While you are at a climbable block, you won't fall and you can move up and down with the jump and sneak keys=• Wspinaczkowe: Gdy jesteś obok bloków wspinaczkowych nie spadniesz, oraz możesz poruszać się w górę i w dół korzystając z przycisków do skakania i skradania. +• Drowning damage: See the entry “Basics > Player”=• Obrażenia tonięcia: Zobacz wpis "Podstawy > Gracz" +• Liquids: See the entry “Basics > Liquids”=• Płyny: Zobacz wpis "Podstawy > Płyny" +• Group memberships: Group memberships are used to determine mining properties, crafting, interactions between blocks and more=• Przynależność do grup: Przynależności do grup definiują własności kopania, wytwarzania, interakcje między blokami i wiele więcej +Mining=Kopanie +Mining (or digging) is the process of breaking blocks to remove them. To mine a block, point it and hold down the left mouse button until it breaks.=Kopanie (lub wydobywanie) jest procesem niszczenia i usuwania bloków. Aby wykopać blok, wskaż na niego i przytrzymaj lewy przycisk myszy aż się zniszczy. +Blocks require a mining tool to be mined. Different blocks are mined by different mining tools, and some blocks can not be mined by any tool. Blocks vary in hardness and tools vary in strength. Mining tools will wear off over time. The mining time and the tool wear depend on the block and the mining tool. The fastest way to find out how efficient your mining tools are is by just trying them out on various blocks. Any items you gather by mining will drop on the ground, ready to be collected.=Bloki wymagają narzędzi do kopania aby je wykopać. Różne bloki są wykopywane przez różne narzędzia, a niektóre nie mogą być wykopane przez żadne narzędzie. Najszybszym sposobem testowania jak efektowne są twoje narzędzia do kopania jest po prostu wypróbowanie ich na różnych blokach. Wszystkie przedmioty które wykopiesz zostaną upuszczone na ziemię, gotowe do podniesienia. +After mining, a block may leave a “drop” behind. This is a number of items you get after mining. Most commonly, you will get the block itself. There are other possibilities for a drop which depends on the block type. The following drops are possible:=Po wykopaniu, blok może upuścić "zrzut". Jest to kilka przedmiotów zdobytych przez kopanie. Najczęściej będzie to wykopany blok. Możliwe są inne zrzuty zależne od typu bloku. Następujące zrzuty są możliwe: +• Always drops itself (the usual case)=• Zawsze wyrzuca siebie (typowy przypadek) +• Always drops the same items=• Zawsze wyrzuca te same przedmioty +• Drops items based on probability=• Wyrzuca przedmioty z pewnym prawdopodobieństwem +• Drops nothing=• Nie wyrzuca niczego +Building=Budowanie +Almost all blocks can be built (or placed). Building is very simple and has no delay.=Prawie wszystkie bloki mogą być zbudowane (lub postawione). Stawianie jest bardzo proste i natychmiastowe. +To build your wielded block, point at a block in the world and right-click. If this is not possible because the pointed block has a special right-click action, hold down the sneak key before right-clicking.=Aby postawić trzymany blok, wskaż na blok w świecie i kliknij prawy przycisk. Jeśli jest to niemożliwe, ponieważ wskazany blok ma specjalną akcję aktywowaną prawym przyciskiem myszy, przytrzymaj przycisk skradania przed kliknięciem prawego przycisku. +Blocks can almost always be built at pointable blocks. One exception are blocks attached to the floor; these can only be built on the floor.=Bloki prawie zawsze mogą być zbudowane na wskazywalnych blokach. Jednym z wyjątków są bloki przyczepione do podłogi; takie mogą być zbudowane tylko na podłodze. +Normally, blocks are built in front of the pointed side of the pointed block. A few blocks are different: When you try to build at them, they are replaced.=Zwykle, bloki są zbudowane przed wskazaną stroną wskazanego bloki. Niektóre bloki są inne: Gdy próbujesz na nich coś postawić są one tym zastępowane. +Liquids=Płyny +Liquids are special dynamic blocks. Liquids like to spread and flow to their surrounding blocks. Players can swim and drown in them.=Płyny są specjalnymi dynamicznymi blokami. Płyny lubią się rozprzestrzeniać i wpływać na otaczające bloki. Gracze mogą w nich pływać i tonąć. +Liquids usually come in two forms: In source form (S) and in flowing form (F).=Płyny zwykle pojawiają się w dwóch formach: W formie źródła (S) oraz w formie bieżącej (F). +Liquid sources have the shape of a full cube. A liquid source will generate flowing liquids around it from time to time, and, if the liquid is renewable, it also generates liquid sources. A liquid source can sustain itself. As long it is left alone, a liquid source will normally keep its place and does not drain out.=Źródła płynów są w kształcie pełnej kostki. Źródło płynu od czasu do czasu wygeneruje bieżący formę płynu w swoim otoczeniu oraz jeśli płyn jest odnawialny, utworzy również źródła płynu. Źródło płynu podtrzymuje siebie. Tak długo jak nie jest ruszane, źródło wody zostanie w miejscu i nie kończy się. +Flowing liquids take a sloped form. Flowing liquids spread around the world until they drain. A flowing liquid can not sustain itself and always comes from a liquid source, either directly or indirectly. Without a liquid source, a flowing liquid will eventually drain out and disappear.=Bieżące płyny przyjmują formę ściętą. Rozprzestrzeniają się one po świecie dopóki się nie wyczerpią. Bieżący płyn nie podtrzymuje sam siebie i zawsze powstaje ze źródła płynu, bezpośrednio lub pośrednio. Bez źródła płynu, płyn bieżący prędzej czy później wyczerpie się i zniknie. +All liquids share the following properties:=Wszystkie płyny mają następujące własności: +• All properties of blocks (including drowning damage)=• Wszystkie własności bloków (włączając w to obrażenia od tonięcia) +• Renewability: Renewable liquids can create new sources=• Odnawialność: Odnawialne płyny mogą tworzyć nowe źródła +• Flowing range: How many flowing liquids are created at maximum per liquid source, it determines how far the liquid will spread. Possible are ranges from 0 to 8. At 0, no flowing liquids will be created. Image 5 shows a liquid of flowing range 2=• Zasięg płynięcia: Ile maksymalnie płynów bieżących jest utworzonych przez źródło płynu. Definiuje to jak daleko płyn może się rozprzestrzenić. Możliwe wartości są od 0 do 8. Przy 0, żadne płyny bieżące nie będą utworzone. Obrazek 5 pokazuje płyn z zasięgiem płynięcia 2 +• Viscosity: How slow players move through it and how slow the liquid spreads=• Lepkość: Jak wolno gracze poruszają się przez niego i jak wolno płyn się rozprzestrzenia +Renewable liquids create new liquid sources at open spaces (image 2). A new liquid source is created when:=Odnawialne płyny mogą tworzyć nowe źródła płynów w wolnej przestrzeni (obrazek 2). Nowe źródło płynu jest tworzone gdy: +• Two renewable liquid blocks of the same type touch each other diagonally=• Dwa odnawialne źródła płynów tego samego typu stykają się po przekątnej +• These blocks are also on the same height=• Bloki te są na tej samej wysokości +• One of the two “corners” is open space which allows liquids to flow in=• Jeden z dwóch "rogów" jest wolną przestrzenią gdzie może wpłynąć płyn +When those criteria are met, the open space is filled with a new liquid source of the same type (image 3).=Gdy te kryteria są spełnione, wolna przestrzeń jest zapełniona źródłem płynu tego samego typu (obrazek 3). +Swimming in a liquid is fairly straightforward: The usual direction keys for basic movement, the jump key for rising and the sneak key for sinking.=Pływanie w płynie jest całkiem proste: Klawisze chodzenia powodują ruch w danym kierunku, przycisk skakania powoduje wznoszenia, a skradania opadanie. +The physics for swimming and diving in a liquid are:=Fizyka pływania i nurkowania w płynach jest następująca: +• The higher the viscosity, the slower you move=• Im wyższa lepkość, tym wolniej się poruszasz +• If you rest, you'll slowly sink=• Jeśli się nie ruszasz, będziesz powoli opadała +• There is no fall damage for falling into a liquid as such=• Nie ma obrażeń od upadku gdy wpadniesz do płynu +• If you fall into a liquid, you will be slowed down on impact (but don't stop instantly). Your impact depth is determined by your speed and the liquid viscosity. For a safe high drop into a liquid, make sure there is enough liquid above the ground, otherwise you might hit the ground and take fall damage=• Gdy wpadasz do płynu będziesz spowolniona przy zetknięciu (ale nie natychmiast). Zanurzenie po upadku jest ustalane na podstawie twojej szybkości oraz lepkości płynu. Żeby bezpiecznie skoczyć do płynu, upewnij się, że jest go wystarczająco dużo nad ziemię. W przeciwnym wypadku możesz uderzyć w ziemię i otrzymać obrażenia od upadku. +Liquids are often not pointable. But some special items are able to point all liquids.=Płyny są zwykle niewskazywalne, ale niektóre specjalne przedmioty mogą wskazywać na płyny. +Crafting=Wytwarzanie +Crafting is the task of combining several items to form a new item.=Wytwarzanie jest procesem łączenia i przetwarzania przedmiotów aby utworzyć nowy przedmiot. +To craft something, you need one or more items, a crafting grid (C) and a crafting recipe. A crafting grid is like a normal inventory which can also be used for crafting. Items need to be put in a certain pattern into the crafting grid. Next to the crafting grid is an output slot (O). Here the result will appear when you placed items correctly. This is just a preview, not the actual item. Crafting grids can come in different sizes which limits the possible recipes you can craft.=Aby coś wytworzyć potrzebujesz jednego lub więcej przedmiotów, siatki do wytwarzania oraz receptury. Siatka do wytwarzania jest jak zwykły ekwipunek, który może być użyty do wytwarzania. Przedmioty muszą być ułożone w konkretny wzór w siatce do wytwarzania. Obok siatki wytwarzania jest miejsce wyjściowe (O). Tutaj pojawi się rezultat gdy poprawnie umieścisz przedmioty. Jest to tylko podgląd, a nie faktyczny przedmiot. Siatki do wytwarzania mogą mieć różne rozmiary, co ogranicza liczbę receptur które możesz wytworzyć. +To complete the craft, take the result item from the output slot, which will consume items from the crafting grid and creates a new item. It is not possible to place items into the output slot.=Aby zakończyć wytwarzanie zabierze wynikowy przedmiot z miejsca wyjściowego. Skonsumuje to przedmioty z siatki do wytwarzania i utworzy nowy przedmiot. Nie da się umieszczać przedmiotów w miejscu wyjściowym. +A description on how to craft an item is called a “crafting recipe”. You need this knowledge to craft. There are multiple ways to learn crafting recipes. One way is by using a crafting guide, which contains a list of available crafting recipes. Some games provide crafting guides. There are also some mods which you can download online for installing a crafting guide. Another way is by reading the online manual of the game (if one is available).=Opis w jaki sposób uzyskać dany przedmiot nazywa się "recepturą wytwarzania". Potrzebujesz tej wiedzy do wytwarzania. Jest kilka sposobów by je poznać. Jednym z nich jest korzystanie z przewodnika do wytwarzania, który zawiera listę dostępnych receptur do wytwarzania. Niektóre gry dostarczają takie przewodniki. Istnieją także mody, które możesz pobrać z internetu dodające przewodniki. Innym sposobem jest przeczytanie instrukcji gry w internecie (jeśli taka jest dostępna). +Crafting recipes consist of at least one input item and exactly one stack of output items. When performing a single craft, it will consume exactly one item from each stack of the crafting grid, unless the crafting recipe defines replacements.=Receptury do wytwarzania składają się z przynajmniej jednego przedmiotu na wejściu i dokładnie jednej grupy przedmiotów wyjściowych. Podczas dokonywania pojedynczego wytwarzania skonsumowany zostanie dokładnie jeden przedmiot z każdej grupy w siatce wytwarzania, chyba, że receptura definiuje zamienniki. +There are multiple types of crafting recipes:=Istnieje kilka typów receptur: +• Shaped (image 2): Items need to be placed in a particular shape=• Kształtne (obrazek 2): Przedmioty muszą być ułożone w konkretny kształt +• Shapeless (images 3 and 4): Items need to be placed somewhere in input (both images show the same recipe)=• Bezkształtne (obrazki 3 i 4): Przedmioty muszą być ułożone gdzieś w wejściu (oba obrazki pokazują tę samą recepturę) +• Cooking: Explained in “Basics > Cooking”=• Pieczenie: Wyjaśnione w "Podstawy > Pieczenie" +• Repairing (image 5): Place two damaged tools into the crafting grid anywhere to get a tool which is repaired by 5%=• Naprawianie (obrazek 5): Postaw dwa uszkodzone narzędzia w siatce do wytwarzania w dowolnym miejscu aby uzyskać narzędzie naprawione o 5% +In some crafting recipes, some input items do not need to be a concrete item, instead they need to be a member of a group (see “Basics > Groups”). These recipes offer a bit more freedom in the input items. Images 6-8 show the same group-based recipe. Here, 8 items of the “stone” group are required, which is true for all of the shown items.=W niektórych recepturach, niektóre przedmioty wejściowe nie muszą być konkretnymi przedmiotami, tylko przynależeć do pewnej grupy (zobacz "Podstawy > Grupy"). Te receptury są nieco mniej restrykcyjne jeśli chodzi o wejściowe przedmioty. Obrazki 6-8 pokazują tę samą recepturę opartą o grupy. W tym przypadku 8 przedmiotów z grupy "kamień" są potrzebne, a wszystkie pokazane przedmioty do niej należą. +Rarely, crafting recipes have replacements. This means, whenever you perform a craft, some items in the crafting grid will not be consumed, but instead will be replaced by another item.=Czasami, receptury mają zamienniki. To oznacza, że po wykonaniu przetwarzania, niektóre przedmioty w siatce nie będą skonsumowane, a jedynie zamienione w inny przedmiot. +Cooking=Pieczenie +Cooking (or smelting) is a form of crafting which does not involve a crafting grid. Cooking is done with a special block (like a furnace), an cookable item, a fuel item and time in order to yield a new item.=Pieczenie (lub przetapianie) jest formą wytwarzania, która nie wymaga siatki do wytwarzania. Pieczenie jest wykonywane przy użyciu specjalnego bloku (np. pieca), przedmiotu który można upiec, paliwa oraz czasu potrzebnego na uzyskanie nowego przedmiotu. +Each fuel item has a burning time. This is the time a single item of the fuel keeps a furnace burning.=Każdy przedmiot będący paliwem ma czas wypalania. Jest to czas przez jaki pojedynczy przedmiot tego paliwa utrzymuje piec zapalony. +Each cookable item requires time to be cooked. This time is specific to the item type and the item must be “on fire” for the whole cooking time to actually yield the result.=Każdy przedmiot możliwy do upieczenia potrzebuje czasu by zostać upieczony. Czas ten jest przypisany do typu przedmiotu i każdy przedmiot musi być "na ogniu" przez cały ten czas by uzyskać przedmiot wynikowy. +Hotbar=Pasek szybkiego dostępu +At the bottom of the screen you see some squares. This is called the “hotbar”. The hotbar allows you to quickly access the first items from your player inventory.=Na dole swojego ekwipunku możesz zobaczyć kwadraty. To nazywa się "pasek szybkiego dostępu". Pozwala on na szybki dostęp do pierwszych przedmiotów z twojego ekwipunku. +You can change the selected item with the mouse wheel or the keyboard.=Możesz zmieniać wybrany przedmiot przy użyciu kółka myszy lub klawiatury. +• Select previous item in hotbar: [Mouse wheel up] or [B]=• Wybierz poprzedni przedmiot w pasku: [Kółko myszy w górę] lub [B] +• Select next item in hotbar: [Mouse wheel down] or [N]=• Wybierz następny przedmiot w pasku: [Kółko myszy w dół] lub [N] +• Select item in hotbar directly: [1]-[9]=• Wybierz bezpośrednio przedmiot w pasku: [1]-[9] +The selected item is also your wielded item.=Wybrany przedmiot jest również przedmiotem, który trzymasz. +Minimap=Minimapa +If you have a map item in any of your hotbar slots, you can use the minimap.=Jeśli masz przedmiot mapy w którymś z twoich miejsc na pasku szybkiego dostępu, możesz korzystać z minimapy. +Press [F9] to make a minimap appear on the top right. The minimap helps you to find your way around the world. Press it again to select different minimap modes and zoom levels. The minimap also shows the positions of other players.=Naciśnij [F9] aby minimapa pojawiła się w prawym górnym rogu. Minimapa pomoże ci odnaleźć się w świecie. Naciśnij [F9] ponownie aby wybrać inny tryb minimapy i stopień przybliżenia. Minimapa pokazuje również pozycję innych graczy. +There are 2 minimap modes and 3 zoom levels.=Są 2 tryby minimapy oraz 3 stopnie przybliżenia. +Surface mode (image 1) is a top-down view of the world, roughly resembling the colors of the blocks this world is made of. It only shows the topmost blocks, everything below is hidden, like a satellite photo. Surface mode is useful if you got lost.=Tryb powierzchni (obrazek 1) jest widokiem z lotu ptaka na świat, mniej więcej odzwierciedlającym kolory bloków z których stworzony jest świat. Pokazuje tylko najwyżej położone bloki, wszystko poniżej jest ukryte, podobnie jak zdjęcie satelitarne. Tryb ten jest przydatny gdy się zgubisz. +Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon.=Tryb radaru (obrazek 2) jest bardziej skomplikowany. Pokazuje "gęstość" obszaru wokół ciebie i zmienia się z wysokością. Z grubsza, im bardziej zielony jest obszar, ty mniej "gęsty" jest. Czarne obszary mają wiele bloków. Użyj tego trybu by znaleźć jaskinie, ukryte obszary, ściany i więcej. Prostokątne kształty w obrazku 2 wyraźnie ujawniają pozycję lochów. +There are also two different rotation modes. In “square mode”, the rotation of the minimap is fixed. If you press [Shift]+[F9] to switch to “circle mode”, the minimap will instead rotate with your looking direction, so “up” is always your looking direction.=Istnieją również dwa różne tryby rotacji. W "trybie kwadratowym" rotacja minimapy jest ustalona. Jeśli naciśniesz [Shift]+[F9] aby zmienić na "tryb okręgu", minimapy będzie natomiast obracać się wraz z twoim kierunkiem patrzenia. +In some games, the minimap may be disabled.=W niektórych grach minimapa może być wyłączona. +• Toggle minimap mode: [F9]=• Przełącz tryb minimapy: [F9] +• Toggle minimap rotation mode: [Shift]+[F9]=• Przełącz tryb rotacji minimapy: [Shift]+[F9] +Inventory=Ekwipunek +Inventories are used to store item stacks. There are other uses, such as crafting. An inventory consists of a rectangular grid of item slots. Each item slot can either be empty or hold one item stack. Item stacks can be moved freely between most slots.=Ekwipunki są wykorzystywane do przechowywania grup przedmiotów. Mogą być również wykorzystywane w innych celach, np. wytwarzanie. Ekwipunek składa się z prostokątnej siatki miejsc na przedmioty. Każde miejsce na przedmioty może być puste lub zapełnione jedną grupą przedmiotów. Grupy przedmiotów można dowolnie przenosić pomiędzy miejscami. +You have your own inventory which is called your “player inventory”, you can open it with the inventory key (default: [I]). The first inventory slots are also used as slots in your hotbar.=Posiadasz swój własny ekwipunek nazywany "ekwipunkiem gracza", możesz go otworzyć klikając przycisk inwentarza (domyślnie: [I]). Pierwsze miejsca ekwipunku są również wykorzystywane jako miejsca na pasku szybkiego dostępu. +Blocks can also have their own inventory, e.g. chests and furnaces.=Bloki mogą mieć swój własny ekwipunek, np. skrzynie lub piece. +Inventory controls:=Sterowanie w ekwipunku +Taking: You can take items from an occupied slot if the cursor holds nothing.=Zabieranie: Możesz zabierać przedmioty z zajętego miejsca jeśli na kursorze niczego nie ma. +• Left click: take entire item stack=• Lewy przycisk: weź całą grupę przedmiotów +• Right click: take half from the item stack (rounded up)=• Prawy przycisk: weź połowę przedmiotów z grupy (zaokrąglone w górę) +• Middle click: take 10 items from the item stack=• Środkowy przycisk: weź 10 przedmiotów z grupy +• Mouse wheel down: take 1 item from the item stack=• Kółko myszy w dół: Weź 1 przedmiot z grupy +Putting: You can put items onto a slot if the cursor holds 1 or more items and the slot is either empty or contains an item stack of the same item type.=Wstawianie: Możesz wstawić przedmioty w miejsce jeśli na kursorze jest przynajmniej 1 przedmiot, a wskazane miejsce jest puste lub zawiera grupę przedmiotów tego samego typu. +• Left click: put entire item stack=• Lewy przycisk: Wstaw całą grupę przedmiotów +• Right click: put 1 item of the item stack=• Prawy przycisk: Wstaw 1 przedmiot z grupy +• Right click or mouse wheel up: put 1 item of the item stack=• Prawy przycisk lub kółko myszy w górę: Wstaw 1 przedmiot z grupy +• Middle click: put 10 items of the item stack=• Środkowy przycisk: wstaw 10 przedmiotów z grupy +Exchanging: You can exchange items if the cursor holds 1 or more items and the destination slot is occupied by a different item type.=Wymienianie: Możesz wymieniać przedmioty jeśli na kursorze jest przynajmniej jeden przedmiot, a we wskazanym miejscu znajduje się grupa innych przedmiotów. +• Click: exchange item stacks=• Kliknij: wymień grupy przedmiotów +Throwing away: If you hold an item stack and click with it somewhere outside the menu, the item stack gets thrown away into the environment.=Wyrzucanie: Jeśli trzymasz grupę przedmiotów i klikniesz poza menu ekwipunku, grupa przedmiotów zostanie wyrzucona w świat. +Quick transfer: You can quickly transfer an item stack to/from the player inventory to/from another item's inventory slot like a furnace, chest, or any other item with an inventory slot when that item's inventory is accessed. The target inventory is generally the most relevant inventory in this context.=Szybki transfer: Możesz szybko przemieszczać grupę przedmiotów z/do ekwipunku gracza do/z ekwipunku innego przedmiotu, takich jak piec, skrzynia czy innego z ekwipunkiem, gdy jego ekwipunek jest otworzony. Docelowy ekwipunek jest najczęściej najbardziej istotnym ekwipunkiem w takim kontekście. +• Sneak+Left click: Automatically transfer item stack=• Skradanie+Lewy przycisk: Automatycznie przenieś grupę przedmiotów +Online help=Pomoc online +You may want to check out these online resources related to MineClone 2.=Możesz chcieć zobaczyć na te zasoby online powiązane z MineClone 2. +MineClone 2 download and forum discussion: =MineClone 2 pobieranie oraz dyskusja na forum: +Here you find the most recent version of MineClone 2 and can discuss it.=Tutaj możesz znaleźć najnowszą wersję MineClone 2 i porozmawiać o niej +Bug tracker: =Śledzenie błędów: +Report bugs here.=Zgłaszaj tu zauważone błędy. +Minetest links:=Linki dotyczące Minetest: +You may want to check out these online resources related to Minetest:=Możesz chcieć zobaczyć te zasoby online dotyczące Minetest +Official homepage of Minetest: =Oficjalna strona Minetest: +The main place to find the most recent version of Minetest, the engine used by MineClone 2.=Miejsce gdzie można znaleźć najnowszą wersję Minetesta, silnika wykorzystywanego przez MineClone 2. +The main place to find the most recent version of Minetest.=Miejsce gdzie można znaleźć najnowszą wersję Minetesta. +Community wiki: =Wiki społeczności: +A community-based documentation website for Minetest. Anyone with an account can edit it! It also features a documentation of Minetest Game.=Utrzymywana przez społeczność dokumentacja na temat Minetest. Każdy z kontem może ją edytować! Znajduje się na niej również dokumentacja Gry Minetest. +Minetest forums: =Forum Minetest: +A web-based discussion platform where you can discuss everything related to Minetest. This is also a place where player-made mods and games are published and discussed. The discussions are mainly in English, but there is also space for discussion in other languages.=Platforma dyskusyjna, gdzie możesz porozmawiać na wszystkie tematy związane z Minetestem. Jest to również miejsce gdzie stworzone przez graczy mody i gry są publikowane i omawiane. Rozmowy są prowadzone głównie po angielsku ale jest również miejsce na rozmowy w innych językach. +Chat: =Czat: +A generic Internet Relay Chat channel for everything related to Minetest where people can meet to discuss in real-time. If you do not understand IRC, see the Community Wiki for help.=Ogólne kanał IRC na dowolny temat związany z Minetest, gdzie ludzie mogą się spotkać i rozmawiać w czasie rzeczywistym. Jeśli nie rozumiesz IRC, zobacz na Wiki społeczności by znaleźć pomoc. +Groups=Grupy +Items, players and objects (animate and inanimate) can be members of any number of groups. Groups serve multiple purposes:=Przedmioty, gracze i obiekty (ruchome i nieruchome) mogą przynależeć do dowolnej liczby grup. Grupy pełnią kilka funkcji: +• Crafting recipes: Slots in a crafting recipe may not require a specific item, but instead an item which is a member of a particular group, or multiple groups=• Receptury wytwarzania: Miejsca w recepturze mogą nie wymagać konkretnego przedmiotu, lecz przedmiotu, który przynależy do konkretnej grupy, lub kilku grup +• Digging times: Diggable blocks belong to groups which are used to determine digging times. Mining tools are capable of digging blocks belonging to certain groups=• Czas kopania: Bloki które można wykopać należą do grupy, które definiują czas ich kopania. Narzędzia do kopania są w stanie kopać przedmioty należące do pewnych grup +• Block behavior: Blocks may show a special behaviour and interact with other blocks when they belong to a particular group=• Zachowanie bloku: Bloki mogą wykazywać się pewnym zachowaniem i wchodzić w interakcję z innymi blokami gdy należą do pewnych grup +• Damage and armor: Objects and players have armor groups, weapons have damage groups. These groups determine damage. See also: “Basics > Weapons”=• Obrażenia i zbroja: Obiekty i gracze mają grupy zbroi, bronie mają grupy obrażeń. Te grupy definiują obrażenia. Zobacz również: "Podstawy > Bronie" +• Other uses=• Inne użycia +In the item help, many important groups are usually mentioned and explained.=We wpisach o przedmiotach wiele istotnych grup jest zwykle wymienionych i opisanych. +Glossary=Słowniczek +This is a list of commonly used terms:=Jest to lita często używanych terminów: +Controls:=Sterowanie: +• Wielding: Holding an item in hand=• Trzymanie: Posiadanie przedmiotu w ręce +• Pointing: Looking with the crosshair at something in range=• Wskazywanie: Patrzenie na coś w zasięgu celownikiem +• Dropping: Throwing an item or item stack to the ground=• Upuszczanie: Wyrzucenie przedmiotu lub grupy przedmiotów na ziemię +• Punching: Attacking with left-click, is also used on blocks=• Uderzanie: Atakowanie lewym przyciskiem myszy, używane również na blokach +• Sneaking: Walking slowly while (usually) avoiding to fall over edges=• Skradanie: Powolne chodzenie i (zwykle) unikanie spadania z bloków +• Climbing: Moving up or down a climbable block=• Wspinanie: Wchodzenie w górę lub schodzenie w dół po wspinaczkowych blokach +Blocks:=Bloki: +• Block: Cubes that the worlds are made of=• Blok: Kostki z którego stworzony jest świat +• Mining/digging: Using a mining tool to break a block=• Kopanie/Wydobywanie: Używanie przedmiotów do kopania do niszczenia bloków +• Building/placing: Putting a block somewhere=• Budowanie/Umieszczanie: Wstawianie gdzieś bloku +• Drop: Items you get after mining a block=• Zrzut: Przedmioty uzyskane po wykopaniu bloku +• Using a block: Right-clicking a block to access its special function=• Używanie bloku: Kliknięcie prawym przyciskiem na blok aby uruchomić jego specjalną funkcję +Items:=Przedmioty: +• Item: A single thing that players can possess=• Przedmiot: Pojedyncza rzecz, którą gracz może posiadać +• Item stack: A collection of items of the same kind=• Grupa przedmiotów: Zbiór przedmiotów tego samego typu +• Maximum stack size: Maximum amount of items in an item stack=• Maksymalny rozmiar grupy: Maksymalna liczba przedmiotów w grupie przedmiotów +• Slot / inventory slot: Can hold one item stack=• Miejsce / miejsce w ekwipunku: Może przechowywać jedną grupę przedmiotów +• Inventory: Provides several inventory slots for storage=• Ekwipunek: Dostarcza kilka miejsc w ekwipunku do przechowywania +• Player inventory: The main inventory of a player=• Ekwipunek gracza: Główny ekwipunek gracza +• Tool: An item which you can use to do special things with when wielding=• Narzędzie: Przedmiot, który można wykorzystać w specjalny sposób podczas trzymania +• Range: How far away things can be to be pointed by an item=• Zasięg: Jak dalekie rzeczy mogą być wskazane przedmiotem +• Mining tool: A tool which allows to break blocks=• Narzędzie do kopania: Narzędzie pozwalające niszczyć bloki +• Craftitem: An item which is (primarily or only) used for crafting=• Przedmiot do wytwarzania: Przedmiot który jest (głównie lub tylko) wykorzystywany do wytwarzania. +Gameplay:=Rozgrywka +• “heart”: A single health symbol, indicates 2 HP=• "serce": Pojedynczy symbol zdrowia, reprezentujący 2 HP +• “bubble”: A single breath symbol, indicates 1 BP=• "bąbel": Pojedynczy symbol oddechu, reprezentujący 1 BP +• HP: Hit point (equals half 1 “heart”)=• HP: Punkt zdrowia (równy połowie serca) +• BP: Breath point, indicates breath when diving=• BP: Punkt oddechu reprezentujący ilość powietrza podczas nurkowania +• Mob: Computer-controlled enemy=• Mob: Przeciwnik sterowany przez komputer +• Crafting: Combining multiple items to create new ones=• Wytwarzanie: Łączenie kilku przedmiotów w celu uzyskania innych +• Crafting guide: A helper which shows available crafting recipes=• Przewodnik wytwarzania: Pomocniczy spis dostępnych receptur wytwarzania +• Spawning: Appearing in the world=• Spawnowanie: Pojawienie się w świecie +• Respawning: Appearing again in the world after death=• Odradzanie: Ponownie pojawienie się w świecie po śmierci +• Group: Puts similar things together, often affects gameplay=• Grupa: Łączy podobne rzeczy razem, często wpływa na rozgrywkę +• noclip: Allows to fly through walls=• noclip: Pozwala przelatywać przez ściany +Interface=Interfejs: +• Hotbar: Inventory slots at the bottom=• Pasek szybkiego dostępu: Miejsca ekwipunku na dole ekranu +• Statbar: Indicator made out of half-symbols, used for health and breath=• Pasek statusu: Wskaźniki składające się z symboli używane dla oznaczania życia oraz oddechu +• Minimap: The map or radar at the top right=• Minimapa: Mapa lub radar w prawym górnym rogu ekranu +• Crosshair: Seen in the middle, used to point at things=• Celownik: Widoczny na środku ekranu, używany do wskazywania na rzeczy +Online multiplayer:=Gra wieloosobowa w internecie: +• PvP: Player vs Player. If active, players can deal damage to each other=• PvP: Gracz kontra Gracz. Jeśli ten tryb jest aktywny, gracze mogą zadawać sobie obrażenia +• Griefing: Destroying the buildings of other players against their will=• Griefowanie: Celowe niszczenie budynków innych graczy wbrew ich woli +• Protection: Mechanism to own areas of the world, which only allows the owners to modify blocks inside=• Ochrona: Mechanizm pozwalający wejść w posiadanie pewnych części świata, co pozwala tylko właścicielom modyfikować bloki wewnątrz +Technical terms:=Techniczne terminy: +• Minetest: This game engine=• Minetest: Ten silnik gier +• MineClone 2: What you play right now=• MineClone 2: To w co teraz grasz +• Minetest Game: A game for Minetest by the Minetest developers=• Gra Minetest: Gra w Minetest napisana przez jego twórców +• Game: A complete playing experience to be used in Minetest; such as a game or sandbox or similar=• Gra: Kompletny doświadczenie do wykorzystania w Minetest; takie jak gry, piaskownice i podobne +• Mod: A single subsystem which adds or modifies functionality; is the basic building block of games and can be used to further enhance or modify them=• Mod: Pojedynczy system, który dodaje, lub modyfikuje funkcjonalność; jest podstawowym blokiem budowalnym gier i może być wykorzystywany do dalszego urozmaicania i modyfikowania ich +• Privilege: Allows a player to do something=• Przywilej: Pozwala graczowi coś zrobić +• Node: Other word for “block”=• Węzeł: Inna nazwa na "blok" +Settings=Ustawienia +There is a large variety of settings to configure Minetest. Pretty much every aspect can be changed that way.=Jest wiele różnych ustawień pozwalających zmodyfikować działanie Minetesta. Niemal każdy aspekt może być w ten sposób zmieniony. +These are a few of the most important gameplay settings:=Oto kilka najważniejszych ustawień dotyczących rozgrywki: +• Damage enabled (enable_damage): Enables the health and breath attributes for all players. If disabled, players are immortal=• Włączone obrażenia (enable_damage): Włącza paski zdrowia i oddechu. Jeśli wyłączone, gracze są nieśmiertelni +• Creative Mode (creative_mode): Enables sandbox-style gameplay focusing on creativity rather than a challenging gameplay. The meaning depends on the game; usual changes are: Reduced dig times, easy access to almost all items, tools never wear off, etc.=• Tryb kreatywny (creative_mode): Włącza rozgrywkę w stylu piaskownicy, skupiająca się na kreatywności a nie wyzwaniach. Dokładne znaczenie zależy od gry; najczęstsze zmiany to: Zmniejszony czas kopania, łatwy dostęp do niemal wszystkich przedmiotów, narzędzie się nie wykorzystują itp. +• PvP (enable_pvp): Short for “Player vs Player”. If enabled, players can deal damage to each other=• PvP (enable_pvp): Skrót od "Player vs Player" (gracz kontra gracz). Jeśli włączone, gracze mogą zadawać sobie obrażenia +For a full list of all available settings, use the “All Settings” dialog in the main menu.=Aby zobaczyć pełną listę dostępnych ustawień, użyj przycisku "Wszystkie ustawienia" w menu głównym. +Movement modes=Tryby poruszania +You can enable some special movement modes that change how you move.=Możesz uruchomić specjalne tryby poruszania, które zmieniają sposób w jaki się przemieszczasz. +Pitch movement mode:=Alternatywny tryb poruszania bez-ważkiego: +• Description: If this mode is activated, the movement keys will move you relative to your current view pitch (vertical look angle) when you're in a liquid or in fly mode.=• Opis: Jeśli ten tryb jest włączony, klawisze ruchu będą poruszać cię prostopadle do kierunku patrzenia, gdy jesteś w płynach lub w trybie latania. +• Default key: [L]=• Domyślny przycisk: [L] +• No privilege required=• Nie potrzeba żadnego przywileju +Fast mode:=Tryb szybki: +• Description: Allows you to move much faster. Hold down the the “Use” key [E] to move faster. In the client configuration, you can further customize fast mode.=• Opis: Pozwala poruszać się znacznie szybciej. Przytrzymaj swój przycisk "Używania" [E] aby poruszać się szybciej. W konfiguracji klienta możesz dokładniej skonfigurować tryb szybki. +• Default key: [J]=• Domyślny przycisk: [J] +• Required privilege: fast=• Potrzebny przywilej: fast +Fly mode:=Tryb latania: +• Description: Gravity doesn't affect you and you can move freely in all directions. Use the jump key to rise and the sneak key to sink.=• Opis: Grawitacja przestaje na ciebie wpływać i możesz swobodnie poruszać się w dowolnym kierunku. Użyj przycisku skoku aby się wznosić, a przycisku skradania aby opadać. +• Default key: [K]=• Domyślny przycisk: [K] +• Required privilege: fly=• Potrzebny przywilej: fly +Noclip mode:=Tryb noclip: +• Description: Allows you to move through walls. Only works when fly mode is enabled, too.=• Opis: Pozwala przechodzić przez ściany. Działa tylko gdy uruchomiony jest tryb latania. +• Default key: [H]=• Domyślny przycisk: [H] +• Required privilege: noclip=• Potrzebny przywilej: noclip +Console=Konsola +With [F10] you can open and close the console. The main use of the console is to show the chat log and enter chat messages or server commands.=Naciskając [F10] możesz otworzyć i zamknąć konsolę. Głównym zastosowaniem konsoli jest wyświetlenie czatu oraz wysyłanie wiadomości lub wpisywanie komend serwera. +Using the chat or server command key also opens the console, but it is smaller and will be closed after you sent a message.=Korzystanie z przycisku czatu lub komand serwera również otwiera konsolę, będzie ona jednak mniejsza i zostanie zamknięta po wysłaniu wiadomości. +Use the chat to communicate with other players. This requires you to have the “shout” privilege.=Użyj czatu by komunikować się z innymi graczami. Wymaga to przywileju "shout". +Just type in the message and hit [Enter]. Public chat messages can not begin with “/”.=Aby to zrobić wpisz wiadomość i naciśnij [Enter]. Publiczne wiadomości nie mogą rozpoczynać się od znaku "/". +You can send private messages: Say “/msg ” in chat to send “” which can only be seen by .=Możesz wysyłać prywatne wiadomości: Napisz "/msg " w czacie aby wysłać "" widoczną tylko przez . +There are some special controls for the console:=W konsoli obowiązuje kilka specjalnych metod sterowania: +• [F10] Open/close console=• [F10] Otwórz/zamknij konsolę +• [Enter]: Send message or command=• [Enter]: Wyślij wiadomość lub komendę +• [Tab]: Try to auto-complete a partially-entered player name=• [Tab]: Spróbuj dokończyć częściowo wprowadzone imię gracza +• [Ctrl]+[Left]: Move cursor to the beginning of the previous word=• [Ctrl]+[Lewo]: Przenieś kursor na początek poprzedniego słowa +• [Ctrl]+[Right]: Move cursor to the beginning of the next word=• [Ctrl]+[Prawo]: Przenieś kursor na początek następnego słowa +• [Ctrl]+[Backspace]: Delete previous word=• [Ctrl]+[Backspace]: Usuń poprzednie słowo +• [Ctrl]+[Delete]: Delete next word=• [Ctrl]+[Delete]: Usuń następne słowo +• [Ctrl]+[U]: Delete all text before the cursor=• [Ctrl]+[U]: Usuń cały tekst przed kursorem +• [Ctrl]+[K]: Delete all text after the cursor=• [Ctrl]+[K]: Usuń cały tekst po kursorze +• [Page up]: Scroll up=• [Page up]: Przewiń do góry +• [Page down]: Scroll down=• [Page down]: Przewiń w dół +There is also an input history. Minetest saves your previous console inputs which you can quickly access later:=Istnieje również historia wprowadzania. Minetest zapisuje wprowadzone komendy, do szybkiego dostępu później: +• [Up]: Go to previous entry in history=• [Góra]: Idź do poprzedniej komendy w historii +• [Down]: Go to next entry in history=• [Dół]: Idź do następnej komendy w historii +Server commands=Komendy serwera +Server commands (also called “chat commands”) are little helpers for advanced users. You don't need to use these commands when playing. But they might come in handy to perform some more technical tasks. Server commands work both in multi-player and single-player mode.=Komendy serwera (zwane również "komendy czatu") są drobnymi pomocnymi komendami dla zaawansowanych użytkowników. Nie musisz korzystać z tych komend podczas grania, ale mogą okazać się przydatne przy wykonywaniu technicznych zadań. Działają one zarówno w grze wieloosobowej i jednoosobowej. +Server commands can be entered by players using the chat to perform a special server action. There are a few commands which can be issued by everyone, but some commands only work if you have certain privileges granted on the server. There is a small set of basic commands which are always available, other commands can be added by mods.=Komendy serwera mogą być wprowadzane przy użyciu czatu, aby wykonać akcje na serwerze. Niektóre komendy mogą być wywołane przez każdego, ale niektóre działają tylko jeśli masz przyznane przywileje na serwerze. Mały zbiór podstawowych komend dostępny jest zawsze, inne komendy mogą być dodane przez mody. +To issue a command, simply type it like a chat message or press Minetest's command key (default: [/]). All commands have to begin with “/”, for example “/mods”. The Minetest command key does the same as the chat key, except that the slash is already entered.=Aby wywołać komendę, po prostu wpisze ją jako wiadomość czatu lub kliknij przycisk komend Minetesta (domyślnie: [/]). Wszystkie komendy muszą zaczynać się od "/', np. "/mods". Przycisk komend Minetesta robi dokładnie to samo co przycisk czatu, ale "/" jest od razu wpisany. +Commands may or may not give a response in the chat log, but errors will generally be shown in the chat. Try it for yourselves: Close this window and type in the “/mods” command. This will give you the list of available mods on this server.=Komendy mogą, ale nie muszą wypisać odpowiedź w czacie, ale błędy będą zwykle pokazane w czacie. Sama spróbuj: Zamknij to okno i wpisz komendę "/mods". Ta komenda wypiszę listę dostępnych modów na tym serwerze. +“/help all” is a very important command: You get a list of all available commands on the server, a short explanation and the allowed parameters. This command is also important because the available commands often differ per server.="/help all" jest bardzo ważną komendą: Zostanie ci pokazana lista wszystkich dostępnych komend na serwerze, krótkie wyjaśnienie oraz dozwolone parametry. Ta komenda jest również ważna, ponieważ dostępne komendy będą inne w zależności od serwera. +Commands are followed by zero or more parameters.=Po komendach mogą wystąpić parametry. +In the command reference, you see some placeholders which you need to replace with an actual value. Here's an explanation:=W opisie komend możesz zobaczyć tekst zastępczy, który musisz zamienić na faktyczną wartość. Oto krótkie wyjaśnienie: +• Text in greater-than and lower-than signs (e.g. “”): Placeholder for a parameter=• Teks pomiędzy symbolami większe niż oraz mniejsze niż (np. ""): Tekst zastępczy dla parametru +• Anything in square brackets (e.g. “[text]”) is optional and can be omitted=• Cokolwiek w nawiasach kwadratowych (np. "[tekst]") jest opcjonalne i może być pominięte +• Pipe or slash (e.g. “text1 | text2 | text3”): Alternation. One of multiple texts must be used (e.g. “text2”)=• Pionowa kreska lub slesz (np. "tekst1 | tekst2 | tekst3"): Alternatywa. Jeden z wymienionych tekstów musi być użyty (np. "tekst2") +• Parenthesis: (e.g. “(word1 word2) | word3”): Groups multiple words together, used for alternations=• Nawiasy (np. "((słowo1 słowo2) | słowo3)"): Grupuje wiele słów razem, używane przy alternatywach +• Everything else is to be read as literal text=• Wszystko inne powinno być czytane jako dosłowny tekst +Here are some examples to illustrate the command syntax:=Oto kilka przykładów ilustrujących składnię komend: +• /mods: No parameters. Just enter “/mods”=• /mods: Brak parametrów. Po prostu wpisz "/mods" +• /me : 1 parameter. You have to enter “/me ” followed by any text, e.g. “/me orders pizza”=• /ja : 1 parametr. Musisz wpisać "/ja ", a następnie dowolny tekst, np. "/ja zamawiam pizzę" +• /give : Two parameters. Example: “/give Player default:apple”=• /give : Dwa parametry. Przykładowo: "/give gracz default:apple" +• /help [all|privs|]: Valid inputs are “/help”, “/help all”, “/help privs”, or “/help ” followed by a command name, like “/help time”=• /help [all|privs|]: Poprawne użycia tej komendy to "/help", "/help all", "/help privs" lub "/help ", po którym następują nazwa komendy, np. "/help mods" +• /spawnentity [,,]: Valid inputs include “/spawnentity boats:boat” and “/spawnentity boats:boat 0,0,0”=• /spawnentity [,,]: Poprawne użycia tej komendy to np. "/spawnentity boats:boat" oraz "/spawnentity boats:boat 0,0,0" +Some final remarks:=Kilka uwag na koniec: +• For /give and /giveme, you need an itemstring. This is an internally used unique item identifier which you may find in the item help if you have the “give” or “debug” privilege=• Aby użyć komend /give oraz /giveme, potrzebujesz nazwy przedmiotu. Jest to używany wewnętrznie unikalny identyfikator, który możesz znaleźć w pomocy jeśli masz przywileje "give" lub "debug" +• For /spawnentity you need an entity name, which is another identifier=• Aby użyć /spawnentity musisz znać nazwę obiektu, która podobnie jest identyfikatorem +Privileges=Przywileje +Each player has a set of privileges, which differs from server to server. Your privileges determine what you can and can't do. Privileges can be granted and revoked from other players by any player who has the privilege called “privs”.=Każdy gracz ma zbiór przywilejów, które są różne w zależności od serwera. Twoje przywileje definiują co możesz, a czego nie możesz robić. Przywileje mogą być nadane i odebrane przez dowolnego gracza, który ma przywilej "privs". +On a multiplayer server with the default configuration, new players start with the privileges called “interact” and “shout”. The “interact” privilege is required for the most basic gameplay actions such as building, mining, using, etc. The “shout” privilege allows to chat.=Na serwerze z domyślną konfiguracją nowi gracze zaczynają z przywilejami "interact" oraz "shout". Przywilej "interact" pozwala na podstawowe akcje gry takie jak budowanie, kopanie, używanie itp. Przywilej "shout" pozwala na używanie czatu. +There is a small set of core privileges which you'll find on every server, other privileges might be added by mods.=Mały zbiór bazowych przywilejów znajdziesz na każdym serwerze, inne przywileje mogą zostać dodane przez mody. +To view your own privileges, issue the server command “/privs”.=Aby zobaczyć swoje przywileje, użyj komendy serwera "/privs". +Here are a few basic privilege-related commands:=Oto kilka podstawowych komend związanych z przywilejami: +• /privs: Lists your privileges=• /privs: Pokazuje twoje przywileje +• /privs : Lists the privileges of =• /privs : Pokazuje przywileje +• /help privs: Shows a list and description about all privileges=• /help privs: Pokazuje listę i opis wszystkich przywilejów +Players with the “privs” privilege can modify privileges at will:=Gracze z przywilejem "privs" mogą zmieniać przywileje jak chcą: +• /grant : Grant to =• /grant : Nadal +• /revoke : Revoke from =• /revoke : Odbierz +In single-player mode, you can use “/grantme all” to unlock all abilities.=W trybie jednoosobowym możesz użyć "/grantme all" aby odblokować wszystkie umiejętności. +Light=Światło +As the world is entirely block-based, so is the light in the world. Each block has its own brightness. The brightness of a block is expressed in a “light level” which ranges from 0 (total darkness) to 15 (as bright as the sun).=Jako, że świat jest całkowicie oparty na blokach, jest tak również w przypadku światła. Każdy blok ma swoją własną jasność. Jasność bloku jest wyrażona w "poziomie oświetlenia", który przyjmuje wartości od 0 (zupełnie ciemny) do 15 (jasny jak słońce). +There are two types of light: Sunlight and artificial light.=Są dwa typy światła: słoneczne oraz sztuczne. +Artificial light is emitted by luminous blocks. Artificial light has a light level from 1-14.=Światło sztuczne jest emitowane przez oświetlające bloki. Sztuczne światło ma poziom oświetlenia od 1 do 14. +Sunlight is the brightest light and always goes perfectly straight down from the sky at each time of the day. At night, the sunlight will become moonlight instead, which still provides a small amount of light. The light level of sunlight is 15.=Światło słoneczne jest najjaśniejszym światłem i zawsze świeci bezpośrednio w dół w trakcie dnia. W nocy światło to zamieni się w księżycowe, które wciąż daje niewielką ilość światła. Poziom oświetlenia słonecznego jest równy 15. +Blocks have 3 levels of transparency:=Bloki mają 3 poziomy przeźroczystości: +• Transparent: Sunlight goes through limitless, artificial light goes through with losses=• Przeźroczysty: Światło słoneczne przenika bez strat, sztuczne przenika ze spadkiem +• Semi-transparent: Sunlight and artificial light go through with losses=• Półprzeźroczysty: Światło słoneczne i sztuczne przenika ze stratą jasności +• Opaque: No light passes through=• Nieprzeźroczysty: Światło nie przenika +Artificial light will lose one level of brightness for each transparent or semi-transparent block it passes through, until only darkness remains (image 1).=Światło sztuczne będzie traciło jeden poziom jasności z każdym przeźroczystym lub nieprzeźroczystym blokiem przez który przenika, dopóki nie pozostanie tylko ciemność (obrazek 1). +Sunlight will preserve its brightness as long it only passes fully transparent blocks. When it passes through a semi-transparent block, it turns to artificial light. Image 2 shows the difference.=Światło słoneczne zachowuje swoją jasność tak długo jak przenika tylko przez w pełni przeźroczyste bloki. Gdy przenika przez półprzeźroczyste bloki, zamienia się w światło sztuczne. Obrazek 2 pokazuje różnicy. +Note that “transparency” here only means that the block is able to carry brightness from its neighboring blocks. It is possible for a block to be transparent to light but you can't see trough the other side.=Zwróć uwagę, że "przeźroczystość" odnosi się tutaj tylko do możliwości przenoszenia poziomu oświetlenia z sąsiednich bloków. Jest możliwe by blok był przeźroczysty dla światła, ale nie będziesz w stanie przez niego zobaczyć. +Coordinates=Współrzędne +The world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.=Świat jest wielką kostką. I z tego powodu pozycja w świecie może być łatwo wyrażona we współrzędnych kartezjańskich. To oznacza, że dla każdej pozycji na świecie są 3 wartości X, Y oraz Z. +Like this: (5, 45, -12)=Na przykład: (5, 45, -12) +This refers to the position where X@=5, Y@=45 and Z@=-12. The 3 letters are called “axes”: Y is for the height. X and Z are for the horizontal position.=To opisuje pozycje w której X@=5, Y@=45 i Z@=-12. Te 3 litery nazywamy "osiami": Y jest wysokością, X i Z są dla pozycji poziomej. +The values for X, Y and Z work like this:=Wartości dla X, Y i Z działają następująco: +• If you go up, Y increases=• Jeśli pójdziesz w górę, Y się zwiększy +• If you go down, Y decreases=• Jeśli pójdziesz w dół, Y się zmniejszy +• If you follow the sun, X increases=• Jeśli podążysz za słońcem, X się zwiększy +• If you go to the reverse direction, X decreases=• Jeśli pójdziesz w przeciwnym kierunku, X się zmniejszy +• Follow the sun, then go right: Z increases=• Podążaj za słońcem następnie, w prawo: Z się zwiększy +• Follow the sun, then go left: Z decreases=• Podążaj za słońcem następnie, w lewo: Z się zmniejszy +• The side length of a full cube is 1=• Długość boku jednego sześcianu wynosi 1 +You can view your current position in the debug screen (open with [F5]).=Możesz zobaczyć swoją aktualną pozycję na ekranie debug (otwórz go naciskając [F5]). + +# MCL2 extensions +Creative Mode=Tryb kreatywny +Enabling Creative Mode in MineClone 2 applies the following changes:=Włączenie trybu kreatywnego w MineClone 2 aplikuje następujące zmiany: +• You keep the things you've placed=• Nie tracisz postawionych rzeczy +• Creative inventory is available to obtain most items easily=• Kreatywny ekwipunek jest dostępny, który pozwala łatwo zdobywać przedmioty +• Hand breaks all default blocks instantly=• Ręka niszczy wszystkie domyślne bloki natychmiastowo +• Greatly increased hand pointing range=• Znacząco zwiększony zasięg reki +• Mined blocks don't drop items=• Wykopane bloki nie wyrzucają zrzutu +• Items don't get used up=• Przedmioty nie zużywają się +• Tools don't wear off=• Narzędzie nie niszczą się +• You can eat food whenever you want=• Możesz jeść jedzenie kiedy tylko chcesz +• You can always use the minimap (including radar mode)=• Zawsze możesz korzystać z minimapy (włączając w to tryb radaru) +Damage is not affected by Creative Mode, it needs to be disabled separately.=Tryb kreatywny nie ma wpływu na obrażenia, muszą być wyłączone osobno. +Mobs=Moby +Mobs are the living beings in the world. This includes animals and monsters.=Moby są żyjącymi stworzeniami w świecie. To między innymi zwierzęta i potwory. +Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some mobs only spawn on particular blocks (like grass blocks).=Moby pojawiają się losowo w świecie. Nazywamy to "spawnowaniem". Każdy mob pojawia się na pewnym typie bloku przy pewnym poziomie oświetlenia. Wysokość również ma znaczenie. Spokojne moby najczęściej spawnują się w świetle, podczas gdy wrogie preferują ciemność. Większość mobów spawnuje się na dowolnym stałym bloku, ale niektóre moby spawnują się tylko na konkretnych blokach (np. blokach trawy). +Like players, mobs have hit points and sometimes armor points, too (which means you need better weapons to deal any damage at all). Also like players, hostile mobs can attack directly or at a distance. Mobs may drop random items after they die.=Podobnie jak gracze, moby mają punkty życia, a czasami również zbroi (co oznacza, że będziesz potrzebował lepszych broni by zadać im obrażenia). Również podobnie jak gracze wrogie moby mogą atakować bezpośrednio lub z dystansu. Moby mogą wyrzucać losowe przedmioty przy śmierci. +Most animals roam the world aimlessly while most hostile mobs hunt players. Animals can be fed, tamed and bred.=Większość zwierząt przemieszcza się po świecie bez celu, a większość wrogich mobów poluje na gracza. Zwierzęta mogą być karmione, oswajane i rozmnażane. +Animals=Zwierzęta +Animals are peaceful beings which roam the world aimlessly. You can feed, tame and breed them.=Zwierzęta są spokojnymi mobami, które przemierzają świat bez celu. Mogą być karmione, oswajane i rozmnażane. +Feeding:=Karmienie: +Each animal has its own taste for food and doesn't just accept any food. To feed, hold an item in your hand and rightclick the animal.=Każde zwierzę ma swój własny gust w jedzeniu i nie przyjmuje byle czego. Aby nakarmić, weź przedmiot do swojej ręki i kliknij prawym przyciskiem na zwierzę. +Animals are attraced to the food they like and follow you as long you hold the food item in hand.=Zwierzęta są przyciągane do jedzenia które lubią i będą za tobą podążać tak długo jak będziesz je trzymała w dłoni. +Feeding an animal has three uses: Taming, healing and breeding.=Karmienie zwierząt a trzy zastosowania: Oswajanie, uzdrawianie i rozmnażanie. +Feeding heals animals instantly, depending on the quality of the food item.=Karmienie natychmiast uzdrawia zwierzęta w zależności od jakości. +Taming:=Oswajanie +A few animals can be tamed. You can generally do more things with tamed animals and use other items on them. For example, tame horses can be saddled and tame wolves fight on your side.=Niektóre zwierzęta mogą być oswojony. Z oswojonymi zwierzętami możesz zwykle robić więcej rzeczy i używać na nich dodatkowych przedmiotów. Przykładowo oswojone konie mogą być osiodłane, a oswojone wilki walczą po twojej stronie. +Breeding:=Rozmnażanie +When you have fed an animal up to its maximum health, then feed it again, you will activate “Love Mode” and many hearts appear around the animal.=Gdy nakarmisz zwierzę do pełnego zdrowia, a następnie nakarmisz je jeszcze raz, aktywujesz "tryb miłości" i wiele serc pojawi się wokół zwierzęcia. +Two animals of the same species will start to breed if they are in Love Mode and close to each other. Soon a baby animal will pop up.=Dwa zwierzęta tego samego gatunku będą się rozmnażać jeśli są blisko siebie i w trybie miłości. Wkrótce potem pojawi się dziecko zwierzątko. +Baby animals:=Dzieci zwierzątka +Baby animals are just like their adult couterparts, but they can't be tamed or bred and don't drop anything when they die. They grow to adults after a short time. When fed, they grow to adults faster.=Dzieci zwierzątka są takie jak ich dorosłe odpowiedniki, jednak nie mogą być oswojone i rozmnażane oraz nie wyrzucają niczego gdy umierają. Po pewnym czasie wyrastają w dorosłe zwierze. Gdy są karmione wyrastają szybciej. +Hunger=Głód +Hunger affects your health and your ability to sprint. Hunger is not in effect when damage is disabled.=Głód wpływa na twoje zdrowie i możliwość biegania. Głód jest wyłączony gdy obrażenia są wyłączone. +Core hunger rules:=Główne zasady głodu: +• You start with 20/20 hunger points (more points @= less hungry)=• Zaczynasz z 20/20 punktami głodu (więcej punktów @= mniej głodna) +• Actions like combat, jumping, sprinting, etc. decrease hunger points=• Akcje takie jak walka, skakanie, bieganie itp. zmniejszają liczbę punktów głodu +• Food restores hunger points=• Jedzenie przywraca punkty głodu +• If your hunger bar decreases, you're hungry=• Jeśli twój pasek głodu zmniejsza się, staniesz się głodna +• At 18-20 hunger points, you regenerate 1 HP every 4 seconds=• Przy 18-20 punktach głodu, będziesz regenerował 1 HP co 4 sekundy +• At 6 hunger points or less, you can't sprint=• Przy 6 punktach głodu i mniej, nie możesz biegać +• At 0 hunger points, you lose 1 HP every 4 seconds (down to 1 HP)=• Przy 0 punktach głodu i mniej, tracisz 1 HP co 4 sekundy +• Poisonous food decreases your health=• Trujące jedzenie zmniejsza twoje zdrowie +Details:=Szczegóły: +You have 0-20 hunger points, indicated by 20 drumstick half-icons above the hotbar. You also have an invisible attribute: Saturation.=Masz 0-20 punktów głodu, oznaczanych przez 20 pałek pół-ikon nad paskiem szybkiego dostępu. Posiadasz również niewidzialną własność: Nasycenie. +Hunger points reflect how full you are while saturation points reflect how long it takes until you're hungry again.=Punkty głodu pokazują jak pełna jesteś, podczas gdy punkty nasycenia mówią jak długo zajmie zanim znów będziesz głodna. +Each food item increases both your hunger level as well your saturation.=Każde jedzenie zwiększa zarówno twój poziom głodu jak i nasycenia. +Food with a high saturation boost has the advantage that it will take longer until you get hungry again.=Jedzenie z większym wzrostem nasycenia ma tę przewagę, że sprawi, że dłużej zajmie zanim znów będziesz głodna. +A few food items might induce food poisoning by chance. When you're poisoned, the health and hunger symbols turn sickly green. Food poisoning drains your health by 1 HP per second, down to 1 HP. Food poisoning also drains your saturation. Food poisoning goes away after a while or when you drink milk.=Niektóre jedzenia mogą losowo wywołać zatrucie pokarmowe. Gdy jesteś otruta symbole życia i głodu zmienią kolor na zgniło-zielony. Zatrucie pokarmowe zmniejsza twoje życie o 1 HP na sekundę aż do 1 hp. Zmniejsza ono również twoje nasycenie. Zatrucie pokarmowe przechodzi po chwili lub gdy wypijesz mleko. +You start with 5 saturation points. The maximum saturation is equal to your current hunger level. So with 20 hunger points your maximum saturation is 20. What this means is that food items which restore many saturation points are more effective the more hunger points you have. This is because at low hunger levels, a lot of the saturation boost will be lost due to the low saturation cap.=Zaczynasz z 5 punktami nasycenia. Maksymalne nasycenie jest równe twojemu aktualnemu poziomowi głodu. Więc z 20 punktami głodu, twój maksymalny poziom nasycenia to 20. To oznacza, że jedzenie które zwiększa nasycenie jest bardziej efektywne im więcej punktów głodu masz. Jest tak ponieważ na niskich poziomach głodu spora część zwiększenia nasycenia zostanie stracona przez niski poziom maksymalny. +If your saturation reaches 0, you're hungry and start to lose hunger points. Whenever you see the hunger bar decrease, it is a good time to eat.=Gdy twój poziom nasycenia spadnie do 0 stajesz się głodna i zaczynasz tracić punkty głodu. Gdy widzisz, że twój pasek głodu zmniejsza się, to jest to dobry moment na jedzenie. +Saturation decreases by doing things which exhaust you (highest exhaustion first):=Nasycenie zmniejsza się gdy robisz rzeczy, które cię męczą (w kolejności od najbardziej męczącego): +• Regenerating 1 HP=• Odnowienie 1 HP +• Suffering food poisoning=• Zatrucie pokarmowe +• Sprint-jumping=• Skakanie podczas biegu +• Sprinting=• Bieganie +• Attacking=• Atakowanie +• Taking damage=• Otrzymywanie obrażeń +• Swimming=• Pływanie +• Jumping=• Skakanie +• Mining a block=• Kopanie bloku +Other actions, like walking, do not exaust you.=Inne akcje takie jak chodzenie nie męczą cię. +If you have a map item in any of your hotbar slots, you can use the minimap.=Jeśli masz przedmiot mapy w swoim pasku szybkiego dostępu możesz korzystać z minimapy. + diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index d461bbdc4..f70d60109 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -45,8 +45,70 @@ doc_identifier help_reveal doc_items doc_encyclopedia +F1 +shout +Minetesta +voxelach +InfiniMinera +F10 +F9 +celeron55 +F2 +Ahola +debug +Perttu +F8 +F3 +F7 +F5 +F12 +noclip +F6 +https +viewforum +php +minetest Houstonia +wskazywalna +MineClone +voxeli +niewskazywalne +wskazywalnych +github +Wuzzy2 +MineClone2 +Minetestem +freenode +irc +Bugs +viewtopic +forums iskrzyłuda +Spawnowanie +Griefowanie +PvP +enable_pvp +creative_mode +msg +enable_damage +boats +privs +give +tekst3 +tekst1 +tekst2 +słowo1 +słowo2 +słowo3 +slesz +giveme +spawnentity +spawnowaniem +grantme +interact +spawnuje +revoke +spawnują Iskrzyłuda iskrzyłudzie jasnogłazie From 1de0009cc6cb85046dd31ede41d737a3d126d4e7 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Fri, 28 May 2021 17:32:38 +0200 Subject: [PATCH 116/720] Add missing polish translation of mcl_achievements --- mods/HUD/mcl_achievements/locale/mcl_achievements.pl.tr | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/HUD/mcl_achievements/locale/mcl_achievements.pl.tr b/mods/HUD/mcl_achievements/locale/mcl_achievements.pl.tr index 93c2d272e..78ab53f82 100644 --- a/mods/HUD/mcl_achievements/locale/mcl_achievements.pl.tr +++ b/mods/HUD/mcl_achievements/locale/mcl_achievements.pl.tr @@ -9,6 +9,7 @@ Craft a crafting table from 4 wooden planks.=Wytwórz stół rzemieślniczy z 4 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! +Delicious Fish=Pyszna ryba Dispense With This=Dozuj to Eat a cooked porkchop.=Zjedz upieczony kotlet. Eat a cooked rabbit.=Zjedz pieczonego królika. From 362965f8fb57c27247a8708df055b05eeb702061 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Fri, 28 May 2021 17:32:48 +0200 Subject: [PATCH 117/720] Add polish translation of mcl_hbarmor --- mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.pl.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.pl.tr diff --git a/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.pl.tr b/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.pl.tr new file mode 100644 index 000000000..ff43d7e81 --- /dev/null +++ b/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.pl.tr @@ -0,0 +1,3 @@ +# textdomain:hbarmor +Armor=Zbroja + From 8ad953ab1797671c47f6c812d43fdcbf2816b532 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Fri, 28 May 2021 18:25:16 +0200 Subject: [PATCH 118/720] Add polish translation of mcl_nether --- mods/ITEMS/mcl_nether/locale/mcl_nether.pl.tr | 42 +++++++++++++++++++ tools/dicts/polish.dic | 5 +++ 2 files changed, 47 insertions(+) create mode 100644 mods/ITEMS/mcl_nether/locale/mcl_nether.pl.tr diff --git a/mods/ITEMS/mcl_nether/locale/mcl_nether.pl.tr b/mods/ITEMS/mcl_nether/locale/mcl_nether.pl.tr new file mode 100644 index 000000000..fe797a63c --- /dev/null +++ b/mods/ITEMS/mcl_nether/locale/mcl_nether.pl.tr @@ -0,0 +1,42 @@ +# textdomain: mcl_nether +Glowstone=Jasnogłaz +Glowstone is a naturally-glowing block which is home to the Nether.=Jasnogłaz jest naturalnie świecącym blokiem, występującym w Netherze. +Nether Quartz Ore=Ruda Netherowego kwarcu +Nether quartz ore is an ore containing nether quartz. It is commonly found around netherrack in the Nether.=Ruda Netherowego kwarcu jest rudą zawierającą Netherowy kwarc. Występuje często nieopodal skał Netheru. +Netherrack=Skała Netheru +Netherrack is a stone-like block home to the Nether. Starting a fire on this block will create an eternal fire.=Skała Netheru jest blokiem podobnym do kamienia występującym w Netherze. +Magma Block=Blok magmy +Magma blocks are hot solid blocks which hurt anyone standing on it, unless they have fire resistance. Starting a fire on this block will create an eternal fire.=Bloki magmy są gorącymi stałymi blokami, które ranią każdego kto na nich stanie, chyba, że mają odporność na ogień. Rozpalenie ognia na tym bloku stworzy wieczny ogień. +@1 stood too long on a magma block.=@1 zbyt długo stała na bloku magmy. +Soul Sand=Piasek dusz +Soul sand is a block from the Nether. One can only slowly walk on soul sand. The slowing effect is amplified when the soul sand is on top of ice, packed ice or a slime block.=Piasek dusz jest blokiem z Netheru. Można na nim tylko chodzić powoli. Efekt spowolnienia jest mocniejszy gdy piasek dusz jest położony na lodzie, zbitym lodzi lub bloku szlamu. +Nether Brick Block=Blok Netherowych cegieł +Red Nether Brick Block=Blok czerwonych Netherowych cegieł +Nether Wart Block=Blok Netherowej brodawki +A nether wart block is a purely decorative block made from nether wart.=Blok Netherowej brodawki jest dekoracyjnym blokiem utworzonym z Netherowej brodawki. +Block of Quartz=Blok kwarcu +Chiseled Quartz Block=Rzeźbiony blok kwarcu +Pillar Quartz Block=Filarowy blok kwarcu +Smooth Quartz=Gładki kwarc +Glowstone Dust=Pył jasnogłazu +Glowstone dust is the dust which comes out of broken glowstones. It is mainly used in crafting.=Pył jasnogłazu to pył wyrzucany przez rozbite jasnogłazy. Jest głównie wykorzystywany w wytwarzaniu. +Nether Quartz=Netherowy kwarc +Nether quartz is a versatile crafting ingredient.=Netherowy kwarc jest wszechstronnym przedmiotem użytecznym w wytwarzaniu. +Nether Brick=Netherowa cegła +Nether bricks are the main crafting ingredient for crafting nether brick blocks and nether fences.=Netherowe cegły są głównym składnikiem do wytwarzania bloków Netherowej cegły oraz Netherowych ogrodzeń. +Nether Lava Source=Netherowe źródło lawy +Flowing Nether Lava=Płynąca Netherowa lawa +Premature Nether Wart (Stage 1)=Niedojrzała Netherowa brodawka (Etap 1) +A premature nether wart has just recently been planted on soul sand. Nether wart slowly grows on soul sand in 4 stages (the second and third stages look identical). Although nether wart is home to the Nether, it grows in any dimension.=Niedojrzała Netherowa brodawka to brodawka, która niedawno została zasadzona na piasku dusz. Netherowa brodawka rośnie na piasku dusz w 4 etapach (drugi i trzeci wyglądają identycznie). Pomimo tego, że brodawki te naturalnie występują tylko w Netherze, mogą one rosnąć w każdym wymiarze. +Premature Nether Wart (Stage 2)=Niedojrzała Netherowa brodawka (Etap 2) +Premature Nether Wart (Stage 3)=Niedojrzała Netherowa brodawka (Etap 3) +Mature Nether Wart=Dojrzała Netherowa brodawka +The mature nether wart is a plant from the Nether and reached its full size and won't grow any further. It is ready to be harvested for its items.=Dojrzała Netherowa brodawka jest rośliną z Netheru, która osiągnęła swój maksymalny rozmiar i nie urośnie więcej. Jest gotowa do zebrania dla swojego zrzutu. +Nether Wart=Netherowa brodawka +Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 4 stages.=Netherowe brodawki to rośliny występujące w Netherze. Mogą być posadzone na piasku dusz i wyrosną w 4 fazach. +Place this item on soul sand to plant it and watch it grow.=Postaw ten przedmiot na piasku dusz aby zasadzić go i patrz jak rośnie. +Burns your feet=Pali w stopy +Grows on soul sand=Rośnie na piasku dusz +Reduces walking speed=Zmniejsza prędkość poruszania +@1 has become one with the lava.=@1 stała się jednym z lawą +@1 has been consumed by the lava.=@1 została skonsumowana przez lawę diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index f70d60109..4ce3b2bba 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -109,6 +109,11 @@ interact spawnuje revoke spawnują +jasnogłazu +Netherowego +Netherowych +Netherowy +jasnogłazy Iskrzyłuda iskrzyłudzie jasnogłazie From 0d619ec6a831baffcf7bb6b5b1ca2a81eea65b30 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 28 May 2021 17:26:00 +0000 Subject: [PATCH 119/720] Make vine 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 ceaef6346..fc8dbcd51 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) if node.name == "mcl_core:cobweb" then return 0 end + if node.name == "mcl_core:vine" then + return 0 + end end pos = vector.add(pos, step) node = minetest.get_node(pos) From 91ae3208bd6db7adf74e2b4e9af56617f400eeb1 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 29 May 2021 08:51:38 +0000 Subject: [PATCH 120/720] Fix typo on settingtypes.txt --- settingtypes.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settingtypes.txt b/settingtypes.txt index 78a8122b5..ea1c1a50a 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -1,4 +1,4 @@ -# This file contains settings of MineClone 2that can be changed in +# This file contains settings of MineClone 2 that can be changed in # minetest.conf [World] From ec542a142a6d6f4087b2f13c48a9583b737115ff Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 29 May 2021 08:56:11 +0000 Subject: [PATCH 121/720] Improve pumkin hud a bit --- mods/ITEMS/mcl_farming/pumpkin.lua | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 50e6a7970..14b08f681 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -124,8 +124,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 function add_pumpkin_hud(player) - local name = player:get_player_name() - pumpkin_hud[name] = { + pumpkin_hud[player] = { pumpkin_blur = player:hud_add({ hud_elem_type = "image", position = {x = 0.5, y = 0.5}, @@ -145,11 +144,10 @@ if minetest.get_modpath("mcl_armor") then } end 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) - player:hud_remove(pumpkin_hud[name].fake_crosshair) - pumpkin_hud[name] = nil + if pumpkin_hud[player] then + player:hud_remove(pumpkin_hud[player].pumpkin_blur) + player:hud_remove(pumpkin_hud[player].fake_crosshair) + pumpkin_hud[player] = nil end end @@ -166,7 +164,7 @@ if minetest.get_modpath("mcl_armor") then remove_pumpkin_hud(player) end) minetest.register_on_leaveplayer(function(player) - remove_pumpkin_hud(player) + pumpkin_hud[player] = nil end) end From cd33d406b2658db0d3563b57892c2d923f22d24e Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 29 May 2021 16:12:33 +0200 Subject: [PATCH 122/720] fix many codestyle issues (functions, strings, modpaths) --- mods/CORE/_mcl_autogroup/init.lua | 2 +- mods/CORE/controls/init.lua | 58 +- mods/CORE/mcl_explosions/init.lua | 16 +- mods/CORE/mcl_worlds/init.lua | 20 +- mods/CORE/walkover/init.lua | 5 +- mods/ENTITIES/mcl_boats/init.lua | 4 +- mods/ENTITIES/mcl_burning/init.lua | 11 +- mods/ENTITIES/mcl_item_entity/init.lua | 10 +- mods/ENTITIES/mcl_minecarts/init.lua | 11 +- mods/ENTITIES/mcl_minecarts/rails.lua | 10 +- mods/ENTITIES/mcl_mobs/api/api.lua | 4 +- .../mcl_mobs/api/mob_functions/ai.lua | 2 +- .../attack_type_instructions.lua | 5 +- .../api/mob_functions/projectile_handling.lua | 3 +- mods/ENTITIES/mcl_mobs/api/spawning.lua | 14 +- mods/ENTITIES/mcl_mobs/crafts.lua | 2 +- mods/ENTITIES/mcl_paintings/init.lua | 5 +- mods/ENTITIES/mobs_mc/1_items_default.lua | 6 +- mods/ENTITIES/mobs_mc/2_throwing.lua | 20 +- mods/ENTITIES/mobs_mc/4_heads.lua | 2 +- mods/ENTITIES/mobs_mc/agent.lua | 2 +- mods/ENTITIES/mobs_mc/bat.lua | 2 +- mods/ENTITIES/mobs_mc/blaze.lua | 2 +- mods/ENTITIES/mobs_mc/chicken.lua | 2 +- mods/ENTITIES/mobs_mc/cow+mooshroom.lua | 2 +- mods/ENTITIES/mobs_mc/creeper.lua | 10 +- mods/ENTITIES/mobs_mc/ender_dragon.lua | 2 +- mods/ENTITIES/mobs_mc/enderman.lua | 24 +- mods/ENTITIES/mobs_mc/endermite.lua | 2 +- mods/ENTITIES/mobs_mc/ghast.lua | 2 +- mods/ENTITIES/mobs_mc/guardian.lua | 2 +- mods/ENTITIES/mobs_mc/guardian_elder.lua | 2 +- mods/ENTITIES/mobs_mc/horse.lua | 2 +- mods/ENTITIES/mobs_mc/init.lua | 2 +- mods/ENTITIES/mobs_mc/iron_golem.lua | 2 +- mods/ENTITIES/mobs_mc/llama.lua | 2 +- mods/ENTITIES/mobs_mc/ocelot.lua | 2 +- mods/ENTITIES/mobs_mc/parrot.lua | 2 +- mods/ENTITIES/mobs_mc/pig.lua | 2 +- mods/ENTITIES/mobs_mc/polar_bear.lua | 2 +- mods/ENTITIES/mobs_mc/rabbit.lua | 2 +- mods/ENTITIES/mobs_mc/sheep.lua | 4 +- mods/ENTITIES/mobs_mc/shulker.lua | 2 +- mods/ENTITIES/mobs_mc/silverfish.lua | 12 +- mods/ENTITIES/mobs_mc/skeleton+stray.lua | 4 +- mods/ENTITIES/mobs_mc/skeleton_wither.lua | 2 +- mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 6 +- mods/ENTITIES/mobs_mc/snowman.lua | 4 +- mods/ENTITIES/mobs_mc/spider.lua | 2 +- mods/ENTITIES/mobs_mc/squid.lua | 2 +- mods/ENTITIES/mobs_mc/vex.lua | 2 +- mods/ENTITIES/mobs_mc/villager.lua | 2 +- mods/ENTITIES/mobs_mc/villager_evoker.lua | 2 +- mods/ENTITIES/mobs_mc/villager_illusioner.lua | 4 +- mods/ENTITIES/mobs_mc/villager_vindicator.lua | 2 +- mods/ENTITIES/mobs_mc/villager_zombie.lua | 2 +- mods/ENTITIES/mobs_mc/witch.lua | 2 +- mods/ENTITIES/mobs_mc/wither.lua | 2 +- mods/ENTITIES/mobs_mc/wolf.lua | 2 +- mods/ENTITIES/mobs_mc/zombie.lua | 2 +- mods/ENTITIES/mobs_mc/zombiepig.lua | 2 +- mods/ENVIRONMENT/mcl_void_damage/init.lua | 2 +- mods/ENVIRONMENT/mcl_weather/init.lua | 4 +- mods/ENVIRONMENT/mcl_weather/rain.lua | 10 +- mods/ENVIRONMENT/mcl_weather/weather_core.lua | 10 +- mods/HELP/doc/doc/init.lua | 52 +- mods/HELP/doc/doc_identifier/init.lua | 22 +- mods/HELP/doc/doc_items/init.lua | 128 +- mods/HELP/mcl_doc/init.lua | 10 +- mods/HELP/mcl_doc_basics/init.lua | 2 +- mods/HELP/mcl_doc_basics/mcl_extension.lua | 2 +- mods/HELP/mcl_tt/init.lua | 6 +- mods/HELP/mcl_tt/snippets_base.lua | 2 +- mods/HELP/mcl_tt/snippets_mcl.lua | 2 +- mods/HELP/tt/init.lua | 2 +- mods/HUD/awards/api.lua | 13 +- mods/HUD/awards/chat_commands.lua | 2 +- mods/HUD/awards/init.lua | 12 +- mods/HUD/awards/sfinv.lua | 2 +- mods/HUD/awards/triggers.lua | 4 +- mods/HUD/hudbars/default_settings.lua | 2 +- mods/HUD/hudbars/init.lua | 34 +- mods/HUD/mcl_achievements/init.lua | 2 +- mods/HUD/mcl_death_messages/init.lua | 2 +- mods/HUD/mcl_experience/init.lua | 2 +- mods/HUD/mcl_hbarmor/init.lua | 2 +- mods/HUD/mcl_inventory/creative.lua | 304 +++-- mods/HUD/mcl_inventory/init.lua | 6 +- mods/HUD/show_wielded_item/init.lua | 8 +- mods/ITEMS/REDSTONE/mcl_comparators/init.lua | 30 +- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 13 +- mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 12 +- mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua | 20 +- mods/ITEMS/REDSTONE/mcl_observers/init.lua | 2 +- mods/ITEMS/REDSTONE/mesecons/actionqueue.lua | 6 +- mods/ITEMS/REDSTONE/mesecons/internal.lua | 6 +- mods/ITEMS/REDSTONE/mesecons_button/init.lua | 10 +- .../REDSTONE/mesecons_commandblock/init.lua | 26 +- .../REDSTONE/mesecons_commandblock/mod.conf | 2 +- mods/ITEMS/REDSTONE/mesecons_delayer/init.lua | 14 +- .../REDSTONE/mesecons_lightstone/init.lua | 12 +- .../REDSTONE/mesecons_noteblock/init.lua | 21 +- mods/ITEMS/REDSTONE/mesecons_pistons/init.lua | 4 +- .../REDSTONE/mesecons_pressureplates/init.lua | 2 +- .../REDSTONE/mesecons_solarpanel/init.lua | 10 +- mods/ITEMS/REDSTONE/mesecons_torch/init.lua | 26 +- .../REDSTONE/mesecons_walllever/init.lua | 16 +- mods/ITEMS/REDSTONE/mesecons_wires/init.lua | 12 +- mods/ITEMS/mcl_anvils/init.lua | 4 +- mods/ITEMS/mcl_armor/init.lua | 2 +- mods/ITEMS/mcl_armor/register.lua | 2 +- mods/ITEMS/mcl_armor_stand/init.lua | 2 +- mods/ITEMS/mcl_banners/init.lua | 19 +- mods/ITEMS/mcl_banners/patterncraft.lua | 2 +- mods/ITEMS/mcl_beds/api.lua | 2 +- mods/ITEMS/mcl_beds/beds.lua | 2 +- mods/ITEMS/mcl_beds/functions.lua | 23 +- mods/ITEMS/mcl_books/init.lua | 16 +- mods/ITEMS/mcl_bows/arrow.lua | 28 +- mods/ITEMS/mcl_bows/bow.lua | 20 +- mods/ITEMS/mcl_buckets/init.lua | 12 +- mods/ITEMS/mcl_buckets/register.lua | 4 +- mods/ITEMS/mcl_cake/init.lua | 12 +- mods/ITEMS/mcl_cauldrons/init.lua | 2 +- mods/ITEMS/mcl_chests/init.lua | 1110 ++++++++--------- mods/ITEMS/mcl_clock/init.lua | 10 +- mods/ITEMS/mcl_cocoas/init.lua | 2 +- mods/ITEMS/mcl_colorblocks/init.lua | 18 +- mods/ITEMS/mcl_compass/init.lua | 12 +- mods/ITEMS/mcl_core/crafting.lua | 210 ++-- mods/ITEMS/mcl_core/craftitems.lua | 2 +- mods/ITEMS/mcl_core/functions.lua | 43 +- mods/ITEMS/mcl_core/init.lua | 2 +- mods/ITEMS/mcl_core/nodes_base.lua | 44 +- mods/ITEMS/mcl_core/nodes_cactuscane.lua | 2 +- mods/ITEMS/mcl_core/nodes_climb.lua | 2 +- mods/ITEMS/mcl_core/nodes_glass.lua | 10 +- mods/ITEMS/mcl_core/nodes_liquid.lua | 12 +- mods/ITEMS/mcl_core/nodes_misc.lua | 10 +- mods/ITEMS/mcl_core/nodes_trees.lua | 7 +- mods/ITEMS/mcl_crafting_table/init.lua | 2 +- mods/ITEMS/mcl_doors/api_doors.lua | 2 +- mods/ITEMS/mcl_doors/api_trapdoors.lua | 2 +- mods/ITEMS/mcl_doors/register.lua | 8 +- mods/ITEMS/mcl_dye/init.lua | 28 +- mods/ITEMS/mcl_enchanting/enchantments.lua | 2 +- mods/ITEMS/mcl_enchanting/engine.lua | 2 +- mods/ITEMS/mcl_enchanting/init.lua | 7 +- mods/ITEMS/mcl_end/building.lua | 5 +- mods/ITEMS/mcl_end/chorus_plant.lua | 9 +- mods/ITEMS/mcl_end/end_crystal.lua | 2 +- mods/ITEMS/mcl_end/eye_of_ender.lua | 2 +- mods/ITEMS/mcl_farming/beetroot.lua | 2 +- mods/ITEMS/mcl_farming/carrots.lua | 18 +- mods/ITEMS/mcl_farming/hoes.lua | 2 +- mods/ITEMS/mcl_farming/melon.lua | 20 +- mods/ITEMS/mcl_farming/potatoes.lua | 14 +- mods/ITEMS/mcl_farming/pumpkin.lua | 5 +- mods/ITEMS/mcl_farming/shared_functions.lua | 14 +- mods/ITEMS/mcl_farming/soil.lua | 4 +- mods/ITEMS/mcl_farming/wheat.lua | 28 +- mods/ITEMS/mcl_fences/init.lua | 18 +- mods/ITEMS/mcl_fire/fire_charge.lua | 17 +- mods/ITEMS/mcl_fire/flint_and_steel.lua | 16 +- mods/ITEMS/mcl_fire/init.lua | 19 +- mods/ITEMS/mcl_fire/mod.conf | 2 +- mods/ITEMS/mcl_fireworks/register.lua | 2 +- mods/ITEMS/mcl_fishing/init.lua | 16 +- mods/ITEMS/mcl_flowerpots/init.lua | 10 +- mods/ITEMS/mcl_flowers/init.lua | 55 +- mods/ITEMS/mcl_flowers/register.lua | 2 +- mods/ITEMS/mcl_furnaces/init.lua | 14 +- mods/ITEMS/mcl_heads/init.lua | 2 +- mods/ITEMS/mcl_hoppers/init.lua | 2 +- mods/ITEMS/mcl_itemframes/init.lua | 26 +- mods/ITEMS/mcl_jukebox/init.lua | 35 +- mods/ITEMS/mcl_maps/init.lua | 35 +- mods/ITEMS/mcl_mobitems/init.lua | 6 +- mods/ITEMS/mcl_mobspawners/init.lua | 6 +- mods/ITEMS/mcl_monster_eggs/init.lua | 8 +- mods/ITEMS/mcl_mushrooms/huge.lua | 18 +- mods/ITEMS/mcl_mushrooms/small.lua | 4 +- mods/ITEMS/mcl_nether/init.lua | 55 +- mods/ITEMS/mcl_nether/nether_wart.lua | 6 +- mods/ITEMS/mcl_ocean/corals.lua | 4 +- mods/ITEMS/mcl_ocean/kelp.lua | 6 +- mods/ITEMS/mcl_ocean/prismarine.lua | 36 +- mods/ITEMS/mcl_ocean/sea_pickle.lua | 5 +- mods/ITEMS/mcl_ocean/seagrass.lua | 5 +- mods/ITEMS/mcl_portals/init.lua | 8 +- mods/ITEMS/mcl_portals/portal_end.lua | 4 +- mods/ITEMS/mcl_portals/portal_gateway.lua | 9 +- mods/ITEMS/mcl_portals/portal_nether.lua | 4 +- mods/ITEMS/mcl_potions/commands.lua | 2 +- mods/ITEMS/mcl_potions/init.lua | 26 +- mods/ITEMS/mcl_potions/lingering.lua | 7 +- mods/ITEMS/mcl_potions/potions.lua | 4 +- mods/ITEMS/mcl_potions/splash.lua | 5 +- mods/ITEMS/mcl_potions/tipped_arrow.lua | 33 +- mods/ITEMS/mcl_signs/init.lua | 41 +- mods/ITEMS/mcl_sponges/init.lua | 4 +- mods/ITEMS/mcl_stairs/api.lua | 8 +- mods/ITEMS/mcl_stairs/cornerstair.lua | 16 +- mods/ITEMS/mcl_stairs/crafting.lua | 30 +- mods/ITEMS/mcl_stairs/init.lua | 12 +- mods/ITEMS/mcl_stairs/register.lua | 2 +- mods/ITEMS/mcl_throwing/init.lua | 2 +- mods/ITEMS/mcl_throwing/register.lua | 28 +- mods/ITEMS/mcl_tnt/init.lua | 13 +- mods/ITEMS/mcl_tools/crafting.lua | 212 ++-- mods/ITEMS/mcl_tools/init.lua | 14 +- mods/ITEMS/mcl_torches/api.lua | 6 +- mods/ITEMS/mcl_torches/init.lua | 2 +- mods/ITEMS/mcl_torches/register.lua | 2 +- mods/ITEMS/mcl_walls/init.lua | 16 +- mods/ITEMS/mcl_walls/register.lua | 2 +- mods/ITEMS/mcl_wool/init.lua | 10 +- mods/ITEMS/mclx_core/init.lua | 2 +- mods/ITEMS/mclx_fences/init.lua | 10 +- mods/ITEMS/mclx_stairs/init.lua | 2 +- mods/ITEMS/screwdriver/init.lua | 19 +- mods/ITEMS/xpanes/init.lua | 2 +- mods/MAPGEN/mcl_biomes/init.lua | 84 +- mods/MAPGEN/mcl_mapgen_core/init.lua | 14 +- mods/MAPGEN/mcl_structures/init.lua | 28 +- mods/MAPGEN/mcl_villages/buildings.lua | 4 +- mods/MAPGEN/mcl_villages/init.lua | 4 +- mods/MAPGEN/tsm_railcorridors/init.lua | 13 +- mods/MISC/findbiome/init.lua | 4 +- mods/MISC/mcl_commands/alias.lua | 2 +- mods/MISC/mcl_commands/kill.lua | 2 +- mods/MISC/mcl_commands/list.lua | 2 +- mods/MISC/mcl_commands/say.lua | 2 +- mods/MISC/mcl_commands/seed.lua | 2 +- mods/MISC/mcl_commands/setblock.lua | 2 +- mods/MISC/mcl_commands/sound.lua | 2 +- mods/MISC/mcl_commands/summon.lua | 2 +- mods/MISC/mcl_privs/init.lua | 2 +- mods/MISC/mcl_temp_helper_recipes/init.lua | 2 +- mods/MISC/mcl_wip/init.lua | 4 +- mods/PLAYER/mcl_death_drop/init.lua | 6 +- mods/PLAYER/mcl_hunger/api.lua | 2 +- mods/PLAYER/mcl_hunger/hunger.lua | 7 +- mods/PLAYER/mcl_hunger/init.lua | 11 +- mods/PLAYER/mcl_skins/init.lua | 12 +- mods/PLAYER/mcl_spawn/init.lua | 14 +- mods/PLAYER/mcl_sprint/init.lua | 35 +- mods/PLAYER/mcl_wieldview/init.lua | 10 +- 248 files changed, 2223 insertions(+), 2099 deletions(-) diff --git a/mods/CORE/_mcl_autogroup/init.lua b/mods/CORE/_mcl_autogroup/init.lua index 76c68122b..ba8b659c0 100644 --- a/mods/CORE/_mcl_autogroup/init.lua +++ b/mods/CORE/_mcl_autogroup/init.lua @@ -83,7 +83,7 @@ local function get_hardness_values_for_groups() for _, ndef in pairs(minetest.registered_nodes) do for g, _ in pairs(mcl_autogroup.registered_diggroups) do - if ndef.groups[g] ~= nil then + if ndef.groups[g] then maps[g][ndef._mcl_hardness or 0] = true end end diff --git a/mods/CORE/controls/init.lua b/mods/CORE/controls/init.lua index 2ceb7e902..ef57281a4 100644 --- a/mods/CORE/controls/init.lua +++ b/mods/CORE/controls/init.lua @@ -1,6 +1,8 @@ local get_connected_players = minetest.get_connected_players local clock = os.clock +local pairs = pairs + controls = {} controls.players = {} @@ -20,15 +22,15 @@ function controls.register_on_hold(func) end local known_controls = { - jump=true, - right=true, - left=true, - LMB=true, - RMB=true, - sneak=true, - aux1=true, - down=true, - up=true, + jump = true, + right = true, + left = true, + LMB = true, + RMB = true, + sneak = true, + aux1 = true, + down = true, + up = true, } minetest.register_on_joinplayer(function(player) @@ -49,27 +51,27 @@ minetest.register_globalstep(function(dtime) local player_name = player:get_player_name() local player_controls = player:get_player_control() if controls.players[player_name] then - for cname, cbool in pairs(player_controls) do - if known_controls[cname] == true then - --Press a key - if cbool==true and controls.players[player_name][cname][1]==false then - for _, func in pairs(controls.registered_on_press) do - func(player, cname) + for cname, cbool in pairs(player_controls) do + if known_controls[cname] == true then + --Press a key + if cbool == true and controls.players[player_name][cname][1] == false then + for _, func in pairs(controls.registered_on_press) do + func(player, cname) + end + controls.players[player_name][cname] = {true, clock()} + elseif cbool == true and controls.players[player_name][cname][1] == true then + for _, func in pairs(controls.registered_on_hold) do + func(player, cname, clock()-controls.players[player_name][cname][2]) + end + --Release a key + elseif cbool == false and controls.players[player_name][cname][1] == true then + for _, func in pairs(controls.registered_on_release) do + func(player, cname, clock()-controls.players[player_name][cname][2]) + end + controls.players[player_name][cname] = {false} + end end - controls.players[player_name][cname] = {true, clock()} - elseif cbool==true and controls.players[player_name][cname][1]==true then - for _, func in pairs(controls.registered_on_hold) do - func(player, cname, clock()-controls.players[player_name][cname][2]) - end - --Release a key - elseif cbool==false and controls.players[player_name][cname][1]==true then - for _, func in pairs(controls.registered_on_release) do - func(player, cname, clock()-controls.players[player_name][cname][2]) - end - controls.players[player_name][cname] = {false} end end - end - end end end) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index 3a60f2f37..0132d1669 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -12,9 +12,13 @@ under the LGPLv2.1 license. mcl_explosions = {} -local mod_fire = minetest.get_modpath("mcl_fire") ~= nil +local mod_fire = minetest.get_modpath("mcl_fire") --local CONTENT_FIRE = minetest.get_content_id("mcl_fire:fire") +local math = math +local vector = vector +local table = table + local hash_node_position = minetest.hash_node_position local get_objects_inside_radius = minetest.get_objects_inside_radius local get_position_from_hash = minetest.get_position_from_hash @@ -24,6 +28,7 @@ local get_voxel_manip = minetest.get_voxel_manip local bulk_set_node = minetest.bulk_set_node local check_for_falling = minetest.check_for_falling local add_item = minetest.add_item +local pos_to_string = minetest.pos_to_string -- Saved sphere explosion shapes for various radiuses local sphere_shapes = {} @@ -240,7 +245,7 @@ local function trace_explode(pos, strength, raydirs, radius, info, direct, sourc local ent = obj:get_luaentity() -- Ignore items to lower lag - if (obj:is_player() or (ent and ent.name ~= '__builtin.item')) and obj:get_hp() > 0 then + if (obj:is_player() or (ent and ent.name ~= "__builtin.item")) and obj:get_hp() > 0 then local opos = obj:get_pos() local collisionbox = nil @@ -356,9 +361,9 @@ local function trace_explode(pos, strength, raydirs, radius, info, direct, sourc local on_blast = node_on_blast[data[idx]] local remove = true - if do_drop or on_blast ~= nil then + if do_drop or on_blast then local npos = get_position_from_hash(hash) - if on_blast ~= nil then + if on_blast then on_blast(npos, 1.0, do_drop) remove = false else @@ -400,8 +405,7 @@ local function trace_explode(pos, strength, raydirs, radius, info, direct, sourc end -- Log explosion - minetest.log('action', 'Explosion at ' .. minetest.pos_to_string(pos) .. - ' with strength ' .. strength .. ' and radius ' .. radius) + minetest.log("action", "Explosion at "..pos_to_string(pos).." with strength "..strength.." and radius "..radius) end -- Create an explosion with strength at pos. diff --git a/mods/CORE/mcl_worlds/init.lua b/mods/CORE/mcl_worlds/init.lua index ec8144794..203f69401 100644 --- a/mods/CORE/mcl_worlds/init.lua +++ b/mods/CORE/mcl_worlds/init.lua @@ -1,5 +1,7 @@ mcl_worlds = {} +local get_connected_players = minetest.get_connected_players + -- For a given position, returns a 2-tuple: -- 1st return value: true if pos is in void -- 2nd return value: true if it is in the deadly part of the void @@ -44,12 +46,16 @@ function mcl_worlds.y_to_layer(y) end end +local y_to_layer = mcl_worlds.y_to_layer + -- Takes a pos and returns the dimension it belongs to (same as above) function mcl_worlds.pos_to_dimension(pos) - local _, dim = mcl_worlds.y_to_layer(pos.y) + local _, dim = y_to_layer(pos.y) return dim end +local pos_to_dimension = mcl_worlds.pos_to_dimension + -- Takes a Minecraft layer and a “dimension” name -- and returns the corresponding Y coordinate for -- MineClone 2. @@ -119,6 +125,8 @@ function mcl_worlds.dimension_change(player, dimension) last_dimension[playername] = dimension end +local dimension_change = mcl_worlds.dimension_change + ----------------------- INTERNAL STUFF ---------------------- -- Update the dimension callbacks every DIM_UPDATE seconds @@ -126,19 +134,19 @@ local DIM_UPDATE = 1 local dimtimer = 0 minetest.register_on_joinplayer(function(player) - last_dimension[player:get_player_name()] = mcl_worlds.pos_to_dimension(player:get_pos()) + last_dimension[player:get_player_name()] = pos_to_dimension(player:get_pos()) end) minetest.register_globalstep(function(dtime) -- regular updates based on iterval dimtimer = dimtimer + dtime; if dimtimer >= DIM_UPDATE then - local players = minetest.get_connected_players() - for p=1, #players do - local dim = mcl_worlds.pos_to_dimension(players[p]:get_pos()) + local players = get_connected_players() + for p = 1, #players do + local dim = pos_to_dimension(players[p]:get_pos()) local name = players[p]:get_player_name() if dim ~= last_dimension[name] then - mcl_worlds.dimension_change(players[p], dim) + dimension_change(players[p], dim) end end dimtimer = 0 diff --git a/mods/CORE/walkover/init.lua b/mods/CORE/walkover/init.lua index 6260b43e0..4d712c308 100644 --- a/mods/CORE/walkover/init.lua +++ b/mods/CORE/walkover/init.lua @@ -4,6 +4,7 @@ local get_connected_players = minetest.get_connected_players local get_node = minetest.get_node local vector_add = vector.add local ceil = math.ceil +local pairs = pairs walkover = {} walkover.registered_globals = {} @@ -34,9 +35,9 @@ minetest.register_globalstep(function(dtime) 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 + if loc then local nodeiamon = get_node(loc) - if nodeiamon ~= nil then + if nodeiamon then if on_walk[nodeiamon.name] then on_walk[nodeiamon.name](loc, nodeiamon, player) end diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 8c187617c..76ace7a45 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_boats") +local S = minetest.get_translator(minetest.get_current_modname()) local boat_visual_size = {x = 1, y = 1, z = 1} local paddling_speed = 22 @@ -470,6 +470,6 @@ minetest.register_craft({ burntime = 20, }) -if minetest.get_modpath("doc_identifier") ~= nil then +if minetest.get_modpath("doc_identifier") then doc.sub.identifier.register_object("mcl_boats:boat", "craftitems", "mcl_boats:boat") end diff --git a/mods/ENTITIES/mcl_burning/init.lua b/mods/ENTITIES/mcl_burning/init.lua index 5cf0d85fe..34b7ca2d4 100644 --- a/mods/ENTITIES/mcl_burning/init.lua +++ b/mods/ENTITIES/mcl_burning/init.lua @@ -1,5 +1,10 @@ local modpath = minetest.get_modpath(minetest.get_current_modname()) +local pairs = pairs + +local get_connected_players = minetest.get_connected_players +local get_item_group = minetest.get_item_group + mcl_burning = { storage = {}, animation_frames = tonumber(minetest.settings:get("fire_animation_frames")) or 8 @@ -8,7 +13,7 @@ mcl_burning = { dofile(modpath .. "/api.lua") minetest.register_globalstep(function(dtime) - for _, player in pairs(minetest.get_connected_players()) do + for _, player in pairs(get_connected_players()) do local storage = mcl_burning.storage[player] if not mcl_burning.tick(player, dtime, storage) and not mcl_burning.is_affected_by_rain(player) then local nodes = mcl_burning.get_touching_nodes(player, {"group:puts_out_fire", "group:set_on_fire"}, storage) @@ -16,12 +21,12 @@ minetest.register_globalstep(function(dtime) for _, pos in pairs(nodes) do local node = minetest.get_node(pos) - if minetest.get_item_group(node.name, "puts_out_fire") > 0 then + if get_item_group(node.name, "puts_out_fire") > 0 then burn_time = 0 break end - local value = minetest.get_item_group(node.name, "set_on_fire") + local value = get_item_group(node.name, "set_on_fire") if value > burn_time then burn_time = value end diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 7886664f8..ab1ac5752 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, pairs = minetest, math, vector, ipairs, pairs --this is used for the player pool in the sound buffer local pool = {} @@ -233,7 +233,7 @@ function minetest.handle_node_drops(pos, drops, digger) local dug_node = minetest.get_node(pos) local tooldef local tool - if digger ~= nil then + if digger then tool = digger:get_wielded_item() tooldef = minetest.registered_tools[tool:get_name()] @@ -314,7 +314,7 @@ function minetest.handle_node_drops(pos, drops, digger) end -- Spawn item and apply random speed local obj = minetest.add_item(dpos, drop_item) - if obj ~= nil then + if obj then local x = math.random(1, 5) if math.random(1,2) == 1 then x = -x @@ -394,7 +394,7 @@ minetest.register_entity(":__builtin:item", { -- The itemstring MUST be set immediately to a non-empty string after creating the entity. -- The hand is NOT permitted as dropped item. ;-) -- Item entities will be deleted if they still have an empty itemstring on their first on_step tick. - itemstring = '', + itemstring = "", -- If true, item will fall physical_state = true, @@ -585,7 +585,7 @@ minetest.register_entity(":__builtin:item", { return end self.age = self.age + dtime - if self._collector_timer ~= nil then + if self._collector_timer then self._collector_timer = self._collector_timer + dtime end if time_to_live > 0 and self.age > time_to_live then diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 6fd98f550..e33e120a1 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -1,9 +1,10 @@ -local S = minetest.get_translator("mcl_minecarts") +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) local has_mcl_wip = minetest.get_modpath("mcl_wip") mcl_minecarts = {} -mcl_minecarts.modpath = minetest.get_modpath("mcl_minecarts") +mcl_minecarts.modpath = minetest.get_modpath(modname) mcl_minecarts.speed_max = 10 mcl_minecarts.check_float_time = 15 @@ -204,7 +205,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick, o rou_pos = vector.round(pos) node = minetest.get_node(rou_pos) local g = minetest.get_item_group(node.name, "connect_to_raillike") - if g ~= self._railtype and self._railtype ~= nil then + if g ~= self._railtype and self._railtype then -- Detach driver if player then if self._old_pos then @@ -523,7 +524,7 @@ function mcl_minecarts.place_minecart(itemstack, pointed_thing, placer) local cart = minetest.add_entity(railpos, entity_id) local railtype = minetest.get_item_group(node.name, "connect_to_raillike") local le = cart:get_luaentity() - if le ~= nil then + if le then le._railtype = railtype end local cart_dir = mcl_minecarts:get_rail_direction(railpos, {x=1, y=0, z=0}, nil, nil, railtype) @@ -606,7 +607,7 @@ Register a minecart local function register_minecart(itemstring, entity_id, description, tt_help, longdesc, usagehelp, mesh, textures, icon, drop, on_rightclick, on_activate_by_rail, creative) register_entity(entity_id, mesh, textures, drop, on_rightclick, on_activate_by_rail) register_craftitem(itemstring, entity_id, description, tt_help, longdesc, usagehelp, icon, creative) - if minetest.get_modpath("doc_identifier") ~= nil then + if minetest.get_modpath("doc_identifier") then doc.sub.identifier.register_object(entity_id, "craftitems", itemstring) end end diff --git a/mods/ENTITIES/mcl_minecarts/rails.lua b/mods/ENTITIES/mcl_minecarts/rails.lua index 53ec86d94..91282f253 100644 --- a/mods/ENTITIES/mcl_minecarts/rails.lua +++ b/mods/ENTITIES/mcl_minecarts/rails.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_minecarts") +local S = minetest.get_translator(minetest.get_current_modname()) -- Template rail function local function register_rail(itemstring, tiles, def_extras, creative) @@ -206,11 +206,11 @@ register_rail("mcl_minecarts:detector_rail_on", -- Crafting minetest.register_craft({ - output = 'mcl_minecarts:rail 16', + output = "mcl_minecarts:rail 16", recipe = { - {'mcl_core:iron_ingot', '', 'mcl_core:iron_ingot'}, - {'mcl_core:iron_ingot', 'mcl_core:stick', 'mcl_core:iron_ingot'}, - {'mcl_core:iron_ingot', '', 'mcl_core:iron_ingot'}, + {"mcl_core:iron_ingot", "", "mcl_core:iron_ingot"}, + {"mcl_core:iron_ingot", "mcl_core:stick", "mcl_core:iron_ingot"}, + {"mcl_core:iron_ingot", "", "mcl_core:iron_ingot"}, } }) diff --git a/mods/ENTITIES/mcl_mobs/api/api.lua b/mods/ENTITIES/mcl_mobs/api/api.lua index 41b522fef..d1840f671 100644 --- a/mods/ENTITIES/mcl_mobs/api/api.lua +++ b/mods/ENTITIES/mcl_mobs/api/api.lua @@ -96,7 +96,7 @@ local mod_mobspawners = minetest_get_modpath("mcl_mobspawners") --local height_switcher = false -- Get translator -local S = minetest.get_translator("mcl_mobs") +local S = minetest.get_translator(minetest.get_current_modname()) -- CMI support check --local use_cmi = minetest.global_exists("cmi") @@ -429,7 +429,7 @@ function mobs:register_mob(name, def) --harmed_by_heal = def.harmed_by_heal, }) - if minetest_get_modpath("doc_identifier") ~= nil then + if minetest_get_modpath("doc_identifier") then doc.sub.identifier.register_object(name, "basics", "mobs") end diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua index 894a1f5e4..d16d24929 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua @@ -990,7 +990,7 @@ function mobs.mob_step(self, dtime) if self.memory <= 0 then --reset states when coming out of hostile state - if self.attacking ~= nil then + if self.attacking then self.state_timer = -1 end 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 f5d33def4..ac10194e5 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 @@ -41,7 +41,7 @@ mobs.explode_attack_walk = function(self,dtime) --make mob walk up to player within 2 nodes distance then start exploding if distance_from_attacking >= self.reach and --don't allow explosion to cancel unless out of the reach boundary - not (self.explosion_animation ~= nil and self.explosion_animation > 0 and distance_from_attacking <= self.defuse_reach) then + not (self.explosion_animation and self.explosion_animation > 0 and distance_from_attacking <= self.defuse_reach) then mobs.set_velocity(self, self.run_velocity) mobs.set_mob_animation(self,"run") @@ -85,9 +85,8 @@ end --this is a small helper function to make working with explosion animations easier mobs.reverse_explosion_animation = function(self,dtime) - --if explosion animation was greater than 0 then reverse it - if self.explosion_animation ~= nil and self.explosion_animation > 0 then + if self.explosion_animation and self.explosion_animation > 0 then self.explosion_animation = self.explosion_animation - dtime if self.explosion_animation < 0 then self.explosion_animation = 0 diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/projectile_handling.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/projectile_handling.lua index e7ae6ffbe..a4b4c075e 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/projectile_handling.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/projectile_handling.lua @@ -36,9 +36,8 @@ mobs.shoot_projectile_handling = function(arrow_item, pos, dir, yaw, shooter, po le._collectable = collectable --play custom shoot sound - if shooter ~= nil and shooter.shoot_sound then + if shooter and shooter.shoot_sound then minetest.sound_play(shooter.shoot_sound, {pos=pos, max_hear_distance=16}, true) end - return obj end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api/spawning.lua b/mods/ENTITIES/mcl_mobs/api/spawning.lua index 70167b421..bf07ca94d 100644 --- a/mods/ENTITIES/mcl_mobs/api/spawning.lua +++ b/mods/ENTITIES/mcl_mobs/api/spawning.lua @@ -5,6 +5,7 @@ local get_node_light = minetest.get_node_light local find_nodes_in_area_under_air = minetest.find_nodes_in_area_under_air local get_biome_name = minetest.get_biome_name local get_objects_inside_radius = minetest.get_objects_inside_radius +local get_connected_players = minetest.get_connected_players local math_random = math.random @@ -18,6 +19,7 @@ local vector_floor = vector.floor local table_copy = table.copy local table_remove = table.remove +local pairs = pairs -- range for mob count local aoc_range = 48 @@ -279,7 +281,7 @@ function mobs:spawn_specific(name, dimension, type_of_spawning, biomes, min_ligh end -- if toggle set to nil then ignore day/night check - if day_toggle ~= nil then + if day_toggle then local tod = (minetest.get_timeofday() or 0) * 24000 @@ -369,7 +371,7 @@ function mobs:spawn_specific(name, dimension, type_of_spawning, biomes, min_ligh if minetest.registered_nodes[node_ok(pos2).name].walkable == true then -- inside block minetest.log("info", "Mob spawn of "..name.." at "..minetest.pos_to_string(pos).." failed, too little space!") - if ent.spawn_small_alternative ~= nil and (not minetest.registered_nodes[node_ok(pos).name].walkable) then + if ent.spawn_small_alternative and (not minetest.registered_nodes[node_ok(pos).name].walkable) then minetest.log("info", "Trying to spawn smaller alternative mob: "..ent.spawn_small_alternative) spawn_action(orig_pos, node, active_object_count, active_object_count_wider, ent.spawn_small_alternative) end @@ -540,7 +542,7 @@ if mobs_spawn then timer = timer + dtime if timer >= 10 then timer = 0 - for _,player in pairs(minetest.get_connected_players()) do + for _,player in pairs(get_connected_players()) do -- after this line each "break" means "continue" local do_mob_spawning = true repeat @@ -548,15 +550,15 @@ if mobs_spawn then --they happen in a single server step local player_pos = player:get_pos() - local _,dimension = mcl_worlds.y_to_layer(player_pos.y) + local dimension = mcl_worlds.pos_to_dimension(player_pos) if dimension == "void" or dimension == "default" then break -- ignore void and unloaded area end - local min,max = decypher_limits(player_pos.y) + local min, max = decypher_limits(player_pos.y) - for i = 1,math_random(1,4) do + for i = 1, math_random(1,4) do -- after this line each "break" means "continue" local do_mob_algorithm = true repeat diff --git a/mods/ENTITIES/mcl_mobs/crafts.lua b/mods/ENTITIES/mcl_mobs/crafts.lua index e8a5b60fc..2b23c6f58 100644 --- a/mods/ENTITIES/mcl_mobs/crafts.lua +++ b/mods/ENTITIES/mcl_mobs/crafts.lua @@ -1,5 +1,5 @@ -local S = minetest.get_translator("mcl_mobs") +local S = minetest.get_translator(minetest.get_current_modname()) -- name tag minetest.register_craftitem("mcl_mobs:nametag", { diff --git a/mods/ENTITIES/mcl_paintings/init.lua b/mods/ENTITIES/mcl_paintings/init.lua index be210c74c..26bd2c61b 100644 --- a/mods/ENTITIES/mcl_paintings/init.lua +++ b/mods/ENTITIES/mcl_paintings/init.lua @@ -1,8 +1,9 @@ mcl_paintings = {} -dofile(minetest.get_modpath(minetest.get_current_modname()).."/paintings.lua") +local modname = minetest.get_current_modname() +dofile(minetest.get_modpath(modname).."/paintings.lua") -local S = minetest.get_translator("mcl_paintings") +local S = minetest.get_translator(modname) local math = math diff --git a/mods/ENTITIES/mobs_mc/1_items_default.lua b/mods/ENTITIES/mobs_mc/1_items_default.lua index bdadbfdc5..c8ac421cc 100644 --- a/mods/ENTITIES/mobs_mc/1_items_default.lua +++ b/mods/ENTITIES/mobs_mc/1_items_default.lua @@ -8,7 +8,7 @@ -- NOTE: Most strings intentionally not marked for translation, other mods already have these items. -- TODO: Remove this file eventually, most items are already outsourced in other mods. -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) local c = mobs_mc.is_item_variable_overridden @@ -234,8 +234,8 @@ end if c("ender_eye") and c("blaze_powder") and c("blaze_rod") then minetest.register_craft({ type = "shapeless", - output = 'mobs_mc:ender_eye', - recipe = { 'mobs_mc:blaze_powder', 'mobs_mc:blaze_rod'}, + output = "mobs_mc:ender_eye", + recipe = { "mobs_mc:blaze_powder", "mobs_mc:blaze_rod"}, }) end diff --git a/mods/ENTITIES/mobs_mc/2_throwing.lua b/mods/ENTITIES/mobs_mc/2_throwing.lua index 6f01ae6e6..d97351ac0 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(minetest.get_current_modname()) --maikerumines throwing code --arrow (weapon) @@ -83,7 +83,7 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime) if self.timer>0.2 then local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 1.5) for k, obj in pairs(objs) do - if obj:get_luaentity() ~= nil then + if obj:get_luaentity() then if obj:get_luaentity().name ~= "mobs_mc:arrow_entity" and obj:get_luaentity().name ~= "__builtin:item" then local damage = 3 minetest.sound_play("damage", {pos = pos}, true) @@ -108,7 +108,7 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime) if self.lastpos.x~=nil then if node.name ~= "air" then minetest.sound_play("bowhit1", {pos = pos}, true) - minetest.add_item(self.lastpos, 'mobs_mc:arrow') + minetest.add_item(self.lastpos, "mobs_mc:arrow") self.object:remove() end end @@ -155,7 +155,7 @@ end if c("arrow") and c("flint") and c("feather") and c("stick") then minetest.register_craft({ - output = 'mobs_mc:arrow 4', + output = "mobs_mc:arrow 4", recipe = { {mobs_mc.items.flint}, {mobs_mc.items.stick}, @@ -181,11 +181,11 @@ if c("bow") then }) minetest.register_craft({ - output = 'mobs_mc:bow_wood', + output = "mobs_mc:bow_wood", recipe = { - {mobs_mc.items.string, mobs_mc.items.stick, ''}, - {mobs_mc.items.string, '', mobs_mc.items.stick}, - {mobs_mc.items.string, mobs_mc.items.stick, ''}, + {mobs_mc.items.string, mobs_mc.items.stick, ""}, + {mobs_mc.items.string, "", mobs_mc.items.stick}, + {mobs_mc.items.string, mobs_mc.items.stick, ""}, } }) end @@ -259,7 +259,7 @@ if c("egg") then }) -- shoot egg - local mobs_shoot_egg = function (item, player, pointed_thing) + local function mobs_shoot_egg(item, player, pointed_thing) local playerpos = player:get_pos() @@ -349,7 +349,7 @@ mobs:register_arrow("mobs_mc:snowball_entity", { if c("snowball") then -- shoot snowball - local mobs_shoot_snowball = function (item, player, pointed_thing) + local function mobs_shoot_snowball(item, player, pointed_thing) local playerpos = player:get_pos() diff --git a/mods/ENTITIES/mobs_mc/4_heads.lua b/mods/ENTITIES/mobs_mc/4_heads.lua index 2ba0d548b..ecd09ee02 100644 --- a/mods/ENTITIES/mobs_mc/4_heads.lua +++ b/mods/ENTITIES/mobs_mc/4_heads.lua @@ -5,7 +5,7 @@ -- 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 = local S = minetest.get_translator(minetest.get_current_modname()) -- Heads system diff --git a/mods/ENTITIES/mobs_mc/agent.lua b/mods/ENTITIES/mobs_mc/agent.lua index cc9910ee6..8475f92fc 100644 --- a/mods/ENTITIES/mobs_mc/agent.lua +++ b/mods/ENTITIES/mobs_mc/agent.lua @@ -2,7 +2,7 @@ --################### AGENT - seemingly unused --################### -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) mobs:register_mob("mobs_mc:agent", { type = "npc", diff --git a/mods/ENTITIES/mobs_mc/bat.lua b/mods/ENTITIES/mobs_mc/bat.lua index 70e084ee2..5492add74 100644 --- a/mods/ENTITIES/mobs_mc/bat.lua +++ b/mods/ENTITIES/mobs_mc/bat.lua @@ -1,6 +1,6 @@ --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) mobs:register_mob("mobs_mc:bat", { description = S("Bat"), diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index a5e6f2bd3..0f62c5388 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -3,7 +3,7 @@ -- Model and mobs_blaze.png see https://github.com/22i/minecraft-voxel-blender-models -hi 22i ~jordan4ibanez -- blaze.lua partial copy of mobs_mc/ghast.lua -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### BLAZE diff --git a/mods/ENTITIES/mobs_mc/chicken.lua b/mods/ENTITIES/mobs_mc/chicken.lua index 9146a012f..ffaebca2b 100644 --- a/mods/ENTITIES/mobs_mc/chicken.lua +++ b/mods/ENTITIES/mobs_mc/chicken.lua @@ -1,6 +1,6 @@ --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### CHICKEN diff --git a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua index 6100e5899..17c4e1e62 100644 --- a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua +++ b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua @@ -1,6 +1,6 @@ --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) local cow_def = { description = S("Cow"), diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 4d0539996..999cc5f2d 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -1,6 +1,6 @@ --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### CREEPER @@ -72,7 +72,7 @@ mobs:register_mob("mobs_mc:creeper", { -- TODO: Make creeper flash after doing this as well. -- TODO: Test and debug this code. on_rightclick = function(self, clicker) - if self._forced_explosion_countdown_timer ~= nil then + if self._forced_explosion_countdown_timer then return end local item = clicker:get_wielded_item() @@ -92,7 +92,7 @@ mobs:register_mob("mobs_mc:creeper", { end end, do_custom = function(self, dtime) - if self._forced_explosion_countdown_timer ~= nil then + if self._forced_explosion_countdown_timer then self._forced_explosion_countdown_timer = self._forced_explosion_countdown_timer - dtime if self._forced_explosion_countdown_timer <= 0 then mobs:boom(self, mcl_util.get_object_center(self.object), self.explosion_strength) @@ -196,7 +196,7 @@ mobs:register_mob("mobs_mc:creeper_charged", { -- TODO: Make creeper flash after doing this as well. -- TODO: Test and debug this code. on_rightclick = function(self, clicker) - if self._forced_explosion_countdown_timer ~= nil then + if self._forced_explosion_countdown_timer then return end local item = clicker:get_wielded_item() @@ -216,7 +216,7 @@ mobs:register_mob("mobs_mc:creeper_charged", { end end, do_custom = function(self, dtime) - if self._forced_explosion_countdown_timer ~= nil then + if self._forced_explosion_countdown_timer then self._forced_explosion_countdown_timer = self._forced_explosion_countdown_timer - dtime if self._forced_explosion_countdown_timer <= 0 then mobs:boom(self, mcl_util.get_object_center(self.object), self.explosion_strength) diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index d2d040ad2..bafb3f84a 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -2,7 +2,7 @@ --################### ENDERDRAGON --################### -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) mobs:register_mob("mobs_mc:enderdragon", { description = S("Ender Dragon"), diff --git a/mods/ENTITIES/mobs_mc/enderman.lua b/mods/ENTITIES/mobs_mc/enderman.lua index 0b6985711..a821bd769 100644 --- a/mods/ENTITIES/mobs_mc/enderman.lua +++ b/mods/ENTITIES/mobs_mc/enderman.lua @@ -24,9 +24,11 @@ -- added rain damage. -- fixed the grass_with_dirt issue. -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) -local telesound = function(pos, is_source) +local vector = vector + +local function telesound(pos, is_source) local snd if is_source then snd = "mobs_mc_enderman_teleport_src" @@ -302,7 +304,7 @@ mobs:register_mob("mobs_mc:enderman", { if self.attacking then local target = self.attacking local pos = target:get_pos() - if pos ~= nil then + if pos then if vector.distance(self.object:get_pos(), target:get_pos()) > 10 then self:teleport(target) end @@ -341,8 +343,8 @@ mobs:register_mob("mobs_mc:enderman", { -- self:teleport(nil) -- self.state = "" --else - if self.attack ~= nil and not minetest.settings:get_bool("creative_mode") then - self.state = 'attack' + if self.attack and not minetest.settings:get_bool("creative_mode") then + self.state = "attack" end --end end @@ -459,7 +461,7 @@ mobs:register_mob("mobs_mc:enderman", { end end end - elseif self._taken_node ~= nil and self._taken_node ~= "" and self._take_place_timer >= self._next_take_place_time then + elseif self._taken_node and self._taken_node ~= "" and self._take_place_timer >= self._next_take_place_time then -- Place taken node self._take_place_timer = 0 self._next_take_place_time = math.random(take_frequency_min, take_frequency_max) @@ -485,12 +487,12 @@ mobs:register_mob("mobs_mc:enderman", { end end, do_teleport = function(self, target) - if target ~= nil then + if target then local target_pos = target:get_pos() -- Find all solid nodes below air in a 10×10×10 cuboid centered on the target local nodes = minetest.find_nodes_in_area_under_air(vector.subtract(target_pos, 5), vector.add(target_pos, 5), {"group:solid", "group:cracky", "group:crumbly"}) local telepos - if nodes ~= nil then + if nodes then if #nodes > 0 then -- Up to 64 attempts to teleport for n=1, math.min(64, #nodes) do @@ -525,7 +527,7 @@ mobs:register_mob("mobs_mc:enderman", { -- We need to add (or subtract) different random numbers to each vector component, so it couldn't be done with a nice single vector.add() or .subtract(): local randomCube = vector.new( pos.x + 8*(pr:next(0,16)-8), pos.y + 8*(pr:next(0,16)-8), pos.z + 8*(pr:next(0,16)-8) ) local nodes = minetest.find_nodes_in_area_under_air(vector.subtract(randomCube, 4), vector.add(randomCube, 4), {"group:solid", "group:cracky", "group:crumbly"}) - if nodes ~= nil then + if nodes then if #nodes > 0 then -- Up to 8 low-level (in total up to 8*8 = 64) attempts to teleport for n=1, math.min(8, #nodes) do @@ -557,13 +559,13 @@ mobs:register_mob("mobs_mc:enderman", { end, on_die = function(self, pos) -- Drop carried node on death - if self._taken_node ~= nil and self._taken_node ~= "" then + if self._taken_node and self._taken_node ~= "" then minetest.add_item(pos, self._taken_node) end end, do_punch = function(self, hitter, tflp, tool_caps, dir) -- damage from rain caused by itself so we don't want it to attack itself. - if hitter ~= self.object and hitter ~= nil then + if hitter ~= self.object and hitter then --if (minetest.get_timeofday() * 24000) > 5001 and (minetest.get_timeofday() * 24000) < 19000 then -- self:teleport(nil) --else diff --git a/mods/ENTITIES/mobs_mc/endermite.lua b/mods/ENTITIES/mobs_mc/endermite.lua index 712086828..29a887c06 100644 --- a/mods/ENTITIES/mobs_mc/endermite.lua +++ b/mods/ENTITIES/mobs_mc/endermite.lua @@ -2,7 +2,7 @@ --################### ENDERMITE --################### -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) mobs:register_mob("mobs_mc:endermite", { description = S("Endermite"), diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index 609110bdb..dc47411fd 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### GHAST diff --git a/mods/ENTITIES/mobs_mc/guardian.lua b/mods/ENTITIES/mobs_mc/guardian.lua index 0916010d2..3e1a4f853 100644 --- a/mods/ENTITIES/mobs_mc/guardian.lua +++ b/mods/ENTITIES/mobs_mc/guardian.lua @@ -2,7 +2,7 @@ --################### GUARDIAN --################### -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) mobs:register_mob("mobs_mc:guardian", { description = S("Guardian"), diff --git a/mods/ENTITIES/mobs_mc/guardian_elder.lua b/mods/ENTITIES/mobs_mc/guardian_elder.lua index 0c871da7a..2bb0e984a 100644 --- a/mods/ENTITIES/mobs_mc/guardian_elder.lua +++ b/mods/ENTITIES/mobs_mc/guardian_elder.lua @@ -4,7 +4,7 @@ --################### GUARDIAN --################### -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) mobs:register_mob("mobs_mc:guardian_elder", { description = S("Elder Guardian"), diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index db23d410b..4b33515d5 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### HORSE diff --git a/mods/ENTITIES/mobs_mc/init.lua b/mods/ENTITIES/mobs_mc/init.lua index 58006fe90..d7600e927 100644 --- a/mods/ENTITIES/mobs_mc/init.lua +++ b/mods/ENTITIES/mobs_mc/init.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local path = minetest.get_modpath("mobs_mc") +local path = minetest.get_modpath(minetest.get_current_modname()) if not minetest.get_modpath("mobs_mc_gameconfig") then mobs_mc = {} diff --git a/mods/ENTITIES/mobs_mc/iron_golem.lua b/mods/ENTITIES/mobs_mc/iron_golem.lua index d68dc157b..946db312d 100644 --- a/mods/ENTITIES/mobs_mc/iron_golem.lua +++ b/mods/ENTITIES/mobs_mc/iron_golem.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### IRON GOLEM diff --git a/mods/ENTITIES/mobs_mc/llama.lua b/mods/ENTITIES/mobs_mc/llama.lua index 9803b582b..9c3f681b1 100644 --- a/mods/ENTITIES/mobs_mc/llama.lua +++ b/mods/ENTITIES/mobs_mc/llama.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### LLAMA diff --git a/mods/ENTITIES/mobs_mc/ocelot.lua b/mods/ENTITIES/mobs_mc/ocelot.lua index 933d7aad4..aea543895 100644 --- a/mods/ENTITIES/mobs_mc/ocelot.lua +++ b/mods/ENTITIES/mobs_mc/ocelot.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### OCELOT AND CAT diff --git a/mods/ENTITIES/mobs_mc/parrot.lua b/mods/ENTITIES/mobs_mc/parrot.lua index 88ab54ff5..affcac496 100644 --- a/mods/ENTITIES/mobs_mc/parrot.lua +++ b/mods/ENTITIES/mobs_mc/parrot.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### PARROT diff --git a/mods/ENTITIES/mobs_mc/pig.lua b/mods/ENTITIES/mobs_mc/pig.lua index 14c9595b6..84ff996f2 100644 --- a/mods/ENTITIES/mobs_mc/pig.lua +++ b/mods/ENTITIES/mobs_mc/pig.lua @@ -1,6 +1,6 @@ --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) mobs:register_mob("mobs_mc:pig", { description = S("Pig"), diff --git a/mods/ENTITIES/mobs_mc/polar_bear.lua b/mods/ENTITIES/mobs_mc/polar_bear.lua index 0476229b5..0f5296d35 100644 --- a/mods/ENTITIES/mobs_mc/polar_bear.lua +++ b/mods/ENTITIES/mobs_mc/polar_bear.lua @@ -1,6 +1,6 @@ --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### POLARBEAR diff --git a/mods/ENTITIES/mobs_mc/rabbit.lua b/mods/ENTITIES/mobs_mc/rabbit.lua index 3214925ac..8c2675954 100644 --- a/mods/ENTITIES/mobs_mc/rabbit.lua +++ b/mods/ENTITIES/mobs_mc/rabbit.lua @@ -1,6 +1,6 @@ --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) local rabbit = { description = S("Rabbit"), diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index 7e01a1403..76f933a6b 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -1,6 +1,6 @@ --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### SHEEP @@ -38,7 +38,7 @@ local rainbow_colors = { "unicolor_red_violet" } -if minetest.get_modpath("mcl_wool") ~= nil then +if minetest.get_modpath("mcl_wool") then colors["unicolor_light_blue"] = { mobs_mc.items.wool_light_blue, "#5050FFD0" } end diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index 9932c5add..1a5c4ec84 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### SHULKER diff --git a/mods/ENTITIES/mobs_mc/silverfish.lua b/mods/ENTITIES/mobs_mc/silverfish.lua index 05485bc51..ac3991ad1 100644 --- a/mods/ENTITIES/mobs_mc/silverfish.lua +++ b/mods/ENTITIES/mobs_mc/silverfish.lua @@ -2,7 +2,7 @@ --################### SILVERFISH --################### -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) mobs:register_mob("mobs_mc:silverfish", { description = S("Silverfish"), @@ -61,7 +61,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then description = "Stone Monster Egg", tiles = {"default_stone.png"}, groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1}, - drop = '', + drop = "", is_ground_content = true, sounds = default.node_sound_stone_defaults(), after_dig_node = spawn_silverfish, @@ -72,7 +72,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then tiles = {"default_cobble.png"}, is_ground_content = false, groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1}, - drop = '', + drop = "", sounds = default.node_sound_stone_defaults(), after_dig_node = spawn_silverfish, }) @@ -82,7 +82,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then tiles = {"default_mossycobble.png"}, is_ground_content = false, groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1}, - drop = '', + drop = "", sounds = default.node_sound_stone_defaults(), after_dig_node = spawn_silverfish, }) @@ -94,7 +94,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then tiles = {"default_stone_brick.png"}, is_ground_content = false, groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1}, - drop = '', + drop = "", sounds = default.node_sound_stone_defaults(), after_dig_node = spawn_silverfish, }) @@ -104,7 +104,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then tiles = {"default_stone_block.png"}, is_ground_content = false, groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1}, - drop = '', + drop = "", sounds = default.node_sound_stone_defaults(), after_dig_node = spawn_silverfish, }) diff --git a/mods/ENTITIES/mobs_mc/skeleton+stray.lua b/mods/ENTITIES/mobs_mc/skeleton+stray.lua index e0aaef215..f0e728e08 100644 --- a/mods/ENTITIES/mobs_mc/skeleton+stray.lua +++ b/mods/ENTITIES/mobs_mc/skeleton+stray.lua @@ -3,8 +3,8 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") -local mod_bows = minetest.get_modpath("mcl_bows") ~= nil +local S = minetest.get_translator(minetest.get_current_modname()) +local mod_bows = minetest.get_modpath("mcl_bows") --################### --################### SKELETON diff --git a/mods/ENTITIES/mobs_mc/skeleton_wither.lua b/mods/ENTITIES/mobs_mc/skeleton_wither.lua index 279a1d8cb..a6b48d428 100644 --- a/mods/ENTITIES/mobs_mc/skeleton_wither.lua +++ b/mods/ENTITIES/mobs_mc/skeleton_wither.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### WITHER SKELETON diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 0cae6757d..48aacfcce 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -1,6 +1,6 @@ --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) -- Returns a function that spawns children in a circle around pos. -- To be used as on_die callback. @@ -41,10 +41,10 @@ local spawn_children_on_die = function(child_mob, children_count, spawn_distance -- If mother was murdered, children attack the killer after 1 second if self.state == "attack" then minetest.after(1.0, function(children, enemy) - for c=1, #children do + for c = 1, #children do local child = children[c] local le = child:get_luaentity() - if le ~= nil then + if le then le.state = "attack" le.attack = enemy end diff --git a/mods/ENTITIES/mobs_mc/snowman.lua b/mods/ENTITIES/mobs_mc/snowman.lua index 93f91c330..9e2fae4d4 100644 --- a/mods/ENTITIES/mobs_mc/snowman.lua +++ b/mods/ENTITIES/mobs_mc/snowman.lua @@ -3,12 +3,12 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) local snow_trail_frequency = 0.5 -- Time in seconds for checking to add a new snow trail local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false -local mod_throwing = minetest.get_modpath("mcl_throwing") ~= nil +local mod_throwing = minetest.get_modpath("mcl_throwing") local gotten_texture = { "mobs_mc_snowman.png", diff --git a/mods/ENTITIES/mobs_mc/spider.lua b/mods/ENTITIES/mobs_mc/spider.lua index 6ade915ab..e1be9c3ed 100644 --- a/mods/ENTITIES/mobs_mc/spider.lua +++ b/mods/ENTITIES/mobs_mc/spider.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### SPIDER diff --git a/mods/ENTITIES/mobs_mc/squid.lua b/mods/ENTITIES/mobs_mc/squid.lua index 55d4b05c3..ccd73296a 100644 --- a/mods/ENTITIES/mobs_mc/squid.lua +++ b/mods/ENTITIES/mobs_mc/squid.lua @@ -4,7 +4,7 @@ --################### SQUID --################### -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) mobs:register_mob("mobs_mc:squid", { description = S("Squid"), diff --git a/mods/ENTITIES/mobs_mc/vex.lua b/mods/ENTITIES/mobs_mc/vex.lua index da162e5bf..22f1e70d2 100644 --- a/mods/ENTITIES/mobs_mc/vex.lua +++ b/mods/ENTITIES/mobs_mc/vex.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### VEX diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index 4e4b40553..06cec9ed6 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -19,7 +19,7 @@ -- TODO: Internal inventory, pick up items, trade with other villagers -- TODO: Farm stuff -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) local N = function(s) return s end local F = minetest.formspec_escape diff --git a/mods/ENTITIES/mobs_mc/villager_evoker.lua b/mods/ENTITIES/mobs_mc/villager_evoker.lua index f87483e2b..030da5470 100644 --- a/mods/ENTITIES/mobs_mc/villager_evoker.lua +++ b/mods/ENTITIES/mobs_mc/villager_evoker.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### EVOKER diff --git a/mods/ENTITIES/mobs_mc/villager_illusioner.lua b/mods/ENTITIES/mobs_mc/villager_illusioner.lua index 46b8760a1..bec5762e5 100644 --- a/mods/ENTITIES/mobs_mc/villager_illusioner.lua +++ b/mods/ENTITIES/mobs_mc/villager_illusioner.lua @@ -3,8 +3,8 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") -local mod_bows = minetest.get_modpath("mcl_bows") ~= nil +local S = minetest.get_translator(minetest.get_current_modname()) +local mod_bows = minetest.get_modpath("mcl_bows") mobs:register_mob("mobs_mc:illusioner", { description = S("Illusioner"), diff --git a/mods/ENTITIES/mobs_mc/villager_vindicator.lua b/mods/ENTITIES/mobs_mc/villager_vindicator.lua index 7df54ef58..6a6999b96 100644 --- a/mods/ENTITIES/mobs_mc/villager_vindicator.lua +++ b/mods/ENTITIES/mobs_mc/villager_vindicator.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### VINDICATOR diff --git a/mods/ENTITIES/mobs_mc/villager_zombie.lua b/mods/ENTITIES/mobs_mc/villager_zombie.lua index 450710c49..088839b65 100644 --- a/mods/ENTITIES/mobs_mc/villager_zombie.lua +++ b/mods/ENTITIES/mobs_mc/villager_zombie.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### ZOMBIE VILLAGER diff --git a/mods/ENTITIES/mobs_mc/witch.lua b/mods/ENTITIES/mobs_mc/witch.lua index 0c72d0018..34492a1b7 100644 --- a/mods/ENTITIES/mobs_mc/witch.lua +++ b/mods/ENTITIES/mobs_mc/witch.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### WITCH diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index 8bd8f5341..22e095d98 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### WITHER diff --git a/mods/ENTITIES/mobs_mc/wolf.lua b/mods/ENTITIES/mobs_mc/wolf.lua index 2ce142c33..0b685d40f 100644 --- a/mods/ENTITIES/mobs_mc/wolf.lua +++ b/mods/ENTITIES/mobs_mc/wolf.lua @@ -1,6 +1,6 @@ --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) local default_walk_chance = 50 diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index 7d0fb1491..e1247d8bd 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### ZOMBIE diff --git a/mods/ENTITIES/mobs_mc/zombiepig.lua b/mods/ENTITIES/mobs_mc/zombiepig.lua index 72a19f413..b4088deef 100644 --- a/mods/ENTITIES/mobs_mc/zombiepig.lua +++ b/mods/ENTITIES/mobs_mc/zombiepig.lua @@ -3,7 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes -local S = minetest.get_translator("mobs_mc") +local S = minetest.get_translator(minetest.get_current_modname()) --################### --################### ZOMBIE PIGMAN diff --git a/mods/ENVIRONMENT/mcl_void_damage/init.lua b/mods/ENVIRONMENT/mcl_void_damage/init.lua index c3819c1da..084028dd1 100644 --- a/mods/ENVIRONMENT/mcl_void_damage/init.lua +++ b/mods/ENVIRONMENT/mcl_void_damage/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_void_damage") +local S = minetest.get_translator(minetest.get_current_modname()) --local enable_damage = minetest.settings:get_bool("enable_damage") local pos_to_dim = mcl_worlds.pos_to_dimension diff --git a/mods/ENVIRONMENT/mcl_weather/init.lua b/mods/ENVIRONMENT/mcl_weather/init.lua index e4ebfb2dc..e13242996 100644 --- a/mods/ENVIRONMENT/mcl_weather/init.lua +++ b/mods/ENVIRONMENT/mcl_weather/init.lua @@ -1,4 +1,4 @@ -local modpath = minetest.get_modpath("mcl_weather") +local modpath = minetest.get_modpath(minetest.get_current_modname()) mcl_weather = {} @@ -12,6 +12,6 @@ dofile(modpath.."/snow.lua") dofile(modpath.."/rain.lua") dofile(modpath.."/nether_dust.lua") -if minetest.get_modpath("lightning") ~= nil then +if minetest.get_modpath("lightning") then dofile(modpath.."/thunder.lua") end diff --git a/mods/ENVIRONMENT/mcl_weather/rain.lua b/mods/ENVIRONMENT/mcl_weather/rain.lua index c128da942..220b61006 100644 --- a/mods/ENVIRONMENT/mcl_weather/rain.lua +++ b/mods/ENVIRONMENT/mcl_weather/rain.lua @@ -96,7 +96,7 @@ end -- be sure to remove sound before removing player otherwise soundhandler reference will be lost. 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 + if player_meta and player_meta.origin_sky then player:set_clouds({color="#FFF0F0E5"}) mcl_weather.players[player:get_player_name()] = nil end @@ -120,12 +120,12 @@ end) -- when player stay on 'edge' where sound should play and stop depending from random raindrop appearance. 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 + if player_meta then + if player_meta.sound_updated and player_meta.sound_updated + 5 > minetest.get_gametime() then return false end - if player_meta.sound_handler ~= nil then + if player_meta.sound_handler then if mcl_weather.rain.last_rp_count == 0 then minetest.sound_fade(player_meta.sound_handler, -0.5, 0.0) player_meta.sound_handler = nil @@ -141,7 +141,7 @@ end -- rain sound removed from 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 + if player_meta and player_meta.sound_handler then minetest.sound_fade(player_meta.sound_handler, -0.5, 0.0) player_meta.sound_handler = nil player_meta.sound_updated = nil diff --git a/mods/ENVIRONMENT/mcl_weather/weather_core.lua b/mods/ENVIRONMENT/mcl_weather/weather_core.lua index b41887208..34f69406d 100644 --- a/mods/ENVIRONMENT/mcl_weather/weather_core.lua +++ b/mods/ENVIRONMENT/mcl_weather/weather_core.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_weather") +local S = minetest.get_translator(minetest.get_current_modname()) local math = math @@ -49,7 +49,7 @@ minetest.register_on_shutdown(save_weather) function mcl_weather.get_rand_end_time(min_duration, max_duration) local r - if min_duration ~= nil and max_duration ~= nil then + if min_duration and max_duration then r = math.random(min_duration, max_duration) else r = math.random(mcl_weather.min_duration, mcl_weather.max_duration) @@ -170,8 +170,8 @@ end function mcl_weather.change_weather(new_weather, explicit_end_time, changer_name) local changer_name = changer_name or debug.getinfo(2).name.."()" - if (mcl_weather.reg_weathers ~= nil and mcl_weather.reg_weathers[new_weather] ~= nil) then - if (mcl_weather.state ~= nil and mcl_weather.reg_weathers[mcl_weather.state] ~= nil) then + if (mcl_weather.reg_weathers and mcl_weather.reg_weathers[new_weather]) then + if (mcl_weather.state and mcl_weather.reg_weathers[mcl_weather.state]) then mcl_weather.reg_weathers[mcl_weather.state].clear() end @@ -269,7 +269,7 @@ minetest.register_chatcommand("toggledownfall", { -- Configuration setting which allows user to disable ABM for weathers (if they use it). -- Weather mods expected to be use this flag before registering ABM. local weather_allow_abm = minetest.settings:get_bool("weather_allow_abm") -if weather_allow_abm ~= nil and weather_allow_abm == false then +if weather_allow_abm == false then mcl_weather.allow_abm = false end diff --git a/mods/HELP/doc/doc/init.lua b/mods/HELP/doc/doc/init.lua index cadfff442..304900753 100644 --- a/mods/HELP/doc/doc/init.lua +++ b/mods/HELP/doc/doc/init.lua @@ -1,6 +1,10 @@ -local S = minetest.get_translator("doc") +local S = minetest.get_translator(minetest.get_current_modname()) local F = function(f) return minetest.formspec_escape(S(f)) end +local mod_central_messages = minetest.get_modpath("central_message") +local mod_inventory_plus = minetest.get_modpath("inventory_plus") + +local math = math local colorize = minetest.colorize doc = {} @@ -63,7 +67,7 @@ local set_category_order_was_called = false local function get_entry(category_id, entry_id) local category = doc.data.categories[category_id] local entry - if category ~= nil then + if category then entry = category.entries[entry_id] end if category == nil or entry == nil then @@ -93,7 +97,7 @@ end -- Add a new category function doc.add_category(id, def) - if doc.data.categories[id] == nil and id ~= nil then + if doc.data.categories[id] == nil and id then doc.data.categories[id] = {} doc.data.categories[id].entries = {} doc.data.categories[id].entry_count = 0 @@ -123,7 +127,7 @@ end -- Add a new entry function doc.add_entry(category_id, entry_id, def) local cat = doc.data.categories[category_id] - if cat ~= nil then + if cat then local hidden = def.hidden or (def.hidden == nil and cat.def.hide_entries_by_default) if hidden then cat.hidden_count = cat.hidden_count + 1 @@ -177,7 +181,7 @@ function doc.mark_entry_as_revealed(playername, category_id, entry_id) doc.data.players[playername].entry_textlist_needs_updating = true -- Notify player of entry revelation if doc.data.players[playername].stored_data.notify_on_reveal == true then - if minetest.get_modpath("central_message") ~= nil then + if mod_central_messages then local cat = doc.data.categories[category_id] cmsg.push_message_player(minetest.get_player_by_name(playername), S("New help entry unlocked: @1 > @2", cat.def.name, entry.name)) end @@ -224,7 +228,7 @@ function doc.mark_all_entries_as_revealed(playername) msg = S("All help entries are already revealed.") end -- Notify - if minetest.get_modpath("central_message") ~= nil then + if mod_central_messages then cmsg.push_message_player(minetest.get_player_by_name(playername), msg) else minetest.chat_send_player(playername, msg) @@ -427,7 +431,7 @@ end -- Returns the currently viewed entry and/or category of the player function doc.get_selection(playername) local playerdata = doc.data.players[playername] - if playerdata ~= nil then + if playerdata then local cat = playerdata.category if cat then local entry = playerdata.entry @@ -459,7 +463,7 @@ function doc.entry_builders.text_and_gallery(data, playername) local stolen_height = 0 local formstring = "" -- Only add the gallery if images are in the data, otherwise, the text widget gets all of the space - if data.images ~= nil then + if data.images then local gallery gallery, stolen_height = doc.widgets.gallery(data.images, playername, nil, doc.FORMSPEC.ENTRY_END_Y + 0.2, nil, nil, nil, nil, false) formstring = formstring .. gallery @@ -605,7 +609,7 @@ do minetest.log("action", "[doc] doc.mt opened.") local string = file:read() io.close(file) - if(string ~= nil) then + if string then local savetable = minetest.deserialize(string) for name, players_stored_data in pairs(savetable.players_stored_data) do doc.data.players[name] = {} @@ -672,13 +676,13 @@ function doc.formspec_main(playername) local data = doc.data.categories[id] local bw = doc.FORMSPEC.WIDTH / math.floor(((doc.data.category_count-1) / CATEGORYFIELDSIZE.HEIGHT)+1) -- Skip categories which do not exist - if data ~= nil then + if data then -- Category buton local button = "button["..((x-1)*bw)..","..y..";"..bw..",1;doc_button_category_"..id..";"..minetest.formspec_escape(data.def.name).."]" local tooltip = "" -- Optional description - if data.def.description ~= nil then - tooltip = "tooltip[doc_button_category_"..id..";"..minetest.formspec_escape(data.def.description).."]" + if data.def.description then + tooltip = "tooltip[doc_button_category_"..id..";"..minetest.formspec_escape(data.def.description).."]" end formstring = formstring .. button .. tooltip y = y + 1 @@ -701,7 +705,7 @@ function doc.formspec_main(playername) end end local sel = doc.data.categories[doc.data.players[playername].category] - if sel ~= nil then + if sel then formstring = formstring .. ";" formstring = formstring .. doc.data.categories[doc.data.players[playername].category].order_position end @@ -711,7 +715,7 @@ function doc.formspec_main(playername) notify_checkbox_y = doc.FORMSPEC.HEIGHT-1 end local text - if minetest.get_modpath("central_message") then + if mod_central_messages then text = F("Notify me when new help is available") else text = F("Play notification sound when new help is available") @@ -944,7 +948,7 @@ function doc.process_form(player,formname,fields) local playername = player:get_player_name() --[[ process clicks on the tab header ]] if(formname == "doc:main" or formname == "doc:category" or formname == "doc:entry") then - if fields.doc_header ~= nil then + if fields.doc_header then local tab = tonumber(fields.doc_header) local formspec, subformname, contents local cid, eid @@ -959,7 +963,7 @@ function doc.process_form(player,formname,fields) elseif(tab==3) then doc.data.players[playername].galidx = 1 contents = doc.formspec_entry(cid, eid, playername) - if cid ~= nil and eid ~= nil then + if cid and eid then doc.mark_entry_as_viewed(playername, cid, eid) end subformname = "entry" @@ -984,7 +988,7 @@ function doc.process_form(player,formname,fields) if fields["doc_mainlist"] then local event = minetest.explode_textlist_event(fields["doc_mainlist"]) local cid = doc.data.category_order[event.index] - if cid ~= nil then + if cid then if event.type == "CHG" then doc.data.players[playername].catsel = nil doc.data.players[playername].category = cid @@ -1014,10 +1018,10 @@ function doc.process_form(player,formname,fields) elseif(formname == "doc:category") then if fields["doc_button_goto_entry"] then local cid = doc.data.players[playername].category - if cid ~= nil then + if cid then local eid = nil local eids, catsel = doc.data.players[playername].entry_ids, doc.data.players[playername].catsel - if eids ~= nil and catsel ~= nil then + if eids and catsel then eid = eids[catsel] end doc.data.players[playername].galidx = 1 @@ -1040,7 +1044,7 @@ function doc.process_form(player,formname,fields) local cid = doc.data.players[playername].category local eid = nil local eids, catsel = doc.data.players[playername].entry_ids, event.index - if eids ~= nil and catsel ~= nil then + if eids and catsel then eid = eids[catsel] end doc.mark_entry_as_viewed(playername, cid, eid) @@ -1101,7 +1105,7 @@ function doc.process_form(player,formname,fields) minetest.show_formspec(playername, "doc:entry", formspec) end else - if fields["doc_inventory_plus"] and minetest.get_modpath("inventory_plus") then + if fields["doc_inventory_plus"] and mod_inventory_plus then doc.show_doc(playername) return end @@ -1169,7 +1173,7 @@ minetest.register_on_joinplayer(function(player) end -- Add button for Inventory++ - if minetest.get_modpath("inventory_plus") ~= nil then + if mod_inventory_plus then inventory_plus.register_button(player, "doc_inventory_plus", S("Help")) end end) @@ -1180,7 +1184,7 @@ local function button_action(player) end -- Unified Inventory -if minetest.get_modpath("unified_inventory") ~= nil then +if minetest.get_modpath("unified_inventory") then unified_inventory.register_button("doc", { type = "image", image = "doc_button_icon_hires.png", @@ -1190,7 +1194,7 @@ if minetest.get_modpath("unified_inventory") ~= nil then end -- sfinv_buttons -if minetest.get_modpath("sfinv_buttons") ~= nil then +if minetest.get_modpath("sfinv_buttons") then sfinv_buttons.register_button("doc", { image = "doc_button_icon_lores.png", tooltip = S("Collection of help texts"), diff --git a/mods/HELP/doc/doc_identifier/init.lua b/mods/HELP/doc/doc_identifier/init.lua index a74eb16a3..c1c2043d3 100644 --- a/mods/HELP/doc/doc_identifier/init.lua +++ b/mods/HELP/doc/doc_identifier/init.lua @@ -1,5 +1,7 @@ local S = minetest.get_translator(minetest.get_current_modname()) +local mod_doc_basics = minetest.get_modpath("doc_basics") + local doc_identifier = {} doc_identifier.registered_objects = {} @@ -25,9 +27,9 @@ function doc_identifier.identify(itemstack, user, pointed_thing) elseif itype == "error_unknown" then vsize = vsize + 2 local mod - if param ~= nil then + if param then local colon = string.find(param, ":") - if colon ~= nil and colon > 1 then + if colon and colon > 1 then mod = string.sub(param,1,colon-1) end end @@ -37,8 +39,8 @@ function doc_identifier.identify(itemstack, user, pointed_thing) S("• The author of the game or a mod has made a mistake") message = message .. "\n\n" - if mod ~= nil then - if minetest.get_modpath(mod) ~= nil then + if mod then + if minetest.get_modpath(mod) then message = message .. S("It appears to originate from the mod “@1”, which is enabled.", mod) message = message .. "\n" else @@ -46,7 +48,7 @@ function doc_identifier.identify(itemstack, user, pointed_thing) message = message .. "\n" end end - if param ~= nil then + if param then message = message .. S("Its identifier is “@1”.", param) end elseif itype == "error_ignore" then @@ -67,7 +69,7 @@ function doc_identifier.identify(itemstack, user, pointed_thing) if pointed_thing.type == "node" then local pos = pointed_thing.under local node = minetest.get_node(pos) - if minetest.registered_nodes[node.name] ~= nil then + if minetest.registered_nodes[node.name] then --local nodedef = minetest.registered_nodes[node.name] if(node.name == "ignore") then show_message(username, "error_ignore") @@ -83,14 +85,14 @@ function doc_identifier.identify(itemstack, user, pointed_thing) local object = pointed_thing.ref local le = object:get_luaentity() if object:is_player() then - if minetest.get_modpath("doc_basics") ~= nil and doc.entry_exists("basics", "players") then + if mod_doc_basics and doc.entry_exists("basics", "players") then doc.show_entry(username, "basics", "players", true) else -- Fallback message show_message(username, "player") end -- luaentity exists - elseif le ~= nil then + elseif le then local ro = doc_identifier.registered_objects[le.name] -- Dropped items if le.name == "__builtin:item" then @@ -113,7 +115,7 @@ function doc_identifier.identify(itemstack, user, pointed_thing) doc.show_entry(username, "nodes", itemstring, true) end -- A known registered object - elseif ro ~= nil then + elseif ro then doc.show_entry(username, ro.category, ro.entry, true) -- Undefined object (error) elseif minetest.registered_entities[le.name] == nil then @@ -196,7 +198,7 @@ minetest.register_craft({ {"group:stick", ""} } }) -if minetest.get_modpath("mcl_core") ~= nil then +if minetest.get_modpath("mcl_core") then minetest.register_craft({ output = "doc_identifier:identifier_solid", recipe = { { "mcl_core:glass" }, diff --git a/mods/HELP/doc/doc_items/init.lua b/mods/HELP/doc/doc_items/init.lua index d492e6cf4..325ad9abb 100644 --- a/mods/HELP/doc/doc_items/init.lua +++ b/mods/HELP/doc/doc_items/init.lua @@ -42,12 +42,12 @@ local forbidden_core_factoids = {} -- Helper functions local function yesno(bool) if bool == true then - return S("Yes") + return S("Yes") elseif bool == false then - return S("No") + return S("No") else - return "N/A" - end + return "N/A" + end end local function groups_to_string(grouptable, filter) @@ -60,7 +60,7 @@ local function groups_to_string(grouptable, filter) -- List seperator gstring = gstring .. S(", ") end - if groupdefs[id] ~= nil and doc.sub.items.settings.friendly_group_names == true then + if groupdefs[id] and doc.sub.items.settings.friendly_group_names == true then gstring = gstring .. groupdefs[id] else gstring = gstring .. id @@ -123,9 +123,9 @@ end local function get_entry_name(itemstring) local def = minetest.registered_items[itemstring] - if def._doc_items_entry_name ~= nil then + if def._doc_items_entry_name then return def._doc_items_entry_name - elseif item_name_overrides[itemstring] ~= nil then + elseif item_name_overrides[itemstring] then return item_name_overrides[itemstring] else return def.description @@ -133,7 +133,7 @@ local function get_entry_name(itemstring) end function doc.sub.items.get_group_name(groupname) - if groupdefs[groupname] ~= nil and doc.sub.items.settings.friendly_group_names == true then + if groupdefs[groupname] and doc.sub.items.settings.friendly_group_names == true then return groupdefs[groupname] else return groupname @@ -163,9 +163,9 @@ local function factoid_toolcaps(tool_capabilities, check_uses) local formstring = "" if check_uses == nil then check_uses = false end - if tool_capabilities ~= nil and tool_capabilities ~= {} then + if tool_capabilities and tool_capabilities ~= {} then local groupcaps = tool_capabilities.groupcaps - if groupcaps ~= nil then + if groupcaps then local miningcapstr = "" local miningtimesstr = "" local miningusesstr = "" @@ -198,7 +198,7 @@ local function factoid_toolcaps(tool_capabilities, check_uses) caplines = caplines + 1 for rating=3, 1, -1 do - if v.times ~= nil and v.times[rating] ~= nil then + if v.times and v.times[rating] then local maxtime = v.times[rating] local mintime local mintimestr, maxtimestr @@ -265,7 +265,7 @@ local function factoid_toolcaps(tool_capabilities, check_uses) -- Weapon data local damage_groups = tool_capabilities.damage_groups - if damage_groups ~= nil then + if damage_groups then formstring = formstring .. S("This is a melee weapon which deals damage by punching.") .. "\n" -- Damage groups formstring = formstring .. S("Maximum damage per hit:") .. "\n" @@ -276,7 +276,7 @@ local function factoid_toolcaps(tool_capabilities, check_uses) -- Full punch interval local punch = 1.0 - if tool_capabilities.full_punch_interval ~= nil then + if tool_capabilities.full_punch_interval then punch = tool_capabilities.full_punch_interval end formstring = formstring .. S("Full punch interval: @1 s", string.format("%.1f", punch)) @@ -302,7 +302,7 @@ local function factoid_mining_node(data) -- Check if there are no mining groups at all local nogroups = true for groupname,_ in pairs(mininggroups) do - if data.def.groups[groupname] ~= nil or groupname == "dig_immediate" then + if data.def.groups[groupname] or groupname == "dig_immediate" then nogroups = false break end @@ -334,7 +334,7 @@ local function factoid_mining_node(data) local minegroupcount = 0 for group,_ in pairs(mininggroups) do local rating = data.def.groups[group] - if rating ~= nil then + if rating then mstring = mstring .. S("• @1: @2", doc.sub.items.get_group_name(group), rating).."\n" minegroupcount = minegroupcount + 1 end @@ -358,14 +358,14 @@ local function range_factoid(itemstring, def) local handrange = minetest.registered_items[""].range local itemrange = def.range if itemstring == "" then - if handrange ~= nil then + if handrange then return S("Range: @1", itemrange) else return S("Range: 4") end else if handrange == nil then handrange = 4 end - if itemrange ~= nil then + if itemrange then return S("Range: @1", itemrange) else return S("Range: @1 (@2)", get_entry_name(""), handrange) @@ -381,7 +381,7 @@ local function factoid_fuel(itemstring, ctype) local formstring = "" local result, decremented = minetest.get_craft_result({method = "fuel", items = {itemstring}}) - if result ~= nil and result.time > 0 then + if result and result.time > 0 then local base local burntext = burntime_to_text(result.time) if ctype == "tools" then @@ -424,7 +424,7 @@ local function entry_image(data) formstring = formstring .. "image["..(doc.FORMSPEC.ENTRY_END_X-1)..","..doc.FORMSPEC.ENTRY_START_Y..";1,1;".. minetest.registered_items[""].wield_image.."]" -- Other items - elseif data.image ~= nil then + elseif data.image then formstring = formstring .. "image["..(doc.FORMSPEC.ENTRY_END_X-1)..","..doc.FORMSPEC.ENTRY_START_Y..";1,1;"..data.image.."]" else formstring = formstring .. "item_image["..(doc.FORMSPEC.ENTRY_END_X-1)..","..doc.FORMSPEC.ENTRY_START_Y..";1,1;"..data.itemstring.."]" @@ -442,7 +442,7 @@ factoid_generators.craftitems = {} --[[ Returns a list of all registered factoids for the specified category and type * category_id: Identifier of the Documentation System category in which the factoid appears * factoid_type: If set, oly returns factoid with a matching factoid_type. - If nil, all factoids for this category will be generated + If nil, all factoids for this category will be generated * data: Entry data to parse ]] local function factoid_custom(category_id, factoid_type, data) local ftable = factoid_generators[category_id] @@ -466,11 +466,11 @@ local function factoids_header(data, ctype) local longdesc = data.longdesc local usagehelp = data.usagehelp - if longdesc ~= nil then + if longdesc then datastring = datastring .. S("Description: @1", longdesc) datastring = newline2(datastring) end - if usagehelp ~= nil then + if usagehelp then datastring = datastring .. S("Usage help: @1", usagehelp) datastring = newline2(datastring) end @@ -494,7 +494,7 @@ local function factoids_header(data, ctype) datastring = datastring .. S("This item points to liquids.").."\n" end end - if data.def.on_use ~= nil then + if data.def.on_use then if ctype == "nodes" then datastring = datastring .. S("Punches with this block don't work as usual; melee combat and mining are either not possible or work differently.").."\n" elseif ctype == "tools" then @@ -528,7 +528,7 @@ local function factoids_footer(data, playername, ctype) -- Show other “exposable” groups if not forbidden_core_factoids.groups then local gstring, gcount = groups_to_string(data.def.groups, miscgroups) - if gstring ~= nil then + if gstring then if gcount == 1 then if ctype == "nodes" then datastring = datastring .. S("This block belongs to the @1 group.", gstring) .. "\n" @@ -607,7 +607,7 @@ doc.add_category("nodes", { datastring = datastring .. S("This block is a liquid with these properties:") .. "\n" local range, renew, viscos if data.def.liquid_range then range = data.def.liquid_range else range = 8 end - if data.def.liquid_renewable ~= nil then renew = data.def.liquid_renewable else renew = true end + if data.def.liquid_renewable then renew = data.def.liquid_renewable else renew = true end if data.def.liquid_viscosity then viscos = data.def.liquid_viscosity else viscos = 0 end if renew then datastring = datastring .. S("• Renewable") .. "\n" @@ -627,7 +627,7 @@ doc.add_category("nodes", { --- Direct interaction with the player ---- Damage (very important) if not forbidden_core_factoids.node_damage then - if data.def.damage_per_second ~= nil and data.def.damage_per_second > 1 then + if data.def.damage_per_second and data.def.damage_per_second > 1 then datastring = datastring .. S("This block causes a damage of @1 hit points per second.", data.def.damage_per_second) .. "\n" elseif data.def.damage_per_second == 1 then datastring = datastring .. S("This block causes a damage of @1 hit point per second.", data.def.damage_per_second) .. "\n" @@ -640,7 +640,7 @@ doc.add_category("nodes", { end end local fdap = data.def.groups.fall_damage_add_percent - if fdap ~= nil and fdap ~= 0 then + if fdap and fdap ~= 0 then if fdap > 0 then datastring = datastring .. S("The fall damage on this block is increased by @1%.", fdap) .. "\n" elseif fdap <= -100 then @@ -662,11 +662,11 @@ doc.add_category("nodes", { datastring = datastring .. S("This block can be climbed.").."\n" end local bouncy = data.def.groups.bouncy - if bouncy ~= nil and bouncy ~= 0 then + if bouncy and bouncy ~= 0 then datastring = datastring .. S("This block will make you bounce off with an elasticity of @1%.", bouncy).."\n" end local slippery = data.def.groups.slippery - if slippery ~= nil and slippery ~= 0 then + if slippery and slippery ~= 0 then datastring = datastring .. S("This block is slippery.") .. "\n" end datastring = datastring .. factoid_custom("nodes", "movement", data) @@ -766,7 +766,7 @@ doc.add_category("nodes", { datastring = newline2(datastring) --- List nodes/groups to which this node connects to - if not forbidden_core_factoids.connects_to and data.def.connects_to ~= nil then + if not forbidden_core_factoids.connects_to and data.def.connects_to then local nodes = {} local groups = {} for c=1,#data.def.connects_to do @@ -781,7 +781,7 @@ doc.add_category("nodes", { local nstring = "" for n=1,#nodes do local name - if item_name_overrides[nodes[n]] ~= nil then + if item_name_overrides[nodes[n]] then name = item_name_overrides[nodes[n]] else name = description_for_formspec(nodes[n]) @@ -789,7 +789,7 @@ doc.add_category("nodes", { if n > 1 then nstring = nstring .. S(", ") end - if name ~= nil then + if name then nstring = nstring .. name else nstring = nstring .. S("Unknown Node") @@ -820,7 +820,7 @@ doc.add_category("nodes", { datastring = newline2(datastring) -- Non-default drops - if not forbidden_core_factoids.drops and data.def.drop ~= nil and data.def.drop ~= data.itemstring and data.itemstring ~= "air" then + if not forbidden_core_factoids.drops and data.def.drop and data.def.drop ~= data.itemstring and data.itemstring ~= "air" then -- TODO: Calculate drop probabilities of max > 1 like for max == 1 local function get_desc(stack) return description_for_formspec(stack:get_name()) @@ -838,7 +838,7 @@ doc.add_category("nodes", { datastring = datastring .. S("This block will drop the following when mined: @1.", desc).."\n" end end - elseif type(data.def.drop) == "table" and data.def.drop.items ~= nil then + elseif type(data.def.drop) == "table" and data.def.drop.items then local max = data.def.drop.max_items local dropstring = "" local dropstring_base @@ -892,7 +892,7 @@ doc.add_category("nodes", { if chance > 0 then probtable = {} probtable.items = {} - for j=1,#data.def.drop.items[i].items do + for j = 1, #data.def.drop.items[i].items do local dropstack = ItemStack(data.def.drop.items[i].items[j]) local itemstring = dropstack:get_name() local desc = get_desc(dropstack) @@ -963,7 +963,7 @@ doc.add_category("nodes", { dropstring = dropstring .. dropstring_this pcount = pcount + 1 end - if max ~= nil and max > 1 then + if max and max > 1 then datastring = datastring .. S(dropstring_base, max, dropstring) else datastring = datastring .. S(dropstring_base, dropstring) @@ -998,15 +998,15 @@ doc.add_category("tools", { if entries[2].eid == "" then return false end local comp = {} - for e=1, 2 do + for e = 1, 2 do comp[e] = {} end -- No tool capabilities: Instant loser - if entries[1].data.def.tool_capabilities == nil and entries[2].data.def.tool_capabilities ~= nil then return false end - if entries[2].data.def.tool_capabilities == nil and entries[1].data.def.tool_capabilities ~= nil then return true end + if entries[1].data.def.tool_capabilities == nil and entries[2].data.def.tool_capabilities then return false end + if entries[2].data.def.tool_capabilities == nil and entries[1].data.def.tool_capabilities then return true end -- No tool capabilities for both: Compare by uses if entries[1].data.def.tool_capabilities == nil and entries[2].data.def.tool_capabilities == nil then - for e=1, 2 do + for e = 1, 2 do if type(entries[e].data.def._doc_items_durability) == "number" then comp[e].uses = entries[e].data.def._doc_items_durability else @@ -1061,7 +1061,7 @@ doc.add_category("tools", { comp[e].count = groupcount comp[e].group = group comp[e].mintime = mintime - if realuses ~= nil then + if realuses then comp[e].uses = realuses elseif type(entries[e].data.def._doc_items_durability) == "number" then comp[e].uses = entries[e].data.def._doc_items_durability @@ -1166,9 +1166,9 @@ local function gather_descs() -- 1st pass: Gather groups of interest for id, def in pairs(minetest.registered_items) do -- Gather all groups used for mining - if def.tool_capabilities ~= nil then + if def.tool_capabilities then local groupcaps = def.tool_capabilities.groupcaps - if groupcaps ~= nil then + if groupcaps then for k,v in pairs(groupcaps) do if mininggroups[k] ~= true then mininggroups[k] = true @@ -1179,7 +1179,7 @@ local function gather_descs() -- ... and gather all groups which appear in crafting recipes local crafts = minetest.get_all_craft_recipes(id) - if crafts ~= nil then + if crafts then for c=1,#crafts do for k,v in pairs(crafts[c].items) do if string.sub(v,1,6) == "group:" then @@ -1194,7 +1194,7 @@ local function gather_descs() end -- ... and gather all groups used in connects_to - if def.connects_to ~= nil then + if def.connects_to then for c=1, #def.connects_to do if string.sub(def.connects_to[c],1,6) == "group:" then local group = string.sub(def.connects_to[c],7,-1) @@ -1213,7 +1213,7 @@ local function gather_descs() else help.longdesc["air"] = S("A transparent block, basically empty space. It is usually left behind after digging something.") end - if minetest.registered_items["ignore"]._doc_items_create_entry ~= nil then + if minetest.registered_items["ignore"]._doc_items_create_entry then suppressed["ignore"] = minetest.registered_items["ignore"]._doc_items_create_entry == true end @@ -1246,19 +1246,19 @@ local function gather_descs() for id, def in pairs(deftable) do local name, ld, uh, im local forced = false - if def._doc_items_create_entry == true and def ~= nil then forced = true end + if def._doc_items_create_entry == true and def then forced = true end name = get_entry_name(id) if not (((def.description == nil or def.description == "") and def._doc_items_entry_name == nil) or (def._doc_items_create_entry == false) or (suppressed[id] == true)) or forced then if def._doc_items_longdesc then ld = def._doc_items_longdesc end - if help.longdesc[id] ~= nil then + if help.longdesc[id] then ld = help.longdesc[id] end if def._doc_items_usagehelp then uh = def._doc_items_usagehelp end - if help.usagehelp[id] ~= nil then + if help.usagehelp[id] then uh = help.usagehelp[id] end if def._doc_items_image then @@ -1307,13 +1307,13 @@ local function reveal_item(playername, itemstring) if itemstring == nil or itemstring == "" or playername == nil or playername == "" then return false end - if minetest.registered_nodes[itemstring] ~= nil then + if minetest.registered_nodes[itemstring] then category_id = "nodes" - elseif minetest.registered_tools[itemstring] ~= nil then + elseif minetest.registered_tools[itemstring] then category_id = "tools" - elseif minetest.registered_craftitems[itemstring] ~= nil then + elseif minetest.registered_craftitems[itemstring] then category_id = "craftitems" - elseif minetest.registered_items[itemstring] ~= nil then + elseif minetest.registered_items[itemstring] then category_id = "craftitems" else return false @@ -1333,7 +1333,7 @@ end minetest.register_on_dignode(function(pos, oldnode, digger) if digger == nil then return end local playername = digger:get_player_name() - if playername ~= nil and playername ~= "" and oldnode ~= nil then + if playername and playername ~= "" and oldnode then reveal_item(playername, oldnode.name) reveal_items_in_inventory(digger) end @@ -1342,7 +1342,7 @@ end) minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing) if puncher == nil then return end local playername = puncher:get_player_name() - if playername ~= nil and playername ~= "" and node ~= nil then + if playername and playername ~= "" and node then reveal_item(playername, node.name) end end) @@ -1350,7 +1350,7 @@ end) minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing) if placer == nil then return end local playername = placer:get_player_name() - if playername ~= nil and playername ~= "" and itemstack ~= nil and not itemstack:is_empty() then + if playername and playername ~= "" and itemstack and not itemstack:is_empty() then reveal_item(playername, itemstack:get_name()) end end) @@ -1358,7 +1358,7 @@ end) minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) if player == nil then return end local playername = player:get_player_name() - if playername ~= nil and playername ~= "" and itemstack ~= nil and not itemstack:is_empty() then + if playername and playername ~= "" and itemstack and not itemstack:is_empty() then reveal_item(playername, itemstack:get_name()) end end) @@ -1370,7 +1370,7 @@ minetest.register_on_player_inventory_action(function(player, action, inventory, if action == "take" or action == "put" then itemstack = inventory_info.stack end - if itemstack ~= nil and playername ~= nil and playername ~= "" and (not itemstack:is_empty()) then + if itemstack and playername and playername ~= "" and (not itemstack:is_empty()) then reveal_item(playername, itemstack:get_name()) end end) @@ -1378,9 +1378,9 @@ end) minetest.register_on_item_eat(function(hp_change, replace_with_item, itemstack, user, pointed_thing) if user == nil then return end local playername = user:get_player_name() - if playername ~= nil and playername ~= "" and itemstack ~= nil and not itemstack:is_empty() then + if playername and playername ~= "" and itemstack and not itemstack:is_empty() then reveal_item(playername, itemstack:get_name()) - if replace_with_item ~= nil then + if replace_with_item then reveal_item(playername, replace_with_item) end end @@ -1390,10 +1390,12 @@ minetest.register_on_joinplayer(function(player) reveal_items_in_inventory(player) end) ---[[ Periodically check all items in player inventory and reveal them all. +--[[ +Periodically check all items in player inventory and reveal them all. TODO: Check whether there's a serious performance impact on servers with many players. -TODO: If possible, try to replace this functionality by updating the revealed items as - soon the player obtained a new item (probably needs new Minetest callbacks). ]] +TODO: If possible, try to replace this functionality by updating the revealed items as soon the player obtained a new item (probably needs new Minetest callbacks). +]] + local checktime = 8 local timer = 0 minetest.register_globalstep(function(dtime) diff --git a/mods/HELP/mcl_doc/init.lua b/mods/HELP/mcl_doc/init.lua index fa6ae6c05..9be688ec2 100644 --- a/mods/HELP/mcl_doc/init.lua +++ b/mods/HELP/mcl_doc/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_doc") +local S = minetest.get_translator(minetest.get_current_modname()) -- Disable built-in factoids; it is planned to add custom ones as replacements doc.sub.items.disable_core_factoid("node_mining") @@ -50,8 +50,8 @@ end) doc.sub.items.register_factoid("nodes", "groups", function(itemstring, def) local formstring = "" - if def.groups.leafdecay ~= nil then - if def.drop ~= "" and def.drop ~= nil and def.drop ~= itemstring then + if def.groups.leafdecay then + if def.drop ~= "" and def.drop and def.drop ~= itemstring then formstring = S("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.", def.groups.leafdecay) else formstring = S("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.", def.groups.leafdecay) @@ -399,7 +399,7 @@ doc.sub.items.register_factoid("tools", "misc", function(itemstring, def) local formstring = "" -- Weapon data local damage_groups = tool_capabilities.damage_groups - if damage_groups ~= nil and damage_groups.fleshy ~= nil then + if damage_groups and damage_groups.fleshy then formstring = formstring .. S("This is a melee weapon which deals damage by punching.") .. "\n" -- Damage groups @@ -408,7 +408,7 @@ doc.sub.items.register_factoid("tools", "misc", function(itemstring, def) -- Full punch interval local punch = 1.0 - if tool_capabilities.full_punch_interval ~= nil then + if tool_capabilities.full_punch_interval then punch = tool_capabilities.full_punch_interval end formstring = formstring .. S("Full punch interval: @1 s", string.format("%.1f", punch)) diff --git a/mods/HELP/mcl_doc_basics/init.lua b/mods/HELP/mcl_doc_basics/init.lua index e700e82bd..45ce75877 100644 --- a/mods/HELP/mcl_doc_basics/init.lua +++ b/mods/HELP/mcl_doc_basics/init.lua @@ -2,7 +2,7 @@ Basic help for MCL2. Fork of doc_basics ]] -local S = minetest.get_translator("mcl_doc_basics") +local S = minetest.get_translator(minetest.get_current_modname()) doc.add_category("basics", { diff --git a/mods/HELP/mcl_doc_basics/mcl_extension.lua b/mods/HELP/mcl_doc_basics/mcl_extension.lua index c6f9f0aa9..a0f31a2c8 100644 --- a/mods/HELP/mcl_doc_basics/mcl_extension.lua +++ b/mods/HELP/mcl_doc_basics/mcl_extension.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_doc_basics") +local S = minetest.get_translator(minetest.get_current_modname()) doc.add_entry("advanced", "creative", { name = S("Creative Mode"), diff --git a/mods/HELP/mcl_tt/init.lua b/mods/HELP/mcl_tt/init.lua index 9d0113040..3451e76da 100644 --- a/mods/HELP/mcl_tt/init.lua +++ b/mods/HELP/mcl_tt/init.lua @@ -1,2 +1,4 @@ -dofile(minetest.get_modpath("mcl_tt").."/snippets_base.lua") -dofile(minetest.get_modpath("mcl_tt").."/snippets_mcl.lua") +local modpath = minetest.get_modpath(minetest.get_current_modname()) + +dofile(modpath.."/snippets_base.lua") +dofile(modpath.."/snippets_mcl.lua") \ No newline at end of file diff --git a/mods/HELP/mcl_tt/snippets_base.lua b/mods/HELP/mcl_tt/snippets_base.lua index bd5495721..4e200d539 100644 --- a/mods/HELP/mcl_tt/snippets_base.lua +++ b/mods/HELP/mcl_tt/snippets_base.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_tt") +local S = minetest.get_translator(minetest.get_current_modname()) --[[local function get_min_digtime(caps) local mintime diff --git a/mods/HELP/mcl_tt/snippets_mcl.lua b/mods/HELP/mcl_tt/snippets_mcl.lua index b10021640..3c79f52e8 100644 --- a/mods/HELP/mcl_tt/snippets_mcl.lua +++ b/mods/HELP/mcl_tt/snippets_mcl.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_tt") +local S = minetest.get_translator(minetest.get_current_modname()) -- Armor tt.register_snippet(function(itemstring) diff --git a/mods/HELP/tt/init.lua b/mods/HELP/tt/init.lua index 838aa3fa5..819bf7b81 100644 --- a/mods/HELP/tt/init.lua +++ b/mods/HELP/tt/init.lua @@ -43,7 +43,7 @@ local function apply_snippets(desc, itemstring, toolcaps, itemstack) end local function should_change(itemstring, def) - return itemstring ~= "" and itemstring ~= "air" and itemstring ~= "ignore" and itemstring ~= "unknown" and def ~= nil and def.description ~= nil and def.description ~= "" and def._tt_ignore ~= true + return itemstring ~= "" and itemstring ~= "air" and itemstring ~= "ignore" and itemstring ~= "unknown" and def and def.description and def.description ~= "" and def._tt_ignore ~= true end local function append_snippets() diff --git a/mods/HUD/awards/api.lua b/mods/HUD/awards/api.lua index d795f0dca..49b11a6cf 100644 --- a/mods/HUD/awards/api.lua +++ b/mods/HUD/awards/api.lua @@ -14,11 +14,16 @@ -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local S = minetest.get_translator(modname) + -- The global award namespace awards = { - show_mode = "hud" + show_mode = "hud", } -dofile(minetest.get_modpath("awards").."/api_helpers.lua") + +dofile(modpath.."/api_helpers.lua") -- Table Save Load Functions function awards.save() @@ -29,8 +34,6 @@ function awards.save() end end -local S = minetest.get_translator("awards") - function awards.init() awards.players = awards.load() awards.def = {} @@ -53,7 +56,7 @@ end function awards.register_trigger(name, func) awards.trigger_types[name] = func awards.on[name] = {} - awards['register_on_'..name] = function(func) + awards["register_on_"..name] = function(func) table.insert(awards.on[name], func) end end diff --git a/mods/HUD/awards/chat_commands.lua b/mods/HUD/awards/chat_commands.lua index 88e799dfe..88bed0afe 100644 --- a/mods/HUD/awards/chat_commands.lua +++ b/mods/HUD/awards/chat_commands.lua @@ -14,7 +14,7 @@ -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- -local S = minetest.get_translator("awards") +local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_chatcommand("awards", { params = S("[c|clear|disable|enable]"), diff --git a/mods/HUD/awards/init.lua b/mods/HUD/awards/init.lua index 63c9303c1..9b46fd066 100644 --- a/mods/HUD/awards/init.lua +++ b/mods/HUD/awards/init.lua @@ -14,9 +14,11 @@ -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- -dofile(minetest.get_modpath("awards").."/api.lua") -dofile(minetest.get_modpath("awards").."/chat_commands.lua") -dofile(minetest.get_modpath("awards").."/sfinv.lua") -dofile(minetest.get_modpath("awards").."/unified_inventory.lua") -dofile(minetest.get_modpath("awards").."/triggers.lua") +local modpath = minetest.get_modpath(minetest.get_current_modname()) + +dofile(modpath.."/api.lua") +dofile(modpath.."/chat_commands.lua") +dofile(modpath.."/sfinv.lua") +dofile(modpath.."/unified_inventory.lua") +dofile(modpath.."/triggers.lua") diff --git a/mods/HUD/awards/sfinv.lua b/mods/HUD/awards/sfinv.lua index 5d02cbb58..3b41d29ab 100644 --- a/mods/HUD/awards/sfinv.lua +++ b/mods/HUD/awards/sfinv.lua @@ -1,5 +1,5 @@ if minetest.get_modpath("sfinv") then - local S = minetest.get_translator("awards") + local S = minetest.get_translator(minetest.get_current_modname()) sfinv.register_page("awards:awards", { title = S("Awards"), diff --git a/mods/HUD/awards/triggers.lua b/mods/HUD/awards/triggers.lua index 995dd005c..c7194d2c9 100644 --- a/mods/HUD/awards/triggers.lua +++ b/mods/HUD/awards/triggers.lua @@ -14,7 +14,7 @@ -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- -local S = minetest.get_translator("awards") +local S = minetest.get_translator(minetest.get_current_modname()) awards.register_trigger("dig", function(def) local tmp = { @@ -382,7 +382,7 @@ end) minetest.register_on_chat_message(function(name, message) -- Run checks local idx = string.find(message,"/") - if not name or (idx ~= nil and idx <= 1) then + if not name or (idx and idx <= 1) then return end diff --git a/mods/HUD/hudbars/default_settings.lua b/mods/HUD/hudbars/default_settings.lua index ce43cc8be..865a7cb6a 100644 --- a/mods/HUD/hudbars/default_settings.lua +++ b/mods/HUD/hudbars/default_settings.lua @@ -37,7 +37,7 @@ hb.settings.alignment_pattern = hb.load_setting("hudbars_alignment_pattern", "st hb.settings.autohide_breath = hb.load_setting("hudbars_autohide_breath", "bool", true) local sorting = minetest.settings:get("hudbars_sorting") -if sorting ~= nil then +if sorting then hb.settings.sorting = {} hb.settings.sorting_reverse = {} for k,v in string.gmatch(sorting, "(%w+)=(%w+)") do diff --git a/mods/HUD/hudbars/init.lua b/mods/HUD/hudbars/init.lua index 8a1e97c9c..08f1914ca 100644 --- a/mods/HUD/hudbars/init.lua +++ b/mods/HUD/hudbars/init.lua @@ -27,10 +27,10 @@ function hb.load_setting(sname, stype, defaultval, valid_values) elseif stype == "number" then sval = tonumber(minetest.settings:get(sname)) end - if sval ~= nil then - if valid_values ~= nil then + if sval then + if valid_values then local valid = false - for i=1,#valid_values do + for i = 1, #valid_values do if sval == valid_values[i] then valid = true end @@ -114,7 +114,7 @@ function hb.get_hudtable(identifier) end function hb.get_hudbar_position_index(identifier) - if hb.settings.sorting[identifier] ~= nil then + if hb.settings.sorting[identifier] then return hb.settings.sorting[identifier] else local i = 0 @@ -215,7 +215,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, direction, offset = { x = offset.x - 1, y = offset.y - 1 }, z_index = 0, }) - if textures.icon ~= nil then + if textures.icon then ids.icon = player:hud_add({ hud_elem_type = "image", position = pos, @@ -335,7 +335,7 @@ function hb.change_hudbar(player, identifier, new_value, new_max_value, new_icon end local value_changed, max_changed = false, false - if new_value ~= nil then + if new_value then if new_value ~= hudtable.hudstate[name].value then hudtable.hudstate[name].value = new_value value_changed = true @@ -343,7 +343,7 @@ function hb.change_hudbar(player, identifier, new_value, new_max_value, new_icon else new_value = hudtable.hudstate[name].value end - if new_max_value ~= nil then + if new_max_value then if new_max_value ~= hudtable.hudstate[name].max then hudtable.hudstate[name].max = new_max_value max_changed = true @@ -353,29 +353,29 @@ function hb.change_hudbar(player, identifier, new_value, new_max_value, new_icon end if hb.settings.bar_type == "progress_bar" then - if new_icon ~= nil and hudtable.hudids[name].icon ~= nil then + if new_icon and hudtable.hudids[name].icon then player:hud_change(hudtable.hudids[name].icon, "text", new_icon) end - if new_bgicon ~= nil and hudtable.hudids[name].bgicon ~= nil then + if new_bgicon and hudtable.hudids[name].bgicon then player:hud_change(hudtable.hudids[name].bgicon, "text", new_bgicon) end - if new_bar ~= nil then + if new_bar then player:hud_change(hudtable.hudids[name].bar , "text", new_bar) end - if new_label ~= nil then + if new_label then hudtable.label = new_label local new_text = make_label(hudtable.format_string, hudtable.format_string_config, new_label, hudtable.hudstate[name].value, hudtable.hudstate[name].max) player:hud_change(hudtable.hudids[name].text, "text", new_text) end - if new_text_color ~= nil then + if new_text_color then player:hud_change(hudtable.hudids[name].text, "number", new_text_color) end else - if new_icon ~= nil and hudtable.hudids[name].bar ~= nil then + if new_icon and hudtable.hudids[name].bar then player:hud_change(hudtable.hudids[name].bar, "text", new_icon) end - if new_bgicon ~= nil and hudtable.hudids[name].bg ~= nil then + if new_bgicon and hudtable.hudids[name].bg then player:hud_change(hudtable.hudids[name].bg, "text", new_bgicon) end end @@ -426,7 +426,7 @@ function hb.hide_hudbar(player, identifier) local hudtable = hb.get_hudtable(identifier) if hudtable == nil then return false end if hb.settings.bar_type == "progress_bar" then - if hudtable.hudids[name].icon ~= nil then + if hudtable.hudids[name].icon then player:hud_change(hudtable.hudids[name].icon, "scale", {x=0,y=0}) end player:hud_change(hudtable.hudids[name].bg, "scale", {x=0,y=0}) @@ -446,7 +446,7 @@ function hb.unhide_hudbar(player, identifier) local value = hudtable.hudstate[name].value local max = hudtable.hudstate[name].max if hb.settings.bar_type == "progress_bar" then - if hudtable.hudids[name].icon ~= nil then + if hudtable.hudids[name].icon then player:hud_change(hudtable.hudids[name].icon, "scale", {x=1,y=1}) end if hudtable.hudstate[name].max ~= 0 then @@ -548,7 +548,7 @@ local function update_hud(player, has_damage) end minetest.register_on_player_hpchange(function(player) - if hb.players[player:get_player_name()] ~= nil then + if hb.players[player:get_player_name()] then update_health(player) end end) diff --git a/mods/HUD/mcl_achievements/init.lua b/mods/HUD/mcl_achievements/init.lua index 2f1db1fe6..c963773d1 100644 --- a/mods/HUD/mcl_achievements/init.lua +++ b/mods/HUD/mcl_achievements/init.lua @@ -3,7 +3,7 @@ -- If true, activates achievements from other Minecraft editions (XBox, PS, etc.) local non_pc_achievements = false -local S = minetest.get_translator("mcl_achievements") +local S = minetest.get_translator(minetest.get_current_modname()) -- Achievements from PC Edition diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index 107daa2a3..91e13995b 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_death_messages") +local S = minetest.get_translator(minetest.get_current_modname()) mcl_death_messages = { assist = {}, diff --git a/mods/HUD/mcl_experience/init.lua b/mods/HUD/mcl_experience/init.lua index 0343efa24..e514ffc19 100644 --- a/mods/HUD/mcl_experience/init.lua +++ b/mods/HUD/mcl_experience/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_experience") +local S = minetest.get_translator(minetest.get_current_modname()) mcl_experience = {} diff --git a/mods/HUD/mcl_hbarmor/init.lua b/mods/HUD/mcl_hbarmor/init.lua index 422a409fb..34ac205ac 100644 --- a/mods/HUD/mcl_hbarmor/init.lua +++ b/mods/HUD/mcl_hbarmor/init.lua @@ -19,7 +19,7 @@ local mcl_hbarmor = { local tick_config = minetest.settings:get("mcl_hbarmor_tick") -if tonumber(tick_config) ~= nil then +if tonumber(tick_config) then mcl_hbarmor.tick = tonumber(tick_config) end diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 972456c3f..6eac1c329 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_inventory") +local S = minetest.get_translator(minetest.get_current_modname()) local F = minetest.formspec_escape -- Prepare player info table @@ -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") -- Create tables local builtin_filter_ids = {"blocks","deco","redstone","rail","food","tools","combat","mobs","brew","matr","misc","all"} @@ -37,7 +37,7 @@ do return def.mesecons or def.groups.mesecon or def.groups.mesecon_conductor_craftable or def.groups.mesecon_effecor_off end local function is_tool(def) - return def.groups.tool or (def.tool_capabilities ~= nil and def.tool_capabilities.damage_groups == nil) + return def.groups.tool or (def.tool_capabilities and def.tool_capabilities.damage_groups == nil) end local function is_weapon_or_armor(def) return def.groups.weapon or def.groups.weapon_ranged or def.groups.ammo or def.groups.combat_item or ((def.groups.armor_head or def.groups.armor_torso or def.groups.armor_legs or def.groups.armor_feet or def.groups.horse_armor) and def.groups.non_combat_armor ~= 1) @@ -301,7 +301,7 @@ function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, if page == "nix" then local inv = minetest.get_inventory({type="detached", name="creative_"..playername}) inv_size = inv:get_size("main") - elseif page ~= nil and page ~= "inv" then + elseif page and page ~= "inv" then inv_size = #(inventory_lists[page]) else inv_size = 0 @@ -314,7 +314,7 @@ function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, "listring[current_player;main]".. "listring[detached:trash;main]" - if page ~= nil then + if page then name = page if players[playername] then players[playername].page = page @@ -322,160 +322,158 @@ function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, end --bg[name] = "crafting_creative_bg.png" - local inv_bg = "crafting_inventory_creative.png" - if name == "inv" then - inv_bg = "crafting_inventory_creative_survival.png" + local inv_bg = "crafting_inventory_creative.png" + if name == "inv" then + inv_bg = "crafting_inventory_creative_survival.png" - -- Show armor and player image - local player_preview - if minetest.settings:get_bool("3d_player_preview", true) then - player_preview = mcl_player.get_player_formspec_model(player, 3.9, 1.4, 1.2333, 2.4666, "") - else - player_preview = "image[3.9,1.4;1.2333,2.4666;"..mcl_player.player_get_preview(player).."]" - end - - -- Background images for armor slots (hide if occupied) - local armor_slot_imgs = "" - local inv = player:get_inventory() - if inv:get_stack("armor", 2):is_empty() then - armor_slot_imgs = armor_slot_imgs .. "image[2.5,1.3;1,1;mcl_inventory_empty_armor_slot_helmet.png]" - end - if inv:get_stack("armor", 3):is_empty() then - armor_slot_imgs = armor_slot_imgs .. "image[2.5,2.75;1,1;mcl_inventory_empty_armor_slot_chestplate.png]" - end - if inv:get_stack("armor", 4):is_empty() then - armor_slot_imgs = armor_slot_imgs .. "image[5.5,1.3;1,1;mcl_inventory_empty_armor_slot_leggings.png]" - end - if inv:get_stack("armor", 5):is_empty() then - armor_slot_imgs = armor_slot_imgs .. "image[5.5,2.75;1,1;mcl_inventory_empty_armor_slot_boots.png]" - end - - -- Survival inventory slots - main_list = "list[current_player;main;0,3.75;9,3;9]".. - mcl_formspec.get_itemslot_bg(0,3.75,9,3).. - -- armor - "list[current_player;armor;2.5,1.3;1,1;1]".. - "list[current_player;armor;2.5,2.75;1,1;2]".. - "list[current_player;armor;5.5,1.3;1,1;3]".. - "list[current_player;armor;5.5,2.75;1,1;4]".. - mcl_formspec.get_itemslot_bg(2.5,1.3,1,1).. - mcl_formspec.get_itemslot_bg(2.5,2.75,1,1).. - mcl_formspec.get_itemslot_bg(5.5,1.3,1,1).. - mcl_formspec.get_itemslot_bg(5.5,2.75,1,1).. - armor_slot_imgs.. - -- player preview - player_preview.. - -- crafting guide button - "image_button[9,1;1,1;craftguide_book.png;__mcl_craftguide;]".. - "tooltip[__mcl_craftguide;"..F(S("Recipe book")).."]".. - -- help button - "image_button[9,2;1,1;doc_button_icon_lores.png;__mcl_doc;]".. - "tooltip[__mcl_doc;"..F(S("Help")).."]".. - -- skins button - "image_button[9,3;1,1;mcl_skins_button.png;__mcl_skins;]".. - "tooltip[__mcl_skins;"..F(S("Select player skin")).."]".. - -- achievements button - "image_button[9,4;1,1;mcl_achievements_button.png;__mcl_achievements;]".. - --"style_type[image_button;border=;bgimg=;bgimg_pressed=]".. - "tooltip[__mcl_achievements;"..F(S("Achievements")).."]" - - -- For shortcuts - listrings = listrings .. - "listring[detached:"..playername.."_armor;armor]".. - "listring[current_player;main]" + -- Show armor and player image + local player_preview + if minetest.settings:get_bool("3d_player_preview", true) then + player_preview = mcl_player.get_player_formspec_model(player, 3.9, 1.4, 1.2333, 2.4666, "") else - -- Creative inventory slots - main_list = "list[detached:creative_"..playername..";main;0,1.75;9,5;"..tostring(start_i).."]".. - mcl_formspec.get_itemslot_bg(0,1.75,9,5).. - -- Page buttons - "label[9.0,5.5;"..F(S("@1/@2", pagenum, pagemax)).."]".. - "image_button[9.0,6.0;0.7,0.7;crafting_creative_prev.png;creative_prev;]".. - "image_button[9.5,6.0;0.7,0.7;crafting_creative_next.png;creative_next;]" + player_preview = "image[3.9,1.4;1.2333,2.4666;"..mcl_player.player_get_preview(player).."]" end - local tab_icon = { - blocks = "mcl_core:brick_block", - deco = "mcl_flowers:peony", - redstone = "mesecons:redstone", - rail = "mcl_minecarts:golden_rail", - misc = "mcl_buckets:bucket_lava", - nix = "mcl_compass:compass", - food = "mcl_core:apple", - tools = "mcl_core:axe_iron", - combat = "mcl_core:sword_gold", - mobs = "mobs_mc:cow", - brew = "mcl_potions:dragon_breath", - matr = "mcl_core:stick", - inv = "mcl_chests:chest", - } - local function tab(current_tab, this_tab) - local bg_img - if current_tab == this_tab then - bg_img = "crafting_creative_active"..hoch[this_tab]..".png" - else - bg_img = "crafting_creative_inactive"..hoch[this_tab]..".png" - end - return - "style["..this_tab..";border=false;bgimg=;bgimg_pressed=]".. - "item_image_button[" .. boffset[this_tab] ..";1,1;"..tab_icon[this_tab]..";"..this_tab..";]".. - "image[" .. offset[this_tab] .. ";1.5,1.44;" .. bg_img .. "]" .. - "image[" .. boffset[this_tab] .. ";1,1;crafting_creative_marker.png]" + -- Background images for armor slots (hide if occupied) + local armor_slot_imgs = "" + local inv = player:get_inventory() + if inv:get_stack("armor", 2):is_empty() then + armor_slot_imgs = armor_slot_imgs .. "image[2.5,1.3;1,1;mcl_inventory_empty_armor_slot_helmet.png]" end - local caption = "" - if name ~= "inv" and filtername[name] then - caption = "label[0,1.2;"..F(minetest.colorize("#313131", filtername[name])).."]" + if inv:get_stack("armor", 3):is_empty() then + armor_slot_imgs = armor_slot_imgs .. "image[2.5,2.75;1,1;mcl_inventory_empty_armor_slot_chestplate.png]" + end + if inv:get_stack("armor", 4):is_empty() then + armor_slot_imgs = armor_slot_imgs .. "image[5.5,1.3;1,1;mcl_inventory_empty_armor_slot_leggings.png]" + end + if inv:get_stack("armor", 5):is_empty() then + armor_slot_imgs = armor_slot_imgs .. "image[5.5,2.75;1,1;mcl_inventory_empty_armor_slot_boots.png]" end - 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.."]".. - "label[-5,-5;"..name.."]".. - tab(name, "blocks") .. - "tooltip[blocks;"..F(filtername["blocks"]).."]".. - tab(name, "deco") .. - "tooltip[deco;"..F(filtername["deco"]).."]".. - tab(name, "redstone") .. - "tooltip[redstone;"..F(filtername["redstone"]).."]".. - tab(name, "rail") .. - "tooltip[rail;"..F(filtername["rail"]).."]".. - tab(name, "misc") .. - "tooltip[misc;"..F(filtername["misc"]).."]".. - tab(name, "nix") .. - "tooltip[nix;"..F(filtername["nix"]).."]".. - caption.. - "list[current_player;main;0,7;9,1;]".. - mcl_formspec.get_itemslot_bg(0,7,9,1).. - main_list.. - tab(name, "food") .. - "tooltip[food;"..F(filtername["food"]).."]".. - tab(name, "tools") .. - "tooltip[tools;"..F(filtername["tools"]).."]".. - tab(name, "combat") .. - "tooltip[combat;"..F(filtername["combat"]).."]".. - tab(name, "mobs") .. - "tooltip[mobs;"..F(filtername["mobs"]).."]".. - tab(name, "brew") .. - "tooltip[brew;"..F(filtername["brew"]).."]".. - tab(name, "matr") .. - "tooltip[matr;"..F(filtername["matr"]).."]".. - tab(name, "inv") .. - "tooltip[inv;"..F(filtername["inv"]).."]".. - "list[detached:trash;main;9,7;1,1;]".. - mcl_formspec.get_itemslot_bg(9,7,1,1).. - "image[9,7;1,1;crafting_creative_trash.png]".. - listrings + -- Survival inventory slots + main_list = "list[current_player;main;0,3.75;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,3.75,9,3).. + -- armor + "list[current_player;armor;2.5,1.3;1,1;1]".. + "list[current_player;armor;2.5,2.75;1,1;2]".. + "list[current_player;armor;5.5,1.3;1,1;3]".. + "list[current_player;armor;5.5,2.75;1,1;4]".. + mcl_formspec.get_itemslot_bg(2.5,1.3,1,1).. + mcl_formspec.get_itemslot_bg(2.5,2.75,1,1).. + mcl_formspec.get_itemslot_bg(5.5,1.3,1,1).. + mcl_formspec.get_itemslot_bg(5.5,2.75,1,1).. + armor_slot_imgs.. + -- player preview + player_preview.. + -- crafting guide button + "image_button[9,1;1,1;craftguide_book.png;__mcl_craftguide;]".. + "tooltip[__mcl_craftguide;"..F(S("Recipe book")).."]".. + -- help button + "image_button[9,2;1,1;doc_button_icon_lores.png;__mcl_doc;]".. + "tooltip[__mcl_doc;"..F(S("Help")).."]".. + -- skins button + "image_button[9,3;1,1;mcl_skins_button.png;__mcl_skins;]".. + "tooltip[__mcl_skins;"..F(S("Select player skin")).."]".. + -- achievements button + "image_button[9,4;1,1;mcl_achievements_button.png;__mcl_achievements;]".. + --"style_type[image_button;border=;bgimg=;bgimg_pressed=]".. + "tooltip[__mcl_achievements;"..F(S("Achievements")).."]" - if name == "nix" then - if filter == nil then - filter = "" - end - formspec = formspec .. "field[5.3,1.34;4,0.75;search;;"..minetest.formspec_escape(filter).."]" - formspec = formspec .. "field_close_on_enter[search;false]" - end - if pagenum ~= nil then formspec = formspec .. "p"..tostring(pagenum) end + -- For shortcuts + listrings = listrings .. + "listring[detached:"..playername.."_armor;armor]".. + "listring[current_player;main]" + else + -- Creative inventory slots + main_list = "list[detached:creative_"..playername..";main;0,1.75;9,5;"..tostring(start_i).."]".. + mcl_formspec.get_itemslot_bg(0,1.75,9,5).. + -- Page buttons + "label[9.0,5.5;"..F(S("@1/@2", pagenum, pagemax)).."]".. + "image_button[9.0,6.0;0.7,0.7;crafting_creative_prev.png;creative_prev;]".. + "image_button[9.5,6.0;0.7,0.7;crafting_creative_next.png;creative_next;]" + end + local tab_icon = { + blocks = "mcl_core:brick_block", + deco = "mcl_flowers:peony", + redstone = "mesecons:redstone", + rail = "mcl_minecarts:golden_rail", + misc = "mcl_buckets:bucket_lava", + nix = "mcl_compass:compass", + food = "mcl_core:apple", + tools = "mcl_core:axe_iron", + combat = "mcl_core:sword_gold", + mobs = "mobs_mc:cow", + brew = "mcl_potions:dragon_breath", + matr = "mcl_core:stick", + inv = "mcl_chests:chest", + } + local function tab(current_tab, this_tab) + local bg_img + if current_tab == this_tab then + bg_img = "crafting_creative_active"..hoch[this_tab]..".png" + else + bg_img = "crafting_creative_inactive"..hoch[this_tab]..".png" + end + return + "style["..this_tab..";border=false;bgimg=;bgimg_pressed=]".. + "item_image_button[" .. boffset[this_tab] ..";1,1;"..tab_icon[this_tab]..";"..this_tab..";]".. + "image[" .. offset[this_tab] .. ";1.5,1.44;" .. bg_img .. "]" .. + "image[" .. boffset[this_tab] .. ";1,1;crafting_creative_marker.png]" + end + local caption = "" + if name ~= "inv" and filtername[name] then + caption = "label[0,1.2;"..F(minetest.colorize("#313131", filtername[name])).."]" + end + 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.."]".. + "label[-5,-5;"..name.."]".. + tab(name, "blocks") .. + "tooltip[blocks;"..F(filtername["blocks"]).."]".. + tab(name, "deco") .. + "tooltip[deco;"..F(filtername["deco"]).."]".. + tab(name, "redstone") .. + "tooltip[redstone;"..F(filtername["redstone"]).."]".. + tab(name, "rail") .. + "tooltip[rail;"..F(filtername["rail"]).."]".. + tab(name, "misc") .. + "tooltip[misc;"..F(filtername["misc"]).."]".. + tab(name, "nix") .. + "tooltip[nix;"..F(filtername["nix"]).."]".. + caption.. + "list[current_player;main;0,7;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7,9,1).. + main_list.. + tab(name, "food") .. + "tooltip[food;"..F(filtername["food"]).."]".. + tab(name, "tools") .. + "tooltip[tools;"..F(filtername["tools"]).."]".. + tab(name, "combat") .. + "tooltip[combat;"..F(filtername["combat"]).."]".. + tab(name, "mobs") .. + "tooltip[mobs;"..F(filtername["mobs"]).."]".. + tab(name, "brew") .. + "tooltip[brew;"..F(filtername["brew"]).."]".. + tab(name, "matr") .. + "tooltip[matr;"..F(filtername["matr"]).."]".. + tab(name, "inv") .. + "tooltip[inv;"..F(filtername["inv"]).."]".. + "list[detached:trash;main;9,7;1,1;]".. + mcl_formspec.get_itemslot_bg(9,7,1,1).. + "image[9,7;1,1;crafting_creative_trash.png]".. + listrings + + if name == "nix" then + if filter == nil then + filter = "" + end + formspec = formspec .. "field[5.3,1.34;4,0.75;search;;"..minetest.formspec_escape(filter).."]" + formspec = formspec .. "field_close_on_enter[search;false]" + end + if pagenum then formspec = formspec .. "p"..tostring(pagenum) end player:set_inventory_formspec(formspec) end @@ -545,7 +543,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) elseif fields.search == "" and not fields.creative_next and not fields.creative_prev then set_inv_page("all", player) page = "nix" - elseif fields.search ~= nil and not fields.creative_next and not fields.creative_prev then + elseif fields.search and not fields.creative_next and not fields.creative_prev then set_inv_search(string.lower(fields.search),player) page = "nix" end @@ -578,7 +576,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if page == "nix" then local inv = minetest.get_inventory({type="detached", name="creative_"..name}) inv_size = inv:get_size("main") - elseif page ~= nil and page ~= "inv" then + elseif page and page ~= "inv" then inv_size = #(inventory_lists[page]) else inv_size = 0 @@ -593,7 +591,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) players[name].start_i = start_i local filter = "" - if not fields.nix and fields.search ~= nil and fields.search ~= "" then + if not fields.nix and fields.search and fields.search ~= "" then filter = fields.search players[name].filter = filter end @@ -644,7 +642,7 @@ if minetest.is_creative_enabled("") then if page == "nix" then local inv = minetest.get_inventory({type="detached", name="creative_"..name}) inv_size = inv:get_size("main") - elseif page ~= nil and page ~= "inv" then + elseif page and page ~= "inv" then inv_size = #(inventory_lists[page]) else inv_size = 0 diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index a0be9b02e..c197bfdd9 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -1,10 +1,10 @@ -local S = minetest.get_translator("mcl_inventory") +local S = minetest.get_translator(minetest.get_current_modname()) 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") +--local mod_craftguide = minetest.get_modpath("mcl_craftguide") -- 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) diff --git a/mods/HUD/show_wielded_item/init.lua b/mods/HUD/show_wielded_item/init.lua index 456dc23e0..dfa87a85c 100644 --- a/mods/HUD/show_wielded_item/init.lua +++ b/mods/HUD/show_wielded_item/init.lua @@ -6,6 +6,10 @@ local huds = {} local dtimes = {} local dlimit = 3 -- HUD element will be hidden after this many seconds +local math = math +local string = string +local tonumber = tonumber + local hudbars_mod = minetest.get_modpath("hudbars") local xp_mod = minetest.get_modpath("mcl_experience") @@ -74,7 +78,7 @@ minetest.register_globalstep(function(dtime) if dtimes[player_name] and dtimes[player_name] < dlimit then dtimes[player_name] = dtimes[player_name] + dtime if dtimes[player_name] > dlimit and huds[player_name] then - player:hud_change(huds[player_name], 'text', "") + player:hud_change(huds[player_name], "text", "") end end @@ -105,7 +109,7 @@ minetest.register_globalstep(function(dtime) if firstnewline then desc = string.sub(desc, 1, firstnewline-1) end - player:hud_change(huds[player_name], 'text', desc) + player:hud_change(huds[player_name], "text", desc) end end end diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/init.lua b/mods/ITEMS/REDSTONE/mcl_comparators/init.lua index a76821543..3517e09cb 100644 --- a/mods/ITEMS/REDSTONE/mcl_comparators/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_comparators/init.lua @@ -1,8 +1,8 @@ -local S = minetest.get_translator("mcl_comparators") +local S = minetest.get_translator(minetest.get_current_modname()) -- Functions that get the input/output rules of the comparator -local comparator_get_output_rules = function(node) +local function comparator_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) @@ -11,7 +11,7 @@ local comparator_get_output_rules = function(node) end -local comparator_get_input_rules = function(node) +local function comparator_get_input_rules(node) local rules = { -- we rely on this order in update_self below {x = 1, y = 0, z = 0}, -- back @@ -27,13 +27,13 @@ end -- Functions that are called after the delay time -local comparator_turnon = function(params) +local function comparator_turnon(params) local rules = comparator_get_output_rules(params.node) mesecon.receptor_on(params.pos, rules) end -local comparator_turnoff = function(params) +local function comparator_turnoff(params) local rules = comparator_get_output_rules(params.node) mesecon.receptor_off(params.pos, rules) end @@ -41,14 +41,14 @@ end -- Functions that set the correct node type an schedule a turnon/off -local comparator_activate = function(pos, node) +local function comparator_activate(pos, node) local def = minetest.registered_nodes[node.name] minetest.swap_node(pos, { name = def.comparator_onstate, param2 = node.param2 }) minetest.after(0.1, comparator_turnon , {pos = pos, node = node}) end -local comparator_deactivate = function(pos, node) +local function comparator_deactivate(pos, node) local def = minetest.registered_nodes[node.name] minetest.swap_node(pos, { name = def.comparator_offstate, param2 = node.param2 }) minetest.after(0.1, comparator_turnoff, {pos = pos, node = node}) @@ -56,7 +56,7 @@ end -- weather pos has an inventory that contains at least one item -local container_inventory_nonempty = function(pos) +local function container_inventory_nonempty(pos) local invnode = minetest.get_node(pos) local invnodedef = minetest.registered_nodes[invnode.name] -- Ignore stale nodes @@ -78,14 +78,14 @@ local container_inventory_nonempty = function(pos) end -- weather pos has an constant signal output for the comparator -local static_signal_output = function(pos) +local function static_signal_output(pos) local node = minetest.get_node(pos) local g = minetest.get_item_group(node.name, "comparator_signal") return g > 0 end -- whether the comparator should be on according to its inputs -local comparator_desired_on = function(pos, node) +local function comparator_desired_on(pos, node) local my_input_rules = comparator_get_input_rules(node); local back_rule = my_input_rules[1] local state @@ -116,7 +116,7 @@ end -- update comparator state, if needed -local update_self = function(pos, node) +local function update_self(pos, node) node = node or minetest.get_node(pos) local old_state = mesecon.is_receptor_on(node.name) local new_state = comparator_desired_on(pos, node) @@ -131,7 +131,7 @@ end -- compute tile depending on state and mode -local get_tiles = function(state, mode) +local function get_tiles(state, mode) local top = "mcl_comparators_"..state..".png^".. "mcl_comparators_"..mode..".png" local sides = "mcl_comparators_sides_"..state..".png^".. @@ -146,13 +146,13 @@ local get_tiles = function(state, mode) end -- Given one mode, get the other mode -local flipmode = function(mode) +local function flipmode(mode) if mode == "comp" then return "sub" elseif mode == "sub" then return "comp" end end -local make_rightclick_handler = function(state, mode) +local function make_rightclick_handler(state, mode) local newnodename = "mcl_comparators:comparator_"..state.."_"..flipmode(mode) return function (pos, node, clicker) @@ -260,7 +260,7 @@ for _, mode in pairs{"comp", "sub"} do paramtype2 = "facedir", sunlight_propagates = false, is_ground_content = false, - drop = 'mcl_comparators:comparator_off_comp', + drop = "mcl_comparators:comparator_off_comp", on_construct = update_self, on_rightclick = make_rightclick_handler(state_str, mode), diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 73bc1f0da..8cbf74b84 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -7,10 +7,10 @@ All node definitions share a lot of code, so this is the reason why there are so many weird tables below. ]] -local S = minetest.get_translator("mcl_dispensers") +local S = minetest.get_translator(minetest.get_current_modname()) -- For after_place_node -local setup_dispenser = function(pos) +local function setup_dispenser(pos) -- Set formspec and inventory local form = "size[9,8.75]".. "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. @@ -29,7 +29,7 @@ local setup_dispenser = function(pos) inv:set_size("main", 9) end -local orientate_dispenser = function(pos, placer) +local function orientate_dispenser(pos, placer) -- Not placed by player if not placer then return end @@ -99,7 +99,7 @@ local dispenserdef = { mesecons = { effector = { -- Dispense random item when triggered - action_on = function (pos, node) + action_on = function(pos, node) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() local droppos, dropdir @@ -246,10 +246,11 @@ S("• Flint and steel: Is used to ignite a fire in air and to ignite TNT").."\n S("• Spawn eggs: Will summon the mob they contain").."\n".. S("• Other items: Are simply dropped") -horizontal_def.after_place_node = function(pos, placer, itemstack, pointed_thing) +function horizontal_def.after_place_node(pos, placer, itemstack, pointed_thing) setup_dispenser(pos) orientate_dispenser(pos, placer) end + horizontal_def.tiles = { "default_furnace_top.png", "default_furnace_bottom.png", "default_furnace_side.png", "default_furnace_side.png", @@ -287,7 +288,7 @@ minetest.register_node("mcl_dispensers:dispenser_up", up_def) minetest.register_craft({ - output = 'mcl_dispensers:dispenser', + output = "mcl_dispensers:dispenser", recipe = { {"mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble",}, {"mcl_core:cobble", "mcl_bows:bow", "mcl_core:cobble",}, diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index 715a85f3d..4bfdbab4b 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -8,10 +8,10 @@ All node definitions share a lot of code, so this is the reason why there are so many weird tables below. ]] -local S = minetest.get_translator("mcl_droppers") +local S = minetest.get_translator(minetest.get_current_modname()) -- For after_place_node -local setup_dropper = function(pos) +local function setup_dropper(pos) -- Set formspec and inventory local form = "size[9,8.75]".. "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. @@ -30,7 +30,7 @@ local setup_dropper = function(pos) inv:set_size("main", 9) end -local orientate_dropper = function(pos, placer) +local function orientate_dropper(pos, placer) -- Not placed by player if not placer then return end @@ -98,7 +98,7 @@ local dropperdef = { _mcl_hardness = 3.5, mesecons = {effector = { -- Drop random item when triggered - action_on = function (pos, node) + action_on = function(pos, node) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() local droppos @@ -152,7 +152,7 @@ horizontal_def.description = S("Dropper") horizontal_def._tt_help = S("9 inventory slots").."\n"..S("Drops item when powered by redstone power") horizontal_def._doc_items_longdesc = S("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.") horizontal_def._doc_items_usagehelp = S("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.") -horizontal_def.after_place_node = function(pos, placer, itemstack, pointed_thing) +function horizontal_def.after_place_node(pos, placer, itemstack, pointed_thing) setup_dropper(pos) orientate_dropper(pos, placer) end @@ -195,7 +195,7 @@ minetest.register_node("mcl_droppers:dropper_up", up_def) -- Ladies and gentlemen, I present to you: the crafting recipe! minetest.register_craft({ - output = 'mcl_droppers:dropper', + output = "mcl_droppers:dropper", recipe = { {"mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble",}, {"mcl_core:cobble", "", "mcl_core:cobble",}, diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua index 1bf968a82..f140a9586 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua @@ -8,10 +8,10 @@ All node definitions share a lot of code, so this is the reason why there are so many weird tables below. ]] -local S = minetest.get_translator("mcl_droppers") +local S = minetest.get_translator(minetest.get_current_modname()) -- For after_place_node -local setup_dropper = function(pos) +local function setup_dropper(pos) -- Set formspec and inventory local form = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_inventory_9_slots.png]".. @@ -28,7 +28,7 @@ local setup_dropper = function(pos) inv:set_size("main", 9) end -local orientate_dropper = function(pos, placer) +local function orientate_dropper(pos, placer) -- Not placed by player if not placer then return end @@ -96,7 +96,7 @@ local dropperdef = { _mcl_hardness = 3.5, mesecons = {effector = { -- Drop random item when triggered - action_on = function (pos, node) + action_on = function(pos, node) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() local droppos @@ -149,14 +149,16 @@ local horizontal_def = table.copy(dropperdef) horizontal_def.description = S("Dropper") horizontal_def._doc_items_longdesc = S("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.") horizontal_def._doc_items_usagehelp = S("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.") -horizontal_def.after_place_node = function(pos, placer, itemstack, pointed_thing) + +function horizontal_def.after_place_node(pos, placer, itemstack, pointed_thing) setup_dropper(pos) orientate_dropper(pos, placer) end + horizontal_def.tiles = { "default_furnace_top.png", "default_furnace_bottom.png", "default_furnace_side.png", "default_furnace_side.png", - "default_furnace_side.png", "mcl_droppers_dropper_front_horizontal.png" + "default_furnace_side.png", "mcl_droppers_dropper_front_horizontal.png", } horizontal_def.paramtype2 = "facedir" horizontal_def.groups = {pickaxey=1, container=2, material_stone=1} @@ -170,7 +172,7 @@ down_def.after_place_node = setup_dropper down_def.tiles = { "default_furnace_top.png", "mcl_droppers_dropper_front_vertical.png", "default_furnace_side.png", "default_furnace_side.png", - "default_furnace_side.png", "default_furnace_side.png" + "default_furnace_side.png", "default_furnace_side.png", } down_def.groups = {pickaxey=1, container=2,not_in_creative_inventory=1, material_stone=1} down_def._doc_items_create_entry = false @@ -184,7 +186,7 @@ up_def.description = S("Upwards-Facing Dropper") up_def.tiles = { "mcl_droppers_dropper_front_vertical.png", "default_furnace_bottom.png", "default_furnace_side.png", "default_furnace_side.png", - "default_furnace_side.png", "default_furnace_side.png" + "default_furnace_side.png", "default_furnace_side.png", } minetest.register_node("mcl_droppers:dropper_up", up_def) @@ -192,7 +194,7 @@ minetest.register_node("mcl_droppers:dropper_up", up_def) -- Ladies and gentlemen, I present to you: the crafting recipe! minetest.register_craft({ - output = 'mcl_droppers:dropper', + output = "mcl_droppers:dropper", recipe = { {"mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble",}, {"mcl_core:cobble", "", "mcl_core:cobble",}, diff --git a/mods/ITEMS/REDSTONE/mcl_observers/init.lua b/mods/ITEMS/REDSTONE/mcl_observers/init.lua index 81c018016..6045b5677 100644 --- a/mods/ITEMS/REDSTONE/mcl_observers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_observers/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_observers") +local S = minetest.get_translator(minetest.get_current_modname()) mcl_observers = {} diff --git a/mods/ITEMS/REDSTONE/mesecons/actionqueue.lua b/mods/ITEMS/REDSTONE/mesecons/actionqueue.lua index eabe73d1a..489a81b4a 100644 --- a/mods/ITEMS/REDSTONE/mesecons/actionqueue.lua +++ b/mods/ITEMS/REDSTONE/mesecons/actionqueue.lua @@ -1,3 +1,5 @@ +local table = table + mesecon.queue.actions={} -- contains all ActionQueue actions function mesecon.queue:add_function(name, func) @@ -31,7 +33,7 @@ function mesecon.queue:add_action(pos, func, params, time, overwritecheck, prior end end - if (toremove ~= nil) then + if toremove then table.remove(mesecon.queue.actions, toremove) end @@ -43,7 +45,7 @@ end -- this makes sure that resuming mesecons circuits when restarting minetest works fine -- However, even that does not work in some cases, that's why we delay the time the globalsteps -- start to be execute by 5 seconds -local get_highest_priority = function (actions) +local function get_highest_priority(actions) local highestp = -1 local highesti for i, ac in ipairs(actions) do diff --git a/mods/ITEMS/REDSTONE/mesecons/internal.lua b/mods/ITEMS/REDSTONE/mesecons/internal.lua index a5bcb80e8..dbe3ebe12 100644 --- a/mods/ITEMS/REDSTONE/mesecons/internal.lua +++ b/mods/ITEMS/REDSTONE/mesecons/internal.lua @@ -138,7 +138,7 @@ local function receptor_get_rules(node) local receptor = mesecon.get_receptor(node.name) if receptor then local rules = receptor.rules - if type(rules) == 'function' then + if type(rules) == "function" then return rules(node) elseif rules then return rules @@ -179,7 +179,7 @@ function mesecon.effector_get_rules(node) local effector = mesecon.get_effector(node.name) if effector then local rules = effector.rules - if type(rules) == 'function' then + if type(rules) == "function" then return rules(node) elseif rules then return rules @@ -352,7 +352,7 @@ function mesecon.conductor_get_rules(node) local conductor = mesecon.get_conductor(node.name) if conductor then local rules = conductor.rules - if type(rules) == 'function' then + if type(rules) == "function" then return rules(node) elseif rules then return rules diff --git a/mods/ITEMS/REDSTONE/mesecons_button/init.lua b/mods/ITEMS/REDSTONE/mesecons_button/init.lua index a8c671004..2812b2758 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_button/init.lua @@ -1,7 +1,7 @@ -- WALL BUTTON -- A button that when pressed emits power for a short moment and then turns off again -local S = minetest.get_translator("mesecons_button") +local S = minetest.get_translator(minetest.get_current_modname()) local button_sounds = {} -- remember button push sounds @@ -37,7 +37,7 @@ function mesecon.push_button(pos, node) timer:start(def._mcl_button_timer) end -local on_button_place = function(itemstack, placer, pointed_thing) +local function on_button_place(itemstack, placer, pointed_thing) if pointed_thing.type ~= "node" then -- no interaction possible with entities return itemstack @@ -86,7 +86,7 @@ end local buttonuse = S("Use the button to push it.") -mesecon.register_button = function(basename, description, texture, recipeitem, sounds, plusgroups, button_timer, push_by_arrow, longdesc, button_sound) +function mesecon.register_button(basename, description, texture, recipeitem, sounds, plusgroups, button_timer, push_by_arrow, longdesc, button_sound) local groups_off = table.copy(plusgroups) groups_off.attached_node=1 groups_off.dig_by_water=1 @@ -132,7 +132,7 @@ mesecon.register_button = function(basename, description, texture, recipeitem, s _doc_items_usagehelp = buttonuse, on_place = on_button_place, node_placement_prediction = "", - on_rightclick = function (pos, node) + on_rightclick = function(pos, node) mesecon.push_button(pos, node) end, sounds = sounds, @@ -159,7 +159,7 @@ mesecon.register_button = function(basename, description, texture, recipeitem, s sunlight_propagates = true, node_box = boxes_on, groups = groups_on, - drop = 'mesecons_button:button_'..basename..'_off', + drop = "mesecons_button:button_"..basename.."_off", _doc_items_create_entry = false, node_placement_prediction = "", sounds = sounds, diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua index 9c0914efb..3902c3c18 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua @@ -1,6 +1,8 @@ -local S = minetest.get_translator("mesecons_commandblock") +local S = minetest.get_translator(minetest.get_current_modname()) local F = minetest.formspec_escape +local tonumber = tonumber + local color_red = mcl_colors.RED local command_blocks_activated = minetest.settings:get_bool("mcl_enable_commandblocks", true) @@ -27,7 +29,7 @@ local function resolve_commands(commands, pos) local commander = meta:get_string("commander") -- A non-printable character used while replacing “@@”. - local SUBSTITUTE_CHARACTER = '\26' -- ASCII SUB + local SUBSTITUTE_CHARACTER = "\26" -- ASCII SUB -- No players online: remove all commands containing -- problematic placeholders. @@ -137,7 +139,7 @@ local function commandblock_action_off(pos, node) end end -local on_rightclick = function(pos, node, player, itemstack, pointed_thing) +local function on_rightclick(pos, node, player, itemstack, pointed_thing) if not command_blocks_activated then minetest.chat_send_player(player:get_player_name(), msg_not_activated) return @@ -192,18 +194,18 @@ local on_rightclick = function(pos, node, player, itemstack, pointed_thing) minetest.show_formspec(pname, "commandblock_"..pos.x.."_"..pos.y.."_"..pos.z, formspec) end -local on_place = function(itemstack, placer, pointed_thing) +local function on_place(itemstack, placer, pointed_thing) if pointed_thing.type ~= "node" then return itemstack end -- Use pointed node's on_rightclick function first, if present - local node = minetest.get_node(pointed_thing.under) - if placer and not placer:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack - end - end + local new_stack = mcl_util.call_on_rightclick(itemstack, placer, pointed_thing) + if new_stack then + return new_stack + end + + --local node = minetest.get_node(pointed_thing.under) local privs = minetest.get_player_privs(placer:get_player_name()) if not privs.maphack then @@ -295,8 +297,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end local index, _, x, y, z = string.find(formname, "commandblock_(-?%d+)_(-?%d+)_(-?%d+)") - if index ~= nil and x ~= nil and y ~= nil and z ~= nil then - local pos = {x=tonumber(x), y=tonumber(y), z=tonumber(z)} + if index and x and y and z then + local pos = {x = tonumber(x), y = tonumber(y), z = tonumber(z)} local meta = minetest.get_meta(pos) if not minetest.is_creative_enabled(player:get_player_name()) then minetest.chat_send_player(player:get_player_name(), S("Editing the command block has failed! You can only change the command block in Creative Mode!")) diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/mod.conf b/mods/ITEMS/REDSTONE/mesecons_commandblock/mod.conf index a35c425f5..26059530a 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/mod.conf +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/mod.conf @@ -1,3 +1,3 @@ name = mesecons_commandblock -depends = mesecons, mcl_colors +depends = mesecons, mcl_colors, mcl_util optional_depends = doc, doc_items diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua index 0a330ef2c..fc12c0a36 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mesecons_delayer") +local S = minetest.get_translator(minetest.get_current_modname()) local DELAYS = { 0.1, 0.2, 0.3, 0.4 } local DEFAULT_DELAY = DELAYS[1] @@ -264,8 +264,8 @@ for i = 1, 4 do paramtype2 = "facedir", sunlight_propagates = false, is_ground_content = false, - drop = 'mesecons_delayer:delayer_off_1', - on_rightclick = function (pos, node, clicker) + 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) @@ -330,8 +330,8 @@ for i = 1, 4 do paramtype2 = "facedir", sunlight_propagates = false, is_ground_content = false, - drop = 'mesecons_delayer:delayer_off_1', - on_rightclick = function (pos, node, clicker) + 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) @@ -410,7 +410,7 @@ minetest.register_node("mesecons_delayer:delayer_off_locked", { paramtype2 = "facedir", sunlight_propagates = false, is_ground_content = false, - drop = 'mesecons_delayer:delayer_off_1', + drop = "mesecons_delayer:delayer_off_1", delayer_time = DEFAULT_DELAY, sounds = mcl_sounds.node_sound_stone_defaults(), mesecons = { @@ -465,7 +465,7 @@ minetest.register_node("mesecons_delayer:delayer_on_locked", { paramtype2 = "facedir", sunlight_propagates = false, is_ground_content = false, - drop = 'mesecons_delayer:delayer_off_1', + drop = "mesecons_delayer:delayer_off_1", delayer_time = DEFAULT_DELAY, sounds = mcl_sounds.node_sound_stone_defaults(), mesecons = { diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua b/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua index c09bcf592..0e517e4dc 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mesecons_lightstone") +local S = minetest.get_translator(minetest.get_current_modname()) local light = minetest.LIGHT_MAX @@ -11,7 +11,7 @@ minetest.register_node("mesecons_lightstone:lightstone_off", { _doc_items_longdesc = S("Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.", light), sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {effector = { - action_on = function (pos, node) + action_on = function(pos, node) minetest.swap_node(pos, {name="mesecons_lightstone:lightstone_on", param2 = node.param2}) end, rules = mesecon.rules.alldirs, @@ -29,7 +29,7 @@ minetest.register_node("mesecons_lightstone:lightstone_on", { light_source = light, sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {effector = { - action_off = function (pos, node) + action_off = function(pos, node) minetest.swap_node(pos, {name="mesecons_lightstone:lightstone_off", param2 = node.param2}) end, rules = mesecon.rules.alldirs, @@ -41,9 +41,9 @@ minetest.register_node("mesecons_lightstone:lightstone_on", { minetest.register_craft({ output = "mesecons_lightstone:lightstone_off", recipe = { - {'',"mesecons:redstone",''}, - {"mesecons:redstone",'mcl_nether:glowstone',"mesecons:redstone"}, - {'','mesecons:redstone',''}, + {"","mesecons:redstone",""}, + {"mesecons:redstone","mcl_nether:glowstone","mesecons:redstone"}, + {"","mesecons:redstone",""}, } }) diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua index 279e98ba6..ac56d8bc5 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua @@ -1,4 +1,6 @@ -local S = minetest.get_translator("mesecons_noteblock") +local S = minetest.get_translator(minetest.get_current_modname()) + +local math = math minetest.register_node("mesecons_noteblock:noteblock", { description = S("Note Block"), @@ -28,7 +30,7 @@ S("The note block will only play a note when it is below air, otherwise, it stay groups = {handy=1,axey=1, material_wood=1, flammable=-1}, is_ground_content = false, place_param2 = 0, - on_rightclick = function (pos, node, clicker) -- change sound when rightclicked + on_rightclick = function(pos, node, clicker) -- change sound when rightclicked local protname = clicker:get_player_name() if minetest.is_protected(pos, protname) then minetest.record_protection_violation(pos, protname) @@ -38,12 +40,12 @@ S("The note block will only play a note when it is below air, otherwise, it stay mesecon.noteblock_play(pos, node.param2) minetest.set_node(pos, node) end, - on_punch = function (pos, node) -- play current sound when punched + on_punch = function(pos, node) -- play current sound when punched mesecon.noteblock_play(pos, node.param2) end, sounds = mcl_sounds.node_sound_wood_defaults(), mesecons = {effector = { -- play sound when activated - action_on = function (pos, node) + action_on = function(pos, node) mesecon.noteblock_play(pos, node.param2) end, rules = mesecon.rules.alldirs, @@ -53,7 +55,7 @@ S("The note block will only play a note when it is below air, otherwise, it stay }) minetest.register_craft({ - output = '"mesecons_noteblock:noteblock" 1', + output = "mesecons_noteblock:noteblock", recipe = { {"group:wood", "group:wood", "group:wood"}, {"group:wood", "mesecons:redstone", "group:wood"}, @@ -124,7 +126,11 @@ local function param2_to_note_color(param2) return string.format("#%06X", color) end -mesecon.noteblock_play = function (pos, param2) +local function param2_to_pitch(param2) + return 2^((param2-12)/12) +end + +function mesecon.noteblock_play(pos, param2) local block_above_name = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name if block_above_name ~= "air" then -- Don't play sound if no air is above @@ -132,9 +138,6 @@ mesecon.noteblock_play = function (pos, param2) end local block_below_name = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name - local param2_to_pitch = function(param2) - return 2^((param2-12)/12) - end local pitched = false local soundname, pitch if block_below_name == "mcl_core:goldblock" then diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua index 0073aeb48..7d5f49048 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mesecons_pistons") +local S = minetest.get_translator(minetest.get_current_modname()) local PISTON_MAXIMUM_PUSH = 12 @@ -865,7 +865,7 @@ mesecon.register_mvps_stopper("mesecons_pistons:piston_down_sticky_on") --craft recipes minetest.register_craft({ - output = 'mesecons_pistons:piston_normal_off', + output = "mesecons_pistons:piston_normal_off", recipe = { {"group:wood", "group:wood", "group:wood"}, {"mcl_core:cobble", "mcl_core:iron_ingot", "mcl_core:cobble"}, diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua index 34730760d..c0894224c 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mesecons_pressureplates") +local S = minetest.get_translator(minetest.get_current_modname()) local PRESSURE_PLATE_INTERVAL = 0.04 diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua index b256d87e2..ed0e4c608 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mesecons_solarpanel") +local S = minetest.get_translator(minetest.get_current_modname()) local boxes = { -8/16, -8/16, -8/16, 8/16, -2/16, 8/16 } @@ -81,11 +81,11 @@ minetest.register_node("mesecons_solarpanel:solar_panel_off", { }) minetest.register_craft({ - output = 'mesecons_solarpanel:solar_panel_off', + output = "mesecons_solarpanel:solar_panel_off", recipe = { - {'mcl_core:glass', 'mcl_core:glass', 'mcl_core:glass'}, - {'mcl_nether:quartz', 'mcl_nether:quartz', 'mcl_nether:quartz'}, - {'group:wood_slab', 'group:wood_slab', 'group:wood_slab'}, + {"mcl_core:glass", "mcl_core:glass", "mcl_core:glass"}, + {"mcl_nether:quartz", "mcl_nether:quartz", "mcl_nether:quartz"}, + {"group:wood_slab", "group:wood_slab", "group:wood_slab"}, } }) diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua index 9aefae96c..e49b843cc 100644 --- a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua @@ -1,10 +1,10 @@ -- REDSTONE TORCH AND BLOCK OF REDSTONE -local S = minetest.get_translator("mesecons_torch") +local S = minetest.get_translator(minetest.get_current_modname()) local TORCH_COOLOFF = 120 -- Number of seconds it takes for a burned-out torch to reactivate -local rotate_torch_rules = function (rules, param2) +local function rotate_torch_rules(rules, param2) if param2 == 1 then return rules elseif param2 == 5 then @@ -20,7 +20,7 @@ local rotate_torch_rules = function (rules, param2) end end -local torch_get_output_rules = function(node) +local function torch_get_output_rules(node) if node.param2 == 1 then return { { x = -1, y = 0, z = 0 }, @@ -41,7 +41,7 @@ local torch_get_output_rules = function(node) end end -local torch_get_input_rules = function(node) +local function torch_get_input_rules(node) if node.param2 == 1 then return {{x = 0, y = -1, z = 0 }} else @@ -49,7 +49,7 @@ local torch_get_input_rules = function(node) end end -local torch_overheated = function(pos) +local function torch_overheated(pos) minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.02, max_hear_distance = 6}, true) minetest.add_particle({ pos = {x=pos.x, y=pos.y+0.2, z=pos.z}, @@ -62,7 +62,7 @@ local torch_overheated = function(pos) timer:start(TORCH_COOLOFF) end -local torch_action_on = function(pos, node) +local function torch_action_on(pos, node) local overheat if node.name == "mesecons_torch:mesecon_torch_on" then overheat = mesecon.do_overheat(pos) @@ -86,7 +86,7 @@ local torch_action_on = function(pos, node) end end -local torch_action_off = function(pos, node) +local function torch_action_off(pos, node) local overheat if node.name == "mesecons_torch:mesecon_torch_off" or node.name == "mesecons_torch:mesecon_torch_overheated" then overheat = mesecon.do_overheat(pos) @@ -111,7 +111,7 @@ local torch_action_off = function(pos, node) end minetest.register_craft({ - output = 'mesecons_torch:mesecon_torch_on', + output = "mesecons_torch:mesecon_torch_on", recipe = { {"mesecons:redstone"}, {"mcl_core:stick"},} @@ -222,16 +222,16 @@ minetest.register_node("mesecons_torch:redstoneblock", { minetest.register_craft({ output = "mesecons_torch:redstoneblock", recipe = { - {'mesecons:wire_00000000_off','mesecons:wire_00000000_off','mesecons:wire_00000000_off'}, - {'mesecons:wire_00000000_off','mesecons:wire_00000000_off','mesecons:wire_00000000_off'}, - {'mesecons:wire_00000000_off','mesecons:wire_00000000_off','mesecons:wire_00000000_off'}, + {"mesecons:wire_00000000_off","mesecons:wire_00000000_off","mesecons:wire_00000000_off"}, + {"mesecons:wire_00000000_off","mesecons:wire_00000000_off","mesecons:wire_00000000_off"}, + {"mesecons:wire_00000000_off","mesecons:wire_00000000_off","mesecons:wire_00000000_off"}, } }) minetest.register_craft({ - output = 'mesecons:wire_00000000_off 9', + output = "mesecons:wire_00000000_off 9", recipe = { - {'mesecons_torch:redstoneblock'}, + {"mesecons_torch:redstoneblock"}, } }) diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua index 92c809785..c251587d5 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua @@ -1,8 +1,8 @@ -local S = minetest.get_translator("mesecons_wallever") +local S = minetest.get_translator(minetest.get_current_modname()) local lever_get_output_rules = mesecon.rules.buttonlike_get -local on_rotate = function(pos, node, user, mode) +local function on_rotate(pos, node, user, mode) if mode == screwdriver.ROTATE_FACE then if node.param2 == 10 then node.param2 = 13 @@ -50,7 +50,7 @@ minetest.register_node("mesecons_walllever:wall_lever_off", { _tt_help = S("Provides redstone power while it's turned on"), _doc_items_longdesc = S("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."), _doc_items_usagehelp = S("Use the lever to flip it on or off."), - on_rightclick = function (pos, node) + on_rightclick = function(pos, node) minetest.swap_node(pos, {name="mesecons_walllever:wall_lever_on", param2=node.param2}) mesecon.receptor_on(pos, lever_get_output_rules(node)) minetest.sound_play("mesecons_button_push", {pos=pos, max_hear_distance=16}, true) @@ -148,9 +148,9 @@ minetest.register_node("mesecons_walllever:wall_lever_on", { }, groups = {handy=1, not_in_creative_inventory = 1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1, attached_node_facedir=1}, is_ground_content = false, - drop = '"mesecons_walllever:wall_lever_off" 1', + drop = "mesecons_walllever:wall_lever_off", _doc_items_create_entry = false, - on_rightclick = function (pos, node) + on_rightclick = function(pos, node) minetest.swap_node(pos, {name="mesecons_walllever:wall_lever_off", param2=node.param2}) mesecon.receptor_off(pos, lever_get_output_rules(node)) minetest.sound_play("mesecons_button_push", {pos=pos, max_hear_distance=16, pitch=0.9}, true) @@ -166,10 +166,10 @@ minetest.register_node("mesecons_walllever:wall_lever_on", { }) minetest.register_craft({ - output = 'mesecons_walllever:wall_lever_off', + output = "mesecons_walllever:wall_lever_off", recipe = { - {'mcl_core:stick'}, - {'mcl_core:cobble'}, + {"mcl_core:stick"}, + {"mcl_core:cobble"}, } }) diff --git a/mods/ITEMS/REDSTONE/mesecons_wires/init.lua b/mods/ITEMS/REDSTONE/mesecons_wires/init.lua index 3d00e5f20..0f2febc44 100644 --- a/mods/ITEMS/REDSTONE/mesecons_wires/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_wires/init.lua @@ -4,7 +4,7 @@ -- Where 0 means the wire has no visual connection to that direction and -- 1 means that the wire visually connects to that other node. -local S = minetest.get_translator("mesecons_wires") +local S = minetest.get_translator(minetest.get_current_modname()) -- ####################### -- ## Update wire looks ## @@ -28,7 +28,7 @@ local wire_rules = {x= 0, y=-1, z=-1}} -- self_pos = pos of any mesecon node, from_pos = pos of conductor to getconnect for -local wire_getconnect = function (from_pos, self_pos) +local function wire_getconnect(from_pos, self_pos) local node = minetest.get_node(self_pos) if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].mesecons then @@ -50,7 +50,7 @@ local wire_getconnect = function (from_pos, self_pos) end -- Update this node -local wire_updateconnect = function (pos) +local function wire_updateconnect(pos) local connections = {} for _, r in ipairs(wire_rules) do @@ -83,7 +83,7 @@ local wire_updateconnect = function (pos) minetest.set_node(pos, {name = "mesecons:wire_"..nodeid..state_suffix}) end -local update_on_place_dig = function (pos, node) +local function update_on_place_dig(pos, node) -- Update placed node (get_node again as it may have been dug) local nn = minetest.get_node(pos) if (minetest.registered_nodes[nn.name]) @@ -139,8 +139,8 @@ local selectionbox = } -- go to the next nodeid (ex.: 01000011 --> 01000100) -local nid_inc = function() end -nid_inc = function (nid) +local function nid_inc() end +function nid_inc(nid) local i = 0 while nid[i-1] ~= 1 do nid[i] = (nid[i] ~= 1) and 1 or 0 diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index 09f4d954c..fbf6fb751 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_anvils") +local S = minetest.get_translator(minetest.get_current_modname()) local MAX_NAME_LENGTH = 35 local MAX_WEAR = 65535 @@ -180,7 +180,7 @@ local function update_anvil_slots(meta) end -- Set the new output slot - if new_output ~= nil then + if new_output then inv:set_stack("output", 1, new_output) end end diff --git a/mods/ITEMS/mcl_armor/init.lua b/mods/ITEMS/mcl_armor/init.lua index 0f7725010..799bf2e9c 100644 --- a/mods/ITEMS/mcl_armor/init.lua +++ b/mods/ITEMS/mcl_armor/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_armor") +local S = minetest.get_translator(minetest.get_current_modname()) mcl_armor = { longdesc = S("This is a piece of equippable armor which reduces the amount of damage you receive."), diff --git a/mods/ITEMS/mcl_armor/register.lua b/mods/ITEMS/mcl_armor/register.lua index de17fd20d..1f9ce7b02 100644 --- a/mods/ITEMS/mcl_armor/register.lua +++ b/mods/ITEMS/mcl_armor/register.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_armor") +local S = minetest.get_translator(minetest.get_current_modname()) mcl_armor.register_set({ name = "leather", diff --git a/mods/ITEMS/mcl_armor_stand/init.lua b/mods/ITEMS/mcl_armor_stand/init.lua index 870d567fc..d6080b8f8 100644 --- a/mods/ITEMS/mcl_armor_stand/init.lua +++ b/mods/ITEMS/mcl_armor_stand/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_armor_stand") +local S = minetest.get_translator(minetest.get_current_modname()) -- Spawn a stand entity local function spawn_stand_entity(pos, node) diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua index 4ab291804..490e22643 100644 --- a/mods/ITEMS/mcl_banners/init.lua +++ b/mods/ITEMS/mcl_banners/init.lua @@ -1,6 +1,11 @@ -local S = minetest.get_translator("mcl_banners") +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 +local mod_mcl_core = minetest.get_modpath("mcl_core") +local mod_doc = minetest.get_modpath("doc") + local node_sounds if minetest.get_modpath("mcl_sounds") then node_sounds = mcl_sounds.node_sound_wood_defaults() @@ -84,7 +89,7 @@ for k,v in pairs(mcl_banners.colors) do end -- Add pattern/emblazoning crafting recipes -dofile(minetest.get_modpath("mcl_banners").."/patterncraft.lua") +dofile(modpath.."/patterncraft.lua") -- Overlay ratios (0-255) local base_color_ratio = 224 @@ -190,7 +195,7 @@ local function spawn_banner_entity(pos, hanging, itemstack) local colorid = colors_reverse[itemstack:get_name()] banner:get_luaentity():_set_textures(colorid, layers) local mname = imeta:get_string("name") - if mname ~= nil and mname ~= "" then + if mname and mname ~= "" then banner:get_luaentity()._item_name = mname banner:get_luaentity()._item_description = imeta:get_string("description") end @@ -542,7 +547,7 @@ for colorid, colortab in pairs(mcl_banners.colors) do end meta:set_int("rotation_level", rotation_level) - if banner_entity ~= nil then + if banner_entity then banner_entity:set_yaw(final_yaw) end @@ -568,7 +573,7 @@ for colorid, colortab in pairs(mcl_banners.colors) do end, }) - if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_wool") then + if mod_mcl_core and minetest.get_modpath("mcl_wool") then minetest.register_craft({ output = itemstring, recipe = { @@ -579,14 +584,14 @@ for colorid, colortab in pairs(mcl_banners.colors) do }) end - if minetest.get_modpath("doc") then + if mod_doc then -- Add item to node alias doc.add_entry_alias("nodes", "mcl_banners:standing_banner", "craftitems", itemstring) end end end -if minetest.get_modpath("doc") then +if mod_doc then -- Add item to node alias doc.add_entry_alias("nodes", "mcl_banners:standing_banner", "nodes", "mcl_banners:hanging_banner") end diff --git a/mods/ITEMS/mcl_banners/patterncraft.lua b/mods/ITEMS/mcl_banners/patterncraft.lua index 65699768e..bc2771fee 100644 --- a/mods/ITEMS/mcl_banners/patterncraft.lua +++ b/mods/ITEMS/mcl_banners/patterncraft.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_banners") +local S = minetest.get_translator(minetest.get_current_modname()) local N = function(s) return s end -- Pattern crafting. This file contains the code for crafting all the diff --git a/mods/ITEMS/mcl_beds/api.lua b/mods/ITEMS/mcl_beds/api.lua index ee59bc34b..85873f3c6 100644 --- a/mods/ITEMS/mcl_beds/api.lua +++ b/mods/ITEMS/mcl_beds/api.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_beds") +local S = minetest.get_translator(minetest.get_current_modname()) local minetest_get_node = minetest.get_node local minetest_get_node_or_nil = minetest.get_node_or_nil diff --git a/mods/ITEMS/mcl_beds/beds.lua b/mods/ITEMS/mcl_beds/beds.lua index 8f41c7a3f..5043c85d2 100644 --- a/mods/ITEMS/mcl_beds/beds.lua +++ b/mods/ITEMS/mcl_beds/beds.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_beds") +local S = minetest.get_translator(minetest.get_current_modname()) local mod_doc = minetest.get_modpath("doc") local nodebox = { diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index fd156757b..dc9afe2ba 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -1,11 +1,12 @@ -local S = minetest.get_translator("mcl_beds") +local S = minetest.get_translator(minetest.get_current_modname()) local F = minetest.formspec_escape -local pi = math.pi +local math = math +local vector = vector local player_in_bed = 0 local is_sp = minetest.is_singleplayer() -local weather_mod = minetest.get_modpath("mcl_weather") ~= nil -local explosions_mod = minetest.get_modpath("mcl_explosions") ~= nil +local weather_mod = minetest.get_modpath("mcl_weather") +local explosions_mod = minetest.get_modpath("mcl_explosions") local spawn_mod = minetest.get_modpath("mcl_spawn") local worlds_mod = minetest.get_modpath("mcl_worlds") @@ -14,11 +15,11 @@ local worlds_mod = minetest.get_modpath("mcl_worlds") local function get_look_yaw(pos) local n = minetest.get_node(pos) if n.param2 == 1 then - return pi / 2, n.param2 + return math.pi / 2, n.param2 elseif n.param2 == 3 then - return -pi / 2, n.param2 + return -math.pi / 2, n.param2 elseif n.param2 == 0 then - return pi, n.param2 + return math.pi, n.param2 else return 0, n.param2 end @@ -105,7 +106,7 @@ local function lay_down(player, pos, bed_pos, state, skip) -- The exceptions above apply. -- Zombie pigmen only prevent sleep while they are hostle. for _, obj in pairs(minetest.get_objects_inside_radius(bed_pos, 8)) do - if obj ~= nil and not obj:is_player() then + if obj and not obj:is_player() then local ent = obj:get_luaentity() local mobname = ent.name local def = minetest.registered_entities[mobname] @@ -122,7 +123,7 @@ local function lay_down(player, pos, bed_pos, state, skip) -- stand up if state ~= nil and not state then local p = mcl_beds.pos[name] or nil - if mcl_beds.player[name] ~= nil then + if mcl_beds.player[name] then mcl_beds.player[name] = nil player_in_bed = player_in_bed - 1 end @@ -157,7 +158,7 @@ local function lay_down(player, pos, bed_pos, state, skip) local def2 = minetest.registered_nodes[n2.name] if def1.walkable or def2.walkable then return false, S("You can't sleep, the bed is obstructed!") - elseif (def1.damage_per_second ~= nil and def1.damage_per_second > 0) or (def2.damage_per_second ~= nil and def2.damage_per_second > 0) then + elseif (def1.damage_per_second and def1.damage_per_second > 0) or (def2.damage_per_second and def2.damage_per_second > 0) then return false, S("It's too dangerous to sleep here!") end @@ -273,7 +274,7 @@ end -- Throw a player out of bed function mcl_beds.kick_player(player) local name = player:get_player_name() - if mcl_beds.player[name] ~= nil then + if mcl_beds.player[name] then lay_down(player, nil, nil, false) update_formspecs(false) minetest.close_formspec(name, "mcl_beds_form") diff --git a/mods/ITEMS/mcl_books/init.lua b/mods/ITEMS/mcl_books/init.lua index 0839c1650..e549ef6f3 100644 --- a/mods/ITEMS/mcl_books/init.lua +++ b/mods/ITEMS/mcl_books/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_books") +local S = minetest.get_translator(minetest.get_current_modname()) local max_text_length = 4500 -- TODO: Increase to 12800 when scroll bar was added to written book local max_title_length = 64 @@ -21,9 +21,9 @@ minetest.register_craftitem("mcl_books:book", { if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_mobitems") then minetest.register_craft({ - type = 'shapeless', - output = 'mcl_books:book', - recipe = { 'mcl_core:paper', 'mcl_core:paper', 'mcl_core:paper', 'mcl_mobitems:leather', } + type = "shapeless", + output = "mcl_books:book", + recipe = { "mcl_core:paper", "mcl_core:paper", "mcl_core:paper", "mcl_mobitems:leather", } }) end @@ -347,11 +347,11 @@ minetest.register_node("mcl_books:bookshelf", { }) minetest.register_craft({ - output = 'mcl_books:bookshelf', + output = "mcl_books:bookshelf", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'mcl_books:book', 'mcl_books:book', 'mcl_books:book'}, - {'group:wood', 'group:wood', 'group:wood'}, + {"group:wood", "group:wood", "group:wood"}, + {"mcl_books:book", "mcl_books:book", "mcl_books:book"}, + {"group:wood", "group:wood", "group:wood"}, } }) diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index 8b2eb0ac0..9a22ee622 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -202,7 +202,7 @@ function ARROW_ENTITY.on_step(self, dtime) -- Arrows can only damage players and mobs if obj:is_player() then ok = true - elseif obj:get_luaentity() ~= nil then + elseif obj:get_luaentity() then if (obj:get_luaentity()._cmi_is_mob or obj:get_luaentity()._hittable_by_projectile) then ok = true end @@ -222,7 +222,7 @@ function ARROW_ENTITY.on_step(self, dtime) -- If an attackable object was found, we will damage the closest one only - if closest_object ~= nil then + if closest_object then local obj = closest_object local is_player = obj:is_player() local lua = obj:get_luaentity() @@ -273,25 +273,25 @@ function ARROW_ENTITY.on_step(self, dtime) else self._rotation_station = -90 end - self._y_position = random_arrow_positions('y', placement) - self._x_position = random_arrow_positions('x', placement) + self._y_position = random_arrow_positions("y", placement) + self._x_position = random_arrow_positions("x", placement) if self._y_position > 6 and self._x_position < 2 and self._x_position > -2 then - self._attach_parent = 'Head' + self._attach_parent = "Head" self._y_position = self._y_position - 6 elseif self._x_position > 2 then - self._attach_parent = 'Arm_Right' + self._attach_parent = "Arm_Right" self._y_position = self._y_position - 3 self._x_position = self._x_position - 2 elseif self._x_position < -2 then - self._attach_parent = 'Arm_Left' + self._attach_parent = "Arm_Left" self._y_position = self._y_position - 3 self._x_position = self._x_position + 2 else - self._attach_parent = 'Body' + self._attach_parent = "Body" end self._z_rotation = math.random(-30, 30) self._y_rotation = math.random( -30, 30) - self.object:set_attach(obj, self._attach_parent, {x=self._x_position,y=self._y_position,z=random_arrow_positions('z', placement)}, {x=0,y=self._rotation_station + self._y_rotation,z=self._z_rotation}) + self.object:set_attach(obj, self._attach_parent, {x=self._x_position,y=self._y_position,z=random_arrow_positions("z", placement)}, {x=0,y=self._rotation_station + self._y_rotation,z=self._z_rotation}) minetest.after(150, function() self.object:remove() end) @@ -494,15 +494,15 @@ minetest.register_entity("mcl_bows:arrow_entity", ARROW_ENTITY) if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_mobitems") then minetest.register_craft({ - output = 'mcl_bows:arrow 4', + output = "mcl_bows:arrow 4", recipe = { - {'mcl_core:flint'}, - {'mcl_core:stick'}, - {'mcl_mobitems:feather'} + {"mcl_core:flint"}, + {"mcl_core:stick"}, + {"mcl_mobitems:feather"} } }) end -if minetest.get_modpath("doc_identifier") ~= nil then +if minetest.get_modpath("doc_identifier") then doc.sub.identifier.register_object("mcl_bows:arrow_entity", "craftitems", "mcl_bows:arrow") end diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index 8d60f3969..23b6b4310 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_bows") +local S = minetest.get_translator(minetest.get_current_modname()) mcl_bows = {} @@ -66,7 +66,7 @@ function mcl_bows.shoot_arrow(arrow_item, pos, dir, yaw, shooter, power, damage, le._knockback = knockback le._collectable = collectable minetest.sound_play("mcl_bows_bow_shoot", {pos=pos, max_hear_distance=16}, true) - if shooter ~= nil and shooter:is_player() then + if shooter and shooter:is_player() then if obj:get_luaentity().player == "" then obj:get_luaentity().player = shooter end @@ -362,19 +362,19 @@ end) if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_mobitems") then minetest.register_craft({ - output = 'mcl_bows:bow', + output = "mcl_bows:bow", recipe = { - {'', 'mcl_core:stick', 'mcl_mobitems:string'}, - {'mcl_core:stick', '', 'mcl_mobitems:string'}, - {'', 'mcl_core:stick', 'mcl_mobitems:string'}, + {"", "mcl_core:stick", "mcl_mobitems:string"}, + {"mcl_core:stick", "", "mcl_mobitems:string"}, + {"", "mcl_core:stick", "mcl_mobitems:string"}, } }) minetest.register_craft({ - output = 'mcl_bows:bow', + output = "mcl_bows:bow", recipe = { - {'mcl_mobitems:string', 'mcl_core:stick', ''}, - {'mcl_mobitems:string', '', 'mcl_core:stick'}, - {'mcl_mobitems:string', 'mcl_core:stick', ''}, + {"mcl_mobitems:string", "mcl_core:stick", ""}, + {"mcl_mobitems:string", "", "mcl_core:stick"}, + {"mcl_mobitems:string", "mcl_core:stick", ""}, } }) end diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index fd07006b7..90ccec636 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -13,10 +13,10 @@ local mod_mcl_core = minetest.get_modpath("mcl_core") if mod_mcl_core then minetest.register_craft({ - output = 'mcl_buckets:bucket_empty 1', + output = "mcl_buckets:bucket_empty 1", recipe = { - {'mcl_core:iron_ingot', '', 'mcl_core:iron_ingot'}, - {'', 'mcl_core:iron_ingot', ''}, + {"mcl_core:iron_ingot", "", "mcl_core:iron_ingot"}, + {"", "mcl_core:iron_ingot", ""}, } }) end @@ -58,7 +58,7 @@ function mcl_buckets.register_liquid(def) end end - if def.itemname ~= nil then + if def.itemname then minetest.register_craftitem(def.itemname, { description = def.name, _doc_items_longdesc = def.longdesc, @@ -201,7 +201,7 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { -- Check if pointing to a liquid source local liquiddef = mcl_buckets.liquids[nn] local new_bucket - if liquiddef ~= nil and liquiddef.itemname ~= nil and (nn == liquiddef.source_take) then + if liquiddef and liquiddef.itemname and (nn == liquiddef.source_take) then -- Fill bucket, but not in Creative Mode if not minetest.is_creative_enabled(user:get_player_name()) then @@ -259,7 +259,7 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { local liquiddef = mcl_buckets.liquids[dropnode.name] local new_bucket - if liquiddef ~= nil and liquiddef.itemname ~= nil and (dropnode.name == liquiddef.source_take) then + if liquiddef and liquiddef.itemname and (dropnode.name == liquiddef.source_take) then -- Fill bucket new_bucket = ItemStack({name = liquiddef.itemname}) sound_take(dropnode.name, droppos) diff --git a/mods/ITEMS/mcl_buckets/register.lua b/mods/ITEMS/mcl_buckets/register.lua index 5e46b6ce0..863aa074c 100644 --- a/mods/ITEMS/mcl_buckets/register.lua +++ b/mods/ITEMS/mcl_buckets/register.lua @@ -55,7 +55,7 @@ if mod_mcl_core then extra_check = function(pos, placer) -- Check protection local placer_name = "" - if placer ~= nil then + if placer then placer_name = placer:get_player_name() end if placer and minetest.is_protected(pos, placer_name) then @@ -98,7 +98,7 @@ if mod_mclx_core then extra_check = function(pos, placer) -- Check protection local placer_name = "" - if placer ~= nil then + if placer then placer_name = placer:get_player_name() end if placer and minetest.is_protected(pos, placer_name) then diff --git a/mods/ITEMS/mcl_cake/init.lua b/mods/ITEMS/mcl_cake/init.lua index aeb706287..777b7ec58 100644 --- a/mods/ITEMS/mcl_cake/init.lua +++ b/mods/ITEMS/mcl_cake/init.lua @@ -5,7 +5,7 @@ local CAKE_HUNGER_POINTS = 2 -local S = minetest.get_translator("mcl_cake") +local S = minetest.get_translator(minetest.get_current_modname()) local cake_texture = {"cake_top.png","cake_bottom.png","cake_inner.png","cake_side.png","cake_side.png","cake_side.png"} local slice_1 = { -7/16, -8/16, -7/16, -5/16, 0/16, 7/16} @@ -20,9 +20,9 @@ local full_cake = { -7/16, -8/16, -7/16, 7/16, 0/16, 7/16} minetest.register_craft({ output = "mcl_cake:cake", recipe = { - {'mcl_mobitems:milk_bucket', 'mcl_mobitems:milk_bucket', 'mcl_mobitems:milk_bucket'}, - {'mcl_core:sugar', 'mcl_throwing:egg', 'mcl_core:sugar'}, - {'mcl_farming:wheat_item', 'mcl_farming:wheat_item', 'mcl_farming:wheat_item'}, + {"mcl_mobitems:milk_bucket", "mcl_mobitems:milk_bucket", "mcl_mobitems:milk_bucket"}, + {"mcl_core:sugar", "mcl_throwing:egg", "mcl_core:sugar"}, + {"mcl_farming:wheat_item", "mcl_farming:wheat_item", "mcl_farming:wheat_item"}, }, replacements = { {"mcl_mobitems:milk_bucket", "mcl_buckets:bucket_empty"}, @@ -53,7 +53,7 @@ minetest.register_node("mcl_cake:cake", { }, stack_max = 1, groups = {handy=1, cake=7, food=2,no_eat_delay=1, attached_node=1, dig_by_piston=1, comparator_signal=14}, - drop = '', + drop = "", on_rightclick = function(pos, node, clicker, itemstack) -- Cake is subject to protection local name = clicker:get_player_name() @@ -126,7 +126,7 @@ local register_slice = function(level, nodebox, desc) fixed = nodebox, }, groups = {handy=1, cake=level, food=2,no_eat_delay=1,attached_node=1,not_in_creative_inventory=1,dig_by_piston=1,comparator_signal=level*2}, - drop = '', + drop = "", on_rightclick = on_rightclick, sounds = mcl_sounds.node_sound_leaves_defaults(), diff --git a/mods/ITEMS/mcl_cauldrons/init.lua b/mods/ITEMS/mcl_cauldrons/init.lua index 62c45170c..55866f5cc 100644 --- a/mods/ITEMS/mcl_cauldrons/init.lua +++ b/mods/ITEMS/mcl_cauldrons/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_cauldron") +local S = minetest.get_translator(minetest.get_current_modname()) -- Cauldron mod, adds cauldrons. diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index de7ef97ca..de8b9bd09 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_chests") +local S = minetest.get_translator(minetest.get_current_modname()) local mod_doc = minetest.get_modpath("doc") -- Chest Entity @@ -158,8 +158,8 @@ end --[[ List of open chests. Key: Player name Value: - If player is using a chest: { pos = } - Otherwise: nil ]] + If player is using a chest: { pos = } + Otherwise: nil ]] local open_chests = {} --[[local function back_is_blocked(pos, dir) @@ -171,7 +171,7 @@ local open_chests = {} 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 function player_chest_open(player, pos, node_name, textures, param2, double, sound, mesh, shulker) local name = player:get_player_name() open_chests[name] = {pos = pos, node_name = node_name, textures = textures, param2 = param2, double = double, sound = sound, mesh = mesh, shulker = shulker} if animate_chests then @@ -181,7 +181,7 @@ local player_chest_open = function(player, pos, node_name, textures, param2, dou end -- Simple protection checking functions -local protection_check_move = function(pos, from_list, from_index, to_list, to_index, count, player) +local function protection_check_move(pos, from_list, from_index, to_list, to_index, count, player) local name = player:get_player_name() if minetest.is_protected(pos, name) then minetest.record_protection_violation(pos, name) @@ -190,7 +190,7 @@ local protection_check_move = function(pos, from_list, from_index, to_list, to_i return count end end -local protection_check_put_take = function(pos, listname, index, stack, player) +local function protection_check_put_take(pos, listname, index, stack, player) local name = player:get_player_name() if minetest.is_protected(pos, name) then minetest.record_protection_violation(pos, name) @@ -203,7 +203,7 @@ end local trapped_chest_mesecons_rules = mesecon.rules.pplate -- To be called when a chest is closed (only relevant for trapped chest atm) -local chest_update_after_close = function(pos) +local function chest_update_after_close(pos) local node = minetest.get_node(pos) if node.name == "mcl_chests:trapped_chest_on_small" then @@ -230,7 +230,7 @@ local chest_update_after_close = function(pos) end -- To be called if a player closed a chest -local player_chest_close = function(player) +local function player_chest_close(player) local name = player:get_player_name() local open_chest = open_chests[name] if open_chest == nil then @@ -245,569 +245,569 @@ local player_chest_close = function(player) end -- This is a helper function to register both chests and trapped chests. Trapped chests will make use of the additional parameters -local register_chest = function(basename, desc, longdesc, usagehelp, tt_help, tiles_table, hidden, mesecons, on_rightclick_addendum, on_rightclick_addendum_left, on_rightclick_addendum_right, drop, canonical_basename) --- START OF register_chest FUNCTION BODY -if not drop then - drop = "mcl_chests:"..basename -else - drop = "mcl_chests:"..drop -end --- The basename of the "canonical" version of the node, if set (e.g.: trapped_chest_on → trapped_chest). --- Used to get a shared formspec ID and to swap the node back to the canonical version in on_construct. -if not canonical_basename then - canonical_basename = basename -end - -local double_chest_add_item = function(top_inv, bottom_inv, listname, stack) - if not stack or stack:is_empty() then - return +local function register_chest(basename, desc, longdesc, usagehelp, tt_help, tiles_table, hidden, mesecons, on_rightclick_addendum, on_rightclick_addendum_left, on_rightclick_addendum_right, drop, canonical_basename) + -- START OF register_chest FUNCTION BODY + if not drop then + drop = "mcl_chests:"..basename + else + drop = "mcl_chests:"..drop + end + -- The basename of the "canonical" version of the node, if set (e.g.: trapped_chest_on → trapped_chest). + -- Used to get a shared formspec ID and to swap the node back to the canonical version in on_construct. + if not canonical_basename then + canonical_basename = basename end - local name = stack:get_name() + local function double_chest_add_item(top_inv, bottom_inv, listname, stack) + if not stack or stack:is_empty() then + return + end - local top_off = function(inv, stack) - for c, chest_stack in ipairs(inv:get_list(listname)) do + local name = stack:get_name() + + local function top_off(inv, stack) + for c, chest_stack in ipairs(inv:get_list(listname)) do + if stack:is_empty() then + break + end + + if chest_stack:get_name() == name and chest_stack:get_free_space() > 0 then + stack = chest_stack:add_item(stack) + inv:set_stack(listname, c, chest_stack) + end + end + + return stack + end + + stack = top_off(top_inv, stack) + stack = top_off(bottom_inv, stack) + + if not stack:is_empty() then + stack = top_inv:add_item(listname, stack) + if not stack:is_empty() then + bottom_inv:add_item(listname, stack) + end + end + end + + local function drop_items_chest(pos, oldnode, oldmetadata) + local meta = minetest.get_meta(pos) + local meta2 = meta + if oldmetadata then + meta:from_table(oldmetadata) + end + local inv = meta:get_inventory() + for i=1,inv:get_size("main") do + local stack = inv:get_stack("main", i) + if not stack:is_empty() then + local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} + minetest.add_item(p, stack) + end + end + meta:from_table(meta2:to_table()) + end + + local function on_chest_blast(pos) + local node = minetest.get_node(pos) + drop_items_chest(pos, node) + minetest.remove_node(pos) + end + + local function limit_put_list(stack, list) + for _, other in ipairs(list) do + stack = other:add_item(stack) if stack:is_empty() then break end - - if chest_stack:get_name() == name and chest_stack:get_free_space() > 0 then - stack = chest_stack:add_item(stack) - inv:set_stack(listname, c, chest_stack) - end end - return stack end - stack = top_off(top_inv, stack) - stack = top_off(bottom_inv, stack) + local function limit_put(stack, inv1, inv2) + local leftover = ItemStack(stack) + leftover = limit_put_list(leftover, inv1:get_list("main")) + leftover = limit_put_list(leftover, inv2:get_list("main")) + return stack:get_count() - leftover:get_count() + end - if not stack:is_empty() then - stack = top_inv:add_item(listname, stack) - if not stack:is_empty() then - bottom_inv:add_item(listname, stack) + local small_name = "mcl_chests:"..basename.."_small" + local small_textures = tiles_table.small + local left_name = "mcl_chests:"..basename.."_left" + local left_textures = tiles_table.double + + minetest.register_node("mcl_chests:"..basename, { + description = desc, + _tt_help = tt_help, + _doc_items_longdesc = longdesc, + _doc_items_usagehelp = usagehelp, + _doc_items_hidden = hidden, + drawtype = "mesh", + mesh = "mcl_chests_chest.obj", + tiles = small_textures, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, + paramtype = "light", + paramtype2 = "facedir", + stack_max = 64, + sounds = mcl_sounds.node_sound_wood_defaults(), + groups = {deco_block=1}, + on_construct = function(pos, node) + local node = minetest.get_node(pos) + node.name = small_name + minetest.set_node(pos, node) + end, + after_place_node = function(pos, placer, itemstack, pointed_thing) + minetest.get_meta(pos):set_string("name", itemstack:get_meta():get_string("name")) + end, + }) + + local function close_forms(canonical_basename, pos) + local players = minetest.get_connected_players() + for p=1, #players do + if vector.distance(players[p]:get_pos(), pos) <= 30 then + minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) + end end end -end -local drop_items_chest = function(pos, oldnode, oldmetadata) - local meta = minetest.get_meta(pos) - local meta2 = meta - if oldmetadata then - meta:from_table(oldmetadata) - end - local inv = meta:get_inventory() - for i=1,inv:get_size("main") do - local stack = inv:get_stack("main", i) - if not stack:is_empty() then - local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} - minetest.add_item(p, stack) - end - end - meta:from_table(meta2:to_table()) -end + minetest.register_node(small_name, { + description = desc, + _tt_help = tt_help, + _doc_items_longdesc = longdesc, + _doc_items_usagehelp = usagehelp, + _doc_items_hidden = hidden, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = {-0.4375, -0.5, -0.4375, 0.4375, 0.375, 0.4375}, + }, + tiles = {"mcl_chests_blank.png"}, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, + _chest_entity_textures = small_textures, + _chest_entity_sound = "default_chest", + _chest_entity_mesh = "mcl_chests_chest", + _chest_entity_animation_type = "chest", + paramtype = "light", + paramtype2 = "facedir", + stack_max = 64, + drop = drop, + groups = {handy=1,axey=1, container=2, deco_block=1, material_wood=1,flammable=-1,chest_entity=1, not_in_creative_inventory=1}, + is_ground_content = false, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_construct = function(pos) + local param2 = minetest.get_node(pos).param2 + local meta = minetest.get_meta(pos) + --[[ This is a workaround for Minetest issue 5894 + . + Apparently if we don't do this, large chests initially don't work when + placed at chunk borders, and some chests randomly don't work after + placing. ]] + -- FIXME: Remove this workaround when the bug has been fixed. + -- BEGIN OF WORKAROUND -- + meta:set_string("workaround", "ignore_me") + meta:set_string("workaround", nil) -- Done to keep metadata clean + -- END OF WORKAROUND -- + local inv = meta:get_inventory() + inv:set_size("main", 9*3) + --[[ The "input" list is *another* workaround (hahahaha!) around the fact that Minetest + does not support listrings to put items into an alternative list if the first one + happens to be full. See . + This list is a hidden input-only list and immediately puts items into the appropriate chest. + It is only used for listrings and hoppers. This workaround is not that bad because it only + requires a simple “inventory allows” check for large chests.]] + -- FIXME: Refactor the listrings as soon Minetest supports alternative listrings + -- BEGIN OF LISTRING WORKAROUND + inv:set_size("input", 1) + -- END OF LISTRING WORKAROUND + if minetest.get_node(mcl_util.get_double_container_neighbor_pos(pos, param2, "right")).name == "mcl_chests:"..canonical_basename.."_small" then + minetest.swap_node(pos, {name="mcl_chests:"..canonical_basename.."_right",param2=param2}) + local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "right") + minetest.swap_node(p, { name = "mcl_chests:"..canonical_basename.."_left", param2 = param2 }) + create_entity(p, "mcl_chests:"..canonical_basename.."_left", left_textures, param2, true, "default_chest", "mcl_chests_chest", "chest") + elseif minetest.get_node(mcl_util.get_double_container_neighbor_pos(pos, param2, "left")).name == "mcl_chests:"..canonical_basename.."_small" then + minetest.swap_node(pos, {name="mcl_chests:"..canonical_basename.."_left",param2=param2}) + create_entity(pos, "mcl_chests:"..canonical_basename.."_left", left_textures, param2, true, "default_chest", "mcl_chests_chest", "chest") + local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "left") + minetest.swap_node(p, { name = "mcl_chests:"..canonical_basename.."_right", param2 = param2 }) + else + minetest.swap_node(pos, { name = "mcl_chests:"..canonical_basename.."_small", param2 = param2 }) + create_entity(pos, small_name, small_textures, param2, false, "default_chest", "mcl_chests_chest", "chest") + end + end, + after_place_node = function(pos, placer, itemstack, pointed_thing) + minetest.get_meta(pos):set_string("name", itemstack:get_meta():get_string("name")) + end, + after_dig_node = drop_items_chest, + on_blast = on_chest_blast, + allow_metadata_inventory_move = protection_check_move, + allow_metadata_inventory_take = protection_check_put_take, + allow_metadata_inventory_put = protection_check_put_take, + on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + minetest.log("action", player:get_player_name().. + " moves stuff in chest at "..minetest.pos_to_string(pos)) + end, + on_metadata_inventory_put = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " moves stuff to chest at "..minetest.pos_to_string(pos)) + -- BEGIN OF LISTRING WORKAROUND + if listname == "input" then + local inv = minetest.get_inventory({type="node", pos=pos}) + inv:add_item("main", stack) + end + -- END OF LISTRING WORKAROUND + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " takes stuff from chest at "..minetest.pos_to_string(pos)) + end, + _mcl_blast_resistance = 2.5, + _mcl_hardness = 2.5, -local on_chest_blast = function(pos) - local node = minetest.get_node(pos) - drop_items_chest(pos, node) - minetest.remove_node(pos) -end + on_rightclick = function(pos, node, clicker) + if minetest.registered_nodes[minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name].groups.opaque == 1 then + -- won't open if there is no space from the top + return false + end + local name = minetest.get_meta(pos):get_string("name") + if name == "" then + name = S("Chest") + end -local function limit_put_list(stack, list) - for _, other in ipairs(list) do - stack = other:add_item(stack) - if stack:is_empty() then - break - end - end - return stack -end + minetest.show_formspec(clicker:get_player_name(), + "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, + "size[9,8.75]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", name)).."]".. + "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. + mcl_formspec.get_itemslot_bg(0,0.5,9,3).. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. + "list[current_player;main;0,4.5;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,4.5,9,3).. + "list[current_player;main;0,7.74;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7.74,9,1).. + "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]".. + "listring[current_player;main]") -local function limit_put(stack, inv1, inv2) - local leftover = ItemStack(stack) - leftover = limit_put_list(leftover, inv1:get_list("main")) - leftover = limit_put_list(leftover, inv2:get_list("main")) - return stack:get_count() - leftover:get_count() -end + if on_rightclick_addendum then + on_rightclick_addendum(pos, node, clicker) + end -local small_name = "mcl_chests:"..basename.."_small" -local small_textures = tiles_table.small -local left_name = "mcl_chests:"..basename.."_left" -local left_textures = tiles_table.double + player_chest_open(clicker, pos, small_name, small_textures, node.param2, false, "default_chest", "mcl_chests_chest") + end, -minetest.register_node("mcl_chests:"..basename, { - description = desc, - _tt_help = tt_help, - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usagehelp, - _doc_items_hidden = hidden, - drawtype = "mesh", - mesh = "mcl_chests_chest.obj", - tiles = small_textures, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, - paramtype = "light", - paramtype2 = "facedir", - stack_max = 64, - sounds = mcl_sounds.node_sound_wood_defaults(), - groups = {deco_block=1}, - on_construct = function(pos, node) - local node = minetest.get_node(pos) - node.name = small_name - minetest.set_node(pos, node) - end, - after_place_node = function(pos, placer, itemstack, pointed_thing) - minetest.get_meta(pos):set_string("name", itemstack:get_meta():get_string("name")) - end, -}) + on_destruct = function(pos) + close_forms(canonical_basename, pos) + end, + mesecons = mesecons, + on_rotate = simple_rotate, + }) -local function close_forms(canonical_basename, pos) - local players = minetest.get_connected_players() - for p=1, #players do - if vector.distance(players[p]:get_pos(), pos) <= 30 then - minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) - end - end -end - -minetest.register_node(small_name, { - description = desc, - _tt_help = tt_help, - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usagehelp, - _doc_items_hidden = hidden, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = {-0.4375, -0.5, -0.4375, 0.4375, 0.375, 0.4375}, - }, - tiles = {"mcl_chests_blank.png"}, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, - _chest_entity_textures = small_textures, - _chest_entity_sound = "default_chest", - _chest_entity_mesh = "mcl_chests_chest", - _chest_entity_animation_type = "chest", - paramtype = "light", - paramtype2 = "facedir", - stack_max = 64, - drop = drop, - groups = {handy=1,axey=1, container=2, deco_block=1, material_wood=1,flammable=-1,chest_entity=1, not_in_creative_inventory=1}, - is_ground_content = false, - sounds = mcl_sounds.node_sound_wood_defaults(), - on_construct = function(pos) - local param2 = minetest.get_node(pos).param2 - local meta = minetest.get_meta(pos) - --[[ This is a workaround for Minetest issue 5894 - . - Apparently if we don't do this, large chests initially don't work when - placed at chunk borders, and some chests randomly don't work after - placing. ]] - -- FIXME: Remove this workaround when the bug has been fixed. - -- BEGIN OF WORKAROUND -- - meta:set_string("workaround", "ignore_me") - meta:set_string("workaround", nil) -- Done to keep metadata clean - -- END OF WORKAROUND -- - local inv = meta:get_inventory() - inv:set_size("main", 9*3) - --[[ The "input" list is *another* workaround (hahahaha!) around the fact that Minetest - does not support listrings to put items into an alternative list if the first one - happens to be full. See . - This list is a hidden input-only list and immediately puts items into the appropriate chest. - It is only used for listrings and hoppers. This workaround is not that bad because it only - requires a simple “inventory allows” check for large chests.]] - -- FIXME: Refactor the listrings as soon Minetest supports alternative listrings - -- BEGIN OF LISTRING WORKAROUND - inv:set_size("input", 1) - -- END OF LISTRING WORKAROUND - if minetest.get_node(mcl_util.get_double_container_neighbor_pos(pos, param2, "right")).name == "mcl_chests:"..canonical_basename.."_small" then - minetest.swap_node(pos, {name="mcl_chests:"..canonical_basename.."_right",param2=param2}) - local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "right") - minetest.swap_node(p, { name = "mcl_chests:"..canonical_basename.."_left", param2 = param2 }) - create_entity(p, "mcl_chests:"..canonical_basename.."_left", left_textures, param2, true, "default_chest", "mcl_chests_chest", "chest") - elseif minetest.get_node(mcl_util.get_double_container_neighbor_pos(pos, param2, "left")).name == "mcl_chests:"..canonical_basename.."_small" then - minetest.swap_node(pos, {name="mcl_chests:"..canonical_basename.."_left",param2=param2}) - create_entity(pos, "mcl_chests:"..canonical_basename.."_left", left_textures, param2, true, "default_chest", "mcl_chests_chest", "chest") + minetest.register_node(left_name, { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = {-0.4375, -0.5, -0.4375, 0.5, 0.375, 0.4375}, + }, + tiles = {"mcl_chests_blank.png"}, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, + _chest_entity_textures = left_textures, + _chest_entity_sound = "default_chest", + _chest_entity_mesh = "mcl_chests_chest", + _chest_entity_animation_type = "chest", + paramtype = "light", + paramtype2 = "facedir", + groups = {handy=1,axey=1, container=5,not_in_creative_inventory=1, material_wood=1,flammable=-1,chest_entity=1,double_chest=1}, + drop = drop, + is_ground_content = false, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_construct = function(pos) + local n = minetest.get_node(pos) + local param2 = n.param2 local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "left") - minetest.swap_node(p, { name = "mcl_chests:"..canonical_basename.."_right", param2 = param2 }) - else - minetest.swap_node(pos, { name = "mcl_chests:"..canonical_basename.."_small", param2 = param2 }) - create_entity(pos, small_name, small_textures, param2, false, "default_chest", "mcl_chests_chest", "chest") - end - end, - after_place_node = function(pos, placer, itemstack, pointed_thing) - minetest.get_meta(pos):set_string("name", itemstack:get_meta():get_string("name")) - end, - after_dig_node = drop_items_chest, - on_blast = on_chest_blast, - allow_metadata_inventory_move = protection_check_move, - allow_metadata_inventory_take = protection_check_put_take, - allow_metadata_inventory_put = protection_check_put_take, - on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - minetest.log("action", player:get_player_name().. - " moves stuff in chest at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_put = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " moves stuff to chest at "..minetest.pos_to_string(pos)) - -- BEGIN OF LISTRING WORKAROUND - if listname == "input" then - local inv = minetest.get_inventory({type="node", pos=pos}) - inv:add_item("main", stack) - end - -- END OF LISTRING WORKAROUND - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " takes stuff from chest at "..minetest.pos_to_string(pos)) - end, - _mcl_blast_resistance = 2.5, - _mcl_hardness = 2.5, + if not p or minetest.get_node(p).name ~= "mcl_chests:"..canonical_basename.."_right" then + n.name = "mcl_chests:"..canonical_basename.."_small" + minetest.swap_node(pos, n) + end + create_entity(pos, left_name, left_textures, param2, true, "default_chest", "mcl_chests_chest", "chest") + end, + after_place_node = function(pos, placer, itemstack, pointed_thing) + minetest.get_meta(pos):set_string("name", itemstack:get_meta():get_string("name")) + end, + on_destruct = function(pos) + local n = minetest.get_node(pos) + if n.name == small_name then + return + end - on_rightclick = function(pos, node, clicker) - if minetest.registered_nodes[minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name].groups.opaque == 1 then - -- won't open if there is no space from the top - return false - end - local name = minetest.get_meta(pos):get_string("name") - if name == "" then - name = S("Chest") - end + close_forms(canonical_basename, pos) - minetest.show_formspec(clicker:get_player_name(), - "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, - "size[9,8.75]".. - "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", name)).."]".. - "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. - mcl_formspec.get_itemslot_bg(0,0.5,9,3).. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. - "list[current_player;main;0,4.5;9,3;9]".. - mcl_formspec.get_itemslot_bg(0,4.5,9,3).. - "list[current_player;main;0,7.74;9,1;]".. - mcl_formspec.get_itemslot_bg(0,7.74,9,1).. - "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]".. - "listring[current_player;main]") + local param2 = n.param2 + local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "left") + if not p or minetest.get_node(p).name ~= "mcl_chests:"..basename.."_right" then + return + end + close_forms(canonical_basename, p) - if on_rightclick_addendum then - on_rightclick_addendum(pos, node, clicker) - end - - player_chest_open(clicker, pos, small_name, small_textures, node.param2, false, "default_chest", "mcl_chests_chest") - end, - - on_destruct = function(pos) - close_forms(canonical_basename, pos) - end, - mesecons = mesecons, - on_rotate = simple_rotate, -}) - -minetest.register_node(left_name, { - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = {-0.4375, -0.5, -0.4375, 0.5, 0.375, 0.4375}, - }, - tiles = {"mcl_chests_blank.png"}, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, - _chest_entity_textures = left_textures, - _chest_entity_sound = "default_chest", - _chest_entity_mesh = "mcl_chests_chest", - _chest_entity_animation_type = "chest", - paramtype = "light", - paramtype2 = "facedir", - groups = {handy=1,axey=1, container=5,not_in_creative_inventory=1, material_wood=1,flammable=-1,chest_entity=1,double_chest=1}, - drop = drop, - is_ground_content = false, - sounds = mcl_sounds.node_sound_wood_defaults(), - on_construct = function(pos) - local n = minetest.get_node(pos) - local param2 = n.param2 - local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "left") - if not p or minetest.get_node(p).name ~= "mcl_chests:"..canonical_basename.."_right" then - n.name = "mcl_chests:"..canonical_basename.."_small" - minetest.swap_node(pos, n) - end - create_entity(pos, left_name, left_textures, param2, true, "default_chest", "mcl_chests_chest", "chest") - end, - after_place_node = function(pos, placer, itemstack, pointed_thing) - minetest.get_meta(pos):set_string("name", itemstack:get_meta():get_string("name")) - end, - on_destruct = function(pos) - local n = minetest.get_node(pos) - if n.name == small_name then - return - end - - close_forms(canonical_basename, pos) - - local param2 = n.param2 - local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "left") - if not p or minetest.get_node(p).name ~= "mcl_chests:"..basename.."_right" then - return - end - close_forms(canonical_basename, p) - - minetest.swap_node(p, { name = small_name, param2 = param2 }) - create_entity(p, small_name, small_textures, param2, false, "default_chest", "mcl_chests_chest", "chest") - end, - after_dig_node = drop_items_chest, - on_blast = on_chest_blast, - allow_metadata_inventory_move = protection_check_move, - allow_metadata_inventory_take = protection_check_put_take, - allow_metadata_inventory_put = function(pos, listname, index, stack, player) - local name = player:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return 0 - -- BEGIN OF LISTRING WORKAROUND - elseif listname == "input" then - local inv = minetest.get_inventory({type="node", pos=pos}) - local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "left") - local other_inv = minetest.get_inventory({type="node", pos=other_pos}) - return limit_put(stack, inv, other_inv) - --[[if inv:room_for_item("main", stack) then - return -1 - else - - if other_inv:room_for_item("main", stack) then + minetest.swap_node(p, { name = small_name, param2 = param2 }) + create_entity(p, small_name, small_textures, param2, false, "default_chest", "mcl_chests_chest", "chest") + end, + after_dig_node = drop_items_chest, + on_blast = on_chest_blast, + allow_metadata_inventory_move = protection_check_move, + allow_metadata_inventory_take = protection_check_put_take, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + -- BEGIN OF LISTRING WORKAROUND + elseif listname == "input" then + local inv = minetest.get_inventory({type="node", pos=pos}) + local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "left") + local other_inv = minetest.get_inventory({type="node", pos=other_pos}) + return limit_put(stack, inv, other_inv) + --[[if inv:room_for_item("main", stack) then return -1 else - return 0 - end - end]]-- - -- END OF LISTRING WORKAROUND - else - return stack:get_count() - end - end, - on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - minetest.log("action", player:get_player_name().. - " moves stuff in chest at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_put = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " moves stuff to chest at "..minetest.pos_to_string(pos)) - -- BEGIN OF LISTRING WORKAROUND - if listname == "input" then - local inv = minetest.get_inventory({type="node", pos=pos}) - local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "left") - local other_inv = minetest.get_inventory({type="node", pos=other_pos}) - inv:set_stack("input", 1, nil) - - double_chest_add_item(inv, other_inv, "main", stack) - end - -- END OF LISTRING WORKAROUND - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " takes stuff from chest at "..minetest.pos_to_string(pos)) - end, - _mcl_blast_resistance = 2.5, - _mcl_hardness = 2.5, - - on_rightclick = function(pos, node, clicker) - local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") - if minetest.registered_nodes[minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name].groups.opaque == 1 - or minetest.registered_nodes[minetest.get_node({x = pos_other.x, y = pos_other.y + 1, z = pos_other.z}).name].groups.opaque == 1 then - -- won't open if there is no space from the top - return false - end - - local name = minetest.get_meta(pos):get_string("name") - if name == "" then - name = minetest.get_meta(pos_other):get_string("name") - end - if name == "" then - name = S("Large Chest") - end - - minetest.show_formspec(clicker:get_player_name(), - "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, - "size[9,11.5]".. - "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", name)).."]".. - "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. - mcl_formspec.get_itemslot_bg(0,0.5,9,3).. - "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,3.5;9,3;]".. - mcl_formspec.get_itemslot_bg(0,3.5,9,3).. - "label[0,7;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. - "list[current_player;main;0,7.5;9,3;9]".. - mcl_formspec.get_itemslot_bg(0,7.5,9,3).. - "list[current_player;main;0,10.75;9,1;]".. - mcl_formspec.get_itemslot_bg(0,10.75,9,1).. - -- BEGIN OF LISTRING WORKAROUND - "listring[current_player;main]".. - "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";input]".. - -- END OF LISTRING WORKAROUND - "listring[current_player;main]".. - "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]".. - "listring[current_player;main]".. - "listring[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main]") - - if on_rightclick_addendum_left then - on_rightclick_addendum_left(pos, node, clicker) - end - - player_chest_open(clicker, pos, left_name, left_textures, node.param2, true, "default_chest", "mcl_chests_chest") - end, - mesecons = mesecons, - on_rotate = no_rotate, -}) - -minetest.register_node("mcl_chests:"..basename.."_right", { - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.4375, 0.4375, 0.375, 0.4375}, - }, - tiles = {"mcl_chests_blank.png"}, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, - groups = {handy=1,axey=1, container=6,not_in_creative_inventory=1, material_wood=1,flammable=-1,double_chest=2}, - drop = drop, - is_ground_content = false, - sounds = mcl_sounds.node_sound_wood_defaults(), - on_construct = function(pos) - local n = minetest.get_node(pos) - local param2 = n.param2 - local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "right") - if not p or minetest.get_node(p).name ~= "mcl_chests:"..canonical_basename.."_left" then - n.name = "mcl_chests:"..canonical_basename.."_small" - minetest.swap_node(pos, n) - end - end, - after_place_node = function(pos, placer, itemstack, pointed_thing) - minetest.get_meta(pos):set_string("name", itemstack:get_meta():get_string("name")) - end, - on_destruct = function(pos) - local n = minetest.get_node(pos) - if n.name == small_name then - return - end - - close_forms(canonical_basename, pos) - - local param2 = n.param2 - local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "right") - if not p or minetest.get_node(p).name ~= "mcl_chests:"..basename.."_left" then - return - end - close_forms(canonical_basename, p) - - minetest.swap_node(p, { name = small_name, param2 = param2 }) - create_entity(p, small_name, small_textures, param2, false, "default_chest", "mcl_chests_chest", "chest") - end, - after_dig_node = drop_items_chest, - on_blast = on_chest_blast, - allow_metadata_inventory_move = protection_check_move, - allow_metadata_inventory_take = protection_check_put_take, - allow_metadata_inventory_put = function(pos, listname, index, stack, player) - local name = player:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return 0 - -- BEGIN OF LISTRING WORKAROUND - elseif listname == "input" then - local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "right") - local other_inv = minetest.get_inventory({type="node", pos=other_pos}) - local inv = minetest.get_inventory({type="node", pos=pos}) - --[[if other_inv:room_for_item("main", stack) then - return -1 + if other_inv:room_for_item("main", stack) then + return -1 + else + return 0 + end + end]]-- + -- END OF LISTRING WORKAROUND else - if inv:room_for_item("main", stack) then + return stack:get_count() + end + end, + on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + minetest.log("action", player:get_player_name().. + " moves stuff in chest at "..minetest.pos_to_string(pos)) + end, + on_metadata_inventory_put = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " moves stuff to chest at "..minetest.pos_to_string(pos)) + -- BEGIN OF LISTRING WORKAROUND + if listname == "input" then + local inv = minetest.get_inventory({type="node", pos=pos}) + local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "left") + local other_inv = minetest.get_inventory({type="node", pos=other_pos}) + + inv:set_stack("input", 1, nil) + + double_chest_add_item(inv, other_inv, "main", stack) + end + -- END OF LISTRING WORKAROUND + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " takes stuff from chest at "..minetest.pos_to_string(pos)) + end, + _mcl_blast_resistance = 2.5, + _mcl_hardness = 2.5, + + on_rightclick = function(pos, node, clicker) + local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") + if minetest.registered_nodes[minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name].groups.opaque == 1 + or minetest.registered_nodes[minetest.get_node({x = pos_other.x, y = pos_other.y + 1, z = pos_other.z}).name].groups.opaque == 1 then + -- won't open if there is no space from the top + return false + end + + local name = minetest.get_meta(pos):get_string("name") + if name == "" then + name = minetest.get_meta(pos_other):get_string("name") + end + if name == "" then + name = S("Large Chest") + end + + minetest.show_formspec(clicker:get_player_name(), + "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, + "size[9,11.5]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", name)).."]".. + "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. + mcl_formspec.get_itemslot_bg(0,0.5,9,3).. + "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,3.5;9,3;]".. + mcl_formspec.get_itemslot_bg(0,3.5,9,3).. + "label[0,7;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. + "list[current_player;main;0,7.5;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,7.5,9,3).. + "list[current_player;main;0,10.75;9,1;]".. + mcl_formspec.get_itemslot_bg(0,10.75,9,1).. + -- BEGIN OF LISTRING WORKAROUND + "listring[current_player;main]".. + "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";input]".. + -- END OF LISTRING WORKAROUND + "listring[current_player;main]".. + "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]".. + "listring[current_player;main]".. + "listring[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main]") + + if on_rightclick_addendum_left then + on_rightclick_addendum_left(pos, node, clicker) + end + + player_chest_open(clicker, pos, left_name, left_textures, node.param2, true, "default_chest", "mcl_chests_chest") + end, + mesecons = mesecons, + on_rotate = no_rotate, + }) + + minetest.register_node("mcl_chests:"..basename.."_right", { + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.4375, 0.4375, 0.375, 0.4375}, + }, + tiles = {"mcl_chests_blank.png"}, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, + groups = {handy=1,axey=1, container=6,not_in_creative_inventory=1, material_wood=1,flammable=-1,double_chest=2}, + drop = drop, + is_ground_content = false, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_construct = function(pos) + local n = minetest.get_node(pos) + local param2 = n.param2 + local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "right") + if not p or minetest.get_node(p).name ~= "mcl_chests:"..canonical_basename.."_left" then + n.name = "mcl_chests:"..canonical_basename.."_small" + minetest.swap_node(pos, n) + end + end, + after_place_node = function(pos, placer, itemstack, pointed_thing) + minetest.get_meta(pos):set_string("name", itemstack:get_meta():get_string("name")) + end, + on_destruct = function(pos) + local n = minetest.get_node(pos) + if n.name == small_name then + return + end + + close_forms(canonical_basename, pos) + + local param2 = n.param2 + local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "right") + if not p or minetest.get_node(p).name ~= "mcl_chests:"..basename.."_left" then + return + end + close_forms(canonical_basename, p) + + minetest.swap_node(p, { name = small_name, param2 = param2 }) + create_entity(p, small_name, small_textures, param2, false, "default_chest", "mcl_chests_chest", "chest") + end, + after_dig_node = drop_items_chest, + on_blast = on_chest_blast, + allow_metadata_inventory_move = protection_check_move, + allow_metadata_inventory_take = protection_check_put_take, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + -- BEGIN OF LISTRING WORKAROUND + elseif listname == "input" then + local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "right") + local other_inv = minetest.get_inventory({type="node", pos=other_pos}) + local inv = minetest.get_inventory({type="node", pos=pos}) + --[[if other_inv:room_for_item("main", stack) then return -1 else - return 0 - end - end--]] - return limit_put(stack, other_inv, inv) - -- END OF LISTRING WORKAROUND - else - return stack:get_count() - end - end, - on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - minetest.log("action", player:get_player_name().. - " moves stuff in chest at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_put = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " moves stuff to chest at "..minetest.pos_to_string(pos)) - -- BEGIN OF LISTRING WORKAROUND - if listname == "input" then - local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "right") - local other_inv = minetest.get_inventory({type="node", pos=other_pos}) - local inv = minetest.get_inventory({type="node", pos=pos}) + if inv:room_for_item("main", stack) then + return -1 + else + return 0 + end + end--]] + return limit_put(stack, other_inv, inv) + -- END OF LISTRING WORKAROUND + else + return stack:get_count() + end + end, + on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + minetest.log("action", player:get_player_name().. + " moves stuff in chest at "..minetest.pos_to_string(pos)) + end, + on_metadata_inventory_put = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " moves stuff to chest at "..minetest.pos_to_string(pos)) + -- BEGIN OF LISTRING WORKAROUND + if listname == "input" then + local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "right") + local other_inv = minetest.get_inventory({type="node", pos=other_pos}) + local inv = minetest.get_inventory({type="node", pos=pos}) - inv:set_stack("input", 1, nil) + inv:set_stack("input", 1, nil) - double_chest_add_item(other_inv, inv, "main", stack) - end - -- END OF LISTRING WORKAROUND - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " takes stuff from chest at "..minetest.pos_to_string(pos)) - end, - _mcl_blast_resistance = 2.5, - _mcl_hardness = 2.5, + double_chest_add_item(other_inv, inv, "main", stack) + end + -- END OF LISTRING WORKAROUND + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " takes stuff from chest at "..minetest.pos_to_string(pos)) + end, + _mcl_blast_resistance = 2.5, + _mcl_hardness = 2.5, - on_rightclick = function(pos, node, clicker) - local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "right") - if minetest.registered_nodes[minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name].groups.opaque == 1 - or minetest.registered_nodes[minetest.get_node({x = pos_other.x, y = pos_other.y + 1, z = pos_other.z}).name].groups.opaque == 1 then - -- won't open if there is no space from the top - return false - end + on_rightclick = function(pos, node, clicker) + local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "right") + if minetest.registered_nodes[minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name].groups.opaque == 1 + or minetest.registered_nodes[minetest.get_node({x = pos_other.x, y = pos_other.y + 1, z = pos_other.z}).name].groups.opaque == 1 then + -- won't open if there is no space from the top + return false + end - local name = minetest.get_meta(pos_other):get_string("name") - if name == "" then - name = minetest.get_meta(pos):get_string("name") - end - if name == "" then - name = S("Large Chest") - end + local name = minetest.get_meta(pos_other):get_string("name") + if name == "" then + name = minetest.get_meta(pos):get_string("name") + end + if name == "" then + name = S("Large Chest") + end - minetest.show_formspec(clicker:get_player_name(), - "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, + minetest.show_formspec(clicker:get_player_name(), + "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, - "size[9,11.5]".. - "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", name)).."]".. - "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,0.5;9,3;]".. - mcl_formspec.get_itemslot_bg(0,0.5,9,3).. - "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,3.5;9,3;]".. - mcl_formspec.get_itemslot_bg(0,3.5,9,3).. - "label[0,7;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. - "list[current_player;main;0,7.5;9,3;9]".. - mcl_formspec.get_itemslot_bg(0,7.5,9,3).. - "list[current_player;main;0,10.75;9,1;]".. - mcl_formspec.get_itemslot_bg(0,10.75,9,1).. - -- BEGIN OF LISTRING WORKAROUND - "listring[current_player;main]".. - "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";input]".. - -- END OF LISTRING WORKAROUND - "listring[current_player;main]".. - "listring[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main]".. - "listring[current_player;main]".. - "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]") + "size[9,11.5]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", name)).."]".. + "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,0.5;9,3;]".. + mcl_formspec.get_itemslot_bg(0,0.5,9,3).. + "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,3.5;9,3;]".. + mcl_formspec.get_itemslot_bg(0,3.5,9,3).. + "label[0,7;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. + "list[current_player;main;0,7.5;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,7.5,9,3).. + "list[current_player;main;0,10.75;9,1;]".. + mcl_formspec.get_itemslot_bg(0,10.75,9,1).. + -- BEGIN OF LISTRING WORKAROUND + "listring[current_player;main]".. + "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";input]".. + -- END OF LISTRING WORKAROUND + "listring[current_player;main]".. + "listring[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main]".. + "listring[current_player;main]".. + "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]") - if on_rightclick_addendum_right then - on_rightclick_addendum_right(pos, node, clicker) - end + if on_rightclick_addendum_right then + on_rightclick_addendum_right(pos, node, clicker) + end - player_chest_open(clicker, pos_other, left_name, left_textures, node.param2, true, "default_chest", "mcl_chests_chest") - end, - mesecons = mesecons, - on_rotate = no_rotate, -}) + player_chest_open(clicker, pos_other, left_name, left_textures, node.param2, true, "default_chest", "mcl_chests_chest") + end, + mesecons = mesecons, + on_rotate = no_rotate, + }) -if mod_doc then - doc.add_entry_alias("nodes", small_name, "nodes", "mcl_chests:"..basename.."_left") - doc.add_entry_alias("nodes", small_name, "nodes", "mcl_chests:"..basename.."_right") -end + if mod_doc then + doc.add_entry_alias("nodes", small_name, "nodes", "mcl_chests:"..basename.."_left") + doc.add_entry_alias("nodes", small_name, "nodes", "mcl_chests:"..basename.."_right") + end --- END OF register_chest FUNCTION BODY + -- END OF register_chest FUNCTION BODY end local chestusage = S("To access its inventory, rightclick it. When broken, the items will drop out.") @@ -944,23 +944,23 @@ minetest.register_on_leaveplayer(function(player) end) minetest.register_craft({ - output = 'mcl_chests:chest', + output = "mcl_chests:chest", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', '', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, } }) minetest.register_craft({ - type = 'fuel', - recipe = 'mcl_chests:chest', + type = "fuel", + recipe = "mcl_chests:chest", burntime = 15 }) minetest.register_craft({ - type = 'fuel', - recipe = 'mcl_chests:trapped_chest', + type = "fuel", + recipe = "mcl_chests:trapped_chest", burntime = 15 }) @@ -1006,7 +1006,7 @@ minetest.register_node("mcl_chests:ender_chest_small", { drawtype = "nodebox", node_box = { type = "fixed", - fixed = {-0.4375, -0.5, -0.4375, 0.5, 0.375, 0.4375}, + fixed = {-0.4375, -0.5, -0.4375, 0.5, 0.375, 0.4375}, }, _chest_entity_textures = {"mcl_chests_ender.png"}, _chest_entity_sound = "mcl_chests_enderchest", @@ -1054,11 +1054,11 @@ minetest.register_on_joinplayer(function(player) end) minetest.register_craft({ - output = 'mcl_chests:ender_chest', + output = "mcl_chests:ender_chest", recipe = { - {'mcl_core:obsidian', 'mcl_core:obsidian', 'mcl_core:obsidian'}, - {'mcl_core:obsidian', 'mcl_end:ender_eye', 'mcl_core:obsidian'}, - {'mcl_core:obsidian', 'mcl_core:obsidian', 'mcl_core:obsidian'}, + {"mcl_core:obsidian", "mcl_core:obsidian", "mcl_core:obsidian"}, + {"mcl_core:obsidian", "mcl_end:ender_eye", "mcl_core:obsidian"}, + {"mcl_core:obsidian", "mcl_core:obsidian", "mcl_core:obsidian"}, } }) @@ -1314,17 +1314,17 @@ for color, desc in pairs(boxtypes) do minetest.register_craft({ type = "shapeless", - output = 'mcl_chests:'..color..'_shulker_box', - recipe = { 'group:shulker_box', 'mcl_dye:'..color } + output = "mcl_chests:"..color.."_shulker_box", + recipe = { "group:shulker_box", "mcl_dye:"..color } }) end minetest.register_craft({ - output = 'mcl_chests:violet_shulker_box', + output = "mcl_chests:violet_shulker_box", recipe = { - {'mcl_mobitems:shulker_shell'}, - {'mcl_chests:chest'}, - {'mcl_mobitems:shulker_shell'}, + {"mcl_mobitems:shulker_shell"}, + {"mcl_chests:chest"}, + {"mcl_mobitems:shulker_shell"}, } }) @@ -1411,10 +1411,10 @@ minetest.register_lbm({ minetest.register_lbm({ label = "Upgrade old ender chest formspec", - name = "mcl_chests:replace_old_ender_form", - nodenames = {"mcl_chests:ender_chest_small"}, - run_at_every_load = false, - action = function(pos, node) + name = "mcl_chests:replace_old_ender_form", + nodenames = {"mcl_chests:ender_chest_small"}, + run_at_every_load = false, + action = function(pos, node) minetest.get_meta(pos):set_string("formspec", "") - end, + end, }) diff --git a/mods/ITEMS/mcl_clock/init.lua b/mods/ITEMS/mcl_clock/init.lua index 0eb83ee80..65b32b91e 100644 --- a/mods/ITEMS/mcl_clock/init.lua +++ b/mods/ITEMS/mcl_clock/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_clock") +local S = minetest.get_translator(minetest.get_current_modname()) --[[ mcl_clock, renew of the renew of the mcl_clock mod @@ -41,7 +41,7 @@ function mcl_clock.get_clock_frame() return tostring(t) end -local doc_mod = minetest.get_modpath("doc") ~= nil +local doc_mod = minetest.get_modpath("doc") -- Register items function mcl_clock.register_item(name, image, creative, frame) @@ -125,9 +125,9 @@ end) minetest.register_craft({ output = mcl_clock.stereotype, recipe = { - {'', 'mcl_core:gold_ingot', ''}, - {'mcl_core:gold_ingot', 'mesecons:redstone', 'mcl_core:gold_ingot'}, - {'', 'mcl_core:gold_ingot', ''} + {"", "mcl_core:gold_ingot", ""}, + {"mcl_core:gold_ingot", "mesecons:redstone", "mcl_core:gold_ingot"}, + {"", "mcl_core:gold_ingot", ""} } }) diff --git a/mods/ITEMS/mcl_cocoas/init.lua b/mods/ITEMS/mcl_cocoas/init.lua index f19f85154..60ea9e573 100644 --- a/mods/ITEMS/mcl_cocoas/init.lua +++ b/mods/ITEMS/mcl_cocoas/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_cocoas") +local S = minetest.get_translator(minetest.get_current_modname()) mcl_cocoas = {} diff --git a/mods/ITEMS/mcl_colorblocks/init.lua b/mods/ITEMS/mcl_colorblocks/init.lua index 4981b39b0..6eec8a9df 100644 --- a/mods/ITEMS/mcl_colorblocks/init.lua +++ b/mods/ITEMS/mcl_colorblocks/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_colorblocks") +local S = minetest.get_translator(minetest.get_current_modname()) local doc_mod = minetest.get_modpath("doc") local block = {} @@ -173,20 +173,20 @@ for _, row in ipairs(block.dyes) do -- Crafting recipes if craft_color_group then minetest.register_craft({ - output = 'mcl_colorblocks:hardened_clay_'..name..' 8', + output = "mcl_colorblocks:hardened_clay_"..name.." 8", recipe = { - {'mcl_colorblocks:hardened_clay', 'mcl_colorblocks:hardened_clay', 'mcl_colorblocks:hardened_clay'}, - {'mcl_colorblocks:hardened_clay', 'mcl_dye:'..craft_color_group, 'mcl_colorblocks:hardened_clay'}, - {'mcl_colorblocks:hardened_clay', 'mcl_colorblocks:hardened_clay', 'mcl_colorblocks:hardened_clay'}, + {"mcl_colorblocks:hardened_clay", "mcl_colorblocks:hardened_clay", "mcl_colorblocks:hardened_clay"}, + {"mcl_colorblocks:hardened_clay", "mcl_dye:"..craft_color_group, "mcl_colorblocks:hardened_clay"}, + {"mcl_colorblocks:hardened_clay", "mcl_colorblocks:hardened_clay", "mcl_colorblocks:hardened_clay"}, }, }) minetest.register_craft({ type = "shapeless", - output = 'mcl_colorblocks:concrete_powder_'..name..' 8', + output = "mcl_colorblocks:concrete_powder_"..name.." 8", recipe = { - 'mcl_core:sand', 'mcl_core:gravel', 'mcl_core:sand', - 'mcl_core:gravel', 'mcl_dye:'..craft_color_group, 'mcl_core:gravel', - 'mcl_core:sand', 'mcl_core:gravel', 'mcl_core:sand', + "mcl_core:sand", "mcl_core:gravel", "mcl_core:sand", + "mcl_core:gravel", "mcl_dye:"..craft_color_group, "mcl_core:gravel", + "mcl_core:sand", "mcl_core:gravel", "mcl_core:sand", } }) diff --git a/mods/ITEMS/mcl_compass/init.lua b/mods/ITEMS/mcl_compass/init.lua index 31944fa88..458ee8fdb 100644 --- a/mods/ITEMS/mcl_compass/init.lua +++ b/mods/ITEMS/mcl_compass/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_compass") +local S = minetest.get_translator(minetest.get_current_modname()) mcl_compass = {} @@ -72,7 +72,7 @@ for frame = 0, compass_frames-1 do table.insert(images, "mcl_compass_compass_"..s..".png") end -local doc_mod = minetest.get_modpath("doc") ~= nil +local doc_mod = minetest.get_modpath("doc") local stereotype_frame = 18 for i,img in ipairs(images) do @@ -108,11 +108,11 @@ for i,img in ipairs(images) do end minetest.register_craft({ - output = 'mcl_compass:'..stereotype_frame, + output = "mcl_compass:"..stereotype_frame, recipe = { - {'', 'mcl_core:iron_ingot', ''}, - {'mcl_core:iron_ingot', 'mesecons:redstone', 'mcl_core:iron_ingot'}, - {'', 'mcl_core:iron_ingot', ''} + {"", "mcl_core:iron_ingot", ""}, + {"mcl_core:iron_ingot", "mesecons:redstone", "mcl_core:iron_ingot"}, + {"", "mcl_core:iron_ingot", ""} } }) diff --git a/mods/ITEMS/mcl_core/crafting.lua b/mods/ITEMS/mcl_core/crafting.lua index cec26e747..3ff2b142c 100644 --- a/mods/ITEMS/mcl_core/crafting.lua +++ b/mods/ITEMS/mcl_core/crafting.lua @@ -30,96 +30,96 @@ for _, p in pairs(planks) do end minetest.register_craft({ - type = 'shapeless', - output = 'mcl_core:mossycobble', - recipe = { 'mcl_core:cobble', 'mcl_core:vine' }, + type = "shapeless", + output = "mcl_core:mossycobble", + recipe = { "mcl_core:cobble", "mcl_core:vine" }, }) minetest.register_craft({ - type = 'shapeless', - output = 'mcl_core:stonebrickmossy', - recipe = { 'mcl_core:stonebrick', 'mcl_core:vine' }, + type = "shapeless", + output = "mcl_core:stonebrickmossy", + recipe = { "mcl_core:stonebrick", "mcl_core:vine" }, }) minetest.register_craft({ - output = 'mcl_core:coarse_dirt 4', + output = "mcl_core:coarse_dirt 4", recipe = { - {'mcl_core:dirt', 'mcl_core:gravel'}, - {'mcl_core:gravel', 'mcl_core:dirt'}, + {"mcl_core:dirt", "mcl_core:gravel"}, + {"mcl_core:gravel", "mcl_core:dirt"}, } }) minetest.register_craft({ - output = 'mcl_core:coarse_dirt 4', + output = "mcl_core:coarse_dirt 4", recipe = { - {'mcl_core:gravel', 'mcl_core:dirt'}, - {'mcl_core:dirt', 'mcl_core:gravel'}, + {"mcl_core:gravel", "mcl_core:dirt"}, + {"mcl_core:dirt", "mcl_core:gravel"}, } }) minetest.register_craft({ - output = 'mcl_core:sandstonesmooth 4', + output = "mcl_core:sandstonesmooth 4", recipe = { - {'mcl_core:sandstone','mcl_core:sandstone'}, - {'mcl_core:sandstone','mcl_core:sandstone'}, + {"mcl_core:sandstone","mcl_core:sandstone"}, + {"mcl_core:sandstone","mcl_core:sandstone"}, } }) minetest.register_craft({ - output = 'mcl_core:redsandstonesmooth 4', + output = "mcl_core:redsandstonesmooth 4", recipe = { - {'mcl_core:redsandstone','mcl_core:redsandstone'}, - {'mcl_core:redsandstone','mcl_core:redsandstone'}, + {"mcl_core:redsandstone","mcl_core:redsandstone"}, + {"mcl_core:redsandstone","mcl_core:redsandstone"}, } }) minetest.register_craft({ - output = 'mcl_core:granite_smooth 4', + output = "mcl_core:granite_smooth 4", recipe = { - {'mcl_core:granite', 'mcl_core:granite'}, - {'mcl_core:granite', 'mcl_core:granite'} + {"mcl_core:granite", "mcl_core:granite"}, + {"mcl_core:granite", "mcl_core:granite"} }, }) minetest.register_craft({ - output = 'mcl_core:andesite_smooth 4', + output = "mcl_core:andesite_smooth 4", recipe = { - {'mcl_core:andesite', 'mcl_core:andesite'}, - {'mcl_core:andesite', 'mcl_core:andesite'} + {"mcl_core:andesite", "mcl_core:andesite"}, + {"mcl_core:andesite", "mcl_core:andesite"} }, }) minetest.register_craft({ - output = 'mcl_core:diorite_smooth 4', + output = "mcl_core:diorite_smooth 4", recipe = { - {'mcl_core:diorite', 'mcl_core:diorite'}, - {'mcl_core:diorite', 'mcl_core:diorite'} + {"mcl_core:diorite", "mcl_core:diorite"}, + {"mcl_core:diorite", "mcl_core:diorite"} }, }) minetest.register_craft({ type = "shapeless", - output = 'mcl_core:granite', - recipe = {'mcl_core:diorite', 'mcl_nether:quartz'}, + output = "mcl_core:granite", + recipe = {"mcl_core:diorite", "mcl_nether:quartz"}, }) minetest.register_craft({ type = "shapeless", - output = 'mcl_core:andesite 2', - recipe = {'mcl_core:diorite', 'mcl_core:cobble'}, + output = "mcl_core:andesite 2", + recipe = {"mcl_core:diorite", "mcl_core:cobble"}, }) minetest.register_craft({ - output = 'mcl_core:diorite 2', + output = "mcl_core:diorite 2", recipe = { - {'mcl_core:cobble', 'mcl_nether:quartz'}, - {'mcl_nether:quartz', 'mcl_core:cobble'}, + {"mcl_core:cobble", "mcl_nether:quartz"}, + {"mcl_nether:quartz", "mcl_core:cobble"}, } }) minetest.register_craft({ - output = 'mcl_core:diorite 2', + output = "mcl_core:diorite 2", recipe = { - {'mcl_nether:quartz', 'mcl_core:cobble'}, - {'mcl_core:cobble', 'mcl_nether:quartz'}, + {"mcl_nether:quartz", "mcl_core:cobble"}, + {"mcl_core:cobble", "mcl_nether:quartz"}, } }) @@ -140,60 +140,60 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'mcl_core:stick 4', + output = "mcl_core:stick 4", recipe = { - {'group:wood'}, - {'group:wood'}, + {"group:wood"}, + {"group:wood"}, } }) minetest.register_craft({ - output = 'mcl_core:coalblock', + output = "mcl_core:coalblock", recipe = { - {'mcl_core:coal_lump', 'mcl_core:coal_lump', 'mcl_core:coal_lump'}, - {'mcl_core:coal_lump', 'mcl_core:coal_lump', 'mcl_core:coal_lump'}, - {'mcl_core:coal_lump', 'mcl_core:coal_lump', 'mcl_core:coal_lump'}, + {"mcl_core:coal_lump", "mcl_core:coal_lump", "mcl_core:coal_lump"}, + {"mcl_core:coal_lump", "mcl_core:coal_lump", "mcl_core:coal_lump"}, + {"mcl_core:coal_lump", "mcl_core:coal_lump", "mcl_core:coal_lump"}, } }) minetest.register_craft({ - output = 'mcl_core:coal_lump 9', + output = "mcl_core:coal_lump 9", recipe = { - {'mcl_core:coalblock'}, + {"mcl_core:coalblock"}, } }) minetest.register_craft({ - output = 'mcl_core:ironblock', + output = "mcl_core:ironblock", recipe = { - {'mcl_core:iron_ingot', 'mcl_core:iron_ingot', 'mcl_core:iron_ingot'}, - {'mcl_core:iron_ingot', 'mcl_core:iron_ingot', 'mcl_core:iron_ingot'}, - {'mcl_core:iron_ingot', 'mcl_core:iron_ingot', 'mcl_core:iron_ingot'}, + {"mcl_core:iron_ingot", "mcl_core:iron_ingot", "mcl_core:iron_ingot"}, + {"mcl_core:iron_ingot", "mcl_core:iron_ingot", "mcl_core:iron_ingot"}, + {"mcl_core:iron_ingot", "mcl_core:iron_ingot", "mcl_core:iron_ingot"}, } }) minetest.register_craft({ - output = 'mcl_core:iron_ingot 9', + output = "mcl_core:iron_ingot 9", recipe = { - {'mcl_core:ironblock'}, + {"mcl_core:ironblock"}, } }) minetest.register_craft({ - output = 'mcl_core:goldblock', + output = "mcl_core:goldblock", recipe = { - {'mcl_core:gold_ingot', 'mcl_core:gold_ingot', 'mcl_core:gold_ingot'}, - {'mcl_core:gold_ingot', 'mcl_core:gold_ingot', 'mcl_core:gold_ingot'}, - {'mcl_core:gold_ingot', 'mcl_core:gold_ingot', 'mcl_core:gold_ingot'}, + {"mcl_core:gold_ingot", "mcl_core:gold_ingot", "mcl_core:gold_ingot"}, + {"mcl_core:gold_ingot", "mcl_core:gold_ingot", "mcl_core:gold_ingot"}, + {"mcl_core:gold_ingot", "mcl_core:gold_ingot", "mcl_core:gold_ingot"}, } }) minetest.register_craft({ - output = 'mcl_core:gold_ingot 9', + output = "mcl_core:gold_ingot 9", recipe = { - {'mcl_core:goldblock'}, + {"mcl_core:goldblock"}, } }) @@ -227,119 +227,119 @@ minetest.register_craft({ minetest.register_craft({ type = "cooking", - output = 'mcl_core:iron_nugget', - recipe = 'mobs_mc:iron_horse_armor', + output = "mcl_core:iron_nugget", + recipe = "mobs_mc:iron_horse_armor", cooktime = 10, }) minetest.register_craft({ type = "cooking", - output = 'mcl_core:gold_nugget', - recipe = 'mobs_mc:gold_horse_armor', + output = "mcl_core:gold_nugget", + recipe = "mobs_mc:gold_horse_armor", cooktime = 10, }) minetest.register_craft({ - output = 'mcl_core:sandstone', + output = "mcl_core:sandstone", recipe = { - {'mcl_core:sand', 'mcl_core:sand'}, - {'mcl_core:sand', 'mcl_core:sand'}, + {"mcl_core:sand", "mcl_core:sand"}, + {"mcl_core:sand", "mcl_core:sand"}, } }) minetest.register_craft({ - output = 'mcl_core:redsandstone', + output = "mcl_core:redsandstone", recipe = { - {'mcl_core:redsand', 'mcl_core:redsand'}, - {'mcl_core:redsand', 'mcl_core:redsand'}, + {"mcl_core:redsand", "mcl_core:redsand"}, + {"mcl_core:redsand", "mcl_core:redsand"}, } }) minetest.register_craft({ - output = 'mcl_core:clay', + output = "mcl_core:clay", recipe = { - {'mcl_core:clay_lump', 'mcl_core:clay_lump'}, - {'mcl_core:clay_lump', 'mcl_core:clay_lump'}, + {"mcl_core:clay_lump", "mcl_core:clay_lump"}, + {"mcl_core:clay_lump", "mcl_core:clay_lump"}, } }) minetest.register_craft({ - output = 'mcl_core:brick_block', + output = "mcl_core:brick_block", recipe = { - {'mcl_core:brick', 'mcl_core:brick'}, - {'mcl_core:brick', 'mcl_core:brick'}, + {"mcl_core:brick", "mcl_core:brick"}, + {"mcl_core:brick", "mcl_core:brick"}, } }) minetest.register_craft({ - output = 'mcl_core:paper 3', + output = "mcl_core:paper 3", recipe = { - {'mcl_core:reeds', 'mcl_core:reeds', 'mcl_core:reeds'}, + {"mcl_core:reeds", "mcl_core:reeds", "mcl_core:reeds"}, } }) minetest.register_craft({ - output = 'mcl_core:ladder 3', + output = "mcl_core:ladder 3", recipe = { - {'mcl_core:stick', '', 'mcl_core:stick'}, - {'mcl_core:stick', 'mcl_core:stick', 'mcl_core:stick'}, - {'mcl_core:stick', '', 'mcl_core:stick'}, + {"mcl_core:stick", "", "mcl_core:stick"}, + {"mcl_core:stick", "mcl_core:stick", "mcl_core:stick"}, + {"mcl_core:stick", "", "mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_core:stonebrick 4', + output = "mcl_core:stonebrick 4", recipe = { - {'mcl_core:stone', 'mcl_core:stone'}, - {'mcl_core:stone', 'mcl_core:stone'}, + {"mcl_core:stone", "mcl_core:stone"}, + {"mcl_core:stone", "mcl_core:stone"}, } }) minetest.register_craft({ - output = 'mcl_core:lapisblock', + output = "mcl_core:lapisblock", recipe = { - {'mcl_dye:blue', 'mcl_dye:blue', 'mcl_dye:blue'}, - {'mcl_dye:blue', 'mcl_dye:blue', 'mcl_dye:blue'}, - {'mcl_dye:blue', 'mcl_dye:blue', 'mcl_dye:blue'}, + {"mcl_dye:blue", "mcl_dye:blue", "mcl_dye:blue"}, + {"mcl_dye:blue", "mcl_dye:blue", "mcl_dye:blue"}, + {"mcl_dye:blue", "mcl_dye:blue", "mcl_dye:blue"}, } }) minetest.register_craft({ - output = 'mcl_dye:blue 9', + output = "mcl_dye:blue 9", recipe = { - {'mcl_core:lapisblock'}, + {"mcl_core:lapisblock"}, } }) minetest.register_craft({ output = "mcl_core:emeraldblock", recipe = { - {'mcl_core:emerald', 'mcl_core:emerald', 'mcl_core:emerald'}, - {'mcl_core:emerald', 'mcl_core:emerald', 'mcl_core:emerald'}, - {'mcl_core:emerald', 'mcl_core:emerald', 'mcl_core:emerald'}, + {"mcl_core:emerald", "mcl_core:emerald", "mcl_core:emerald"}, + {"mcl_core:emerald", "mcl_core:emerald", "mcl_core:emerald"}, + {"mcl_core:emerald", "mcl_core:emerald", "mcl_core:emerald"}, } }) minetest.register_craft({ - output = 'mcl_core:emerald 9', + output = "mcl_core:emerald 9", recipe = { - {'mcl_core:emeraldblock'}, + {"mcl_core:emeraldblock"}, } }) minetest.register_craft({ output = "mcl_core:diamondblock", recipe = { - {'mcl_core:diamond', 'mcl_core:diamond', 'mcl_core:diamond'}, - {'mcl_core:diamond', 'mcl_core:diamond', 'mcl_core:diamond'}, - {'mcl_core:diamond', 'mcl_core:diamond', 'mcl_core:diamond'}, + {"mcl_core:diamond", "mcl_core:diamond", "mcl_core:diamond"}, + {"mcl_core:diamond", "mcl_core:diamond", "mcl_core:diamond"}, + {"mcl_core:diamond", "mcl_core:diamond", "mcl_core:diamond"}, } }) minetest.register_craft({ - output = 'mcl_core:diamond 9', + output = "mcl_core:diamond 9", recipe = { - {'mcl_core:diamondblock'}, + {"mcl_core:diamondblock"}, } }) @@ -347,7 +347,7 @@ minetest.register_craft({ output = "mcl_core:apple_gold", recipe = { {"mcl_core:gold_ingot", "mcl_core:gold_ingot", "mcl_core:gold_ingot"}, - {"mcl_core:gold_ingot", 'mcl_core:apple', "mcl_core:gold_ingot"}, + {"mcl_core:gold_ingot", "mcl_core:apple", "mcl_core:gold_ingot"}, {"mcl_core:gold_ingot", "mcl_core:gold_ingot", "mcl_core:gold_ingot"}, } }) @@ -368,17 +368,17 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'mcl_core:snowblock', + output = "mcl_core:snowblock", recipe = { - {'mcl_throwing:snowball', 'mcl_throwing:snowball'}, - {'mcl_throwing:snowball', 'mcl_throwing:snowball'}, + {"mcl_throwing:snowball", "mcl_throwing:snowball"}, + {"mcl_throwing:snowball", "mcl_throwing:snowball"}, } }) minetest.register_craft({ - output = 'mcl_core:snow 6', + output = "mcl_core:snow 6", recipe = { - {'mcl_core:snowblock', 'mcl_core:snowblock', 'mcl_core:snowblock'}, + {"mcl_core:snowblock", "mcl_core:snowblock", "mcl_core:snowblock"}, } }) diff --git a/mods/ITEMS/mcl_core/craftitems.lua b/mods/ITEMS/mcl_core/craftitems.lua index 886535473..03f30b7b9 100644 --- a/mods/ITEMS/mcl_core/craftitems.lua +++ b/mods/ITEMS/mcl_core/craftitems.lua @@ -1,6 +1,6 @@ -- mods/default/craftitems.lua -local S = minetest.get_translator("mcl_core") +local S = minetest.get_translator(minetest.get_current_modname()) -- -- Crafting items diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index f66240b94..f0633914b 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -2,8 +2,13 @@ -- Lava vs water interactions -- +local modpath = minetest.get_modpath(minetest.get_current_modname()) + local mg_name = minetest.get_mapgen_setting("mg_name") +local math = math +local vector = vector + local OAK_TREE_ID = 1 local DARK_OAK_TREE_ID = 2 local SPRUCE_TREE_ID = 3 @@ -247,7 +252,7 @@ end -- Check if a node stops a tree from growing. Torches, plants, wood, tree, -- leaves and dirt does not affect tree growth. local function node_stops_growth(node) - if node.name == 'air' then + if node.name == "air" then return false end @@ -457,12 +462,12 @@ function mcl_core.generate_balloon_oak_tree(pos) local s = math.random(1, 12) if s == 1 then -- Small balloon oak - path = minetest.get_modpath("mcl_core") .. "/schematics/mcl_core_oak_balloon.mts" + path = modpath .. "/schematics/mcl_core_oak_balloon.mts" offset = { x = -2, y = -1, z = -2 } else -- Large balloon oak local t = math.random(1, 4) - path = minetest.get_modpath("mcl_core") .. "/schematics/mcl_core_oak_large_"..t..".mts" + path = modpath .. "/schematics/mcl_core_oak_large_"..t..".mts" if t == 1 or t == 3 then offset = { x = -3, y = -1, z = -3 } elseif t == 2 or t == 4 then @@ -473,16 +478,16 @@ function mcl_core.generate_balloon_oak_tree(pos) end -- Oak -function mcl_core.generate_oak_tree(pos) - local path = minetest.get_modpath("mcl_core") .. "/schematics/mcl_core_oak_classic.mts" - local offset = { x = -2, y = -1, z = -2 } +local path_oak_tree = modpath.."/schematics/mcl_core_oak_classic.mts" - minetest.place_schematic(vector.add(pos, offset), path, "random", nil, false) +function mcl_core.generate_oak_tree(pos) + local offset = { x = -2, y = -1, z = -2 } + minetest.place_schematic(vector.add(pos, offset), path_oak_tree, "random", nil, false) end -- Birch function mcl_core.generate_birch_tree(pos) - local path = minetest.get_modpath("mcl_core") .. + local path = modpath .. "/schematics/mcl_core_birch.mts" minetest.place_schematic({x = pos.x - 2, y = pos.y - 1, z = pos.z - 2}, path, "random", nil, false) end @@ -596,7 +601,7 @@ end 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" + local path = modpath .. "/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 @@ -607,13 +612,13 @@ function mcl_core.generate_huge_spruce_tree(pos) local offset = { x = -4, y = -1, z = -5 } if r1 <= 2 then -- Mega Spruce Taiga (full canopy) - path = minetest.get_modpath("mcl_core") .. "/schematics/mcl_core_spruce_huge_"..r2..".mts" + path = modpath.."/schematics/mcl_core_spruce_huge_"..r2..".mts" else -- Mega Taiga (leaves only at top) if r2 == 1 or r2 == 3 then offset = { x = -3, y = -1, z = -4} end - path = minetest.get_modpath("mcl_core") .. "/schematics/mcl_core_spruce_huge_up_"..r2..".mts" + path = modpath.."/schematics/mcl_core_spruce_huge_up_"..r2..".mts" end minetest.place_schematic(vector.add(pos, offset), path, "0", nil, false) end @@ -631,15 +636,14 @@ function mcl_core.generate_acacia_tree(pos) elseif r == 1 or r == 5 then offset = { x = -5, y = -1, z = -5 } end - local path = minetest.get_modpath("mcl_core") .. "/schematics/mcl_core_acacia_"..r..".mts" + local path = modpath.."/schematics/mcl_core_acacia_"..r..".mts" minetest.place_schematic(vector.add(pos, offset), path, "random", nil, false) end -- Generate dark oak tree with 2×2 trunk. -- With pos being the lower X and the higher Z value of the trunk function mcl_core.generate_dark_oak_tree(pos) - local path = minetest.get_modpath("mcl_core") .. - "/schematics/mcl_core_dark_oak.mts" + local path = modpath.."/schematics/mcl_core_dark_oak.mts" minetest.place_schematic({x = pos.x - 3, y = pos.y - 1, z = pos.z - 4}, path, "random", nil, false) end @@ -739,8 +743,7 @@ function mcl_core.generate_v6_jungle_tree(pos) end function mcl_core.generate_jungle_tree(pos) - local path = minetest.get_modpath("mcl_core") .. - "/schematics/mcl_core_jungle_tree.mts" + local path = modpath.."/schematics/mcl_core_jungle_tree.mts" minetest.place_schematic({x = pos.x - 2, y = pos.y - 1, z = pos.z - 2}, path, "random", nil, false) end @@ -749,8 +752,7 @@ end function mcl_core.generate_huge_jungle_tree(pos) -- 2 variants local r = math.random(1, 2) - local path = minetest.get_modpath("mcl_core") .. - "/schematics/mcl_core_jungle_tree_huge_"..r..".mts" + local path = modpath.."/schematics/mcl_core_jungle_tree_huge_"..r..".mts" minetest.place_schematic({x = pos.x - 6, y = pos.y - 1, z = pos.z - 7}, path, "random", nil, false) end @@ -1335,9 +1337,8 @@ mcl_core.leafdecay_enable_cache = true mcl_core.leafdecay_trunk_find_allow_accumulator = 0 minetest.register_globalstep(function(dtime) - local finds_per_second = 5000 - mcl_core.leafdecay_trunk_find_allow_accumulator = - math.floor(dtime * finds_per_second) + --local finds_per_second = 5000 + mcl_core.leafdecay_trunk_find_allow_accumulator = math.floor(dtime * 5000) end) minetest.register_abm({ diff --git a/mods/ITEMS/mcl_core/init.lua b/mods/ITEMS/mcl_core/init.lua index 897382e01..c345d057b 100644 --- a/mods/ITEMS/mcl_core/init.lua +++ b/mods/ITEMS/mcl_core/init.lua @@ -17,7 +17,7 @@ mcl_autogroup.register_diggroup("swordy_cobweb") mcl_autogroup.register_diggroup("hoey") -- Load files -local modpath = minetest.get_modpath("mcl_core") +local modpath = minetest.get_modpath(minetest.get_current_modname()) dofile(modpath.."/functions.lua") dofile(modpath.."/nodes_base.lua") -- Simple solid cubic nodes with simple definitions dofile(modpath.."/nodes_liquid.lua") -- Liquids diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 9baa6c33e..d4bfd7636 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_core") +local S = minetest.get_translator(minetest.get_current_modname()) -- Simple solid cubic nodes, most of them are the ground materials and simple building blocks @@ -16,7 +16,7 @@ mcl_core.fortune_drop_ore = { discrete_uniform_distribution = true, min_count = 2, max_count = 1, - get_chance = function (fortune_level) return 1 - 2 / (fortune_level + 2) end, + get_chance = function(fortune_level) return 1 - 2 / (fortune_level + 2) end, multiply = true, } @@ -28,7 +28,7 @@ minetest.register_node("mcl_core:stone", { is_ground_content = true, stack_max = 64, groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, - drop = 'mcl_core:cobble', + drop = "mcl_core:cobble", sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 6, _mcl_hardness = 1.5, @@ -48,7 +48,7 @@ minetest.register_node("mcl_core:stone_with_coal", { is_ground_content = true, stack_max = 64, groups = {pickaxey=1, building_block=1, material_stone=1, xp=1}, - drop = 'mcl_core:coal_lump', + drop = "mcl_core:coal_lump", sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 3, _mcl_hardness = 3, @@ -63,7 +63,7 @@ minetest.register_node("mcl_core:stone_with_iron", { is_ground_content = true, stack_max = 64, groups = {pickaxey=3, building_block=1, material_stone=1}, - drop = 'mcl_core:stone_with_iron', + drop = "mcl_core:stone_with_iron", sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 3, _mcl_hardness = 3, @@ -179,11 +179,11 @@ minetest.register_node("mcl_core:stone_with_lapis", { drop = { max_items = 1, items = { - {items = {'mcl_dye:blue 8'},rarity = 5}, - {items = {'mcl_dye:blue 7'},rarity = 5}, - {items = {'mcl_dye:blue 6'},rarity = 5}, - {items = {'mcl_dye:blue 5'},rarity = 5}, - {items = {'mcl_dye:blue 4'}}, + {items = {"mcl_dye:blue 8"},rarity = 5}, + {items = {"mcl_dye:blue 7"},rarity = 5}, + {items = {"mcl_dye:blue 6"},rarity = 5}, + {items = {"mcl_dye:blue 5"},rarity = 5}, + {items = {"mcl_dye:blue 4"}}, } }, sounds = mcl_sounds.node_sound_stone_defaults(), @@ -369,7 +369,7 @@ minetest.register_node("mcl_core:dirt_with_grass", { is_ground_content = true, stack_max = 64, groups = {handy=1,shovely=1,dirt=2,grass_block=1, grass_block_no_snow=1, soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, spreading_dirt_type=1, enderman_takable=1, building_block=1}, - drop = 'mcl_core:dirt', + drop = "mcl_core:dirt", sounds = mcl_sounds.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.1}, }), @@ -422,7 +422,7 @@ minetest.register_node("mcl_core:mycelium", { is_ground_content = true, stack_max = 64, groups = {handy=1,shovely=1, dirt=2,spreading_dirt_type=1, enderman_takable=1, building_block=1}, - drop = 'mcl_core:dirt', + drop = "mcl_core:dirt", sounds = mcl_sounds.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.1}, }), @@ -442,7 +442,7 @@ minetest.register_node("mcl_core:podzol", { is_ground_content = true, stack_max = 64, groups = {handy=1,shovely=3, dirt=2,soil=1, soil_sapling=2, soil_sugarcane=1, enderman_takable=1, building_block=1}, - drop = 'mcl_core:dirt', + drop = "mcl_core:dirt", sounds = mcl_sounds.node_sound_dirt_defaults(), on_construct = mcl_core.on_snowable_construct, _mcl_snowed = "mcl_core:podzol_snow", @@ -487,8 +487,8 @@ minetest.register_node("mcl_core:gravel", { drop = { max_items = 1, items = { - {items = {'mcl_core:flint'},rarity = 10}, - {items = {'mcl_core:gravel'}} + {items = {"mcl_core:flint"},rarity = 10}, + {items = {"mcl_core:gravel"}} } }, sounds = mcl_sounds.node_sound_dirt_defaults({ @@ -501,15 +501,15 @@ minetest.register_node("mcl_core:gravel", { [1] = { max_items = 1, items = { - {items = {'mcl_core:flint'},rarity = 7}, - {items = {'mcl_core:gravel'}} + {items = {"mcl_core:flint"},rarity = 7}, + {items = {"mcl_core:gravel"}} } }, [2] = { max_items = 1, items = { - {items = {'mcl_core:flint'},rarity = 4}, - {items = {'mcl_core:gravel'}} + {items = {"mcl_core:flint"},rarity = 4}, + {items = {"mcl_core:gravel"}} } }, [3] = "mcl_core:flint", @@ -652,7 +652,7 @@ minetest.register_node("mcl_core:clay", { is_ground_content = true, stack_max = 64, groups = {handy=1,shovely=1, enderman_takable=1, building_block=1}, - drop = 'mcl_core:clay_lump 4', + drop = "mcl_core:clay_lump 4", sounds = mcl_sounds.node_sound_dirt_defaults(), _mcl_blast_resistance = 0.6, _mcl_hardness = 0.6, @@ -683,7 +683,7 @@ minetest.register_node("mcl_core:bedrock", { sounds = mcl_sounds.node_sound_stone_defaults(), is_ground_content = false, on_blast = function() end, - drop = '', + drop = "", _mcl_blast_resistance = 3600000, _mcl_hardness = -1, @@ -955,7 +955,7 @@ for i=1,8 do fixed = { -0.5, -0.5, -0.5, 0.5, -0.5 + (2*i)/16, 0.5 }, } end - local on_place = function(itemstack, placer, pointed_thing) + local function on_place(itemstack, placer, pointed_thing) -- Placement is only allowed on top of solid blocks if pointed_thing.type ~= "node" then -- no interaction possible with entities diff --git a/mods/ITEMS/mcl_core/nodes_cactuscane.lua b/mods/ITEMS/mcl_core/nodes_cactuscane.lua index 4ec005170..839102534 100644 --- a/mods/ITEMS/mcl_core/nodes_cactuscane.lua +++ b/mods/ITEMS/mcl_core/nodes_cactuscane.lua @@ -1,6 +1,6 @@ -- Cactus and Sugar Cane -local S = minetest.get_translator("mcl_core") +local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_node("mcl_core:cactus", { description = S("Cactus"), diff --git a/mods/ITEMS/mcl_core/nodes_climb.lua b/mods/ITEMS/mcl_core/nodes_climb.lua index ad861b4f2..9505bb19a 100644 --- a/mods/ITEMS/mcl_core/nodes_climb.lua +++ b/mods/ITEMS/mcl_core/nodes_climb.lua @@ -1,5 +1,5 @@ -- Climbable nodes -local S = minetest.get_translator("mcl_core") +local S = minetest.get_translator(minetest.get_current_modname()) local function rotate_climbable(pos, node, user, mode) if mode == screwdriver.ROTATE_FACE then diff --git a/mods/ITEMS/mcl_core/nodes_glass.lua b/mods/ITEMS/mcl_core/nodes_glass.lua index 8c12d8b93..6e7ab350b 100644 --- a/mods/ITEMS/mcl_core/nodes_glass.lua +++ b/mods/ITEMS/mcl_core/nodes_glass.lua @@ -1,5 +1,5 @@ -- Glass nodes -local S = minetest.get_translator("mcl_core") +local S = minetest.get_translator(minetest.get_current_modname()) local mod_doc = minetest.get_modpath("doc") minetest.register_node("mcl_core:glass", { @@ -56,11 +56,11 @@ function mcl_core.add_stained_glass(desc, recipeitem, colorgroup, color) }) minetest.register_craft({ - output = 'mcl_core:glass_'..color..' 8', + output = "mcl_core:glass_"..color.." 8", recipe = { - {'mcl_core:glass','mcl_core:glass','mcl_core:glass'}, - {'mcl_core:glass',recipeitem,'mcl_core:glass'}, - {'mcl_core:glass','mcl_core:glass','mcl_core:glass'}, + {"mcl_core:glass","mcl_core:glass","mcl_core:glass"}, + {"mcl_core:glass",recipeitem,"mcl_core:glass"}, + {"mcl_core:glass","mcl_core:glass","mcl_core:glass"}, } }) diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index 42276685e..0e0f71a11 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -1,7 +1,6 @@ -- Liquids: Water and lava -local S = minetest.get_translator("mcl_core") -local N = function(s) return s end +local S = minetest.get_translator(minetest.get_current_modname()) local vector = vector local math = math @@ -16,13 +15,6 @@ if minetest.features.use_texture_alpha_string_modes then USE_TEXTURE_ALPHA = "blend" end -local lava_death_messages = { - N("@1 melted in lava."), - N("@1 took a bath in a hot lava tub."), - N("@1 died in lava."), - N("@1 could not survive in lava."), -} - minetest.register_node("mcl_core:water_flowing", { description = S("Flowing Water"), _doc_items_create_entry = false, @@ -148,7 +140,6 @@ minetest.register_node("mcl_core:lava_flowing", { liquid_renewable = false, liquid_range = 3, damage_per_second = 4*2, - _mcl_node_death_message = lava_death_messages, post_effect_color = {a=245, r=208, g=73, b=10}, groups = { lava=3, liquid=2, destroys_items=1, not_in_creative_inventory=1, dig_by_piston=1, set_on_fire=15}, _mcl_blast_resistance = 100, @@ -203,7 +194,6 @@ S("• When lava is directly above water, the water turns into stone."), liquid_renewable = false, liquid_range = 3, damage_per_second = 4*2, - _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}, diff --git a/mods/ITEMS/mcl_core/nodes_misc.lua b/mods/ITEMS/mcl_core/nodes_misc.lua index a8188350a..67669a861 100644 --- a/mods/ITEMS/mcl_core/nodes_misc.lua +++ b/mods/ITEMS/mcl_core/nodes_misc.lua @@ -1,11 +1,13 @@ -- Other nodes -local S = minetest.get_translator("mcl_core") +local S = minetest.get_translator(minetest.get_current_modname()) + +local mod_screwdriver = minetest.get_modpath("screwdriver") -local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil local on_rotate if mod_screwdriver then on_rotate = screwdriver.rotate_3way end + local alldirs = {{x=0,y=0,z=1}, {x=1,y=0,z=0}, {x=0,y=0,z=-1}, {x=-1,y=0,z=0}, {x=0,y=-1,z=0}, {x=0,y=1,z=0}} minetest.register_node("mcl_core:bone_block", { @@ -52,7 +54,7 @@ minetest.register_node("mcl_core:slimeblock", { }, _mcl_blast_resistance = 0, _mcl_hardness = 0, - mvps_sticky = function (pos, node, piston_pos) + mvps_sticky = function(pos, node, piston_pos) local connected = {} for n, v in ipairs(alldirs) do local neighbor_pos = vector.add(pos, v) @@ -172,7 +174,7 @@ minetest.register_node("mcl_core:barrier", { drop = "", _mcl_blast_resistance = 36000008, _mcl_hardness = -1, - after_place_node = function (pos, placer, itemstack, pointed_thing) + after_place_node = function(pos, placer, itemstack, pointed_thing) if placer == nil then return end diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua index a72935f05..c73829d6c 100644 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ b/mods/ITEMS/mcl_core/nodes_trees.lua @@ -1,7 +1,8 @@ -- Tree nodes: Wood, Wooden Planks, Sapling, Leaves, Stripped Wood -local S = minetest.get_translator("mcl_core") +local S = minetest.get_translator(minetest.get_current_modname()) + +local mod_screwdriver = minetest.get_modpath("screwdriver") -local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil local on_rotate if mod_screwdriver then on_rotate = screwdriver.rotate_3way @@ -51,7 +52,7 @@ local function register_tree_trunk(subname, description_trunk, description_bark, end -- Register stripped trunk and stripped wood -local register_stripped_trunk = function(subname, description_stripped_trunk, description_stripped_bark, longdesc, tile_stripped_inner, tile_stripped_bark) +local function register_stripped_trunk(subname, description_stripped_trunk, description_stripped_bark, longdesc, tile_stripped_inner, tile_stripped_bark) minetest.register_node("mcl_core:"..subname, { description = description_stripped_trunk, _doc_items_longdesc = longdesc, diff --git a/mods/ITEMS/mcl_crafting_table/init.lua b/mods/ITEMS/mcl_crafting_table/init.lua index cbf1cff34..58b46d668 100644 --- a/mods/ITEMS/mcl_crafting_table/init.lua +++ b/mods/ITEMS/mcl_crafting_table/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_crafting_table") +local S = minetest.get_translator(minetest.get_current_modname()) local formspec_escape = minetest.formspec_escape local show_formspec = minetest.show_formspec local C = minetest.colorize diff --git a/mods/ITEMS/mcl_doors/api_doors.lua b/mods/ITEMS/mcl_doors/api_doors.lua index 909bb47e4..7d00c4c69 100644 --- a/mods/ITEMS/mcl_doors/api_doors.lua +++ b/mods/ITEMS/mcl_doors/api_doors.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_doors") +local S = minetest.get_translator(minetest.get_current_modname()) local minetest_get_meta = minetest.get_meta -- This helper function calls on_place_node callbacks. diff --git a/mods/ITEMS/mcl_doors/api_trapdoors.lua b/mods/ITEMS/mcl_doors/api_trapdoors.lua index 3999ad0bf..3d2a8e891 100644 --- a/mods/ITEMS/mcl_doors/api_trapdoors.lua +++ b/mods/ITEMS/mcl_doors/api_trapdoors.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_doors") +local S = minetest.get_translator(minetest.get_current_modname()) -- Wrapper around mintest.pointed_thing_to_face_pos. local function get_fpos(placer, pointed_thing) diff --git a/mods/ITEMS/mcl_doors/register.lua b/mods/ITEMS/mcl_doors/register.lua index 2ffd4b245..c998f6538 100644 --- a/mods/ITEMS/mcl_doors/register.lua +++ b/mods/ITEMS/mcl_doors/register.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_doors") +local S = minetest.get_translator(minetest.get_current_modname()) --[[ Doors ]] @@ -260,9 +260,9 @@ mcl_doors:register_trapdoor("mcl_doors:iron_trapdoor", { }) minetest.register_craft({ - output = 'mcl_doors:iron_trapdoor', + output = "mcl_doors:iron_trapdoor", recipe = { - {'mcl_core:iron_ingot', 'mcl_core:iron_ingot'}, - {'mcl_core:iron_ingot', 'mcl_core:iron_ingot'}, + {"mcl_core:iron_ingot", "mcl_core:iron_ingot"}, + {"mcl_core:iron_ingot", "mcl_core:iron_ingot"}, } }) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index 863abd3d2..6771a95e5 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -7,13 +7,16 @@ -- Note: As this uses basecolor_*, you'd need 9 of these. -- minetest.register_craft({ -- type = "shapeless", --- output = ':item_yellow', --- recipe = {':item_no_color', 'group:basecolor_yellow'}, +-- output = ":item_yellow", +-- recipe = {":item_no_color", "group:basecolor_yellow"}, -- }) mcl_dye = {} -local S = minetest.get_translator("mcl_dye") +local S = minetest.get_translator(minetest.get_current_modname()) + +local math = math +local string = string -- Other mods can use these for looping through available colors mcl_dye.basecolors = {"white", "grey", "black", "red", "yellow", "green", "cyan", "blue", "magenta"} @@ -94,7 +97,7 @@ for d=1, #dyelocal.dyes do end -- Takes an unicolor group name (e.g. “unicolor_white”) and returns a corresponding dye name (if it exists), nil otherwise. -mcl_dye.unicolor_to_dye = function(unicolor_group) +function mcl_dye.unicolor_to_dye(unicolor_group) local color = dyelocal.unicolor_to_dye_id[unicolor_group] if color then return "mcl_dye:" .. color @@ -126,7 +129,7 @@ end -- Bone Meal -mcl_dye.apply_bone_meal = function(pointed_thing) +function mcl_dye.apply_bone_meal(pointed_thing) -- Bone meal currently spawns all flowers found in the plains. local flowers_table_plains = { "mcl_flowers:dandelion", @@ -216,25 +219,24 @@ mcl_dye.apply_bone_meal = function(pointed_thing) end return false -- Wheat, Potato, Carrot, Pumpkin Stem, Melon Stem: Advance by 2-5 stages - elseif string.find(n.name, "mcl_farming:wheat_") ~= nil then + elseif string.find(n.name, "mcl_farming:wheat_") then local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_wheat", pos, n, stages, true) - elseif string.find(n.name, "mcl_farming:potato_") ~= nil then + elseif string.find(n.name, "mcl_farming:potato_") then local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_potato", pos, n, stages, true) - elseif string.find(n.name, "mcl_farming:carrot_") ~= nil then + elseif string.find(n.name, "mcl_farming:carrot_") then local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_carrot", pos, n, stages, true) - elseif string.find(n.name, "mcl_farming:pumpkin_") ~= nil then + elseif string.find(n.name, "mcl_farming:pumpkin_") then local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_pumpkin_stem", pos, n, stages, true) - elseif string.find(n.name, "mcl_farming:melontige_") ~= nil then + elseif string.find(n.name, "mcl_farming:melontige_") then local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_melon_stem", pos, n, stages, true) - - elseif string.find(n.name, "mcl_farming:beetroot_") ~= nil then + elseif string.find(n.name, "mcl_farming:beetroot_") then -- Beetroot: 75% chance to advance to next stage - if math.random(1,100) <= 75 then + if math.random(1, 100) <= 75 then return mcl_farming:grow_plant("plant_beetroot", pos, n, 1, true) end elseif n.name == "mcl_cocoas:cocoa_1" or n.name == "mcl_cocoas:cocoa_2" then diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 84327e3f6..ecc9fe113 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_enchanting") +local S = minetest.get_translator(minetest.get_current_modname()) -- Taken from https://minecraft.gamepedia.com/Enchanting diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index d2db2281a..d2a749947 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_enchanting") +local S = minetest.get_translator(minetest.get_current_modname()) local F = minetest.formspec_escape function mcl_enchanting.is_book(itemname) diff --git a/mods/ITEMS/mcl_enchanting/init.lua b/mods/ITEMS/mcl_enchanting/init.lua index 06f9b0f75..5aec1ced6 100644 --- a/mods/ITEMS/mcl_enchanting/init.lua +++ b/mods/ITEMS/mcl_enchanting/init.lua @@ -1,5 +1,6 @@ -local modpath = minetest.get_modpath("mcl_enchanting") -local S = minetest.get_translator("mcl_enchanting") +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local S = minetest.get_translator(modname) local math = math local vector = vector @@ -151,7 +152,7 @@ minetest.register_craftitem("mcl_enchanting:book_enchanted", { minetest.register_alias("mcl_books:book_enchanted", "mcl_enchanting:book_enchanted") -local spawn_book_entity = function(pos, respawn) +local function spawn_book_entity(pos, respawn) if respawn then -- Check if we already have a book local objs = minetest.get_objects_inside_radius(pos, 1) diff --git a/mods/ITEMS/mcl_end/building.lua b/mods/ITEMS/mcl_end/building.lua index 94fd26434..3c8f7f66c 100644 --- a/mods/ITEMS/mcl_end/building.lua +++ b/mods/ITEMS/mcl_end/building.lua @@ -1,7 +1,8 @@ -- Building blocks and decorative nodes -local S = minetest.get_translator("mcl_end") +local S = minetest.get_translator(minetest.get_current_modname()) + +local mod_screwdriver = minetest.get_modpath("screwdriver") -local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil local on_rotate if mod_screwdriver then on_rotate = screwdriver.rotate_3way diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index 0e35ff286..24307b5ed 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -1,7 +1,10 @@ -- Chorus plants -- This includes chorus flowers, chorus plant stem nodes and chorus fruit -local S = minetest.get_translator("mcl_end") +local S = minetest.get_translator(minetest.get_current_modname()) + +local math = math +local table = table --- Plant parts --- @@ -32,7 +35,7 @@ local no_detach = {} 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 + if no_detach[hash] then return end @@ -471,7 +474,7 @@ minetest.register_abm({ -- * Maximum attempts: 16 -- -- Returns true on success. -local random_teleport = function(player) +local function random_teleport(player) local pos = player:get_pos() -- 16 attempts to find a suitable position for a=1, 16 do diff --git a/mods/ITEMS/mcl_end/end_crystal.lua b/mods/ITEMS/mcl_end/end_crystal.lua index a188be383..b7c80c55a 100644 --- a/mods/ITEMS/mcl_end/end_crystal.lua +++ b/mods/ITEMS/mcl_end/end_crystal.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_end") +local S = minetest.get_translator(minetest.get_current_modname()) local vector = vector diff --git a/mods/ITEMS/mcl_end/eye_of_ender.lua b/mods/ITEMS/mcl_end/eye_of_ender.lua index afac9ebfc..ea3d70aba 100644 --- a/mods/ITEMS/mcl_end/eye_of_ender.lua +++ b/mods/ITEMS/mcl_end/eye_of_ender.lua @@ -1,5 +1,5 @@ -- Eye of Ender -local S = minetest.get_translator("mcl_end") +local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_entity("mcl_end:ender_eye", { physical = false, diff --git a/mods/ITEMS/mcl_farming/beetroot.lua b/mods/ITEMS/mcl_farming/beetroot.lua index 7caf5103e..e312aa262 100644 --- a/mods/ITEMS/mcl_farming/beetroot.lua +++ b/mods/ITEMS/mcl_farming/beetroot.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_farming") +local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_craftitem("mcl_farming:beetroot_seeds", { description = S("Beetroot Seeds"), diff --git a/mods/ITEMS/mcl_farming/carrots.lua b/mods/ITEMS/mcl_farming/carrots.lua index 4599d39ee..7983c58a2 100644 --- a/mods/ITEMS/mcl_farming/carrots.lua +++ b/mods/ITEMS/mcl_farming/carrots.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_farming") +local S = minetest.get_translator(minetest.get_current_modname()) for i=1, 7 do local texture, sel_height @@ -63,10 +63,10 @@ minetest.register_node("mcl_farming:carrot", { drop = { max_items = 1, items = { - { items = {'mcl_farming:carrot_item 4'}, rarity = 5 }, - { items = {'mcl_farming:carrot_item 3'}, rarity = 2 }, - { items = {'mcl_farming:carrot_item 2'}, rarity = 2 }, - { items = {'mcl_farming:carrot_item 1'} }, + { items = {"mcl_farming:carrot_item 4"}, rarity = 5 }, + { items = {"mcl_farming:carrot_item 3"}, rarity = 2 }, + { items = {"mcl_farming:carrot_item 2"}, rarity = 2 }, + { items = {"mcl_farming:carrot_item 1"} }, } }, selection_box = { @@ -91,7 +91,7 @@ minetest.register_craftitem("mcl_farming:carrot_item", { on_secondary_use = minetest.item_eat(3), on_place = function(itemstack, placer, pointed_thing) local new = mcl_farming:place_seed(itemstack, placer, pointed_thing, "mcl_farming:carrot_1") - if new ~= nil then + if new then return new else return minetest.do_item_eat(3, nil, itemstack, placer, pointed_thing) @@ -112,9 +112,9 @@ minetest.register_craftitem("mcl_farming:carrot_item_gold", { minetest.register_craft({ output = "mcl_farming:carrot_item_gold", recipe = { - {'mcl_core:gold_nugget', 'mcl_core:gold_nugget', 'mcl_core:gold_nugget'}, - {'mcl_core:gold_nugget', 'mcl_farming:carrot_item', 'mcl_core:gold_nugget'}, - {'mcl_core:gold_nugget', 'mcl_core:gold_nugget', 'mcl_core:gold_nugget'}, + {"mcl_core:gold_nugget", "mcl_core:gold_nugget", "mcl_core:gold_nugget"}, + {"mcl_core:gold_nugget", "mcl_farming:carrot_item", "mcl_core:gold_nugget"}, + {"mcl_core:gold_nugget", "mcl_core:gold_nugget", "mcl_core:gold_nugget"}, } }) diff --git a/mods/ITEMS/mcl_farming/hoes.lua b/mods/ITEMS/mcl_farming/hoes.lua index db470b999..28ad938f4 100644 --- a/mods/ITEMS/mcl_farming/hoes.lua +++ b/mods/ITEMS/mcl_farming/hoes.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_farming") +local S = minetest.get_translator(minetest.get_current_modname()) local function create_soil(pos, inv) if pos == nil then diff --git a/mods/ITEMS/mcl_farming/melon.lua b/mods/ITEMS/mcl_farming/melon.lua index 38b4c713c..b3e49a61f 100644 --- a/mods/ITEMS/mcl_farming/melon.lua +++ b/mods/ITEMS/mcl_farming/melon.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_farming") +local S = minetest.get_translator(minetest.get_current_modname()) -- Seeds minetest.register_craftitem("mcl_farming:melon_seeds", { @@ -25,11 +25,11 @@ local melon_base_def = { drop = { max_items = 1, items = { - { items = {'mcl_farming:melon_item 7'}, rarity = 14 }, - { items = {'mcl_farming:melon_item 6'}, rarity = 10 }, - { items = {'mcl_farming:melon_item 5'}, rarity = 5 }, - { items = {'mcl_farming:melon_item 4'}, rarity = 2 }, - { items = {'mcl_farming:melon_item 3'} }, + { items = {"mcl_farming:melon_item 7"}, rarity = 14 }, + { items = {"mcl_farming:melon_item 6"}, rarity = 10 }, + { items = {"mcl_farming:melon_item 5"}, rarity = 5 }, + { items = {"mcl_farming:melon_item 4"}, rarity = 2 }, + { items = {"mcl_farming:melon_item 3"} }, } }, sounds = mcl_sounds.node_sound_wood_defaults(), @@ -144,11 +144,11 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'mcl_farming:melon', + output = "mcl_farming:melon", recipe = { - {'mcl_farming:melon_item', 'mcl_farming:melon_item', 'mcl_farming:melon_item'}, - {'mcl_farming:melon_item', 'mcl_farming:melon_item', 'mcl_farming:melon_item'}, - {'mcl_farming:melon_item', 'mcl_farming:melon_item', 'mcl_farming:melon_item'}, + {"mcl_farming:melon_item", "mcl_farming:melon_item", "mcl_farming:melon_item"}, + {"mcl_farming:melon_item", "mcl_farming:melon_item", "mcl_farming:melon_item"}, + {"mcl_farming:melon_item", "mcl_farming:melon_item", "mcl_farming:melon_item"}, } }) diff --git a/mods/ITEMS/mcl_farming/potatoes.lua b/mods/ITEMS/mcl_farming/potatoes.lua index a7f5a7084..79cd13115 100644 --- a/mods/ITEMS/mcl_farming/potatoes.lua +++ b/mods/ITEMS/mcl_farming/potatoes.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_farming") +local S = minetest.get_translator(minetest.get_current_modname()) -- Premature potato plants @@ -67,11 +67,11 @@ minetest.register_node("mcl_farming:potato", { inventory_image = "mcl_farming_potatoes_stage_3.png", drop = { items = { - { items = {'mcl_farming:potato_item 1'} }, - { items = {'mcl_farming:potato_item 1'}, rarity = 2 }, - { items = {'mcl_farming:potato_item 1'}, rarity = 2 }, - { items = {'mcl_farming:potato_item 1'}, rarity = 2 }, - { items = {'mcl_farming:potato_item_poison 1'}, rarity = 50 } + { items = {"mcl_farming:potato_item 1"} }, + { items = {"mcl_farming:potato_item 1"}, rarity = 2 }, + { items = {"mcl_farming:potato_item 1"}, rarity = 2 }, + { items = {"mcl_farming:potato_item 1"}, rarity = 2 }, + { items = {"mcl_farming:potato_item_poison 1"}, rarity = 50 } } }, selection_box = { @@ -97,7 +97,7 @@ minetest.register_craftitem("mcl_farming:potato_item", { on_secondary_use = minetest.item_eat(1), on_place = function(itemstack, placer, pointed_thing) local new = mcl_farming:place_seed(itemstack, placer, pointed_thing, "mcl_farming:potato_1") - if new ~= nil then + if new then return new else return minetest.do_item_eat(1, nil, itemstack, placer, pointed_thing) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 86ddf707b..5850aa8bc 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -1,6 +1,7 @@ -local S = minetest.get_translator("mcl_farming") +local S = minetest.get_translator(minetest.get_current_modname()) + +local mod_screwdriver = minetest.get_modpath("screwdriver") -local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil local on_rotate if mod_screwdriver then on_rotate = screwdriver.rotate_simple diff --git a/mods/ITEMS/mcl_farming/shared_functions.lua b/mods/ITEMS/mcl_farming/shared_functions.lua index 025894a11..e942415f5 100644 --- a/mods/ITEMS/mcl_farming/shared_functions.lua +++ b/mods/ITEMS/mcl_farming/shared_functions.lua @@ -1,11 +1,15 @@ +local math = math +local tostring = tostring + mcl_farming.plant_lists = {} + local plant_lists = {} local plant_nodename_to_id_list = {} local function get_intervals_counter(pos, interval, chance) local meta = minetest.get_meta(pos) - local time_speed = tonumber(minetest.settings:get('time_speed') or 72) + local time_speed = tonumber(minetest.settings:get("time_speed") or 72) local current_game_time if time_speed == nil then return 1 @@ -206,7 +210,7 @@ function mcl_farming:add_gourd(full_unconnected_stem, connected_stem_basename, s -- Connect the stem at stempos to the first neighboring gourd block. -- No-op if not a stem or no gourd block found - local try_connect_stem = function(stempos) + local function try_connect_stem(stempos) local stem = minetest.get_node(stempos) if stem.name ~= full_unconnected_stem then return false @@ -232,7 +236,7 @@ function mcl_farming:add_gourd(full_unconnected_stem, connected_stem_basename, s -- Register gourd if not gourd_def.after_dig_node then - gourd_def.after_dig_node = function(blockpos, oldnode, oldmetadata, user) + function gourd_def.after_dig_node(blockpos, oldnode, oldmetadata, user) -- Disconnect any connected stems, turning them back to normal stems for n=1, #neighbors do local offset = neighbors[n] @@ -247,7 +251,7 @@ function mcl_farming:add_gourd(full_unconnected_stem, connected_stem_basename, s end end if not gourd_def.on_construct then - gourd_def.on_construct = function(blockpos) + function gourd_def.on_construct(blockpos) -- Connect all unconnected stems at full size for n=1, #neighbors do local stempos = vector.add(blockpos, neighbors[n]) @@ -295,7 +299,7 @@ function mcl_farming:add_gourd(full_unconnected_stem, connected_stem_basename, s end if not stem_def.on_construct then - stem_def.on_construct = function(stempos) + function stem_def.on_construct(stempos) -- Connect stem to gourd (if possible) try_connect_stem(stempos) end diff --git a/mods/ITEMS/mcl_farming/soil.lua b/mods/ITEMS/mcl_farming/soil.lua index f7a7bbbfb..8b31d888f 100644 --- a/mods/ITEMS/mcl_farming/soil.lua +++ b/mods/ITEMS/mcl_farming/soil.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_farming") +local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_node("mcl_farming:soil", { tiles = {"mcl_farming_farmland_dry.png", "default_dirt.png"}, @@ -76,7 +76,7 @@ minetest.register_abm({ end -- Check an area of 9×2×9 around the node for nodename (9×9 on same level and 9×9 below) - local check_surroundings = function(pos, nodename) + local function check_surroundings(pos, nodename) local nodes = minetest.find_nodes_in_area({x=pos.x-4,y=pos.y,z=pos.z-4}, {x=pos.x+4,y=pos.y+1,z=pos.z+4}, {nodename}) return #nodes > 0 end diff --git a/mods/ITEMS/mcl_farming/wheat.lua b/mods/ITEMS/mcl_farming/wheat.lua index d986e5be3..da1b84b2d 100644 --- a/mods/ITEMS/mcl_farming/wheat.lua +++ b/mods/ITEMS/mcl_farming/wheat.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_farming") +local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_craftitem("mcl_farming:wheat_seeds", { -- Original Minecraft name: “Seeds” @@ -85,10 +85,10 @@ minetest.register_node("mcl_farming:wheat", { drop = { max_items = 4, items = { - { items = {'mcl_farming:wheat_seeds'} }, - { items = {'mcl_farming:wheat_seeds'}, rarity = 2}, - { items = {'mcl_farming:wheat_seeds'}, rarity = 5}, - { items = {'mcl_farming:wheat_item'} } + { items = {"mcl_farming:wheat_seeds"} }, + { items = {"mcl_farming:wheat_seeds"}, rarity = 2}, + { items = {"mcl_farming:wheat_seeds"}, rarity = 5}, + { items = {"mcl_farming:wheat_item"} } } }, groups = {dig_immediate=3, not_in_creative_inventory=1, plant=1, attached_node=1, @@ -110,14 +110,14 @@ minetest.register_craftitem("mcl_farming:wheat_item", { minetest.register_craft({ output = "mcl_farming:bread", recipe = { - {'mcl_farming:wheat_item', 'mcl_farming:wheat_item', 'mcl_farming:wheat_item'}, + {"mcl_farming:wheat_item", "mcl_farming:wheat_item", "mcl_farming:wheat_item"}, } }) minetest.register_craft({ output = "mcl_farming:cookie 8", recipe = { - {'mcl_farming:wheat_item', 'mcl_dye:brown', 'mcl_farming:wheat_item'}, + {"mcl_farming:wheat_item", "mcl_dye:brown", "mcl_farming:wheat_item"}, } }) @@ -142,7 +142,7 @@ minetest.register_craftitem("mcl_farming:bread", { on_secondary_use = minetest.item_eat(5), }) -local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil +local mod_screwdriver = minetest.get_modpath("screwdriver") local on_rotate if mod_screwdriver then on_rotate = screwdriver.rotate_3way @@ -165,18 +165,18 @@ minetest.register_node("mcl_farming:hay_block", { }) minetest.register_craft({ - output = 'mcl_farming:hay_block', + output = "mcl_farming:hay_block", recipe = { - {'mcl_farming:wheat_item', 'mcl_farming:wheat_item', 'mcl_farming:wheat_item'}, - {'mcl_farming:wheat_item', 'mcl_farming:wheat_item', 'mcl_farming:wheat_item'}, - {'mcl_farming:wheat_item', 'mcl_farming:wheat_item', 'mcl_farming:wheat_item'}, + {"mcl_farming:wheat_item", "mcl_farming:wheat_item", "mcl_farming:wheat_item"}, + {"mcl_farming:wheat_item", "mcl_farming:wheat_item", "mcl_farming:wheat_item"}, + {"mcl_farming:wheat_item", "mcl_farming:wheat_item", "mcl_farming:wheat_item"}, } }) minetest.register_craft({ - output = 'mcl_farming:wheat_item 9', + output = "mcl_farming:wheat_item 9", recipe = { - {'mcl_farming:hay_block'}, + {"mcl_farming:hay_block"}, } }) diff --git a/mods/ITEMS/mcl_fences/init.lua b/mods/ITEMS/mcl_fences/init.lua index ddd85d470..243cc2219 100644 --- a/mods/ITEMS/mcl_fences/init.lua +++ b/mods/ITEMS/mcl_fences/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_fences") +local S = minetest.get_translator(minetest.get_current_modname()) -- Node box local p = {-2/16, -0.5, -2/16, 2/16, 0.5, 2/16} @@ -237,7 +237,7 @@ function mcl_fences.register_fence_gate(id, fence_gate_name, texture, groups, ha return gate_id, open_gate_id end -mcl_fences.register_fence_and_fence_gate = function(id, fence_name, fence_gate_name, texture_fence, groups, hardness, blast_resistance, connects_to, sounds, sound_open, sound_close, sound_gain_open, sound_gain_close, texture_fence_gate) +function mcl_fences.register_fence_and_fence_gate(id, fence_name, fence_gate_name, texture_fence, groups, hardness, blast_resistance, connects_to, sounds, sound_open, sound_close, sound_gain_open, sound_gain_close, texture_fence_gate) if texture_fence_gate == nil then texture_fence_gate = texture_fence end @@ -272,17 +272,17 @@ for w=1, #woods do mcl_fences.register_fence_and_fence_gate(id, wood[2], wood[3], wood[4], wood_groups, 2, 15, wood_connect, wood_sounds) minetest.register_craft({ - output = 'mcl_fences:'..id..' 3', + output = "mcl_fences:"..id.." 3", recipe = { - {wood[6], 'mcl_core:stick', wood[6]}, - {wood[6], 'mcl_core:stick', wood[6]}, + {wood[6], "mcl_core:stick", wood[6]}, + {wood[6], "mcl_core:stick", wood[6]}, } }) minetest.register_craft({ - output = 'mcl_fences:'..id_gate, + output = "mcl_fences:"..id_gate, recipe = { - {'mcl_core:stick', wood[6], 'mcl_core:stick'}, - {'mcl_core:stick', wood[6], 'mcl_core:stick'}, + {"mcl_core:stick", wood[6], "mcl_core:stick"}, + {"mcl_core:stick", wood[6], "mcl_core:stick"}, } }) end @@ -292,7 +292,7 @@ end mcl_fences.register_fence("nether_brick_fence", S("Nether Brick Fence"), "mcl_fences_fence_nether_brick.png", {pickaxey=1, deco_block=1, fence_nether_brick=1}, 2, 30, {"group:fence_nether_brick"}, mcl_sounds.node_sound_stone_defaults()) minetest.register_craft({ - output = 'mcl_fences:nether_brick_fence 6', + output = "mcl_fences:nether_brick_fence 6", recipe = { {"mcl_nether:nether_brick", "mcl_nether:netherbrick", "mcl_nether:nether_brick"}, {"mcl_nether:nether_brick", "mcl_nether:netherbrick", "mcl_nether:nether_brick"}, diff --git a/mods/ITEMS/mcl_fire/fire_charge.lua b/mods/ITEMS/mcl_fire/fire_charge.lua index 69e536790..4d18e44ed 100644 --- a/mods/ITEMS/mcl_fire/fire_charge.lua +++ b/mods/ITEMS/mcl_fire/fire_charge.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_fire") +local S = minetest.get_translator(minetest.get_current_modname()) local get_node = minetest.get_node local add_entity = minetest.add_entity @@ -14,11 +14,9 @@ minetest.register_craftitem("mcl_fire:fire_charge", { stack_max = 64, on_place = function(itemstack, user, pointed_thing) -- Use pointed node's on_rightclick function first, if present - local node = get_node(pointed_thing.under) - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack - end + local new_stack = mcl_util.call_on_rightclick(itemstack, user, pointed_thing) + if new_stack then + return new_stack end -- Check protection @@ -29,6 +27,7 @@ minetest.register_craftitem("mcl_fire:fire_charge", { end -- Ignite/light fire + local node = get_node(pointed_thing.under) if pointed_thing.type == "node" then local nodedef = minetest.registered_nodes[node.name] if nodedef and nodedef._on_ignite then @@ -59,7 +58,7 @@ minetest.register_craftitem("mcl_fire:fire_charge", { }) minetest.register_craft({ - type = 'shapeless', - output = 'mcl_fire:fire_charge 3', - recipe = { 'mcl_mobitems:blaze_powder', 'group:coal', 'mcl_mobitems:gunpowder' }, + type = "shapeless", + output = "mcl_fire:fire_charge 3", + recipe = { "mcl_mobitems:blaze_powder", "group:coal", "mcl_mobitems:gunpowder" }, }) diff --git a/mods/ITEMS/mcl_fire/flint_and_steel.lua b/mods/ITEMS/mcl_fire/flint_and_steel.lua index 5aa02aec1..39a4ce882 100644 --- a/mods/ITEMS/mcl_fire/flint_and_steel.lua +++ b/mods/ITEMS/mcl_fire/flint_and_steel.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_fire") +local S = minetest.get_translator(minetest.get_current_modname()) local get_node = minetest.get_node local add_node = minetest.add_node @@ -14,11 +14,9 @@ minetest.register_tool("mcl_fire:flint_and_steel", { groups = { tool = 1, }, on_place = function(itemstack, user, pointed_thing) -- Use pointed node's on_rightclick function first, if present - local node = get_node(pointed_thing.under) - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack - end + local new_stack = mcl_util.call_on_rightclick(itemstack, user, pointed_thing) + if new_stack then + return new_stack end -- Check protection local protname = user:get_player_name() @@ -76,7 +74,7 @@ minetest.register_tool("mcl_fire:flint_and_steel", { }) minetest.register_craft({ - type = 'shapeless', - output = 'mcl_fire:flint_and_steel', - recipe = { 'mcl_core:iron_ingot', 'mcl_core:flint'}, + type = "shapeless", + output = "mcl_fire:flint_and_steel", + recipe = { "mcl_core:iron_ingot", "mcl_core:flint"}, }) diff --git a/mods/ITEMS/mcl_fire/init.lua b/mods/ITEMS/mcl_fire/init.lua index f1a95fec6..9f1337a5d 100644 --- a/mods/ITEMS/mcl_fire/init.lua +++ b/mods/ITEMS/mcl_fire/init.lua @@ -1,10 +1,10 @@ -- Global namespace for functions mcl_fire = {} -local modpath = minetest.get_modpath(minetest.get_current_modname()) -local S = minetest.get_translator("mcl_fire") -local N = function(s) return s end +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local S = minetest.get_translator(modname) local has_mcl_portals = minetest.get_modpath("mcl_portals") @@ -86,18 +86,11 @@ else eternal_fire_help = S("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.") end -local fire_death_messages = { - N("@1 has been cooked crisp."), - N("@1 felt the burn."), - N("@1 died in the flames."), - N("@1 died in a fire."), -} - -local fire_timer = function(pos) +local function fire_timer(pos) minetest.get_node_timer(pos):start(math.random(3, 7)) end -local spawn_fire = function(pos, age) +local function spawn_fire(pos, age) set_node(pos, {name="mcl_fire:fire", param2 = age}) minetest.check_single_for_falling({x=pos.x, y=pos.y+1, z=pos.z}) end @@ -124,7 +117,6 @@ minetest.register_node("mcl_fire:fire", { buildable_to = true, sunlight_propagates = true, damage_per_second = 1, - _mcl_node_death_message = fire_death_messages, groups = {fire = 1, dig_immediate = 3, not_in_creative_inventory = 1, dig_by_piston=1, destroys_items=1, set_on_fire=8}, floodable = true, on_flood = function(pos, oldnode, newnode) @@ -255,7 +247,6 @@ minetest.register_node("mcl_fire:eternal_fire", { buildable_to = true, sunlight_propagates = true, damage_per_second = 1, - _mcl_node_death_message = fire_death_messages, groups = {fire = 1, dig_immediate = 3, not_in_creative_inventory = 1, dig_by_piston = 1, destroys_items = 1, set_on_fire=8}, floodable = true, on_flood = function(pos, oldnode, newnode) diff --git a/mods/ITEMS/mcl_fire/mod.conf b/mods/ITEMS/mcl_fire/mod.conf index da94d9278..4a1d52ee2 100644 --- a/mods/ITEMS/mcl_fire/mod.conf +++ b/mods/ITEMS/mcl_fire/mod.conf @@ -1,3 +1,3 @@ name = mcl_fire -depends = mcl_core, mcl_worlds, mcl_sounds, mcl_particles +depends = mcl_core, mcl_worlds, mcl_sounds, mcl_particles, mcl_util optional_depends = mcl_portals \ No newline at end of file diff --git a/mods/ITEMS/mcl_fireworks/register.lua b/mods/ITEMS/mcl_fireworks/register.lua index c441254cb..23066b663 100644 --- a/mods/ITEMS/mcl_fireworks/register.lua +++ b/mods/ITEMS/mcl_fireworks/register.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_fireworks") +local S = minetest.get_translator(minetest.get_current_modname()) local tt_help = S("Flight Duration:") local description = S("Firework Rocket") diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 567e96e96..66a0aad68 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -1,6 +1,6 @@ --Fishing Rod, Bobber, and Flying Bobber mechanics and Bobber artwork by Rootyjr. -local S = minetest.get_translator("mcl_fishing") +local S = minetest.get_translator(minetest.get_current_modname()) local math = math @@ -190,7 +190,7 @@ local bobber_on_step = function(self, dtime) end local wield = player:get_wielded_item() --Check if player is nearby - if self.player ~= nil and player ~= nil then + if self.player and player then --Destroy bobber if item not wielded. if ((not wield) or (minetest.get_item_group(wield:get_name(), "fishing_rod") <= 0)) then self.object:remove() @@ -373,17 +373,17 @@ minetest.register_tool("mcl_fishing:fishing_rod", { minetest.register_craft({ output = "mcl_fishing:fishing_rod", recipe = { - {'','','mcl_core:stick'}, - {'','mcl_core:stick','mcl_mobitems:string'}, - {'mcl_core:stick','','mcl_mobitems:string'}, + {"","","mcl_core:stick"}, + {"","mcl_core:stick","mcl_mobitems:string"}, + {"mcl_core:stick","","mcl_mobitems:string"}, } }) minetest.register_craft({ output = "mcl_fishing:fishing_rod", recipe = { - {'mcl_core:stick', '', ''}, - {'mcl_mobitems:string', 'mcl_core:stick', ''}, - {'mcl_mobitems:string','','mcl_core:stick'}, + {"mcl_core:stick", "", ""}, + {"mcl_mobitems:string", "mcl_core:stick", ""}, + {"mcl_mobitems:string","","mcl_core:stick"}, } }) minetest.register_craft({ diff --git a/mods/ITEMS/mcl_flowerpots/init.lua b/mods/ITEMS/mcl_flowerpots/init.lua index 21d4c04e6..578553b31 100644 --- a/mods/ITEMS/mcl_flowerpots/init.lua +++ b/mods/ITEMS/mcl_flowerpots/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_flowerpots") +local S = minetest.get_translator(minetest.get_current_modname()) local has_doc = minetest.get_modpath("doc") mcl_flowerpots = {} @@ -49,11 +49,11 @@ minetest.register_node("mcl_flowerpots:flower_pot", { }) minetest.register_craft({ - output = 'mcl_flowerpots:flower_pot', + output = "mcl_flowerpots:flower_pot", recipe = { - {'mcl_core:brick', '', 'mcl_core:brick'}, - {'', 'mcl_core:brick', ''}, - {'', '', ''}, + {"mcl_core:brick", "", "mcl_core:brick"}, + {"", "mcl_core:brick", ""}, + {"", "", ""}, } }) diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index d07a125cb..14e0df5cb 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -1,7 +1,9 @@ -local S = minetest.get_translator("mcl_flowers") -local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local S = minetest.get_translator(modname) + +local mod_screwdriver = minetest.get_modpath("screwdriver") local has_mcl_flowerpots = minetest.get_modpath("mcl_flowerpots") -local modpath = minetest.get_modpath("mcl_flowers") mcl_flowers = {} mcl_flowers.registered_simple_flowers = {} @@ -58,7 +60,7 @@ function mcl_flowers.register_simple_flower(name, def) local newname = "mcl_flowers:"..name if not def._mcl_silk_touch_drop then def._mcl_silk_touch_drop = nil end if not def.drop then def.drop = newname end - mcl_flowers.registered_simple_flowers[newname] = { + mcl_flowers.registered_simple_flowers[newname] = { name=name, desc=def.desc, image=def.image, @@ -101,10 +103,10 @@ local wheat_seed_drop = { max_items = 1, items = { { - items = {'mcl_farming:wheat_seeds'}, + items = {"mcl_farming:wheat_seeds"}, rarity = 8, }, - } + }, } local fortune_wheat_seed_drop = { @@ -458,7 +460,6 @@ minetest.register_node("mcl_flowers:waterlily", { end end end - return itemstack end, on_rotate = on_rotate, @@ -469,29 +470,29 @@ minetest.register_alias("mcl_core:tallgrass", "mcl_flowers:tallgrass") -- mcimport support: re-adds missing double_plant tops in mcimported worlds. local mg_name = minetest.get_mapgen_setting("mg_name") -local mod_mcimport = minetest.get_modpath("mcimport") ~= nil +local mod_mcimport = minetest.get_modpath("mcimport") + local fix_doubleplants = minetest.settings:get_bool("fix_doubleplants", true) +if mod_mcimport and mg_name == "singlenode" and fix_doubleplants == true then + local flowernames = { "peony", "rose_bush", "lilac", "sunflower", "double_fern", "double_grass" } - if mod_mcimport and mg_name == "singlenode" and fix_doubleplants == true then - local flowernames = { "peony", "rose_bush", "lilac", "sunflower", "double_fern", "double_grass" } - - minetest.register_lbm({ - label = "Add double plant tops.", - name = "mcl_flowers:double_plant_topper", - run_at_every_load = true, - nodenames = { "mcl_flowers:peony", "mcl_flowers:rose_bush", "mcl_flowers:lilac", "mcl_flowers:sunflower", "mcl_flowers:double_fern", "mcl_flowers:double_grass" }, - action = function(pos, node) - for c=1, 6 do - local flowername = flowernames[c] - local bottom = pos - local top = { x = bottom.x, y = bottom.y + 1, z = bottom.z } - if node.name == "mcl_flowers:"..flowername then - minetest.set_node(top, {name = "mcl_flowers:"..flowername.."_top"}) - end + minetest.register_lbm({ + label = "Add double plant tops.", + name = "mcl_flowers:double_plant_topper", + run_at_every_load = true, + nodenames = { "mcl_flowers:peony", "mcl_flowers:rose_bush", "mcl_flowers:lilac", "mcl_flowers:sunflower", "mcl_flowers:double_fern", "mcl_flowers:double_grass" }, + action = function(pos, node) + for c = 1, 6 do + local flowername = flowernames[c] + local bottom = pos + local top = { x = bottom.x, y = bottom.y + 1, z = bottom.z } + if node.name == "mcl_flowers:"..flowername then + minetest.set_node(top, {name = "mcl_flowers:"..flowername.."_top"}) end - end, - }) - end + end + end, + }) +end dofile(modpath.."/register.lua") diff --git a/mods/ITEMS/mcl_flowers/register.lua b/mods/ITEMS/mcl_flowers/register.lua index 9b65caebf..b45f3e1ee 100644 --- a/mods/ITEMS/mcl_flowers/register.lua +++ b/mods/ITEMS/mcl_flowers/register.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_flowers") +local S = minetest.get_translator(minetest.get_current_modname()) mcl_flowers.register_simple_flower("poppy", { desc = S("Poppy"), diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index af2a60952..e31406f6a 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -1,5 +1,5 @@ -local S = minetest.get_translator("mcl_furnaces") +local S = minetest.get_translator(minetest.get_current_modname()) local LIGHT_ACTIVE_FURNACE = 13 @@ -217,14 +217,14 @@ end local function furnace_reset_delta_time(pos) local meta = minetest.get_meta(pos) - local time_speed = tonumber(minetest.settings:get('time_speed') or 72) + local time_speed = tonumber(minetest.settings:get("time_speed") or 72) if (time_speed < 0.1) then return end local time_multiplier = 86400 / time_speed local current_game_time = .0 + ((minetest.get_day_count() + minetest.get_timeofday()) * time_multiplier) - -- TODO: Change meta:get/set_string() to get/set_float() for 'last_gametime'. + -- TODO: Change meta:get/set_string() to get/set_float() for "last_gametime". -- In Windows *_float() works OK but under Linux it returns rounded unusable values like 449540.000000000 local last_game_time = meta:get_string("last_gametime") if last_game_time then @@ -239,7 +239,7 @@ end local function furnace_get_delta_time(pos, elapsed) local meta = minetest.get_meta(pos) - local time_speed = tonumber(minetest.settings:get('time_speed') or 72) + local time_speed = tonumber(minetest.settings:get("time_speed") or 72) local current_game_time if (time_speed < 0.1) then return meta, elapsed @@ -478,9 +478,9 @@ minetest.register_node("mcl_furnaces:furnace", { local meta = minetest.get_meta(pos) meta:set_string("formspec", inactive_formspec) local inv = meta:get_inventory() - inv:set_size('src', 1) - inv:set_size('fuel', 1) - inv:set_size('dst', 1) + inv:set_size("src", 1) + inv:set_size("fuel", 1) + inv:set_size("dst", 1) end, on_destruct = function(pos) mcl_particles.delete_node_particlespawners(pos) diff --git a/mods/ITEMS/mcl_heads/init.lua b/mods/ITEMS/mcl_heads/init.lua index 4bcee2279..78356de71 100644 --- a/mods/ITEMS/mcl_heads/init.lua +++ b/mods/ITEMS/mcl_heads/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_heads") +local S = minetest.get_translator(minetest.get_current_modname()) local mod_doc = minetest.get_modpath("doc") local mod_screwdriver = minetest.get_modpath("screwdriver") diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index eaff8f83d..ca6cb60e2 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_hoppers") +local S = minetest.get_translator(minetest.get_current_modname()) --[[ BEGIN OF NODE DEFINITIONS ]] diff --git a/mods/ITEMS/mcl_itemframes/init.lua b/mods/ITEMS/mcl_itemframes/init.lua index fbd4d545a..d46a393b8 100644 --- a/mods/ITEMS/mcl_itemframes/init.lua +++ b/mods/ITEMS/mcl_itemframes/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_itemframes") +local S = minetest.get_translator(minetest.get_current_modname()) local VISUAL_SIZE = 0.3 @@ -13,8 +13,8 @@ minetest.register_entity("mcl_itemframes:item",{ _scale = 1, on_activate = function(self, staticdata) - if staticdata ~= nil and staticdata ~= "" then - local data = staticdata:split(';') + if staticdata and staticdata ~= "" then + local data = staticdata:split(";") if data and data[1] and data[2] then self._nodename = data[1] self._texture = data[2] @@ -25,7 +25,7 @@ minetest.register_entity("mcl_itemframes:item",{ end end end - if self._texture ~= nil then + if self._texture then self.object:set_properties({ textures={self._texture}, visual_size={x=VISUAL_SIZE/self._scale, y=VISUAL_SIZE/self._scale}, @@ -33,10 +33,10 @@ minetest.register_entity("mcl_itemframes:item",{ end end, get_staticdata = function(self) - if self._nodename ~= nil and self._texture ~= nil then - local ret = self._nodename .. ';' .. self._texture - if self._scale ~= nil then - ret = ret .. ';' .. self._scale + if self._nodename and self._texture then + local ret = self._nodename .. ";" .. self._texture + if self._scale then + ret = ret .. ";" .. self._scale end return ret end @@ -44,7 +44,7 @@ minetest.register_entity("mcl_itemframes:item",{ end, _update_texture = function(self) - if self._texture ~= nil then + if self._texture then self.object:set_properties({ textures={self._texture}, visual_size={x=VISUAL_SIZE/self._scale, y=VISUAL_SIZE/self._scale}, @@ -299,11 +299,11 @@ minetest.register_node("mcl_itemframes:item_frame",{ }) minetest.register_craft({ - output = 'mcl_itemframes:item_frame', + output = "mcl_itemframes:item_frame", recipe = { - {'mcl_core:stick', 'mcl_core:stick', 'mcl_core:stick'}, - {'mcl_core:stick', 'mcl_mobitems:leather', 'mcl_core:stick'}, - {'mcl_core:stick', 'mcl_core:stick', 'mcl_core:stick'}, + {"mcl_core:stick", "mcl_core:stick", "mcl_core:stick"}, + {"mcl_core:stick", "mcl_mobitems:leather", "mcl_core:stick"}, + {"mcl_core:stick", "mcl_core:stick", "mcl_core:stick"}, } }) diff --git a/mods/ITEMS/mcl_jukebox/init.lua b/mods/ITEMS/mcl_jukebox/init.lua index 249603b58..ebee6f7bb 100644 --- a/mods/ITEMS/mcl_jukebox/init.lua +++ b/mods/ITEMS/mcl_jukebox/init.lua @@ -1,4 +1,7 @@ -local S = minetest.get_translator("mcl_jukebox") +local S = minetest.get_translator(minetest.get_current_modname()) +local C = minetest.colorize + +local math = math mcl_jukebox = {} mcl_jukebox.registered_records = {} @@ -20,8 +23,8 @@ function mcl_jukebox.register_record(title, author, identifier, image, sound) local usagehelp = S("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.") minetest.register_craftitem(":mcl_jukebox:record_"..identifier, { description = - core.colorize(mcl_colors.AQUA, S("Music Disc")) .. "\n" .. - core.colorize(mcl_colors.GRAY, S("@1—@2", author, title)), + C(mcl_colors.AQUA, S("Music Disc")) .. "\n" .. + C(mcl_colors.GRAY, S("@1—@2", author, title)), _doc_items_create_entry = true, _doc_items_entry_name = entryname, _doc_items_longdesc = longdesc, @@ -45,7 +48,7 @@ local function now_playing(player, name) end local id - if hud ~= nil then + if hud then id = hud player:hud_change(id, "text", text) else @@ -67,7 +70,7 @@ local function now_playing(player, name) if not player or not player:is_player() or not active_huds[playername] or not hud_sequence_numbers[playername] or seq ~= hud_sequence_numbers[playername] then return end - if id ~= nil and id == active_huds[playername] then + if id and id == active_huds[playername] then player:hud_remove(active_huds[playername]) active_huds[playername] = nil end @@ -82,19 +85,19 @@ end) -- Jukebox crafting minetest.register_craft({ - output = 'mcl_jukebox:jukebox', + output = "mcl_jukebox:jukebox", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'mcl_core:diamond', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "mcl_core:diamond", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, } }) -local play_record = function(pos, itemstack, player) +local function play_record(pos, itemstack, player) local name = itemstack:get_name() if mcl_jukebox.registered_records[name] then local cname = player:get_player_name() - if active_tracks[cname] ~= nil then + if active_tracks[cname] then minetest.sound_stop(active_tracks[cname]) active_tracks[cname] = nil end @@ -134,7 +137,7 @@ minetest.register_node("mcl_jukebox:jukebox", { local inv = meta:get_inventory() if not inv:is_empty("main") then -- Jukebox contains a disc: Stop music and remove disc - if active_tracks[cname] ~= nil then + if active_tracks[cname] then minetest.sound_stop(active_tracks[cname]) end local lx = pos.x @@ -145,11 +148,11 @@ minetest.register_node("mcl_jukebox:jukebox", { -- Rotate record to match with “slot” texture dropped_item:set_yaw(math.pi/2) inv:set_stack("main", 1, "") - if active_tracks[cname] ~= nil then + if active_tracks[cname] then minetest.sound_stop(active_tracks[cname]) active_tracks[cname] = nil end - if active_huds[cname] ~= nil then + if active_huds[cname] then clicker:hud_remove(active_huds[cname]) active_huds[cname] = nil end @@ -204,11 +207,11 @@ minetest.register_node("mcl_jukebox:jukebox", { local dropped_item = minetest.add_item(p, stack) -- Rotate record to match with “slot” texture dropped_item:set_yaw(math.pi/2) - if active_tracks[name] ~= nil then + if active_tracks[name] then minetest.sound_stop(active_tracks[name]) active_tracks[name] = nil end - if active_huds[name] ~= nil then + if active_huds[name] then digger:hud_remove(active_huds[name]) active_huds[name] = nil end diff --git a/mods/ITEMS/mcl_maps/init.lua b/mods/ITEMS/mcl_maps/init.lua index ccdaf6dfd..d2ff951ad 100644 --- a/mods/ITEMS/mcl_maps/init.lua +++ b/mods/ITEMS/mcl_maps/init.lua @@ -1,8 +1,21 @@ mcl_maps = {} -local S = minetest.get_translator("mcl_maps") +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local S = minetest.get_translator(modname) + +local math = math +local vector = vector +local table = table +local pairs = pairs + +local pos_to_string = minetest.pos_to_string +local string_to_pos = minetest.string_to_pos +local get_item_group = minetest.get_item_group +local dynamic_add_media = minetest.dynamic_add_media +local get_connected_players = minetest.get_connected_players + 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 @@ -36,8 +49,8 @@ function mcl_maps.create_map(pos) storage:set_int("next_id", next_id + 1) local id = tostring(next_id) meta:set_string("mcl_maps:id", id) - meta:set_string("mcl_maps:minp", minetest.pos_to_string(minp)) - meta:set_string("mcl_maps:maxp", minetest.pos_to_string(maxp)) + meta:set_string("mcl_maps:minp", pos_to_string(minp)) + meta:set_string("mcl_maps:maxp", pos_to_string(maxp)) tt.reload_itemstack_description(itemstack) creating_maps[id] = true @@ -135,7 +148,7 @@ function mcl_maps.load_map(id) if not loaded_maps[id] then loaded_maps[id] = true - minetest.dynamic_add_media(map_textures_path .. texture, function() end) + dynamic_add_media(map_textures_path .. texture, function() end) end return texture @@ -216,14 +229,14 @@ end local old_add_item = minetest.add_item function minetest.add_item(pos, stack) stack = ItemStack(stack) - if minetest.get_item_group(stack:get_name(), "filled_map") > 0 then + if get_item_group(stack:get_name(), "filled_map") > 0 then stack:set_name("mcl_maps:filled_map") end return old_add_item(pos, stack) end tt.register_priority_snippet(function(itemstring, _, itemstack) - if itemstack and minetest.get_item_group(itemstring, "filled_map") > 0 then + if itemstack and get_item_group(itemstring, "filled_map") > 0 then local id = itemstack:get_meta():get_string("mcl_maps:id") if id ~= "" then return "#" .. id, mcl_colors.GRAY @@ -249,7 +262,7 @@ minetest.register_craft({ local function on_craft(itemstack, player, old_craft_grid, craft_inv) if itemstack:get_name() == "mcl_maps:filled_map" then for _, stack in pairs(old_craft_grid) do - if minetest.get_item_group(stack:get_name(), "filled_map") > 0 then + if get_item_group(stack:get_name(), "filled_map") > 0 then itemstack:get_meta():from_table(stack:get_meta():to_table()) return itemstack end @@ -286,7 +299,7 @@ minetest.register_on_leaveplayer(function(player) end) minetest.register_globalstep(function(dtime) - for _, player in pairs(minetest.get_connected_players()) do + for _, player in pairs(get_connected_players()) do local wield = player:get_wielded_item() local texture = mcl_maps.load_map_item(wield) local hud = huds[player] @@ -306,8 +319,8 @@ minetest.register_globalstep(function(dtime) local pos = vector.round(player:get_pos()) local meta = wield:get_meta() - local minp = minetest.string_to_pos(meta:get_string("mcl_maps:minp")) - local maxp = minetest.string_to_pos(meta:get_string("mcl_maps:maxp")) + local minp = string_to_pos(meta:get_string("mcl_maps:minp")) + local maxp = string_to_pos(meta:get_string("mcl_maps:maxp")) local marker = "mcl_maps_player_arrow.png" diff --git a/mods/ITEMS/mcl_mobitems/init.lua b/mods/ITEMS/mcl_mobitems/init.lua index 1b7929722..a7b04d3d4 100644 --- a/mods/ITEMS/mcl_mobitems/init.lua +++ b/mods/ITEMS/mcl_mobitems/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_mobitems") +local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_craftitem("mcl_mobitems:rotten_flesh", { description = S("Rotten Flesh"), @@ -135,7 +135,7 @@ minetest.register_craftitem("mcl_mobitems:cooked_rabbit", { }) -- Reset food poisoning and status effects -local drink_milk = function(itemstack, player, pointed_thing) +local function drink_milk(itemstack, player, pointed_thing) local bucket = minetest.do_item_eat(0, "mcl_buckets:bucket_empty", itemstack, player, pointed_thing) -- Check if we were allowed to drink this (eat delay check) if mcl_hunger.active and (bucket:get_name() ~= "mcl_mobitems:milk_bucket" or minetest.is_creative_enabled(player:get_player_name())) then @@ -426,7 +426,7 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'mcl_mobitems:slimeball 9', + output = "mcl_mobitems:slimeball 9", recipe = {{"mcl_core:slimeblock"}}, }) diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index bd9d0c53a..6c5d7f6e4 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_mobspawners") +local S = minetest.get_translator(minetest.get_current_modname()) local math = math local table = table @@ -22,7 +22,7 @@ end local function find_doll(pos) for _,obj in pairs(minetest.get_objects_inside_radius(pos, 0.5)) do if not obj:is_player() then - if obj ~= nil and obj:get_luaentity().name == "mcl_mobspawners:doll" then + if obj and obj:get_luaentity().name == "mcl_mobspawners:doll" then return obj end end @@ -136,7 +136,7 @@ end -- Spawn mobs around pos -- NOTE: The node is timer-based, rather than ABM-based. -local spawn_mobs = function(pos, elapsed) +local function spawn_mobs(pos, elapsed) -- get meta local meta = minetest.get_meta(pos) diff --git a/mods/ITEMS/mcl_monster_eggs/init.lua b/mods/ITEMS/mcl_monster_eggs/init.lua index dd986d127..59ab72876 100644 --- a/mods/ITEMS/mcl_monster_eggs/init.lua +++ b/mods/ITEMS/mcl_monster_eggs/init.lua @@ -1,16 +1,16 @@ -- Monster eggs! -- Blocks which spawn silverfish when destroyed. -local S = minetest.get_translator("mcl_monster_eggs") +local S = minetest.get_translator(minetest.get_current_modname()) -local spawn_silverfish = function(pos, oldnode, oldmetadata, digger) +local function spawn_silverfish(pos, oldnode, oldmetadata, digger) if not minetest.is_creative_enabled("") then minetest.add_entity(pos, "mobs_mc:silverfish") end end -- Template function for registering monster egg blocks -local register_block = function(subname, description, tiles, is_ground_content) +local function register_block(subname, description, tiles, is_ground_content) if is_ground_content == nil then is_ground_content = false end @@ -19,7 +19,7 @@ local register_block = function(subname, description, tiles, is_ground_content) tiles = tiles, is_ground_content = is_ground_content, groups = {dig_immediate = 3, spawns_silverfish = 1, deco_block = 1}, - drop = '', + drop = "", sounds = mcl_sounds.node_sound_stone_defaults(), after_dig_node = spawn_silverfish, _tt_help = S("Hides a silverfish"), diff --git a/mods/ITEMS/mcl_mushrooms/huge.lua b/mods/ITEMS/mcl_mushrooms/huge.lua index 12b00db8c..617f12810 100644 --- a/mods/ITEMS/mcl_mushrooms/huge.lua +++ b/mods/ITEMS/mcl_mushrooms/huge.lua @@ -1,4 +1,6 @@ -local S = minetest.get_translator("mcl_mushrooms") +local S = minetest.get_translator(minetest.get_current_modname()) + +local vector = vector local template = { groups = {handy=1,axey=1, building_block = 1, material_wood = 1, flammable = -1 }, @@ -12,16 +14,16 @@ local template = { local red = table.copy(template) red.drop = { items = { - { items = {'mcl_mushrooms:mushroom_red 1'}, rarity = 2 }, - { items = {'mcl_mushrooms:mushroom_red 1'}, rarity = 2 }, + { items = {"mcl_mushrooms:mushroom_red"}, rarity = 2 }, + { items = {"mcl_mushrooms:mushroom_red"}, rarity = 2 }, } } local brown= table.copy(template) brown.drop = { items = { - { items = {'mcl_mushrooms:mushroom_brown 1'}, rarity = 2 }, - { items = {'mcl_mushrooms:mushroom_brown 1'}, rarity = 2 }, + { items = {"mcl_mushrooms:mushroom_brown"}, rarity = 2 }, + { items = {"mcl_mushrooms:mushroom_brown"}, rarity = 2 }, } } @@ -40,7 +42,7 @@ local function to_binary(num) return binary end -local register_mushroom = function(color, species_id, template, d_cap, d_stem, d_stem_all, longdesc_cap, longdesc_stem) +local function register_mushroom(color, species_id, template, d_cap, d_stem, d_stem_all, longdesc_cap, longdesc_stem) -- Stem texture on all sides local stem_full = table.copy(template) @@ -73,7 +75,7 @@ local register_mushroom = function(color, species_id, template, d_cap, d_stem, d block._doc_items_usagehelp = S("By placing huge mushroom blocks of the same species next to each other, the sides that touch each other will turn into pores permanently.") block.tiles = { "mcl_mushrooms_mushroom_block_skin_"..color..".png" } - block.on_construct = function(pos) + function block.on_construct(pos) local sides = { { { x= 0, y= 1, z= 0 }, 2 }, { { x= 0, y=-1, z= 0 }, 1 }, @@ -85,7 +87,7 @@ local register_mushroom = function(color, species_id, template, d_cap, d_stem, d -- Replace the side of a mushroom node. Returns the new node. -- Or nil, if unchanged. - local replace_side = function(pos, node, side) + local function replace_side(pos, node, side) local bin = string.sub(node.name, -6) if string.sub(bin, side, side) == "1" then local new_bin diff --git a/mods/ITEMS/mcl_mushrooms/small.lua b/mods/ITEMS/mcl_mushrooms/small.lua index 52c64928f..c6d7edcdc 100644 --- a/mods/ITEMS/mcl_mushrooms/small.lua +++ b/mods/ITEMS/mcl_mushrooms/small.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_mushrooms") +local S = minetest.get_translator(minetest.get_current_modname()) local on_place = mcl_util.generate_on_place_plant_function(function(place_pos, place_node) local soil_node = minetest.get_node_or_nil({x=place_pos.x, y=place_pos.y-1, z=place_pos.z}) @@ -87,7 +87,7 @@ minetest.register_craftitem("mcl_mushrooms:mushroom_stew", { minetest.register_craft({ type = "shapeless", output = "mcl_mushrooms:mushroom_stew", - recipe = {'mcl_core:bowl', 'mcl_mushrooms:mushroom_brown', 'mcl_mushrooms:mushroom_red'} + recipe = {"mcl_core:bowl", "mcl_mushrooms:mushroom_brown", "mcl_mushrooms:mushroom_red"} }) --[[ Mushroom spread and death diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index 0a0e2b183..c5afe66ae 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -1,6 +1,6 @@ -local S = minetest.get_translator("mcl_nether") +local S = minetest.get_translator(minetest.get_current_modname()) -local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil +local mod_screwdriver = minetest.get_modpath("screwdriver") local on_rotate if mod_screwdriver then on_rotate = screwdriver.rotate_3way @@ -16,9 +16,9 @@ minetest.register_node("mcl_nether:glowstone", { drop = { max_items = 1, items = { - {items = {'mcl_nether:glowstone_dust 4'},rarity = 3}, - {items = {'mcl_nether:glowstone_dust 3'},rarity = 3}, - {items = {'mcl_nether:glowstone_dust 2'}}, + {items = {"mcl_nether:glowstone_dust 4"}, rarity = 3}, + {items = {"mcl_nether:glowstone_dust 3"}, rarity = 3}, + {items = {"mcl_nether:glowstone_dust 2"}}, } }, paramtype = "light", @@ -43,7 +43,7 @@ minetest.register_node("mcl_nether:quartz_ore", { tiles = {"mcl_nether_quartz_ore.png"}, is_ground_content = true, groups = {pickaxey=1, building_block=1, material_stone=1, xp=3}, - drop = 'mcl_nether:quartz', + drop = "mcl_nether:quartz", sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 3, _mcl_hardness = 3, @@ -53,13 +53,14 @@ minetest.register_node("mcl_nether:quartz_ore", { -- For eternal fire on top of netherrack and magma blocks -- (this code does not require a dependency on mcl_fire) -local eternal_after_destruct = function(pos, oldnode) +local function eternal_after_destruct(pos, oldnode) pos.y = pos.y + 1 if minetest.get_node(pos).name == "mcl_fire:eternal_fire" then minetest.remove_node(pos) end end -local eternal_on_ignite = function(player, pointed_thing) + +local function eternal_on_ignite(player, pointed_thing) local pos = pointed_thing.under local flame_pos = {x = pos.x, y = pos.y + 1, z = pos.z} local fn = minetest.get_node(flame_pos) @@ -265,34 +266,34 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'mcl_nether:quartz_block', + output = "mcl_nether:quartz_block", recipe = { - {'mcl_nether:quartz', 'mcl_nether:quartz'}, - {'mcl_nether:quartz', 'mcl_nether:quartz'}, + {"mcl_nether:quartz", "mcl_nether:quartz"}, + {"mcl_nether:quartz", "mcl_nether:quartz"}, } }) minetest.register_craft({ - output = 'mcl_nether:quartz_pillar 2', + output = "mcl_nether:quartz_pillar 2", recipe = { - {'mcl_nether:quartz_block'}, - {'mcl_nether:quartz_block'}, + {"mcl_nether:quartz_block"}, + {"mcl_nether:quartz_block"}, } }) minetest.register_craft({ output = "mcl_nether:glowstone", recipe = { - {'mcl_nether:glowstone_dust', 'mcl_nether:glowstone_dust'}, - {'mcl_nether:glowstone_dust', 'mcl_nether:glowstone_dust'}, + {"mcl_nether:glowstone_dust", "mcl_nether:glowstone_dust"}, + {"mcl_nether:glowstone_dust", "mcl_nether:glowstone_dust"}, } }) minetest.register_craft({ output = "mcl_nether:magma", recipe = { - {'mcl_mobitems:magma_cream', 'mcl_mobitems:magma_cream'}, - {'mcl_mobitems:magma_cream', 'mcl_mobitems:magma_cream'}, + {"mcl_mobitems:magma_cream", "mcl_mobitems:magma_cream"}, + {"mcl_mobitems:magma_cream", "mcl_mobitems:magma_cream"}, } }) @@ -306,32 +307,32 @@ minetest.register_craft({ minetest.register_craft({ output = "mcl_nether:nether_brick", recipe = { - {'mcl_nether:netherbrick', 'mcl_nether:netherbrick'}, - {'mcl_nether:netherbrick', 'mcl_nether:netherbrick'}, + {"mcl_nether:netherbrick", "mcl_nether:netherbrick"}, + {"mcl_nether:netherbrick", "mcl_nether:netherbrick"}, } }) minetest.register_craft({ output = "mcl_nether:red_nether_brick", recipe = { - {'mcl_nether:nether_wart_item', 'mcl_nether:netherbrick'}, - {'mcl_nether:netherbrick', 'mcl_nether:nether_wart_item'}, + {"mcl_nether:nether_wart_item", "mcl_nether:netherbrick"}, + {"mcl_nether:netherbrick", "mcl_nether:nether_wart_item"}, } }) minetest.register_craft({ output = "mcl_nether:red_nether_brick", recipe = { - {'mcl_nether:netherbrick', 'mcl_nether:nether_wart_item'}, - {'mcl_nether:nether_wart_item', 'mcl_nether:netherbrick'}, + {"mcl_nether:netherbrick", "mcl_nether:nether_wart_item"}, + {"mcl_nether:nether_wart_item", "mcl_nether:netherbrick"}, } }) minetest.register_craft({ output = "mcl_nether:nether_wart_block", recipe = { - {'mcl_nether:nether_wart_item', 'mcl_nether:nether_wart_item', 'mcl_nether:nether_wart_item'}, - {'mcl_nether:nether_wart_item', 'mcl_nether:nether_wart_item', 'mcl_nether:nether_wart_item'}, - {'mcl_nether:nether_wart_item', 'mcl_nether:nether_wart_item', 'mcl_nether:nether_wart_item'}, + {"mcl_nether:nether_wart_item", "mcl_nether:nether_wart_item", "mcl_nether:nether_wart_item"}, + {"mcl_nether:nether_wart_item", "mcl_nether:nether_wart_item", "mcl_nether:nether_wart_item"}, + {"mcl_nether:nether_wart_item", "mcl_nether:nether_wart_item", "mcl_nether:nether_wart_item"}, } }) diff --git a/mods/ITEMS/mcl_nether/nether_wart.lua b/mods/ITEMS/mcl_nether/nether_wart.lua index 681abe094..41b23f662 100644 --- a/mods/ITEMS/mcl_nether/nether_wart.lua +++ b/mods/ITEMS/mcl_nether/nether_wart.lua @@ -1,4 +1,6 @@ -local S = minetest.get_translator("mcl_nether") +local S = minetest.get_translator(minetest.get_current_modname()) + +local table = table minetest.register_node("mcl_nether:nether_wart_0", { description = S("Premature Nether Wart (Stage 1)"), @@ -127,7 +129,7 @@ minetest.register_craftitem("mcl_nether:nether_wart_item", { -- Check for correct soil type local chk = minetest.get_item_group(minetest.get_node(soilpos).name, "soil_nether_wart") - if chk ~= 0 and chk ~= nil then + if chk and chk ~= 0 then -- Check if node above soil node allows placement if minetest.registered_items[minetest.get_node(placepos).name].buildable_to then -- Place nether wart diff --git a/mods/ITEMS/mcl_ocean/corals.lua b/mods/ITEMS/mcl_ocean/corals.lua index 376b8a22f..338929a19 100644 --- a/mods/ITEMS/mcl_ocean/corals.lua +++ b/mods/ITEMS/mcl_ocean/corals.lua @@ -1,5 +1,5 @@ -local S = minetest.get_translator("mcl_ocean") -local mod_doc = minetest.get_modpath("doc") ~= nil +local S = minetest.get_translator(minetest.get_current_modname()) +local mod_doc = minetest.get_modpath("doc") local corals = { { "tube", S("Tube Coral Block"), S("Dead Tube Coral Block"), S("Tube Coral"), S("Dead Tube Coral"), S("Tube Coral Fan"), S("Dead Tube Coral Fan") }, diff --git a/mods/ITEMS/mcl_ocean/kelp.lua b/mods/ITEMS/mcl_ocean/kelp.lua index fb6045e78..422f475ac 100644 --- a/mods/ITEMS/mcl_ocean/kelp.lua +++ b/mods/ITEMS/mcl_ocean/kelp.lua @@ -7,8 +7,8 @@ -- TODO: In MC, you can't actually destroy kelp by bucket'ing water in the middle. -- However, because of the plantlike_rooted hack, we'll just allow it for now. -local S = minetest.get_translator("mcl_ocean") -local mod_doc = minetest.get_modpath("doc") ~= nil +local S = minetest.get_translator(minetest.get_current_modname()) +local mod_doc = minetest.get_modpath("doc") -------------------------------------------------------------------------------- -- local-ify runtime functions @@ -763,7 +763,7 @@ minetest.register_craftitem("mcl_ocean:dried_kelp", { }) -local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil +local mod_screwdriver = minetest.get_modpath("screwdriver") local on_rotate if mod_screwdriver then on_rotate = screwdriver.rotate_3way diff --git a/mods/ITEMS/mcl_ocean/prismarine.lua b/mods/ITEMS/mcl_ocean/prismarine.lua index 647e87fe1..e38b3e0a6 100644 --- a/mods/ITEMS/mcl_ocean/prismarine.lua +++ b/mods/ITEMS/mcl_ocean/prismarine.lua @@ -1,6 +1,6 @@ -- Nodes -local S = minetest.get_translator("mcl_ocean") +local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_node("mcl_ocean:sea_lantern", { description = S("Sea Lantern"), @@ -12,8 +12,8 @@ minetest.register_node("mcl_ocean:sea_lantern", { drop = { max_items = 1, items = { - { items = {'mcl_ocean:prismarine_crystals 3'}, rarity = 2 }, - { items = {'mcl_ocean:prismarine_crystals 2'}} + { items = {"mcl_ocean:prismarine_crystals 3"}, rarity = 2 }, + { items = {"mcl_ocean:prismarine_crystals 2"}} } }, tiles = {{name="mcl_ocean_sea_lantern.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.25}}}, @@ -89,37 +89,37 @@ minetest.register_craftitem("mcl_ocean:prismarine_shard", { -- Crafting minetest.register_craft({ - output = 'mcl_ocean:sea_lantern', + output = "mcl_ocean:sea_lantern", recipe = { - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_crystals', 'mcl_ocean:prismarine_shard'}, - {'mcl_ocean:prismarine_crystals', 'mcl_ocean:prismarine_crystals', 'mcl_ocean:prismarine_crystals'}, - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_crystals', 'mcl_ocean:prismarine_shard'}, + {"mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_crystals", "mcl_ocean:prismarine_shard"}, + {"mcl_ocean:prismarine_crystals", "mcl_ocean:prismarine_crystals", "mcl_ocean:prismarine_crystals"}, + {"mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_crystals", "mcl_ocean:prismarine_shard"}, } }) minetest.register_craft({ - output = 'mcl_ocean:prismarine', + output = "mcl_ocean:prismarine", recipe = { - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, + {"mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_shard"}, + {"mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_shard"}, } }) minetest.register_craft({ - output = 'mcl_ocean:prismarine_brick', + output = "mcl_ocean:prismarine_brick", recipe = { - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, + {"mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_shard"}, + {"mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_shard"}, + {"mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_shard"}, } }) minetest.register_craft({ - output = 'mcl_ocean:prismarine_dark', + output = "mcl_ocean:prismarine_dark", recipe = { - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, - {'mcl_ocean:prismarine_shard', 'mcl_dye:black', 'mcl_ocean:prismarine_shard'}, - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, + {"mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_shard"}, + {"mcl_ocean:prismarine_shard", "mcl_dye:black", "mcl_ocean:prismarine_shard"}, + {"mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_shard"}, } }) diff --git a/mods/ITEMS/mcl_ocean/sea_pickle.lua b/mods/ITEMS/mcl_ocean/sea_pickle.lua index 067bb39a3..d215fd3b3 100644 --- a/mods/ITEMS/mcl_ocean/sea_pickle.lua +++ b/mods/ITEMS/mcl_ocean/sea_pickle.lua @@ -1,5 +1,6 @@ -local S = minetest.get_translator("mcl_ocean") -local mod_doc = minetest.get_modpath("doc") ~= nil +local S = minetest.get_translator(minetest.get_current_modname()) + +local mod_doc = minetest.get_modpath("doc") local function sea_pickle_on_place(itemstack, placer, pointed_thing) if pointed_thing.type ~= "node" or not placer then diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua index bd6400a32..5fd382775 100644 --- a/mods/ITEMS/mcl_ocean/seagrass.lua +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -1,5 +1,6 @@ -local S = minetest.get_translator("mcl_ocean") -local mod_doc = minetest.get_modpath("doc") ~= nil +local S = minetest.get_translator(minetest.get_current_modname()) + +local mod_doc = minetest.get_modpath("doc") -- List of supported surfaces for seagrass local surfaces = { diff --git a/mods/ITEMS/mcl_portals/init.lua b/mods/ITEMS/mcl_portals/init.lua index 080051ffa..972e93473 100644 --- a/mods/ITEMS/mcl_portals/init.lua +++ b/mods/ITEMS/mcl_portals/init.lua @@ -4,13 +4,15 @@ mcl_portals = { storage = minetest.get_mod_storage(), } +local modpath = minetest.get_modpath(minetest.get_current_modname()) + -- Nether portal: -- Obsidian frame, activated by flint and steel -dofile(minetest.get_modpath("mcl_portals").."/portal_nether.lua") +dofile(modpath.."/portal_nether.lua") -- End portal (W.I.P): -- Red nether brick block frame, activated by an eye of ender -dofile(minetest.get_modpath("mcl_portals").."/portal_end.lua") +dofile(modpath.."/portal_end.lua") -dofile(minetest.get_modpath("mcl_portals").."/portal_gateway.lua") +dofile(modpath.."/portal_gateway.lua") diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 5b402bdc0..085205cfd 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_portals") +local S = minetest.get_translator(minetest.get_current_modname()) local table = table local vector = vector @@ -10,7 +10,7 @@ local math = math --local mg_name = minetest.get_mapgen_setting("mg_name") -local destroy_portal = function(pos) +local function destroy_portal(pos) local neighbors = { { x=1, y=0, z=0 }, { x=-1, y=0, z=0 }, diff --git a/mods/ITEMS/mcl_portals/portal_gateway.lua b/mods/ITEMS/mcl_portals/portal_gateway.lua index c738da1a4..ca15a61d5 100644 --- a/mods/ITEMS/mcl_portals/portal_gateway.lua +++ b/mods/ITEMS/mcl_portals/portal_gateway.lua @@ -1,6 +1,8 @@ -local S = minetest.get_translator("mcl_portals") +local S = minetest.get_translator(minetest.get_current_modname()) local storage = mcl_portals.storage +local vector = vector + local gateway_positions = { {x = 96, y = -26925, z = 0}, {x = 91, y = -26925, z = 29}, @@ -24,9 +26,10 @@ local gateway_positions = { {x = 91, y = -26925, z = -29}, } +local path_gateway_portal = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_end_gateway_portal.mts" + local function spawn_gateway_portal(pos, dest_str) - local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_end_gateway_portal.mts" - return mcl_structures.place_schematic(vector.add(pos, vector.new(-1, -2, -1)), path, "0", nil, true, nil, dest_str and function() + return mcl_structures.place_schematic(vector.add(pos, vector.new(-1, -2, -1)), path_gateway_portal, "0", nil, true, nil, dest_str and function() minetest.get_meta(pos):set_string("mcl_portals:gateway_destination", dest_str) end) end diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index ec8e40d22..3f15a134d 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_portals") +local S = minetest.get_translator(minetest.get_current_modname()) local SCAN_2_MAP_CHUNKS = true -- slower but helps to find more suitable places @@ -210,7 +210,7 @@ local function destroy_nether_portal(pos, node) local nn, orientation = node.name, node.param2 local obsidian = nn == OBSIDIAN - local check_remove = function(pos, orientation) + local function check_remove(pos, orientation) local node = get_node(pos) if node and (node.name == PORTAL and (orientation == nil or (node.param2 == orientation))) then minetest.remove_node(pos) diff --git a/mods/ITEMS/mcl_potions/commands.lua b/mods/ITEMS/mcl_potions/commands.lua index ad1d65b7f..1fbf591d9 100644 --- a/mods/ITEMS/mcl_potions/commands.lua +++ b/mods/ITEMS/mcl_potions/commands.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_potions") +local S = minetest.get_translator(minetest.get_current_modname()) -- ░█████╗░██╗░░██╗░█████╗░████████╗  ░█████╗░░█████╗░███╗░░░███╗███╗░░░███╗░█████╗░███╗░░██╗██████╗░░██████╗ -- ██╔══██╗██║░░██║██╔══██╗╚══██╔══╝  ██╔══██╗██╔══██╗████╗░████║████╗░████║██╔══██╗████╗░██║██╔══██╗██╔════╝ diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 6cfa0dc50..36f45b01a 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -1,4 +1,7 @@ -local S = minetest.get_translator("mcl_potions") +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local S = minetest.get_translator(modname) + mcl_potions = {} -- duration effects of redstone are a factor of 8/3 @@ -16,8 +19,6 @@ mcl_potions.INV_FACTOR = 0.50 mcl_potions.SPLASH_FACTOR = 0.75 mcl_potions.LINGERING_FACTOR = 0.25 - -local modpath = minetest.get_modpath("mcl_potions") dofile(modpath .. "/functions.lua") dofile(modpath .. "/commands.lua") dofile(modpath .. "/splash.lua") @@ -143,7 +144,7 @@ minetest.register_craft( { -- Template function for creating images of filled potions -- - colorstring must be a ColorString of form “#RRGGBB”, e.g. “#0000FF” for blue. -- - opacity is optional opacity from 0-255 (default: 127) -local potion_image = function(colorstring, opacity) +local function potion_image(colorstring, opacity) if not opacity then opacity = 127 end @@ -271,7 +272,7 @@ minetest.register_craftitem("mcl_potions:river_water", { }) -- Hurt mobs -local water_splash = function(obj, damage) +local function water_splash(obj, damage) if not obj then return end @@ -314,9 +315,9 @@ minetest.register_craftitem("mcl_potions:speckled_melon", { minetest.register_craft({ output = "mcl_potions:speckled_melon", recipe = { - {'mcl_core:gold_nugget', 'mcl_core:gold_nugget', 'mcl_core:gold_nugget'}, - {'mcl_core:gold_nugget', 'mcl_farming:melon_item', 'mcl_core:gold_nugget'}, - {'mcl_core:gold_nugget', 'mcl_core:gold_nugget', 'mcl_core:gold_nugget'}, + {"mcl_core:gold_nugget", "mcl_core:gold_nugget", "mcl_core:gold_nugget"}, + {"mcl_core:gold_nugget", "mcl_farming:melon_item", "mcl_core:gold_nugget"}, + {"mcl_core:gold_nugget", "mcl_core:gold_nugget", "mcl_core:gold_nugget"}, } }) @@ -428,21 +429,20 @@ local mod_table = { -- Compare two ingredients for compatable alchemy function mcl_potions.get_alchemy(ingr, pot) - - if output_table[pot] ~= nil then + if output_table[pot] then local brew_table = output_table[pot] - if brew_table[ingr] ~= nil then + if brew_table[ingr] then return brew_table[ingr] end end - if mod_table[ingr] ~= nil then + if mod_table[ingr] then local brew_table = mod_table[ingr] - if brew_table[pot] ~= nil then + if brew_table[pot] then return brew_table[pot] end diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index f4f0e249d..d22dd4181 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -1,19 +1,16 @@ -local S = minetest.get_translator("mcl_potions") +local S = minetest.get_translator(minetest.get_current_modname()) -local lingering_image = function(colorstring, opacity) +local function lingering_image(colorstring, opacity) if not opacity then opacity = 127 end return "mcl_potions_splash_overlay.png^[colorize:"..colorstring..":"..tostring(opacity).."^mcl_potions_lingering_bottle.png" end - local lingering_effect_at = {} local function add_lingering_effect(pos, color, def, is_water, instant) - lingering_effect_at[pos] = {color = color, timer = 30, def = def, is_water = is_water} - end local function linger_particles(pos, d, texture, color) diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index b9c2aad24..3d89d1d40 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -1,7 +1,7 @@ -local S = minetest.get_translator("mcl_potions") +local S = minetest.get_translator(minetest.get_current_modname()) --local brewhelp = S("Try different combinations to create potions.") -local potion_image = function(colorstring, opacity) +local function potion_image(colorstring, opacity) if not opacity then opacity = 127 end diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index f986134d6..112b58754 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -1,7 +1,7 @@ -local S = minetest.get_translator("mcl_potions") +local S = minetest.get_translator(minetest.get_current_modname()) local GRAVITY = tonumber(minetest.settings:get("movement_gravity")) -local splash_image = function(colorstring, opacity) +local function splash_image(colorstring, opacity) if not opacity then opacity = 127 end @@ -10,7 +10,6 @@ end function mcl_potions.register_splash(name, descr, color, def) - local id = "mcl_potions:"..name.."_splash" local longdesc = def.longdesc if not def.no_effect then diff --git a/mods/ITEMS/mcl_potions/tipped_arrow.lua b/mods/ITEMS/mcl_potions/tipped_arrow.lua index abeae8106..3991b2773 100644 --- a/mods/ITEMS/mcl_potions/tipped_arrow.lua +++ b/mods/ITEMS/mcl_potions/tipped_arrow.lua @@ -1,4 +1,7 @@ -local S = minetest.get_translator("mcl_potions") +local S = minetest.get_translator(minetest.get_current_modname()) + +local math = math + -- Time in seconds after which a stuck arrow is deleted local ARROW_TIMEOUT = 60 -- Time after which stuck arrow is rechecked for being stuck @@ -8,7 +11,7 @@ local STUCK_RECHECK_TIME = 5 local YAW_OFFSET = -math.pi/2 -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) @@ -121,7 +124,7 @@ function mcl_potions.register_arrow(name, desc, color, def) } -- Destroy arrow entity self at pos and drops it as an item - local spawn_item = function(self, pos) + local function spawn_item(self, pos) if not minetest.is_creative_enabled("") then local item = minetest.add_item(pos, "mcl_potions:"..name.."_arrow") item:set_velocity({x=0, y=0, z=0}) @@ -130,7 +133,7 @@ function mcl_potions.register_arrow(name, desc, color, def) self.object:remove() end - ARROW_ENTITY.on_step = function(self, dtime) + function ARROW_ENTITY.on_step(self, dtime) local pos = self.object:get_pos() local dpos = table.copy(pos) -- digital pos dpos = vector.round(dpos) @@ -215,7 +218,7 @@ function mcl_potions.register_arrow(name, desc, color, def) -- Arrows can only damage players and mobs if obj ~= self._shooter and obj:is_player() then ok = true - elseif obj:get_luaentity() ~= nil then + elseif obj:get_luaentity() then if obj ~= self._shooter and obj:get_luaentity()._cmi_is_mob then ok = true end @@ -234,7 +237,7 @@ function mcl_potions.register_arrow(name, desc, color, def) end -- If an attackable object was found, we will damage the closest one only - if closest_object ~= nil then + if closest_object then local obj = closest_object local is_player = obj:is_player() local lua = obj:get_luaentity() @@ -386,13 +389,13 @@ function mcl_potions.register_arrow(name, desc, color, def) -- Force recheck of stuck arrows when punched. -- Otherwise, punching has no effect. - ARROW_ENTITY.on_punch = function(self) + function ARROW_ENTITY.on_punch(self) if self._stuck then self._stuckrechecktimer = STUCK_RECHECK_TIME end end - ARROW_ENTITY.get_staticdata = function(self) + function ARROW_ENTITY.get_staticdata(self) local out = { lastpos = self._lastpos, startpos = self._startpos, @@ -413,7 +416,7 @@ function mcl_potions.register_arrow(name, desc, color, def) return minetest.serialize(out) end - ARROW_ENTITY.on_activate = function(self, staticdata, dtime_s) + function ARROW_ENTITY.on_activate(self, staticdata, dtime_s) local data = minetest.deserialize(staticdata) if data then self._stuck = data.stuck @@ -451,20 +454,18 @@ function mcl_potions.register_arrow(name, desc, color, def) minetest.register_entity("mcl_potions:"..name.."_arrow_entity", ARROW_ENTITY) if minetest.get_modpath("mcl_bows") then - minetest.register_craft({ - output = 'mcl_potions:'..name..'_arrow 8', + output = "mcl_potions:"..name.."_arrow 8", recipe = { - {'mcl_bows:arrow','mcl_bows:arrow','mcl_bows:arrow'}, - {'mcl_bows:arrow','mcl_potions:'..name..'_lingering','mcl_bows:arrow'}, - {'mcl_bows:arrow','mcl_bows:arrow','mcl_bows:arrow'} + {"mcl_bows:arrow","mcl_bows:arrow","mcl_bows:arrow"}, + {"mcl_bows:arrow","mcl_potions:"..name.."_lingering","mcl_bows:arrow"}, + {"mcl_bows:arrow","mcl_bows:arrow","mcl_bows:arrow"} } }) end - if minetest.get_modpath("doc_identifier") ~= nil then + if minetest.get_modpath("doc_identifier") then doc.sub.identifier.register_object("mcl_bows:arrow_entity", "craftitems", "mcl_bows:arrow") end - end diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index be9db2fee..b6bfb3fe8 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -1,6 +1,10 @@ -local S = minetest.get_translator("mcl_signs") +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local S = minetest.get_translator(modname) local F = minetest.formspec_escape +local table = table + -- Load the characters map (characters.txt) --[[ File format of characters.txt: It's an UTF-8 encoded text file that contains metadata for all supported characters. It contains a sequence of info blocks, one for each character. Each info block is made out of 3 lines: @@ -13,7 +17,7 @@ After line 3, another info block may follow. This repeats until the end of the f All character files must be 5 or 6 pixels wide (5 pixels are preferred) ]] -local chars_file = io.open(minetest.get_modpath("mcl_signs").."/characters.txt", "r") +local chars_file = io.open(modpath.."/characters.txt", "r") -- FIXME: Support more characters (many characters are missing). Currently ASCII and Latin-1 Supplement are supported. local charmap = {} if not chars_file then @@ -46,7 +50,7 @@ local function round(num, idp) return math.floor(num * mult + 0.5) / mult end -local string_to_array = function(str) +local function string_to_array(str) local tab = {} for i=1,string.len(str) do table.insert(tab, string.sub(str, i,i)) @@ -54,7 +58,7 @@ local string_to_array = function(str) return tab end -local string_to_line_array = function(str) +local function string_to_line_array(str) local tab = {} local current = 1 local linechar = 1 @@ -73,7 +77,7 @@ local string_to_line_array = function(str) return tab end -local create_lines = function(text) +local function create_lines(text) local line_num = 1 local tab = {} for _, line in ipairs(string_to_line_array(text)) do @@ -86,7 +90,7 @@ local create_lines = function(text) return tab end -local generate_line = function(s, ypos) +local function generate_line(s, ypos) local i = 1 local parsed = {} local width = 0 @@ -95,10 +99,10 @@ local generate_line = function(s, ypos) while chars < LINE_LENGTH and i <= #s do local file -- Get and render character - if charmap[s:sub(i, i)] ~= nil then + if charmap[s:sub(i, i)] then file = charmap[s:sub(i, i)] i = i + 1 - elseif i < #s and charmap[s:sub(i, i + 1)] ~= nil then + elseif i < #s and charmap[s:sub(i, i + 1)] then file = charmap[s:sub(i, i + 1)] i = i + 2 else @@ -108,7 +112,7 @@ local generate_line = function(s, ypos) i = i + 1 minetest.log("verbose", "[mcl_signs] Unknown symbol in '"..s.."' at "..i) end - if file ~= nil then + if file then width = width + printed_char_width table.insert(parsed, file) chars = chars + 1 @@ -125,7 +129,7 @@ local generate_line = function(s, ypos) return texture end -local generate_texture = function(lines, signnodename) +local function generate_texture(lines, signnodename) local texture = "[combine:"..SIGN_WIDTH.."x"..SIGN_WIDTH local ypos if signnodename == "mcl_signs:wall_sign" then @@ -152,6 +156,7 @@ local signtext_info_wall = { local signtext_info_standing = {} local m = -1/16 + 1/64 + for rot=0, 15 do local yaw = math.pi*2 - (((math.pi*2) / 16) * rot) local delta = vector.multiply(minetest.yaw_to_dir(yaw), m) @@ -187,7 +192,7 @@ end local sign_groups = {handy=1,axey=1, deco_block=1, material_wood=1, attached_node=1, dig_by_piston=1, flammable=-1} -local destruct_sign = function(pos) +local function destruct_sign(pos) local objects = minetest.get_objects_inside_radius(pos, 0.5) for _, v in ipairs(objects) do local ent = v:get_luaentity() @@ -203,7 +208,7 @@ local destruct_sign = function(pos) end end -local update_sign = function(pos, fields, sender, force_remove) +local function update_sign(pos, fields, sender, force_remove) local meta = minetest.get_meta(pos) if not meta then return @@ -256,7 +261,7 @@ local update_sign = function(pos, fields, sender, force_remove) text_entity:set_yaw(sign_info.yaw) end -local show_formspec = function(player, pos) +local function show_formspec(player, pos) minetest.show_formspec( player:get_player_name(), "mcl_signs:set_text_"..pos.x.."_"..pos.y.."_"..pos.z, @@ -518,7 +523,7 @@ minetest.register_entity("mcl_signs:text", { _signnodename = nil, -- node name of sign node to which the text belongs on_activate = function(self, staticdata) - if staticdata ~= nil and staticdata ~= "" then + if staticdata and staticdata ~= "" then local des = minetest.deserialize(staticdata) if des then self._signnodename = des._signnodename @@ -545,11 +550,11 @@ minetest.register_craft({ if minetest.get_modpath("mcl_core") then minetest.register_craft({ - output = 'mcl_signs:wall_sign 3', + output = "mcl_signs:wall_sign 3", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, - {'', 'mcl_core:stick', ''}, + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, + {"", "mcl_core:stick", ""}, } }) end diff --git a/mods/ITEMS/mcl_sponges/init.lua b/mods/ITEMS/mcl_sponges/init.lua index 147db6cc5..a1998ecb0 100644 --- a/mods/ITEMS/mcl_sponges/init.lua +++ b/mods/ITEMS/mcl_sponges/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_sponges") +local S = minetest.get_translator(minetest.get_current_modname()) local absorb = function(pos) local change = false @@ -73,7 +73,7 @@ minetest.register_node("mcl_sponges:sponge", { on_water = true end local water_found = minetest.find_node_near(pos, 1, "group:water") - if water_found ~= nil then + if water_found then on_water = true end if on_water then diff --git a/mods/ITEMS/mcl_stairs/api.lua b/mods/ITEMS/mcl_stairs/api.lua index cca54226f..34afb018e 100644 --- a/mods/ITEMS/mcl_stairs/api.lua +++ b/mods/ITEMS/mcl_stairs/api.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_stairs") +local S = minetest.get_translator(minetest.get_current_modname()) -- Core mcl_stairs API @@ -155,7 +155,7 @@ function mcl_stairs.register_stair(subname, recipeitem, groups, images, descript if recipeitem then minetest.register_craft({ - output = 'mcl_stairs:stair_' .. subname .. ' 4', + output = "mcl_stairs:stair_" .. subname .. " 4", recipe = { {recipeitem, "", ""}, {recipeitem, recipeitem, ""}, @@ -165,7 +165,7 @@ function mcl_stairs.register_stair(subname, recipeitem, groups, images, descript -- Flipped recipe minetest.register_craft({ - output = 'mcl_stairs:stair_' .. subname .. ' 4', + output = "mcl_stairs:stair_" .. subname .. " 4", recipe = { {"", "", recipeitem}, {"", recipeitem, recipeitem}, @@ -297,7 +297,7 @@ function mcl_stairs.register_slab(subname, recipeitem, groups, images, descripti topdef._doc_items_usagehelp = nil topdef.drop = lower_slab topdef._mcl_other_slab_half = lower_slab - topdef.on_rotate = function(pos, node, user, mode, param2) + function topdef.on_rotate(pos, node, user, mode, param2) -- Flip slab if mode == screwdriver.ROTATE_AXIS then node.name = lower_slab diff --git a/mods/ITEMS/mcl_stairs/cornerstair.lua b/mods/ITEMS/mcl_stairs/cornerstair.lua index 2d5f214e1..ae3eb4ea3 100644 --- a/mods/ITEMS/mcl_stairs/cornerstair.lua +++ b/mods/ITEMS/mcl_stairs/cornerstair.lua @@ -5,7 +5,7 @@ mcl_stairs.cornerstair = {} -local get_stair_param = function(node) +local function get_stair_param(node) local stair = minetest.get_item_group(node.name, "stair") if stair == 1 then return node.param2 @@ -24,7 +24,7 @@ local get_stair_param = function(node) end end -local get_stair_from_param = function(param, stairs) +local function get_stair_from_param(param, stairs) if param < 12 then if param < 4 then return {name = stairs[1], param2 = param} @@ -44,7 +44,7 @@ local get_stair_from_param = function(param, stairs) end end -local stair_param_to_connect = function(param, ceiling) +local function stair_param_to_connect(param, ceiling) local out = {false, false, false, false, false, false, false, false} if not ceiling then if param == 0 then @@ -126,7 +126,7 @@ local stair_param_to_connect = function(param, ceiling) return out end -local stair_connect_to_param = function(connect, ceiling) +local function stair_connect_to_param(connect, ceiling) local param if not ceiling then if connect[3] and connect[8] then @@ -240,7 +240,7 @@ function mcl_stairs.cornerstair.add(name, stairtiles) inner_groups.stair = 3 inner_groups.not_in_craft_guide = 1 local drop = node_def.drop or name - local after_dig_node = function(pos, oldnode) + local function after_dig_node(pos, oldnode) local param = get_stair_param(oldnode) local ceiling if param < 12 then @@ -273,7 +273,7 @@ function mcl_stairs.cornerstair.add(name, stairtiles) end end end - local swap_stair = function(index, n1, n2) + local function swap_stair(index, n1, n2) local connect = {false, false, false, false, false, false, false, false} connect[n1] = true connect[n2] = true @@ -425,13 +425,13 @@ function mcl_stairs.cornerstair.add(name, stairtiles) end end end - local reset_node = function(n1, n2) + local function reset_node(n1, n2) local connect = {false, false, false, false, false, false, false, false} connect[n1] = true connect[n2] = true node = get_stair_from_param(stair_connect_to_param(connect, ceiling), t[5].stairs) end - local swap_stair = function(index, n1, n2) + local function swap_stair(index, n1, n2) local connect = {false, false, false, false, false, false, false, false} connect[n1] = true connect[n2] = true diff --git a/mods/ITEMS/mcl_stairs/crafting.lua b/mods/ITEMS/mcl_stairs/crafting.lua index 702a78068..f31237eed 100644 --- a/mods/ITEMS/mcl_stairs/crafting.lua +++ b/mods/ITEMS/mcl_stairs/crafting.lua @@ -1,40 +1,40 @@ minetest.register_craft({ - output = 'mcl_core:sandstonecarved', + output = "mcl_core:sandstonecarved", recipe = { - {'mcl_stairs:slab_sandstone'}, - {'mcl_stairs:slab_sandstone'} + {"mcl_stairs:slab_sandstone"}, + {"mcl_stairs:slab_sandstone"} } }) minetest.register_craft({ - output = 'mcl_core:redsandstonecarved', + output = "mcl_core:redsandstonecarved", recipe = { - {'mcl_stairs:slab_redsandstone'}, - {'mcl_stairs:slab_redsandstone'} + {"mcl_stairs:slab_redsandstone"}, + {"mcl_stairs:slab_redsandstone"} } }) minetest.register_craft({ - output = 'mcl_core:stonebrickcarved', + output = "mcl_core:stonebrickcarved", recipe = { - {'mcl_stairs:slab_stonebrick'}, - {'mcl_stairs:slab_stonebrick'} + {"mcl_stairs:slab_stonebrick"}, + {"mcl_stairs:slab_stonebrick"} } }) minetest.register_craft({ - output = 'mcl_end:purpur_pillar', + output = "mcl_end:purpur_pillar", recipe = { - {'mcl_stairs:slab_purpur_block'}, - {'mcl_stairs:slab_purpur_block'} + {"mcl_stairs:slab_purpur_block"}, + {"mcl_stairs:slab_purpur_block"} } }) minetest.register_craft({ - output = 'mcl_nether:quartz_chiseled 2', + output = "mcl_nether:quartz_chiseled 2", recipe = { - {'mcl_stairs:slab_quartzblock'}, - {'mcl_stairs:slab_quartzblock'}, + {"mcl_stairs:slab_quartzblock"}, + {"mcl_stairs:slab_quartzblock"}, } }) diff --git a/mods/ITEMS/mcl_stairs/init.lua b/mods/ITEMS/mcl_stairs/init.lua index a5ca820bf..92f0640b3 100644 --- a/mods/ITEMS/mcl_stairs/init.lua +++ b/mods/ITEMS/mcl_stairs/init.lua @@ -7,8 +7,10 @@ mcl_stairs = {} -- Load other files -dofile(minetest.get_modpath("mcl_stairs").."/api.lua") -dofile(minetest.get_modpath("mcl_stairs").."/cornerstair.lua") -dofile(minetest.get_modpath("mcl_stairs").."/register.lua") -dofile(minetest.get_modpath("mcl_stairs").."/crafting.lua") -dofile(minetest.get_modpath("mcl_stairs").."/alias.lua") +local modpath = minetest.get_modpath(minetest.get_current_modname()) + +dofile(modpath.."/api.lua") +dofile(modpath.."/cornerstair.lua") +dofile(modpath.."/register.lua") +dofile(modpath.."/crafting.lua") +dofile(modpath.."/alias.lua") diff --git a/mods/ITEMS/mcl_stairs/register.lua b/mods/ITEMS/mcl_stairs/register.lua index 565f5409b..5de380585 100644 --- a/mods/ITEMS/mcl_stairs/register.lua +++ b/mods/ITEMS/mcl_stairs/register.lua @@ -3,7 +3,7 @@ -- slabs actually take slightly longer to be dug than their stair counterparts. -- Note sure if it is a good idea to preserve this oddity. -local S = minetest.get_translator("mcl_stairs") +local S = minetest.get_translator(minetest.get_current_modname()) local woods = { { "wood", "default_wood.png", S("Oak Wood Stairs"), S("Oak Wood Slab"), S("Double Oak Wood Slab") }, diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index 2d57744d0..c468946dd 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -37,7 +37,7 @@ end -- Throw item function mcl_throwing.get_player_throw_function(entity_name, velocity) - local func = function(item, player, pointed_thing) + local function func(item, player, pointed_thing) local playerpos = player:get_pos() local dir = player:get_look_dir() mcl_throwing.throw(item, {x=playerpos.x, y=playerpos.y+1.5, z=playerpos.z}, dir, velocity, player:get_player_name()) diff --git a/mods/ITEMS/mcl_throwing/register.lua b/mods/ITEMS/mcl_throwing/register.lua index c2af9717f..ec11f86c7 100644 --- a/mods/ITEMS/mcl_throwing/register.lua +++ b/mods/ITEMS/mcl_throwing/register.lua @@ -1,5 +1,8 @@ local S = minetest.get_translator(minetest.get_current_modname()) +local math = math +local vector = vector + -- The snowball entity local snowball_ENTITY={ physical = false, @@ -15,6 +18,7 @@ local snowball_ENTITY={ _lastpos={}, } + local egg_ENTITY={ physical = false, timer=0, @@ -29,6 +33,7 @@ local egg_ENTITY={ _lastpos={}, } + -- Ender pearl entity local pearl_ENTITY={ physical = false, @@ -45,7 +50,7 @@ local pearl_ENTITY={ _thrower = nil, -- Player ObjectRef of the player who threw the ender pearl } -local check_object_hit = function(self, pos, dmg) +local function check_object_hit(self, pos, dmg) for _,object in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do local entity = object:get_luaentity() @@ -70,7 +75,7 @@ local check_object_hit = function(self, pos, dmg) return false end -local snowball_particles = function(pos, vel) +local function snowball_particles(pos, vel) local vel = vector.normalize(vector.multiply(vel, -1)) minetest.add_particlespawner({ amount = 20, @@ -93,14 +98,13 @@ local snowball_particles = function(pos, vel) end -- Snowball on_step()--> called when snowball is moving. -local snowball_on_step = function(self, dtime) - self.timer=self.timer+dtime +local function snowball_on_step(self, dtime) + self.timer = self.timer + dtime local pos = self.object:get_pos() local vel = self.object:get_velocity() local node = minetest.get_node(pos) local def = minetest.registered_nodes[node.name] - -- Destroy when hitting a solid node if self._lastpos.x~=nil then if (def and def.walkable) or not def then @@ -110,33 +114,31 @@ local snowball_on_step = function(self, dtime) return end end - if check_object_hit(self, pos, {snowball_vulnerable = 3}) then minetest.sound_play("mcl_throwing_snowball_impact_soft", { pos = pos, max_hear_distance=16, gain=0.7 }, true) snowball_particles(pos, vel) self.object:remove() return end - self._lastpos={x=pos.x, y=pos.y, z=pos.z} -- Set _lastpos-->Node will be added at last pos outside the node end -- Movement function of egg -local egg_on_step = function(self, dtime) - self.timer=self.timer+dtime +local function egg_on_step(self, dtime) + self.timer = self.timer + dtime local pos = self.object:get_pos() local node = minetest.get_node(pos) local def = minetest.registered_nodes[node.name] -- Destroy when hitting a solid node with chance to spawn chicks - if self._lastpos.x~=nil then + if self._lastpos.x then if (def and def.walkable) or not def then -- 1/8 chance to spawn a chick -- FIXME: Chicks have a quite good chance to spawn in walls local r = math.random(1,8) -- Turn given object into a child - local make_child= function(object) + local function make_child(object) local ent = object:get_luaentity() object:set_properties({ visual_size = { x = ent.base_size.x/2, y = ent.base_size.y/2 }, @@ -185,8 +187,8 @@ local egg_on_step = function(self, dtime) end -- Movement function of ender pearl -local pearl_on_step = function(self, dtime) - self.timer=self.timer+dtime +local function pearl_on_step(self, dtime) + self.timer = self.timer + dtime local pos = self.object:get_pos() pos.y = math.floor(pos.y) local node = minetest.get_node(pos) diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index 40455f8d0..bf7b52385 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_tnt") +local S = minetest.get_translator(minetest.get_current_modname()) local tnt_griefing = minetest.settings:get_bool("mcl_tnt_griefing", true) local function spawn_tnt(pos, entname) @@ -9,7 +9,8 @@ local function spawn_tnt(pos, entname) end tnt = {} -tnt.ignite = function(pos) + +function tnt.ignite(pos) minetest.remove_node(pos) local e = spawn_tnt(pos, "mcl_tnt:tnt") minetest.check_for_falling(pos) @@ -18,7 +19,7 @@ end -- Add smoke particle of entity at pos. -- Intended to be called every step -tnt.smoke_step = function(pos) +function tnt.smoke_step(pos) minetest.add_particle({ pos = {x=pos.x,y=pos.y+0.5,z=pos.z}, velocity = vector.new(math.random() * 0.2 - 0.1, 1.0 + math.random(), math.random() * 0.2 - 0.1), @@ -189,9 +190,9 @@ if minetest.get_modpath("mcl_mobitems") then minetest.register_craft({ output = "mcl_tnt:tnt", recipe = { - {'mcl_mobitems:gunpowder','group:sand','mcl_mobitems:gunpowder'}, - {'group:sand','mcl_mobitems:gunpowder','group:sand'}, - {'mcl_mobitems:gunpowder','group:sand','mcl_mobitems:gunpowder'} + {"mcl_mobitems:gunpowder", "group:sand", "mcl_mobitems:gunpowder"}, + {"group:sand", "mcl_mobitems:gunpowder", "group:sand"}, + {"mcl_mobitems:gunpowder", "group:sand", "mcl_mobitems:gunpowder"} } }) end diff --git a/mods/ITEMS/mcl_tools/crafting.lua b/mods/ITEMS/mcl_tools/crafting.lua index 00d378d7c..636cb6660 100644 --- a/mods/ITEMS/mcl_tools/crafting.lua +++ b/mods/ITEMS/mcl_tools/crafting.lua @@ -1,235 +1,235 @@ minetest.register_craft({ - output = 'mcl_tools:pick_wood', + output = "mcl_tools:pick_wood", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'', 'mcl_core:stick', ''}, - {'', 'mcl_core:stick', ''}, + {"group:wood", "group:wood", "group:wood"}, + {"", "mcl_core:stick", ""}, + {"", "mcl_core:stick", ""}, } }) minetest.register_craft({ - output = 'mcl_tools:pick_stone', + output = "mcl_tools:pick_stone", recipe = { - {'mcl_core:cobble', 'mcl_core:cobble', 'mcl_core:cobble'}, - {'', 'mcl_core:stick', ''}, - {'', 'mcl_core:stick', ''}, + {"mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble"}, + {"", "mcl_core:stick", ""}, + {"", "mcl_core:stick", ""}, } }) minetest.register_craft({ - output = 'mcl_tools:pick_iron', + output = "mcl_tools:pick_iron", recipe = { - {'mcl_core:iron_ingot', 'mcl_core:iron_ingot', 'mcl_core:iron_ingot'}, - {'', 'mcl_core:stick', ''}, - {'', 'mcl_core:stick', ''}, + {"mcl_core:iron_ingot", "mcl_core:iron_ingot", "mcl_core:iron_ingot"}, + {"", "mcl_core:stick", ""}, + {"", "mcl_core:stick", ""}, } }) minetest.register_craft({ - output = 'mcl_tools:pick_gold', + output = "mcl_tools:pick_gold", recipe = { - {'mcl_core:gold_ingot', 'mcl_core:gold_ingot', 'mcl_core:gold_ingot'}, - {'', 'mcl_core:stick', ''}, - {'', 'mcl_core:stick', ''}, + {"mcl_core:gold_ingot", "mcl_core:gold_ingot", "mcl_core:gold_ingot"}, + {"", "mcl_core:stick", ""}, + {"", "mcl_core:stick", ""}, } }) minetest.register_craft({ - output = 'mcl_tools:pick_diamond', + output = "mcl_tools:pick_diamond", recipe = { - {'mcl_core:diamond', 'mcl_core:diamond', 'mcl_core:diamond'}, - {'', 'mcl_core:stick', ''}, - {'', 'mcl_core:stick', ''}, + {"mcl_core:diamond", "mcl_core:diamond", "mcl_core:diamond"}, + {"", "mcl_core:stick", ""}, + {"", "mcl_core:stick", ""}, } }) minetest.register_craft({ - output = 'mcl_tools:shovel_wood', + output = "mcl_tools:shovel_wood", recipe = { - {'group:wood'}, - {'mcl_core:stick'}, - {'mcl_core:stick'}, + {"group:wood"}, + {"mcl_core:stick"}, + {"mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:shovel_stone', + output = "mcl_tools:shovel_stone", recipe = { - {'mcl_core:cobble'}, - {'mcl_core:stick'}, - {'mcl_core:stick'}, + {"mcl_core:cobble"}, + {"mcl_core:stick"}, + {"mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:shovel_iron', + output = "mcl_tools:shovel_iron", recipe = { - {'mcl_core:iron_ingot'}, - {'mcl_core:stick'}, - {'mcl_core:stick'}, + {"mcl_core:iron_ingot"}, + {"mcl_core:stick"}, + {"mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:shovel_gold', + output = "mcl_tools:shovel_gold", recipe = { - {'mcl_core:gold_ingot'}, - {'mcl_core:stick'}, - {'mcl_core:stick'}, + {"mcl_core:gold_ingot"}, + {"mcl_core:stick"}, + {"mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:shovel_diamond', + output = "mcl_tools:shovel_diamond", recipe = { - {'mcl_core:diamond'}, - {'mcl_core:stick'}, - {'mcl_core:stick'}, + {"mcl_core:diamond"}, + {"mcl_core:stick"}, + {"mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:axe_wood', + output = "mcl_tools:axe_wood", recipe = { - {'group:wood', 'group:wood'}, - {'group:wood', 'mcl_core:stick'}, - {'', 'mcl_core:stick'}, + {"group:wood", "group:wood"}, + {"group:wood", "mcl_core:stick"}, + {"", "mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:axe_wood', + output = "mcl_tools:axe_wood", recipe = { - {'group:wood', 'group:wood'}, - {'mcl_core:stick', 'group:wood'}, - {'mcl_core:stick', ''}, + {"group:wood", "group:wood"}, + {"mcl_core:stick", "group:wood"}, + {"mcl_core:stick", ""}, } }) minetest.register_craft({ - output = 'mcl_tools:axe_stone', + output = "mcl_tools:axe_stone", recipe = { - {'mcl_core:cobble', 'mcl_core:cobble'}, - {'mcl_core:cobble', 'mcl_core:stick'}, - {'', 'mcl_core:stick'}, + {"mcl_core:cobble", "mcl_core:cobble"}, + {"mcl_core:cobble", "mcl_core:stick"}, + {"", "mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:axe_stone', + output = "mcl_tools:axe_stone", recipe = { - {'mcl_core:cobble', 'mcl_core:cobble'}, - {'mcl_core:stick', 'mcl_core:cobble'}, - {'mcl_core:stick', ''}, + {"mcl_core:cobble", "mcl_core:cobble"}, + {"mcl_core:stick", "mcl_core:cobble"}, + {"mcl_core:stick", ""}, } }) minetest.register_craft({ - output = 'mcl_tools:axe_iron', + output = "mcl_tools:axe_iron", recipe = { - {'mcl_core:iron_ingot', 'mcl_core:iron_ingot'}, - {'mcl_core:iron_ingot', 'mcl_core:stick'}, - {'', 'mcl_core:stick'}, + {"mcl_core:iron_ingot", "mcl_core:iron_ingot"}, + {"mcl_core:iron_ingot", "mcl_core:stick"}, + {"", "mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:axe_iron', + output = "mcl_tools:axe_iron", recipe = { - {'mcl_core:iron_ingot', 'mcl_core:iron_ingot'}, - {'mcl_core:stick', 'mcl_core:iron_ingot'}, - {'mcl_core:stick', ''}, + {"mcl_core:iron_ingot", "mcl_core:iron_ingot"}, + {"mcl_core:stick", "mcl_core:iron_ingot"}, + {"mcl_core:stick", ""}, } }) minetest.register_craft({ - output = 'mcl_tools:axe_gold', + output = "mcl_tools:axe_gold", recipe = { - {'mcl_core:gold_ingot', 'mcl_core:gold_ingot'}, - {'mcl_core:gold_ingot', 'mcl_core:stick'}, - {'', 'mcl_core:stick'}, + {"mcl_core:gold_ingot", "mcl_core:gold_ingot"}, + {"mcl_core:gold_ingot", "mcl_core:stick"}, + {"", "mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:axe_gold', + output = "mcl_tools:axe_gold", recipe = { - {'mcl_core:gold_ingot', 'mcl_core:gold_ingot'}, - {'mcl_core:stick', 'mcl_core:gold_ingot'}, - {'mcl_core:stick', ''}, + {"mcl_core:gold_ingot", "mcl_core:gold_ingot"}, + {"mcl_core:stick", "mcl_core:gold_ingot"}, + {"mcl_core:stick", ""}, } }) minetest.register_craft({ - output = 'mcl_tools:axe_diamond', + output = "mcl_tools:axe_diamond", recipe = { - {'mcl_core:diamond', 'mcl_core:diamond'}, - {'mcl_core:diamond', 'mcl_core:stick'}, - {'', 'mcl_core:stick'}, + {"mcl_core:diamond", "mcl_core:diamond"}, + {"mcl_core:diamond", "mcl_core:stick"}, + {"", "mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:axe_diamond', + output = "mcl_tools:axe_diamond", recipe = { - {'mcl_core:diamond', 'mcl_core:diamond'}, - {'mcl_core:stick', 'mcl_core:diamond'}, - {'mcl_core:stick', ''}, + {"mcl_core:diamond", "mcl_core:diamond"}, + {"mcl_core:stick", "mcl_core:diamond"}, + {"mcl_core:stick", ""}, } }) minetest.register_craft({ - output = 'mcl_tools:sword_wood', + output = "mcl_tools:sword_wood", recipe = { - {'group:wood'}, - {'group:wood'}, - {'mcl_core:stick'}, + {"group:wood"}, + {"group:wood"}, + {"mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:sword_stone', + output = "mcl_tools:sword_stone", recipe = { - {'mcl_core:cobble'}, - {'mcl_core:cobble'}, - {'mcl_core:stick'}, + {"mcl_core:cobble"}, + {"mcl_core:cobble"}, + {"mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:sword_iron', + output = "mcl_tools:sword_iron", recipe = { - {'mcl_core:iron_ingot'}, - {'mcl_core:iron_ingot'}, - {'mcl_core:stick'}, + {"mcl_core:iron_ingot"}, + {"mcl_core:iron_ingot"}, + {"mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:sword_gold', + output = "mcl_tools:sword_gold", recipe = { - {'mcl_core:gold_ingot'}, - {'mcl_core:gold_ingot'}, - {'mcl_core:stick'}, + {"mcl_core:gold_ingot"}, + {"mcl_core:gold_ingot"}, + {"mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:sword_diamond', + output = "mcl_tools:sword_diamond", recipe = { - {'mcl_core:diamond'}, - {'mcl_core:diamond'}, - {'mcl_core:stick'}, + {"mcl_core:diamond"}, + {"mcl_core:diamond"}, + {"mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:shears', + output = "mcl_tools:shears", recipe = { - { 'mcl_core:iron_ingot', '' }, - { '', 'mcl_core:iron_ingot', }, + { "mcl_core:iron_ingot", "" }, + { "", "mcl_core:iron_ingot", }, } }) minetest.register_craft({ - output = 'mcl_tools:shears', + output = "mcl_tools:shears", recipe = { - { '', 'mcl_core:iron_ingot', }, - { 'mcl_core:iron_ingot', '' }, + { "", "mcl_core:iron_ingot" }, + { "mcl_core:iron_ingot", "" }, } }) diff --git a/mods/ITEMS/mcl_tools/init.lua b/mods/ITEMS/mcl_tools/init.lua index 809a49279..c05aeb2da 100644 --- a/mods/ITEMS/mcl_tools/init.lua +++ b/mods/ITEMS/mcl_tools/init.lua @@ -1,4 +1,6 @@ -local S = minetest.get_translator("mcl_tools") +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local S = minetest.get_translator(modname) -- mods/default/tools.lua @@ -175,7 +177,7 @@ minetest.register_tool("mcl_tools:pick_diamond", { }, }) -local make_grass_path = function(itemstack, placer, pointed_thing) +local function make_grass_path(itemstack, placer, pointed_thing) -- Use pointed node's on_rightclick function first, if present local node = minetest.get_node(pointed_thing.under) if placer and not placer:get_player_control().sneak then @@ -213,7 +215,7 @@ end local carve_pumpkin if minetest.get_modpath("mcl_farming") then - carve_pumpkin = function(itemstack, placer, pointed_thing) + function carve_pumpkin(itemstack, placer, pointed_thing) -- Use pointed node's on_rightclick function first, if present local node = minetest.get_node(pointed_thing.under) if placer and not placer:get_player_control().sneak then @@ -352,7 +354,7 @@ minetest.register_tool("mcl_tools:shovel_diamond", { }) -- Axes -local make_stripped_trunk = function(itemstack, placer, pointed_thing) +local function make_stripped_trunk(itemstack, placer, pointed_thing) if pointed_thing.type ~= "node" then return end local node = minetest.get_node(pointed_thing.under) @@ -610,5 +612,5 @@ minetest.register_tool("mcl_tools:shears", { }) -dofile(minetest.get_modpath("mcl_tools").."/crafting.lua") -dofile(minetest.get_modpath("mcl_tools").."/aliases.lua") +dofile(modpath.."/crafting.lua") +dofile(modpath.."/aliases.lua") diff --git a/mods/ITEMS/mcl_torches/api.lua b/mods/ITEMS/mcl_torches/api.lua index c98bda3d9..dab508795 100644 --- a/mods/ITEMS/mcl_torches/api.lua +++ b/mods/ITEMS/mcl_torches/api.lua @@ -9,7 +9,7 @@ local smoke_pdef = { maxrelpos = { x = 1/16, y = 0.06, z = 1/16 }, } -local spawn_flames_floor = function(pos) +local function spawn_flames_floor(pos) -- Flames mcl_particles.add_node_particlespawner(pos, { amount = 8, @@ -29,7 +29,7 @@ local spawn_flames_floor = function(pos) mcl_particles.spawn_smoke(pos, "torch", smoke_pdef) end -local spawn_flames_wall = function(pos) +local function spawn_flames_wall(pos) --local minrelpos, maxrelpos local node = minetest.get_node(pos) local dir = minetest.wallmounted_to_dir(node.param2) @@ -72,7 +72,7 @@ local spawn_flames_wall = function(pos) mcl_particles.spawn_smoke(pos, "torch", smoke_pdef) end -local remove_flames = function(pos) +local function remove_flames(pos) mcl_particles.delete_node_particlespawners(pos) end diff --git a/mods/ITEMS/mcl_torches/init.lua b/mods/ITEMS/mcl_torches/init.lua index 1102731c1..6b6ebcae9 100644 --- a/mods/ITEMS/mcl_torches/init.lua +++ b/mods/ITEMS/mcl_torches/init.lua @@ -1,6 +1,6 @@ mcl_torches = {} -local modpath = minetest.get_modpath("mcl_torches") +local modpath = minetest.get_modpath(minetest.get_current_modname()) dofile(modpath .. "/api.lua") dofile(modpath .. "/register.lua") diff --git a/mods/ITEMS/mcl_torches/register.lua b/mods/ITEMS/mcl_torches/register.lua index 4218889d9..f8c34e6b5 100644 --- a/mods/ITEMS/mcl_torches/register.lua +++ b/mods/ITEMS/mcl_torches/register.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_torches") +local S = minetest.get_translator(minetest.get_current_modname()) mcl_torches.register_torch({ name = "torch", diff --git a/mods/ITEMS/mcl_walls/init.lua b/mods/ITEMS/mcl_walls/init.lua index de1b1760f..14b512ffd 100644 --- a/mods/ITEMS/mcl_walls/init.lua +++ b/mods/ITEMS/mcl_walls/init.lua @@ -1,4 +1,6 @@ -local S = minetest.get_translator("mcl_walls") +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local S = minetest.get_translator(modname) mcl_walls = {} @@ -29,7 +31,7 @@ local function update_wall(pos) local colonpos = thisnode.name:find(":") local underscorepos local itemname, basename, modname - if colonpos ~= nil then + if colonpos then itemname = thisnode.name:sub(colonpos+1) modname = thisnode.name:sub(1, colonpos-1) end @@ -151,7 +153,7 @@ function mcl_walls.register_wall(nodename, description, source, tiles, inventory minetest.register_node(nodename.."_"..i, { collision_box = { - type = 'fixed', + type = "fixed", fixed = {-4/16, -0.5, -4/16, 4/16, 1, 4/16} }, drawtype = "nodebox", @@ -180,7 +182,7 @@ function mcl_walls.register_wall(nodename, description, source, tiles, inventory minetest.register_node(nodename.."_16", { drawtype = "nodebox", collision_box = { - type = 'fixed', + type = "fixed", fixed = {-4/16, -0.5, -4/16, 4/16, 1, 4/16} }, tiles = tiles, @@ -206,7 +208,7 @@ function mcl_walls.register_wall(nodename, description, source, tiles, inventory minetest.register_node(nodename.."_21", { drawtype = "nodebox", collision_box = { - type = 'fixed', + type = "fixed", fixed = {-4/16, -0.5, -4/16, 4/16, 1, 4/16} }, tiles = tiles, @@ -247,7 +249,7 @@ function mcl_walls.register_wall(nodename, description, source, tiles, inventory fixed = pillar }, collision_box = { - type = 'fixed', + type = "fixed", fixed = {-4/16, -0.5, -4/16, 4/16, 1, 4/16} }, collisionbox = {-0.2, 0, -0.2, 0.2, 1.4, 0.2}, @@ -267,7 +269,7 @@ function mcl_walls.register_wall(nodename, description, source, tiles, inventory end end -dofile(minetest.get_modpath("mcl_walls") .. "/register.lua") +dofile(modpath.."/register.lua") minetest.register_on_placenode(update_wall_global) minetest.register_on_dignode(update_wall_global) diff --git a/mods/ITEMS/mcl_walls/register.lua b/mods/ITEMS/mcl_walls/register.lua index 0ccefd62f..483af493e 100644 --- a/mods/ITEMS/mcl_walls/register.lua +++ b/mods/ITEMS/mcl_walls/register.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_walls") +local S = minetest.get_translator(minetest.get_current_modname()) mcl_walls.register_wall("mcl_walls:cobble", S("Cobblestone Wall"), "mcl_core:cobble", {"mcl_walls_cobble_wall_top.png", "default_cobble.png", "mcl_walls_cobble_wall_side.png"}) mcl_walls.register_wall("mcl_walls:mossycobble", S("Mossy Cobblestone Wall"), "mcl_core:mossycobble", {"mcl_walls_cobble_mossy_wall_top.png", "default_mossycobble.png", "mcl_walls_cobble_mossy_wall_side.png"}) diff --git a/mods/ITEMS/mcl_wool/init.lua b/mods/ITEMS/mcl_wool/init.lua index 22648efc9..8fb4f51ec 100644 --- a/mods/ITEMS/mcl_wool/init.lua +++ b/mods/ITEMS/mcl_wool/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_wool") +local S = minetest.get_translator(minetest.get_current_modname()) local mod_doc = minetest.get_modpath("doc") -- minetest/wool/init.lua @@ -99,13 +99,13 @@ for _, row in ipairs(wool.dyes) do -- Crafting from dye and white wool minetest.register_craft({ type = "shapeless", - output = 'mcl_wool:'..name, - recipe = {"mcl_dye:"..dye, 'mcl_wool:white'}, + output = "mcl_wool:"..name, + recipe = {"mcl_dye:"..dye, "mcl_wool:white"}, }) end minetest.register_craft({ - output = 'mcl_wool:'..name..'_carpet 3', - recipe = {{'mcl_wool:'..name, 'mcl_wool:'..name}}, + output = "mcl_wool:"..name.."_carpet 3", + recipe = {{"mcl_wool:"..name, "mcl_wool:"..name}}, }) end diff --git a/mods/ITEMS/mclx_core/init.lua b/mods/ITEMS/mclx_core/init.lua index bc17e0075..4bb40184a 100644 --- a/mods/ITEMS/mclx_core/init.lua +++ b/mods/ITEMS/mclx_core/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mclx_core") +local S = minetest.get_translator(minetest.get_current_modname()) -- Liquids: River Water diff --git a/mods/ITEMS/mclx_fences/init.lua b/mods/ITEMS/mclx_fences/init.lua index 08c3d91ac..e78c7ef7f 100644 --- a/mods/ITEMS/mclx_fences/init.lua +++ b/mods/ITEMS/mclx_fences/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mclx_fences") +local S = minetest.get_translator(minetest.get_current_modname()) -- Red Nether Brick Fence @@ -25,7 +25,7 @@ mcl_fences.register_fence_gate( -- Crafting minetest.register_craft({ - output = 'mclx_fences:red_nether_brick_fence 6', + output = "mclx_fences:red_nether_brick_fence 6", recipe = { {"mcl_nether:red_nether_brick", "mcl_nether:netherbrick", "mcl_nether:red_nether_brick"}, {"mcl_nether:red_nether_brick", "mcl_nether:netherbrick", "mcl_nether:red_nether_brick"}, @@ -33,14 +33,14 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'mclx_fences:red_nether_brick_fence_gate', + output = "mclx_fences:red_nether_brick_fence_gate", recipe = { {"mcl_nether:nether_wart_item", "mcl_nether:red_nether_brick", "mcl_nether:netherbrick"}, {"mcl_nether:netherbrick", "mcl_nether:red_nether_brick", "mcl_nether:nether_wart_item"}, } }) minetest.register_craft({ - output = 'mclx_fences:red_nether_brick_fence_gate', + output = "mclx_fences:red_nether_brick_fence_gate", recipe = { {"mcl_nether:netherbrick", "mcl_nether:red_nether_brick", "mcl_nether:nether_wart_item"}, {"mcl_nether:nether_wart_item", "mcl_nether:red_nether_brick", "mcl_nether:netherbrick"}, @@ -48,7 +48,7 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'mclx_fences:nether_brick_fence_gate 2', + output = "mclx_fences:nether_brick_fence_gate 2", recipe = { {"mcl_nether:netherbrick", "mcl_nether:nether_brick", "mcl_nether:netherbrick"}, {"mcl_nether:netherbrick", "mcl_nether:nether_brick", "mcl_nether:netherbrick"}, diff --git a/mods/ITEMS/mclx_stairs/init.lua b/mods/ITEMS/mclx_stairs/init.lua index 26ab5c4b5..effa87f13 100644 --- a/mods/ITEMS/mclx_stairs/init.lua +++ b/mods/ITEMS/mclx_stairs/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mclx_stairs") +local S = minetest.get_translator(minetest.get_current_modname()) local doc_mod = minetest.get_modpath("doc") diff --git a/mods/ITEMS/screwdriver/init.lua b/mods/ITEMS/screwdriver/init.lua index 942bccf38..baa4ff9c5 100644 --- a/mods/ITEMS/screwdriver/init.lua +++ b/mods/ITEMS/screwdriver/init.lua @@ -1,18 +1,21 @@ -local S = minetest.get_translator("screwdriver") +local S = minetest.get_translator(minetest.get_current_modname()) screwdriver = {} screwdriver.ROTATE_FACE = 1 screwdriver.ROTATE_AXIS = 2 -screwdriver.disallow = function(pos, node, user, mode, new_param2) + +function screwdriver.disallow(pos, node, user, mode, new_param2) return false end -screwdriver.rotate_simple = function(pos, node, user, mode, new_param2) + +function screwdriver.rotate_simple(pos, node, user, mode, new_param2) if mode ~= screwdriver.ROTATE_FACE then return false end end -screwdriver.rotate_3way = function(pos, node, user, mode, new_param2) + +function screwdriver.rotate_3way(pos, node, user, mode, new_param2) if mode == screwdriver.ROTATE_AXIS then if node.param2 == 0 then node.param2 = 6 @@ -71,7 +74,7 @@ local facedir_tbl = { }, } -screwdriver.rotate.facedir = function(pos, node, mode) +function screwdriver.rotate.facedir(pos, node, mode) local rotation = node.param2 % 32 -- get first 5 bits local other = node.param2 - rotation rotation = facedir_tbl[mode][rotation] or 0 @@ -82,10 +85,10 @@ screwdriver.rotate.colorfacedir = screwdriver.rotate.facedir local wallmounted_tbl = { [screwdriver.ROTATE_FACE] = {[2] = 5, [3] = 4, [4] = 2, [5] = 3, [1] = 0, [0] = 1}, - [screwdriver.ROTATE_AXIS] = {[2] = 5, [3] = 4, [4] = 2, [5] = 1, [1] = 0, [0] = 3} + [screwdriver.ROTATE_AXIS] = {[2] = 5, [3] = 4, [4] = 2, [5] = 1, [1] = 0, [0] = 3}, } -screwdriver.rotate.wallmounted = function(pos, node, mode) +function screwdriver.rotate.wallmounted(pos, node, mode) local rotation = node.param2 % 8 -- get first 3 bits local other = node.param2 - rotation rotation = wallmounted_tbl[mode][rotation] or 0 @@ -105,7 +108,7 @@ end screwdriver.rotate.colorwallmounted = screwdriver.rotate.wallmounted -- Handles rotation -screwdriver.handler = function(itemstack, user, pointed_thing, mode, uses) +function screwdriver.handler(itemstack, user, pointed_thing, mode, uses) if pointed_thing.type ~= "node" then return end diff --git a/mods/ITEMS/xpanes/init.lua b/mods/ITEMS/xpanes/init.lua index 472b3efdf..fe67934a1 100644 --- a/mods/ITEMS/xpanes/init.lua +++ b/mods/ITEMS/xpanes/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("xpanes") +local S = minetest.get_translator(minetest.get_current_modname()) local mod_doc = minetest.get_modpath("doc") local function is_pane(pos) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 9108b75c1..a630dba04 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -6,8 +6,12 @@ local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superfl local generate_fallen_logs = minetest.settings:get_bool("mcl_generate_fallen_logs", false) +local mod_mcl_structures = minetest.get_modpath("mcl_structures") +local mod_mcl_core = minetest.get_modpath("mcl_core") +local mod_mcl_mushrooms = minetest.get_modpath("mcl_mushrooms") + -- Jungle bush schematic. In PC/Java Edition it's Jungle Wood + Oak Leaves -local jungle_bush_schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_jungle_bush_oak_leaves.mts" +local jungle_bush_schematic = mod_mcl_core.."/schematics/mcl_core_jungle_bush_oak_leaves.mts" local deco_id_chorus_plant @@ -2307,7 +2311,7 @@ local function register_decorations() biomes = {"IcePlainsSpikes"}, y_min = 4, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_ice_spike_large.mts", + schematic = mod_mcl_structures.."/schematics/mcl_structures_ice_spike_large.mts", rotation = "random", flags = "place_center_x, place_center_z", }) @@ -2328,7 +2332,7 @@ local function register_decorations() biomes = {"IcePlainsSpikes"}, y_min = 4, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_ice_spike_small.mts", + schematic = mod_mcl_structures.."/schematics/mcl_structures_ice_spike_small.mts", rotation = "random", flags = "place_center_x, place_center_z", }) @@ -2351,7 +2355,7 @@ local function register_decorations() biomes = {"Forest"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_oak_large_"..i..".mts", + schematic = mod_mcl_core.."/schematics/mcl_core_oak_large_"..i..".mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2371,7 +2375,7 @@ local function register_decorations() biomes = {"ExtremeHills", "ExtremeHillsM", "ExtremeHills+", "ExtremeHills+_snowtop"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_oak_large_"..i..".mts", + schematic = mod_mcl_core.."/schematics/mcl_core_oak_large_"..i..".mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2392,7 +2396,7 @@ local function register_decorations() biomes = {"Forest"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2411,7 +2415,7 @@ local function register_decorations() biomes = {"FlowerForest"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2430,7 +2434,7 @@ local function register_decorations() biomes = {"ExtremeHills", "ExtremeHillsM", "ExtremeHills+", "ExtremeHills+_snowtop"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2450,7 +2454,7 @@ local function register_decorations() biomes = {"ExtremeHills+", "ExtremeHills+_snowtop"}, y_min = 50, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2469,7 +2473,7 @@ local function register_decorations() biomes = {"MesaPlateauF_grasstop"}, y_min = 30, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2488,7 +2492,7 @@ local function register_decorations() biomes = {"MesaPlateauFM_grasstop"}, y_min = 30, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2508,7 +2512,7 @@ local function register_decorations() biomes = {"IcePlains"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2520,7 +2524,7 @@ local function register_decorations() biomes = {"Jungle", "JungleM"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2532,7 +2536,7 @@ local function register_decorations() biomes = {"JungleEdge", "JungleEdgeM", "Savanna"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2554,7 +2558,7 @@ local function register_decorations() biomes = {"Forest"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_oak_balloon.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_oak_balloon.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2575,7 +2579,7 @@ local function register_decorations() biomes = {"Swampland", "Swampland_shore"}, y_min = 0, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_oak_swamp.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_oak_swamp.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2592,7 +2596,7 @@ local function register_decorations() biomes = {"Jungle"}, y_min = 4, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_jungle_tree_huge_"..i..".mts", + schematic = mod_mcl_core.."/schematics/mcl_core_jungle_tree_huge_"..i..".mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2604,7 +2608,7 @@ local function register_decorations() biomes = {"JungleM"}, y_min = 4, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_jungle_tree_huge_"..i..".mts", + schematic = mod_mcl_core.."/schematics/mcl_core_jungle_tree_huge_"..i..".mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2619,7 +2623,7 @@ local function register_decorations() biomes = {"Jungle"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_jungle_tree.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_jungle_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2631,7 +2635,7 @@ local function register_decorations() biomes = {"JungleEdge", "JungleEdgeM"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_jungle_tree.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_jungle_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2644,7 +2648,7 @@ local function register_decorations() biomes = {"JungleM"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_jungle_tree.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_jungle_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2669,7 +2673,7 @@ local function register_decorations() biomes = biomes, y_min = y, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/"..sprucename, + schematic = mod_mcl_core.."/schematics/"..sprucename, flags = "place_center_x, place_center_z", }) end @@ -2723,7 +2727,7 @@ local function register_decorations() biomes = {"Taiga", "ColdTaiga"}, y_min = 2, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_spruce_lollipop.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_spruce_lollipop.mts", flags = "place_center_x, place_center_z", }) @@ -2743,7 +2747,7 @@ local function register_decorations() biomes = {"Taiga", "ColdTaiga"}, y_min = 3, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_spruce_matchstick.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_spruce_matchstick.mts", flags = "place_center_x, place_center_z", }) @@ -2763,7 +2767,7 @@ local function register_decorations() biomes = {"IcePlains"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_spruce_5.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_spruce_5.mts", flags = "place_center_x, place_center_z", }) @@ -2777,7 +2781,7 @@ local function register_decorations() biomes = {"Savanna", "SavannaM"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_acacia_"..a..".mts", + schematic = mod_mcl_core.."/schematics/mcl_core_acacia_"..a..".mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2799,7 +2803,7 @@ local function register_decorations() biomes = {"BirchForest"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_birch.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_birch.mts", flags = "place_center_x, place_center_z", }) minetest.register_decoration({ @@ -2817,7 +2821,7 @@ local function register_decorations() biomes = {"BirchForestM"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_birch_tall.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_birch_tall.mts", flags = "place_center_x, place_center_z", }) @@ -2836,7 +2840,7 @@ local function register_decorations() biomes = {"Forest", "FlowerForest"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_birch.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_birch.mts", flags = "place_center_x, place_center_z", }) @@ -2856,7 +2860,7 @@ local function register_decorations() biomes = {"RoofedForest"}, y_min = 4, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_dark_oak.mts", + schematic = mod_mcl_core.."/schematics/mcl_core_dark_oak.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -2878,7 +2882,7 @@ local function register_decorations() biomes = { "RoofedForest" }, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_huge_brown.mts", + schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_huge_brown.mts", flags = "place_center_x, place_center_z", rotation = "0", }) @@ -2890,7 +2894,7 @@ local function register_decorations() biomes = { "RoofedForest" }, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_giant_brown.mts", + schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_giant_brown.mts", flags = "place_center_x, place_center_z", rotation = "0", }) @@ -2903,7 +2907,7 @@ local function register_decorations() biomes = { "MushroomIsland", "MushroomIslandShore" }, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_huge_brown.mts", + schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_huge_brown.mts", flags = "place_center_x, place_center_z", rotation = "0", }) @@ -2915,7 +2919,7 @@ local function register_decorations() biomes = { "MushroomIsland", "MushroomIslandShore" }, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_giant_brown.mts", + schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_giant_brown.mts", flags = "place_center_x, place_center_z", rotation = "0", }) @@ -2929,7 +2933,7 @@ local function register_decorations() biomes = { "RoofedForest" }, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_huge_red.mts", + schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_huge_red.mts", flags = "place_center_x, place_center_z", rotation = "0", }) @@ -2941,7 +2945,7 @@ local function register_decorations() biomes = { "RoofedForest" }, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_giant_red.mts", + schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_giant_red.mts", flags = "place_center_x, place_center_z", rotation = "0", }) @@ -2954,7 +2958,7 @@ local function register_decorations() biomes = { "MushroomIsland", "MushroomIslandShore" }, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_huge_red.mts", + schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_huge_red.mts", flags = "place_center_x, place_center_z", rotation = "0", }) @@ -2966,7 +2970,7 @@ local function register_decorations() biomes = { "MushroomIsland", "MushroomIslandShore" }, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_giant_red.mts", + schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_giant_red.mts", flags = "place_center_x, place_center_z", rotation = "0", }) @@ -2987,7 +2991,7 @@ local function register_decorations() biomes = {"MegaTaiga", "MegaSpruceTaiga"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_boulder.mts", + schematic = mod_mcl_structures.."/schematics/mcl_structures_boulder.mts", flags = "place_center_x, place_center_z", }) @@ -3007,7 +3011,7 @@ local function register_decorations() biomes = {"MegaTaiga", "MegaSpruceTaiga"}, y_min = 1, y_max = mcl_vars.mg_overworld_max, - schematic = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_boulder_small.mts", + schematic = mod_mcl_structures.."/schematics/mcl_structures_boulder_small.mts", flags = "place_center_x, place_center_z", }) diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index a6ceb4bf9..41bee508b 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -1599,7 +1599,7 @@ local function generate_tree_decorations(minp, maxp, seed, data, param2_data, ar if dir < 5 and data[p_pos] == c_air - and l ~= nil and l > 12 then + and l and l > 12 then local c = pr:next(1, 3) if c == 1 then data[p_pos] = c_cocoa_1 @@ -1736,7 +1736,7 @@ local function generate_underground_mushrooms(minp, maxp, seed) bpos = {x = stone[n].x, y = stone[n].y + 1, z = stone[n].z } local l = minetest.get_node_light(bpos, 0.5) - if bpos.y >= min and bpos.y <= max and l ~= nil and l <= 12 and pr_shroom:next(1,1000) < 4 then + if bpos.y >= min and bpos.y <= max and l and l <= 12 and pr_shroom:next(1,1000) < 4 then if pr_shroom:next(1,2) == 1 then minetest.set_node(bpos, {name = "mcl_mushrooms:mushroom_brown"}) else @@ -1799,7 +1799,7 @@ local function generate_nether_decorations(minp, maxp, seed) -- Note: Spawned *after* the fire because of light level checks special_deco(rack, function(bpos) local l = minetest.get_node_light(bpos, 0.5) - if bpos.y > mcl_vars.mg_lava_nether_max + 6 and l ~= nil and l <= 12 and pr_nether:next(1,1000) <= 4 then + if bpos.y > mcl_vars.mg_lava_nether_max + 6 and l and l <= 12 and pr_nether:next(1,1000) <= 4 then -- TODO: Make mushrooms appear in groups, use Perlin noise if pr_nether:next(1,2) == 1 then minetest.set_node(bpos, {name = "mcl_mushrooms:mushroom_brown"}) @@ -1890,11 +1890,9 @@ function mcl_mapgen_core.register_generator(id, lvm_function, node_function, pri } registered_generators[id] = new_record - table.sort( - registered_generators, - function(a, b) - return (a.i < b.i) or ((a.i == b.i) and (a.vf ~= nil) and (b.vf == nil)) - end) + table.sort(registered_generators, function(a, b) + return (a.i < b.i) or ((a.i == b.i) and a.vf and (b.vf == nil)) + end) end function mcl_mapgen_core.unregister_generator(id) diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index dfb7da24b..8efdd91b1 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -36,17 +36,17 @@ function mcl_structures.place_schematic(pos, schematic, rotation, replacements, end local p1 = {x=pos.x , y=pos.y , z=pos.z } local p2 = {x=pos.x+x-1, y=pos.y+s.size.y-1, z=pos.z+z-1} - minetest.log("verbose","[mcl_structures] size=" ..minetest.pos_to_string(s.size) .. ", rotation=" .. tostring(rotation) .. ", emerge from "..minetest.pos_to_string(p1) .. " to " .. minetest.pos_to_string(p2)) + minetest.log("verbose", "[mcl_structures] size=" ..minetest.pos_to_string(s.size) .. ", rotation=" .. tostring(rotation) .. ", emerge from "..minetest.pos_to_string(p1) .. " to " .. minetest.pos_to_string(p2)) local param = {pos=vector.new(pos), schematic=s, rotation=rotation, replacements=replacements, force_placement=force_placement, flags=flags, p1=p1, p2=p2, after_placement_callback = after_placement_callback, size=vector.new(s.size), pr=pr, callback_param=callback_param} minetest.emerge_area(p1, p2, ecb_place, param) end end function mcl_structures.get_struct(file) - local localfile = minetest.get_modpath("mcl_structures").."/schematics/"..file + local localfile = modpath.."/schematics/"..file local file, errorload = io.open(localfile, "rb") - if errorload ~= nil then - minetest.log("error", '[mcl_structures] Could not open this struct: ' .. localfile) + if errorload then + minetest.log("error", "[mcl_structures] Could not open this struct: "..localfile) return nil end @@ -290,17 +290,17 @@ local function hut_placement_callback(p1, p2, size, orientation, pr) end function mcl_structures.generate_witch_hut(pos, rotation, pr) - local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_witch_hut.mts" + local path = modpath.."/schematics/mcl_structures_witch_hut.mts" mcl_structures.place_schematic(pos, path, rotation, nil, true, nil, hut_placement_callback, pr) end function mcl_structures.generate_ice_spike_small(pos, rotation) - local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_ice_spike_small.mts" + local path = modpath.."/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 function mcl_structures.generate_ice_spike_large(pos, rotation) - local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_ice_spike_large.mts" + local path = modpath.."/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 @@ -318,22 +318,22 @@ function mcl_structures.generate_fossil(pos, rotation, pr) "mcl_structures_fossil_spine_4.mts", -- 8×5×13 } local r = pr:next(1, #fossils) - local path = minetest.get_modpath("mcl_structures").."/schematics/"..fossils[r] + local path = modpath.."/schematics/"..fossils[r] return mcl_structures.place_schematic(newpos, path, rotation or "random", nil, true) end function mcl_structures.generate_end_exit_portal(pos, rot) - local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_end_exit_portal.mts" + local path = modpath.."/schematics/mcl_structures_end_exit_portal.mts" return mcl_structures.place_schematic(pos, path, rot or "0", {["mcl_portals:portal_end"] = "air"}, true) end function mcl_structures.generate_end_exit_portal_open(pos, rot) - local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_end_exit_portal.mts" + local path = modpath.."/schematics/mcl_structures_end_exit_portal.mts" return mcl_structures.place_schematic(pos, path, rot or "0", nil, true) end function mcl_structures.generate_end_gateway_portal(pos, rot) - local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_end_gateway_portal.mts" + local path = modpath.."/schematics/mcl_structures_end_gateway_portal.mts" return mcl_structures.place_schematic(pos, path, rot or "0", nil, true) end @@ -367,7 +367,7 @@ local function shrine_placement_callback(p1, p2, size, rotation, pr) end -- 50% stonebrick (no change necessary) end - if bricktype ~= nil then + if bricktype then minetest.set_node(bricks[b], { name = bricktype }) end end @@ -420,7 +420,7 @@ function mcl_structures.generate_end_portal_shrine(pos, rotation, pr) --local size = {x=13, y=8, z=13} local newpos = { x = pos.x - offset.x, y = pos.y, z = pos.z - offset.z } - local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_end_portal_room_simple.mts" + local path = modpath.."/schematics/mcl_structures_end_portal_room_simple.mts" mcl_structures.place_schematic(newpos, path, rotation or "0", nil, true, nil, shrine_placement_callback, pr) end @@ -500,7 +500,7 @@ end 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 path = modpath.."/schematics/mcl_structures_desert_temple.mts" local newpos = {x=pos.x,y=pos.y-12,z=pos.z} --local size = {x=22, y=24, z=22} if newpos == nil then diff --git a/mods/MAPGEN/mcl_villages/buildings.lua b/mods/MAPGEN/mcl_villages/buildings.lua index 3f4490bf9..a69029063 100644 --- a/mods/MAPGEN/mcl_villages/buildings.lua +++ b/mods/MAPGEN/mcl_villages/buildings.lua @@ -187,10 +187,10 @@ local function construct_node(p1, p2, name) end return nodes end - minetest.log("warning","[mcl_villages] No on_construct defined for node name " .. name) + minetest.log("warning", "[mcl_villages] No on_construct defined for node name " .. name) return end - minetest.log("warning","[mcl_villages] Attempt to 'construct' inexistant nodes: " .. name) + minetest.log("warning", "[mcl_villages] Attempt to 'construct' inexistant nodes: " .. name) end local function init_nodes(p1, p2, size, rotation, pr) construct_node(p1, p2, "mcl_itemframes:item_frame") diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index ccc3f585d..7e460990e 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -1,5 +1,5 @@ settlements = {} -settlements.modpath = minetest.get_modpath("mcl_villages") +settlements.modpath = minetest.get_modpath(minetest.get_current_modname()) dofile(settlements.modpath.."/const.lua") dofile(settlements.modpath.."/utils.lua") @@ -37,7 +37,7 @@ minetest.register_node("mcl_villages:stonebrickcarved", { -- -- register inhabitants -- -if minetest.get_modpath("mobs_mc") ~= nil then +if minetest.get_modpath("mobs_mc") then mobs:register_spawn("mobs_mc:villager", --name {"mcl_core:stonebrickcarved"}, --nodes 15, --max_light diff --git a/mods/MAPGEN/tsm_railcorridors/init.lua b/mods/MAPGEN/tsm_railcorridors/init.lua index d7a074a00..65a7d6a69 100644 --- a/mods/MAPGEN/tsm_railcorridors/init.lua +++ b/mods/MAPGEN/tsm_railcorridors/init.lua @@ -1,3 +1,6 @@ +local pairs = pairs +local tonumber = tonumber + tsm_railcorridors = {} -- Load node names @@ -8,7 +11,7 @@ local setting -- Probability function -- TODO: Check if this is correct -local P = function (float) +local function P(float) return math.floor(32767 * float) end @@ -80,14 +83,14 @@ end -- Enable cobwebs local place_cobwebs = true setting = minetest.settings:get_bool("tsm_railcorridors_place_cobwebs") -if setting ~= nil then +if setting then place_cobwebs = setting end -- Enable mob spawners local place_mob_spawners = true setting = minetest.settings:get_bool("tsm_railcorridors_place_mob_spawners") -if setting ~= nil then +if setting then place_mob_spawners = setting end @@ -175,7 +178,7 @@ end -- Tries to place a rail, taking the damage chance into account local function PlaceRail(pos, damage_chance) - if damage_chance ~= nil and damage_chance > 0 then + if damage_chance and damage_chance > 0 then local x = pr:next(0,100) if x <= damage_chance then return false @@ -395,7 +398,7 @@ local function RecheckCartHack(params) local cart_id = params[2] -- Find cart for _, obj in pairs(minetest.get_objects_inside_radius(pos, 1)) do - if obj ~= nil and obj:get_luaentity().name == cart_id then + if obj and obj:get_luaentity().name == cart_id then -- Cart found! We can now safely call the callback func. -- (calling it earlier has the danger of failing) minetest.log("info", "[tsm_railcorridors] Cart spawn succeeded: "..minetest.pos_to_string(pos)) diff --git a/mods/MISC/findbiome/init.lua b/mods/MISC/findbiome/init.lua index 5f55da493..8560d1607 100644 --- a/mods/MISC/findbiome/init.lua +++ b/mods/MISC/findbiome/init.lua @@ -1,6 +1,6 @@ -local S = minetest.get_translator("findbiome") +local S = minetest.get_translator(minetest.get_current_modname()) -local mod_biomeinfo = minetest.get_modpath("biomeinfo") ~= nil +local mod_biomeinfo = minetest.get_modpath("biomeinfo") local mg_name = minetest.get_mapgen_setting("mg_name") local water_level = tonumber(minetest.get_mapgen_setting("water_level")) diff --git a/mods/MISC/mcl_commands/alias.lua b/mods/MISC/mcl_commands/alias.lua index 2989b7b37..5c9ee9f3c 100644 --- a/mods/MISC/mcl_commands/alias.lua +++ b/mods/MISC/mcl_commands/alias.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_commands") +local S = minetest.get_translator(minetest.get_current_modname()) local function register_chatcommand_alias(alias, cmd) local def = minetest.chatcommands[cmd] diff --git a/mods/MISC/mcl_commands/kill.lua b/mods/MISC/mcl_commands/kill.lua index 85754a0ec..becd42917 100644 --- a/mods/MISC/mcl_commands/kill.lua +++ b/mods/MISC/mcl_commands/kill.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_commands") +local S = minetest.get_translator(minetest.get_current_modname()) local function handle_kill_command(suspect, victim) if minetest.settings:get_bool("enable_damage") == false then diff --git a/mods/MISC/mcl_commands/list.lua b/mods/MISC/mcl_commands/list.lua index 0257e2837..5661454b4 100644 --- a/mods/MISC/mcl_commands/list.lua +++ b/mods/MISC/mcl_commands/list.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_commands") +local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_chatcommand("list", { description = S("Show who is logged on"), diff --git a/mods/MISC/mcl_commands/say.lua b/mods/MISC/mcl_commands/say.lua index 2b01a7e93..9fd53c174 100644 --- a/mods/MISC/mcl_commands/say.lua +++ b/mods/MISC/mcl_commands/say.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_commands") +local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_privilege("announce", { description = S("Can use /say"), diff --git a/mods/MISC/mcl_commands/seed.lua b/mods/MISC/mcl_commands/seed.lua index da5f6a303..6a99d53cb 100644 --- a/mods/MISC/mcl_commands/seed.lua +++ b/mods/MISC/mcl_commands/seed.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_commands") +local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_chatcommand("seed", { description = S("Displays the world seed"), diff --git a/mods/MISC/mcl_commands/setblock.lua b/mods/MISC/mcl_commands/setblock.lua index dc834e1e8..95acdd35d 100644 --- a/mods/MISC/mcl_commands/setblock.lua +++ b/mods/MISC/mcl_commands/setblock.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_commands") +local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_chatcommand("setblock", { params = S(",, "), diff --git a/mods/MISC/mcl_commands/sound.lua b/mods/MISC/mcl_commands/sound.lua index 06225271d..5833676f3 100644 --- a/mods/MISC/mcl_commands/sound.lua +++ b/mods/MISC/mcl_commands/sound.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_commands") +local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_chatcommand("playsound",{ params = S(" "), --TODO:add source diff --git a/mods/MISC/mcl_commands/summon.lua b/mods/MISC/mcl_commands/summon.lua index eb6066ff8..69da0a66c 100644 --- a/mods/MISC/mcl_commands/summon.lua +++ b/mods/MISC/mcl_commands/summon.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_commands") +local S = minetest.get_translator(minetest.get_current_modname()) local orig_func = minetest.registered_chatcommands["spawnentity"].func local cmd = table.copy(minetest.registered_chatcommands["spawnentity"]) diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index 00670db1c..63694ab11 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_privs") +local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_privilege("maphack", { description = S("Can place and use advanced blocks like mob spawners, command blocks and barriers."), diff --git a/mods/MISC/mcl_temp_helper_recipes/init.lua b/mods/MISC/mcl_temp_helper_recipes/init.lua index ff9f541f3..420cd6c2e 100644 --- a/mods/MISC/mcl_temp_helper_recipes/init.lua +++ b/mods/MISC/mcl_temp_helper_recipes/init.lua @@ -4,7 +4,7 @@ minetest.register_craft({ type = "shapeless", - output = 'mcl_chests:trapped_chest', + output = "mcl_chests:trapped_chest", recipe = {"mcl_core:iron_ingot", "mcl_core:stick", "group:wood", "mcl_chests:chest"}, }) diff --git a/mods/MISC/mcl_wip/init.lua b/mods/MISC/mcl_wip/init.lua index 0eb56dd84..54fd81c1d 100644 --- a/mods/MISC/mcl_wip/init.lua +++ b/mods/MISC/mcl_wip/init.lua @@ -1,6 +1,6 @@ --- Mod to mark WIP (Work In Progress) content +-- Allow items or nodes to be marked as WIP (Work In Progress) or Experimental -local S = minetest.get_translator("mcl_wip") +local S = minetest.get_translator(minetest.get_current_modname()) mcl_wip = {} mcl_wip.registered_wip_items = {} diff --git a/mods/PLAYER/mcl_death_drop/init.lua b/mods/PLAYER/mcl_death_drop/init.lua index fca566a37..bfeee0c3e 100644 --- a/mods/PLAYER/mcl_death_drop/init.lua +++ b/mods/PLAYER/mcl_death_drop/init.lua @@ -1,11 +1,13 @@ local random = math.random +local ipairs = ipairs + mcl_death_drop = {} mcl_death_drop.registered_dropped_lists = {} function mcl_death_drop.register_dropped_list(inv, listname, drop) - table.insert(mcl_death_drop.registered_dropped_lists, {inv=inv, listname=listname, drop=drop}) + table.insert(mcl_death_drop.registered_dropped_lists, {inv = inv, listname = listname, drop = drop}) end mcl_death_drop.register_dropped_list("PLAYER", "main", true) @@ -30,7 +32,7 @@ minetest.register_on_dieplayer(function(player) end local listname = mcl_death_drop.registered_dropped_lists[l].listname local drop = mcl_death_drop.registered_dropped_lists[l].drop - if inv ~= nil then + if inv then for i, stack in ipairs(inv:get_list(listname)) do local x = random(0, 9)/3 local z = random(0, 9)/3 diff --git a/mods/PLAYER/mcl_hunger/api.lua b/mods/PLAYER/mcl_hunger/api.lua index 4fea9b04e..20937023a 100644 --- a/mods/PLAYER/mcl_hunger/api.lua +++ b/mods/PLAYER/mcl_hunger/api.lua @@ -76,7 +76,7 @@ if mcl_hunger.active then satuchanged = true end if satuchanged then - if h ~= nil then h = h end + if h then h = h end mcl_hunger.update_saturation_hud(player, mcl_hunger.get_saturation(player), h) end end diff --git a/mods/PLAYER/mcl_hunger/hunger.lua b/mods/PLAYER/mcl_hunger/hunger.lua index cf422dbf0..5dec8b1b0 100644 --- a/mods/PLAYER/mcl_hunger/hunger.lua +++ b/mods/PLAYER/mcl_hunger/hunger.lua @@ -1,8 +1,7 @@ ---local S = minetest.get_translator("mcl_hunger") +--local S = minetest.get_translator(minetest.get_current_modname()) -- 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) - +function minetest.do_item_eat(hp_change, replace_with_item, itemstack, user, pointed_thing) if not user or user:is_player() == false then return itemstack end @@ -122,7 +121,7 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso return function(itemstack, user, pointed_thing) local itemname = itemstack:get_name() local creative = minetest.is_creative_enabled(user:get_player_name()) - if itemstack:peek_item() ~= nil and user ~= nil then + if itemstack:peek_item() and user then if not creative then itemstack:take_item() end diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index d212e631a..8c154700a 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -1,4 +1,7 @@ -local S = minetest.get_translator("mcl_hunger") +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +local S = minetest.get_translator(modname) mcl_hunger = {} @@ -36,9 +39,9 @@ mcl_hunger.debug = false -- Cooldown timers for each player, to force a short delay between consuming 2 food items mcl_hunger.last_eat = {} -dofile(minetest.get_modpath("mcl_hunger").."/api.lua") -dofile(minetest.get_modpath("mcl_hunger").."/hunger.lua") -dofile(minetest.get_modpath("mcl_hunger").."/register_foods.lua") +dofile(modpath.."/api.lua") +dofile(modpath.."/hunger.lua") +dofile(modpath.."/register_foods.lua") --[[ IF HUNGER IS ENABLED ]] if mcl_hunger.active == true then diff --git a/mods/PLAYER/mcl_skins/init.lua b/mods/PLAYER/mcl_skins/init.lua index fb91d74d3..6d5461a98 100644 --- a/mods/PLAYER/mcl_skins/init.lua +++ b/mods/PLAYER/mcl_skins/init.lua @@ -1,12 +1,14 @@ -- Skins for MineClone 2 +local modname = minetest.get_current_modname() + mcl_skins = { skins = {}, list = {}, previews = {}, meta = {}, has_preview = {}, - modpath = minetest.get_modpath("mcl_skins"), + modpath = minetest.get_modpath(modname), skin_count = 0, -- counter of _custom_ skins (all skins except character.png) } -local S = minetest.get_translator("mcl_skins") +local S = minetest.get_translator(modname) local has_mcl_inventory = minetest.get_modpath("mcl_inventory") -- load skin list and metadata @@ -53,7 +55,7 @@ while true do data = nil if f then - data = minetest.deserialize("return {" .. f:read('*all') .. "}") + data = minetest.deserialize("return {" .. f:read("*all") .. "}") f:close() end @@ -138,7 +140,7 @@ minetest.register_on_joinplayer(function(player) local skin_id = player:get_meta():get_string("mcl_skins:skin_id") local set_skin -- do we already have a skin in player attributes? - if skin_id ~= nil and skin_id ~= "" then + if skin_id and skin_id ~= "" then set_skin = tonumber(skin_id) -- otherwise use random skin if not set end @@ -220,7 +222,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if mcl_skins.skin_count <= 6 then -- Change skin immediately if there are not many skins mcl_skins.cycle_skin(player) - if player:get_attach() ~= nil then + if player:get_attach() then mcl_player.player_set_animation(player, "sit") end else diff --git a/mods/PLAYER/mcl_spawn/init.lua b/mods/PLAYER/mcl_spawn/init.lua index b8c746d1f..113a4d27f 100644 --- a/mods/PLAYER/mcl_spawn/init.lua +++ b/mods/PLAYER/mcl_spawn/init.lua @@ -1,6 +1,6 @@ mcl_spawn = {} -local S = minetest.get_translator("mcl_spawn") +local S = minetest.get_translator(minetest.get_current_modname()) local mg_name = minetest.get_mapgen_setting("mg_name") local storage = minetest.get_mod_storage() @@ -379,7 +379,7 @@ function mcl_spawn.search() end -mcl_spawn.get_world_spawn_pos = function() +function mcl_spawn.get_world_spawn_pos() local ssp = minetest.setting_get_pos("static_spawnpoint") if ssp then return ssp @@ -395,7 +395,7 @@ end -- If player is nil or not a player, a world spawn point is returned. -- The second return value is true if returned spawn point is player-chosen, -- false otherwise. -mcl_spawn.get_bed_spawn_pos = function(player) +function mcl_spawn.get_bed_spawn_pos(player) local spawn, custom_spawn = nil, false if player and player:is_player() then local attr = player:get_meta():get_string("mcl_beds:spawn") @@ -415,7 +415,7 @@ end -- Set pos to nil to clear the spawn position. -- If message is set, informs the player with a chat message when the spawn position -- changed. -mcl_spawn.set_spawn_pos = function(player, pos, message) +function mcl_spawn.set_spawn_pos(player, pos, message) local spawn_changed = false local meta = player:get_meta() if pos == nil then @@ -443,7 +443,7 @@ mcl_spawn.set_spawn_pos = function(player, pos, message) return spawn_changed end -mcl_spawn.get_player_spawn_pos = function(player) +function mcl_spawn.get_player_spawn_pos(player) local pos, custom_spawn = mcl_spawn.get_bed_spawn_pos(player) if pos and custom_spawn then -- Check if bed is still there @@ -451,7 +451,7 @@ mcl_spawn.get_player_spawn_pos = function(player) local bgroup = minetest.get_item_group(node_bed.name, "bed") if bgroup ~= 1 and bgroup ~= 2 then -- Bed is destroyed: - if player ~= nil and player:is_player() then + if player and player:is_player() then player:get_meta():set_string("mcl_beds:spawn", "") end minetest.chat_send_player(player:get_player_name(), S("Your spawn bed was missing or blocked.")) @@ -482,7 +482,7 @@ mcl_spawn.get_player_spawn_pos = function(player) return mcl_spawn.get_world_spawn_pos(), false end -mcl_spawn.spawn = function(player) +function mcl_spawn.spawn(player) local pos, in_bed = mcl_spawn.get_player_spawn_pos(player) player:set_pos(pos) return in_bed or success diff --git a/mods/PLAYER/mcl_sprint/init.lua b/mods/PLAYER/mcl_sprint/init.lua index 546a5f4f0..73a518c42 100644 --- a/mods/PLAYER/mcl_sprint/init.lua +++ b/mods/PLAYER/mcl_sprint/init.lua @@ -7,6 +7,22 @@ to this software to the public domain worldwide. This software is distributed without any warranty. ]] +local math = math +local vector = vector + +local pairs = pairs + +local get_node = minetest.get_node +local get_gametime = minetest.get_gametime +local add_particlespawner = minetest.add_particlespawner +local get_player_by_name = minetest.get_player_by_name + +local registered_nodes = minetest.registered_nodes + +local get_hunger = mcl_hunger.get_hunger +local exhaust = mcl_hunger.exhaust + + --Configuration variables, these are all explained in README.md mcl_sprint = {} @@ -133,12 +149,12 @@ end) minetest.register_globalstep(function(dtime) --Get the gametime - local gameTime = minetest.get_gametime() + local gameTime = get_gametime() --Loop through all connected players - for playerName,playerInfo in pairs(players) do - local player = minetest.get_player_by_name(playerName) - if player ~= nil then + for playerName, playerInfo in pairs(players) do + local player = get_player_by_name(playerName) + if player then local ctrl = player:get_player_control() --Check if the player should be sprinting if players[playerName]["clientSprint"] or ctrl.aux1 and ctrl.up and not ctrl.sneak then @@ -150,22 +166,21 @@ minetest.register_globalstep(function(dtime) local playerPos = player:get_pos() --If the player is sprinting, create particles behind and cause exhaustion if playerInfo["sprinting"] == true and not player:get_attach() and gameTime % 0.1 == 0 then - -- Exhaust player for sprinting local lastPos = players[playerName].lastPos local dist = vector.distance({x=lastPos.x, y=0, z=lastPos.z}, {x=playerPos.x, y=0, z=playerPos.z}) players[playerName].sprintDistance = players[playerName].sprintDistance + dist if players[playerName].sprintDistance >= 1 then local superficial = math.floor(players[playerName].sprintDistance) - mcl_hunger.exhaust(playerName, mcl_hunger.EXHAUST_SPRINT * superficial) + exhaust(playerName, mcl_hunger.EXHAUST_SPRINT * superficial) players[playerName].sprintDistance = players[playerName].sprintDistance - superficial end -- Sprint node particles - local playerNode = minetest.get_node({x=playerPos["x"], y=playerPos["y"]-1, z=playerPos["z"]}) - local def = minetest.registered_nodes[playerNode.name] + local playerNode = get_node({x=playerPos["x"], y=playerPos["y"]-1, z=playerPos["z"]}) + local def = registered_nodes[playerNode.name] if def and def.walkable then - minetest.add_particlespawner({ + add_particlespawner({ amount = math.random(1, 2), time = 1, minpos = {x=-0.5, y=0.1, z=-0.5}, @@ -192,7 +207,7 @@ minetest.register_globalstep(function(dtime) if players[playerName]["shouldSprint"] == true then --Stopped local sprinting -- Prevent sprinting if hungry or sleeping - if (mcl_hunger.active and mcl_hunger.get_hunger(player) <= 6) + if (mcl_hunger.active and get_hunger(player) <= 6) or (player:get_meta():get_string("mcl_beds:sleeping") == "true") then sprinting = false cancelClientSprinting(playerName) diff --git a/mods/PLAYER/mcl_wieldview/init.lua b/mods/PLAYER/mcl_wieldview/init.lua index fc9ebc074..7200f6186 100644 --- a/mods/PLAYER/mcl_wieldview/init.lua +++ b/mods/PLAYER/mcl_wieldview/init.lua @@ -1,3 +1,6 @@ +local get_connected_players = minetest.get_connected_players +local get_item_group = minetest.get_item_group + mcl_wieldview = { players = {} } @@ -19,7 +22,7 @@ function mcl_wieldview.get_item_texture(itemname) local texture = inv_image - local transform = minetest.get_item_group(itemname, "wieldview_transform") + local transform = get_item_group(itemname, "wieldview_transform") if transform then -- This actually works with groups ratings because transform1, transform2, etc. -- have meaning and transform0 is used for identidy, so it can be ignored @@ -69,8 +72,9 @@ minetest.register_on_leaveplayer(function(player) end) minetest.register_globalstep(function() - for _, player in pairs(minetest.get_connected_players()) do - mcl_wieldview.update_wielded_item(player) + local players = get_connected_players() + for i = 1, #players do + mcl_wieldview.update_wielded_item(players[i]) end end) From 95627f4304a52207a06ab7625801398ee227c969 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 29 May 2021 16:15:30 +0200 Subject: [PATCH 123/720] Revert "[mcl_fishing] fix warnings" This reverts commit a1acf6d3c18c5e88a0e391447280a79bdc4c8565. --- mods/ITEMS/mcl_fishing/init.lua | 277 +++++++++++++++++--------------- 1 file changed, 146 insertions(+), 131 deletions(-) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 66a0aad68..e0c78832f 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -2,8 +2,6 @@ local S = minetest.get_translator(minetest.get_current_modname()) -local math = math - local bobber_ENTITY={ physical = false, timer=0, @@ -33,141 +31,143 @@ 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 ent - local noent = false + 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 durability = 65 - local unbreaking = mcl_enchanting.get_enchantment(itemstack, "unbreaking") - if unbreaking > 0 then - durability = durability * (unbreaking + 1) - 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 + 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 - --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) + 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 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) + --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 - --Destroy bobber. - ent.object:remove() - noent = false - break end 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 + --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 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 + --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 -- Movement function of bobber @@ -331,11 +331,13 @@ 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) -local function remove_bobber(player) +-- If player leaves area, remove bobber. +minetest.register_on_leaveplayer(function(player) local objs = minetest.get_objects_inside_radius(player:get_pos(), 250) - + local ent = nil + local noent = true for n = 1, #objs do - local ent = objs[n]:get_luaentity() + ent = objs[n]:get_luaentity() if ent then if ent.player and ent.objtype=="fishing" then ent.object:remove() @@ -344,13 +346,26 @@ local function remove_bobber(player) end end end -end - --- If player leaves area, remove bobber. -minetest.register_on_leaveplayer(remove_bobber) +end) -- If player dies, remove bobber. -minetest.register_on_dieplayer(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) -- Fishing Rod minetest.register_tool("mcl_fishing:fishing_rod", { From a65db15b5caf92e1e18c07880ea62b8ff5ce61ff Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 29 May 2021 19:21:15 +0000 Subject: [PATCH 124/720] Totem particle textures --- .../textures/mcl_particles_totem1.png | Bin 0 -> 148 bytes .../textures/mcl_particles_totem2.png | Bin 0 -> 154 bytes .../textures/mcl_particles_totem3.png | Bin 0 -> 155 bytes .../textures/mcl_particles_totem4.png | Bin 0 -> 165 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/CORE/mcl_particles/textures/mcl_particles_totem1.png create mode 100644 mods/CORE/mcl_particles/textures/mcl_particles_totem2.png create mode 100644 mods/CORE/mcl_particles/textures/mcl_particles_totem3.png create mode 100644 mods/CORE/mcl_particles/textures/mcl_particles_totem4.png diff --git a/mods/CORE/mcl_particles/textures/mcl_particles_totem1.png b/mods/CORE/mcl_particles/textures/mcl_particles_totem1.png new file mode 100644 index 0000000000000000000000000000000000000000..15fe082e104d5d524ab2fa7b9af63c29c196756d GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VY)RhkE7sn8Z%gG4~v=dyO{rUg@zkN*8 lL_xjdE1|%O$WD@{VY)RhkE rgruaTp-7@BgTe~DWM4f;{PWz literal 0 HcmV?d00001 diff --git a/mods/CORE/mcl_particles/textures/mcl_particles_totem3.png b/mods/CORE/mcl_particles/textures/mcl_particles_totem3.png new file mode 100644 index 0000000000000000000000000000000000000000..55d6f49d3543ca553e475954f6012306ea7ba0bf GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VY)RhkEp00i_>zopr0FK-$I{*Lx literal 0 HcmV?d00001 diff --git a/mods/CORE/mcl_particles/textures/mcl_particles_totem4.png b/mods/CORE/mcl_particles/textures/mcl_particles_totem4.png new file mode 100644 index 0000000000000000000000000000000000000000..d6e6502b7fd0c0d1a68c8afdcea112d4693e07db GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VY)RhkEpe+aVfI>!|E{-7*my;6|m<*JP|NZ~}UtaIv zi4z?QIU*T%Il0AfO%OE_e5|H6NyhJjZ%d842m^yIw+NSW@uBHJ-3*?telF{r5}E+c C1}gjj literal 0 HcmV?d00001 From 75e263debca16802eabb977cbae1f1895dd32bc5 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 29 May 2021 19:24:16 +0000 Subject: [PATCH 125/720] Add code for totem partciles --- mods/ITEMS/mcl_totems/init.lua | 48 ++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index 499d7362d..e64404c2c 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -4,6 +4,41 @@ minetest.register_on_leaveplayer(function(player) hud_totem[player] = nil end) +-- Totem particle registration +-- TODO: real MC colors, these are randomly selected colors: +local colors = {"#7FFF00", "#698B22", "#BCEE68", "#EEEE00", "#C5F007"} +for c, color in pairs(colors) do + local colorizing = ".png^[colorize:"..color + for n = 1, 4 do + minetest.register_entity("mcl_totems:totem_particle"..n.."_color"..c, { + physical = true, + collide_with_objects = false, + collisionbox = {-0.02,-0.02,-0.02, 0.02,0.02,0.02}, + pointable = false, + visual = "sprite", + visual_size = {x=0.2, y=0.2}, + textures = {"mcl_particles_totem"..n..colorizing}, + spritediv = {x=1, y=1}, + initial_sprite_basepos = {x=0, y=0}, + static_save = false, + glow = 5, + on_activate = function(self, staticdata) + self.object:set_velocity({x = math.random(-4, 4)*math.random(), y = math.random(-1, 4)*math.random(), z = math.random(-4, 4)*math.random()}) + minetest.after(0.3, function() + self.object:set_acceleration({x=0, y=-4, z=0}) + self.object:set_velocity({x=0, y=0, z=0}) + end) + end, + on_step = function(self, dtime) + local r = math.random(1,80) + if r == 1 then + self.object:remove() + end + end + }) + end +end + -- Save the player from death when holding totem of undying in hand mcl_damage.register_modifier(function(obj, damage, reason) if obj:is_player() then @@ -32,7 +67,16 @@ mcl_damage.register_modifier(function(obj, damage, reason) -- Effects minetest.sound_play({name = "mcl_totems_totem", gain=1}, {pos=ppos, max_hear_distance=16}, true) - -- Big totem overlay + --Particles + for i = 1, 200 do + local particle = "mcl_totems:totem_particle"..math.random(1, 4).."_color"..math.random(1, 5) + minetest.after(math.random(1, 2)*math.random(), function() + local new_pos = obj:get_pos() + minetest.add_entity({x=new_pos.x, y=new_pos.y + 1, z=new_pos.z}, particle) + end) + end + + -- Big totem overlay if not hud_totem[obj] then hud_totem[obj] = obj:hud_add({ hud_elem_type = "image", @@ -55,4 +99,4 @@ mcl_damage.register_modifier(function(obj, damage, reason) end end end -end, 1000) +end, 1000) \ No newline at end of file From 21bdf914bf8d0fc2468856423ccba2ed47d7c51d Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Tue, 1 Jun 2021 15:28:09 +0200 Subject: [PATCH 126/720] Add polish translation of mcl_flowerpots --- .../locale/mcl_flowerpots.pl.tr | 27 +++++++++++++++++++ tools/dicts/polish.dic | 1 + 2 files changed, 28 insertions(+) create mode 100644 mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.pl.tr diff --git a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.pl.tr b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.pl.tr new file mode 100644 index 000000000..4bc5e282a --- /dev/null +++ b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.pl.tr @@ -0,0 +1,27 @@ +# textdomain: mcl_flowerpots +Dandelion Flower Pot=Doniczka z mleczem +Poppy Flower Pot=Doniczka z makiem +Blue Orchid Flower Pot=Doniczka z niebieską orchideą +Allium Flower Pot=Doniczka z czosnkiem +Azure Bluet Flower Pot=Doniczka z houstonią błękitną +Red Tulip Flower Pot=Doniczka z czerwonym tulipanem +Pink Tulip Flower Pot=Doniczka z różowym tulipanem +White Tulip Flower Pot=Doniczka z białym tulipanem +Orange Tulip Flower Pot=Doniczka z pomarańczowym tulipanem +Oxeye Daisy Flower Pot=Doniczka ze stokrotką +Brown Mushroom Flower Pot=Doniczka z brązowym grzybem +Red Mushroom Flower Pot=Doniczka z czerwonym grzybem +Oak Sapling Flower Pot=Doniczka z sadzonką dębu +Acacia Sapling Flower Pot=Doniczka z sadzonką akacji +Jungle Sapling Flower Pot=Doniczka z tropikalną sadzonką +Dark Oak Sapling Flower Pot=Doniczka z sadzonką ciemnego dębu +Spruce Sapling Flower Pot=Doniczka z sadzonką świerku +Birch Sapling Flower Pot=Doniczka z sadzonką brzozy +Dead Bush Flower Pot=Doniczka z martwym buszem +Fern Flower Pot=Doniczka z paprocią +Cactus Flower Pot=Doniczka z kaktusem +Flower Pot=Doniczka +Flower pots are decorative blocks in which flowers and other small plants can be placed.=Doniczki są dekoracyjnymi blokami w których mogą zostać postawione kwiaty i inne małe rośliny. +Just place a plant on the flower pot. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.=Po prostu umieść roślinę w doniczce. Mogę one przechowywać małe kwiaty (nie większe niż 1 blok), sadzonki, paprocie, martwe busze, grzyby i kaktusy. Kliknij prawym przyciskiem w doniczkę aby odzyskać roślinę. +Can hold a small flower or plant=Może przechowywać mały kwiat lub roślinę + diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 4ce3b2bba..e303c5787 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -69,6 +69,7 @@ viewforum php minetest Houstonia +houstonią wskazywalna MineClone voxeli From 22bda9c77088d294b01a1a30a620a580ab1a9f9f Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Tue, 1 Jun 2021 15:33:34 +0200 Subject: [PATCH 127/720] Add polish translation of mcl_fences --- mods/ITEMS/mcl_fences/locale/mcl_fences.pl.tr | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 mods/ITEMS/mcl_fences/locale/mcl_fences.pl.tr diff --git a/mods/ITEMS/mcl_fences/locale/mcl_fences.pl.tr b/mods/ITEMS/mcl_fences/locale/mcl_fences.pl.tr new file mode 100644 index 000000000..794986b58 --- /dev/null +++ b/mods/ITEMS/mcl_fences/locale/mcl_fences.pl.tr @@ -0,0 +1,19 @@ +# textdomain: mcl_fences +Fences are structures which block the way. Fences will connect to each other and solid blocks. They cannot be jumped over with a simple jump.=Płoty są strukturami blokującymi przejścia. Nie połączą się one z innymi blokami. Nie można też nad nimi przeskoczyć pojedynczym skokiem. +Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates.=Furtki mogą być otwierane i zamykane, ale nie można ich przeskoczyć. Łączą się one ładnie z płotem. +Right-click the fence gate to open or close it.=Naciśnij prawy przycisk myszy by otworzyć lub zamknąć furtkę. +Oak Fence=Dębowy płot +Oak Fence Gate=Dębowa furtka +Spruce Fence=Świerkowy płot +Spruce Fence Gate=Świerkowa furtka +Birch Fence=Brzozowy płot +Birch Fence Gate=Brzozowa furtka +Jungle Fence=Tropikalny płot +Jungle Fence Gate=Tropikalna furtka +Dark Oak Fence=Ciemno-dębowy płot +Dark Oak Fence Gate=Ciemno-dębowa furtka +Acacia Fence=Akacjowy płot +Acacia Fence Gate=Akacjowa furtka +Nether Brick Fence=Płot z Netherowych cegieł +Openable by players and redstone power=Może być otworzony przez graczy i energię czerwienitu + From 7804de42304f5f45ac8d2d56d4de6ebbc57352d8 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Tue, 1 Jun 2021 15:45:45 +0200 Subject: [PATCH 128/720] Add polish translation of mcl_tools --- mods/ITEMS/mcl_tools/locale/mcl_tools.pl.tr | 33 +++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 mods/ITEMS/mcl_tools/locale/mcl_tools.pl.tr diff --git a/mods/ITEMS/mcl_tools/locale/mcl_tools.pl.tr b/mods/ITEMS/mcl_tools/locale/mcl_tools.pl.tr new file mode 100644 index 000000000..afe42593f --- /dev/null +++ b/mods/ITEMS/mcl_tools/locale/mcl_tools.pl.tr @@ -0,0 +1,33 @@ +# textdomain: mcl_tools +You use your bare hand whenever you are not wielding any item. With your hand you can mine most blocks, but this is the slowest method and only the weakest blocks will yield their useful drop. The hand also deals minor damage by punching. Using the hand is often a last resort, as proper mining tools and weapons are much better.=Gdy nie trzymasz żadnego przedmiotu używasz swoich gołych dłoni. Swoją dłonią możesz wykopać większość bloków, ale jest to najwolniejsza metoda i tylko najsłabsze bloki wyrzucą z siebie użyteczny zrzut. Ręce zadają również niewielkie obrażenia przy uderzaniu. Używanie ręki to często ostateczność, ponieważ porządne narzędzia do kopania i bronie są o wiele lepsze. +When you are wielding an item which is not a mining tool or a weapon, it will behave as if it were the hand when you start mining or punching.=Gdy trzymasz przedmiot który nie jest narzędziem do kopania ani bronią, będzie się on zachowywał jakby był dłonią podczas kopania i uderzania. +In Creative Mode, the hand is able to break all blocks instantly.=W trybie kreatywnym ręka jest w stanie zniszczyć wszystkie bloki natychmiastowo. +Pickaxes are mining tools to mine hard blocks, such as stone. A pickaxe can also be used as weapon, but it is rather inefficient.=Kilofy są narzędziami wykorzystywanymi do kopania twardych bloków, takich jak kamień. Mogą być również wykorzystane jako bronie, ale nie jest to bardzo efektywne. +An axe is your tool of choice to cut down trees, wood-based blocks and other blocks. Axes deal a lot of damage as well, but they are rather slow.=Siekiera jest narzędziem do ścinania drzew, bloków z desek i innych bloków. Siekiery zadają duże obrażenia, ale są wolne. +Swords are great in melee combat, as they are fast, deal high damage and can endure countless battles. Swords can also be used to cut down a few particular blocks, such as cobwebs.=Miecze są świetne do walki wręcz, ponieważ są szybkie, zadają duże obrażenia i mogą wytrzymać niezliczone pojedynki. Można je również wykorzystać do ścięcia niektórych bloków takich jak pajęczyny. +Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak.=Łopaty są użyteczne do kopania sypkich bloków takich jak ziemia, piasek czy żwir. Można je również wykorzystać by zmienić bloki trawy w ścieżki. Mogą być również wykorzystane jako broń, ale są bardzo słabe. +To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block.=Aby zmienić blok trawy w ścieżkę, weź łopatę do ręki, następnie użyj prawego przycisku myszy na wierzchu lub boku bloku trawy. To zadziała tylko pod warunkiem, że nad blokiem ziemi jest blok powietrza. +Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting.=Nożyce są narzędziem do strzyżenia owiec i kopania kilku typów bloków. Są one specjalnym narzędziem do kopania i można je wykorzystać do uzyskania oryginalnych przedmiotów z trawy, liści i podobnych bloków wymagających ścinania. +To shear sheep or carve faceless pumpkins, use the “place” key on them. Faces can only be carved at the side of faceless pumpkins. Mining works as usual, but the drops are different for a few blocks.=Aby ostrzyc owcę lub wydrążyć dynię użyj przycisku "umieść" na nich. Twarze mogą zostać wydrążone na bokach dyń bez twarzy. Kopanie działa jak zwykle, ale zrzut jest inny dla niektórych bloków. +Wooden Pickaxe=Drewniany kilof +Stone Pickaxe=Kamienny kilof +Iron Pickaxe=Żelazny kilof +Golden Pickaxe=Złoty kilof +Diamond Pickaxe=Diamentowy kilof +Wooden Shovel=Drewniana łopata +Stone Shovel=Kamienna łopata +Iron Shovel=Żelazna łopata +Golden Shovel=Złota łopata +Diamond Shovel=Diamentowa łopata +Wooden Axe=Drewniana siekiera +Stone Axe=Kamienna siekiera +Iron Axe=Żelazna siekiera +Golden Axe=Złota siekiera +Diamond Axe=Diamentowa siekiera +Wooden Sword=Drewniany miecz +Stone Sword=Kamienny miecz +Iron Sword=Żelazny miecz +Golden Sword=Złoty miecz +Diamond Sword=Diamentowy miecz +Shears=Nożyce + From 640b0dc4859014f15939cce0be36dd06c2b1419c Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 2 Jun 2021 00:23:11 +0200 Subject: [PATCH 129/720] basic title API working (testing needed) --- mods/HUD/mcl_title/init.lua | 161 ++++++++++++++++++++++++++++++++++++ mods/HUD/mcl_title/mod.conf | 4 + 2 files changed, 165 insertions(+) create mode 100644 mods/HUD/mcl_title/init.lua create mode 100644 mods/HUD/mcl_title/mod.conf diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua new file mode 100644 index 000000000..9975ff840 --- /dev/null +++ b/mods/HUD/mcl_title/init.lua @@ -0,0 +1,161 @@ +--TODO: use SSCSM to reduce lag and network trafic (just send modchannel messages) +--TODO: exactly mc like layout + +local huds_idx = {} + +huds_idx.title = {} +huds_idx.subtitle = {} +huds_idx.actionbar = {} + +mcl_title = {} +mcl_title.defaults = {fadein = 10, stay = 70, fadeout = 20} +mcl_title.layout = {} +mcl_title.layout.title = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = -1.3}, size = 5} +mcl_title.layout.subtitle = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = 1.9}, size = 2} +mcl_title.layout.actionbar = {position = {x = 0.5, y = 1}, alignment = {x = 0, y = -15}, size = 1} + +local get_color = mcl_util.get_color + +local function gametick_to_secondes(gametick) + return gametick / 20 +end + + +--PARAMS SYSTEM +local player_params = {} + +minetest.register_on_joinplayer(function(player) + player_params[player] = { + stay = gametick_to_secondes(mcl_title.defaults.stay), + --fadeIn = gametick_to_secondes(mcl_title.defaults.fadein), + --fadeOut = gametick_to_secondes(mcl_title.defaults.fadeout), + } +end) + +minetest.register_on_leaveplayer(function(player) + player_params = nil +end) + +function mcl_title.params_set(player, data) + player_params[player] = { + stay = gametick_to_secondes(data.stay) or gametick_to_secondes(mcl_title.defaults.stay), + --fadeIn = gametick_to_secondes(data.fadeIn) or gametick_to_secondes(mcl_title.defaults.fadein), + --fadeOut = gametick_to_secondes(data.fadeOut) or gametick_to_secondes(mcl_title.defaults.fadeout), + } +end + +function mcl_title.params_get(player) + return player_params[player] +end + +--API FUNCTIONS + +function mcl_title.set(player, type, data) + if not data.color then + data.color = "white" + end + local _, hex_color = get_color(data.color) + if not hex_color then + return false + end + + if huds_idx[type][player] then + player:hud_remove(huds_idx[type][player]) + end + + --TODO: enable this code then Fleckenstein's pr get merged + --[[ + local bold + if data.bold == "true" then + bold = true + else + bold = false + end + + local italic + if data.italic == "true" then + italic = true + else + italic = false + end]] + + local stay = mcl_title.params_get(player).stay + + huds_idx[type][player] = player:hud_add({ + hud_elem_type = "text", + position = mcl_title.layout[type].position, + alignment = mcl_title.layout[type].alignment, + text = data.text, + --bold = bold, + --italic = italic, + size = {x = mcl_title.layout[type].size}, + number = hex_color, + z_index = 1100, + }) + + minetest.after(stay, function() + if huds_idx[type][player] then + player:hud_remove(huds_idx[type][player]) + end + huds_idx[type][player] = nil + end) + return true +end + +function mcl_title.remove(player, type) + if huds_idx[type][player] then + player:hud_remove(huds_idx[type][player]) + end + huds_idx[type][player] = nil +end + +function mcl_title.clear(player) + mcl_title.remove(player, "title") + mcl_title.remove(player, "subtitle") + mcl_title.remove(player, "actionbar") +end + +minetest.register_on_dieplayer(function(player) + mcl_title.clear(player) +end) + + +--TEMP STUFF!! +--TODO: remove then testing/tweaking done +minetest.register_chatcommand("title", { + func = function(name, param) + local player = minetest.get_player_by_name(name) + mcl_title.set(player, "title", {text=param, color="gold"}) + end, +}) + +minetest.register_chatcommand("subtitle", { + func = function(name, param) + local player = minetest.get_player_by_name(name) + mcl_title.set(player, "subtitle", {text=param, color="gold"}) + end, +}) + +minetest.register_chatcommand("actionbar", { + func = function(name, param) + local player = minetest.get_player_by_name(name) + mcl_title.set(player, "actionbar", {text=param, color="gold"}) + end, +}) + +minetest.register_chatcommand("timeout", { + func = function(name, param) + local player = minetest.get_player_by_name(name) + mcl_title.params_set(player, {stay = 600}) + end, +}) + +minetest.register_chatcommand("all", { + func = function(name, param) + local player = minetest.get_player_by_name(name) + mcl_title.params_set(player, {stay = 600}) + mcl_title.set(player, "title", {text=param, color="gold"}) + mcl_title.set(player, "subtitle", {text=param, color="gold"}) + mcl_title.set(player, "actionbar", {text=param, color="gold"}) + end, +}) \ No newline at end of file diff --git a/mods/HUD/mcl_title/mod.conf b/mods/HUD/mcl_title/mod.conf new file mode 100644 index 000000000..0f29a8118 --- /dev/null +++ b/mods/HUD/mcl_title/mod.conf @@ -0,0 +1,4 @@ +name = mcl_title +description = Add an API to add in HUD title +depends = mcl_colors +author = AFCMS \ No newline at end of file From 6b53dda79bf8b31309206ea29b6e84184cc17fc7 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 2 Jun 2021 00:25:15 +0200 Subject: [PATCH 130/720] add todo list --- mods/HUD/mcl_title/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index 9975ff840..41b4dfc4a 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -1,4 +1,5 @@ --TODO: use SSCSM to reduce lag and network trafic (just send modchannel messages) +--TODO: fadeIn and fadeOut animation (needs engine change: SSCSM or native support) --TODO: exactly mc like layout local huds_idx = {} From c8102838cb80e5ada8649a7ccf48c1c288a4de2b Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 2 Jun 2021 00:26:10 +0200 Subject: [PATCH 131/720] add missing TODO entry (bold+italic) --- mods/HUD/mcl_title/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index 41b4dfc4a..807ed19c9 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -65,6 +65,7 @@ function mcl_title.set(player, type, data) end --TODO: enable this code then Fleckenstein's pr get merged + --TODO: be sure API is correctly used --[[ local bold if data.bold == "true" then From a4fc38ffcc8d80e5af805a815adf3aa595fdfabf Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 2 Jun 2021 09:32:27 +0200 Subject: [PATCH 132/720] Add polish translation of mcl_armor_stand --- mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.pl.tr | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.pl.tr diff --git a/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.pl.tr b/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.pl.tr new file mode 100644 index 000000000..cc134a2f0 --- /dev/null +++ b/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.pl.tr @@ -0,0 +1,6 @@ +# textdomain: mcl_armor_stand +Armor Stand=Stojak na zbroję +An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand.=Stojak na zbroję jest obiektem dekoracyjnym, na którym można wystawiać różne części zbroi. Cokolwiek co może być noszone przez gracza jako zbroja, może być wystawione na stojaku na zbroję. +Just place an armor item on the armor stand. To take the top piece of armor from the armor stand, select your hand and use the place key on the armor stand.=Aby to zrobić po prostu postaw przedmiot zbroi na stojaku. Aby wziąć górną część zbroi ze stojaka wybierz swoją dłoń i kliknij przycisk użyj na stojaku. +Displays pieces of armor=Prezentuje części zbroi + From 4bd49f7eb0d173baac1e7321c248e10bbe47b767 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 2 Jun 2021 09:40:08 +0200 Subject: [PATCH 133/720] Add polish translation of mcl_observers --- .../ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.pl.tr | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.pl.tr diff --git a/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.pl.tr b/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.pl.tr new file mode 100644 index 000000000..9c789be00 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.pl.tr @@ -0,0 +1,6 @@ +# textdomain: mcl_observers +Observer=Detektor +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.=Detektor jest mechanizmem czerwienitowym, który obserwuje blok przed sobą i wysyła krótki puls energii czerwienitowej gdy blok ten się zmienia. +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.=Postaw detektor przed blokiem, który chcesz obserwować z "twarzą" wskazującą na ten blok. Strzałka wskazuje na stronę z wyjściem, która jest po przeciwnej stronie do "twarzy". Możesz postawić tutaj czerwienit lub dowolny inny komponent. +Emits redstone pulse when block in front changes=Wysyła sygnał czerwienitowy gdy blok przed nim się zmienia + From 06984fa4864238481909bf887601dea8c6f9cbc3 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 2 Jun 2021 09:45:16 +0200 Subject: [PATCH 134/720] Add polish translation of mesecons_pistons --- .../mesecons_pistons/locale/mesecons_pistons.pl.tr | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.pl.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.pl.tr b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.pl.tr new file mode 100644 index 000000000..8f7f45191 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.pl.tr @@ -0,0 +1,9 @@ +# textdomain: mesecons_pistons +This block can have one of 6 possible orientations.=Ten blok może mieć 6 możliwych orientacji. +Piston=Tłok +A piston is a redstone component with a pusher which pushes the block or blocks in front of it when it is supplied with redstone power. Not all blocks can be pushed, however.=Tłoki są mechanizmami czerwienitowymi które popycha blok lub bloki stojące przed nim gdy dostarczy się mu energię czerwienitową, jednak nie wszystkie bloki mogą zostać popchnięte. +Sticky Piston=Lepki tłok +A sticky piston is a redstone component with a sticky pusher which can be extended and retracted. It extends when it is supplied with redstone power. When the pusher extends, it pushes the block or blocks in front of it. When it retracts, it pulls back the single block in front of it. Note that not all blocks can be pushed or pulled.=Lepki tłok jest mechanizmem czerwienitowym z lepkim wysięgnikiem, który można wysuwać i wsuwać. Wysuwa się gdy dostarczana jest energia czerwienitowa. Gdy się wysuwa popycha on blok lub bloki znajdujące się przed nim. Gdy się wsuwa przyciąga on pojedynczy blok przed nim. Nie wszystkie bloki mogą być przesuwane i przyciągane. +Pushes block when powered by redstone power=Popycha blok gdy jest zasilony czerwienitem +Pushes or pulls block when powered by redstone power=Popycha lub przyciąga blok gdy jest zasilany czerwienitem + From 7e64470f7086c2978f0ad48710d6c0f253b6c3cb Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 2 Jun 2021 11:07:31 +0200 Subject: [PATCH 135/720] fix future API usage of bold+italic pr --- mods/HUD/mcl_title/init.lua | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index 807ed19c9..83277b3bf 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -64,22 +64,10 @@ function mcl_title.set(player, type, data) player:hud_remove(huds_idx[type][player]) end - --TODO: enable this code then Fleckenstein's pr get merged - --TODO: be sure API is correctly used - --[[ - local bold - if data.bold == "true" then - bold = true - else - bold = false - end + --TODO: enable this code then Fleckenstein's pr get merged (in about 5-6 years) - local italic - if data.italic == "true" then - italic = true - else - italic = false - end]] + --if data.bold == nil then data.bold = false end + --if data.italic == nil then data.italic = false end local stay = mcl_title.params_get(player).stay @@ -88,8 +76,8 @@ function mcl_title.set(player, type, data) position = mcl_title.layout[type].position, alignment = mcl_title.layout[type].alignment, text = data.text, - --bold = bold, - --italic = italic, + --bold = data.bold, + --italic = data.italic, size = {x = mcl_title.layout[type].size}, number = hex_color, z_index = 1100, From b9fd1ac227c59407a92ca208d1fd71681c7952f0 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 2 Jun 2021 11:12:15 +0200 Subject: [PATCH 136/720] credit digminecraft for the tutorial --- mods/HUD/mcl_title/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index 83277b3bf..a2fd82b24 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -1,3 +1,5 @@ +--Based on https://www.digminecraft.com/game_commands/title_command.php + --TODO: use SSCSM to reduce lag and network trafic (just send modchannel messages) --TODO: fadeIn and fadeOut animation (needs engine change: SSCSM or native support) --TODO: exactly mc like layout From b06bc276dc5a5fa7872346f4e561e1492a71210a Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 2 Jun 2021 11:34:32 +0200 Subject: [PATCH 137/720] Add polish translation of mesecons_commandblock --- .../locale/mesecons_commandblock.pl.tr | 31 +++++++++++++++++++ tools/dicts/polish.dic | 2 ++ 2 files changed, 33 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.pl.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.pl.tr b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.pl.tr new file mode 100644 index 000000000..6ee1afcad --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.pl.tr @@ -0,0 +1,31 @@ +# textdomain: mesecons_commandblock +Error: The command “@1” does not exist; your command block has not been changed. Use the “help” chat command for a list of available commands.=Błąd: Komenda "@1" nie istnieje; twój blok komend nie został zmieniony. Użyj komendy "help" aby zobaczyć listę dostępnych komend. +Error: The command “@1” does not exist; your command block has not been changed. Use the “help” chat command for a list of available commands. Hint: Try to remove the leading slash.=Błąd: Komenda "@1" nie istnieje; twój blok komend nie został zmieniony. Użyj komendy "help" aby zobaczyć listę dostępnych komend. Wskazówka: Spróbuj usunąć poprzedzający slesz. +Error: You have insufficient privileges to use the command “@1” (missing privilege: @2)! The command block has not been changed.=Błąd: Masz niewystarczające uprawnienia by użyć komendy "@1" (brakujący przywilej: @2)! Blok komend nie został zmieniony. +Error: No commander! Block must be replaced.=Blok: Brak komendanta! Blok musi zostać zamieniony. +Commander: @1=Komendant: @1 +Submit=Zatwierdź +No commands.=Brak komend. +Commands:=Komendy: +Help=Pomoc +Placement denied. You need the “maphack” privilege to place command blocks.=Odmówiono postawienia. Potrzebujesz przywileju "maphack" aby stawiać bloki komend. +Command Block=Blok komend +Command blocks are mighty redstone components which are able to alter reality itself. In other words, they cause the server to execute server commands when they are supplied with redstone power.=Bloki komend są potężnymi mechanizmami czerwienitowymi, które są w stanie zmieniać samą rzeczywistość. Innymi słowy powodują one, że serwer wykonuje komendy gdy dostarczy się im energię czerwienitową. +Everyone can activate a command block and look at its commands, but not everyone can edit and place them.=Każdy może aktywować blok komend i patrzeć na ich komendy, ale nie wszyscy mogą edytować i kłaść je. +To view the commands in a command block, use it. To activate the command block, just supply it with redstone power. This will execute the commands once. To execute the commands again, turn the redstone power off and on again.=Aby zobaczyć komendy w bloku komend, kliknij użyj na nim. Aby aktywować blok komend zasil go energią czerwienitową. To wykona komendy raz. Aby wykonać je ponownie wyłącz, a następnie włącz energię. +To be able to place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Use the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced usage > Server Commands” to understand how commands work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.=Aby być w stanie kłaść bloki komend i zmieniać ich komendy musisz być w trybie kreatywnym i posiadać przywilej "maphack". Nowy blok komend nie posiada żadnych komend i nie robi nic. Użyj bloku komend (w trybie kreatywnym!) aby zmienić jego komendy. Przeczytaj wpis w pomocy "Zaawansowane użycie > Komendy serwera" aby dowiedzieć się jak komendy działają. Każda linia zawiera pojedynczą komendę. Wprowadzasz je tak jak w konsoli, ale bez poprzedzającego slesza. Komendy będą wykonywane od góry do dołu. +All commands will be executed on behalf of the player who placed the command block, as if the player typed in the commands. This player is said to be the “commander” of the block.=Wszystkie komendy będą formalnie wykonane przez gracza, który postawił blok komend, jakby to ten gracz wpisał komendę. Ten gracz nazywany jest komendantem bloku. +Command blocks support placeholders, insert one of these placeholders and they will be replaced by some other text:=Bloki komend wspierają zamienniki, wstaw jeden z nich a zostaną one zastąpione przez jakiś inny tekst: +• “@@c”: commander of this command block=• "@@c": komendant tego bloku komend +• “@@n” or “@@p”: nearest player from the command block=• "@@n" lub "@@p": gracz najbliżej tego bloku komend +• “@@f” farthest player from the command block=• "@@f": gracz najdalej od tego bloku komend +• “@@r”: random player currently in the world=• "@@r": losowy gracz znajdujący się w świecie +• “@@@@”: literal “@@” sign=• "@@@@": dosłowny znak "@@" +Example 1:@n time 12000@nSets the game clock to 12:00=Przykład 1:@n time 12000@nUstawia zegar gry na 12:00 +Example 2:@n give @@n mcl_core:apple 5@nGives the nearest player 5 apples=Przykład 2:@n give @@n mcl_core:apple 5@nDaje najbliższemu graczowi 5 jabłek +Access denied. You need the “maphack” privilege to edit command blocks.=Odmowa dostępu. Potrzebujesz przywileju "maphack" by zmieniać bloki komend. +Editing the command block has failed! You can only change the command block in Creative Mode!=Edycja bloku komend nieudana! Możesz zmieniać bloki komend tylko w trybie kreatywnym. +Editing the command block has failed! The command block is gone.=Edycja bloku komend nieudana! Bloku komend już nie ma. +Executes server commands when powered by redstone power=Wykonuje komendy serwera gdy jest zasilany energią czerwienitową +Command blocks are not enabled on this server=Bloki komend nie są włączone na tym serwerze + diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index e303c5787..952ae57eb 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -102,6 +102,8 @@ słowo1 słowo2 słowo3 slesz +slesza +mcl_core giveme spawnentity spawnowaniem From 6715aecd636e3891804304104f818e891d3813b9 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 2 Jun 2021 12:13:16 +0200 Subject: [PATCH 138/720] Add polish translation of mcl_comparators --- .../mcl_comparators/locale/mcl_comparators.pl.tr | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.pl.tr diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.pl.tr b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.pl.tr new file mode 100644 index 000000000..e20d253c8 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.pl.tr @@ -0,0 +1,13 @@ +# textdomain: mcl_comparators +Redstone comparators are multi-purpose redstone components.=Komparatory są wielofunkcyjnymi mechanizmami czerwienitowymi. +They can transmit a redstone signal, detect whether a block contains any items and compare multiple signals.=Mogą one przesyłać sygnał czerwienitowy, wykrywać czy blok zawiera przedmioty i porównywać wiele sygnałów. +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.=Komparator ma jedno główne wejście, 2 wejścia poboczne i jedno wyjście. Wyjście jest wskazywane przez strzałkę, wejście jest na przeciwko. Pozostałe dwa wejścia są poboczne. +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.=Główny wejście można zasilać na 2 sposoby: Może być zasilany bezpośrednio energią czerwienitową jak każdy inny komponent, lub gdy przed nim postawiony jest kontener zawierający przynajmniej jeden przedmiot. +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.=Wejścia poboczne są aktywowane przez zwykłą energię czerwienitową. Komparator może działać w dwóch trybach: tryb przekazywania oraz tryb odejmowania. Początkowo jest w trybie przekazywania, a tryb może być zmienione przez użycie go. +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.=Tryb przekazywania:@nPrzednia pochodnia jest niezaświecona i obniżona. Wyjście jest zasilane wtedy i tylko wtedy gdy wejście główne jest zasilane. Wejścia boczne są ignorowane. +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.=Tryb odejmowania:@nPrzednia pochodnia jest zaświecona. Wyjście jest zasilane wtedy i tylko gdy zasilane jest główne wejście, a wejścia boczne nie są. +Redstone Comparator=Komparator +Redstone Comparator (Subtract)=Komparator (odejmowanie) +Redstone Comparator (Powered)=Komparator (zasilony) +Redstone Comparator (Subtract, Powered)=Komparator (odejmowanie, zasilony) + From a0d3e92b7082c6d366d99428a4d31632be16c2fd Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 2 Jun 2021 13:08:39 +0200 Subject: [PATCH 139/720] Update polish translation of mcl_death_messages --- .../locale/mcl_death_messages.pl.tr | 115 +++++++++--------- 1 file changed, 57 insertions(+), 58 deletions(-) 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 index 5ca027663..65fcde760 100644 --- a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.pl.tr +++ b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.pl.tr @@ -1,60 +1,59 @@ # 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. +@1 went up in flames=@1 stanęła w płomieniach +@1 walked into fire whilst fighting @2=@1 weszła w płomienie podczas walki z @2 +@1 was struck by lightning=@1 została trafiona piorunem +@1 was struck by lightning whilst fighting @2=@1 została trafiona piorunem z @2 +@1 burned to death=@1 została spalona żywcem +@1 was burnt to a crisp whilst fighting @2=@1 została usmażona podczas walki z @2 +@1 tried to swim in lava=@1 próbowała pływać w lawie +@1 tried to swim in lava to escape @2=@1 próbowała pływać w lawie by uciec od @20 +@1 discovered the floor was lava=@1 odkryła, że podłoga to lawa +@1 walked into danger zone due to @2=@1 weszła do niebezpiecznej strony przez @2 +@1 suffocated in a wall=@1 udusiła się w ścianie +@1 suffocated in a wall whilst fighting @2=@1 udusiła się w ścianie podczas walki z @2 +@1 drowned=@1 utopiła się +@1 drowned whilst trying to escape @2=@1 utopiła się podczas ucieczki przed @2 +@1 starved to death=@1 zagłodziła się na śmierć +@1 starved to death whilst fighting @2=@1 zagłodziła się na śmierć podczas walki z @2 +@1 was pricked to death=@1 została zakłuta na śmierć +@1 walked into a cactus whilst trying to escape @2=@1 weszła w kaktus podczas ucieczki przed @2 +@1 hit the ground too hard=@1 zbyt twardo wylądowała +@1 hit the ground too hard whilst trying to escape @2=@1 zby twardo wylądowała podczas walki z @2 +@1 experienced kinetic energy=@1 doświadczyła energii kinetycznej +@1 experienced kinetic energy whilst trying to escape @2=@1 doświadczyła energii kinetycznej podczas ucieczki przed @2 +@1 fell out of the world=@1 wyleciała poza świat +@1 didn't want to live in the same world as @2=@1 nie chciała żyć w tym samym świecie co @2 +@1 died=@1 umarła +@1 died because of @2=@1 umarła przez @2 +@1 was killed by magic=@1 została zabita magią +@1 was killed by magic whilst trying to escape @2=@1 została zabita magią podczas ucieczki przed @2 +@1 was killed by @2 using magic=@1 została zabita przez @2 korzystając z magii +@1 was killed by @2 using @3=@1 została zabita przez @2 korzystając z @3 +@1 was roasted in dragon breath=@1 została usmażona przez oddech smoka +@1 was roasted in dragon breath by @2=@1 została usmażona przez oddech smoka od @2 +@1 withered away=@1 odeszła na wieki +@1 withered away whilst fighting @2=@1 odeszła na wieki podczas walki z @2 +@1 was killed by magic=@1 została zabita magią +@1 was shot by a skull from @2=@1 została zastrzelona czaszką przez @2 +@1 was squashed by a falling anvil=@1 została zmiażdżona spadającym kowadłem +@1 was squashed by a falling anvil whilst fighting @2=@1 została zmiażdżona spadającym kowadłem podczas walki z @2 +@1 was squashed by a falling block=@1 została zmiażdżona spadającym blokiem +@1 was squashed by a falling block whilst fighting @2=@1 została zmiażdżona spadającym blokiem podczas walki z @2 +@1 was slain by @2=@1 została zabita przez @2 +@1 was slain by @2 using @3=@1 została zabita przez @2 przy użyciu @3 +@1 was slain by @2=@1 została zabita przez @2 +@1 was slain by @2 using @3=@1 została zabita przez @2 przy użyciu @3 +@1 was shot by @2=@1 została zastrzelona przez @2 +@1 was shot by @2 using @3=@1 została zastrzelona przez @2 przy użyciu @3 +@1 was fireballed by @2=@1 została zabita kulą ognia przez @2 +@1 was fireballed by @2 using @3=@1 została zabita kulą ognia przez @2 przy użyciu @3 +@1 was killed trying to hurt @2=@1 została zabita gdy próbowała skrzywdzić @2 +@1 was killed by @3 trying to hurt @2=@1 została zabita przez @3 gdy próbowała skrzywdzić @2 +@1 blew up=@1 wybuchła +@1 was blown up by @2=@1 została wysadzona przez @2 +@1 was blown up by @2 using @3=@1 została wysadzona przez @2 przy użyciu @3 +@1 was squished too much=@1 została zbyt mocno ściśnięta +@1 was squashed by @2=@1 została ściśnięta przez @2 +@1 went off with a bang=@1 odeszła z hukiem +@1 went off with a bang due to a firework fired from @3 by @2=@1 odeszła z hukiem przez fajerwerki wystrzelone z @3 przez @2 From 0132d0569ff3154eaed311a29143dfca35d9125d Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 2 Jun 2021 13:17:55 +0200 Subject: [PATCH 140/720] Update polish translation of several files --- mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr | 3 ++- mods/HELP/doc/doc_items/locale/doc_items.pl.tr | 2 +- mods/HUD/awards/locale/awards.pl.tr | 12 ++++++------ mods/ITEMS/mcl_banners/locale/mcl_banners.pl.tr | 2 +- mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr | 2 +- mods/ITEMS/mcl_chests/locale/mcl_chests.pl.tr | 2 +- .../ITEMS/mcl_enchanting/locale/mcl_enchanting.pl.tr | 4 ++-- mods/ITEMS/mcl_nether/locale/mcl_nether.pl.tr | 2 -- 8 files changed, 14 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 dd071bc10..17b5183bc 100644 --- a/mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr @@ -6,6 +6,7 @@ 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 [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. +Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Use [Sneak] to leave the boat, punch the boat to make it drop as an item.=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ć. Kliknij [Skradanie] by z niej wyjść, uderz ją by wziąć ją jako przedmiot. Spruce Boat=Świerkowa łódź Water vehicle=Pojazd wodny +Sneak to dismount=Skradaj się by opuścić łódź diff --git a/mods/HELP/doc/doc_items/locale/doc_items.pl.tr b/mods/HELP/doc/doc_items/locale/doc_items.pl.tr index 2b0045ef8..8ff945368 100644 --- a/mods/HELP/doc/doc_items/locale/doc_items.pl.tr +++ b/mods/HELP/doc/doc_items/locale/doc_items.pl.tr @@ -2,7 +2,7 @@ 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 +@1×@2=@1×@2 # Itemname (25%) @1 (@2%)=@1 (@2%) # Itemname (<0.5%) diff --git a/mods/HUD/awards/locale/awards.pl.tr b/mods/HUD/awards/locale/awards.pl.tr index c81130275..76d5b9161 100644 --- a/mods/HUD/awards/locale/awards.pl.tr +++ b/mods/HUD/awards/locale/awards.pl.tr @@ -6,12 +6,11 @@ @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: @2=@1: @2 @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 @@ -28,9 +27,9 @@ 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 +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. @@ -60,4 +59,5 @@ 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. - +Mine a block: @1=Wykop blok: @1 +Mine blocks: @1×@2=Wykop blok: @1×@2 diff --git a/mods/ITEMS/mcl_banners/locale/mcl_banners.pl.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.pl.tr index 31c12d88a..9a21c08cf 100644 --- a/mods/ITEMS/mcl_banners/locale/mcl_banners.pl.tr +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.pl.tr @@ -73,5 +73,5 @@ You can copy the pattern of a banner by placing two banners of the same color in @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 +And @1 additional layers=I @1 dodatkowych warstw Paintable decoration=Dekoracja do malowania diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr index 2f77c77d0..58826d9ab 100644 --- a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr @@ -1,7 +1,7 @@ # 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ą 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ę. +Place a water bucket 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) diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.pl.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.pl.tr index 2af4fad22..b4eee74eb 100644 --- a/mods/ITEMS/mcl_chests/locale/mcl_chests.pl.tr +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.pl.tr @@ -24,7 +24,7 @@ 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ą. +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.=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 diff --git a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pl.tr b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pl.tr index fa19d463b..179702d79 100644 --- a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pl.tr +++ b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pl.tr @@ -76,8 +76,8 @@ Reflects some of the damage taken when hit, at the cost of reducing durability w Unbreaking=Niezniszczalność Increases item durability.=Zwiększa wytrzymałość przedmiotu. Inventory=Ekwipunek -@1 × Lapis Lazuli=@1 × Lazuryt -Enchantment levels: @1=Poziom zaklęcia: @1 +@1 Lapis Lazuli=@1 Lazurytów +@1 Enchantment Levels=@1 poziomów zaklęcia Level requirement: @1=Wymagany poziom: @1 Enchant an item=Zaczaruj przedmiot []= [] diff --git a/mods/ITEMS/mcl_nether/locale/mcl_nether.pl.tr b/mods/ITEMS/mcl_nether/locale/mcl_nether.pl.tr index fe797a63c..11edbe3d4 100644 --- a/mods/ITEMS/mcl_nether/locale/mcl_nether.pl.tr +++ b/mods/ITEMS/mcl_nether/locale/mcl_nether.pl.tr @@ -38,5 +38,3 @@ Place this item on soul sand to plant it and watch it grow.=Postaw ten przedmiot Burns your feet=Pali w stopy Grows on soul sand=Rośnie na piasku dusz Reduces walking speed=Zmniejsza prędkość poruszania -@1 has become one with the lava.=@1 stała się jednym z lawą -@1 has been consumed by the lava.=@1 została skonsumowana przez lawę From f9dbfd8eb5d7c36e762564f56fa41137365b282a Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 2 Jun 2021 13:26:41 +0200 Subject: [PATCH 141/720] Update polish translation of mcl_maps --- mods/ITEMS/mcl_maps/locale/mcl_maps.pl.tr | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_maps/locale/mcl_maps.pl.tr b/mods/ITEMS/mcl_maps/locale/mcl_maps.pl.tr index f83b9f516..de6ff84d6 100644 --- a/mods/ITEMS/mcl_maps/locale/mcl_maps.pl.tr +++ b/mods/ITEMS/mcl_maps/locale/mcl_maps.pl.tr @@ -1,10 +1,8 @@ # 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ć). +Rightclick to create a filled map (which can't be stacked anymore).=Kliknij prawy przycisk aby stworzyć wypełnioną mapę (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ę. +Shows a map image.=Pokazuje obraz mapy. +When created, the map saves the nearby area as an image that can be viewed any time by holding the map.=Gdy są utworzone mapy zapisują obszar okolicy jako obrazek, który może być oglądany przez trzymanie mapy w rękach. +Hold the map in your hand. This will display a map on your screen.=Weź mapę do ręki. To pokaże mapę na twoim ekranie. From 753a8ce488578cba318df6614e98794d207223f3 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 2 Jun 2021 13:32:15 +0200 Subject: [PATCH 142/720] Update polish translation of mcl_core --- mods/ITEMS/mcl_core/locale/mcl_core.pl.tr | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr index d77865101..832a47830 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr @@ -202,12 +202,30 @@ Stained glass is a decorative and mostly transparent block which comes in variou 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ń +Stripped Acacia Log=Okorowany pień akacji +Stripped Acacia Wood=Okorowane drewno akacji +Stripped Birch Log=Okorowany pień brzozy +Stripped Birch Wood=Okorowane drewno brzozy +Stripped Dark Oak Log=Okorowany pień ciemnego dębu +Stripped Dark Oak Wood=Okorowane drewno ciemnego dębu +Stripped Jungle Log=Okorowany pień tropikalnego drzewa +Stripped Jungle Wood=Okorowane drewno tropikalnego drzewa +Stripped Oak Log=Okorowany pień dębu +Stripped Oak Wood=Okorowane drewno dębu +Stripped Spruce Log=Okorowany pień świerku +Stripped Spruce Wood=Okorowane drewno świerku 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ą 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 stripped trunk of an acacia tree.=Okorowany pień drzewa akacji. +The stripped trunk of an birch tree.=Okorowany pień drzewa brozy. +The stripped trunk of an dark oak tree.=Okorowany pień drzewa ciemnego dębu. +The stripped trunk of an jungle tree.=Okorowany pień drzewa tropikalnego. +The stripped trunk of an oak tree.=Okorowany pień drzewa dębu. +The stripped trunk of an spruce tree.=Okorowany pień drzewa świerkowego. 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. @@ -216,6 +234,7 @@ 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 decorative block.=Jest to blok dekoracyjny. 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. From 522553fcd08dd53c0ad74b7c7ba36cba15c4e08d Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 2 Jun 2021 13:33:10 +0200 Subject: [PATCH 143/720] Add polish translation of mcl_fireworks --- mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.pl.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.pl.tr diff --git a/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.pl.tr b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.pl.tr new file mode 100644 index 000000000..d7d6db185 --- /dev/null +++ b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.pl.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_fireworks +Firework Rocket=Fajerwerkowa rakieta +Flight Duration:=Czas lotu: + From 198d3bff532c4ef4c860faa4f470bbadcf27362e Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 2 Jun 2021 13:45:20 +0200 Subject: [PATCH 144/720] Fix textdomain of mcl_craftguide --- mods/HELP/mcl_craftguide/locale/mcl_craftguide.pl.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.pl.tr b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.pl.tr index 72e220531..064fd90d3 100644 --- a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.pl.tr +++ b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.pl.tr @@ -1,4 +1,4 @@ -# textdomain: craftguide +# textdomain: mcl_craftguide Any shulker box=Dowolna skrzynia shulkerowa Any wool=Dowolna wełna Any wood planks=Dowolne deski From dfd9737d18a6d12283b2963571dc0a00b81d0b48 Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 2 Jun 2021 14:49:14 +0000 Subject: [PATCH 145/720] Fix #1777 (discord link in readme) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ca4d01959..45577f5fe 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ Please report all bugs and missing Minecraft features here: ## Chating with the community Join our discord server at: - + ## Project description The main goal of **MineClone 2** is to be a clone of Minecraft and to be released as free software. From 7464b8ff48ddf3b71743513ffbf8781520ed5850 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 3 Jun 2021 18:04:54 +0000 Subject: [PATCH 146/720] Add bonemeal particle texture --- .../textures/mcl_particles_bonemeal.png | Bin 0 -> 3356 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/CORE/mcl_particles/textures/mcl_particles_bonemeal.png diff --git a/mods/CORE/mcl_particles/textures/mcl_particles_bonemeal.png b/mods/CORE/mcl_particles/textures/mcl_particles_bonemeal.png new file mode 100644 index 0000000000000000000000000000000000000000..684df986508ce902058e048ee22b61d9fac58223 GIT binary patch literal 3356 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 Date: Thu, 3 Jun 2021 18:13:13 +0000 Subject: [PATCH 147/720] Add code for bonemeal particles --- mods/ITEMS/mcl_dye/init.lua | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index 6771a95e5..11e5d08f4 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -128,6 +128,24 @@ for _, row in ipairs(dyelocal.dyes) do end -- Bone Meal +local function bone_meal_particle(pos) + minetest.add_particlespawner({ + amount = 10, + time = 0.1, + minpos = { x = pos.x - 0.5, y = pos.y - 0.5, z = pos.z - 0.5 }, + maxpos = { x = pos.x + 0.5, y = pos.y + 0.5, z = pos.z + 0.5 }, + minvel = { x = 0, y = 0, z = 0}, + maxvel = { x = 0, y = 0, z = 0}, + minacc = { x = 0, y = 0, z = 0}, + maxacc = { x = 0, y = 0, z = 0}, + minexptime = 1, + maxexptime = 4, + minsize = 0.7, + maxsize = 2.4, + texture = "mcl_particles_bonemeal.png^[colorize:#00EE00:125", -- TODO: real MC color + glow = 5, + }) +end function mcl_dye.apply_bone_meal(pointed_thing) -- Bone meal currently spawns all flowers found in the plains. @@ -166,11 +184,13 @@ function mcl_dye.apply_bone_meal(pointed_thing) local n = minetest.get_node(pos) if n.name == "" then return false end if minetest.get_item_group(n.name, "sapling") >= 1 then + bone_meal_particle(pos) -- Saplings: 45% chance to advance growth stage if math.random(1,100) <= 45 then return mcl_core.grow_sapling(pos, n) end elseif minetest.get_item_group(n.name, "mushroom") == 1 then + bone_meal_particle(pos) -- Try to grow huge mushroom -- Must be on a dirt-type block @@ -193,7 +213,7 @@ function mcl_dye.apply_bone_meal(pointed_thing) return false end -- 40% chance - if math.random(1,100) <= 40 then + if math.random(1, 100) <= 40 then -- Check space requirements for i=1,3 do local cpos = vector.add(pos, {x=0, y=i, z=0}) @@ -220,30 +240,39 @@ function mcl_dye.apply_bone_meal(pointed_thing) return false -- Wheat, Potato, Carrot, Pumpkin Stem, Melon Stem: Advance by 2-5 stages elseif string.find(n.name, "mcl_farming:wheat_") then + bone_meal_particle(pos) local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_wheat", pos, n, stages, true) elseif string.find(n.name, "mcl_farming:potato_") then + bone_meal_particle(pos) local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_potato", pos, n, stages, true) elseif string.find(n.name, "mcl_farming:carrot_") then + bone_meal_particle(pos) local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_carrot", pos, n, stages, true) elseif string.find(n.name, "mcl_farming:pumpkin_") then + bone_meal_particle(pos) local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_pumpkin_stem", pos, n, stages, true) elseif string.find(n.name, "mcl_farming:melontige_") then + bone_meal_particle(pos) local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_melon_stem", pos, n, stages, true) elseif string.find(n.name, "mcl_farming:beetroot_") then + bone_meal_particle(pos) -- Beetroot: 75% chance to advance to next stage if math.random(1, 100) <= 75 then return mcl_farming:grow_plant("plant_beetroot", pos, n, 1, true) end elseif n.name == "mcl_cocoas:cocoa_1" or n.name == "mcl_cocoas:cocoa_2" then + bone_meal_particle(pos) -- Cocoa: Advance by 1 stage mcl_cocoas.grow(pos) return true elseif minetest.get_item_group(n.name, "grass_block") == 1 then + local grass_block_pos = {x = pos.x, y = pos.y + 1, z = pos.z} + bone_meal_particle(grass_block_pos) -- Grass Block: Generate tall grass and random flowers all over the place for i = -2, 2 do for j = -2, 2 do @@ -285,19 +314,24 @@ function mcl_dye.apply_bone_meal(pointed_thing) -- Double flowers: Drop corresponding item elseif n.name == "mcl_flowers:rose_bush" or n.name == "mcl_flowers:rose_bush_top" then + bone_meal_particle(pos) minetest.add_item(pos, "mcl_flowers:rose_bush") return true elseif n.name == "mcl_flowers:peony" or n.name == "mcl_flowers:peony_top" then + bone_meal_particle(pos) minetest.add_item(pos, "mcl_flowers:peony") return true elseif n.name == "mcl_flowers:lilac" or n.name == "mcl_flowers:lilac_top" then + bone_meal_particle(pos) minetest.add_item(pos, "mcl_flowers:lilac") return true elseif n.name == "mcl_flowers:sunflower" or n.name == "mcl_flowers:sunflower_top" then + bone_meal_particle(pos) minetest.add_item(pos, "mcl_flowers:sunflower") return true elseif n.name == "mcl_flowers:tallgrass" then + bone_meal_particle(pos) -- Tall Grass: Grow into double tallgrass local toppos = { x=pos.x, y=pos.y+1, z=pos.z } local topnode = minetest.get_node(toppos) @@ -308,6 +342,7 @@ function mcl_dye.apply_bone_meal(pointed_thing) end elseif n.name == "mcl_flowers:fern" then + bone_meal_particle(pos) -- Fern: Grow into large fern local toppos = { x=pos.x, y=pos.y+1, z=pos.z } local topnode = minetest.get_node(toppos) From d391d50eb84a115f8f891c1afa9fae7e0cc0a3a9 Mon Sep 17 00:00:00 2001 From: FinishedFragment Date: Fri, 4 Jun 2021 16:44:11 +0000 Subject: [PATCH 148/720] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 45577f5fe..aeab8ab1a 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ Please report all bugs and missing Minecraft features here: -## Chating with the community +## Chatting with the community Join our discord server at: From f3322fd7cb29c7d658be3f73e4ae2444277bfe01 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 5 Jun 2021 13:17:03 +0000 Subject: [PATCH 149/720] Fix #1779 (potion arrows are invisible) --- mods/ITEMS/mcl_potions/tipped_arrow.lua | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_potions/tipped_arrow.lua b/mods/ITEMS/mcl_potions/tipped_arrow.lua index 3991b2773..ab55cb72a 100644 --- a/mods/ITEMS/mcl_potions/tipped_arrow.lua +++ b/mods/ITEMS/mcl_potions/tipped_arrow.lua @@ -21,12 +21,7 @@ local function arrow_image(colorstring, opacity) if not opacity then opacity = 127 end - return {"mcl_bows_arrow.png^[transformFX^(mcl_bows_arrow_overlay.png^[transformFX^[colorize:"..colorstring..":"..tostring(opacity)..")", - "mcl_bows_arrow.png^[transformFX^(mcl_bows_arrow_overlay.png^[transformFX^[colorize:"..colorstring..":"..tostring(opacity)..")", - "mcl_bows_arrow_back.png^[colorize:"..colorstring..":"..tostring(opacity), - "mcl_bows_arrow_front.png^[colorize:"..colorstring..":"..tostring(opacity), - "mcl_bows_arrow.png^(mcl_bows_arrow_overlay.png^[colorize:"..colorstring..":"..tostring(opacity)..")", - "mcl_bows_arrow.png^[transformFX^(mcl_bows_arrow_overlay.png^[transformFX^[colorize:"..colorstring..":"..tostring(opacity)..")"} + return {"mcl_bows_arrow.png^(mcl_bows_arrow_overlay.png^[colorize:"..colorstring..":"..tostring(opacity)..")"} end local how_to_shoot = minetest.registered_items["mcl_bows:arrow"]._doc_items_usagehelp @@ -105,7 +100,7 @@ function mcl_potions.register_arrow(name, desc, color, def) physical = true, visual = "mesh", mesh = "mcl_bows_arrow.obj", - visual_size = {x=1, y=1}, + visual_size = {x=-1, y=1}, textures = arrow_image(color, 100), collisionbox = {-0.19, -0.125, -0.19, 0.19, 0.125, 0.19}, collide_with_objects = false, @@ -468,4 +463,4 @@ function mcl_potions.register_arrow(name, desc, color, def) if minetest.get_modpath("doc_identifier") then doc.sub.identifier.register_object("mcl_bows:arrow_entity", "craftitems", "mcl_bows:arrow") end -end +end \ No newline at end of file From 28bfb3f141f19537ae520111b071b216bed0f3f9 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 5 Jun 2021 13:19:47 +0000 Subject: [PATCH 150/720] Better arrow overlay texture --- .../textures/mcl_bows_arrow_overlay.png | Bin 260 -> 3065 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_bows/textures/mcl_bows_arrow_overlay.png b/mods/ITEMS/mcl_bows/textures/mcl_bows_arrow_overlay.png index a043eb37eac89aa293ed0de5717391d33ec9bc8f..ee628e29da37776efb17ea2e461195cd45711c0e 100644 GIT binary patch literal 3065 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 Hu0mjf7r+3| delta 242 zcmew<-om8V8Q|y6%O%Cdz`(%k>ERLtq?JIJgAGVpxpNlYWE@;v%!LIzPCT}3x^H4Un{l(`zRMj}*=!73u5C9h z+VG}b!*9xTw=*V(eB2*D-F=~S!oJsj&rMEmKPIN{nA5n&Jn6ETDZ>H{?XRoWa>nMK o4h#&t=39IH{HbVX7ni=Z+$T&6Tq8dp1G Date: Mon, 7 Jun 2021 16:57:34 +0800 Subject: [PATCH 151/720] add .gitignore & *.swp --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..393885da7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Text Editor TMP Files +*.swp From ee21a24fb61705bedfee8b2ad935b1e389018a58 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 7 Jun 2021 17:13:50 +0000 Subject: [PATCH 152/720] Don't register a separate entity for every particle --- mods/ITEMS/mcl_totems/init.lua | 60 ++++++++++++++++------------------ 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index e64404c2c..a6429f7b8 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -7,37 +7,34 @@ end) -- Totem particle registration -- TODO: real MC colors, these are randomly selected colors: local colors = {"#7FFF00", "#698B22", "#BCEE68", "#EEEE00", "#C5F007"} -for c, color in pairs(colors) do - local colorizing = ".png^[colorize:"..color - for n = 1, 4 do - minetest.register_entity("mcl_totems:totem_particle"..n.."_color"..c, { - physical = true, - collide_with_objects = false, - collisionbox = {-0.02,-0.02,-0.02, 0.02,0.02,0.02}, - pointable = false, - visual = "sprite", - visual_size = {x=0.2, y=0.2}, - textures = {"mcl_particles_totem"..n..colorizing}, - spritediv = {x=1, y=1}, - initial_sprite_basepos = {x=0, y=0}, - static_save = false, - glow = 5, - on_activate = function(self, staticdata) - self.object:set_velocity({x = math.random(-4, 4)*math.random(), y = math.random(-1, 4)*math.random(), z = math.random(-4, 4)*math.random()}) - minetest.after(0.3, function() - self.object:set_acceleration({x=0, y=-4, z=0}) - self.object:set_velocity({x=0, y=0, z=0}) - end) - end, - on_step = function(self, dtime) - local r = math.random(1,80) - if r == 1 then - self.object:remove() - end - end +minetest.register_entity("mcl_totems:totem_particle", { + physical = true, + collide_with_objects = false, + collisionbox = {-0.02,-0.02,-0.02, 0.02,0.02,0.02}, + pointable = false, + visual = "sprite", + visual_size = {x=0.2, y=0.2}, + spritediv = {x=1, y=1}, + initial_sprite_basepos = {x=0, y=0}, + static_save = false, + glow = 5, + on_activate = function(self, staticdata) + self.object:set_properties({ + textures = {"mcl_particles_totem"..math.random(1, 4)..".png^[colorize:"..colors[math.random(#colors)]} }) + self.object:set_velocity({x = math.random(-4, 4)*math.random(), y = math.random(-1, 4)*math.random(), z = math.random(-4, 4)*math.random()}) + minetest.after(0.3, function() + self.object:set_acceleration({x=0, y=-4, z=0}) + self.object:set_velocity({x=0, y=0, z=0}) + end) + end, + on_step = function(self, dtime) + local r = math.random(1,50) + if r == 1 then + self.object:remove() + end end -end +}) -- Save the player from death when holding totem of undying in hand mcl_damage.register_modifier(function(obj, damage, reason) @@ -68,11 +65,10 @@ mcl_damage.register_modifier(function(obj, damage, reason) minetest.sound_play({name = "mcl_totems_totem", gain=1}, {pos=ppos, max_hear_distance=16}, true) --Particles - for i = 1, 200 do - local particle = "mcl_totems:totem_particle"..math.random(1, 4).."_color"..math.random(1, 5) + for i = 1, 150 do minetest.after(math.random(1, 2)*math.random(), function() local new_pos = obj:get_pos() - minetest.add_entity({x=new_pos.x, y=new_pos.y + 1, z=new_pos.z}, particle) + minetest.add_entity({x = new_pos.x, y = new_pos.y + 1, z = new_pos.z}, "mcl_totems:totem_particle") end) end From 2603c4768ba34be059b8f3dd175985bc08683cea Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 7 Jun 2021 22:32:05 +0200 Subject: [PATCH 153/720] mcl_title: basic mc like layout (collide with other mods) --- mods/HUD/mcl_title/init.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index a2fd82b24..ffd740b4a 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -1,7 +1,11 @@ ---Based on https://www.digminecraft.com/game_commands/title_command.php +--Based on: +--https://www.digminecraft.com/game_commands/title_command.php +--https://youtu.be/oVrtQRO2hpY --TODO: use SSCSM to reduce lag and network trafic (just send modchannel messages) --TODO: fadeIn and fadeOut animation (needs engine change: SSCSM or native support) +--TODO: allow obfuscating text (needs engine change: SSCSM or native support) +--TODO: allow colorizing and styling of part of the text (NEEDS ENGINE CHANGE!!!) --TODO: exactly mc like layout local huds_idx = {} @@ -13,9 +17,9 @@ huds_idx.actionbar = {} mcl_title = {} mcl_title.defaults = {fadein = 10, stay = 70, fadeout = 20} mcl_title.layout = {} -mcl_title.layout.title = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = -1.3}, size = 5} -mcl_title.layout.subtitle = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = 1.9}, size = 2} -mcl_title.layout.actionbar = {position = {x = 0.5, y = 1}, alignment = {x = 0, y = -15}, size = 1} +mcl_title.layout.title = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = -1.3}, size = 7} +mcl_title.layout.subtitle = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = 1.7}, size = 4} +mcl_title.layout.actionbar = {position = {x = 0.5, y = 1}, alignment = {x = 0, y = -11}, size = 2} local get_color = mcl_util.get_color From 99ccd9ea4c77d09a7e4062f16819a3bbdff9fe53 Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 8 Jun 2021 15:13:00 +0000 Subject: [PATCH 154/720] Fix possible crash --- mods/ITEMS/mcl_totems/init.lua | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index a6429f7b8..1847d579b 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -22,8 +22,11 @@ minetest.register_entity("mcl_totems:totem_particle", { self.object:set_properties({ textures = {"mcl_particles_totem"..math.random(1, 4)..".png^[colorize:"..colors[math.random(#colors)]} }) - self.object:set_velocity({x = math.random(-4, 4)*math.random(), y = math.random(-1, 4)*math.random(), z = math.random(-4, 4)*math.random()}) - minetest.after(0.3, function() + local t = math.random(1, 2)*math.random() + minetest.after(t, function() + self.object:set_velocity({x = math.random(-4, 4)*math.random(), y = math.random(-1, 4)*math.random(), z = math.random(-4, 4)*math.random()}) + end) + minetest.after(0.3 + t, function() self.object:set_acceleration({x=0, y=-4, z=0}) self.object:set_velocity({x=0, y=0, z=0}) end) @@ -65,12 +68,14 @@ mcl_damage.register_modifier(function(obj, damage, reason) minetest.sound_play({name = "mcl_totems_totem", gain=1}, {pos=ppos, max_hear_distance=16}, true) --Particles - for i = 1, 150 do - minetest.after(math.random(1, 2)*math.random(), function() - local new_pos = obj:get_pos() + + minetest.after(0.1, function() + local new_pos = obj:get_pos() + if not new_pos then return end + for i = 1, 150 do minetest.add_entity({x = new_pos.x, y = new_pos.y + 1, z = new_pos.z}, "mcl_totems:totem_particle") - end) - end + end + end) -- Big totem overlay if not hud_totem[obj] then From ee2fa60cae6f151720c1ac7949218f7fee6d4013 Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 9 Jun 2021 14:47:42 +0000 Subject: [PATCH 155/720] local totem particle position --- mods/ITEMS/mcl_totems/init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index 1847d579b..ecdc20da0 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -72,8 +72,9 @@ mcl_damage.register_modifier(function(obj, damage, reason) minetest.after(0.1, function() local new_pos = obj:get_pos() if not new_pos then return end + local particlepos = {x = new_pos.x, y = new_pos.y + 1, z = new_pos.z} for i = 1, 150 do - minetest.add_entity({x = new_pos.x, y = new_pos.y + 1, z = new_pos.z}, "mcl_totems:totem_particle") + minetest.add_entity(particlepos, "mcl_totems:totem_particle") end end) From c350b5158b7e47358f07141ac72b2f188ac171ce Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 9 Jun 2021 18:31:21 +0000 Subject: [PATCH 156/720] Fix #1795 (Don't remove Pumpkin HUD when it is removed on death if keepinventory is enabled) --- mods/ITEMS/mcl_farming/pumpkin.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index b183c1432..bd0d59a12 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -162,7 +162,9 @@ if minetest.get_modpath("mcl_armor") then end end) minetest.register_on_dieplayer(function(player) - remove_pumpkin_hud(player) + if minetest.settings:get("mcl_keepInventory") ~= "true" then + remove_pumpkin_hud(player) + end end) minetest.register_on_leaveplayer(function(player) pumpkin_hud[player] = nil From 3577585d7415552943d45f2009eed0f3ae379708 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 10 Jun 2021 15:34:57 +0000 Subject: [PATCH 157/720] Use get_bool --- mods/ITEMS/mcl_farming/pumpkin.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index bd0d59a12..5ae5f80bc 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -162,7 +162,7 @@ if minetest.get_modpath("mcl_armor") then end end) minetest.register_on_dieplayer(function(player) - if minetest.settings:get("mcl_keepInventory") ~= "true" then + if not minetest.settings:get_bool("mcl_keepInventory") then remove_pumpkin_hud(player) end end) From a896d7f5e437c091ba4594a9e35fa14ee87f093d Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 12 Jun 2021 00:09:39 +0200 Subject: [PATCH 158/720] replace deprecated "current_name" by "context" for inventory location --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 4 ++-- mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 4 ++-- mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua | 4 ++-- mods/ITEMS/mcl_brewing/init.lua | 16 ++++++------- mods/ITEMS/mcl_chests/init.lua | 4 ++-- mods/ITEMS/mcl_furnaces/init.lua | 24 +++++++++---------- mods/ITEMS/mcl_hoppers/init.lua | 4 ++-- 7 files changed, 30 insertions(+), 30 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 8cbf74b84..ee7f29016 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -19,9 +19,9 @@ local function setup_dispenser(pos) "list[current_player;main;0,7.74;9,1;]".. mcl_formspec.get_itemslot_bg(0,7.74,9,1).. "label[3,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Dispenser"))).."]".. - "list[current_name;main;3,0.5;3,3;]".. + "list[context;main;3,0.5;3,3;]".. mcl_formspec.get_itemslot_bg(3,0.5,3,3).. - "listring[current_name;main]".. + "listring[context;main]".. "listring[current_player;main]" local meta = minetest.get_meta(pos) meta:set_string("formspec", form) diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index 4bfdbab4b..b5bcc1d08 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -20,9 +20,9 @@ local function setup_dropper(pos) "list[current_player;main;0,7.74;9,1;]".. mcl_formspec.get_itemslot_bg(0,7.74,9,1).. "label[3,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Dropper"))).."]".. - "list[current_name;main;3,0.5;3,3;]".. + "list[context;main;3,0.5;3,3;]".. mcl_formspec.get_itemslot_bg(3,0.5,3,3).. - "listring[current_name;main]".. + "listring[context;main]".. "listring[current_player;main]" local meta = minetest.get_meta(pos) meta:set_string("formspec", form) diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua index f140a9586..5409e6abc 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua @@ -19,8 +19,8 @@ local function setup_dropper(pos) "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. "label[3,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Dropper"))).."]".. - "list[current_name;main;3,0.5;3,3;]".. - "listring[current_name;main]".. + "list[context;main;3,0.5;3,3;]".. + "listring[context;main]".. "listring[current_player;main]" local meta = minetest.get_meta(pos) meta:set_string("formspec", form) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index bd44b429b..38f81fa36 100644 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -10,9 +10,9 @@ local function active_brewing_formspec(fuel_percent, brew_percent) mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.75;9,1;]".. mcl_formspec.get_itemslot_bg(0,7.75,9,1).. - "list[current_name;fuel;0.5,1.75;1,1;]".. + "list[context;fuel;0.5,1.75;1,1;]".. mcl_formspec.get_itemslot_bg(0.5,1.75,1,1).."image[0.5,1.75;1,1;mcl_brewing_fuel_bg.png]".. - "list[current_name;input;2.75,0.5;1,1;]".. + "list[context;input;2.75,0.5;1,1;]".. mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. "list[context;stand;4.5,2.5;1,1;]".. mcl_formspec.get_itemslot_bg(4.5,2.5,1,1).."image[4.5,2.5;1,1;mcl_brewing_bottle_bg.png]".. @@ -28,8 +28,8 @@ local function active_brewing_formspec(fuel_percent, brew_percent) (brew_percent)..":mcl_brewing_bubbles_active.png]".. "listring[current_player;main]".. - "listring[current_name;fuel]".. - "listring[current_name;input]".. + "listring[context;fuel]".. + "listring[context;input]".. "listring[context;stand]" end @@ -41,9 +41,9 @@ local brewing_formspec = "size[9,8.75]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.75;9,1;]".. mcl_formspec.get_itemslot_bg(0,7.75,9,1).. - "list[current_name;fuel;0.5,1.75;1,1;]".. + "list[context;fuel;0.5,1.75;1,1;]".. mcl_formspec.get_itemslot_bg(0.5,1.75,1,1).."image[0.5,1.75;1,1;mcl_brewing_fuel_bg.png]".. - "list[current_name;input;2.75,0.5;1,1;]".. + "list[context;input;2.75,0.5;1,1;]".. mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. "list[context;stand;4.5,2.5;1,1;]".. mcl_formspec.get_itemslot_bg(4.5,2.5,1,1).."image[4.5,2.5;1,1;mcl_brewing_bottle_bg.png]".. @@ -56,8 +56,8 @@ local brewing_formspec = "size[9,8.75]".. "image[2.76,1.4;1,2.15;mcl_brewing_bubbles.png]".. "listring[current_player;main]".. - "listring[current_name;fuel]".. - "listring[current_name;input]".. + "listring[context;fuel]".. + "listring[context;input]".. "listring[context;stand]" diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index de8b9bd09..cd66c3fc4 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -1108,14 +1108,14 @@ local function formspec_shulker_box(name) end return "size[9,8.75]".. "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", name)).."]".. - "list[current_name;main;0,0.5;9,3;]".. + "list[context;main;0,0.5;9,3;]".. mcl_formspec.get_itemslot_bg(0,0.5,9,3).. "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.74;9,1;]".. mcl_formspec.get_itemslot_bg(0,7.74,9,1).. - "listring[current_name;main]".. + "listring[context;main]".. "listring[current_player;main]" end diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index e31406f6a..ca43b275a 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -15,11 +15,11 @@ local function active_formspec(fuel_percent, item_percent) "list[current_player;main;0,7.74;9,1;]".. mcl_formspec.get_itemslot_bg(0,7.74,9,1).. "label[2.75,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Furnace"))).."]".. - "list[current_name;src;2.75,0.5;1,1;]".. + "list[context;src;2.75,0.5;1,1;]".. mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. - "list[current_name;fuel;2.75,2.5;1,1;]".. + "list[context;fuel;2.75,2.5;1,1;]".. mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. - "list[current_name;dst;5.75,1.5;1,1;]".. + "list[context;dst;5.75,1.5;1,1;]".. mcl_formspec.get_itemslot_bg(5.75,1.5,1,1).. "image[2.75,1.5;1,1;default_furnace_fire_bg.png^[lowpart:".. (100-fuel_percent)..":default_furnace_fire_fg.png]".. @@ -29,11 +29,11 @@ local function active_formspec(fuel_percent, item_percent) -- TODO: Add it back when the Minetest bug is fixed. --"image_button[8,0;1,1;craftguide_book.png;craftguide;]".. --"tooltip[craftguide;"..minetest.formspec_escape(S("Recipe book")).."]".. - "listring[current_name;dst]".. + "listring[context;dst]".. "listring[current_player;main]".. - "listring[current_name;src]".. + "listring[context;src]".. "listring[current_player;main]".. - "listring[current_name;fuel]".. + "listring[context;fuel]".. "listring[current_player;main]" end @@ -44,11 +44,11 @@ local inactive_formspec = "size[9,8.75]".. "list[current_player;main;0,7.74;9,1;]".. mcl_formspec.get_itemslot_bg(0,7.74,9,1).. "label[2.75,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Furnace"))).."]".. - "list[current_name;src;2.75,0.5;1,1;]".. + "list[context;src;2.75,0.5;1,1;]".. mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. - "list[current_name;fuel;2.75,2.5;1,1;]".. + "list[context;fuel;2.75,2.5;1,1;]".. mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. - "list[current_name;dst;5.75,1.5;1,1;]".. + "list[context;dst;5.75,1.5;1,1;]".. mcl_formspec.get_itemslot_bg(5.75,1.5,1,1).. "image[2.75,1.5;1,1;default_furnace_fire_bg.png]".. "image[4.1,1.5;1.5,1;gui_furnace_arrow_bg.png^[transformR270]".. @@ -56,11 +56,11 @@ local inactive_formspec = "size[9,8.75]".. -- TODO: Add it back when the Minetest bug is fixed. --"image_button[8,0;1,1;craftguide_book.png;craftguide;]".. --"tooltip[craftguide;"..minetest.formspec_escape(S("Recipe book")).."]".. - "listring[current_name;dst]".. + "listring[context;dst]".. "listring[current_player;main]".. - "listring[current_name;src]".. + "listring[context;src]".. "listring[current_player;main]".. - "listring[current_name;fuel]".. + "listring[context;fuel]".. "listring[current_player;main]" local receive_fields = function(pos, formname, fields, sender) diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index ca6cb60e2..9defa26ca 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -5,14 +5,14 @@ local S = minetest.get_translator(minetest.get_current_modname()) local mcl_hoppers_formspec = "size[9,7]".. "label[2,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Hopper"))).."]".. - "list[current_name;main;2,0.5;5,1;]".. + "list[context;main;2,0.5;5,1;]".. mcl_formspec.get_itemslot_bg(2,0.5,5,1).. "label[0,2;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,2.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,2.5,9,3).. "list[current_player;main;0,5.74;9,1;]".. mcl_formspec.get_itemslot_bg(0,5.74,9,1).. - "listring[current_name;main]".. + "listring[context;main]".. "listring[current_player;main]" -- Downwards hopper (base definition) From e81da3c4ff5ec93172b2458397fe9f7203ea63b0 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 12 Jun 2021 00:18:52 +0200 Subject: [PATCH 159/720] fix some mods using "core" insteed of "minetest" --- mods/CORE/mcl_init/init.lua | 4 ++-- mods/ENTITIES/mobs_mc/iron_golem.lua | 4 ++-- mods/ENTITIES/mobs_mc/snowman.lua | 6 +++--- mods/ITEMS/REDSTONE/mesecons_pistons/init.lua | 4 ++-- mods/ITEMS/mcl_cake/init.lua | 2 +- mods/ITEMS/mcl_core/functions.lua | 10 +++++----- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/mods/CORE/mcl_init/init.lua b/mods/CORE/mcl_init/init.lua index 066e555df..fec9c7ba9 100644 --- a/mods/CORE/mcl_init/init.lua +++ b/mods/CORE/mcl_init/init.lua @@ -32,9 +32,9 @@ local singlenode = mg_name == "singlenode" -- Calculate mapgen_edge_min/mapgen_edge_max mcl_vars.chunksize = math.max(1, tonumber(minetest.get_mapgen_setting("chunksize")) or 5) -mcl_vars.MAP_BLOCKSIZE = math.max(1, core.MAP_BLOCKSIZE or 16) +mcl_vars.MAP_BLOCKSIZE = math.max(1, minetest.MAP_BLOCKSIZE or 16) mcl_vars.mapgen_limit = math.max(1, tonumber(minetest.get_mapgen_setting("mapgen_limit")) or 31000) -mcl_vars.MAX_MAP_GENERATION_LIMIT = math.max(1, core.MAX_MAP_GENERATION_LIMIT or 31000) +mcl_vars.MAX_MAP_GENERATION_LIMIT = math.max(1, minetest.MAX_MAP_GENERATION_LIMIT or 31000) local central_chunk_offset = -math.floor(mcl_vars.chunksize / 2) mcl_vars.central_chunk_offset_in_nodes = central_chunk_offset * mcl_vars.MAP_BLOCKSIZE mcl_vars.chunk_size_in_nodes = mcl_vars.chunksize * mcl_vars.MAP_BLOCKSIZE diff --git a/mods/ENTITIES/mobs_mc/iron_golem.lua b/mods/ENTITIES/mobs_mc/iron_golem.lua index 946db312d..939412abb 100644 --- a/mods/ENTITIES/mobs_mc/iron_golem.lua +++ b/mods/ENTITIES/mobs_mc/iron_golem.lua @@ -158,11 +158,11 @@ mobs_mc.tools.check_iron_golem_summon = function(pos) if ok then -- Remove the nodes minetest.remove_node(pos) - core.check_for_falling(pos) + minetest.check_for_falling(pos) for i=1, 4 do local cpos = vector.add(pos, checks[c][i]) minetest.remove_node(cpos) - core.check_for_falling(cpos) + minetest.check_for_falling(cpos) end -- Summon iron golem local place diff --git a/mods/ENTITIES/mobs_mc/snowman.lua b/mods/ENTITIES/mobs_mc/snowman.lua index 9e2fae4d4..0726b8da0 100644 --- a/mods/ENTITIES/mobs_mc/snowman.lua +++ b/mods/ENTITIES/mobs_mc/snowman.lua @@ -179,9 +179,9 @@ mobs_mc.tools.check_snow_golem_summon = function(pos) minetest.remove_node(pos) minetest.remove_node(b1) minetest.remove_node(b2) - core.check_for_falling(pos) - core.check_for_falling(b1) - core.check_for_falling(b2) + minetest.check_for_falling(pos) + minetest.check_for_falling(b1) + minetest.check_for_falling(b2) local obj = minetest.add_entity(place, "mobs_mc:snowman") if obj then summon_particles(obj) diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua index 7d5f49048..93b8df96d 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua @@ -66,7 +66,7 @@ local function piston_remove_pusher(pos, oldnode) if pushername == pistonspec.pusher then -- make sure there actually is a pusher minetest.remove_node(pusherpos) - core.check_for_falling(pusherpos) + minetest.check_for_falling(pusherpos) minetest.sound_play("piston_retract", { pos = pos, max_hear_distance = 31, @@ -87,7 +87,7 @@ local function piston_remove_base(pos, oldnode) if basename == pistonspec.onname then -- make sure there actually is a base node minetest.remove_node(basepos) - core.check_for_falling(basepos) + minetest.check_for_falling(basepos) minetest.sound_play("piston_retract", { pos = pos, max_hear_distance = 31, diff --git a/mods/ITEMS/mcl_cake/init.lua b/mods/ITEMS/mcl_cake/init.lua index 777b7ec58..104071064 100644 --- a/mods/ITEMS/mcl_cake/init.lua +++ b/mods/ITEMS/mcl_cake/init.lua @@ -104,7 +104,7 @@ local register_slice = function(level, nodebox, desc) -- Check if we were allowed to eat if newcake:get_name() ~= this or minetest.is_creative_enabled(clicker:get_player_name()) then minetest.remove_node(pos) - core.check_for_falling(pos) + minetest.check_for_falling(pos) end end end diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index f0633914b..6e1a977d9 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -179,7 +179,7 @@ minetest.register_abm({ liquid_flow_action(pos, "lava", function(pos) minetest.remove_node(pos) minetest.sound_play("builtin_item_lava", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) - core.check_for_falling(pos) + minetest.check_for_falling(pos) end) end, }) @@ -1242,7 +1242,7 @@ minetest.register_abm({ if not mcl_core.check_vines_supported(pos, node) then minetest.remove_node(pos) vinedecay_particles(pos, node) - core.check_for_falling(pos) + minetest.check_for_falling(pos) return end @@ -1404,7 +1404,7 @@ minetest.register_abm({ -- Remove node minetest.remove_node(p0) leafdecay_particles(p0, n0) - core.check_for_falling(p0) + minetest.check_for_falling(p0) -- Kill depending vines immediately to skip the vines decay delay local surround = { @@ -1421,7 +1421,7 @@ minetest.register_abm({ 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) - core.check_for_falling(spos) + minetest.check_for_falling(spos) end end end @@ -1445,7 +1445,7 @@ minetest.register_abm({ minetest.remove_node(p0) vinedecay_particles(p0, node) -- Just in case a falling node happens to float above vines - core.check_for_falling(p0) + minetest.check_for_falling(p0) end end }) From e11dc4b58e3e65017faa5fdfa910e3627970c075 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 12 Jun 2021 00:28:07 +0200 Subject: [PATCH 160/720] fix some luacheck warnings --- mods/ITEMS/mcl_dye/init.lua | 2 +- mods/ITEMS/mcl_farming/pumpkin.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index 11e5d08f4..b9b5d92ac 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -138,7 +138,7 @@ local function bone_meal_particle(pos) maxvel = { x = 0, y = 0, z = 0}, minacc = { x = 0, y = 0, z = 0}, maxacc = { x = 0, y = 0, z = 0}, - minexptime = 1, + minexptime = 1, maxexptime = 4, minsize = 0.7, maxsize = 2.4, diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index b183c1432..b27ad71f8 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -155,7 +155,7 @@ if minetest.get_modpath("mcl_armor") then 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) if player:get_inventory():get_stack("armor", 2):get_name() == "mcl_farming:pumpkin_face" then add_pumpkin_hud(player) From 40f4287ff200ec20bb2d25650a0b37606bd74b38 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 12 Jun 2021 12:21:01 +0200 Subject: [PATCH 161/720] new buckets fixes --- mods/ITEMS/mcl_buckets/init.lua | 50 ++++++++++++++++------------ mods/ITEMS/mcl_buckets/register.lua | 2 +- mods/ITEMS/mcl_core/nodes_liquid.lua | 4 +-- 3 files changed, 31 insertions(+), 25 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 23d7244e5..f2f61ccfc 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -18,7 +18,8 @@ local string = string local raycast = minetest.raycast local get_node = minetest.get_node local add_node = minetest.add_node -local get_node_group = minetest.get_node_group +local add_item = minetest.add_item + if mod_mcl_core then minetest.register_craft({ @@ -26,7 +27,7 @@ if mod_mcl_core then recipe = { {"mcl_core:iron_ingot", "", "mcl_core:iron_ingot"}, {"", "mcl_core:iron_ingot", ""}, - } + }, }) end @@ -34,42 +35,47 @@ mcl_buckets = {} mcl_buckets.liquids = {} -- Sound helper functions for placing and taking liquids -local sound_place = function(itemname, pos) +local function sound_place(itemname, pos) local def = minetest.registered_nodes[itemname] if def and def.sounds and def.sounds.place then minetest.sound_play(def.sounds.place, {gain=1.0, pos = pos, pitch = 1 + math.random(-10, 10)*0.005}, true) end end -local sound_take = function(itemname, pos) +local function sound_take(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 -local place_liquid = function(pos, itemstring) +local function place_liquid(pos, itemstring) local fullness = minetest.registered_nodes[itemstring].liquid_range 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 + local inv = user:get_inventory() + if minetest.is_creative_enabled(user:get_player_name()) then + --TODO: is a full bucket added if inv doesn't contain one? return itemstack + else + if itemstack:get_count() == 1 then + return new_bucket + else + if inv:room_for_item("main", new_bucket) then + inv:add_item("main", new_bucket) + else + add_item(user:get_pos(), new_bucket) + end + itemstack:take_item() + return itemstack + end end end +local pointable_sources = {} + local function bucket_raycast(user) local pos = user:get_pos() pos.y = pos.y + user:get_properties().eye_height @@ -77,10 +83,10 @@ local function bucket_raycast(user) look_dir = vector.multiply(look_dir, 6) local pos2 = vector.add(pos, look_dir) - local ray = raycast(pos, pos2, false, true) + 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 + if pointed_thing and pointable_sources[get_node(pointed_thing.above).name] then --minetest.chat_send_all("found!") return {under=pointed_thing.under,above=pointed_thing.above} end @@ -97,6 +103,7 @@ function mcl_buckets.register_liquid(def) on_take = def.on_take, itemname = def.itemname, } + pointable_sources[source] = true if type(def.source_place) == "string" then mcl_buckets.liquids[def.source_place] = mcl_buckets.liquids[source] end @@ -137,7 +144,7 @@ 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 @@ -308,7 +315,7 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { return minetest.registered_nodes[nn].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack end end - + local new_bucket local liquid_node = bucket_raycast(user) if liquid_node then if minetest.is_protected(liquid_node.above, user:get_player_name()) then @@ -318,7 +325,6 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { 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 diff --git a/mods/ITEMS/mcl_buckets/register.lua b/mods/ITEMS/mcl_buckets/register.lua index 863aa074c..12790598c 100644 --- a/mods/ITEMS/mcl_buckets/register.lua +++ b/mods/ITEMS/mcl_buckets/register.lua @@ -3,7 +3,7 @@ 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 function sound_place(itemname, pos) local def = minetest.registered_nodes[itemname] if def and def.sounds and def.sounds.place then minetest.sound_play(def.sounds.place, {gain=1.0, pos = pos, pitch = 1 + math.random(-10, 10)*0.005}, true) diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index d4234b8ac..0e0f71a11 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -95,7 +95,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, _mcl_bucket_pointable=1}, + groups = { water=3, liquid=3, puts_out_fire=1, freezes=1, not_in_creative_inventory=1, dig_by_piston=1}, _mcl_blast_resistance = 100, -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode _mcl_hardness = -1, @@ -196,7 +196,7 @@ S("• When lava is directly above water, the water turns into stone."), damage_per_second = 4*2, 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, _mcl_bucket_pointable=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_blast_resistance = 100, -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode _mcl_hardness = -1, From eafb1a2797b547710a4fad70d9339e92ca9085ef Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 12 Jun 2021 17:23:03 +0000 Subject: [PATCH 162/720] Use add_particle instead of minetest.add_particlespawner for elytra rocket particles --- mods/PLAYER/mcl_playerplus/init.lua | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index fc8dbcd51..1e1354ae0 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -189,22 +189,15 @@ minetest.register_globalstep(function(dtime) if vector.length(player_velocity) < 40 then local add_velocity = player.add_velocity or player.add_player_velocity add_velocity(player, vector.multiply(player:get_look_dir(), 4)) - minetest.add_particlespawner({ - amount = 1, - time = 0.1, - minpos = fly_pos, - maxpos = fly_pos, - minvel = {x = 0, y = 0, z = 0}, - maxvel = {x = 0, y = 0, z = 0}, - minacc = {x = 0, y = 0, z = 0}, - maxacc = {x = 0, y = 0, z = 0}, - minexptime = 0.3, - maxexptime = 0.5, - minsize = 1, - maxsize = 2.5, + add_particle({ + pos = fly_pos, + velocity = {x = 0, y = 0, z = 0}, + acceleration = {x = 0, y = 0, z = 0}, + expirationtime = math.random(0.3, 0.5), + size = math.random(1, 2), collisiondetection = false, vertical = false, - texture = "mcl_particles_crit.png^[colorize:#bc7a57:127", + texture = "mcl_particles_bonemeal.png^[colorize:#bc7a57:127", glow = 5, }) end From 822071c66b30d9a1da3ae810d038bebdb65e101c Mon Sep 17 00:00:00 2001 From: basxto Date: Sat, 12 Jun 2021 18:35:48 +0000 Subject: [PATCH 163/720] Fix attribution and typo Since walking skeleton is based on another cc-by 3.0 work, it's also required to mention the original author --- mods/ENTITIES/mobs_mc/LICENSE-media.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/LICENSE-media.md b/mods/ENTITIES/mobs_mc/LICENSE-media.md index dad31abb8..3bfe70a15 100644 --- a/mods/ENTITIES/mobs_mc/LICENSE-media.md +++ b/mods/ENTITIES/mobs_mc/LICENSE-media.md @@ -190,9 +190,10 @@ Origin of those models: * [Spennnyyy](https://freesound.org/people/Spennnyyy/) (CC0) * `mcl_totems_totem.ogg` * Source: -* [Baŝto](https://opengameart.org/users/ba%C5%9Dto) +* [Baŝto](https://opengameart.org/users/ba%C5%9Dto) (remixer) and [kantouth](https://freesound.org/people/kantouth/) (original author) * `mobs_mc_skeleton_random.*.ogg` (CC BY 3.0) * Source: + * Based on: * [spookymodem](https://freesound.org/people/spookymodem/) * `mobs_mc_skeleton_death.ogg` (CC0) * @@ -306,4 +307,4 @@ Origin of those models: Note: Many of these sounds have been more or less modified to fit the game. -Sounds not mentioned hre are licensed under CC0. +Sounds not mentioned here are licensed under CC0. From 30e2e0d70afbbadf9fc7181bfde097ccf6fdd014 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 14 Jun 2021 14:36:17 +0200 Subject: [PATCH 164/720] test values --- mods/ITEMS/mcl_buckets/init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index f2f61ccfc..70a219ffb 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -77,10 +77,11 @@ end local pointable_sources = {} local function bucket_raycast(user) - local pos = user:get_pos() + --local pos = user:get_pos() + local pos = mcl_util.get_object_center(user) pos.y = pos.y + user:get_properties().eye_height local look_dir = user:get_look_dir() - look_dir = vector.multiply(look_dir, 6) + look_dir = vector.multiply(look_dir, 4) local pos2 = vector.add(pos, look_dir) local ray = raycast(pos, pos2, false, true) From 73927cb0cbfd9fc122670b3d8131ad8be6cd74b3 Mon Sep 17 00:00:00 2001 From: pitchum Date: Mon, 14 Jun 2021 18:51:08 +0200 Subject: [PATCH 165/720] Fix French translations: granit + porc --- mods/ITEMS/mcl_core/locale/mcl_core.fr.tr | 4 ++-- mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.fr.tr | 2 +- mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr | 6 +++--- mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr index 86bc489cd..725025e48 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr @@ -109,7 +109,7 @@ Gold Ore=Minerai d'Or Gold nuggets are very small pieces of molten gold; the main purpose is to create gold ingots.=Les pépites d'or sont de très petites pièces d'or en fusion; le but principal est de créer des lingots d'or. Golden Apple=Pomme Dorée Golden apples are precious food items which can be eaten.=Les pommes dorrées sont des aliments précieux qui peuvent être consommés. -Granite=Granite +Granite=Granit Grass Block=Bloc d'Herbe Grass Path=Chemin d'Herbe 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.=Les chemins d'herbe sont une variante décorative des blocs d'herbe. Leur sommet a une couleur différente et ils sont un peu plus bas que les blocs d'herbe, ce qui les rend utiles pour construire des sentiers. Les chemins d'herbe peuvent être créés avec une pelle. Un chemin d'herbe se transforme en terre quand il est en dessous d'un bloc solide. @@ -165,7 +165,7 @@ Podzol=Podzol Podzol is a type of dirt found in taiga forests. Only a few plants are able to survive on it.=Le podzol est un type de terre trouvé dans les forêts de la taïga. Seules quelques plantes peuvent y survivre. Polished Andesite=Andrésite Polie Polished Diorite=Diorite Polie -Polished Granite=Granite Polie +Polished Granite=Granit Poli Polished Stone=Roche Polie Polished andesite is a decorative building block made from andesite.=L'andésite polie est un bloc de construction décoratif en andésite. Polished diorite is a decorative building block made from diorite.=La diorite polie est un bloc de construction décoratif en diorite. diff --git a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.fr.tr b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.fr.tr index eee31278b..d31632345 100644 --- a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.fr.tr +++ b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.fr.tr @@ -27,7 +27,7 @@ Raw Porkchop=Porc Cru A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it will greatly increase its nutritional value.=Un porc cru est la chair d'un porc et peut être mangée en toute sécurité. La cuisson augmentera considérablement sa valeur nutritive. -Cooked Porkchop=Parc Cuit +Cooked Porkchop=Porc Cuit Cooked porkchop is the cooked flesh of a pig and is used as food.=Le porc cuit est la chair cuite d'un porc et est utilisé comme aliment. Raw Rabbit=Lapin Cru diff --git a/mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr index 9c6684fc6..4892122f6 100644 --- a/mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr +++ b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr @@ -30,9 +30,9 @@ Double Polished Stone Slab=Double Dalle en Pierre Polie Andesite Stairs=Escalier en Andésite Andesite Slab=Dalle en Andésite Double Andesite Slab=Double Dalle en Andésite -Granite Stairs=Escalier en Granite -Granite Slab=Dalle en Granite -Double Granite Slab=Double Dalle en Granite +Granite Stairs=Escalier en Granit +Granite Slab=Dalle en Granit +Double Granite Slab=Double Dalle en Granit Diorite Stairs=Escalier en Diorite Diorite Slab=Dalle en Diorite Double Diorite Slab=Double Dalle en Diorite diff --git a/mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr b/mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr index e4bbfd0dd..445c8f7b3 100644 --- a/mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr +++ b/mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr @@ -3,7 +3,7 @@ A piece of wall. It cannot be jumped over with a simple jump. When multiple of t Cobblestone Wall=Muret de Pierres Mossy Cobblestone Wall=Muret de Pierres Moussu Andesite Wall=Muret d'Andésite -Granite Wall=Muret de Granite +Granite Wall=Muret de Granit Diorite Wall=Muret de Diorite Brick Wall=Muret en Brique Sandstone Wall=Muret de Grès From f28a5b90fc6ada4980cf6898e66817676d6cd9b7 Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 15 Jun 2021 14:33:40 +0000 Subject: [PATCH 166/720] Fix #1804 (remove portal frame with ender eye from creative inventory) --- mods/ITEMS/mcl_portals/portal_end.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 085205cfd..ccb348254 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -307,7 +307,7 @@ minetest.register_node("mcl_portals:end_portal_frame_eye", { description = S("End Portal Frame with Eye of Ender"), _tt_help = S("Used to construct end portals"), _doc_items_create_entry = false, - groups = { creative_breakable = 1, deco_block = 1, comparator_signal = 15, end_portal_frame = 2 }, + groups = { creative_breakable = 1, deco_block = 1, comparator_signal = 15, end_portal_frame = 2, not_in_creative_inventory=1 }, tiles = { "mcl_portals_endframe_top.png^[lowpart:75:mcl_portals_endframe_eye.png", "mcl_portals_endframe_bottom.png", "mcl_portals_endframe_eye.png^mcl_portals_endframe_side.png" }, use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, paramtype2 = "facedir", From c542ff998e4cc744d06061ae67d755a56c0c9af5 Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 15 Jun 2021 17:33:04 +0000 Subject: [PATCH 167/720] Remove misspellings part1 --- mods/ITEMS/mcl_core/nodes_trees.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua index c73829d6c..dba2894f5 100644 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ b/mods/ITEMS/mcl_core/nodes_trees.lua @@ -9,7 +9,7 @@ if mod_screwdriver then end -- Register tree trunk (wood) and bark -local function register_tree_trunk(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_variant) minetest.register_node("mcl_core:"..subname, { description = description_trunk, _doc_items_longdesc = longdesc, @@ -23,7 +23,7 @@ local function register_tree_trunk(subname, description_trunk, description_bark, on_rotate = on_rotate, _mcl_blast_resistance = 2, _mcl_hardness = 2, - _mcl_stripped_varient = stripped_varient, + _mcl_stripped_variant = stripped_variant, }) minetest.register_node("mcl_core:"..subname.."_bark", { @@ -39,7 +39,7 @@ local function register_tree_trunk(subname, description_trunk, description_bark, on_rotate = on_rotate, _mcl_blast_resistance = 2, _mcl_hardness = 2, - _mcl_stripped_varient = stripped_varient.."_bark", + _mcl_stripped_variant = stripped_variant.."_bark", }) minetest.register_craft({ From 49876369138aff6f2c94f7572ec1f5878b41d1d1 Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 15 Jun 2021 17:34:45 +0000 Subject: [PATCH 168/720] Remove misspellings part2 --- mods/ITEMS/mcl_tools/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_tools/init.lua b/mods/ITEMS/mcl_tools/init.lua index c05aeb2da..1d68a0973 100644 --- a/mods/ITEMS/mcl_tools/init.lua +++ b/mods/ITEMS/mcl_tools/init.lua @@ -368,10 +368,10 @@ local function make_stripped_trunk(itemstack, placer, pointed_thing) return itemstack end - if noddef._mcl_stripped_varient == nil then + if noddef._mcl_stripped_variant == nil then return itemstack else - minetest.swap_node(pointed_thing.under, {name=noddef._mcl_stripped_varient, param2=node.param2}) + minetest.swap_node(pointed_thing.under, {name=noddef._mcl_stripped_variant, param2=node.param2}) if not minetest.is_creative_enabled(placer:get_player_name()) then -- Add wear (as if digging a axey node) local toolname = itemstack:get_name() From 3b3922b2d67acfe04f1b1213a2ac6154988ef0cc Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 15 Jun 2021 17:37:03 +0000 Subject: [PATCH 169/720] Unify code style --- mods/ITEMS/mcl_portals/portal_end.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index ccb348254..d591537e1 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -307,7 +307,7 @@ minetest.register_node("mcl_portals:end_portal_frame_eye", { description = S("End Portal Frame with Eye of Ender"), _tt_help = S("Used to construct end portals"), _doc_items_create_entry = false, - groups = { creative_breakable = 1, deco_block = 1, comparator_signal = 15, end_portal_frame = 2, not_in_creative_inventory=1 }, + groups = { creative_breakable = 1, deco_block = 1, comparator_signal = 15, end_portal_frame = 2, not_in_creative_inventory = 1 }, tiles = { "mcl_portals_endframe_top.png^[lowpart:75:mcl_portals_endframe_eye.png", "mcl_portals_endframe_bottom.png", "mcl_portals_endframe_eye.png^mcl_portals_endframe_side.png" }, use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, paramtype2 = "facedir", From a62d3ff2ee838b2aef03b4342c6cc483651b2953 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 18 Jun 2021 19:30:20 +0000 Subject: [PATCH 170/720] Add specific help text and fix typos for stripped wood --- mods/ITEMS/mcl_core/nodes_trees.lua | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua index dba2894f5..a5ef7aa97 100644 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ b/mods/ITEMS/mcl_core/nodes_trees.lua @@ -52,7 +52,7 @@ local function register_tree_trunk(subname, description_trunk, description_bark, end -- Register stripped trunk and stripped wood -local function register_stripped_trunk(subname, description_stripped_trunk, description_stripped_bark, longdesc, tile_stripped_inner, tile_stripped_bark) +local function register_stripped_trunk(subname, description_stripped_trunk, description_stripped_bark, longdesc, longdesc_wood, tile_stripped_inner, tile_stripped_bark) minetest.register_node("mcl_core:"..subname, { description = description_stripped_trunk, _doc_items_longdesc = longdesc, @@ -61,7 +61,7 @@ local function register_stripped_trunk(subname, description_stripped_trunk, desc paramtype2 = "facedir", on_place = mcl_util.rotate_axis, stack_max = 64, - groups = {handy=1,axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, + groups = {handy=1, axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, sounds = mcl_sounds.node_sound_wood_defaults(), on_rotate = on_rotate, _mcl_blast_resistance = 2, @@ -70,12 +70,12 @@ local function register_stripped_trunk(subname, description_stripped_trunk, desc minetest.register_node("mcl_core:"..subname.."_bark", { description = description_stripped_bark, - _doc_items_longdesc = S("This is a decorative block."), + _doc_items_longdesc = longdesc_wood, tiles = {tile_stripped_bark}, paramtype2 = "facedir", on_place = mcl_util.rotate_axis, stack_max = 64, - groups = {handy=1,axey=1, bark=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, + groups = {handy=1, axey=1, bark=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, sounds = mcl_sounds.node_sound_wood_defaults(), is_ground_content = false, on_rotate = on_rotate, @@ -223,13 +223,12 @@ register_tree_trunk("sprucetree", S("Spruce Wood"), S("Spruce Bark"), S("The tru register_tree_trunk("birchtree", S("Birch Wood"), S("Birch Bark"), S("The trunk of a birch tree."), "mcl_core_log_birch_top.png", "mcl_core_log_birch.png", "mcl_core:stripped_birch") register_tree_trunk("jungletree", S("Jungle Wood"), S("Jungle Bark"), S("The trunk of a jungle tree."), "default_jungletree_top.png", "default_jungletree.png", "mcl_core:stripped_jungle") -register_stripped_trunk("stripped_oak", S("Stripped Oak Log"), S("Stripped Oak Wood"), S("The stripped trunk of an oak tree."), "mcl_core_stripped_oak_top.png", "mcl_core_stripped_oak_side.png") -register_stripped_trunk("stripped_acacia", S("Stripped Acacia Log"), S("Stripped Acacia Wood"), S("The stripped trunk of an acacia tree."), "mcl_core_stripped_acacia_top.png", "mcl_core_stripped_acacia_side.png") -register_stripped_trunk("stripped_dark_oak", S("Stripped Dark Oak Log"), S("Stripped Dark Oak Wood"), S("The stripped trunk of an dark oak tree."), "mcl_core_stripped_dark_oak_top.png", "mcl_core_stripped_dark_oak_side.png") -register_stripped_trunk("stripped_birch", S("Stripped Birch Log"), S("Stripped Birch Wood"), S("The stripped trunk of an birch tree."), "mcl_core_stripped_birch_top.png", "mcl_core_stripped_birch_side.png") -register_stripped_trunk("stripped_spruce", S("Stripped Spruce Log"), S("Stripped Spruce Wood"), S("The stripped trunk of an spruce tree."), "mcl_core_stripped_spruce_top.png", "mcl_core_stripped_spruce_side.png") -register_stripped_trunk("stripped_jungle", S("Stripped Jungle Log"), S("Stripped Jungle Wood"), S("The stripped trunk of an jungle tree."),"mcl_core_stripped_jungle_top.png", "mcl_core_stripped_jungle_side.png") - +register_stripped_trunk("stripped_oak", S("Stripped Oak Log"), S("Stripped Oak Wood"), S("The stripped trunk of an oak tree."), S("The stripped wood of an oak tree."), "mcl_core_stripped_oak_top.png", "mcl_core_stripped_oak_side.png") +register_stripped_trunk("stripped_acacia", S("Stripped Acacia Log"), S("Stripped Acacia Wood"), S("The stripped trunk of an acacia tree."), S("The stripped wood of an acacia tree."), "mcl_core_stripped_acacia_top.png", "mcl_core_stripped_acacia_side.png") +register_stripped_trunk("stripped_dark_oak", S("Stripped Dark Oak Log"), S("Stripped Dark Oak Wood"), S("The stripped trunk of a dark oak tree."), S("The stripped wood of a dark oak tree."), "mcl_core_stripped_dark_oak_top.png", "mcl_core_stripped_dark_oak_side.png") +register_stripped_trunk("stripped_birch", S("Stripped Birch Log"), S("Stripped Birch Wood"), S("The stripped trunk of a birch tree."), S("The stripped wood of a birch tree."), "mcl_core_stripped_birch_top.png", "mcl_core_stripped_birch_side.png") +register_stripped_trunk("stripped_spruce", S("Stripped Spruce Log"), S("Stripped Spruce Wood"), S("The stripped trunk of a spruce tree."), S("The stripped wood of a spruce tree."), "mcl_core_stripped_spruce_top.png", "mcl_core_stripped_spruce_side.png") +register_stripped_trunk("stripped_jungle", S("Stripped Jungle Log"), S("Stripped Jungle Wood"), S("The stripped trunk of a jungle tree."), S("The stripped wood of a jungle tree."),"mcl_core_stripped_jungle_top.png", "mcl_core_stripped_jungle_side.png") register_wooden_planks("wood", S("Oak Wood Planks"), {"default_wood.png"}) register_wooden_planks("darkwood", S("Dark Oak Wood Planks"), {"mcl_core_planks_big_oak.png"}) register_wooden_planks("junglewood", S("Jungle Wood Planks"), {"default_junglewood.png"}) From ff8176e2520a4f7c0d3621672a4982f22ffdaf5f Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 18 Jun 2021 19:35:54 +0000 Subject: [PATCH 171/720] Fix typos and add german translation for specific help text for stripped wood --- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index 3d90dd5ae..0a1cbad37 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -221,17 +221,23 @@ Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.=Zuckerrohr kann nur auf Zuckerrohr platziert werden und auf Blöcken, auf denen Zuckerrohr wachsen würde. Sugar comes from sugar canes and is used to make sweet foods.=Zucker kommt von Zuckerrohr und wird benutzt, um süße Lebensmittel zu machen. The stripped trunk of an acacia tree.=Der entrindete Stamm einer Akazie. -The stripped trunk of an birch tree.=Der entrindete Stamm einer Birke. -The stripped trunk of an dark oak tree.=Der entrindete Stamm einer Schwarzeiche. -The stripped trunk of an jungle tree.=Der entrindete Stamm eines Dschungelbaums. +The stripped trunk of a birch tree.=Der entrindete Stamm einer Birke. +The stripped trunk of a dark oak tree.=Der entrindete Stamm einer Schwarzeiche. +The stripped trunk of a jungle tree.=Der entrindete Stamm eines Dschungelbaums. The stripped trunk of an oak tree.=Der entrindete Stamm einer Eiche. -The stripped trunk of an spruce tree.=Der entrindete Stamm einer Fichte. +The stripped trunk of a spruce tree.=Der entrindete Stamm einer Fichte. The trunk of a birch tree.=Der Baumstamm einer Birke. The trunk of a dark oak tree.=Der Baumstamm einer Schwarzeiche. The trunk of a jungle tree.=Der Baumstamm eines Dschungelbaums. The trunk of a spruce tree.=Der Baumstamm einer Fichte. The trunk of an acacia.=Der Baumstamm einer Akazie. The trunk of an oak tree.=Der Baumstamm einer Eiche. +The stripped wood of an acacia tree.=Das entrindete Holz einer Akazie. +The stripped wood of a birch tree.=Das entrindete Holz einer Birke. +The stripped wood of a dark oak tree.=Das entrindete Holz einer Schwarzeiche. +The stripped wood of a jungle tree.=Das entrindete Holz eines Dschungelbaums. +The stripped wood of an oak tree.=Das entrindete Holz einer Eiche. +The stripped wood of a spruce tree.=Das entrindete Holz einer Fichte. This block consists of a couple of loose stones and can't support itself.=Dieser Block besteht aus ein paar losen Steinchen und kann sich nicht selbst tragen. This is a decorative block surrounded by the bark of a tree trunk.=Dies ist ein dekorativer Block, der von der Rinde eines Baumstamms umgeben ist. This is a decorative block.=Dies ist ein dekorativer Block. From cf3a2a42bfa313520b3d582f576eac1fc00f3151 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 18 Jun 2021 19:35:59 +0000 Subject: [PATCH 172/720] Fix typos and add template for specific help text for stripped wood --- mods/ITEMS/mcl_core/locale/template.txt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_core/locale/template.txt b/mods/ITEMS/mcl_core/locale/template.txt index 31320c1c7..2cb74f5d1 100644 --- a/mods/ITEMS/mcl_core/locale/template.txt +++ b/mods/ITEMS/mcl_core/locale/template.txt @@ -221,17 +221,23 @@ Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.= Sugar comes from sugar canes and is used to make sweet foods.= The stripped trunk of an acacia tree.= -The stripped trunk of an birch tree.= -The stripped trunk of an dark oak tree.= -The stripped trunk of an jungle tree.= +The stripped trunk of a birch tree.= +The stripped trunk of a dark oak tree.= +The stripped trunk of a jungle tree.= The stripped trunk of an oak tree.= -The stripped trunk of an spruce tree.= +The stripped trunk of a spruce tree.= The trunk of a birch tree.= The trunk of a dark oak tree.= The trunk of a jungle tree.= The trunk of a spruce tree.= The trunk of an acacia.= The trunk of an oak tree.= +The stripped wood of an acacia tree.= +The stripped wood of a birch tree.= +The stripped wood of a dark oak tree.= +The stripped wood of a jungle tree.= +The stripped wood of an oak tree.= +The stripped wood of a spruce tree.= This block consists of a couple of loose stones and can't support itself.= This is a decorative block surrounded by the bark of a tree trunk.= This is a decorative block.= From a9ae6aa9c8a9b74ee59f45aa9c81f6a4e4ffb744 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 19 Jun 2021 00:39:48 +0200 Subject: [PATCH 173/720] attemp to fix old music discs not playing --- mods/ITEMS/mcl_jukebox/init.lua | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_jukebox/init.lua b/mods/ITEMS/mcl_jukebox/init.lua index ebee6f7bb..2c9fef689 100644 --- a/mods/ITEMS/mcl_jukebox/init.lua +++ b/mods/ITEMS/mcl_jukebox/init.lua @@ -239,10 +239,25 @@ mcl_jukebox.register_record("The Clueless Frog (Jordach's Mix)", "SoundHelix", " --add backward compatibility minetest.register_alias("mcl_jukebox:record_1", "mcl_jukebox:record_13") +mcl_jukebox.registered_records["mcl_jukebox:record_1"] = mcl_jukebox.registered_records["mcl_jukebox:record_13"] + minetest.register_alias("mcl_jukebox:record_2", "mcl_jukebox:record_wait") +mcl_jukebox.registered_records["mcl_jukebox:record_2"] = mcl_jukebox.registered_records["mcl_jukebox:record_wait"] + minetest.register_alias("mcl_jukebox:record_3", "mcl_jukebox:record_blocks") +mcl_jukebox.registered_records["mcl_jukebox:record_3"] = mcl_jukebox.registered_records["mcl_jukebox:record_blocks"] + minetest.register_alias("mcl_jukebox:record_4", "mcl_jukebox:record_far") +mcl_jukebox.registered_records["mcl_jukebox:record_4"] = mcl_jukebox.registered_records["mcl_jukebox:record_far"] + minetest.register_alias("mcl_jukebox:record_5", "mcl_jukebox:record_chirp") +mcl_jukebox.registered_records["mcl_jukebox:record_5"] = mcl_jukebox.registered_records["mcl_jukebox:record_chirp"] + minetest.register_alias("mcl_jukebox:record_6", "mcl_jukebox:record_strad") +mcl_jukebox.registered_records["mcl_jukebox:record_6"] = mcl_jukebox.registered_records["mcl_jukebox:record_strad"] + minetest.register_alias("mcl_jukebox:record_7", "mcl_jukebox:record_mellohi") -minetest.register_alias("mcl_jukebox:record_8", "mcl_jukebox:record_mall") \ No newline at end of file +mcl_jukebox.registered_records["mcl_jukebox:record_7"] = mcl_jukebox.registered_records["mcl_jukebox:record_mellohi"] + +minetest.register_alias("mcl_jukebox:record_8", "mcl_jukebox:record_mall") +mcl_jukebox.registered_records["mcl_jukebox:record_8"] = mcl_jukebox.registered_records["mcl_jukebox:record_mall"] \ No newline at end of file From 6bef350be4a715e93f3d967decdda2494ef9d559 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 19 Jun 2021 00:58:05 +0200 Subject: [PATCH 174/720] baisc glass support --- mods/ITEMS/mcl_core/nodes_glass.lua | 5 +++-- .../mcl_core/textures/default_glass_detail.png | Bin 0 -> 4942 bytes 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 mods/ITEMS/mcl_core/textures/default_glass_detail.png diff --git a/mods/ITEMS/mcl_core/nodes_glass.lua b/mods/ITEMS/mcl_core/nodes_glass.lua index 6e7ab350b..492ea2f99 100644 --- a/mods/ITEMS/mcl_core/nodes_glass.lua +++ b/mods/ITEMS/mcl_core/nodes_glass.lua @@ -5,10 +5,11 @@ local mod_doc = minetest.get_modpath("doc") minetest.register_node("mcl_core:glass", { description = S("Glass"), _doc_items_longdesc = S("A decorative and mostly transparent block."), - drawtype = "glasslike", + drawtype = "glasslike_framed_optional", is_ground_content = false, - tiles = {"default_glass.png"}, + tiles = {"default_glass.png", "default_glass_detail.png"}, paramtype = "light", + paramtype2 = "glasslikeliquidlevel", sunlight_propagates = true, stack_max = 64, groups = {handy=1, glass=1, building_block=1, material_glass=1}, diff --git a/mods/ITEMS/mcl_core/textures/default_glass_detail.png b/mods/ITEMS/mcl_core/textures/default_glass_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..791309817e12424da6c346ac9e68cf0abb1ca2ba GIT binary patch literal 4942 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 R+ypQvJUAk#JRolUe*soZUVH!m literal 0 HcmV?d00001 From ef1c06e3d1cbba4ec4091ab88edcb310b788dbb2 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 19 Jun 2021 10:58:22 +0200 Subject: [PATCH 175/720] fix documentation of `music_record` group --- GROUPS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GROUPS.md b/GROUPS.md index 8c0c3563e..8286b29bc 100644 --- a/GROUPS.md +++ b/GROUPS.md @@ -149,7 +149,7 @@ These groups are used mostly for informational purposes * `trapdoor=2`: Open trapdoor * `glass=1`: Glass (full cubes only) * `rail=1`: Rail -* `music_record`: Music Disc (rating is track ID) +* `music_record`: Item is Music Disc * `tnt=1`: Block is TNT * `boat=1`: Boat * `minecart=1`: Minecart From 61b02209511f66972ff509695bd6c332aa731d29 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 19 Jun 2021 22:36:37 +0200 Subject: [PATCH 176/720] apply erlehmann fix for music discs not playing (better code) --- mods/ITEMS/mcl_jukebox/init.lua | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/mods/ITEMS/mcl_jukebox/init.lua b/mods/ITEMS/mcl_jukebox/init.lua index 2c9fef689..6c51a6c94 100644 --- a/mods/ITEMS/mcl_jukebox/init.lua +++ b/mods/ITEMS/mcl_jukebox/init.lua @@ -94,7 +94,9 @@ minetest.register_craft({ }) local function play_record(pos, itemstack, player) - local name = itemstack:get_name() + local item_name = itemstack:get_name() + -- ensure the jukebox uses the new record names for old records + local name = minetest.registered_aliases[item_name] or item_name if mcl_jukebox.registered_records[name] then local cname = player:get_player_name() if active_tracks[cname] then @@ -239,25 +241,10 @@ mcl_jukebox.register_record("The Clueless Frog (Jordach's Mix)", "SoundHelix", " --add backward compatibility minetest.register_alias("mcl_jukebox:record_1", "mcl_jukebox:record_13") -mcl_jukebox.registered_records["mcl_jukebox:record_1"] = mcl_jukebox.registered_records["mcl_jukebox:record_13"] - minetest.register_alias("mcl_jukebox:record_2", "mcl_jukebox:record_wait") -mcl_jukebox.registered_records["mcl_jukebox:record_2"] = mcl_jukebox.registered_records["mcl_jukebox:record_wait"] - minetest.register_alias("mcl_jukebox:record_3", "mcl_jukebox:record_blocks") -mcl_jukebox.registered_records["mcl_jukebox:record_3"] = mcl_jukebox.registered_records["mcl_jukebox:record_blocks"] - minetest.register_alias("mcl_jukebox:record_4", "mcl_jukebox:record_far") -mcl_jukebox.registered_records["mcl_jukebox:record_4"] = mcl_jukebox.registered_records["mcl_jukebox:record_far"] - minetest.register_alias("mcl_jukebox:record_5", "mcl_jukebox:record_chirp") -mcl_jukebox.registered_records["mcl_jukebox:record_5"] = mcl_jukebox.registered_records["mcl_jukebox:record_chirp"] - minetest.register_alias("mcl_jukebox:record_6", "mcl_jukebox:record_strad") -mcl_jukebox.registered_records["mcl_jukebox:record_6"] = mcl_jukebox.registered_records["mcl_jukebox:record_strad"] - minetest.register_alias("mcl_jukebox:record_7", "mcl_jukebox:record_mellohi") -mcl_jukebox.registered_records["mcl_jukebox:record_7"] = mcl_jukebox.registered_records["mcl_jukebox:record_mellohi"] - -minetest.register_alias("mcl_jukebox:record_8", "mcl_jukebox:record_mall") -mcl_jukebox.registered_records["mcl_jukebox:record_8"] = mcl_jukebox.registered_records["mcl_jukebox:record_mall"] \ No newline at end of file +minetest.register_alias("mcl_jukebox:record_8", "mcl_jukebox:record_mall") \ No newline at end of file From 586c18b00f7803557262ee7f1a465c89bc8e1665 Mon Sep 17 00:00:00 2001 From: kay27 Date: Tue, 22 Jun 2021 03:15:39 +0400 Subject: [PATCH 177/720] [mcl_mobs/api] Continue float function on acceleration.y equals zero --- mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua index 893f8eede..d9698a0a7 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua @@ -32,12 +32,15 @@ end 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)) - else + + if not acceleration then return end + if acceleration.y ~= 0 then + self.object:set_acceleration({x=0, y=0, z=0}) + end + local current_velocity = self.object:get_velocity() local goal_velocity = { @@ -46,7 +49,7 @@ mobs.float = function(self) z = 0, } - local new_velocity_addition = vector.subtract(goal_velocity,current_velocity) + local new_velocity_addition = vector.subtract(goal_velocity, current_velocity) new_velocity_addition.x = 0 new_velocity_addition.z = 0 From c6b662ce7ae58a37dea89a88ea1edac6243b62d1 Mon Sep 17 00:00:00 2001 From: kay27 Date: Tue, 22 Jun 2021 05:10:45 +0400 Subject: [PATCH 178/720] [mcl_mobs/api] Add mob flow code from Crafter --- mods/ENTITIES/mcl_mobs/api/api.lua | 1 + .../mcl_mobs/api/mob_functions/ai.lua | 31 ++++++-- .../mcl_mobs/api/mob_functions/flow_lib.lua | 78 +++++++++++++++++++ 3 files changed, 102 insertions(+), 8 deletions(-) create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/flow_lib.lua diff --git a/mods/ENTITIES/mcl_mobs/api/api.lua b/mods/ENTITIES/mcl_mobs/api/api.lua index d1840f671..639eb517d 100644 --- a/mods/ENTITIES/mcl_mobs/api/api.lua +++ b/mods/ENTITIES/mcl_mobs/api/api.lua @@ -129,6 +129,7 @@ end local api_path = minetest.get_modpath(minetest.get_current_modname()).."/api/mob_functions/" --ignite all parts of the api +dofile(api_path .. "flow_lib.lua") dofile(api_path .. "ai.lua") dofile(api_path .. "animation.lua") dofile(api_path .. "collision.lua") diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua index d16d24929..88ce3274b 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua @@ -9,6 +9,8 @@ local minetest_get_item_group = minetest.get_item_group local minetest_get_node = minetest.get_node local minetest_line_of_sight = minetest.line_of_sight local minetest_get_node_light = minetest.get_node_light +local minetest_registered_nodes = minetest.registered_nodes +local flow = mobs.get_flowing_dir local DOUBLE_PI = math.pi * 2 local THIRTY_SECONDTH_PI = DOUBLE_PI * 0.03125 @@ -521,8 +523,8 @@ ______ _ | _| | | | | | | | | | |_| | \_| |_|\__, | - __/ | - |___/ + __/ | + |___/ ]]-- -- state switching logic (stand, walk, run, attacks) @@ -675,12 +677,12 @@ end --[[ ___ |_ | - | |_ _ _ __ ___ _ __ - | | | | | '_ ` _ \| '_ \ + | |_ _ _ __ ___ _ __ + | | | | | '_ ` _ \| '_ \ /\__/ / |_| | | | | | | |_) | \____/ \__,_|_| |_| |_| .__/ - | | - |_| + | | + |_| ]]-- @@ -787,8 +789,8 @@ ___ ___ _ _ _ | |\/| |/ _` | | '_ \ | | / _ \ / _` | |/ __| | | | | (_| | | | | | | |___| (_) | (_| | | (__ \_| |_/\__,_|_|_| |_| \_____/\___/ \__, |_|\___| - __/ | - |___/ + __/ | + |___/ ]]-- --the main loop @@ -1011,6 +1013,19 @@ function mobs.mob_step(self, dtime) end end + --mobs flow from Crafter + local pos = self.object:get_pos() + if pos then + local flow_dir = flow(pos) + if flow_dir then + flow_dir = vector.multiply(flow_dir,10) + local vel = self.object:get_velocity() + local acceleration = vector.new(flow_dir.x-vel.x,flow_dir.y-vel.y,flow_dir.z-vel.z) + acceleration = vector.multiply(acceleration, 0.01) + self.object:add_velocity(acceleration) + end + end + --mob is stunned after being hit if self.pause_timer > 0 then self.pause_timer = self.pause_timer - dtime diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/flow_lib.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/flow_lib.lua new file mode 100644 index 000000000..aa64bfb4e --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/flow_lib.lua @@ -0,0 +1,78 @@ +--this is from https://github.com/HybridDog/builtin_item/blob/e6dfd9dce86503b3cbd1474257eca5f6f6ca71c2/init.lua#L50 +local +minetest,vector,math,pairs,minetest_get_node,vector_subtract,minetest_registered_nodes += +minetest,vector,math,pairs,minetest.get_node,vector.subtract,minetest.registered_nodes + +local tab +local n +local function get_nodes(pos) + tab,n = {},1 + for i = -1,1,2 do + for _,p in pairs({ + {x=pos.x+i, y=pos.y, z=pos.z}, + {x=pos.x, y=pos.y, z=pos.z+i} + }) do + tab[n] = {p, minetest_get_node(p)} + n = n+1 + end + end + return tab +end + + +local data +local param2 +local nd +local par2 +local name +local tmp +local c_node +function mobs.get_flowing_dir(pos) + c_node = minetest_get_node(pos).name + if c_node ~= "mcl_core:water_flowing" and c_node ~= "mcl_core:water" then + return nil + end + data = get_nodes(pos) + param2 = minetest_get_node(pos).param2 + if param2 > 7 then + return nil + end + if c_node == "mcl_core:water" then + for _,i in pairs(data) do + nd = i[2] + name = nd.name + par2 = nd.param2 + if name == "mcl_core:water_flowing" and par2 == 7 then + return(vector_subtract(i[1],pos)) + end + end + end + for _,i in pairs(data) do + nd = i[2] + name = nd.name + par2 = nd.param2 + if name == "mcl_core:water_flowing" and par2 < param2 then + return(vector_subtract(i[1],pos)) + end + end + for _,i in pairs(data) do + nd = i[2] + name = nd.name + par2 = nd.param2 + if name == "mcl_core:water_flowing" and par2 >= 11 then + return(vector_subtract(i[1],pos)) + end + end + for _,i in pairs(data) do + nd = i[2] + name = nd.name + par2 = nd.param2 + tmp = minetest_registered_nodes[name] + if tmp and not tmp.walkable and name ~= "mcl_core:water_flowing" and name ~= "mcl_core:water" then + return(vector_subtract(i[1],pos)) + end + end + + return nil +end From 7ff476b9b9ecc0c4653edc789e8db5f6fa567d76 Mon Sep 17 00:00:00 2001 From: kay27 Date: Tue, 22 Jun 2021 16:53:55 +0400 Subject: [PATCH 179/720] Fix igloo hidden trapdoor with minetest.after(), https://git.minetest.land/MineClone2/MineClone2/issues/1797 --- mods/MAPGEN/mcl_structures/init.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index 8efdd91b1..533c9cab0 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -187,8 +187,6 @@ function mcl_structures.generate_igloo(pos, rotation, pr) if real_depth <= 6 then return success end - -- Place hidden trapdoor - minetest.set_node(tpos, {name="mcl_doors:trapdoor", param2=20+minetest.dir_to_facedir(dir)}) -- TODO: more reliable param2 -- Generate ladder to basement for y=1, real_depth-1 do set_brick({x=tpos.x-1,y=tpos.y-y,z=tpos.z }) @@ -199,6 +197,10 @@ function mcl_structures.generate_igloo(pos, rotation, pr) end -- Place basement mcl_structures.generate_igloo_basement(bpos, rotation, pr) + -- Place hidden trapdoor + minetest.after(5, function(tpos, dir) + minetest.set_node(tpos, {name="mcl_doors:trapdoor", param2=20+minetest.dir_to_facedir(dir)}) -- TODO: more reliable param2 + end, tpos, dir) end return success end From 16d79c38ceb2e11fbdcd940035dacf6d52282c11 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 26 Jun 2021 23:48:59 +0200 Subject: [PATCH 180/720] fix typo in mcl_enchanting french translation --- mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.fr.tr b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.fr.tr index e1178e782..985499964 100644 --- a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.fr.tr +++ b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.fr.tr @@ -7,7 +7,7 @@ Blast Protection=Protection contre les explosions Reduces explosion damage and knockback.=Réduit les dégâts d'explosion et de recul. Channeling=Canalisation Channels a bolt of lightning toward a target. Works only during thunderstorms and if target is unobstructed with opaque blocks.=Canalise un éclair vers une cible. Fonctionne uniquement pendant les orages et si la cible n'est pas obstruée par des blocs opaques. -Curse of Binding=Malédiction du lien éterne +Curse of Binding=Malédiction du lien éternel Item cannot be removed from armor slots except due to death, breaking or in Creative Mode.=L'objet ne peut pas être retiré des emplacements d'armure sauf en cas de mort, de rupture ou en mode créatif. Curse of Vanishing=Malédiction de disparition Item destroyed on death.=Objet détruit à la mort. From a9ceeabc4b71634c15c46b1843f222ff7c825212 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 28 Jun 2021 13:46:18 +0200 Subject: [PATCH 181/720] fix typo in mcl_craftguide --- mods/HELP/mcl_craftguide/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 378b420ff..3bc7b705a 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -155,7 +155,7 @@ end local custom_crafts, craft_types = {}, {} function mcl_craftguide.register_craft_type(name, def) - local func = "mcl_craftguide.register_craft_guide(): " + local func = "mcl_craftguide.register_craft_type(): " assert(name, func .. "'name' field missing") assert(def.description, func .. "'description' field missing") assert(def.icon, func .. "'icon' field missing") From 21992dc2653616db974ebfc6f0c48e436592fa34 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 3 Jul 2021 12:10:32 +0000 Subject: [PATCH 182/720] Fix #1746 (make anvils destroy items when falling) --- mods/ITEMS/mcl_anvils/init.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index fbf6fb751..e641183de 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -276,6 +276,12 @@ local function damage_anvil_by_using(pos) end local function damage_anvil_by_falling(pos, distance) + for _,object in pairs(minetest.get_objects_inside_radius(pos, 0.8)) do + local entity = object:get_luaentity() + if not object:is_player() and entity and entity.name == "__builtin:item" then + object:remove() + end + end local r = math.random(1, 100) if distance > 1 then if r <= (5*distance) then From d45e1c07bdb00f62d592d4984c63da789b8cdc2c Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 3 Jul 2021 12:19:49 +0000 Subject: [PATCH 183/720] Remove unnecessary code --- mods/ITEMS/mcl_anvils/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index e641183de..509e78321 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -278,7 +278,7 @@ end local function damage_anvil_by_falling(pos, distance) for _,object in pairs(minetest.get_objects_inside_radius(pos, 0.8)) do local entity = object:get_luaentity() - if not object:is_player() and entity and entity.name == "__builtin:item" then + if entity and entity.name == "__builtin:item" then object:remove() end end From 0a474ee5781fa84147dd478e8a9cfa9c5007273a Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Wed, 23 Jun 2021 03:06:24 +0200 Subject: [PATCH 184/720] Reduce snow layer silk touch drop amount MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It was possible to duplicate snow layers by placing them and then mining them using a tool enchanted with silk touch. This commit fixes the “snow dupe” by reducing the amount of snow layers dropped in this case by one. --- mods/ITEMS/mcl_core/nodes_base.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index d4bfd7636..abc650bb0 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -1041,7 +1041,7 @@ for i=1,8 do drop = "mcl_throwing:snowball "..(i+1), _mcl_blast_resistance = 0.1, _mcl_hardness = 0.1, - _mcl_silk_touch_drop = {"mcl_core:snow " .. (i+1)}, + _mcl_silk_touch_drop = {"mcl_core:snow " .. i}, }) end From 4afdea56dbbca4ea0a9cc15343a64f8d1d18583d Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 5 Jul 2021 12:28:14 +0000 Subject: [PATCH 185/720] Move code of making anvils destroy items when falling --- mods/ENTITIES/mcl_falling_nodes/init.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_falling_nodes/init.lua b/mods/ENTITIES/mcl_falling_nodes/init.lua index 01681a159..d527603de 100644 --- a/mods/ENTITIES/mcl_falling_nodes/init.lua +++ b/mods/ENTITIES/mcl_falling_nodes/init.lua @@ -19,7 +19,10 @@ local function deal_falling_damage(self, dtime) end self._hit = self._hit or {} for _, obj in ipairs(minetest.get_objects_inside_radius(pos, 1)) do - if mcl_util.get_hp(obj) > 0 and not self._hit[obj] then + local entity = obj:get_luaentity() + if entity and entity.name == "__builtin:item" then + obj:remove() + elseif mcl_util.get_hp(obj) > 0 and not self._hit[obj] then self._hit[obj] = true local way = self._startpos.y - pos.y local damage = (way - 1) * 2 From 5cc4fe955fc083e86503fdf2c3d10302b70f3168 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 5 Jul 2021 12:30:01 +0000 Subject: [PATCH 186/720] Remove old code of making anvils destroy items when falling --- mods/ITEMS/mcl_anvils/init.lua | 6 ------ 1 file changed, 6 deletions(-) diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index 509e78321..fbf6fb751 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -276,12 +276,6 @@ local function damage_anvil_by_using(pos) end local function damage_anvil_by_falling(pos, distance) - for _,object in pairs(minetest.get_objects_inside_radius(pos, 0.8)) do - local entity = object:get_luaentity() - if entity and entity.name == "__builtin:item" then - object:remove() - end - end local r = math.random(1, 100) if distance > 1 then if r <= (5*distance) then From b22e4ae99d08b15f3e0d2c827ab8693dfcdbf91b Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 6 Jul 2021 11:02:59 +0200 Subject: [PATCH 187/720] Update links in README.md --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index aeab8ab1a..fce4d43a7 100644 --- a/README.md +++ b/README.md @@ -77,15 +77,15 @@ To install MineClone 2 (if you haven't already), move this directory into the “games” directory of your Minetest data directory. Consult the help of Minetest to learn more. -## Reporting bugs -Please report all bugs and missing Minecraft features here: +## Useful links +The MineClone2 repository is hosted at Mesehub. To contribute or report issues, head there. - - -## Chatting with the community -Join our discord server at: - - +* Mesehub: +* Discord: +* IRC: +* Matrix: +* Reddit: +* Minetest forums: ## Project description The main goal of **MineClone 2** is to be a clone of Minecraft and to be released as free software. From f4a30959ce9ec234a1ca8e56eeb583b378e066a5 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 6 Jul 2021 09:01:36 +0000 Subject: [PATCH 188/720] Update 'README.md' --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index fce4d43a7..22b5d0d7b 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,7 @@ The MineClone2 repository is hosted at Mesehub. To contribute or report issues, * Mesehub: * Discord: +* YouTube * IRC: * Matrix: * Reddit: From ae2c5ede3058bbb4ad868ea5e128b4ed9143bf7e Mon Sep 17 00:00:00 2001 From: erlehmann Date: Mon, 3 May 2021 14:30:47 +0000 Subject: [PATCH 189/720] Merge pull request 'Remove wrong preview banner crafting recipes' (#55) from banner-crafting-fix into master Reviewed-on: https://git.minetest.land/Mineclonia/Mineclonia/pulls/55 Reviewed-by: E --- mods/ITEMS/mcl_banners/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua index 490e22643..a396caf7d 100644 --- a/mods/ITEMS/mcl_banners/init.lua +++ b/mods/ITEMS/mcl_banners/init.lua @@ -573,7 +573,7 @@ for colorid, colortab in pairs(mcl_banners.colors) do end, }) - if mod_mcl_core and minetest.get_modpath("mcl_wool") then + if mod_mcl_core and minetest.get_modpath("mcl_wool") and pattern_name == "" then minetest.register_craft({ output = itemstring, recipe = { From 2f22ce79cc5839b94f926186ce51be3653fc8393 Mon Sep 17 00:00:00 2001 From: erlehmann Date: Sat, 19 Jun 2021 13:01:11 +0000 Subject: [PATCH 190/720] Merge pull request 'ITEMS/mcl_banners: Allow more layers for banners with gradients' (#74) from e/Mineclonia:banner-gradient-limits into master MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-on: https://git.minetest.land/Mineclonia/Mineclonia/pulls/74 Reviewed-by: Elias Åström Reviewed-by: erlehmann --- mods/ITEMS/mcl_banners/patterncraft.lua | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/mods/ITEMS/mcl_banners/patterncraft.lua b/mods/ITEMS/mcl_banners/patterncraft.lua index bc2771fee..79778a665 100644 --- a/mods/ITEMS/mcl_banners/patterncraft.lua +++ b/mods/ITEMS/mcl_banners/patterncraft.lua @@ -8,9 +8,6 @@ local N = function(s) return s end -- Maximum number of layers which can be put on a banner by crafting. local max_layers_crafting = 12 --- Maximum number of layers when banner includes a gradient (workaround, see below). -local max_layers_gradient = 3 - -- Max. number lines in the descriptions for the banner layers. -- This is done to avoid huge tooltips. local max_layer_lines = 6 @@ -398,16 +395,6 @@ local function banner_pattern_craft(itemstack, player, old_craft_grid, craft_inv if #layers >= max_layers_crafting then return ItemStack("") end - -- Lower layer limit when banner includes any gradient. - -- Workaround to circumvent Minetest bug (https://github.com/minetest/minetest/issues/6210) - -- TODO: Remove this restriction when bug #6210 is fixed. - if #layers >= max_layers_gradient then - for l=1, #layers do - if layers[l].pattern == "gradient" or layers[l].pattern == "gradient_up" then - return ItemStack("") - end - end - end local matching_pattern local max_i = player:get_inventory():get_size("craft") From 8f584be235e3ff67fcd73e9480c1002ee006b670 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 8 Jul 2021 15:03:06 +0200 Subject: [PATCH 191/720] Fix #1814 - Don't open crafting table formspec if player is sneaking --- mods/ITEMS/mcl_crafting_table/init.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_crafting_table/init.lua b/mods/ITEMS/mcl_crafting_table/init.lua index 58b46d668..eae503eeb 100644 --- a/mods/ITEMS/mcl_crafting_table/init.lua +++ b/mods/ITEMS/mcl_crafting_table/init.lua @@ -6,6 +6,7 @@ local text_color = "#313131" local itemslot_bg = mcl_formspec.get_itemslot_bg mcl_crafting_table = {} + function mcl_crafting_table.show_crafting_form(player) player:get_inventory():set_width("craft", 3) player:get_inventory():set_size("craft", 9) @@ -30,7 +31,6 @@ function mcl_crafting_table.show_crafting_form(player) ) end -local show_crafting_form = mcl_crafting_table.show_crafting_form --cache function for better performances minetest.register_node("mcl_crafting_table:crafting_table", { description = S("Crafting Table"), _tt_help = S("3×3 crafting grid"), @@ -43,7 +43,9 @@ minetest.register_node("mcl_crafting_table:crafting_table", { paramtype2 = "facedir", groups = {handy=1,axey=1, deco_block=1, material_wood=1,flammable=-1}, on_rightclick = function(pos, node, player, itemstack) - show_crafting_form(player) + if not player:get_player_control().sneak then + mcl_crafting_table.show_crafting_form(player) + end end, sounds = mcl_sounds.node_sound_wood_defaults(), _mcl_blast_resistance = 2.5, From 3b2a25a6cb338e9acdc9e2c8e72cb1221147f878 Mon Sep 17 00:00:00 2001 From: cora Date: Fri, 25 Jun 2021 15:25:45 +0000 Subject: [PATCH 192/720] Merge pull request 'mcl_inventory: Remove _mcl_autogroup dependency from mcl_inventory' (#76) from fix_inventory_depends into master Reviewed-on: https://git.minetest.land/Mineclonia/Mineclonia/pulls/76 Reviewed-by: cora --- mods/HUD/mcl_inventory/creative.lua | 9 ++++----- mods/HUD/mcl_inventory/mod.conf | 5 ++--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 6eac1c329..ff9cccf9e 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -27,10 +27,9 @@ local function replace_enchanted_books(tbl) end end ---[[ Populate all the item tables. We only do this once. Note this mod must be -loaded after _mcl_autogroup for this to work, because it required certain -groups to be set. ]] -do +--[[ Populate all the item tables. We only do this once. Note this code must be +executed after loading all the other mods in order to work. ]] +minetest.register_on_mods_loaded(function() for name,def in pairs(minetest.registered_items) do if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) and def.description and def.description ~= "" then local function is_redstone(def) @@ -108,7 +107,7 @@ do table.sort(to_sort) replace_enchanted_books(to_sort) end -end +end) local function filter_item(name, description, lang, filter) local desc diff --git a/mods/HUD/mcl_inventory/mod.conf b/mods/HUD/mcl_inventory/mod.conf index 7585d9f70..10e669265 100644 --- a/mods/HUD/mcl_inventory/mod.conf +++ b/mods/HUD/mcl_inventory/mod.conf @@ -1,6 +1,5 @@ name = mcl_inventory author = BlockMen description = Adds the player inventory and creative inventory. -depends = mcl_init, mcl_formspec, mcl_player -optional_depends = _mcl_autogroup, mcl_armor, mcl_brewing, mcl_potions, mcl_enchanting, mcl_craftguide - +depends = mcl_init, mcl_formspec, mcl_enchanting +optional_depends = mcl_armor, mcl_brewing, mcl_potions, mcl_enchanting, mcl_craftguide, mcl_player From fb01e619466d5e5147cd1609f45444667dab7d82 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 8 Jul 2021 15:31:27 +0200 Subject: [PATCH 193/720] Fix server crash when dispensing an unknown item This works similar to 2aafb2f2d01a6ece9ed4642a7081c53dbf22f773, however it is a cleaner way to do it. --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index ee7f29016..7c2c07393 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -129,8 +129,13 @@ local dispenserdef = { dropitem:set_count(1) local stack_id = stacks[r].stackpos local stackdef = stack:get_definition() + + if not stackdef then + return + end + local iname = stack:get_name() - local igroups = minetest.registered_items[iname].groups + local igroups = stackdef.groups --[===[ Dispense item ]===] From c558e30ea55b1a93710f53093c07fa2bbe87bc32 Mon Sep 17 00:00:00 2001 From: cora Date: Tue, 15 Jun 2021 01:13:24 +0200 Subject: [PATCH 194/720] Fix server crash when players dig unknown nodes Digging unknown nodes crashes the Clamity Minetest server, which runs modified Minetest: https://github.com/ClamityAnarchy/minetest Crashes did occur with commit d5434bf008 of that Minetest version. This commit makes unknown nodes explicitly not harvestable. --- mods/CORE/_mcl_autogroup/init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/CORE/_mcl_autogroup/init.lua b/mods/CORE/_mcl_autogroup/init.lua index ba8b659c0..e04fb2eac 100644 --- a/mods/CORE/_mcl_autogroup/init.lua +++ b/mods/CORE/_mcl_autogroup/init.lua @@ -207,6 +207,10 @@ end function mcl_autogroup.can_harvest(nodename, toolname) local ndef = minetest.registered_nodes[nodename] + if not ndef then + return false + end + if minetest.get_item_group(nodename, "dig_immediate") >= 2 then return true end From 6e1758400ef4999d2189f7656d1c7bbcdc76e4ce Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 8 Jul 2021 15:39:08 +0200 Subject: [PATCH 195/720] Remove feature freeze notice from README --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 22b5d0d7b..034d381ab 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -# (Currently in feature freeze) - # MineClone 2 An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by many people. Not developed or endorsed by Mojang AB. From 509568b4b01e7529af9c8ad1e00980eba7bbd648 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 8 Jul 2021 16:49:19 +0000 Subject: [PATCH 196/720] Use real Minecraft colors for totem particles! --- mods/ITEMS/mcl_totems/init.lua | 38 ++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index ecdc20da0..2311e88d7 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -5,8 +5,32 @@ minetest.register_on_leaveplayer(function(player) end) -- Totem particle registration --- TODO: real MC colors, these are randomly selected colors: -local colors = {"#7FFF00", "#698B22", "#BCEE68", "#EEEE00", "#C5F007"} +function rgb_to_hex(rgb) + local hexadecimal = "#" + + for key, value in pairs(rgb) do + local hex = "" + + while value > 0 do + local index = math.fmod(value, 16) + 1 + value = math.floor(value / 16) + hex = string.sub("0123456789ABCDEF", index, index) .. hex + end + + local len = string.len(hex) + + if len == 0 then + hex = "00" + elseif len == 1 then + hex = "0" .. hex + end + + hexadecimal = hexadecimal .. hex + end + + return hexadecimal +end + minetest.register_entity("mcl_totems:totem_particle", { physical = true, collide_with_objects = false, @@ -17,10 +41,16 @@ minetest.register_entity("mcl_totems:totem_particle", { spritediv = {x=1, y=1}, initial_sprite_basepos = {x=0, y=0}, static_save = false, - glow = 5, + glow = 14, on_activate = function(self, staticdata) + local color + if math.random(0, 3) == 0 then + color = rgb_to_hex({ (0.6 + math.random() * 0.2) * 255, (0.6 + math.random() * 0.3) * 255, (math.random() * 0.2) * 255 }) + else + color = rgb_to_hex({ (0.1 + math.random() * 0.4) * 255, (0.6 + math.random() * 0.3) * 255, (math.random() * 0.2) * 255 }) + end self.object:set_properties({ - textures = {"mcl_particles_totem"..math.random(1, 4)..".png^[colorize:"..colors[math.random(#colors)]} + textures = { "mcl_particles_totem"..math.random(1, 4)..".png^[colorize:"..color } }) local t = math.random(1, 2)*math.random() minetest.after(t, function() From 8e931e92f57ce18792a846828e0e942f52f8eef1 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 9 Jul 2021 11:34:23 +0200 Subject: [PATCH 197/720] refactor mcl_title to be more efficient --- mods/HUD/mcl_title/init.lua | 120 +++++++++++++++++++++++++++--------- 1 file changed, 90 insertions(+), 30 deletions(-) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index ffd740b4a..48c3a909f 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -8,8 +8,17 @@ --TODO: allow colorizing and styling of part of the text (NEEDS ENGINE CHANGE!!!) --TODO: exactly mc like layout +--Note that the table storing timeouts use playername as index insteed of player objects (faster) +--This is intended in order to speedup the process of removing HUD elements the the timeout is up + local huds_idx = {} +local hud_hide_timeouts = {} + +hud_hide_timeouts.title = {} +hud_hide_timeouts.subtitle = {} +hud_hide_timeouts.actionbar = {} + huds_idx.title = {} huds_idx.subtitle = {} huds_idx.actionbar = {} @@ -19,10 +28,13 @@ mcl_title.defaults = {fadein = 10, stay = 70, fadeout = 20} mcl_title.layout = {} mcl_title.layout.title = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = -1.3}, size = 7} mcl_title.layout.subtitle = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = 1.7}, size = 4} -mcl_title.layout.actionbar = {position = {x = 0.5, y = 1}, alignment = {x = 0, y = -11}, size = 2} +mcl_title.layout.actionbar = {position = {x = 0.5, y = 1}, alignment = {x = 0, y = 0}, size = 1} local get_color = mcl_util.get_color +local string = string +local pairs = pairs + local function gametick_to_secondes(gametick) return gametick / 20 end @@ -32,15 +44,64 @@ end local player_params = {} minetest.register_on_joinplayer(function(player) - player_params[player] = { + local playername = player:get_player_name() + player_params[playername] = { stay = gametick_to_secondes(mcl_title.defaults.stay), --fadeIn = gametick_to_secondes(mcl_title.defaults.fadein), --fadeOut = gametick_to_secondes(mcl_title.defaults.fadeout), - } + } + local _, hex_color = get_color("white") + huds_idx.title[player] = player:hud_add({ + hud_elem_type = "text", + position = mcl_title.layout.title.position, + alignment = mcl_title.layout.title.alignment, + text = "", + --bold = data.bold, + --italic = data.italic, + size = {x = mcl_title.layout.title.size}, + number = hex_color, + z_index = 100, + }) + huds_idx.subtitle[player] = player:hud_add({ + hud_elem_type = "text", + position = mcl_title.layout.subtitle.position, + alignment = mcl_title.layout.subtitle.alignment, + text = "", + --bold = data.bold, + --italic = data.italic, + size = {x = mcl_title.layout.subtitle.size}, + number = hex_color, + z_index = 100, + }) + huds_idx.actionbar[player] = player:hud_add({ + hud_elem_type = "text", + position = mcl_title.layout.actionbar.position, + offset = {x = 0, y = -210}, + alignment = mcl_title.layout.actionbar.alignment, + --bold = data.bold, + --italic = data.italic, + text = "", + size = {x = mcl_title.layout.actionbar.size}, + number = hex_color, + z_index = 100, + }) end) minetest.register_on_leaveplayer(function(player) - player_params = nil + local playername = player:get_player_name() + + --remove player params from the list + player_params[player] = nil + + --remove HUD idx from the list (HUD elements are removed by the engine) + huds_idx.title[player] = nil + huds_idx.subtitle[player] = nil + huds_idx.actionbar[player] = nil + + --remove timers form list + hud_hide_timeouts.title[playername] = nil + hud_hide_timeouts.subtitle[playername] = nil + hud_hide_timeouts.actionbar[playername] = nil end) function mcl_title.params_set(player, data) @@ -66,43 +127,22 @@ function mcl_title.set(player, type, data) return false end - if huds_idx[type][player] then - player:hud_remove(huds_idx[type][player]) - end - --TODO: enable this code then Fleckenstein's pr get merged (in about 5-6 years) --if data.bold == nil then data.bold = false end --if data.italic == nil then data.italic = false end - local stay = mcl_title.params_get(player).stay + player:hud_change(huds_idx[type][player], "text", data.text) + player:hud_change(huds_idx[type][player], "number", hex_color) - huds_idx[type][player] = player:hud_add({ - hud_elem_type = "text", - position = mcl_title.layout[type].position, - alignment = mcl_title.layout[type].alignment, - text = data.text, - --bold = data.bold, - --italic = data.italic, - size = {x = mcl_title.layout[type].size}, - number = hex_color, - z_index = 1100, - }) - - minetest.after(stay, function() - if huds_idx[type][player] then - player:hud_remove(huds_idx[type][player]) - end - huds_idx[type][player] = nil - end) + hud_hide_timeouts[type][player:get_player_name()] = data.stay or mcl_title.params_get(player).stay return true end function mcl_title.remove(player, type) - if huds_idx[type][player] then - player:hud_remove(huds_idx[type][player]) + if player then + player:hud_change(huds_idx[type][player], "text", "") end - huds_idx[type][player] = nil end function mcl_title.clear(player) @@ -115,6 +155,26 @@ minetest.register_on_dieplayer(function(player) mcl_title.clear(player) end) +minetest.register_globalstep(function(dtime) + local new_timeouts = { + title = {}, + subtitle = {}, + actionbar = {}, + } + for element, content in pairs(hud_hide_timeouts) do + for name, timeout in pairs(content) do + timeout = timeout - dtime + if timeout <= 0 then + local player = minetest.get_player_by_name(name) + mcl_title.remove(player, element) + else + new_timeouts[element][name] = timeout + end + end + end + hud_hide_timeouts = new_timeouts +end) + --TEMP STUFF!! --TODO: remove then testing/tweaking done From d2f7d3136028f726d3aaba1ff7e4304e1952aef5 Mon Sep 17 00:00:00 2001 From: Emojigit Date: Sat, 10 Jul 2021 10:16:55 +0800 Subject: [PATCH 198/720] Fix warning in `mcl_end` This fixes: ``` 2021-07-10 10:00:58: WARNING[Main]: get_mapgen_params is deprecated; use get_mapgen_setting instead (at .../../games/MineClone2/mods/ITEMS/mcl_end/chorus_plant.lua:456) ``` --- mods/ITEMS/mcl_end/chorus_plant.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index 24307b5ed..4dc54db18 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -453,7 +453,7 @@ function mcl_end.grow_chorus_plant_step(pos, node, pr) end --- ABM --- -local seed = minetest.get_mapgen_params().seed +local seed = minetest.get_mapgen_setting("seed") local pr = PseudoRandom(seed) minetest.register_abm({ label = "Chorus plant growth", From b6eb0ab66ce4c90741a71928913615a6cdf37fd7 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 10 Jul 2021 15:12:41 +0000 Subject: [PATCH 199/720] Fix #1808 (Make end credits speed up when pressing jump) --- mods/HUD/mcl_credits/init.lua | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/mods/HUD/mcl_credits/init.lua b/mods/HUD/mcl_credits/init.lua index 294373875..633a68c8f 100644 --- a/mods/HUD/mcl_credits/init.lua +++ b/mods/HUD/mcl_credits/init.lua @@ -156,7 +156,16 @@ function mcl_credits.show(player) offset = {x = -5, y = -5}, z_index = 1001, number = 0xFFFFFF, - }) + }), + player:hud_add({ + hud_elem_type = "text", + text = " Jump to speed up (additionally sprint)", + position = {x = 0, y = 1}, + alignment = {x = 1, y = -1}, + offset = {x = -5, y = -5}, + z_index = 1002, + number = 0xFFFFFF, + }), }, } add_hud_element({ @@ -216,13 +225,24 @@ end) minetest.register_globalstep(function(dtime) for _, huds in pairs(mcl_credits.players) do local player = huds.player - if not huds.new and player:get_player_control().sneak then + local control = player:get_player_control() + if not huds.new and control.sneak then mcl_credits.hide(player) else local moving = {} local any for id, y in pairs(huds.moving) do - y = y - 1 + + if not control.jump then + y = y - 1 + else + if not control.aux1 then + y = y - 3 + else + y = y - 8 + end + end + if y > -100 then if id == huds.icon then y = math.max(400, y) From 357474e32f5ace629711c409bfe28908b3f072f8 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 10 Jul 2021 17:28:24 +0000 Subject: [PATCH 200/720] Add better credits background --- mods/HUD/mcl_credits/textures/credits_bg.png | Bin 0 -> 63056 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/HUD/mcl_credits/textures/credits_bg.png diff --git a/mods/HUD/mcl_credits/textures/credits_bg.png b/mods/HUD/mcl_credits/textures/credits_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..ad74cbd3070227751113b46a48353ed8724f37db GIT binary patch literal 63056 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

_%cp93MR!&A(7A2qK7s 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

u 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 JPDHLkV1ldgMFju= literal 0 HcmV?d00001 From b7e6db537b65f4ea7cfbaff9dba588138a1d319e Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 10 Jul 2021 17:32:01 +0000 Subject: [PATCH 201/720] Support new credits background --- mods/HUD/mcl_credits/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HUD/mcl_credits/init.lua b/mods/HUD/mcl_credits/init.lua index 633a68c8f..40373df16 100644 --- a/mods/HUD/mcl_credits/init.lua +++ b/mods/HUD/mcl_credits/init.lua @@ -142,7 +142,7 @@ function mcl_credits.show(player) ids = { player:hud_add({ hud_elem_type = "image", - text = "menu_bg.png", + text = "credits_bg.png", position = {x = 0, y = 0}, alignment = {x = 1, y = 1}, scale = {x = -100, y = -100}, From f46c4ebad7c1b1539062f7f9c073f9c61715ffd4 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 11 Jul 2021 11:11:22 +0000 Subject: [PATCH 202/720] Simplify code --- mods/HUD/mcl_credits/init.lua | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/mods/HUD/mcl_credits/init.lua b/mods/HUD/mcl_credits/init.lua index 40373df16..929a9992b 100644 --- a/mods/HUD/mcl_credits/init.lua +++ b/mods/HUD/mcl_credits/init.lua @@ -232,14 +232,12 @@ minetest.register_globalstep(function(dtime) local moving = {} local any for id, y in pairs(huds.moving) do - - if not control.jump then - y = y - 1 - else - if not control.aux1 then - y = y - 3 - else - y = y - 8 + y = y - 1 + + if control.jump then + y = y - 2 + if control.aux1 then + y = y - 5 end end From 46d48ccf2f62a80b6710c4b7bbe12ca3a6417aa9 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 11 Jul 2021 11:42:12 +0000 Subject: [PATCH 203/720] Add support for translation --- mods/HUD/mcl_credits/init.lua | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/mods/HUD/mcl_credits/init.lua b/mods/HUD/mcl_credits/init.lua index 929a9992b..235b2a3cb 100644 --- a/mods/HUD/mcl_credits/init.lua +++ b/mods/HUD/mcl_credits/init.lua @@ -1,23 +1,26 @@ +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) + mcl_credits = { players = {}, } -mcl_credits.description = "A faithful Open Source clone of Minecraft" +mcl_credits.description = S("A faithful Open Source clone of Minecraft") -- Sub-lists are sorted by number of commits, but the list should not be rearranged (-> new contributors are just added at the end of the list) mcl_credits.people = { - {"Creator of MineClone", 0x0A9400, { + { S("Creator of MineClone"), 0x0A9400, { "davedevils", }}, - {"Creator of MineClone2", 0xFBF837, { + { S("Creator of MineClone2"), 0xFBF837, { "Wuzzy", }}, - {"Maintainers", 0xFF51D5, { + { S("Maintainers"), 0xFF51D5, { "Fleckenstein", "kay27", "oilboi", }}, - {"Developers", 0xF84355, { + { S("Developers"), 0xF84355, { "bzoss", "AFCMS", "epCode", @@ -30,7 +33,7 @@ mcl_credits.people = { "Code-Sploit", "NO11", }}, - {"Contributors", 0x52FF00, { + { S("Contributors"), 0x52FF00, { "Laurent Rocher", "HimbeerserverDE", "TechDudie", @@ -64,7 +67,7 @@ mcl_credits.people = { "NO11", "j45", }}, - {"Original Mod Authors", 0x343434, { + { S("Original Mod Authors"), 0x343434, { "Wuzzy", "Fleckenstein", "BlockMen", @@ -96,12 +99,12 @@ mcl_credits.people = { "jordan4ibanez", "paramat", }}, - {"3D Models", 0x0019FF, { + { S("3D Models"), 0x0019FF, { "22i", "tobyplowy", "epCode", }}, - {"Textures", 0xFF9705, { + { S("Textures"), 0xFF9705, { "XSSheep", "Wuzzy", "kingoscargames", @@ -110,7 +113,7 @@ mcl_credits.people = { "yutyo", "NO11", }}, - {"Translations", 0x00FF60, { + { S("Translations"), 0x00FF60, { "Wuzzy", "Rocher Laurent", "wuniversales", @@ -150,7 +153,7 @@ function mcl_credits.show(player) }), player:hud_add({ hud_elem_type = "text", - text = "Sneak to skip", + text = S("Sneak to skip"), position = {x = 1, y = 1}, alignment = {x = -1, y = -1}, offset = {x = -5, y = -5}, @@ -159,7 +162,7 @@ function mcl_credits.show(player) }), player:hud_add({ hud_elem_type = "text", - text = " Jump to speed up (additionally sprint)", + text = " "..S("Jump to speed up (additionally sprint)"), position = {x = 0, y = 1}, alignment = {x = 1, y = -1}, offset = {x = -5, y = -5}, @@ -233,7 +236,7 @@ minetest.register_globalstep(function(dtime) local any for id, y in pairs(huds.moving) do y = y - 1 - + if control.jump then y = y - 2 if control.aux1 then From a0d3f517458de005d130361cf4d96bef17d6f206 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 11 Jul 2021 11:43:28 +0000 Subject: [PATCH 204/720] Add template for translations --- mods/HUD/mcl_credits/locale/template.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 mods/HUD/mcl_credits/locale/template.txt diff --git a/mods/HUD/mcl_credits/locale/template.txt b/mods/HUD/mcl_credits/locale/template.txt new file mode 100644 index 000000000..3ee9fa56c --- /dev/null +++ b/mods/HUD/mcl_credits/locale/template.txt @@ -0,0 +1,14 @@ +# textdomain: mcl_credits +3D Models= +A faithful Open Source clone of Minecraft= +Contributors= +Creator of MineClone= +Creator of MineClone2= +Developers= +Jump to speed up (additionally sprint)= +Maintainers= +MineClone5= +Original Mod Authors= +Sneak to skip= +Textures= +Translations= From 848f1489e861d78fba56bac9d27886bf5c5dd909 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 11 Jul 2021 11:44:00 +0000 Subject: [PATCH 205/720] Add german translation --- mods/HUD/mcl_credits/locale/mcl_credits.de.tr | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 mods/HUD/mcl_credits/locale/mcl_credits.de.tr diff --git a/mods/HUD/mcl_credits/locale/mcl_credits.de.tr b/mods/HUD/mcl_credits/locale/mcl_credits.de.tr new file mode 100644 index 000000000..6a38d18e6 --- /dev/null +++ b/mods/HUD/mcl_credits/locale/mcl_credits.de.tr @@ -0,0 +1,13 @@ +# textdomain: mcl_credits +3D Models=3D Modelle +A faithful Open Source clone of Minecraft=Ein treuer Open-Source-Klon von Minecraft +Contributors=Mitwirkende +Creator of MineClone=Schöpfer von MineClone +Creator of MineClone2=Schöpfer von MineClone2 +Developers=Entwickler +Jump to speed up (additionally sprint)=Springen, um zu beschleunigen (zusätzlich sprinten) +Maintainers=Betreuer +Original Mod Authors=Original-Mod-Autoren +Sneak to skip=Schleichen zum Überspringen +Textures=Texturen +Translations=Übersetzungen From 5ceb48fcb13ae20a4295cc7c0d4cbcfa30c26a8c Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 12 Jul 2021 18:05:52 +0000 Subject: [PATCH 206/720] Faster rgb to hex --- mods/ITEMS/mcl_totems/init.lua | 61 +++++++++++----------------------- 1 file changed, 20 insertions(+), 41 deletions(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index 2311e88d7..5f9b254a3 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -5,64 +5,43 @@ minetest.register_on_leaveplayer(function(player) end) -- Totem particle registration -function rgb_to_hex(rgb) - local hexadecimal = "#" - for key, value in pairs(rgb) do - local hex = "" - - while value > 0 do - local index = math.fmod(value, 16) + 1 - value = math.floor(value / 16) - hex = string.sub("0123456789ABCDEF", index, index) .. hex - end - - local len = string.len(hex) - - if len == 0 then - hex = "00" - elseif len == 1 then - hex = "0" .. hex - end - - hexadecimal = hexadecimal .. hex - end - - return hexadecimal +function rgb_to_hex(r, g, b) + return string.format("%02x%02x%02x", r, g, b) end minetest.register_entity("mcl_totems:totem_particle", { physical = true, collide_with_objects = false, - collisionbox = {-0.02,-0.02,-0.02, 0.02,0.02,0.02}, + collisionbox = { -0.02, -0.02, -0.02, 0.02, 0.02, 0.02 }, pointable = false, visual = "sprite", - visual_size = {x=0.2, y=0.2}, - spritediv = {x=1, y=1}, - initial_sprite_basepos = {x=0, y=0}, + visual_size = { x = 0.2, y = 0.2 }, + spritediv = { x = 1, y = 1 }, + initial_sprite_basepos = { x = 0, y = 0 }, static_save = false, glow = 14, on_activate = function(self, staticdata) local color if math.random(0, 3) == 0 then - color = rgb_to_hex({ (0.6 + math.random() * 0.2) * 255, (0.6 + math.random() * 0.3) * 255, (math.random() * 0.2) * 255 }) + color = rgb_to_hex( 153 + math.random() * 51, 153 + math.random() * 76.5, math.random() * 51) else - color = rgb_to_hex({ (0.1 + math.random() * 0.4) * 255, (0.6 + math.random() * 0.3) * 255, (math.random() * 0.2) * 255 }) + color = rgb_to_hex(25.5 + math.random() * 102, 153 + math.random() * 76.5, math.random() * 51) end self.object:set_properties({ - textures = { "mcl_particles_totem"..math.random(1, 4)..".png^[colorize:"..color } + textures = { "mcl_particles_totem"..math.random(1, 4)..".png^[colorize:#"..color } }) local t = math.random(1, 2)*math.random() minetest.after(t, function() - self.object:set_velocity({x = math.random(-4, 4)*math.random(), y = math.random(-1, 4)*math.random(), z = math.random(-4, 4)*math.random()}) + self.object:set_velocity({ x = math.random(-4, 4) * math.random(), y = math.random(-1, 4) * math.random(), z = math.random(-4, 4) * math.random() }) end) minetest.after(0.3 + t, function() - self.object:set_acceleration({x=0, y=-4, z=0}) - self.object:set_velocity({x=0, y=0, z=0}) + self.object:set_acceleration({ x = 0, y = -4, z = 0 }) + self.object:set_velocity({ x = 0, y = 0, z = 0 }) end) end, on_step = function(self, dtime) - local r = math.random(1,50) + local r = math.random(1, 50) if r == 1 then self.object:remove() end @@ -79,7 +58,7 @@ mcl_damage.register_modifier(function(obj, damage, reason) local ppos = obj:get_pos() local pnname = minetest.get_node(ppos).name -- Some exceptions when _not_ to save the player - for n=1, #mobs_mc.misc.totem_fail_nodes do + for n = 1, #mobs_mc.misc.totem_fail_nodes do if pnname == mobs_mc.misc.totem_fail_nodes[n] then return end @@ -95,14 +74,14 @@ mcl_damage.register_modifier(function(obj, damage, reason) end -- Effects - minetest.sound_play({name = "mcl_totems_totem", gain=1}, {pos=ppos, max_hear_distance=16}, true) + minetest.sound_play({ name = "mcl_totems_totem", gain = 1 }, { pos = ppos, max_hear_distance = 16 }, true) --Particles minetest.after(0.1, function() local new_pos = obj:get_pos() if not new_pos then return end - local particlepos = {x = new_pos.x, y = new_pos.y + 1, z = new_pos.z} + local particlepos = { x = new_pos.x, y = new_pos.y + 1, z = new_pos.z } for i = 1, 150 do minetest.add_entity(particlepos, "mcl_totems:totem_particle") end @@ -113,9 +92,9 @@ mcl_damage.register_modifier(function(obj, damage, reason) hud_totem[obj] = obj:hud_add({ hud_elem_type = "image", text = "mcl_totems_totem.png", - position = { x=0.5, y=1 }, - scale = { x=17, y=17 }, - offset = { x=0, y=-178 }, + position = { x = 0.5, y = 1 }, + scale = { x = 17, y = 17 }, + offset = { x = 0, y = -178 }, z_index = 100, }) minetest.after(3, function() @@ -131,4 +110,4 @@ mcl_damage.register_modifier(function(obj, damage, reason) end end end -end, 1000) \ No newline at end of file +end, 1000) From 960b653979a7285d6fa785ce5cff83aeca4cb80d Mon Sep 17 00:00:00 2001 From: epCode Date: Mon, 12 Jul 2021 11:50:37 -0700 Subject: [PATCH 207/720] fix #1299 --- .../mcl_armor/models/mcl_armor_character.b3d | Bin 493300 -> 554680 bytes .../models/mcl_armor_character.blend | Bin 1210268 -> 1242020 bytes .../models/mcl_armor_character_female.b3d | Bin 493300 -> 554680 bytes .../models/mcl_armor_character_female.blend | Bin 1210092 -> 1242244 bytes mods/ITEMS/mcl_armor/player.lua | 4 ++++ mods/PLAYER/mcl_player/init.lua | 4 ++++ mods/PLAYER/mcl_playerplus/init.lua | 12 +++++++++++- 7 files changed, 19 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_armor/models/mcl_armor_character.b3d b/mods/ITEMS/mcl_armor/models/mcl_armor_character.b3d index 95f763eab25205397a85236cb0f610212481e585..b3a943f4679e6484c8f6ae37e0879f3249427407 100644 GIT binary patch delta 106756 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 F@&5;Q6eR!v diff --git a/mods/ITEMS/mcl_armor/models/mcl_armor_character.blend b/mods/ITEMS/mcl_armor/models/mcl_armor_character.blend index a5626aaccb7fefd5eed3164226a0dc78c9a3f317..a613eef89303dc9b6df5b5bbf63c46a1ef996702 100644 GIT binary patch delta 127846 zcmeFad0>+Dkgy0ykc5QQM%fn$3JMAs1eBm?SQ8Mn6$N61 zLPY^VjfzTKreRzF*LDZT1r-#=E$%XIC}O^|-gGxOug}c$et*50!Mas-e&?Jzb!xqJ zt2cZ%bnEA5uSxbFsyF=eKg#0h&*C6%u{SPm>_yWrHAjM;yo%Y5FPJ-YK~eRB%B18o z`u2Uhps?_Rg2Mg>3knL~&&+Ifd-a;Ht>nIWc^?$^@Bfkh>)bi}9?Hne&p)7v820X+ zyQ_Lljpes(durdlc?Tmi^ZWIC%j@+{tzPqq<*!$--i$tHoZ+%WLXi7mV#9{Bh@fG^ zhL<7%Bt{XXrlyqFF(RCW7STBtAZVnq^tltM9h_ z&6+h^jl94jQM}IRoA)yC%Iln+{Sep|it{J`pcH_8JGW1t7fk9SQ)eMhO6h?>kPt=}^5>BL9J6Q+ns-?)_7Nf2Ihew`|$+)<|CP zT)lCbRR-yIpblr8(Kkv5th^>on#_;EOi4^kybKKZ;eVtUD|f6_;#w`{pq zc}d89RQvW@Q3v(Q{F4kYifi7y`ECD=4*vA?3gzYMkZ4uj@?7ccE9PHW3u(2NUooG; zWy`OQ3So?Z?6}&#efuuK@XD)7DSv7Cvj0&C`cHavZ(b9ta%I2t%0vC8^zPKDbHNq! z=hxytlzwGtX)Q|Ee`V#%ernwK)cUBwfI)+#wekbYHV*#*7qUcF8q_vqe!30CEb zH7f?DHEWi7`TY6EuekEcS_o?~ERW!X9NTy3&B2>o zWfMEvJ$m#U4qTJ0%HXQW5r=oqqaQ)CC7fqkOD^iCgOUt5k z7&7F{D-kz#+_;UGUM4z}mR6RXm*X$F{EF{kdXN;sHx8yHjbO?#v~q91-=Ux@dXE`9 z_7)U?u7HJHw0KGFva9PV;`|Gy+=dL!DJrU(bLnNZ_zxwnvM5I75!))5}THy0lx9;8hRIVBMOXbQ{%X)X}+_?~oqQ$vt z!2%J)!WJ!AQWGD4is!t^lmCuIK|!Sp7FKR7%gLH}?s;ob5R3xNOXgkv53N5H2E0CP z)3$AAu-(^GIp})ez^?1fzv`+8VJpxLe}_3@>WqtvKfd%b76uwuu3nInFm1++`#W^V z>J3);pmNQGGzVJ2JJ9$0i96N|x*(_*<$~ncWH&6%idq=R3&19guo(CcYOiwjq8wzl zfAP|?Un*X@b&FwQBn1x9*nD}0a%#Ut3~)C|3Q-sM;PG#`r!9Vm{G$Sjf}YJ^=L3T0-4 zi5a-jVQ%vipQyZUO-0vBX3u_G8DSTOt`W&>0Tg>_c{vV+wcya86*9_mpeuV86iIw^ z?|lKQ>!it(?~mky1DA5a5POlbWy`31Z1thUW%`U6kBZxG2SeS`^~^H^9nak7BSa(@d`2^0e#I5g`j%EUnuuJo97y{T<`La0_flQ0?L3R>ikWE7AIS)tE;vRl z^#xPMS8iI+)&aG?hpA6b@t#{cb5$`DG(h?C<+aOKu=gM{bbu0YL1>AUjV3p(%$a;9 zXp=^a`t|EKR(yJW=Q9I=ax4;Rf{d_7KN%xPugsX<92gA*M#+(k!Z0DYr88DnBqOi^ zFuKNNh8oQS+kjJ5))uuCMhOmR_?u{i?SFk|tgc8#SjWt$jv4n@!06o8#Axos`1tbQ z2Mr!F0}8em_34211$FV077Y9GIyTG-@+uom?*uFc_>K=b^URrqUa@9Fn_08xysb#= zv}2Lb#0A;U_Xl*Wmq||@Y%}?S3$`H=8xj@+yRJwyHk?KmcLABb?X!muUjV=lpbg*J zX4vrI*GB?jY={CbhOzX!b58?cS9|oBu|d%F5R`O%8<PwfM0{O4VlwtT)ay`Tq)6}t=tqyyLqx7=a-Mc zw!ui`gngL)Lx!iqT$32CShJ}u%zkfi8Ggn`%O9NXCr>CUTBGbRgoSV>loY4y8=AmwRVr{guAH!+Lz{06AUMf}70!xB_x5ve zZM3N^)=&x55DsKmwK!@Ra~qqf%wSI_o=B35PKRfeomFu4WZ0-I`GxC&>Cq7Q}8PUPOzc({+9sr(3Tlj)blS0wx`iepkzQUhq~H0gMFb_e0u!G?x$EQ%vcXPQJ4BF8p1nCkaP zjtQ_A+d>Gz2a7ui%l6jsNPY>hz1cQ~3>mhz{)pt(00x^J6}$10uEMN!G_wZn+P6PF znhJTfI6=7vu)AJ}gjjDIXE&?dUfdK|3UO?aVW)LuG;wp051eBSdD>~GO@-wcPE;y4 z&P$KroQlN1Mi#yiOo3`(b79Mtw{{1>b|U_Z-d6m}aomoK`Bwn%n5x%ou%^Mr zLh1iaL9kSLuX@cUYf9H{-FESY{eM{+v_ed2Tp_R$FK1J!kUursLD+SCzhA$Cx531F zVNiMnb}gTW-Lzfc86i;iAz0#eC{R@tsw;bbt7Qzcg`V0Pc zXfe_SvKo~anIk@{N#fC*g#@i>HE2PRX&i4g@fBY=d2x{$eTCIyd|>nEq)d1thZ+xV zicUZJ#hGQu_~?9qVkq(OdCAveT>pxHdbYGER2^^q=&dh0xAVlA&8w}Z{^f7&KvE~L zi9&^tJrj3i+WSO}Q zEWa;&*aszK%%o;6At}ZhD@Aajc!UW6ql@g1o%^IYdDG*Q55;X=8;;OFry|l`Sy-_$bL7Nd&JWYE!SF z)gnjh^Hi}$X&Ng5hM_;T23gHiSJ=tfLZOJFt*nl6QUsTDUqdT7TPPH9^d2dIa8h$} z!S^)+git7=>IFuqEVV9cbp*8%3Pq&7#0Zt8MkJ$|3X~xfim19<$|0N-!NwvPLZJw4 z11d`^fh}Efvz=^XD>02H*vZL))rw&~8Yfvz^0f*1r3$nuX%(o$Mj6)ilc`BocJ^J{ zxIN#}h#GBJ8>fWMQ|x@f-4L3?wN6*Fy~cLT_esz`90ZwPldOysrE4jggr7$GoW|CH z|&?^V6xPaWG`o&UMT>JZB*Hl5KoW17+>w(rlgtW+pxFPPX2%w}74q9-A1R1|XDF z2M#E>w>k7?1G}Eu=|?mATdRYa+tf<(k@d~8EA1xjv|_ZOMtKBq=6Z$-Xkzv@wVGvb zVjI;|N-Zq>l6r-(gn?(c7ATCZ1p=AzsaA%M^PyZ#Ot)lDLu-M#J=Jz&w4 z7_yndFWf;T4a|1U6v)lv8sL)pNC(rsnU!a!4gg!0G=mZDAdYaI(}T;|${MDf-jRA^ z3Q+=Bra5%vly55F(LQSyaIbD|o$X^HtA*8~op#8|2Rm2%n=lqC0V2-p&_SF2EkN>z zEICUgYgpv_iiSW6QF2$4dAFUAh+TdWa3VUhuM22!GmPM@0TV}Qp!{MrpdrFEP6rJ> zqR~C4@XGt5M)xod9#FL!=H~ioP@#}VapxWx@wPyS<3BJf>^*Rz$@=69nfmESNs?ac&2=a-gS&(UMN!KJLafF1RrcWztWqMTta|iY5Pq`DR zInogZakA8}NbIx_RbG74Ek!xNsB~s?Yio8w0?!euFf`TcVC3S*&15qIosU16hkOxr+cF%(*QtYb{t8LJ&IZpOq}7&0+G67kH=!1xvP z=BXXPmkzNv*N8W3nA=Ny2SfIq;AXaPcoSC6#4PA5iJE=-Y`0Yr)I_Xu@jxAM#9n-+>21iZTV0Zjyc&@f{%!}(EYK{%ly_b8v#^iwKu^%Pm%rT7a9%!Nr>0lve85VRwH>iA~<}P(4+M!hrsDa4nx>u&E zhTFu1qt-ohp4#1dz{ihN#|}AL$J4B>_VcLrzSBVMPgw0LQQOgeuRq%@j3KKXUdk2e z%s{nY>S48Mr>Og+n^LqoT3{V^evNy=_&`}$!X}A|3Y4S-!FZUoiB->U(-U;d8Kx-Dns2{A{*wp(^C|mJ zvG|RK;nN=CIS+508%uyuuxlw(>c zVt~-(-1HQ|m$8Gu3%#sE4TkKo{Ky`ACXVT_ZDYCztkv~ChaRZ-=i9;8aEHaW_g@uP zYvm_gMjf(qDeTvvC-yN*S9&u|mwT-Grs%c?31;q4D8P`k6Og2cpNI%^YdN#!oG&hurBfbE+QaO`Or-?`StibBU%vtb_0s$nviZ6{m> z@=zP|YEtY%WEa)Otx0y{j@8h%K0XD^f{(_UYjyS!3)6kBm0TuFohO;O z^I3OxpJ@`FE8%hpM@iUR40w-(w+KEg`QJ+X1qpAEuu8&Q#?5i=ks4_$jP4f(=SX~t zgyjsxnwkQ|RzH3kp2<1~7+3XLXWHJ3t*O9EXr1mQ)<7RW9=RN>^K(b;O~5+%NEOvb zS-2G?tep*_$`u@{D%zBG(N2cXc||03Hg8>SrAeGBV+MG%R0ckpiuq6()B?>OdWTHth6(v?1bK_DAUKZl);MS$+o!C*B zmzG*>Qj{s0+6E-`9mXoNQhn6hm_4(g054$qHot)O!AGpc4pX}Ux%O08lh|8n59aI@ zFMLG8E>g2MODIl=V&^6RPDZLuP%tc862`G->>QfA%nBr==t%W2WFi5NSg+k=ZOFv2 z3#v(TAd~(SG0${;C#k@MS6QQExJq9Q-C1$sC0ISMp=UO&2FqtPjE)DQ;_>G6HCA(9 z)t(XtbvJiboYKQ49$<`Yo2aoz^f8bgnH-H(uPx|AL#tU*VfAjHgXBH@&LYKhyT@aj z{T0@rUPo_-!4}F>ypcmGPMoIikaP`8r(6Q_+0i${g3DQhOIjM8Kk5?iGdFd!PBE`e zw;Z$SX3I_tujiF7g;?~y?Sj()48pJ;0w76+Y!)92(8%Ao5@xnI(3tL(R_9)n2p}ce ze+O%-;CJHQiL0$uy|Hp(vcga$RcO|o3{{pVKwBcT@medpr%)=gRN~6<1Z3NJDpW}o z8WyMuKLJ|$BX%8?CkoX%QI01dS0HlqE#MGXOQ!!?t4X?wJAwH0p3n+Q)`HJ)#laL1 z=0+7GQ{_A0m#E*z-5FP+a3r3lWIlgq$E!*SJ9%d%AOPTbo zhm}kXu4G`Y^DHzOpr?>G6t~`L71q=A!KPKRC$)vL9fsSf;Cw;R`%Wm#)U!P~X4q}k zBQ0n-qRh*J!WuU0#Z+h9#)_ucoI)ysUl!8*6zmmtHr4Q+?b zC1uLY==Y%OPrn4ZIokf*cE7bIF)RB9p4|FjKPA-tPAl7MUs4R!2d(HU+95UDr&&Im zIMN)~*~(Q#Aul&E#T>cIs!SpFV3a~>X3hv)uK};A=C>_YgXBY5v`;%+dPC=Hh;v_+ zx78YL-;I-QpdN0PK5vaNN!3-{!bNoLg-R-(!HtX{e~niszmmjr{%XP?$f zHcx+SU1m4k36ikP*6nD_)h21R<;#S@oP>Z*uF&sU2?v!id+r6_bnfGAA5H=V1|#=| z=Ef?^?^M;66&y%f+{bLMvNF*@I`(M%`$OVf9sht_i1)!bgk9j@PE5o2rat4g-`;0j z-?+H)Uhogn=wDCF!@pR1!1aWGyO0OwU%UF8N8*#d==ssIcMBOCXMV|xFGJ<}rAFp{ zkT>*^S#8EYQCmB~Jn^wr;&ZNa&9NcI98!GO9Q!*_op4={XDoie8kHEF^EJO^*E$+( zT5hvCsX2D4Im)xbTQ-V0c2}XAwY9ZfQ2pn(Z0rJl&{b5&q__v({o-%*Am%vjsV928 zDEMbNeE4@T0n+q%>WN1M3q0_zyx^<7h~Hl*>1>XM)mHzMsH|5&Okr*9Q|3u9hJ6Hf z8QC@Nh_Qu~-L*w&H(q_BjkuNgAGSs(%sRmoPe1%$n_}C4XNp~4|A{FEBuC`zdNsll zbA8Sn*DdahF@+S}HN|2v1)7LW@#G_5ihKB7kK1wwV^i&7CzY;=@Q80d8A~1jwUl)n z8beZP(%-TEApIeDJ_FM*9{2OJ-9~ij3hR`+AfFpZ7w`zmga05O!~#8eL^gOtB)_=U zx9vLf*t>=36JUw6zta9KG-W@{E}9! zv4?Pb9FSEwcyq5OU>J%vz=$2zfF^Z0g@p^7{{$xPB)!8d*9|ts6kZDJ7XH<~TzE7J z7ykF1*3e|=!0|8mgxG+xspEuBqNREA?^Z(6cu;id+*vzs?GViU=L?H=nnP#7vJurk z7I1bZJbR2f%})k75SAB=YVFHKmK&ZuwzL07_KsThk;k6vdo08AMBJe#$wy-Gw*jBR zkL+Cakyw5)CNe+d#b0gEJjrUFK3xh6U%a&A6P~!Y$T@nLP3e|x7CmY8@deXeOKpy^ zlvu{KR8k&W3N6T%+VB*(N#H3l5vA+ca;h2iw3SzO@P@L2P4%6fAB<#Utc-X19D=kN zpW0-MOGX{rIsYzu2hyQ&;+me37q>U?_ow%d$U~!H`bNNi*_H7(0RBTrn=be(yB*sZ zYHjcMK=7ZnD=fS&r%S=2XO9&Eo{fQ{Nm^u1%bdc(N%_kQCqH*gTgyV%40pwtL5l5~ zAzRFV<}t1Iz|P>V6AS=d#)$u;Bis&-02R9fE1b#>ju6+@^TfEFCwGL8!I98uMv5b? z2YkT=_6`_M2;Tupl{(<_f}Y-*n6gLa+}*9P@bq<)3O554j~Mc)!rbSbJ^^xTQ; z0caBTfCJA#m%00Yr=PfuW)lB#Ke2nr$@+=cUx0q1E~jw!;<|ofo;}3vBe%vBU5e@! z{Vjfv=AcQq=!?Tp^k<~#luW*l11I$ii@9gm0X;*XsGgxuGE^K^IJ9I4%L}GRg>HqG zK03N*c;eR+dj=PO7w{Ps-7`e-gPtMMDBKv(AjxVF=oxmu5YaQhu<@Ad4R^kC z(~AI6#08x`J>bc`gwNw)Vg2u3?|43L^(4*zq|1&GhdHvyC!@vrC6AnqoP&b#l zH^vB3Xx9kauHcRVje~un-%S38H8L^q&-{A%i&*S>K@}SSPt=&*?^wR%sl5Gi7R(cHs^I+I z7G{y}y#w#b@hQ~tT`Rf1jb<_Z55wCoG#DG^*Ef;|new@w28mAGx3U1iOz1p1`_hmt zdQl24f#Qw-pH^F1kQ_={>`p)H%KpMd-_wEw6wuiePD|Yd$%owzJ~9thP0)HC#}>r@ z>hNg0NP6Ix1vJ>2XhE`TUHYT4>N<(-B6IJ!v&Ew`Nz#pIyLt97w`aYt&U7930%u*3 zk5JRen%NO23QWNb80%B(8dLU7yCJ?)ni}q8@$~DYs>1NIAdA} zINNZp75A-ZyWyd4taHtjJfH2Wp|_2=_VyiG2`97ol-%Aio?$+RcGrO2K%Y|sFMm+j zdFg?t`P@g<65io0zUEGPNm8{KLKNONG3)NOv>Tr`;hBYS9{M|Lw#WV+8Putk^aB){ zMDxoxIWHB!kT;n4=?AOQN9;_=HTBx?rpDYK;S445HvLC>nxq$jO-Q0iN|Gg92x^Wai6$vYPz513 zGv{X@(Ih1)UMhl+)Eq<-O;VC7(S@L9_%A@BNlFrwop*wor;tRGlq5??2x>-uT5m{2 zp)bNllI@bughmV<8?iAZ-_#oj?_VRxC0ohE#Y|38OyaMgfF`*lT2h3XBR|A&3`@3> ztE&+k^9^#;Bqf2Wr9Xn2$-i0S*yE^4O*&>xN>M+Z33TWo?60pKvu2rXFTxJh-ua#) zv*~xsNv9kruTnB+*!)IMH_!iWU1Wy60tkF-UDrs?HfxT<3k}-gr8f5FaqC>`8|)!k z_{z7rZMXCfXuA#J4TQAa)}ha8t+8I4_IC+5&+9qY`j&x(54gZI+jFbkAQE`3&jUc( z-X-9v^#J%C0{!-FTePzv+^LE)Q~dQaLv0&)#(Qnr>m}qP4FUN*iyT!4C0$b@p&6lP zlRW2m4-UO;VEmS1}ib)+yMU z1}WU2Mg^5labYPt@iPws>vT<0l46IY6V%)^9c?U0N>X$sODCvFPXh%tNlDT~L4~S< zt-PDCnYtEKIu|ECM*Pf8z}iP{N8eivS8C;!>B0J7ZZHpsQ_s{73j&Yq9V>4T2%;`W z^=ca9#|uKCh}@Y{H1Tou40e`k_!J>qC=?NXgg1gEkP<)lSte;kb!A{2^nmNG(RsSHNow;|a=p@?9R5h{xu z8TuLSS4f6XDB|c1j8IuBgOFw)Y9$nks45m2!buwuYenC<2!$d_M{%dAvJ}B?Lf-=k zg(AXb6KKArvJ}BuQ56b>i@1!nQdwFKYBumz6l^6FiYWDSV^>*33AW;LkXAyWh#ech z;7(sSX&23{v>IJeC=?N%Em{dDt#d|@Rzjf&9avPBYQ=~OXdpHYJ@`FPlN4pIqm;C5 z`XERKCijCNiBn$y{~=N+tu|TLGTZLnnx&z6PM8FPQDG6O^m9&zGRz#OImv%5v7@B_uH?T zFWY+h2Psj`$6N^B1W z@d;UX&=P^6*E*n<$jj_|*#4lRu%0>C!*^M}DyCKsrpfd`3ZPyYJbC^+ zcwG%Cj)dVsms31^HiYy!REj34qQN1U1#^#;p($tB%`890Bdi_>2n%Etnx5mi-AdOq z<>8#gG{h^E-W6#yO=(C4tUcssrY8GtzjtnTkL6?4s0xvbY4vye_KHH=K&EZF_3*r8 z*WfEJP_T^|HNdV%(NIoL&y!voOKD23wa+t$CV9$3;atxYJ72A)Rt)3h3I$8G?~j=Q zP>Y3p9+Ri%gB8cg2eujx=i-IOpn~{OSxQinv~+=ykQGYohki@X5f*etGn_D?*9yow zlBRfKjY=XPvcbKX1JF7olB|P>Q2s!49n{Ml9OQY6&!K{C&NE3vJl*oOtXg)OSOQzM zi8gh$f%c5t^p^~QvY#WaE@5ySD<7VSigDQ`Np%mLgPI+@ipq}9k!3I9II#)cv4F}h zX^JP-Sa!s6*}q?eWhaqTc0?E`dwOWzFi)9fqjIqZI8^58=Hr<(e>*4j9@Phe7;Wa< zQ?DHfWjknIcd2W_~9`E4q!VgAKym>rMuRAv7|96FEk%) zCQ$@0Wi-hpkuQ)5N=upiG)Ynt^#_I4DVP(rP9Zw}=$lxWZ!7{o&|wZXrWL< zseIC{vQ#Vb0RDJA=A-Z87g;NnrA>knIAzNg3YFo=sz_z2S2BVo_A%=w=N^`!veYBE znGr%LR7TOgVqM{+wxZfL`%o*PP(*l(AcT|3U<6rLC=^lEl&8=tOJ%TDv=k5uMeG;P zRax3yaGiI@`Vb056t!d-D$CUhy_w4)6pF|dEmfAvVCSty8L{Q)&0id;EcFuce7qV! zC{%{_ovtkDTgAGtY_hR;<$W%2oIcwRNY|^QeK3W);@CzMy z;%VpqmrT_q3|}mR(<~fRXbjXO9hQPKAuE(W3&(wWju`&}2!l9b49wO2p=NVnZ1Yiu z>5p?^gqz{7d(%U2UW$V{N~URhMPWRBYhkvxv^(ZWp|p_UWEpRy@LD*vdUT7ULT)dC zrN{)C(@E&e5d|+rEvS5&q~!}^R_Lh=8>aB|Y-lcmKm$|w^ib<7P;F!wJ&#uvRb@w1 z*80&=(RD^~T514>W?>U$7A9eEu4p^o)mD>K+rT{3R%T)N98nw26&xpw&cY;3@nK{Q z7~&H-3nP(Kazum@m*5N(^*Y%EEMLp2We?!A03AVWpu>nZE3GzeEW^t^eba+WMOzK8 z;&^y5gfbnIBvn4J09E^`oTi}o99j5991kKU^!Rd`f=Zg=i8U6U_{>=WG(Hwb1xM;o zyK6C(lrt5-*{}Hcu9~$$&$B)%C0^N(+*Zoz)-5(y;OsVEtZTFOdYpBNM@kqd7d@|m z5Q~|YEGep`vmEuvzX3~0&k>~zU(IOZ5<0#TOQ~s!42A}k&bo<*b42Ka5ydmE^@0CUvSbaX9B=Bid*w7#h7dCV6IMHElqd7g4ob5o5Pnu7_2BGP2ur?ONA8@vKH zK4WHvJ4VX8AK^rl;KL-#(Dt8DsEi$=rOKk30t9PCh?sJu$wsKkQUsTrw2Ij(Eo#iR zQdz1MA=y?!p;{f4hNQBzt#VD$OkF4xkvp18uCmltjG!5nP$**mh2opSNgFe}0?qS; zLJ`FmiNgygtwBam4GM)K!V*_m+CHc}yyY8%C_2hMtFlxpLb9!dLS>}&Y{>8Zgp;-w zc3!Fvp-@Eb3@(St()Pv(vXxLMV*PX67pg3`9N5C-?Sqggq)O)-!b*)L%?l^2G1F-6 z#8sG9p&(%I+Qx34C#-_i_RKUiVbw7}CkNri(Gyl>8|8)I@$A1PbKpLr{kOwh?pK+s zN*K6~$F=Yc5c0?=DLV2w*VDMRfksYz2Bw-vD2Njmb7Z3JH$(6A>`nMVgkT6moW0ei zr;79JWB9&*dpA!#n*`Dn0hyYgHhI2I_)&026_+e2DfEI7hToqk2e0kfeV6C3AEO}O z&Hh;!Ak1uj+GotTt)9t#Np{J85i;TiWUbA2TRm_3CD|oIHGsQ=aQ^J<`@21dZPKoy z3Mvi(l(Ft!NJo?M-uWX{uy?LCq&4O=$>y^UGMZ~msSD{C$o&V^SmAw8W0Pb)D`D_P zu7kiTG#l@*Ns?9zXTb(~rnzZ@C(pdL&4zO;_rs2tfN%+cn9$k>aJqt=Bd6hG&FqIf z{(Mzf3lMI`1<-Hm6S0UsAIFh6V2tEs0 zp*auJ@(7=StLBBn94AaDry2_2mn0<#zRV=V1}AGq~K z?)lYb)zD0cF%?hQuzmVBT(V#xO!r;(Ks=ph|E-_z+bl#~T4RsMR|BcR9Pep-;7@8k zsz(CB)V$GPI8icB9fpbR+fq0UU*~w>AE*W|wIoSP5q<-*Leu~0*=qUmF~U^AeH?cX z5^DDeno5!sO^ne7#O2_p=ngCk3y;L1wVz`mDui?QR}(H1f21Q|iC=np+FSd;v~=*7 zo~!e<#A<;s&RCJXxQ@Dt_W#kn`r+U0ROA23(>C3aOHwopzau3%fNGE(G)YSm+>gpW z_!Zg#A0zA#c%S103C;Ni?I1~tc91bZh>Ni-`0#JQcb+#Aev>W$L+;7wX|u;iJz3@~ z=*dVY+C@gDp>K}hVuv(0H~rwrvzNjL>bTzxFBHKREyw>4CbAgyDly!cQO+`$&?OF!&K>jdtQQO-?Oz3O6H! zv<38#p_VBVp*W@0UM>b$t{?nSgy8wkxH|JHO}uc#!QkQd>8DzC!MN`h4w#X$o%|9PH? z5YDt33oD8uNm7#imrtN7XI9H@0uoJ9lB!uU145{&04`;kq$IggWQD5Yx$#ZtQ464S ziVF))`PJdRj9N`8o#4vi0-}>LtOMfJuXSf~luiW(E|oeF!HO$8B?c#SiqpDfei;hG z@D{kSzU~+m5%LKim8HbF@pYtl!bkl?CxPob@~)-Qt5LZ2M$@SkAyG(?xR|n12-hZU z3JZlIvLvp;)PUp{I5|zujzLsiCDkwKilDkSv?(kUD#H;iRhDW+wP;Fk!#1WIRasng zm8CKmK{A9wW$c%@%HoQFi7EQCp#@0{B28sTs0g+dP5omK0g0tXn>V z;1dg!)4Z)s=4GCS4LVt69{dOSrlg6LYMo== zYvIkv$27qK1Ii~RPDd$vzFaVThJ?RM(Z2-0;OY-vbUB~#zYs!B3O~vR?87@XR?W{flQKJva5v*;Y>EO z4UkE)OSVGD5Kh)KrES3=lI)UQBV-82%gI}qHSN6b`6byUyH>~$&fM0w2X2z=l3gcc z2shnBKEHWzn{SaR-vG1QZdu-mej#uHK>;8m7QZ_S#7nYEcD;}x+*Cj0Gwa@iFIGl% z0*;d9lHMSs$bvZ@>I57m*(F;kWC&-n?>hsTB)eoc3K_zQY+VjeNvcbAlTaa=nI&}r zGD&vHRtXuxnJlv_kV&#jwpz##&Sc%X0huJbWV@+HjdKu=wr*vHboc(lFUc<19w9?G zk{R>rY2L|xNp{Je5i*2x&E;&>nmg13>?{N>;8_76Bdij?$-f%_U-ty&lIPMsC$z|e zOH|$qN+iiH+4Dk%a3nJ(^Cxheq~0K2@?6>%gcf-)%T2w3r6jv#FA5pLnQVJ5kV&#j z78WvuGuiGwKqkp9*-Ju(a5PeuIe3QmRlg*=WG@RD!kOElzQ9eAU9wk%4B<@neIAfW zvP<@=kRhDN*7ftg*H%(ps@H@{nKpoa*BtNXtxUxJ94}#_&{%^#eS1053*$g>6tWya zyWCzEZYq1+2e9l(Ec8~wmBPZ!+*jx=?D;?%Ej?UD0(2R@A&gYLbCFSce_@0}L?^Se zKQMZWuRnJg3D9MS`oF zm(g3oNHv>)jOGjxA2^0Kg4#P~_GQ6t%J;MEb|)B1IJg|&7LKao6y&(%OmAgVh=%HrA8Z^Y-JvxEG)Z?$CrFpmhr&s9D;c8`T2P4Zp(!$OaI@D;`FX74y4 zlVq3dpF)OkB%@ap^G)Wx!1vI200@B#_*ekQi1mP%6)Q})Dgb2Z%<`dgfu$t7WHmyDa3*{DJRp-~m+T86LpYPYJ_*Pq*(JlJ2&@$xgrkDDnj4!5M*XwIX)}_G~+GN8s@Ef43v>5G&}MC%;&OA@2wjKgkQxEc_h;OoBW9#~g=C z?eK+zkLA-*A1s6E{t$ffvBjib?9Hh+M8?ThW?7{t#k{@|ZY3zb*xL~HDq36c50i1P z;?|2vv({uTv?b=NO`Qitv&VS44sDAQtRsN_5?_bt54#5XO0Q9dYxJVx(42i=pY$T3;=~tr*q_AlB6Tu6d&AO zD)Ih6gfzHAiU|EZw)PU&D-SX1g>3`41E7pH%Nr3nB~Tm*aOZ|@2}Bh&j+YTa9At97 z8|R%K$Blbp^1U%}TjFKP&=*4x9~Dnjfp}{{q(b!K0o4!=x)FE*21aJ5DU%#>E0|oGno1xCvqbH!c>CILKpx_zikQ z3Bvfbc|_d7Pt7CZ0sN>uBJSW9<#lm*9e`ht*CoU`_~Cd&JdB@+L%bm=08S}Y(2&%L zj6;dREOq%<;>b9bI5Lg}2F7)Oc)rkE1i)q<1H`G=9zgHL(ZrE)5$NWNKsSy8Bk4gN z7POAxDNzIs<0LK$`6v#pLKxNu>PVm9+u!S2k*)Mnh4FDt41XuCEYc)CBB&D(A6G91 zAaPeAj7QSfhjv|8ARlxsk@*cFPWgg|vX>D-a2^i{kidWvj>p4|_Ee`*Vjsrge`LJ3j%zPQAwxUB_roxDs+;3kO1Zd?SqaS`CgMS#Q`#$kS)LJdiQx_G?it51|E zfhK^TM>>g*;*lkmd?~Sx;yP-(qd2~>1n1JxU0*-yI|_O=0Qr;kg#wyh|9XS#;|6~v zXp#VTRp-W+)9{3ykTZmTw@hiB3%IH@416b}`H${sUWKDL$SS%fYBX0$9nGC1h?qau zo9T&r(Tr?t<#>9>n=Ws9yPc97-yD>n{r!x3sNF))tP+RNCOMdgK7m%lXZ>>m@&juF zWmLzI$IhVK-x7Yt9Xo?1c!~o@^*qu8)K$I0|Kbv`A+sIe($2{<_P(_3WXb3<`gOjym~;rHTlmu|Oo706*GH#8PTK2(yQ- z@HVl}av5db04EK|$~XfVFD&62qTO+EQwGJw%_Z#)bZI#7f;avk?NHmUz&98ELAAzB zN1MSP%E3QO!#|Brx6G=6o{sh7X9!`O>7MOrK{bH>0eV3Vq~}7u65uoOfd4pWimqc5 zgU|9jD*U`_@#6H4VJ?HSm3pH9LjDtbLK?n8Offf=dRzGT1w4L=Sf;M7uB@-cb%Ls{ zt!iM1C0Ywo@OU!nnj1eJUuDol!g)A)e(LxGG~j3$_*p8amO}G`&uW~X6=a{TLZ8N( zlOIyk!ehJK1Q7*mO*=<{37xr6C%1Z=gA2UfqkJ44zu&#y=HlGkr$jmT$M?}hNVhR4 z6z6_{P3?s1O#K92@sG}(PVyt2`&TX;>4|4M(o`?h;h`K)bmIeM_bjkmoV3wl(Vb63 zugWyGA%?7181(_kftOvqYF@ff^$Lp~YNy~aF*@1Hx5T@}hxPZkIZ|t9m{*s06YYP3 zC|ac^I$y&Q2rB_Yl-47$xPAkArx>UQAtu35o3@_%UL=5Bp3Y|PQh1FaLR4trI143Z z%xh)dx@O42NB8k%G(He_5azBjH#n?Hq&we;65mQF_Y650q6TdeYaCW8jLKnBUsJfu z+c8;??t&CK@S%RtvVqyM%=?Z_X|x(eYIAtHoo*gk?tRC{{BOG2JIycZYjGTQ*f_GK zNnGLG;#q5%mhb!8C%XE7s`@87--+HBvJry~Sl=uRsR$|Ivp=L-#Kwbv>%W96K`0CD zThAsiZln2}59dSuympQEK=Qu2y*6wUq?e)NQK+$;v$LsNK|8-;4j0+jt@I^3qZoX~ z5dWM*s54k^Y~qd|my|lrm!0Z``{U@Z9R4f+=q|atDV6S(!>7nJ&WTLR z_`uum{IeSGIr@=*m!!i)k1*{J4F89)T+&FsW@2JoIRFcQ$@cVA@wTV$dSlC`GZ25(_=XMP-vIcB3%&9WdJO9T{}SO}|F{fD zh>QE}S@?G!{9BC-A{8)um%vrO`z{=^Ys}g;eQ$rIRRL1m`D&|zPx@B(y=CeUir?FK zY_H-!$_n~F@d?@Rz>J0k507rV$E^Qs52~>7x$Ae`_TAFFkN?qX7x371*N!O#UleZ0 zdt%m*UBF}4`IR^Kx@Y^;!k=IGq%ZL3yX(cl1s|rzJ+r(1r~QG4)!!U0fg7m`S9;5{ zK|IRbrT^AGJa_;+)8Clpz4OuTS_h`ptyc278@=6a93x_mo-GU|-Q=ADpMLZ2KGG*W z6>#+IC;p_TST4Fbx|~0j4(9N=nXvpKci?%Ru?1hoqh{dV8D`BGJ1<3XdYma->VEZ2 z2gfL0R(EhLYYuuViJPV!Ljk0q$H(lhdAutmXl}>T%XY!#W;%C08^tQ;?BqdQBDYTAto;Q*;(V2a#;S>xqH6`Ou-EoPi3jasQ`R5ODGhv zznOeXE1cAdjG#kMLZJvp?@|&@S`IQEAI*xnODXpvu0)lkW@Z`m{ew`bjAFS?M`fv2 zZ0HI+Vit3C&w4qHr?S*mjDSOFa9@*`H}cZF51$yfN2dX&X^aYF@5F{2bcG zR>WUS2v*I*h2>9trHSbx$$5dBT&!oPom4SyC)QfKy?Jo zO|w!oNr&Q~hqB=8QYe4DcZKE0I5b+#4Z?^H}$N*PJ3FdX7UhBmu`_=7e2RuuV<(5 z>Q+N1Uh3%-s!zPUMw7HE!<6NIY7v4@EzX4RUn!N&I3tS?Y!$;1dgP8fv9ucW+a( z_ewj#6g}*1=AYJ@m&g(Z>v7i-IMwZ1G)cRbKm+VL4nFMNYWeXIL}`|j$Z>*%?x@DE zFCGW#`qFMi&!Y`G0TABa!zdB@o%X`&}LwEYQhAFqwp`Ll^O z{nj{r<8k40Fwy>*C)#OOoX=zFb$nap`g>$<=Hr{?18?!DAATDr+EL%m=cOoEXQJyH z;Jl*lV|j{0=`_El5l`a?XGXV%Z^Jc7Nsh`*oy>~vSkfdVsj22`pa{x$ENPOG6u&Pw zMIkpc=LK(z@tUM0&V5o);f76>{^Ae9=u!7!h0-Z5EQTU}<{+^4Q4)U&q14O@{u@6D zngdVoaRgHH>g+BkS6nH*7KDpG8c)Rwg(AXoHtz<6)stM6Oh+%2F9z0-D$g zg(3oSNtDXc8epyHbiYt2qUe#uv{9h4R4cBdeK-{s3Kwzy`-D(gsulYNA%sE^>tFqx zZn9Td>V0H$`P^7YT*y)WMY1AcrPae~@qAlI6jE%nQZ! zh+E)S2S~wR9VmO%go${{78e z!F|mXN0PJ`3a4NeT&MGZDSyTLs~@8g-DMDw5GNSls8ju_x7@OcBfZf_L(ShZkF2(fT^ z$ྶ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 delta 111997 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 IH*Ea>0I-E9-T(jq diff --git a/mods/ITEMS/mcl_armor/models/mcl_armor_character_female.b3d b/mods/ITEMS/mcl_armor/models/mcl_armor_character_female.b3d index 1b4205344e2ca724be8fa876718a321e7ea83139..4e17ee34105e5fd7028051e7509ae0ae9d2dcae1 100644 GIT binary patch delta 106756 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 F@&5;Q6eR!v diff --git a/mods/ITEMS/mcl_armor/models/mcl_armor_character_female.blend b/mods/ITEMS/mcl_armor/models/mcl_armor_character_female.blend index 828cd942cc229d07a8ed920dfe5eabeca002926e..b0494efbff8f5d46bf13b3f4765abd55cb15c200 100644 GIT binary patch delta 129515 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 NI+OqK>Dspz|9>JTZ;Su{ delta 112053 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 diff --git a/mods/ITEMS/mcl_armor/player.lua b/mods/ITEMS/mcl_armor/player.lua index 9dba0773c..48fdb381f 100644 --- a/mods/ITEMS/mcl_armor/player.lua +++ b/mods/ITEMS/mcl_armor/player.lua @@ -25,6 +25,8 @@ mcl_player.player_register_model("mcl_armor_character.b3d", { sit_mount = {x=484, y=484}, die = {x=498, y=498}, fly = {x=502, y=581}, + bow_walk = {x=650, y=670}, + bow_sneak = {x=675, y=695}, }, }) @@ -55,6 +57,8 @@ mcl_player.player_register_model("mcl_armor_character_female.b3d", { sit_mount = {x=484, y=484}, die = {x=498, y=498}, fly = {x=502, y=581}, + bow_walk = {x=650, y=670}, + bow_sneak = {x=675, y=695}, }, }) diff --git a/mods/PLAYER/mcl_player/init.lua b/mods/PLAYER/mcl_player/init.lua index 6cf2f0014..a3c769741 100644 --- a/mods/PLAYER/mcl_player/init.lua +++ b/mods/PLAYER/mcl_player/init.lua @@ -212,6 +212,10 @@ minetest.register_globalstep(function(dtime) player_set_animation(player, "swim_walk_mine", animation_speed_mod) elseif not controls.sneak and head_in_water and is_sprinting == true then player_set_animation(player, "swim_walk", animation_speed_mod) + elseif string.find(player:get_wielded_item():get_name(), "mcl_bows:bow") and controls.RMB and controls.sneak then + player_set_animation(player, "bow_sneak", animation_speed_mod) + elseif string.find(player:get_wielded_item():get_name(), "mcl_bows:bow") and controls.RMB then + player_set_animation(player, "bow_walk", animation_speed_mod) elseif is_sprinting == true and get_mouse_button(player) == true and not controls.sneak and not head_in_water then player_set_animation(player, "run_walk_mine", animation_speed_mod) elseif get_mouse_button(player) == true and not controls.sneak then diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 1e1354ae0..1f881d2b6 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -51,6 +51,15 @@ local function player_collision(player) return {x,z} end +local function walking_player(player, control) + if control.up or control.down or control.left or control.right then + return true + else + return false + end +end + + -- converts yaw to degrees local function degrees(rad) return rad * 180.0 / math.pi @@ -217,8 +226,9 @@ minetest.register_globalstep(function(dtime) player_velocity_old = player:get_velocity() or player:get_player_velocity() + -- controls right and left arms pitch when shooting a bow - if string.find(wielded:get_name(), "mcl_bows:bow") and control.RMB and not control.LMB and not control.up and not control.down and not control.left and not control.right then + if string.find(wielded:get_name(), "mcl_bows:bow") and control.RMB then player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch+90,-30,pitch * -1 * .35)) player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3.5,5.785,0), vector.new(pitch+90,43,pitch * .35)) -- when punching From 549bdeb6e9683e7b28048a56e36089d1e79c8f71 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 12 Jul 2021 21:41:57 +0000 Subject: [PATCH 208/720] Remove object:is_player --- mods/ITEMS/mcl_core/functions.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 6e1a977d9..eceb81c51 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -203,7 +203,8 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) for _,object in pairs(minetest.get_objects_inside_radius(pos, 0.9)) do - if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then + local entity = object:get_luaentity() + if entity and entity.name == "__builtin:item" then object:remove() end end From d26b1b1402056b5add6bf25d5e791bfc6c8b1ab1 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 14 Jul 2021 09:10:01 +0200 Subject: [PATCH 209/720] use mcl_util.call_on_rightclick insteed of current implementation --- mods/ITEMS/mcl_buckets/init.lua | 27 ++++++++++++++++----------- mods/ITEMS/mcl_buckets/mod.conf | 2 +- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 70a219ffb..fdd08bdf9 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -3,6 +3,7 @@ local modname = minetest.get_current_modname() local S = minetest.get_translator(modname) local modpath = minetest.get_modpath(modname) +-- Compatibility with old bucket mod minetest.register_alias("bucket:bucket_empty", "mcl_buckets:bucket_empty") minetest.register_alias("bucket:bucket_water", "mcl_buckets:bucket_water") minetest.register_alias("bucket:bucket_lava", "mcl_buckets:bucket_lava") @@ -11,6 +12,7 @@ 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") +-- Localize some functions for faster access local vector = vector local math = math local string = string @@ -127,16 +129,15 @@ function mcl_buckets.register_liquid(def) if pointed_thing.type ~= "node" then return end + -- Call on_rightclick if the pointed node defines it + local new_stack = mcl_util.call_on_rightclick(itemstack, user, pointed_thing) + if new_stack then + return new_stack + 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 local node_place if type(def.source_place) == "function" then @@ -306,16 +307,20 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { return itemstack end end]] + -- Must be pointing to node if pointed_thing.type ~= "node" then return itemstack end + + -- Call on_rightclick if the pointed node defines it + local new_stack = mcl_util.call_on_rightclick(itemstack, user, pointed_thing) + if new_stack then + return new_stack + 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 new_bucket local liquid_node = bucket_raycast(user) if liquid_node then diff --git a/mods/ITEMS/mcl_buckets/mod.conf b/mods/ITEMS/mcl_buckets/mod.conf index 5a78e70ad..0d7b764b8 100644 --- a/mods/ITEMS/mcl_buckets/mod.conf +++ b/mods/ITEMS/mcl_buckets/mod.conf @@ -1,6 +1,6 @@ name = mcl_buckets author = Kahrl description = -depends = mcl_worlds +depends = mcl_worlds, mcl_util optional_depends = mcl_core, mclx_core, doc From b0127fc1c3cb66ba0e024b9ea4cf82080ea80ced Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 14 Jul 2021 09:18:15 +0200 Subject: [PATCH 210/720] fix bucket dispense function --- mods/ITEMS/mcl_buckets/init.lua | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index fdd08bdf9..95ec97443 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -205,11 +205,16 @@ function mcl_buckets.register_liquid(def) _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 not buildable then return stack 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 result + if def.extra_check then + result = def.extra_check(droppos, nil) + if result == nil then result = true end + else + result = true + end + if result then -- Fail placement of liquid if result is false local node_place if type(def.source_place) == "function" then node_place = def.source_place(droppos) From ca277b6769c8edb1c498c268dd349bd2cd6c72ee Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 14 Jul 2021 11:29:15 +0200 Subject: [PATCH 211/720] mcl_bucket code refactoring + fix extra_check noot working --- mods/ITEMS/mcl_buckets/API.md | 30 +++++- mods/ITEMS/mcl_buckets/init.lua | 144 ++++++++++++++++++++++------ mods/ITEMS/mcl_buckets/register.lua | 26 +---- 3 files changed, 149 insertions(+), 51 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/API.md b/mods/ITEMS/mcl_buckets/API.md index 53f7d3698..4595d8e72 100644 --- a/mods/ITEMS/mcl_buckets/API.md +++ b/mods/ITEMS/mcl_buckets/API.md @@ -15,7 +15,33 @@ Accept folowing params: * longdesc: long explanatory description (for help) * usagehelp: short usage explanation (for help) * tt_help: very short tooltip help -* extra_check(pos, placer): (optional) function(pos) which can returns false to avoid placing the liquid. Placer is object/player who is placing the liquid, can be nil. +* extra_check(pos, placer): (optional) function(pos) * groups: optional list of item groups -This function can be called from any mod (which depends on this one) \ No newline at end of file + +**Usage exemple:** +```lua +mcl_buckets.register_liquid({ + itemname = "dummy:bucket_dummy", + source_place = "dummy:dummy_source", + source_take = {"dummy:dummy_source"}, + inventory_image = "bucket_dummy.png", + name = S("Dummy liquid Bucket"), + longdesc = S("This bucket is filled with a dummy liquid."), + usagehelp = S("Place it to empty the bucket and create a dummy liquid source."), + tt_help = S("Places a dummy liquid source"), + extra_check = function(pos, placer) + --pos = pos where the liquid should be placed + --placer people who tried to place the bucket (can be nil) + + --no liquid node will be placed + --the bucket will not be emptied + --return false, false + + --liquid node will be placed + --the bucket will be emptied + return true, true + end, + groups = { dummy_group = 123 }, +}) +``` \ No newline at end of file diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 95ec97443..9ae712ced 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -56,6 +56,7 @@ local function place_liquid(pos, itemstring) sound_place(itemstring, pos) minetest.add_node(pos, {name=itemstring, param2=fullness}) end + local function give_bucket(new_bucket, itemstack, user) local inv = user:get_inventory() if minetest.is_creative_enabled(user:get_player_name()) then @@ -81,6 +82,7 @@ local pointable_sources = {} local function bucket_raycast(user) --local pos = user:get_pos() local pos = mcl_util.get_object_center(user) + --local pos = vector.add(user:get_pos(), user:get_bone_position("Head_Control")) pos.y = pos.y + user:get_properties().eye_height local look_dir = user:get_look_dir() look_dir = vector.multiply(look_dir, 4) @@ -98,6 +100,53 @@ local function bucket_raycast(user) return nil end +local function get_node_place(source_place, place_pos) + local node_place + if type(source_place) == "function" then + node_place = source_place(place_pos) + else + node_place = source_place + end + return node_place +end + +local function get_extra_check(check, pos, user) + local result + local take_bucket + if check then + result, take_bucket = check(pos, user) + if result == nil then result = true end + if take_bucket == nil then take_bucket = true end + else + result = true + take_bucket = true + end + return result, take_bucket +end + +local function get_bucket_drop(itemstack, user, take_bucket) + -- Handle bucket item and inventory stuff + if take_bucket and 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 + add_item(user:get_pos(), new_bucket) + end + itemstack:take_item() + return itemstack + end + else + return itemstack + end +end + function mcl_buckets.register_liquid(def) for _,source in ipairs(def.source_take) do mcl_buckets.liquids[source] = { @@ -135,23 +184,75 @@ function mcl_buckets.register_liquid(def) return new_stack end - local node = minetest.get_node(pointed_thing.under) - local place_pos = pointed_thing.under - local nn = node.name + local undernode = get_node(pointed_thing.under) + local abovenode = get_node(pointed_thing.above) + local nn = undernode.name + local buildable1 = minetest.registered_nodes[undernode.name] and minetest.registered_nodes[undernode.name].buildable_to + local buildable2 = minetest.registered_nodes[abovenode.name] and minetest.registered_nodes[abovenode.name].buildable_to + if not buildable1 and not buildable2 then return itemstack end --if both nodes aren't buildable_to, skip + + if buildable1 then + local result, take_bucket = get_extra_check(def.extra_check, pointed_thing.under, user) + if result then + local node_place = get_node_place(def.source_place, pointed_thing.under) + local pns = user:get_player_name() - local node_place - if type(def.source_place) == "function" then - node_place = def.source_place(place_pos) + -- Check protection + if minetest.is_protected(pointed_thing.under, pns) then + minetest.record_protection_violation(pointed_thing.under, pns) + return itemstack + end + + -- Place liquid + place_liquid(pointed_thing.under, node_place) + + -- Update doc mod + if mod_doc and doc.entry_exists("nodes", node_place) then + doc.mark_entry_as_revealed(user:get_player_name(), "nodes", node_place) + end + end + return get_bucket_drop(itemstack, user, take_bucket) + elseif buildable2 then + local result, take_bucket = get_extra_check(def.extra_check, pointed_thing.above, user) + if result then + local node_place = get_node_place(def.source_place, pointed_thing.above) + local pns = user:get_player_name() + + -- Check protection + if minetest.is_protected(pointed_thing.above, pns) then + minetest.record_protection_violation(pointed_thing.above, pns) + return itemstack + end + + -- Place liquid + place_liquid(pointed_thing.above, node_place) + + -- Update doc mod + if mod_doc and doc.entry_exists("nodes", node_place) then + doc.mark_entry_as_revealed(user:get_player_name(), "nodes", node_place) + end + end + return get_bucket_drop(itemstack, user, take_bucket) else - node_place = def.source_place + return itemstack 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 + --[[ + if buildable_to_1 then + if can_place(pos) then + Place + end + else if buildable_to_2 then + if can_place2() then + Place + end + end + ]] + --[[ + if result then -- Fail placement of liquid if result is false local pns = user:get_player_name() if minetest.is_protected(place_pos, pns) then minetest.record_protection_violation(place_pos, pns) @@ -200,28 +301,17 @@ function mcl_buckets.register_liquid(def) end else return - end + 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 not buildable then return stack end - - local result - if def.extra_check then - result = def.extra_check(droppos, nil) - if result == nil then result = true end - else - result = true - end + local result, take_bucket = get_extra_check(def.extra_check, droppos, nil) if result then -- Fail placement of liquid if result is false - 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) + place_liquid(droppos, get_node_place(def.source_place, droppos)) + end + if take_bucket then stack:set_name("mcl_buckets:bucket_empty") end return stack diff --git a/mods/ITEMS/mcl_buckets/register.lua b/mods/ITEMS/mcl_buckets/register.lua index 12790598c..97349533e 100644 --- a/mods/ITEMS/mcl_buckets/register.lua +++ b/mods/ITEMS/mcl_buckets/register.lua @@ -53,15 +53,6 @@ if mod_mcl_core then usagehelp = S("Place it to empty the bucket and create a water source."), tt_help = S("Places a water source"), extra_check = function(pos, placer) - -- Check protection - local placer_name = "" - if placer then - placer_name = placer:get_player_name() - end - if placer and minetest.is_protected(pos, placer_name) then - minetest.record_protection_violation(pos, placer_name) - return false - end local nn = minetest.get_node(pos).name -- Pour water into cauldron if minetest.get_item_group(nn, "cauldron") ~= 0 then @@ -70,13 +61,13 @@ if mod_mcl_core then minetest.set_node(pos, {name="mcl_cauldrons:cauldron_3"}) end sound_place("mcl_core:water_source", pos) - return false + return false, true -- Evaporate water if used in Nether (except on cauldron) else local dim = mcl_worlds.pos_to_dimension(pos) if dim == "nether" then minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) - return false + return false, true end end end, @@ -96,15 +87,6 @@ if mod_mclx_core then usagehelp = S("Place it to empty the bucket and create a river water source."), tt_help = S("Places a river water source"), extra_check = function(pos, placer) - -- Check protection - local placer_name = "" - if placer then - placer_name = placer:get_player_name() - end - if placer and minetest.is_protected(pos, placer_name) then - minetest.record_protection_violation(pos, placer_name) - return false - end local nn = minetest.get_node(pos).name -- Pour into cauldron if minetest.get_item_group(nn, "cauldron") ~= 0 then @@ -113,13 +95,13 @@ if mod_mclx_core then minetest.set_node(pos, {name="mcl_cauldrons:cauldron_3r"}) end sound_place("mcl_core:water_source", pos) - return false + return false, true else -- Evaporate water if used in Nether (except on cauldron) local dim = mcl_worlds.pos_to_dimension(pos) if dim == "nether" then minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) - return false + return false, true end end end, From cd08df175c767fe502065d5327d37ec633c7af2e Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 14 Jul 2021 11:41:09 +0200 Subject: [PATCH 212/720] add better documentation --- mods/ITEMS/mcl_buckets/API.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_buckets/API.md b/mods/ITEMS/mcl_buckets/API.md index 4595d8e72..abbdb0a07 100644 --- a/mods/ITEMS/mcl_buckets/API.md +++ b/mods/ITEMS/mcl_buckets/API.md @@ -23,7 +23,14 @@ Accept folowing params: ```lua mcl_buckets.register_liquid({ itemname = "dummy:bucket_dummy", - source_place = "dummy:dummy_source", + --source_place = "dummy:dummy_source", + source_place = function(pos) + if condition then + return "dummy:dummy_source" + else + return "dummy:dummy_source_nether" + end + end, source_take = {"dummy:dummy_source"}, inventory_image = "bucket_dummy.png", name = S("Dummy liquid Bucket"), From 88e59d3592b7f56044273296bce96e299cf2de17 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 14 Jul 2021 11:52:27 +0200 Subject: [PATCH 213/720] more mt like API (improved readability) --- mods/ITEMS/mcl_buckets/API.md | 14 +-- mods/ITEMS/mcl_buckets/init.lua | 150 +--------------------------- mods/ITEMS/mcl_buckets/register.lua | 9 +- 3 files changed, 14 insertions(+), 159 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/API.md b/mods/ITEMS/mcl_buckets/API.md index abbdb0a07..93af64acf 100644 --- a/mods/ITEMS/mcl_buckets/API.md +++ b/mods/ITEMS/mcl_buckets/API.md @@ -1,15 +1,18 @@ # mcl_buckets Add an API to register buckets to mcl -## mcl_buckets.register_liquid(def) +## mcl_buckets.register_liquid(itemname, def) + +Register a new bucket of liquid. + +`itemname` is the itemstring of the new bucket item + +`def` is a table containing the folowing fields: -Register a new liquid -Accept folowing params: * source_place: a string or function. * string: name of the node to place * function(pos): will returns name of the node to place with pos being the placement position * source_take: table of liquid source node names to take -* itemname: itemstring of the new bucket item (or nil if liquid is not takeable) * inventory_image: texture of the new bucket item (ignored if itemname == nil) * name: user-visible bucket description * longdesc: long explanatory description (for help) @@ -21,8 +24,7 @@ Accept folowing params: **Usage exemple:** ```lua -mcl_buckets.register_liquid({ - itemname = "dummy:bucket_dummy", +mcl_buckets.register_liquid("dummy:bucket_dummy", { --source_place = "dummy:dummy_source", source_place = function(pos) if condition then diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 9ae712ced..11fede816 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -147,13 +147,13 @@ local function get_bucket_drop(itemstack, user, take_bucket) end end -function mcl_buckets.register_liquid(def) +function mcl_buckets.register_liquid(itemname, def) for _,source in ipairs(def.source_take) do mcl_buckets.liquids[source] = { source_place = def.source_place, source_take = source, on_take = def.on_take, - itemname = def.itemname, + itemname = itemname, } pointable_sources[source] = true if type(def.source_place) == "string" then @@ -161,11 +161,7 @@ function mcl_buckets.register_liquid(def) end end - if def.itemname == nil or def.itemname == "" then - error(string.format("[mcl_bucket] Invalid itemname then registering [%s]!", def.name)) - end - - minetest.register_craftitem(def.itemname, { + minetest.register_craftitem(itemname, { description = def.name, _doc_items_longdesc = def.longdesc, _doc_items_usagehelp = def.usagehelp, @@ -236,72 +232,6 @@ function mcl_buckets.register_liquid(def) else return itemstack end - - -- Check if pointing to a buildable node - --local item = itemstack:get_name() - - --[[ - if buildable_to_1 then - if can_place(pos) then - Place - end - else if buildable_to_2 then - if can_place2() then - Place - end - end - ]] - --[[ - if result then -- Fail placement of liquid if result is false - 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(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 - return - end]] end, _on_dispense = function(stack, pos, droppos, dropnode, dropdir) local iname = stack:get_name() @@ -328,80 +258,6 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { inventory_image = "bucket.png", stack_max = 16, on_place = function(itemstack, user, pointed_thing) - --[[-- Must be pointing to node - if pointed_thing.type ~= "node" then - return itemstack - end - - -- Call on_rightclick if the pointed node defines it - - - 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 - end - - -- Check if pointing to a liquid source - local liquiddef = mcl_buckets.liquids[nn] - local new_bucket - if liquiddef and liquiddef.itemname and (nn == liquiddef.source_take) then - - -- 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.on_take then - liquiddef.on_take(user) - end - end - - minetest.add_node(pointed_thing.under, {name="air"}) - sound_take(nn, pointed_thing.under) - - if mod_doc and doc.entry_exists("nodes", nn) then - doc.mark_entry_as_revealed(user:get_player_name(), "nodes", nn) - end - - elseif 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 - - -- Add liquid bucket and put it into inventory, if possible. - -- Drop new bucket otherwise. - if new_bucket then - 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]] -- Must be pointing to node if pointed_thing.type ~= "node" then return itemstack diff --git a/mods/ITEMS/mcl_buckets/register.lua b/mods/ITEMS/mcl_buckets/register.lua index 97349533e..46abce1d0 100644 --- a/mods/ITEMS/mcl_buckets/register.lua +++ b/mods/ITEMS/mcl_buckets/register.lua @@ -19,7 +19,7 @@ end]] if mod_mcl_core then -- Lava bucket - mcl_buckets.register_liquid({ + mcl_buckets.register_liquid("mcl_buckets:bucket_lava", { source_place = function(pos) local dim = mcl_worlds.pos_to_dimension(pos) if dim == "nether" then @@ -34,7 +34,6 @@ if mod_mcl_core 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"), longdesc = S("A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution."), @@ -43,10 +42,9 @@ if mod_mcl_core then }) -- Water bucket - mcl_buckets.register_liquid({ + mcl_buckets.register_liquid("mcl_buckets:bucket_water", { source_place = "mcl_core:water_source", source_take = {"mcl_core:water_source"}, - itemname = "mcl_buckets:bucket_water", inventory_image = "bucket_water.png", name = S("Water Bucket"), longdesc = S("A bucket can be used to collect and release liquids. This one is filled with water."), @@ -77,10 +75,9 @@ end if mod_mclx_core then -- River water bucket - mcl_buckets.register_liquid({ + mcl_buckets.register_liquid("mcl_buckets:bucket_river_water", { source_place = "mclx_core:river_water_source", source_take = {"mclx_core:river_water_source"}, - itemname = "mcl_buckets:bucket_river_water", inventory_image = "bucket_river_water.png", name = S("River Water Bucket"), longdesc = S("A bucket can be used to collect and release liquids. This one is filled with river water."), From cf5703d528426bbbb810c327ecfe59b0c9867cf0 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 14 Jul 2021 11:53:37 +0200 Subject: [PATCH 214/720] fix luacheck warnings --- mods/ITEMS/mcl_buckets/init.lua | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 11fede816..a496fb2ff 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -182,11 +182,10 @@ function mcl_buckets.register_liquid(itemname, def) local undernode = get_node(pointed_thing.under) local abovenode = get_node(pointed_thing.above) - local nn = undernode.name local buildable1 = minetest.registered_nodes[undernode.name] and minetest.registered_nodes[undernode.name].buildable_to local buildable2 = minetest.registered_nodes[abovenode.name] and minetest.registered_nodes[abovenode.name].buildable_to if not buildable1 and not buildable2 then return itemstack end --if both nodes aren't buildable_to, skip - + if buildable1 then local result, take_bucket = get_extra_check(def.extra_check, pointed_thing.under, user) if result then @@ -234,7 +233,6 @@ function mcl_buckets.register_liquid(itemname, def) 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 not buildable then return stack end local result, take_bucket = get_extra_check(def.extra_check, droppos, nil) From 6d7aafe0d462bccdb8a7a32f78a27898fb1705d7 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 14 Jul 2021 15:13:40 +0200 Subject: [PATCH 215/720] Revert "more mt like API (improved readability)" This reverts commit 88e59d3592b7f56044273296bce96e299cf2de17. --- mods/ITEMS/mcl_buckets/API.md | 14 ++- mods/ITEMS/mcl_buckets/init.lua | 150 +++++++++++++++++++++++++++- mods/ITEMS/mcl_buckets/register.lua | 9 +- 3 files changed, 159 insertions(+), 14 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/API.md b/mods/ITEMS/mcl_buckets/API.md index 93af64acf..abbdb0a07 100644 --- a/mods/ITEMS/mcl_buckets/API.md +++ b/mods/ITEMS/mcl_buckets/API.md @@ -1,18 +1,15 @@ # mcl_buckets Add an API to register buckets to mcl -## mcl_buckets.register_liquid(itemname, def) - -Register a new bucket of liquid. - -`itemname` is the itemstring of the new bucket item - -`def` is a table containing the folowing fields: +## mcl_buckets.register_liquid(def) +Register a new liquid +Accept folowing params: * source_place: a string or function. * string: name of the node to place * function(pos): will returns name of the node to place with pos being the placement position * source_take: table of liquid source node names to take +* itemname: itemstring of the new bucket item (or nil if liquid is not takeable) * inventory_image: texture of the new bucket item (ignored if itemname == nil) * name: user-visible bucket description * longdesc: long explanatory description (for help) @@ -24,7 +21,8 @@ Register a new bucket of liquid. **Usage exemple:** ```lua -mcl_buckets.register_liquid("dummy:bucket_dummy", { +mcl_buckets.register_liquid({ + itemname = "dummy:bucket_dummy", --source_place = "dummy:dummy_source", source_place = function(pos) if condition then diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index a496fb2ff..b75c10696 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -147,13 +147,13 @@ local function get_bucket_drop(itemstack, user, take_bucket) end end -function mcl_buckets.register_liquid(itemname, def) +function mcl_buckets.register_liquid(def) for _,source in ipairs(def.source_take) do mcl_buckets.liquids[source] = { source_place = def.source_place, source_take = source, on_take = def.on_take, - itemname = itemname, + itemname = def.itemname, } pointable_sources[source] = true if type(def.source_place) == "string" then @@ -161,7 +161,11 @@ function mcl_buckets.register_liquid(itemname, def) end end - minetest.register_craftitem(itemname, { + if def.itemname == nil or def.itemname == "" then + error(string.format("[mcl_bucket] Invalid itemname then registering [%s]!", def.name)) + end + + minetest.register_craftitem(def.itemname, { description = def.name, _doc_items_longdesc = def.longdesc, _doc_items_usagehelp = def.usagehelp, @@ -231,6 +235,72 @@ function mcl_buckets.register_liquid(itemname, def) else return itemstack end + + -- Check if pointing to a buildable node + --local item = itemstack:get_name() + + --[[ + if buildable_to_1 then + if can_place(pos) then + Place + end + else if buildable_to_2 then + if can_place2() then + Place + end + end + ]] + --[[ + if result then -- Fail placement of liquid if result is false + 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(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 + return + end]] end, _on_dispense = function(stack, pos, droppos, dropnode, dropdir) local buildable = minetest.registered_nodes[dropnode.name].buildable_to or dropnode.name == "mcl_portals:portal" @@ -256,6 +326,80 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { inventory_image = "bucket.png", stack_max = 16, on_place = function(itemstack, user, pointed_thing) + --[[-- Must be pointing to node + if pointed_thing.type ~= "node" then + return itemstack + end + + -- Call on_rightclick if the pointed node defines it + + + 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 + end + + -- Check if pointing to a liquid source + local liquiddef = mcl_buckets.liquids[nn] + local new_bucket + if liquiddef and liquiddef.itemname and (nn == liquiddef.source_take) then + + -- 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.on_take then + liquiddef.on_take(user) + end + end + + minetest.add_node(pointed_thing.under, {name="air"}) + sound_take(nn, pointed_thing.under) + + if mod_doc and doc.entry_exists("nodes", nn) then + doc.mark_entry_as_revealed(user:get_player_name(), "nodes", nn) + end + + elseif 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 + + -- Add liquid bucket and put it into inventory, if possible. + -- Drop new bucket otherwise. + if new_bucket then + 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]] -- Must be pointing to node if pointed_thing.type ~= "node" then return itemstack diff --git a/mods/ITEMS/mcl_buckets/register.lua b/mods/ITEMS/mcl_buckets/register.lua index 46abce1d0..97349533e 100644 --- a/mods/ITEMS/mcl_buckets/register.lua +++ b/mods/ITEMS/mcl_buckets/register.lua @@ -19,7 +19,7 @@ end]] if mod_mcl_core then -- Lava bucket - mcl_buckets.register_liquid("mcl_buckets:bucket_lava", { + mcl_buckets.register_liquid({ source_place = function(pos) local dim = mcl_worlds.pos_to_dimension(pos) if dim == "nether" then @@ -34,6 +34,7 @@ if mod_mcl_core 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"), longdesc = S("A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution."), @@ -42,9 +43,10 @@ if mod_mcl_core then }) -- Water bucket - mcl_buckets.register_liquid("mcl_buckets:bucket_water", { + mcl_buckets.register_liquid({ source_place = "mcl_core:water_source", source_take = {"mcl_core:water_source"}, + itemname = "mcl_buckets:bucket_water", inventory_image = "bucket_water.png", name = S("Water Bucket"), longdesc = S("A bucket can be used to collect and release liquids. This one is filled with water."), @@ -75,9 +77,10 @@ end if mod_mclx_core then -- River water bucket - mcl_buckets.register_liquid("mcl_buckets:bucket_river_water", { + mcl_buckets.register_liquid({ source_place = "mclx_core:river_water_source", source_take = {"mclx_core:river_water_source"}, + itemname = "mcl_buckets:bucket_river_water", inventory_image = "bucket_river_water.png", name = S("River Water Bucket"), longdesc = S("A bucket can be used to collect and release liquids. This one is filled with river water."), From ec6086d8e631fc19bd9dfca43eb5109f3125d0e4 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 14 Jul 2021 15:14:23 +0200 Subject: [PATCH 216/720] cleanup --- mods/ITEMS/mcl_buckets/init.lua | 140 -------------------------------- 1 file changed, 140 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index b75c10696..312669c5e 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -235,72 +235,6 @@ function mcl_buckets.register_liquid(def) else return itemstack end - - -- Check if pointing to a buildable node - --local item = itemstack:get_name() - - --[[ - if buildable_to_1 then - if can_place(pos) then - Place - end - else if buildable_to_2 then - if can_place2() then - Place - end - end - ]] - --[[ - if result then -- Fail placement of liquid if result is false - 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(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 - return - end]] end, _on_dispense = function(stack, pos, droppos, dropnode, dropdir) local buildable = minetest.registered_nodes[dropnode.name].buildable_to or dropnode.name == "mcl_portals:portal" @@ -326,80 +260,6 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { inventory_image = "bucket.png", stack_max = 16, on_place = function(itemstack, user, pointed_thing) - --[[-- Must be pointing to node - if pointed_thing.type ~= "node" then - return itemstack - end - - -- Call on_rightclick if the pointed node defines it - - - 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 - end - - -- Check if pointing to a liquid source - local liquiddef = mcl_buckets.liquids[nn] - local new_bucket - if liquiddef and liquiddef.itemname and (nn == liquiddef.source_take) then - - -- 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.on_take then - liquiddef.on_take(user) - end - end - - minetest.add_node(pointed_thing.under, {name="air"}) - sound_take(nn, pointed_thing.under) - - if mod_doc and doc.entry_exists("nodes", nn) then - doc.mark_entry_as_revealed(user:get_player_name(), "nodes", nn) - end - - elseif 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 - - -- Add liquid bucket and put it into inventory, if possible. - -- Drop new bucket otherwise. - if new_bucket then - 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]] -- Must be pointing to node if pointed_thing.type ~= "node" then return itemstack From 8fff20eec9f1045c9d16d2a4cdb79c989d627966 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 14 Jul 2021 15:18:12 +0200 Subject: [PATCH 217/720] fix misleading API --- mods/ITEMS/mcl_buckets/init.lua | 12 ++++++------ mods/ITEMS/mcl_buckets/register.lua | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 312669c5e..17d333485 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -153,7 +153,7 @@ function mcl_buckets.register_liquid(def) source_place = def.source_place, source_take = source, on_take = def.on_take, - itemname = def.itemname, + bucketname = def.bucketname, } pointable_sources[source] = true if type(def.source_place) == "string" then @@ -161,11 +161,11 @@ function mcl_buckets.register_liquid(def) end end - if def.itemname == nil or def.itemname == "" then + if def.bucketname == nil or def.bucketname == "" then error(string.format("[mcl_bucket] Invalid itemname then registering [%s]!", def.name)) end - minetest.register_craftitem(def.itemname, { + minetest.register_craftitem(def.bucketname, { description = def.name, _doc_items_longdesc = def.longdesc, _doc_items_usagehelp = def.usagehelp, @@ -289,7 +289,7 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { -- 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}) + new_bucket = ItemStack({name = liquid_def.bucketname}) if liquid_def.on_take then liquid_def.on_take(user) end @@ -337,9 +337,9 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { local liquiddef = mcl_buckets.liquids[dropnode.name] local new_bucket - if liquiddef and liquiddef.itemname and (dropnode.name == liquiddef.source_take) then + if liquiddef and liquiddef.bucketname and (dropnode.name == liquiddef.source_take) then -- Fill bucket - new_bucket = ItemStack({name = liquiddef.itemname}) + new_bucket = ItemStack({name = liquiddef.bucketname}) sound_take(dropnode.name, droppos) collect_liquid = true end diff --git a/mods/ITEMS/mcl_buckets/register.lua b/mods/ITEMS/mcl_buckets/register.lua index 97349533e..1a7c8fe14 100644 --- a/mods/ITEMS/mcl_buckets/register.lua +++ b/mods/ITEMS/mcl_buckets/register.lua @@ -34,7 +34,7 @@ if mod_mcl_core then awards.unlock(user:get_player_name(), "mcl:hotStuff") end end, - itemname = "mcl_buckets:bucket_lava", + bucketname = "mcl_buckets:bucket_lava", inventory_image = "bucket_lava.png", name = S("Lava Bucket"), longdesc = S("A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution."), @@ -46,7 +46,7 @@ if mod_mcl_core then mcl_buckets.register_liquid({ source_place = "mcl_core:water_source", source_take = {"mcl_core:water_source"}, - itemname = "mcl_buckets:bucket_water", + bucketname = "mcl_buckets:bucket_water", inventory_image = "bucket_water.png", name = S("Water Bucket"), longdesc = S("A bucket can be used to collect and release liquids. This one is filled with water."), @@ -80,7 +80,7 @@ if mod_mclx_core then mcl_buckets.register_liquid({ source_place = "mclx_core:river_water_source", source_take = {"mclx_core:river_water_source"}, - itemname = "mcl_buckets:bucket_river_water", + bucketname = "mcl_buckets:bucket_river_water", inventory_image = "bucket_river_water.png", name = S("River Water Bucket"), longdesc = S("A bucket can be used to collect and release liquids. This one is filled with river water."), From 873a1e73dc58bf38ca4738feb86f4f4ab8c5d2ba Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 14 Jul 2021 15:22:27 +0200 Subject: [PATCH 218/720] fix documentation --- mods/ITEMS/mcl_buckets/API.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/API.md b/mods/ITEMS/mcl_buckets/API.md index abbdb0a07..94ec48de5 100644 --- a/mods/ITEMS/mcl_buckets/API.md +++ b/mods/ITEMS/mcl_buckets/API.md @@ -9,7 +9,7 @@ Accept folowing params: * string: name of the node to place * function(pos): will returns name of the node to place with pos being the placement position * source_take: table of liquid source node names to take -* itemname: itemstring of the new bucket item (or nil if liquid is not takeable) +* bucketname: itemstring of the new bucket item * inventory_image: texture of the new bucket item (ignored if itemname == nil) * name: user-visible bucket description * longdesc: long explanatory description (for help) @@ -22,7 +22,7 @@ Accept folowing params: **Usage exemple:** ```lua mcl_buckets.register_liquid({ - itemname = "dummy:bucket_dummy", + bucketname = "dummy:bucket_dummy", --source_place = "dummy:dummy_source", source_place = function(pos) if condition then From dc17cc91a3ea225936869d1f01b1bed498efd0e8 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 15 Jul 2021 00:01:56 +0200 Subject: [PATCH 219/720] make raycast start from player head --- mods/ITEMS/mcl_buckets/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 17d333485..f1d131ea2 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -81,7 +81,7 @@ local pointable_sources = {} local function bucket_raycast(user) --local pos = user:get_pos() - local pos = mcl_util.get_object_center(user) + local pos = user:get_pos() --local pos = vector.add(user:get_pos(), user:get_bone_position("Head_Control")) pos.y = pos.y + user:get_properties().eye_height local look_dir = user:get_look_dir() From 49bde37a5e80a91f7ad0f03ef371aa32cf7972b8 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 15 Jul 2021 01:03:50 +0200 Subject: [PATCH 220/720] rewrite README to markdown --- mods/ITEMS/mcl_buckets/{README.txt => README.md} | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) rename mods/ITEMS/mcl_buckets/{README.txt => README.md} (67%) diff --git a/mods/ITEMS/mcl_buckets/README.txt b/mods/ITEMS/mcl_buckets/README.md similarity index 67% rename from mods/ITEMS/mcl_buckets/README.txt rename to mods/ITEMS/mcl_buckets/README.md index 06862d589..b783cc133 100644 --- a/mods/ITEMS/mcl_buckets/README.txt +++ b/mods/ITEMS/mcl_buckets/README.md @@ -1,9 +1,12 @@ -Bucket mod. -Originally taken from Minetest Game, adapted for MineClone 2. +# MineClone2 Bucket (`mcl_bucket`) +Originally taken from Minetest Game, adapted for MineClone2. + +This mod add buckets to the game, including an API to register your own (see `API.md`). + +## License -License of source code: ------------------------ Copyright (C) 2011-2012 Kahrl + Copyright (C) 2011-2012 celeron55, Perttu Ahola This program is free software; you can redistribute it and/or modify From 9d9e21301271da166248a2356b81e0225d738fde Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sat, 10 Jul 2021 10:54:59 +0200 Subject: [PATCH 221/720] Fix some implicit hard and soft-dependencies These issues were found while testing minetest#8603 and are caused by relying on the undefined mod loading order --- mods/ITEMS/mcl_armor/mod.conf | 2 +- mods/ITEMS/mcl_brewing/mod.conf | 2 +- mods/PLAYER/mcl_playerplus/mod.conf | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_armor/mod.conf b/mods/ITEMS/mcl_armor/mod.conf index 9264e8362..fad2e494c 100644 --- a/mods/ITEMS/mcl_armor/mod.conf +++ b/mods/ITEMS/mcl_armor/mod.conf @@ -1,5 +1,5 @@ name = mcl_armor author = stu description = Adds craftable armor that is visible to other players. -depends = mcl_core, mcl_player, mcl_enchanting +depends = mcl_core, mcl_player, mcl_enchanting, mcl_damage optional_depends = mcl_fire, ethereal, bakedclay diff --git a/mods/ITEMS/mcl_brewing/mod.conf b/mods/ITEMS/mcl_brewing/mod.conf index 2c27c979e..0f6217f09 100644 --- a/mods/ITEMS/mcl_brewing/mod.conf +++ b/mods/ITEMS/mcl_brewing/mod.conf @@ -1,4 +1,4 @@ name = mcl_brewing author = bzoss depends = mcl_init, mcl_formspec, mcl_sounds, mcl_potions, mcl_mobitems -optional_depends = mcl_core, doc, screwdriver +optional_depends = mcl_core, doc, screwdriver, mesecons_mvps diff --git a/mods/PLAYER/mcl_playerplus/mod.conf b/mods/PLAYER/mcl_playerplus/mod.conf index 6989957d7..b77c9e2e5 100644 --- a/mods/PLAYER/mcl_playerplus/mod.conf +++ b/mods/PLAYER/mcl_playerplus/mod.conf @@ -1,5 +1,5 @@ name = mcl_playerplus author = TenPlus1 description = Adds some simple player-related gameplay effects: Hurt by touching a cactus, suffocation and more. -depends = mcl_init, mcl_core, mcl_particles, mcl_hunger, playerphysics, mcl_playerinfo, mcl_weather, mcl_spawn, mcl_enchanting, mcl_damage +depends = mcl_init, mcl_core, mcl_particles, mcl_hunger, playerphysics, mcl_playerinfo, mcl_weather, mcl_spawn, mcl_enchanting, mcl_damage, mcl_sprint From 60fcafeee4fdeb9a236f141801fc95e103685178 Mon Sep 17 00:00:00 2001 From: Tianyang Zhang Date: Thu, 15 Jul 2021 19:25:32 -0700 Subject: [PATCH 222/720] Update description of emerald --- mods/ITEMS/mcl_core/craftitems.lua | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.es.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.fr.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.pl.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.ru.tr | 2 +- mods/ITEMS/mcl_core/locale/template.txt | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_core/craftitems.lua b/mods/ITEMS/mcl_core/craftitems.lua index 03f30b7b9..836f21688 100644 --- a/mods/ITEMS/mcl_core/craftitems.lua +++ b/mods/ITEMS/mcl_core/craftitems.lua @@ -93,7 +93,7 @@ minetest.register_craftitem("mcl_core:gold_ingot", { minetest.register_craftitem("mcl_core:emerald", { description = S("Emerald"), - _doc_items_longdesc = S("Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting."), + _doc_items_longdesc = S("Emeralds are used for trading with villagers."), inventory_image = "mcl_core_emerald.png", stack_max = 64, groups = { craftitem=1 }, diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index 0a1cbad37..f5a28c76f 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Smaragd Emerald Ore=Smaragderz Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Smaragderz ist das Erz von Smaragden. Es ist sehr selten und kann nur einzeln gefunden werden, nicht in Ansammlungen. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Smaragde sind nicht besonders nützlich, aber man kann sie in der Fertigung durch Goldbarren eintauschen. +Emeralds are used for trading with villagers.=Smaragde sind nicht besonders nützlich, aber man kann sie in der Fertigung durch Goldbarren eintauschen. Flint=Feuerstein Flint is a raw material.=Feuerstein ist ein Rohstoff. Flowing Lava=Fließende Lava diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr index 1e1029c0f..54ee95d16 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Esmeralda Emerald Ore=Mena de esmeralda Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=El mineral esmeralda es el mineral de las esmeraldas. Es muy raro y se puede encontrar solo, no en grupos. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Las esmeraldas no son muy útiles por sí mismas, pero pueden cambiarse por lingotes de oro haciendo artesanías. +Emeralds are used for trading with villagers.=Las esmeraldas no son muy útiles por sí mismas, pero pueden cambiarse por lingotes de oro haciendo artesanías. Flint=Pedernal Flint is a raw material.=El pedernal es una materia prima. Flowing Lava=Lava que fluye diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr index 725025e48..84657c8a1 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Emeraude Emerald Ore=Minerai d'Emeraude Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Le minerai d'émeraude produit des émeraudes. Il est très rare et peut être trouvé seul, pas en filons. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Les émeraudes ne sont pas très utiles seules, mais elles peuvent être échangées contre des lingots d'or. +Emeralds are used for trading with villagers.=Les émeraudes ne sont pas très utiles seules, mais elles peuvent être échangées contre des lingots d'or. Flint=Silex Flint is a raw material.=Le silex est une matière première. Flowing Lava=Lave qui coule diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr index 832a47830..90a75f810 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass 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. +Emeralds are used for trading with villagers.=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 diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr index f93db7c2c..07236037b 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Изумруд Emerald Ore=Изумрудная руда Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Изумрудная руда встречается очень редко и всегда по одному блоку. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Изумруды не очень полезны сами по себе, но их можно обменять на золотые слитки. +Emeralds are used for trading with villagers.=Изумруды не очень полезны сами по себе, но их можно обменять на золотые слитки. Flint=Кремень Flint is a raw material.=Кремень это необработанный материал. Flowing Lava=Текущая лава diff --git a/mods/ITEMS/mcl_core/locale/template.txt b/mods/ITEMS/mcl_core/locale/template.txt index 2cb74f5d1..1e8ee04ce 100644 --- a/mods/ITEMS/mcl_core/locale/template.txt +++ b/mods/ITEMS/mcl_core/locale/template.txt @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald= Emerald Ore= Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.= -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.= +Emeralds are used for trading with villagers.= Flint= Flint is a raw material.= Flowing Lava= From b364faa7c7d76370953f798e207837f4e6b7cfab Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 17 Jul 2021 16:22:46 +0200 Subject: [PATCH 223/720] make bucket use 5 lenght raycast --- mods/ITEMS/mcl_buckets/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index f1d131ea2..931214b95 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -85,7 +85,7 @@ local function bucket_raycast(user) --local pos = vector.add(user:get_pos(), user:get_bone_position("Head_Control")) pos.y = pos.y + user:get_properties().eye_height local look_dir = user:get_look_dir() - look_dir = vector.multiply(look_dir, 4) + look_dir = vector.multiply(look_dir, 5) local pos2 = vector.add(pos, look_dir) local ray = raycast(pos, pos2, false, true) From 48166625d4ddba283d0ca5dca9c548dfb0595337 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 18 Jul 2021 17:21:53 +0000 Subject: [PATCH 224/720] Add mcl_item_id mod --- mods/HELP/mcl_item_id/init.lua | 35 ++++++++++++++++++++++++++++++++++ mods/HELP/mcl_item_id/mod.conf | 3 +++ 2 files changed, 38 insertions(+) create mode 100644 mods/HELP/mcl_item_id/init.lua create mode 100644 mods/HELP/mcl_item_id/mod.conf diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua new file mode 100644 index 000000000..1d165d8c6 --- /dev/null +++ b/mods/HELP/mcl_item_id/init.lua @@ -0,0 +1,35 @@ +local game = "mineclone2" + +local same_id = { + heads = { "skeleton", "zombie", "creeper", "wither_skeleton" }, + mobitems = { "rabbit", "chicken" }, + walls = { + "andesite", "brick", "cobble", "diorite", "endbricks", + "granite", "mossycobble", "netherbrick", "prismarine", + "rednetherbrick", "redsandstone", "sandstone", + "stonebrick", "stonebrickmossy", + }, + wool = { + "black", "blue", "brown", "cyan", "green", + "grey", "light_blue", "lime", "magenta", "orange", + "pink", "purple", "red", "silver", "white", "yellow", + }, +} + +tt.register_snippet(function(itemstring) + local def = minetest.registered_items[itemstring] + local desc = def.description + local item_split = itemstring:find(":") + local new_id = game .. itemstring:sub(item_split) + for mod, ids in pairs(same_id) do + for _, id in pairs(ids) do + if itemstring == "mcl_" .. mod .. ":" .. id then + new_id = game .. ":" .. id .. "_" .. mod:gsub("s", "") + end + end + end + minetest.register_alias(new_id, itemstring) + if minetest.settings:get_bool("mcl_item_id_debug", true) then + return new_id, "#555555" + end +end) diff --git a/mods/HELP/mcl_item_id/mod.conf b/mods/HELP/mcl_item_id/mod.conf new file mode 100644 index 000000000..c45e17fd3 --- /dev/null +++ b/mods/HELP/mcl_item_id/mod.conf @@ -0,0 +1,3 @@ +name = mcl_item_id +author = NO11 +depends = tt \ No newline at end of file From f2a4d6bd561a6499ea24875c23046340b8b572e0 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 18 Jul 2021 17:23:12 +0000 Subject: [PATCH 225/720] Add item id setting --- settingtypes.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/settingtypes.txt b/settingtypes.txt index ea1c1a50a..f605019ad 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -153,3 +153,7 @@ fix_doubleplants (Mcimport double plant fixes) bool true # Allow players to create Minecraft-like maps. enable_real_maps (Enable Real Maps) bool true + +[Debugging] +# If enabled, this will show the itemstring of an item in the description. +mcl_item_id_debug (Item ID Debug) bool false \ No newline at end of file From 801d9a25715ee5ac1f7a99fc24b0b78fd4b60814 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 18 Jul 2021 18:01:55 +0000 Subject: [PATCH 226/720] Remove some spaces --- mods/HELP/mcl_item_id/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index 1d165d8c6..e715ac9e9 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -17,7 +17,7 @@ local same_id = { } tt.register_snippet(function(itemstring) - local def = minetest.registered_items[itemstring] + local def = minetest.registered_items[itemstring] local desc = def.description local item_split = itemstring:find(":") local new_id = game .. itemstring:sub(item_split) From 96e8e6a86f00835d2e7d5dc36974ec5cfcf2a919 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 19 Jul 2021 12:21:30 +0000 Subject: [PATCH 227/720] Use mineclone: instead of mineclone2: for item IDs --- mods/HELP/mcl_item_id/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index e715ac9e9..e7772d141 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -1,4 +1,4 @@ -local game = "mineclone2" +local game = "mineclone" local same_id = { heads = { "skeleton", "zombie", "creeper", "wither_skeleton" }, @@ -30,6 +30,6 @@ tt.register_snippet(function(itemstring) end minetest.register_alias(new_id, itemstring) if minetest.settings:get_bool("mcl_item_id_debug", true) then - return new_id, "#555555" - end + return new_id, "#555555" + end end) From 559cf85c9449b77591603ca561618668a3fb027e Mon Sep 17 00:00:00 2001 From: Tianyang Zhang Date: Mon, 19 Jul 2021 09:12:39 -0700 Subject: [PATCH 228/720] Improve description of emerald --- mods/ITEMS/mcl_core/craftitems.lua | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.es.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.fr.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.pl.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.ru.tr | 2 +- mods/ITEMS/mcl_core/locale/template.txt | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_core/craftitems.lua b/mods/ITEMS/mcl_core/craftitems.lua index 836f21688..85a078766 100644 --- a/mods/ITEMS/mcl_core/craftitems.lua +++ b/mods/ITEMS/mcl_core/craftitems.lua @@ -93,7 +93,7 @@ minetest.register_craftitem("mcl_core:gold_ingot", { minetest.register_craftitem("mcl_core:emerald", { description = S("Emerald"), - _doc_items_longdesc = S("Emeralds are used for trading with villagers."), + _doc_items_longdesc = S("Emeralds are used in villager trades as currency."), inventory_image = "mcl_core_emerald.png", stack_max = 64, groups = { craftitem=1 }, diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index f5a28c76f..8b75dfd40 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Smaragd Emerald Ore=Smaragderz Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Smaragderz ist das Erz von Smaragden. Es ist sehr selten und kann nur einzeln gefunden werden, nicht in Ansammlungen. -Emeralds are used for trading with villagers.=Smaragde sind nicht besonders nützlich, aber man kann sie in der Fertigung durch Goldbarren eintauschen. +Emeralds are used in villager trades as currency.=Smaragde sind nicht besonders nützlich, aber man kann sie in der Fertigung durch Goldbarren eintauschen. Flint=Feuerstein Flint is a raw material.=Feuerstein ist ein Rohstoff. Flowing Lava=Fließende Lava diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr index 54ee95d16..d77f45dc2 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Esmeralda Emerald Ore=Mena de esmeralda Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=El mineral esmeralda es el mineral de las esmeraldas. Es muy raro y se puede encontrar solo, no en grupos. -Emeralds are used for trading with villagers.=Las esmeraldas no son muy útiles por sí mismas, pero pueden cambiarse por lingotes de oro haciendo artesanías. +Emeralds are used in villager trades as currency.=Las esmeraldas no son muy útiles por sí mismas, pero pueden cambiarse por lingotes de oro haciendo artesanías. Flint=Pedernal Flint is a raw material.=El pedernal es una materia prima. Flowing Lava=Lava que fluye diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr index 84657c8a1..4d6a3ed43 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Emeraude Emerald Ore=Minerai d'Emeraude Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Le minerai d'émeraude produit des émeraudes. Il est très rare et peut être trouvé seul, pas en filons. -Emeralds are used for trading with villagers.=Les émeraudes ne sont pas très utiles seules, mais elles peuvent être échangées contre des lingots d'or. +Emeralds are used in villager trades as currency.=Les émeraudes ne sont pas très utiles seules, mais elles peuvent être échangées contre des lingots d'or. Flint=Silex Flint is a raw material.=Le silex est une matière première. Flowing Lava=Lave qui coule diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr index 90a75f810..f8dbbde6b 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass 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 used for trading with villagers.=Szmaragdy nie są zbyt użyteczne same w sobie, ale można z nich wytworzyć sztabki złota. +Emeralds are used in villager trades as currency.=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 diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr index 07236037b..ad9d863b2 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Изумруд Emerald Ore=Изумрудная руда Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Изумрудная руда встречается очень редко и всегда по одному блоку. -Emeralds are used for trading with villagers.=Изумруды не очень полезны сами по себе, но их можно обменять на золотые слитки. +Emeralds are used in villager trades as currency.=Изумруды не очень полезны сами по себе, но их можно обменять на золотые слитки. Flint=Кремень Flint is a raw material.=Кремень это необработанный материал. Flowing Lava=Текущая лава diff --git a/mods/ITEMS/mcl_core/locale/template.txt b/mods/ITEMS/mcl_core/locale/template.txt index 1e8ee04ce..19d156711 100644 --- a/mods/ITEMS/mcl_core/locale/template.txt +++ b/mods/ITEMS/mcl_core/locale/template.txt @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald= Emerald Ore= Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.= -Emeralds are used for trading with villagers.= +Emeralds are used in villager trades as currency.= Flint= Flint is a raw material.= Flowing Lava= From 999b82c94a167cdb62d2894fe45718bd48a91ce9 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 20 Jul 2021 15:21:07 +0200 Subject: [PATCH 229/720] small documentation graphical improvement --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1b5098a4f..4c9bf3e38 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -52,17 +52,17 @@ Each mod must provide `mod.conf`. Each mod which add API functions should store functions inside a global table named like the mod. Public functions should not use self references but rather just access the table directly. Functions should be defined in this way: -``` +```lua function mcl_xyz.stuff(param) end ``` Insteed of this way: -``` +```lua 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. -``` +```lua local vector = vector local get_node = minetest.get_node ``` From b5f7ae54583197b55bb5e8f5f81a6605fa4f74e8 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 20 Jul 2021 15:47:26 +0200 Subject: [PATCH 230/720] working implementation + support of other mods --- mods/ENTITIES/mcl_boats/init.lua | 2 +- mods/ENTITIES/mcl_boats/mod.conf | 2 +- mods/ENTITIES/mcl_minecarts/init.lua | 2 +- mods/ENTITIES/mcl_minecarts/mod.conf | 2 +- mods/HUD/mcl_title/init.lua | 5 ++--- mods/ITEMS/mcl_beds/functions.lua | 2 +- 6 files changed, 7 insertions(+), 8 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 76ace7a45..e81e9ffc5 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -84,7 +84,7 @@ local function attach_object(self, obj) end end, name) obj:set_look_horizontal(yaw) - mcl_tmp_message.message(obj, S("Sneak to dismount")) + mcl_title.set(obj, "actionbar", {text=S("Sneak to dismount"), color="white", stay=3}) else obj:get_luaentity()._old_visual_size = visual_size end diff --git a/mods/ENTITIES/mcl_boats/mod.conf b/mods/ENTITIES/mcl_boats/mod.conf index a5d6cc8cb..61463b6ec 100644 --- a/mods/ENTITIES/mcl_boats/mod.conf +++ b/mods/ENTITIES/mcl_boats/mod.conf @@ -1,7 +1,7 @@ name = mcl_boats author = PilzAdam description = Adds drivable boats. -depends = mcl_player, flowlib +depends = mcl_player, flowlib, mcl_title optional_depends = mcl_core, doc_identifier diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index e33e120a1..a76ab538a 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -646,7 +646,7 @@ register_minecart( if player then mcl_player.player_set_animation(player, "sit" , 30) player:set_eye_offset({x=0, y=-5.5, z=0},{x=0, y=-4, z=0}) - mcl_tmp_message.message(clicker, S("Sneak to dismount")) + mcl_title.set(clicker, "actionbar", {text=S("Sneak to dismount"), color="white", stay=3}) end end, name) end diff --git a/mods/ENTITIES/mcl_minecarts/mod.conf b/mods/ENTITIES/mcl_minecarts/mod.conf index 9fff9175d..3b8ae5551 100644 --- a/mods/ENTITIES/mcl_minecarts/mod.conf +++ b/mods/ENTITIES/mcl_minecarts/mod.conf @@ -1,6 +1,6 @@ name = mcl_minecarts author = Krock description = Minecarts are vehicles to move players quickly on rails. -depends = mcl_explosions, mcl_core, mcl_sounds, mcl_player, mcl_achievements, mcl_chests, mcl_furnaces, mesecons_commandblock, mcl_hoppers, mcl_tnt, mesecons +depends = mcl_title, mcl_explosions, mcl_core, mcl_sounds, mcl_player, mcl_achievements, mcl_chests, mcl_furnaces, mesecons_commandblock, mcl_hoppers, mcl_tnt, mesecons optional_depends = doc_identifier, mcl_wip diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index 48c3a909f..03fe17614 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -45,7 +45,7 @@ local player_params = {} minetest.register_on_joinplayer(function(player) local playername = player:get_player_name() - player_params[playername] = { + player_params[player] = { stay = gametick_to_secondes(mcl_title.defaults.stay), --fadeIn = gametick_to_secondes(mcl_title.defaults.fadein), --fadeOut = gametick_to_secondes(mcl_title.defaults.fadeout), @@ -127,14 +127,13 @@ function mcl_title.set(player, type, data) return false end - --TODO: enable this code then Fleckenstein's pr get merged (in about 5-6 years) + --TODO: enable this code then Fleckenstein's pr get merged (in about 5-6 years lol) --if data.bold == nil then data.bold = false end --if data.italic == nil then data.italic = false end player:hud_change(huds_idx[type][player], "text", data.text) player:hud_change(huds_idx[type][player], "number", hex_color) - hud_hide_timeouts[type][player:get_player_name()] = data.stay or mcl_title.params_get(player).stay return true end diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index dc9afe2ba..f323ca4c7 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -330,7 +330,7 @@ function mcl_beds.on_rightclick(pos, player, is_top) message = select(2, lay_down(player, ppos, other)) end if message then - mcl_tmp_message.message(player, message) + mcl_title.set(player, "actionbar", {text=message, color="white", stay=3}) end else lay_down(player, nil, nil, false) From c31c852a6ea63eb2ffed49089881866fb59df0ed Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 20 Jul 2021 16:14:34 +0200 Subject: [PATCH 231/720] add documentation --- mods/ENTITIES/mcl_boats/init.lua | 2 +- mods/ENTITIES/mcl_minecarts/init.lua | 2 +- mods/HUD/mcl_title/API.md | 42 ++++++++++++++++++++++++++++ mods/HUD/mcl_title/init.lua | 2 +- mods/ITEMS/mcl_beds/functions.lua | 2 +- 5 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 mods/HUD/mcl_title/API.md diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index e81e9ffc5..311b07882 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -84,7 +84,7 @@ local function attach_object(self, obj) end end, name) obj:set_look_horizontal(yaw) - mcl_title.set(obj, "actionbar", {text=S("Sneak to dismount"), color="white", stay=3}) + mcl_title.set(obj, "actionbar", {text=S("Sneak to dismount"), color="white", stay=60}) else obj:get_luaentity()._old_visual_size = visual_size end diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index a76ab538a..4d3873cc2 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -646,7 +646,7 @@ register_minecart( if player then mcl_player.player_set_animation(player, "sit" , 30) player:set_eye_offset({x=0, y=-5.5, z=0},{x=0, y=-4, z=0}) - mcl_title.set(clicker, "actionbar", {text=S("Sneak to dismount"), color="white", stay=3}) + mcl_title.set(clicker, "actionbar", {text=S("Sneak to dismount"), color="white", stay=60}) end end, name) end diff --git a/mods/HUD/mcl_title/API.md b/mods/HUD/mcl_title/API.md new file mode 100644 index 000000000..50614be4f --- /dev/null +++ b/mods/HUD/mcl_title/API.md @@ -0,0 +1,42 @@ +# mcl_title + +Allow mods to show messages in the hud of players. + +## mcl_title.set(player, type, data) + +Show a hud message of `type` to player `player` with `data` as params. + +The element will stay for the per-player param `stay` or `data.stay` (in gametick which is 1/20 second). + +Here is a usage exemple: + +```lua +--show a title in the HUD with minecraft color "gold" +mcl_title.set(player, "title", {text="dummy text", color="gold"}) + +--show a subtitle in the HUD with hex color "#612D2D" +mcl_title.set(player, "subtitle", {text="dummy subtitle", color="#612D2D"}) + +--show an actionbar in the HUD (above the hotbar) with minecraft color "red" +mcl_title.set(player, "subtitle", {text="dummy actionbar", color="red"}) + +--show a title in the HUD with minecraft color "gold" staying for 3 seconds (override stay setting) +mcl_title.set(player, "title", {text="dummy text", color="gold", stay=3}) +``` + +## mcl_title.remove(player, type) + +Hide HUD element of type `type` for player `player`. + +## mcl_title.clear(player) + +Remove every title/subtitle/actionbar from a player. +Basicaly run `mcl_title.remove(player, type)` for every type. + +## mcl_title.params_set(player, params) + +Allow mods to set `stay` and upcomming `fadeIn`/`fadeOut` params. + +```lua +mcl_title.params_set(player, {stay = 600}) --elements with no 'data.stay' field will stay during 30s (600/20) +``` \ No newline at end of file diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index 03fe17614..d1dbece4b 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -134,7 +134,7 @@ function mcl_title.set(player, type, data) player:hud_change(huds_idx[type][player], "text", data.text) player:hud_change(huds_idx[type][player], "number", hex_color) - hud_hide_timeouts[type][player:get_player_name()] = data.stay or mcl_title.params_get(player).stay + hud_hide_timeouts[type][player:get_player_name()] = gametick_to_secondes(data.stay) or mcl_title.params_get(player).stay return true end diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index f323ca4c7..e196f69ad 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -330,7 +330,7 @@ function mcl_beds.on_rightclick(pos, player, is_top) message = select(2, lay_down(player, ppos, other)) end if message then - mcl_title.set(player, "actionbar", {text=message, color="white", stay=3}) + mcl_title.set(player, "actionbar", {text=message, color="white", stay=60}) end else lay_down(player, nil, nil, false) From 31d3ea8a871fef4acbab8493d85768ea7884ac76 Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 20 Jul 2021 20:09:43 +0000 Subject: [PATCH 232/720] Fix #1801 (add better texture for golden boots) --- .../textures/mcl_armor_inv_boots_gold.png | Bin 167 -> 409 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_boots_gold.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_boots_gold.png index dc452d41372344c624d15270867e81ea7551b52a..ef1f9fa87ca43be01bc084da406069ce278d3c1f 100644 GIT binary patch delta 382 zcmV-^0fGLf0ht4kB!32COGiWi{{a60|De66lK=n!32;bRa{vG?BLDy{BLR4&KXw2B z00(qQO+^Rg2NVS)N@!D*zX#WvQEA z04#(nBfex{Rjq`aWmi8Z5*|?Csfm&M27np1J9o)$LRS>Zl1E_v~4!`V2#&%;Q32n c`Ir8}H*o=PdJ9oayZ`_I07*qoM6N<$g80X(CIA2c delta 139 zcmV;60CfME1E&FyB!6y6L_t(|0b>|^;Q#;s_%N*uz|=^*L1E2{L6~|5?CR0_55iDB zhB#gWt}HkG|LS1U|0NYl7zO~vz;Ylp*bIQ#0#bm>0I(cT4PFC4nsFKc#25y^G?Rl- t4M^~)Ar`|7ppFYb4017LDUoUb0H9FFs6zF<5C8xG07*qoLI9vb# From a0d52010bf6dcfe3b7fa1175dc5c76923b515eed Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 21 Jul 2021 22:16:37 +0000 Subject: [PATCH 233/720] Fix that aliases attemp to register mineclone:book_enchanted again and again --- mods/HELP/mcl_item_id/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index e7772d141..01eb40362 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -28,7 +28,7 @@ tt.register_snippet(function(itemstring) end end end - minetest.register_alias(new_id, itemstring) + minetest.register_alias_force(new_id, itemstring) if minetest.settings:get_bool("mcl_item_id_debug", true) then return new_id, "#555555" end From fef23d0b6f224ed178d109ec5d74137168119421 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 22 Jul 2021 00:39:05 +0200 Subject: [PATCH 234/720] fix missing depend to `mcl_credits` of `mcl_portals` --- mods/ITEMS/mcl_portals/mod.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_portals/mod.conf b/mods/ITEMS/mcl_portals/mod.conf index d99344a76..610b590c6 100644 --- a/mods/ITEMS/mcl_portals/mod.conf +++ b/mods/ITEMS/mcl_portals/mod.conf @@ -1,4 +1,4 @@ name = mcl_portals description = Adds buildable portals to the Nether and End dimensions. -depends = mcl_nether, mcl_end, mcl_particles, mcl_spawn +depends = mcl_nether, mcl_end, mcl_particles, mcl_spawn, mcl_credits optional_depends = awards, doc From 667ef5cad51684f79debd5a133dc78f3ea29974c Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 22 Jul 2021 00:46:43 +0200 Subject: [PATCH 235/720] cache doc modpath --- mods/ITEMS/mcl_portals/portal_end.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index d591537e1..9f0db352a 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -4,6 +4,8 @@ local table = table local vector = vector local math = math +local has_doc = minetest.get_modpath("doc") + -- Parameters --local SPAWN_MIN = mcl_vars.mg_end_min+70 --local SPAWN_MAX = mcl_vars.mg_end_min+98 @@ -339,7 +341,7 @@ minetest.register_node("mcl_portals:end_portal_frame_eye", { _mcl_hardness = -1, }) -if minetest.get_modpath("doc") then +if has_doc then doc.add_entry_alias("nodes", "mcl_portals:end_portal_frame", "nodes", "mcl_portals:end_portal_frame_eye") end @@ -366,7 +368,7 @@ minetest.override_item("mcl_end:ender_eye", { end minetest.set_node(pointed_thing.under, { name = "mcl_portals:end_portal_frame_eye", param2 = node.param2 }) - if minetest.get_modpath("doc") then + if has_doc then doc.mark_entry_as_revealed(user:get_player_name(), "nodes", "mcl_portals:end_portal_frame") end minetest.sound_play( @@ -381,7 +383,7 @@ minetest.override_item("mcl_end:ender_eye", { -- Epic 'portal open' sound effect that can be heard everywhere minetest.sound_play("mcl_portals_open_end_portal", {gain=0.8}, true) end_portal_area(ppos) - if minetest.get_modpath("doc") then + if has_doc then doc.mark_entry_as_revealed(user:get_player_name(), "nodes", "mcl_portals:portal_end") end end From a44d9643ae8b826f1e5efb67259d6d77320dfade Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 22 Jul 2021 19:23:48 +0000 Subject: [PATCH 236/720] Fix several problems in `mcl_item_id` --- mods/HELP/mcl_item_id/init.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index 01eb40362..3b3128f26 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -28,8 +28,12 @@ tt.register_snippet(function(itemstring) end end end - minetest.register_alias_force(new_id, itemstring) - if minetest.settings:get_bool("mcl_item_id_debug", true) then + if new_id ~= game .. ":book_enchanted" then + minetest.register_alias_force(new_id, itemstring) + end + if minetest.settings:get_bool("mcl_item_id_debug", false) then return new_id, "#555555" end end) + +minetest.register_alias_force(game .. ":book_enchanted", "mcl_enchanting:book_enchanted") From 75b425ffd77b85ba3081ddf2e47f8b6695ec8fa5 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 23 Jul 2021 12:23:30 +0000 Subject: [PATCH 237/720] Fix #1842 make other mods not using "mineclone" name space for item ids --- mods/HELP/mcl_item_id/init.lua | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index 3b3128f26..50247a858 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -1,4 +1,5 @@ local game = "mineclone" +local mcl_mods = {} local same_id = { heads = { "skeleton", "zombie", "creeper", "wither_skeleton" }, @@ -10,17 +11,34 @@ local same_id = { "stonebrick", "stonebrickmossy", }, wool = { - "black", "blue", "brown", "cyan", "green", + "black", "blue", "brown", "cyan", "green", "grey", "light_blue", "lime", "magenta", "orange", "pink", "purple", "red", "silver", "white", "yellow", }, } +local worldmt = io.open(minetest.get_worldpath() .. "/world.mt", "r") +local gameid = worldmt:read("*a"):match("gameid%s*=%s*(%S+)\n") +worldmt:close() + +for _, mod in pairs(minetest.get_modnames()) do + if minetest.get_modpath(mod):match("/games/" .. gameid .. "/") then + table.insert(mcl_mods, mod) + end +end + +local function item_id(id) + if minetest.settings:get_bool("mcl_item_id_debug", false) then + return id, "#555555" + end +end + tt.register_snippet(function(itemstring) local def = minetest.registered_items[itemstring] local desc = def.description local item_split = itemstring:find(":") local new_id = game .. itemstring:sub(item_split) + local mcl_mod = itemstring:sub(1, item_split) for mod, ids in pairs(same_id) do for _, id in pairs(ids) do if itemstring == "mcl_" .. mod .. ":" .. id then @@ -28,12 +46,15 @@ tt.register_snippet(function(itemstring) end end end - if new_id ~= game .. ":book_enchanted" then - minetest.register_alias_force(new_id, itemstring) - end - if minetest.settings:get_bool("mcl_item_id_debug", false) then - return new_id, "#555555" + for _, modname in pairs(mcl_mods) do + if modname .. ":" == mcl_mod then + if new_id ~= game .. ":book_enchanted" and new_id ~= itemstring then + minetest.register_alias_force(new_id, itemstring) + end + return item_id(new_id) + end end + return item_id(itemstring) end) minetest.register_alias_force(game .. ":book_enchanted", "mcl_enchanting:book_enchanted") From 09a68443cd641ed73631cc076916616e518402ea Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 23 Jul 2021 16:12:43 +0000 Subject: [PATCH 238/720] Better fix for #1842 (make other mods not using "mineclone" name space for item ids) --- mods/HELP/mcl_item_id/init.lua | 57 ++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index 50247a858..4e9c7c9f1 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -1,5 +1,20 @@ +mcl_item_id = {} + local game = "mineclone" -local mcl_mods = {} + +function mcl_item_id.set_mod_namespace(modname, namespace) + local namespace = namespace or modname + mcl_item_id[modname .. "_namespace"] = namespace +end + +function mcl_item_id.get_mod_namespace(modname) + local namespace = mcl_item_id[modname .. "_namespace"] + if namespace then + return namespace + else + return "" + end +end local same_id = { heads = { "skeleton", "zombie", "creeper", "wither_skeleton" }, @@ -17,28 +32,15 @@ local same_id = { }, } -local worldmt = io.open(minetest.get_worldpath() .. "/world.mt", "r") -local gameid = worldmt:read("*a"):match("gameid%s*=%s*(%S+)\n") -worldmt:close() - -for _, mod in pairs(minetest.get_modnames()) do - if minetest.get_modpath(mod):match("/games/" .. gameid .. "/") then - table.insert(mcl_mods, mod) - end -end - -local function item_id(id) - if minetest.settings:get_bool("mcl_item_id_debug", false) then - return id, "#555555" - end -end - tt.register_snippet(function(itemstring) local def = minetest.registered_items[itemstring] local desc = def.description local item_split = itemstring:find(":") - local new_id = game .. itemstring:sub(item_split) - local mcl_mod = itemstring:sub(1, item_split) + local id_part1 = itemstring:sub(1, item_split) + local id_part2 = itemstring:sub(item_split) + local modname = id_part1:gsub("%:", "") + local new_id = game .. id_part2 + local mod_namespace = mcl_item_id.get_mod_namespace(modname) for mod, ids in pairs(same_id) do for _, id in pairs(ids) do if itemstring == "mcl_" .. mod .. ":" .. id then @@ -46,15 +48,16 @@ tt.register_snippet(function(itemstring) end end end - for _, modname in pairs(mcl_mods) do - if modname .. ":" == mcl_mod then - if new_id ~= game .. ":book_enchanted" and new_id ~= itemstring then - minetest.register_alias_force(new_id, itemstring) - end - return item_id(new_id) - end + + if mod_namespace then + new_id = mod_namespace .. id_part2 + end + if new_id ~= game .. ":book_enchanted" then + minetest.register_alias_force(new_id, itemstring) + end + if minetest.settings:get_bool("mcl_item_id_debug", false) then + return new_id, "#555555" end - return item_id(itemstring) end) minetest.register_alias_force(game .. ":book_enchanted", "mcl_enchanting:book_enchanted") From e44e9eaf623809bc2fa4c617dd6e9629aa5b3879 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 23 Jul 2021 21:35:10 +0000 Subject: [PATCH 239/720] Fix typo --- mods/HELP/mcl_item_id/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index 4e9c7c9f1..911d8225b 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -12,7 +12,7 @@ function mcl_item_id.get_mod_namespace(modname) if namespace then return namespace else - return "" + return end end From c05e57efb1f3d55c89354c28a84e76abe63aadd5 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 24 Jul 2021 14:09:47 +0000 Subject: [PATCH 240/720] Fix some crashes with set_mod_namespace and bugs --- mods/HELP/mcl_item_id/init.lua | 46 +++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index 911d8225b..9a2f926e8 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -1,22 +1,38 @@ -mcl_item_id = {} +mcl_item_id = { + mod_namespaces = {}, +} local game = "mineclone" function mcl_item_id.set_mod_namespace(modname, namespace) local namespace = namespace or modname - mcl_item_id[modname .. "_namespace"] = namespace + mcl_item_id.mod_namespaces[modname] = namespace + minetest.register_on_mods_loaded(function() + for item, def in pairs(minetest.registered_items) do + local item_split = item:find(":") + if item_split then + local id_modname = item:sub(1, item_split - 1) + local id_string = item:sub(item_split) + if id_modname == modname then + minetest.register_alias_force(namespace .. id_string, item) + end + end + end + end) end function mcl_item_id.get_mod_namespace(modname) - local namespace = mcl_item_id[modname .. "_namespace"] + local namespace = mcl_item_id.mod_namespaces[modname] if namespace then return namespace else - return + return game end end local same_id = { + enchanting = { "table" }, + experience = { "bottle" }, heads = { "skeleton", "zombie", "creeper", "wither_skeleton" }, mobitems = { "rabbit", "chicken" }, walls = { @@ -34,13 +50,11 @@ local same_id = { tt.register_snippet(function(itemstring) local def = minetest.registered_items[itemstring] - local desc = def.description local item_split = itemstring:find(":") - local id_part1 = itemstring:sub(1, item_split) - local id_part2 = itemstring:sub(item_split) - local modname = id_part1:gsub("%:", "") - local new_id = game .. id_part2 - local mod_namespace = mcl_item_id.get_mod_namespace(modname) + local id_string = itemstring:sub(item_split) + local id_modname = itemstring:sub(1, item_split - 1) + local new_id = game .. id_string + local mod_namespace = mcl_item_id.get_mod_namespace(id_modname) for mod, ids in pairs(same_id) do for _, id in pairs(ids) do if itemstring == "mcl_" .. mod .. ":" .. id then @@ -48,16 +62,12 @@ tt.register_snippet(function(itemstring) end end end - - if mod_namespace then - new_id = mod_namespace .. id_part2 - end - if new_id ~= game .. ":book_enchanted" then + if mod_namespace ~= game then + new_id = mod_namespace .. id_string + else minetest.register_alias_force(new_id, itemstring) end if minetest.settings:get_bool("mcl_item_id_debug", false) then return new_id, "#555555" end -end) - -minetest.register_alias_force(game .. ":book_enchanted", "mcl_enchanting:book_enchanted") +end) \ No newline at end of file From 65d33b935ab23e6a43b069c62124d51ead05c165 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 24 Jul 2021 14:45:55 +0000 Subject: [PATCH 241/720] Add API-md for `mcl_item_id` --- mods/HELP/mcl_item_id/API.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 mods/HELP/mcl_item_id/API.md diff --git a/mods/HELP/mcl_item_id/API.md b/mods/HELP/mcl_item_id/API.md new file mode 100644 index 000000000..a2f244e0c --- /dev/null +++ b/mods/HELP/mcl_item_id/API.md @@ -0,0 +1,24 @@ +# mcl_item_id +Show the item ID of an item in the description. +With this API, you can register a different name space than "mineclone" for your mod. + +## mcl_item_id.set_mod_namespace(modname, namespace) +Set a name space for all items in a mod. + +* param1: the modname +* param2: (optional) string of the desired name space, if nil, it is the name of the mod + +## mcl_item_id.get_mod_namespace(modname) +Get the name space of a mod registered with mcl_item_id.set_mod_namespace(modname, namespace). + +* param1: the modname + +### Examples: + +The name of the mod is "mod" which registered an item called "mod:itemname". + +* mcl_item_id.set_mod_namespace("mod", "mymod") will show "mymod:itemname" in the description of "mod:itemname" +* mcl_item_id.set_mod_namespace(minetest.get_current_modname()) will show "mod:itemname" in the description of "mod:itemname" +* mcl_item_id.get_mod_namespace(minetest.get_current_modname()) will return "mod" + +(If no namespace is set by a mod, mcl_item_id.get_mod_namespace(minetest.get_current_modname()) will return "mineclone") From 5c5c405ccf92762af6f0757d4a3b015ff14d0d37 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 24 Jul 2021 15:19:10 +0000 Subject: [PATCH 242/720] Add missing check --- mods/HELP/mcl_item_id/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index 9a2f926e8..e6df1af03 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -13,7 +13,7 @@ function mcl_item_id.set_mod_namespace(modname, namespace) if item_split then local id_modname = item:sub(1, item_split - 1) local id_string = item:sub(item_split) - if id_modname == modname then + if id_modname == modname and modname ~= namespace then minetest.register_alias_force(namespace .. id_string, item) end end From 4846076c8fc2555dff12bf148c5b1d83ab39ec9d Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 24 Jul 2021 19:07:44 +0000 Subject: [PATCH 243/720] `mcl_item_id` simplify code --- mods/HELP/mcl_item_id/init.lua | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index e6df1af03..f3e6d2735 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -7,18 +7,6 @@ local game = "mineclone" function mcl_item_id.set_mod_namespace(modname, namespace) local namespace = namespace or modname mcl_item_id.mod_namespaces[modname] = namespace - minetest.register_on_mods_loaded(function() - for item, def in pairs(minetest.registered_items) do - local item_split = item:find(":") - if item_split then - local id_modname = item:sub(1, item_split - 1) - local id_string = item:sub(item_split) - if id_modname == modname and modname ~= namespace then - minetest.register_alias_force(namespace .. id_string, item) - end - end - end - end) end function mcl_item_id.get_mod_namespace(modname) @@ -64,7 +52,8 @@ tt.register_snippet(function(itemstring) end if mod_namespace ~= game then new_id = mod_namespace .. id_string - else + end + if mod_namespace ~= id_modname then minetest.register_alias_force(new_id, itemstring) end if minetest.settings:get_bool("mcl_item_id_debug", false) then From 4aabd7d9e721a860864157ac5145985d8a2360b9 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 1 Aug 2021 12:10:00 +0000 Subject: [PATCH 244/720] Make size/position of potion HUD more MC like --- mods/ITEMS/mcl_potions/functions.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 09b95115a..c3b034b66 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -35,13 +35,13 @@ local function potions_init_icons(player) local name = player:get_player_name() icon_ids[name] = {} for e=1, EFFECT_TYPES do - local x = -7 + -38 * e + local x = -52 * e - 2 local id = player:hud_add({ hud_elem_type = "image", text = "blank.png", position = { x = 1, y = 0 }, - offset = { x = x, y = 272 }, - scale = { x = 2, y = 2 }, + offset = { x = x, y = 3 }, + scale = { x = 3, y = 3 }, alignment = { x = 1, y = 1 }, z_index = 100, }) From 5c563d6ffd16ba6d64691fff5e0356b85eb4fe80 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 2 Aug 2021 12:24:34 +0000 Subject: [PATCH 245/720] Make eating particles much more MC like! --- mods/PLAYER/mcl_hunger/hunger.lua | 32 ++++++++++++------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/hunger.lua b/mods/PLAYER/mcl_hunger/hunger.lua index 5dec8b1b0..d9a6fd5fe 100644 --- a/mods/PLAYER/mcl_hunger/hunger.lua +++ b/mods/PLAYER/mcl_hunger/hunger.lua @@ -152,26 +152,18 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso -- If false, force item to not spawn any food partiles when eaten if def._food_particles ~= false and texture and texture ~= "" then local v = user:get_velocity() or user:get_player_velocity() - local minvel = vector.add(v, {x=-1, y=1, z=-1}) - local maxvel = vector.add(v, {x=1, y=2, z=1}) - - minetest.add_particlespawner({ - amount = math.min(math.max(8, hunger_change*2), 25), - time = 0.1, - minpos = {x=pos.x, y=pos.y, z=pos.z}, - maxpos = {x=pos.x, y=pos.y, z=pos.z}, - minvel = minvel, - maxvel = maxvel, - minacc = {x=0, y=-5, z=0}, - maxacc = {x=0, y=-9, z=0}, - minexptime = 1, - maxexptime = 1, - minsize = 1, - maxsize = 2, - collisiondetection = true, - vertical = false, - texture = texture, - }) + for i = 0, math.min(math.max(8, hunger_change*2), 25) do + minetest.add_particle({ + pos = { x = pos.x, y = pos.y, z = pos.z }, + velocity = vector.add(v, { x = math.random(-1, 1), y = math.random(1, 2), z = math.random(-1, 1) }), + acceleration = { x = 0, y = math.random(-9, -5), z = 0 }, + expirationtime = 1, + size = math.random(1, 2), + collisiondetection = true, + vertical = false, + texture = "[combine:3x3:" .. -i .. "," .. -i .. "=" .. texture, + }) + end end minetest.sound_play("mcl_hunger_bite", { max_hear_distance = 12, From df0c1f1dd1e32dc74a1b9e9a767037c517cdf071 Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 6 Aug 2021 11:14:17 +0200 Subject: [PATCH 246/720] Make bows and fishing rods show their durability in description (Fixes issue #1773) --- mods/HELP/mcl_tt/snippets_mcl.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mods/HELP/mcl_tt/snippets_mcl.lua b/mods/HELP/mcl_tt/snippets_mcl.lua index 3c79f52e8..121d8ed70 100644 --- a/mods/HELP/mcl_tt/snippets_mcl.lua +++ b/mods/HELP/mcl_tt/snippets_mcl.lua @@ -107,3 +107,8 @@ tt.register_snippet(function(itemstring) end end) +tt.register_snippet(function(itemstring, _, itemstack) + if itemstring:sub(1, 23) == "mcl_fishing:fishing_rod" or itemstring:sub(1, 12) == "mcl_bows:bow" then + return S("Durability: @1 uses", mcl_util.calculate_durability(itemstack or ItemStack(itemstring))) + end +end) From 5bb57a81ad46c163b58da046920b8a4bee18b30b Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 6 Aug 2021 11:55:27 +0200 Subject: [PATCH 247/720] Add durability tooltip to translation template --- mods/HELP/mcl_tt/locale/template.txt | 1 + mods/HELP/mcl_tt/snippets_mcl.lua | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/HELP/mcl_tt/locale/template.txt b/mods/HELP/mcl_tt/locale/template.txt index 1259216c7..6fb735b13 100644 --- a/mods/HELP/mcl_tt/locale/template.txt +++ b/mods/HELP/mcl_tt/locale/template.txt @@ -45,3 +45,4 @@ Mining durability: @1= Block breaking strength: @1= @1 uses= Unlimited uses= +Durability: @1= diff --git a/mods/HELP/mcl_tt/snippets_mcl.lua b/mods/HELP/mcl_tt/snippets_mcl.lua index 121d8ed70..825776f5f 100644 --- a/mods/HELP/mcl_tt/snippets_mcl.lua +++ b/mods/HELP/mcl_tt/snippets_mcl.lua @@ -109,6 +109,6 @@ end) tt.register_snippet(function(itemstring, _, itemstack) if itemstring:sub(1, 23) == "mcl_fishing:fishing_rod" or itemstring:sub(1, 12) == "mcl_bows:bow" then - return S("Durability: @1 uses", mcl_util.calculate_durability(itemstack or ItemStack(itemstring))) + return S("Durability: @1", S("@1 uses", mcl_util.calculate_durability(itemstack or ItemStack(itemstring)))) end end) From 664c2381374ee25f423d2b0d0eb66b838257eca6 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 6 Aug 2021 10:52:55 +0000 Subject: [PATCH 248/720] Add german translation for the bow/fishing rod desc --- mods/HELP/mcl_tt/locale/mcl_tt.de.tr | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/HELP/mcl_tt/locale/mcl_tt.de.tr b/mods/HELP/mcl_tt/locale/mcl_tt.de.tr index 8f878afc7..54c376c3b 100644 --- a/mods/HELP/mcl_tt/locale/mcl_tt.de.tr +++ b/mods/HELP/mcl_tt/locale/mcl_tt.de.tr @@ -45,3 +45,4 @@ Mining durability: @1=Grabehaltbarkeit: @1 Block breaking strength: @1=Blockbruchstärke: @1 @1 uses=@1 Verwendungen Unlimited uses=Unbegrenzte Verwendungen +Durability: @1=Haltbarkeit: @1 From f8dcf056707c917f2b77aead6669ee0d05905c86 Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 11 Aug 2021 15:41:45 +0000 Subject: [PATCH 249/720] Add MC like nodebox for anvils --- mods/ITEMS/mcl_anvils/init.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index fbf6fb751..51b78da6f 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -297,9 +297,10 @@ local anvildef = { node_box = { type = "fixed", fixed = { - {-8/16, 2/16, -5/16, 8/16, 8/16, 5/16}, -- top - {-5/16, -4/16, -2/16, 5/16, 5/16, 2/16}, -- middle - {-8/16, -8/16, -5/16, 8/16, -4/16, 5/16}, -- base + { -6/16, -8/16, -6/16, 6/16, -4/16, 6/16 }, + { -5/16, -4/16, -4/16, 5/16, -3/16, 4/16 }, + { -4/16, -3/16, -2/16, 4/16, 2/16, 2/16 }, + { -8/16, 2/16, -5/16, 8/16, 8/16, 5/16 }, } }, sounds = mcl_sounds.node_sound_metal_defaults(), From cb55c36863b429a8328c98bc478d525d081727ca Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 11 Aug 2021 15:44:43 +0000 Subject: [PATCH 250/720] Correct the texture of anvils Because of the new node_nox, the textures have to be a little bit bigger. --- .../mcl_anvils_anvil_top_damaged_0.png | Bin 195 -> 6074 bytes .../mcl_anvils_anvil_top_damaged_1.png | Bin 209 -> 5855 bytes .../mcl_anvils_anvil_top_damaged_2.png | Bin 220 -> 5882 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_anvils/textures/mcl_anvils_anvil_top_damaged_0.png b/mods/ITEMS/mcl_anvils/textures/mcl_anvils_anvil_top_damaged_0.png index 84c64e9159abbd2703d701a32211caa4cc9b8418..43938aa7265afa58d0394ae683e7815a6159dc40 100644 GIT binary patch literal 6074 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 PuQ;wB&v&o)+~j`)mnpRX delta 163 zcmV;U09^myEztpxBL)B%P)t-slm8VMe;sF9xBvhE0d!JMQvg8b*k%9#0B1==K~#7F z9m~ND0zn8yVRmd_SutKmw*g}ZBrp|#Q-K{g{Tu$8}E3 za0gU)FPMq~VeUxoV_~1)8Mu6f0uhP5d4|=ssf}NuvD_28@-6qm<9r^S{_@Ka5oW~6 RhyMTo002ovPDHLkV1mc^K{fyY diff --git a/mods/ITEMS/mcl_anvils/textures/mcl_anvils_anvil_top_damaged_2.png b/mods/ITEMS/mcl_anvils/textures/mcl_anvils_anvil_top_damaged_2.png index 5f5cfbffa6f0ebd6c1fa06ad201cb312ca6875e0..096f65eac2203e52431aebcd73c473f68a690441 100644 GIT binary patch literal 5882 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 XpT)8tEoFEQw41@x)z4*}Q$iB}no2*M From fe62189019f0ec704396d797d223706eb8b111eb Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 13 Aug 2021 11:35:18 +0200 Subject: [PATCH 251/720] Update French translation (part 1) --- mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr | 5 +++-- .../mcl_minecarts/locale/mcl_minecarts.fr.tr | 1 + mods/ENTITIES/mobs_mc/locale/template.txt | 1 + mods/HELP/doc/doc_items/locale/doc_items.fr.tr | 2 +- mods/HUD/mcl_credits/locale/mcl_credits.de.tr | 1 + mods/HUD/mcl_credits/locale/mcl_credits.es.tr | 14 ++++++++++++++ mods/HUD/mcl_credits/locale/mcl_credits.fr.tr | 14 ++++++++++++++ mods/HUD/mcl_credits/locale/mcl_credits.pl.tr | 14 ++++++++++++++ mods/HUD/mcl_credits/locale/mcl_credits.ru.tr | 14 ++++++++++++++ mods/ITEMS/mcl_chests/init.lua | 2 +- mods/ITEMS/mcl_chests/locale/template.txt | 2 +- .../ITEMS/mcl_fireworks/locale/mcl_fireworks.es.tr | 3 +++ .../ITEMS/mcl_fireworks/locale/mcl_fireworks.fr.tr | 3 +++ .../ITEMS/mcl_fireworks/locale/mcl_fireworks.ru.tr | 3 +++ mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr | 5 ++++- 15 files changed, 78 insertions(+), 6 deletions(-) create mode 100644 mods/HUD/mcl_credits/locale/mcl_credits.es.tr create mode 100644 mods/HUD/mcl_credits/locale/mcl_credits.fr.tr create mode 100644 mods/HUD/mcl_credits/locale/mcl_credits.pl.tr create mode 100644 mods/HUD/mcl_credits/locale/mcl_credits.ru.tr create mode 100644 mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.es.tr create mode 100644 mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.fr.tr create mode 100644 mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.ru.tr diff --git a/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr index 04d6d9da9..785d50146 100644 --- a/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr @@ -6,6 +6,7 @@ Boats are used to travel on the surface of water.=Les bateaux sont utilisés pou Dark Oak Boat=Bateau en Chêne Noir Jungle Boat=Bateau en Acajou Oak Boat=Bateau en Chêne -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.=Faites un clic droit sur une source d'eau pour placer le bateau. Faites un clic droit sur le bateau pour y entrer. Utilisez [Gauche] et [Droite] pour diriger, [Avant] pour accélérer et [Arrière] pour ralentir ou reculer. Cliquez de nouveau avec le bouton droit sur le bateau pour le quitter, frappez le bateau pour le faire tomber en tant qu'objet. +Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Use [Sneak] to leave the boat, punch the boat to make it drop as an item.=Faites un clic droit sur une source d'eau pour placer le bateau. Faites un clic droit sur le bateau pour y entrer. Utilisez [Gauche] et [Droite] pour diriger, [Avant] pour accélérer et [Arrière] pour ralentir ou reculer. Utilisez [Sneak] pour le quitter, frappez le bateau pour le faire tomber en tant qu'objet. Spruce Boat=Bateau en Sapin -Water vehicle=Véhicule aquatique \ No newline at end of file +Water vehicle=Véhicule aquatique +Sneak to dismount= \ No newline at end of file diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr index 39cdfd013..67ed5eb1b 100644 --- a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr @@ -33,3 +33,4 @@ Activates minecarts when powered=Active les wagonnets lorsqu'il est alimenté Emits redstone power when a minecart is detected=Émet de l'énergie redstone lorsqu'un wagonnet est détecté Vehicle for fast travel on rails=Véhicule pour voyager rapidement sur rails Can be ignited by tools or powered activator rail=Peut être allumé par des outils ou un rail d'activation motorisé +Sneak to dismount= \ No newline at end of file diff --git a/mods/ENTITIES/mobs_mc/locale/template.txt b/mods/ENTITIES/mobs_mc/locale/template.txt index 04ba9e465..7b55c1b89 100644 --- a/mods/ENTITIES/mobs_mc/locale/template.txt +++ b/mods/ENTITIES/mobs_mc/locale/template.txt @@ -28,6 +28,7 @@ Pig= Polar Bear= Rabbit= Killer Bunny= +The Killer Bunny= Sheep= Shulker= Silverfish= diff --git a/mods/HELP/doc/doc_items/locale/doc_items.fr.tr b/mods/HELP/doc/doc_items/locale/doc_items.fr.tr index 5d655404d..824ceeeba 100644 --- a/mods/HELP/doc/doc_items/locale/doc_items.fr.tr +++ b/mods/HELP/doc/doc_items/locale/doc_items.fr.tr @@ -2,7 +2,7 @@ Using it as fuel turns it into: @1.=L'utiliser comme combustible le transforme en : @1. @1 seconds=@1 secondes # Item count times item name -%@1×@2=%@1×@ +@1×@2=@1×@ # Itemname (25%) @1 (@2%)=@1 (@2%) # Itemname (<0.5%) diff --git a/mods/HUD/mcl_credits/locale/mcl_credits.de.tr b/mods/HUD/mcl_credits/locale/mcl_credits.de.tr index 6a38d18e6..fa26f5bc4 100644 --- a/mods/HUD/mcl_credits/locale/mcl_credits.de.tr +++ b/mods/HUD/mcl_credits/locale/mcl_credits.de.tr @@ -7,6 +7,7 @@ Creator of MineClone2=Schöpfer von MineClone2 Developers=Entwickler Jump to speed up (additionally sprint)=Springen, um zu beschleunigen (zusätzlich sprinten) Maintainers=Betreuer +MineClone5=MineClone5 Original Mod Authors=Original-Mod-Autoren Sneak to skip=Schleichen zum Überspringen Textures=Texturen diff --git a/mods/HUD/mcl_credits/locale/mcl_credits.es.tr b/mods/HUD/mcl_credits/locale/mcl_credits.es.tr new file mode 100644 index 000000000..a8886286e --- /dev/null +++ b/mods/HUD/mcl_credits/locale/mcl_credits.es.tr @@ -0,0 +1,14 @@ +# textdomain: mcl_credits +3D Models= +A faithful Open Source clone of Minecraft= +Contributors= +Creator of MineClone= +Creator of MineClone2= +Developers= +Jump to speed up (additionally sprint)= +Maintainers= +MineClone5= +Original Mod Authors= +Sneak to skip= +Textures= +Translations= \ No newline at end of file diff --git a/mods/HUD/mcl_credits/locale/mcl_credits.fr.tr b/mods/HUD/mcl_credits/locale/mcl_credits.fr.tr new file mode 100644 index 000000000..b34249eff --- /dev/null +++ b/mods/HUD/mcl_credits/locale/mcl_credits.fr.tr @@ -0,0 +1,14 @@ +# textdomain: mcl_credits +3D Models=Modèles 3D +A faithful Open Source clone of Minecraft=Un clone open source de Minecraft +Contributors=Contributeurs +Creator of MineClone=Créateur de MineClone +Creator of MineClone2=Créateur de MineClone2 +Developers=Développeurs +Jump to speed up (additionally sprint)=Saut pour accélérer (peut être combiné avec sprint) +Maintainers=Mainteneurs +MineClone5=MineClone5 +Original Mod Authors=Auteurs des mods originaux +Sneak to skip=Shift pour passer +Textures=Textures +Translations=Traductions \ No newline at end of file diff --git a/mods/HUD/mcl_credits/locale/mcl_credits.pl.tr b/mods/HUD/mcl_credits/locale/mcl_credits.pl.tr new file mode 100644 index 000000000..a8886286e --- /dev/null +++ b/mods/HUD/mcl_credits/locale/mcl_credits.pl.tr @@ -0,0 +1,14 @@ +# textdomain: mcl_credits +3D Models= +A faithful Open Source clone of Minecraft= +Contributors= +Creator of MineClone= +Creator of MineClone2= +Developers= +Jump to speed up (additionally sprint)= +Maintainers= +MineClone5= +Original Mod Authors= +Sneak to skip= +Textures= +Translations= \ No newline at end of file diff --git a/mods/HUD/mcl_credits/locale/mcl_credits.ru.tr b/mods/HUD/mcl_credits/locale/mcl_credits.ru.tr new file mode 100644 index 000000000..a8886286e --- /dev/null +++ b/mods/HUD/mcl_credits/locale/mcl_credits.ru.tr @@ -0,0 +1,14 @@ +# textdomain: mcl_credits +3D Models= +A faithful Open Source clone of Minecraft= +Contributors= +Creator of MineClone= +Creator of MineClone2= +Developers= +Jump to speed up (additionally sprint)= +Maintainers= +MineClone5= +Original Mod Authors= +Sneak to skip= +Textures= +Translations= \ No newline at end of file diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index cd66c3fc4..69f6a601d 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -1133,7 +1133,7 @@ for color, desc in pairs(boxtypes) do if mod_doc then if is_canonical then longdesc = S("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.") - usagehelp = S("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.") + usagehelp = S("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.") entry_name = S("Shulker Box") else create_entry = false diff --git a/mods/ITEMS/mcl_chests/locale/template.txt b/mods/ITEMS/mcl_chests/locale/template.txt index 1d947184b..d680c24c9 100644 --- a/mods/ITEMS/mcl_chests/locale/template.txt +++ b/mods/ITEMS/mcl_chests/locale/template.txt @@ -24,7 +24,7 @@ Red Shulker Box= Grey Shulker Box= Black Shulker Box= 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.= -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.= +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.= Shulker Box= Large Chest= Inventory= diff --git a/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.es.tr b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.es.tr new file mode 100644 index 000000000..e66eb06a5 --- /dev/null +++ b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.es.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_fireworks +Firework Rocket= +Flight Duration:= \ No newline at end of file diff --git a/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.fr.tr b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.fr.tr new file mode 100644 index 000000000..b02faa428 --- /dev/null +++ b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.fr.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_fireworks +Firework Rocket=Fusée +Flight Duration:=Durée de vol : \ No newline at end of file diff --git a/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.ru.tr b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.ru.tr new file mode 100644 index 000000000..e66eb06a5 --- /dev/null +++ b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.ru.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_fireworks +Firework Rocket= +Flight Duration:= \ No newline at end of file diff --git a/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr b/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr index 9ef7cd5c5..1808e839d 100644 --- a/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr +++ b/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr @@ -1,5 +1,8 @@ # textdomain: mcl_maps Empty Map=Carte Vierge Empty maps are not useful as maps, but they can be stacked and turned to maps which can be used.=Les cartes vierges ne sont pas utiles en tant que cartes, mais elles peuvent être empilées et transformées en cartes utilisables. -Rightclick to start using the map (which can't be stacked anymore).=Clic droit pour commencer à utiliser la carte (qui ne peut plus être empilée). +Rightclick to create a filled map (which can't be stacked anymore).=Clic droit pour créer une carte remplie (qui ne peut plus être empilée). Map=Carte +Shows a map image.=Affiche une carte. +When created, the map saves the nearby area as an image that can be viewed any time by holding the map.=Lors de sa création, la carte sauvegarde le terrain proche sous forme d'image qui peut être consultée n'importe quand en tenant la carte dans la main. +Hold the map in your hand. This will display a map on your screen.=Tenez la carte dans votre main. Cela affichera la carte à l'écran. From 58a292a4f3edcf6816936b89a6b32275fb785299 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 16 Aug 2021 13:48:08 +0200 Subject: [PATCH 252/720] fix inconsistency --- mods/HUD/mcl_title/init.lua | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index d1dbece4b..ffdc45639 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -36,7 +36,11 @@ local string = string local pairs = pairs local function gametick_to_secondes(gametick) - return gametick / 20 + if gametick then + return gametick / 20 + else + return nil + end end @@ -46,9 +50,9 @@ local player_params = {} minetest.register_on_joinplayer(function(player) local playername = player:get_player_name() player_params[player] = { - stay = gametick_to_secondes(mcl_title.defaults.stay), - --fadeIn = gametick_to_secondes(mcl_title.defaults.fadein), - --fadeOut = gametick_to_secondes(mcl_title.defaults.fadeout), + stay = mcl_title.defaults.stay, + --fadeIn = mcl_title.defaults.fadein, + --fadeOut = mcl_title.defaults.fadeout, } local _, hex_color = get_color("white") huds_idx.title[player] = player:hud_add({ @@ -106,9 +110,9 @@ end) function mcl_title.params_set(player, data) player_params[player] = { - stay = gametick_to_secondes(data.stay) or gametick_to_secondes(mcl_title.defaults.stay), - --fadeIn = gametick_to_secondes(data.fadeIn) or gametick_to_secondes(mcl_title.defaults.fadein), - --fadeOut = gametick_to_secondes(data.fadeOut) or gametick_to_secondes(mcl_title.defaults.fadeout), + stay = data.stay or mcl_title.defaults.stay, + --fadeIn = data.fadeIn or mcl_title.defaults.fadein, + --fadeOut = data.fadeOut or mcl_title.defaults.fadeout, } end @@ -134,7 +138,7 @@ function mcl_title.set(player, type, data) player:hud_change(huds_idx[type][player], "text", data.text) player:hud_change(huds_idx[type][player], "number", hex_color) - hud_hide_timeouts[type][player:get_player_name()] = gametick_to_secondes(data.stay) or mcl_title.params_get(player).stay + hud_hide_timeouts[type][player:get_player_name()] = gametick_to_secondes(data.stay) or gametick_to_secondes(mcl_title.params_get(player).stay) return true end From 40898d3e9dfeb492ecaca2621308c8c125ef5471 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 16 Aug 2021 14:19:50 +0200 Subject: [PATCH 253/720] WIP bold and italic support --- mods/HUD/mcl_title/init.lua | 38 +++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index ffdc45639..933158d20 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -43,6 +43,23 @@ local function gametick_to_secondes(gametick) end end +--https://github.com/minetest/minetest/blob/b3b075ea02034306256b486dd45410aa765f035a/doc/lua_api.txt#L8477 + +local function style_to_bits(bold, italic) + if bold then + if italic then + return 3 + else + return 1 + end + else + if italic then + return 2 + else + return 0 + end + end +end --PARAMS SYSTEM local player_params = {} @@ -60,8 +77,7 @@ minetest.register_on_joinplayer(function(player) position = mcl_title.layout.title.position, alignment = mcl_title.layout.title.alignment, text = "", - --bold = data.bold, - --italic = data.italic, + style = 0, size = {x = mcl_title.layout.title.size}, number = hex_color, z_index = 100, @@ -71,8 +87,7 @@ minetest.register_on_joinplayer(function(player) position = mcl_title.layout.subtitle.position, alignment = mcl_title.layout.subtitle.alignment, text = "", - --bold = data.bold, - --italic = data.italic, + style = 0, size = {x = mcl_title.layout.subtitle.size}, number = hex_color, z_index = 100, @@ -82,8 +97,7 @@ minetest.register_on_joinplayer(function(player) position = mcl_title.layout.actionbar.position, offset = {x = 0, y = -210}, alignment = mcl_title.layout.actionbar.alignment, - --bold = data.bold, - --italic = data.italic, + style = 0, text = "", size = {x = mcl_title.layout.actionbar.size}, number = hex_color, @@ -131,13 +145,12 @@ function mcl_title.set(player, type, data) return false end - --TODO: enable this code then Fleckenstein's pr get merged (in about 5-6 years lol) - - --if data.bold == nil then data.bold = false end - --if data.italic == nil then data.italic = false end - player:hud_change(huds_idx[type][player], "text", data.text) player:hud_change(huds_idx[type][player], "number", hex_color) + + --apply bold and italic + player:hud_change(huds_idx[type][player], "style", style_to_bits(data.bold, data.italic)) + hud_hide_timeouts[type][player:get_player_name()] = gametick_to_secondes(data.stay) or gametick_to_secondes(mcl_title.params_get(player).stay) return true end @@ -145,6 +158,7 @@ end function mcl_title.remove(player, type) if player then player:hud_change(huds_idx[type][player], "text", "") + player:hud_change(huds_idx[type][player], "style", 0) --no styling end end @@ -184,7 +198,7 @@ end) minetest.register_chatcommand("title", { func = function(name, param) local player = minetest.get_player_by_name(name) - mcl_title.set(player, "title", {text=param, color="gold"}) + mcl_title.set(player, "title", {text=param, color="gold", bold=true, italic=true}) end, }) From df4b8e64cc153ba70457a199661e1e6e92e30bf9 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 19 Aug 2021 19:21:33 +0200 Subject: [PATCH 254/720] finish `mcl_title` API + doc --- mods/HUD/mcl_title/API.md | 8 ++++++ mods/HUD/mcl_title/init.lua | 28 +++++++++++--------- mods/HUD/mcl_tmp_message/API.md | 7 ----- mods/HUD/mcl_tmp_message/init.lua | 44 ------------------------------- mods/HUD/mcl_tmp_message/mod.conf | 3 --- 5 files changed, 23 insertions(+), 67 deletions(-) delete mode 100644 mods/HUD/mcl_tmp_message/API.md delete mode 100644 mods/HUD/mcl_tmp_message/init.lua delete mode 100644 mods/HUD/mcl_tmp_message/mod.conf diff --git a/mods/HUD/mcl_title/API.md b/mods/HUD/mcl_title/API.md index 50614be4f..97d75ece8 100644 --- a/mods/HUD/mcl_title/API.md +++ b/mods/HUD/mcl_title/API.md @@ -39,4 +39,12 @@ Allow mods to set `stay` and upcomming `fadeIn`/`fadeOut` params. ```lua mcl_title.params_set(player, {stay = 600}) --elements with no 'data.stay' field will stay during 30s (600/20) +``` + +## mcl_title.params_get(player) + +Get `stay` and upcomming `fadeIn` and `fadeOut` params of a player as a table. + +```lua +mcl_title.params_get(player) ``` \ No newline at end of file diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index 933158d20..2ea1571c8 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -32,7 +32,7 @@ mcl_title.layout.actionbar = {position = {x = 0.5, y = 1}, alignment = {x = 0, y local get_color = mcl_util.get_color -local string = string +--local string = string local pairs = pairs local function gametick_to_secondes(gametick) @@ -44,7 +44,7 @@ local function gametick_to_secondes(gametick) end --https://github.com/minetest/minetest/blob/b3b075ea02034306256b486dd45410aa765f035a/doc/lua_api.txt#L8477 - +--[[ local function style_to_bits(bold, italic) if bold then if italic then @@ -60,24 +60,25 @@ local function style_to_bits(bold, italic) end end end +]] --PARAMS SYSTEM local player_params = {} minetest.register_on_joinplayer(function(player) - local playername = player:get_player_name() + --local playername = player:get_player_name() player_params[player] = { stay = mcl_title.defaults.stay, --fadeIn = mcl_title.defaults.fadein, --fadeOut = mcl_title.defaults.fadeout, } - local _, hex_color = get_color("white") + local _, hex_color = get_color("white") huds_idx.title[player] = player:hud_add({ hud_elem_type = "text", position = mcl_title.layout.title.position, alignment = mcl_title.layout.title.alignment, text = "", - style = 0, + --style = 0, size = {x = mcl_title.layout.title.size}, number = hex_color, z_index = 100, @@ -87,7 +88,7 @@ minetest.register_on_joinplayer(function(player) position = mcl_title.layout.subtitle.position, alignment = mcl_title.layout.subtitle.alignment, text = "", - style = 0, + --style = 0, size = {x = mcl_title.layout.subtitle.size}, number = hex_color, z_index = 100, @@ -97,7 +98,7 @@ minetest.register_on_joinplayer(function(player) position = mcl_title.layout.actionbar.position, offset = {x = 0, y = -210}, alignment = mcl_title.layout.actionbar.alignment, - style = 0, + --style = 0, text = "", size = {x = mcl_title.layout.actionbar.size}, number = hex_color, @@ -116,7 +117,7 @@ minetest.register_on_leaveplayer(function(player) huds_idx.subtitle[player] = nil huds_idx.actionbar[player] = nil - --remove timers form list + --remove timers from list hud_hide_timeouts.title[playername] = nil hud_hide_timeouts.subtitle[playername] = nil hud_hide_timeouts.actionbar[playername] = nil @@ -149,7 +150,7 @@ function mcl_title.set(player, type, data) player:hud_change(huds_idx[type][player], "number", hex_color) --apply bold and italic - player:hud_change(huds_idx[type][player], "style", style_to_bits(data.bold, data.italic)) + --player:hud_change(huds_idx[type][player], "style", style_to_bits(data.bold, data.italic)) hud_hide_timeouts[type][player:get_player_name()] = gametick_to_secondes(data.stay) or gametick_to_secondes(mcl_title.params_get(player).stay) return true @@ -158,7 +159,7 @@ end function mcl_title.remove(player, type) if player then player:hud_change(huds_idx[type][player], "text", "") - player:hud_change(huds_idx[type][player], "style", 0) --no styling + --player:hud_change(huds_idx[type][player], "style", 0) --no styling end end @@ -193,8 +194,8 @@ minetest.register_globalstep(function(dtime) end) ---TEMP STUFF!! ---TODO: remove then testing/tweaking done +--DEBUG STUFF!! +--[[ minetest.register_chatcommand("title", { func = function(name, param) local player = minetest.get_player_by_name(name) @@ -231,4 +232,5 @@ minetest.register_chatcommand("all", { mcl_title.set(player, "subtitle", {text=param, color="gold"}) mcl_title.set(player, "actionbar", {text=param, color="gold"}) end, -}) \ No newline at end of file +}) +]] \ No newline at end of file diff --git a/mods/HUD/mcl_tmp_message/API.md b/mods/HUD/mcl_tmp_message/API.md deleted file mode 100644 index 0a3fc06a3..000000000 --- a/mods/HUD/mcl_tmp_message/API.md +++ /dev/null @@ -1,7 +0,0 @@ -# mcl_temp_message - -Allow mods to show short messages in the hud of players. - -## mcl_tmp_message.message(player, message) - -Show above the hotbar a hud message to player . \ No newline at end of file diff --git a/mods/HUD/mcl_tmp_message/init.lua b/mods/HUD/mcl_tmp_message/init.lua deleted file mode 100644 index 1456cd592..000000000 --- a/mods/HUD/mcl_tmp_message/init.lua +++ /dev/null @@ -1,44 +0,0 @@ -mcl_tmp_message = {} - -local huds = {} -local hud_hide_timeouts = {} - -function mcl_tmp_message.message(player, message) - local name = player:get_player_name() - player:hud_change(huds[name], "text", message) - hud_hide_timeouts[name] = 3 -end - -minetest.register_on_joinplayer(function(player) - huds[player:get_player_name()] = player:hud_add({ - hud_elem_type = "text", - position = {x=0.5, y=1}, - offset = {x = 0, y = -210}, - alignment = {x=0, y=0}, - number = 0xFFFFFF , - text = "", - z_index = 100, - }) -end) - -minetest.register_on_leaveplayer(function(player) - local name = player:get_player_name() - huds[name] = nil - hud_hide_timeouts[name] = nil -end) - -minetest.register_globalstep(function(dtime) - local new_timeouts = {} - for name, timeout in pairs(hud_hide_timeouts) do - timeout = timeout - dtime - if timeout <= 0 then - local player = minetest.get_player_by_name(name) - if player then - player:hud_change(huds[name], "text", "") - end - else - new_timeouts[name] = timeout - end - end - hud_hide_timeouts = new_timeouts -end) diff --git a/mods/HUD/mcl_tmp_message/mod.conf b/mods/HUD/mcl_tmp_message/mod.conf deleted file mode 100644 index ad453643e..000000000 --- a/mods/HUD/mcl_tmp_message/mod.conf +++ /dev/null @@ -1,3 +0,0 @@ -name = mcl_tmp_message -author = Fleckenstein -description = A simple API to show a temporary message to a player From af8e88f44cad6465e91530b0f87e8588e885cff3 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 24 Aug 2021 08:25:42 +0200 Subject: [PATCH 255/720] fix error in `mcl_title` documentation --- mods/HUD/mcl_title/API.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HUD/mcl_title/API.md b/mods/HUD/mcl_title/API.md index 97d75ece8..37f1c279f 100644 --- a/mods/HUD/mcl_title/API.md +++ b/mods/HUD/mcl_title/API.md @@ -21,7 +21,7 @@ mcl_title.set(player, "subtitle", {text="dummy subtitle", color="#612D2D"}) mcl_title.set(player, "subtitle", {text="dummy actionbar", color="red"}) --show a title in the HUD with minecraft color "gold" staying for 3 seconds (override stay setting) -mcl_title.set(player, "title", {text="dummy text", color="gold", stay=3}) +mcl_title.set(player, "title", {text="dummy text", color="gold", stay=60}) ``` ## mcl_title.remove(player, type) From f0af15fcd8006a66ce91ba3efbf77c24a8e8ffca Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 26 Aug 2021 10:14:57 +0000 Subject: [PATCH 256/720] Make anvil selection/collision box more MC like --- mods/ITEMS/mcl_anvils/init.lua | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index 51b78da6f..e1685c60e 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -284,6 +284,12 @@ local function damage_anvil_by_falling(pos, distance) end end +local anvilbox = { + type = "fixed", + fixed = { + { -8 / 16, -8 / 16, -6 / 16, 8 / 16, 8 / 16, 6 / 16 }, + }, +} local anvildef = { groups = {pickaxey=1, falling_node=1, falling_node_damage=1, crush_after_fall=1, deco_block=1, anvil=1}, tiles = {"mcl_anvils_anvil_top_damaged_0.png^[transformR90", "mcl_anvils_anvil_base.png", "mcl_anvils_anvil_side.png"}, @@ -297,12 +303,14 @@ local anvildef = { node_box = { type = "fixed", fixed = { - { -6/16, -8/16, -6/16, 6/16, -4/16, 6/16 }, - { -5/16, -4/16, -4/16, 5/16, -3/16, 4/16 }, - { -4/16, -3/16, -2/16, 4/16, 2/16, 2/16 }, - { -8/16, 2/16, -5/16, 8/16, 8/16, 5/16 }, + { -6 / 16, -8 / 16, -6 / 16, 6 / 16, -4 / 16, 6 / 16 }, + { -5 / 16, -4 / 16, -4 / 16, 5 / 16, -3 / 16, 4 / 16 }, + { -4 / 16, -3 / 16, -2 / 16, 4 / 16, 2 / 16, 2 / 16 }, + { -8 / 16, 2 / 16, -5 / 16, 8 / 16, 8 / 16, 5 / 16 }, } }, + selection_box = anvilbox, + collision_box = anvilbox, sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1200, _mcl_hardness = 5, From 2b322a451f9ecd71918c9eeb6f40a386d031bfea Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 26 Aug 2021 10:17:15 +0000 Subject: [PATCH 257/720] remove space --- mods/ITEMS/mcl_totems/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index 5f9b254a3..2206fcb2a 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -87,7 +87,7 @@ mcl_damage.register_modifier(function(obj, damage, reason) end end) - -- Big totem overlay + -- Big totem overlay if not hud_totem[obj] then hud_totem[obj] = obj:hud_add({ hud_elem_type = "image", From ca086109bf17787e3a7b075ceb07ccb82810a3bb Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 31 Aug 2021 21:04:57 +0000 Subject: [PATCH 258/720] support tables for `_repair_material` --- mods/ITEMS/mcl_anvils/init.lua | 44 +++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index e1685c60e..d3b32b844 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -53,6 +53,15 @@ local function get_consumed_materials(tool, material) return materials_used end +local function contains(table, value) + for _, i in pairs(table) do + if i == value then + return true + end + end + return false +end + -- Given 2 input stacks, tells you which is the tool and which is the material. -- Returns ("tool", input1, input2) if input1 is tool and input2 is material. -- Returns ("material", input2, input1) if input1 is material and input2 is tool. @@ -60,9 +69,15 @@ end local function distinguish_tool_and_material(input1, input2) local def1 = input1:get_definition() local def2 = input2:get_definition() - if def1.type == "tool" and def1._repair_material then + local r1 = def1._repair_material + local r2 = def2._repair_material + if def1.type == "tool" and r1 and type(r1) == "table" and contains(r1, input2) then return "tool", input1, input2 - elseif def2.type == "tool" and def2._repair_material then + elseif def2.type == "tool" and r2 and type(r2) == "table" and contains(r2, input1) then + return "material", input2, input1 + elseif def1.type == "tool" and r1 then + return "tool", input1, input2 + elseif def2.type == "tool" and r2 then return "material", input2, input1 else return nil @@ -121,11 +136,28 @@ local function update_anvil_slots(meta) local distinguished, tool, material = distinguish_tool_and_material(input1, input2) if distinguished then local tooldef = tool:get_definition() + local repair = tooldef._repair_material local has_correct_material = false - if string.sub(tooldef._repair_material, 1, 6) == "group:" then - has_correct_material = minetest.get_item_group(material:get_name(), string.sub(tooldef._repair_material, 7)) ~= 0 - elseif material:get_name() == tooldef._repair_material then - has_correct_material = true + local material_name = material:get_name() + if type(repair) == "string" then + if string.sub(repair, 1, 6) == "group:" then + has_correct_material = minetest.get_item_group(material_name, string.sub(repair, 7)) ~= 0 + elseif material_name == repair then + has_correct_material = true + end + else + if contains(repair, material_name) then + has_correct_material = true + else + for _, r in pairs(repair) do + if string.sub(r, 1, 6) == "group:" then + if minetest.get_item_group(material_name, string.sub(r, 7)) ~= 0 then + has_correct_material = true + end + + end + end + end end if has_correct_material and tool:get_wear() > 0 then local materials_used = get_consumed_materials(tool, material) From 0da7b3fbda988d11ee79a03ca3c2719d6906e20f Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 2 Sep 2021 20:38:01 +0000 Subject: [PATCH 259/720] Make cactus mechanisms more MC like (Fix #1741) --- mods/ITEMS/mcl_core/functions.lua | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index eceb81c51..af4821c90 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -184,6 +184,7 @@ minetest.register_abm({ end, }) +-- Cactus mechanisms minetest.register_abm({ label = "Cactus growth", nodenames = {"mcl_core:cactus"}, @@ -195,19 +196,31 @@ minetest.register_abm({ end, }) --- Make cactus destroy items minetest.register_abm({ label = "Cactus destroy items", nodenames = {"mcl_core:cactus"}, interval = 1, chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) - for _,object in pairs(minetest.get_objects_inside_radius(pos, 0.9)) do + for _, object in pairs(minetest.get_objects_inside_radius(pos, 0.9)) do local entity = object:get_luaentity() if entity and entity.name == "__builtin:item" then object:remove() end end + local posses = { { 1, 0 }, { -1, 0 }, { 0, 1 }, { 0, -1 } } + for _, p in pairs(posses) do + if minetest.registered_nodes[minetest.get_node(vector.new(pos.x + p[1], pos.y, pos.z + p[2])).name].walkable then + local posy = pos.y + while minetest.get_node(vector.new(pos.x, posy, pos.z)).name == "mcl_core:cactus" do + local pos = vector.new(pos.x, posy, pos.z) + minetest.remove_node(pos) + minetest.add_item(vector.offset(pos, math.random(-0.5, 0.5), 0, math.random(-0.5, 0.5)), "mcl_core:cactus") + posy = posy + 1 + end + break + end + end end, }) From bf62eb33fa97cc345fcab2515b2360cd18b80fbf Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 3 Sep 2021 14:06:21 +0000 Subject: [PATCH 260/720] Change label of cactus abm --- 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 af4821c90..2ef73af72 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -197,7 +197,7 @@ minetest.register_abm({ }) minetest.register_abm({ - label = "Cactus destroy items", + label = "Cactus mechanisms", nodenames = {"mcl_core:cactus"}, interval = 1, chance = 1, From 5fedd914fb110aa8adeed1c3fe633a2c9e25c9e7 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 4 Sep 2021 19:14:08 +0000 Subject: [PATCH 261/720] Fix strange behaviour when filling end portal with bedrock inside (#1749) --- mods/ITEMS/mcl_portals/portal_end.lua | 4 ---- 1 file changed, 4 deletions(-) diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 9f0db352a..e4982c39b 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -391,7 +391,3 @@ minetest.override_item("mcl_end:ender_eye", { return itemstack end, }) -minetest.override_item("mcl_core:bedrock", { - after_destruct = destroy_portal, -}) - From f41cea71fd61473090cd04ac8f206f56b9cd3410 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 6 Sep 2021 13:30:08 +0000 Subject: [PATCH 262/720] Make it possible to use shears in the dispenser for mobs (Fix #1233) --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 53 +++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 7c2c07393..62ed2dc71 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -168,6 +168,59 @@ local dispenserdef = { end inv:set_stack("main", stack_id, stack) + + -- Use shears on sheeps + elseif igroups.shears then + for _, obj in pairs(minetest.get_objects_inside_radius(droppos, 1)) do + local entity = obj:get_luaentity() + if entity and not entity.child and not entity.gotten then + local entname = entity.name + local pos = obj:get_pos() + local used, texture = false + if entname == "mobs_mc:sheep" then + minetest.add_item(pos, entity.drops[2].name .. " " .. math.random(1, 3)) + if not entity.color then + entity.color = "unicolor_white" + end + entity.base_texture = { "blank.png", "mobs_mc_sheep.png" } + texture = entity.base_texture + entity.drops = { + { name = mobs_mc.items.mutton_raw, chance = 1, min = 1, max = 2 }, + } + used = true + elseif entname == "mobs_mc:snowman" then + texture = { + "mobs_mc_snowman.png", + "blank.png", "blank.png", + "blank.png", "blank.png", + "blank.png", "blank.png", + } + used = true + elseif entname == "mobs_mc:mooshroom" then + local droppos = vector.offset(pos, 0, 1.4, 0) + if entity.base_texture[1] == "mobs_mc_mooshroom_brown.png" then + minetest.add_item(droppos, mobs_mc.items.mushroom_brown .. " 5") + else + minetest.add_item(droppos, mobs_mc.items.mushroom_red .. " 5") + end + local oldyaw = obj:get_yaw() + obj:remove() + local cow = minetest.add_entity(pos, "mobs_mc:cow") + cow:set_yaw(oldyaw) + obj = cow + entity = cow:get_luaentity() + used = true + end + if used then + obj:set_properties({ textures = texture }) + entity.gotten = true + minetest.sound_play("mcl_tools_shears_cut", { pos = pos }, true) + stack:add_wear(65535 / stackdef._mcl_diggroups.shearsy.uses) + inv:set_stack("main", stack_id, stack) + end + end + end + -- Spawn Egg elseif igroups.spawn_egg then -- Spawn mob From dc8436fdf95afe224437d5fa6e3c883fa322f2a6 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 6 Sep 2021 14:34:25 +0000 Subject: [PATCH 263/720] Destroy objects near cactus faster (make it possible to throw items at a cactus) --- mods/ENTITIES/mcl_item_entity/init.lua | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index ab1ac5752..7869b9d79 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -575,7 +575,7 @@ minetest.register_entity(":__builtin:item", { return true end, - on_step = function(self, dtime) + on_step = function(self, dtime, moveresult) if self._removed then self.object:set_properties({ physical = false @@ -642,6 +642,18 @@ minetest.register_entity(":__builtin:item", { end end + -- Destroy item when it collides with a cactus + if moveresult and moveresult.collides then + for _, collision in pairs(moveresult.collisions) do + local pos = collision.node_pos + if collision.type == "node" and minetest.get_node(pos).name == "mcl_core:cactus" then + self._removed = true + self.object:remove() + return + end + end + end + -- Push item out when stuck inside solid opaque node if def and def.walkable and def.groups and def.groups.opaque == 1 then local shootdir From 1a5339e907c1b5d572e2fe38a8b4451bf9bfff43 Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 8 Sep 2021 14:22:53 +0000 Subject: [PATCH 264/720] Only use the shears once in dispenser if there are more mobs in front of the dispenser --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 62ed2dc71..82d53c806 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -217,6 +217,7 @@ local dispenserdef = { minetest.sound_play("mcl_tools_shears_cut", { pos = pos }, true) stack:add_wear(65535 / stackdef._mcl_diggroups.shearsy.uses) inv:set_stack("main", stack_id, stack) + break end end end From 89ff666a6a7a456daf22a224f42ba7a34919aeec Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 12 Sep 2021 12:21:18 +0000 Subject: [PATCH 265/720] Add playersSleepingPercentage server setting (Fix #920) --- mods/ITEMS/mcl_beds/functions.lua | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index e196f69ad..fd8a6d7cd 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -9,6 +9,7 @@ local weather_mod = minetest.get_modpath("mcl_weather") local explosions_mod = minetest.get_modpath("mcl_explosions") local spawn_mod = minetest.get_modpath("mcl_spawn") local worlds_mod = minetest.get_modpath("mcl_worlds") +local players_in_bed_setting = tonumber(minetest.settings:get("mcl_playersSleepingPercentage")) -- Helper functions @@ -34,19 +35,10 @@ local function is_night_skip_enabled() end local function check_in_beds(players) - local in_bed = mcl_beds.player if not players then players = minetest.get_connected_players() end - - for n, player in pairs(players) do - local name = player:get_player_name() - if not in_bed[name] then - return false - end - end - - return #players > 0 + return players_in_bed_setting <= (#mcl_beds.player * 100) / #players end -- These monsters do not prevent sleep @@ -198,8 +190,8 @@ end local function update_formspecs(finished, ges) local ges = ges or #minetest.get_connected_players() local form_n = "size[12,5;true]" - local all_in_bed = ges == player_in_bed - local night_skip = is_night_skip_enabled() + local all_in_bed = players_in_bed_setting <= (player_in_bed * 100) / ges + local night_skip = is_night_skip_enabled() and players_in_bed_setting <= 100 local button_leave = "button_exit[4,3;4,0.75;leave;"..F(S("Leave bed")).."]" local button_abort = "button_exit[4,3;4,0.75;leave;"..F(S("Abort sleep")).."]" local bg_presleep = "bgcolor[#00000080;true]" @@ -212,7 +204,7 @@ local function update_formspecs(finished, ges) return elseif not is_sp then local text = S("Players in bed: @1/@2", player_in_bed, ges) - if not night_skip then + if not night_skip or players_in_bed_setting > 100 then text = text .. "\n" .. S("Note: Night skip is disabled.") form_n = form_n .. bg_presleep form_n = form_n .. button_leave @@ -221,7 +213,13 @@ local function update_formspecs(finished, ges) form_n = form_n .. bg_sleep form_n = form_n .. button_abort else - text = text .. "\n" .. S("You will fall asleep when all players are in bed.") + local comment = "You will fall asleep when " + if players_in_bed_setting == 100 then + comment = comment .. "all players are in bed." + else + comment = comment .. players_in_bed_setting .. "% of all players are in bed." + end + text = text .. "\n" .. S(comment) form_n = form_n .. bg_presleep form_n = form_n .. button_leave end From 0bc9ab9233811b508e1aa29c4b1ea421b47fead3 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 12 Sep 2021 12:23:28 +0000 Subject: [PATCH 266/720] Add playersSleepingPercentage setting to settingtypes.txt --- settingtypes.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/settingtypes.txt b/settingtypes.txt index f605019ad..89e11833f 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -33,6 +33,11 @@ mcl_tnt_griefing (TNT destroys blocks) bool true # This setting is only read at startup. enable_bed_respawn (Respawn at bed) bool true +# How many players have to sleep to skip the night, in percent. +# Setting to 0 will mean 1 player is always enough to skip the night. Setting above 100 will prevent skipping the night. +# 100 by default. +mcl_playersSleepingPercentage (Players Sleeping Percentage) int 100 + # If enabled, the night can be skipped if all players are in bed. # This setting is only read at startup. enable_bed_night_skip (Skip night when sleeping) bool true From cd84c472dcb67b32b74397f87c00503b7414fc77 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 12 Sep 2021 12:49:39 +0000 Subject: [PATCH 267/720] Add translation support. --- mods/ITEMS/mcl_beds/functions.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index fd8a6d7cd..01ccec851 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -215,11 +215,11 @@ local function update_formspecs(finished, ges) else local comment = "You will fall asleep when " if players_in_bed_setting == 100 then - comment = comment .. "all players are in bed." + comment = S(comment .. "all players are in bed.") else - comment = comment .. players_in_bed_setting .. "% of all players are in bed." + comment = S(comment .. "@1% of all players are in bed.", players_in_bed_setting) end - text = text .. "\n" .. S(comment) + text = text .. "\n" .. comment form_n = form_n .. bg_presleep form_n = form_n .. button_leave end From 9f9799d96e699a0b64bce5fee061deeb040b3aa4 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 12 Sep 2021 12:50:54 +0000 Subject: [PATCH 268/720] Update template.txt in mcl_beds --- mods/ITEMS/mcl_beds/locale/template.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_beds/locale/template.txt b/mods/ITEMS/mcl_beds/locale/template.txt index 8301dfa33..5525bd91b 100644 --- a/mods/ITEMS/mcl_beds/locale/template.txt +++ b/mods/ITEMS/mcl_beds/locale/template.txt @@ -37,5 +37,6 @@ Players in bed: @1/@2= Note: Night skip is disabled.= You're sleeping.= You will fall asleep when all players are in bed.= +You will fall asleep when @1% of all players are in bed.= You're in bed.= Allows you to sleep= From 410b7c7844b674a062e1726a058e992698b9b34e Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 12 Sep 2021 12:52:26 +0000 Subject: [PATCH 269/720] Update german translation for mcl_beds --- mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr index 16592115e..eb6967941 100644 --- a/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr @@ -37,5 +37,6 @@ Players in bed: @1/@2=Spieler im Bett: @1/@2 Note: Night skip is disabled.=Anmerkung: Überspringen der Nacht deaktiviert. You're sleeping.=Sie schlafen. You will fall asleep when all players are in bed.=Sie werden einschlafen, wenn alle Spieler im Bett sind. +You will fall asleep when @1% of all players are in bed.=Sie werden einschlafen, wenn @1% der Spieler im Bett sind. You're in bed.=Sie sind im Bett. Allows you to sleep=Zum Einschafen From 1c192f4fbbee2089ff72912cf369e8591fd4e481 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 8 Jul 2021 15:34:50 +0200 Subject: [PATCH 270/720] Do not send useless HUDCHANGE packets Several mods set or unset the visibility of a HUD bar way too often (e.g. in a globalstep handler), causing the server to send a lot of superfluous HUDCHANGE packets to each client. Returning from hb.hide_hudbar() early if HUD bar visibility would not change prevents sending these packets. --- mods/HUD/hudbars/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/HUD/hudbars/init.lua b/mods/HUD/hudbars/init.lua index 08f1914ca..505ff403b 100644 --- a/mods/HUD/hudbars/init.lua +++ b/mods/HUD/hudbars/init.lua @@ -425,6 +425,7 @@ function hb.hide_hudbar(player, identifier) local name = player:get_player_name() local hudtable = hb.get_hudtable(identifier) if hudtable == nil then return false end + if hudtable.hudstate[name].hidden == true then return true end if hb.settings.bar_type == "progress_bar" then if hudtable.hudids[name].icon then player:hud_change(hudtable.hudids[name].icon, "scale", {x=0,y=0}) @@ -443,6 +444,7 @@ function hb.unhide_hudbar(player, identifier) local name = player:get_player_name() local hudtable = hb.get_hudtable(identifier) if hudtable == nil then return false end + if hudtable.hudstate[name].hidden == false then return true end local value = hudtable.hudstate[name].value local max = hudtable.hudstate[name].max if hb.settings.bar_type == "progress_bar" then From 95c4d6472bc57c056c5116be88d8f99550ec04b6 Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Sun, 4 Jul 2021 03:25:05 +0200 Subject: [PATCH 271/720] Send FOV packets only when necessary Before this change, about 10 to 30 FOV packets were sent from the server to each connected client each second. This patch only sends FOV packets when the FOV actually needs to be changed, i.e. when the player starts or stops sprinting. --- mods/PLAYER/mcl_sprint/init.lua | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/mods/PLAYER/mcl_sprint/init.lua b/mods/PLAYER/mcl_sprint/init.lua index 73a518c42..4c0d609c9 100644 --- a/mods/PLAYER/mcl_sprint/init.lua +++ b/mods/PLAYER/mcl_sprint/init.lua @@ -69,18 +69,19 @@ local function setSprinting(playerName, sprinting) --Sets the state of a player local controls = player:get_player_control() if players[playerName] then players[playerName].sprinting = sprinting + local fov_old = players[playerName].fov + local fov_new = fov_old + local fade_time = .15 if sprinting == true or controls.RMB and string.find(player:get_wielded_item():get_name(), "mcl_bows:bow") and player:get_wielded_item():get_name() ~= "mcl_bows:bow" then if sprinting == true then - players[playerName].fov = math.min(players[playerName].fov + 0.05, 1.2) - players[playerName].fade_time = .15 + fov_new = math.min(players[playerName].fov + 0.05, 1.2) else - players[playerName].fov = .7 + fov_new = .7 players[playerName].fade_time = .3 end - player:set_fov(players[playerName].fov, true, players[playerName].fade_time) if sprinting == true then playerphysics.add_physics_factor(player, "speed", "mcl_sprint:sprint", mcl_sprint.SPEED) end @@ -88,12 +89,15 @@ local function setSprinting(playerName, sprinting) --Sets the state of a player and player:get_wielded_item():get_name() ~= "mcl_bows:bow_0" and player:get_wielded_item():get_name() ~= "mcl_bows:bow_1" and player:get_wielded_item():get_name() ~= "mcl_bows:bow_2" then - players[playerName].fov = math.max(players[playerName].fov - 0.05, 1.0) - player:set_fov(players[playerName].fov, true, 0.15) + fov_new = math.max(players[playerName].fov - 0.05, 1.0) if sprinting == false then playerphysics.remove_physics_factor(player, "speed", "mcl_sprint:sprint") end end + if fov_new ~= fov_old then + players[playerName].fov = fov_new + player:set_fov(fov_new, true, fade_time) + end return true end return false From 693a5317efd84eeb1141414e0b48930a09bdceec Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 28 Jul 2021 20:44:48 +0200 Subject: [PATCH 272/720] Fix non-serializable item entity unload crash MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some items, like shulkers or books, can have so much metadata that the corresponding item entity can not be serialized by the Minetest engine. Without this patch, dropping such an item and then moving away crashes Minetest, as it can not serialize the entity with serializeString16() when unloading a map block. The patch resets the overlong metadata of non-serializable item entities. This avoids a crash and makes it possible to retrieve a “sanitized” item without metadata when the mapblock containing the item entity is reloaded. Originally sfan5 guessed the maximum possible item entity serialization size that would not lead to a crash as 65530 bytes, but anon5 calculated it to be actually 65487 bytes. This has been experimentally verified by erlehmann. --- mods/ENTITIES/mcl_item_entity/init.lua | 28 +++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 7869b9d79..7a2758ed0 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -480,7 +480,7 @@ minetest.register_entity(":__builtin:item", { end, get_staticdata = function(self) - return minetest.serialize({ + local data = minetest.serialize({ itemstring = self.itemstring, always_collect = self.always_collect, age = self.age, @@ -488,6 +488,32 @@ minetest.register_entity(":__builtin:item", { _flowing = self._flowing, _removed = self._removed, }) + -- sfan5 guessed that the biggest serializable item + -- entity would have a size of 65530 bytes. This has + -- been experimentally verified to be still too large. + -- + -- anon5 has calculated that the biggest serializable + -- item entity has a size of exactly 65487 bytes: + -- + -- 1. serializeString16 can handle max. 65535 bytes. + -- 2. The following engine metadata is always saved: + -- • 1 byte (version) + -- • 2 byte (length prefix) + -- • 14 byte “__builtin:item” + -- • 4 byte (length prefix) + -- • 2 byte (health) + -- • 3 × 4 byte = 12 byte (position) + -- • 4 byte (yaw) + -- • 1 byte (version 2) + -- • 2 × 4 byte = 8 byte (pitch and roll) + -- 3. This leaves 65487 bytes for the serialization. + if #data > 65487 then -- would crash the engine + local stack = ItemStack(self.itemstring) + stack:get_meta():from_table(nil) + self.itemstring = stack:to_string() + return self:get_staticdata() + end + return data end, on_activate = function(self, staticdata, dtime_s) From 256de2bc365466735900dde62c749035ee700843 Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Thu, 29 Jul 2021 15:46:50 +0200 Subject: [PATCH 273/720] Log warning for non-serializable item entity fix --- mods/ENTITIES/mcl_item_entity/init.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 7a2758ed0..cfd141f04 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -511,6 +511,13 @@ minetest.register_entity(":__builtin:item", { local stack = ItemStack(self.itemstring) stack:get_meta():from_table(nil) self.itemstring = stack:to_string() + minetest.log( + "warning", + "Overlong item entity metadata removed: “" .. + self.itemstring .. + "” had serialized length of " .. + #data + ) return self:get_staticdata() end return data From 27e4bd6d09b8a1ea36e9b0120b5aa7b90d16cc5a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sat, 18 Sep 2021 22:28:20 +0200 Subject: [PATCH 274/720] Fix burning entity packet spam - Use upright_sprite for 3rd person flame display, which is both closer to minecraft and allows for client side texture animation - Take care of flame HUD in the MineClone2Client --- mods/ENTITIES/mcl_burning/api.lua | 18 +++-------- mods/ENTITIES/mcl_burning/init.lua | 51 +++++++++++++----------------- 2 files changed, 27 insertions(+), 42 deletions(-) diff --git a/mods/ENTITIES/mcl_burning/api.lua b/mods/ENTITIES/mcl_burning/api.lua index 4cb19cca1..969985205 100644 --- a/mods/ENTITIES/mcl_burning/api.lua +++ b/mods/ENTITIES/mcl_burning/api.lua @@ -67,14 +67,9 @@ function mcl_burning.set_on_fire(obj, burn_time) end if not storage.burn_time or burn_time >= storage.burn_time then - if obj:is_player() and not storage.fire_hud_id then - storage.fire_hud_id = obj:hud_add({ - hud_elem_type = "image", - position = {x = 0.5, y = 0.5}, - scale = {x = -100, y = -100}, - text = "mcl_burning_entity_flame_animated.png^[opacity:180^[verticalframe:" .. mcl_burning.animation_frames .. ":" .. 1, - z_index = 1000, - }) + if obj:is_player() then + mcl_burning.channels[obj]:send_all(tostring(mcl_burning.animation_frames)) + mcl_burning.channels[obj]:send_all("start") end storage.burn_time = burn_time storage.fire_damage_timer = 0 @@ -95,7 +90,6 @@ function mcl_burning.set_on_fire(obj, burn_time) fire_entity:set_properties({visual_size = size}) fire_entity:set_attach(obj, "", offset, {x = 0, y = 0, z = 0}) local fire_luaentity = fire_entity:get_luaentity() - fire_luaentity:update_frame(obj, storage) for _, other in pairs(minetest.get_objects_inside_radius(fire_entity:get_pos(), 0)) do local other_luaentity = other:get_luaentity() @@ -111,9 +105,7 @@ function mcl_burning.extinguish(obj) if mcl_burning.is_burning(obj) then local storage = mcl_burning.get_storage(obj) if obj:is_player() then - if storage.fire_hud_id then - obj:hud_remove(storage.fire_hud_id) - end + mcl_burning.channels[obj]:send_all("stop") mcl_burning.storage[obj] = {} else storage.burn_time = nil @@ -143,4 +135,4 @@ function mcl_burning.tick(obj, dtime, storage) end end end -end \ No newline at end of file +end diff --git a/mods/ENTITIES/mcl_burning/init.lua b/mods/ENTITIES/mcl_burning/init.lua index 34b7ca2d4..313e75dca 100644 --- a/mods/ENTITIES/mcl_burning/init.lua +++ b/mods/ENTITIES/mcl_burning/init.lua @@ -7,6 +7,7 @@ local get_item_group = minetest.get_item_group mcl_burning = { storage = {}, + channels = {}, animation_frames = tonumber(minetest.settings:get("fire_animation_frames")) or 8 } @@ -54,12 +55,11 @@ minetest.register_on_joinplayer(function(player) end mcl_burning.storage[player] = storage + mcl_burning.channels[player] = minetest.mod_channel_join("mcl_burning:" .. player:get_player_name()) end) 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)) + player:get_meta():set_string("mcl_burning:data", minetest.serialize(mcl_burning.storage[player])) mcl_burning.storage[player] = nil end) @@ -68,27 +68,28 @@ minetest.register_entity("mcl_burning:fire", { initial_properties = { physical = false, collisionbox = {0, 0, 0, 0, 0, 0}, - visual = "cube", + visual = "upright_sprite", + textures = { + name = "mcl_burning_entity_flame_animated.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1.0, + }, + }, + spritediv = {x = 1, y = mcl_burning.animation_frames}, pointable = false, glow = -1, backface_culling = false, }, animation_frame = 0, animation_timer = 0, - on_step = function(self, dtime) - local parent, storage = self:sanity_check() - - if parent then - self.animation_timer = self.animation_timer + dtime - if self.animation_timer >= 0.1 then - self.animation_timer = 0 - self.animation_frame = self.animation_frame + 1 - if self.animation_frame > mcl_burning.animation_frames - 1 then - self.animation_frame = 0 - end - self:update_frame(parent, storage) - end - else + on_activate = function(self) + self.object:set_sprite({x = 0, y = 0}, mcl_burning.animation_frames, 1.0 / mcl_burning.animation_frames) + end, + on_step = function(self) + if not self:sanity_check() then self.object:remove() end end, @@ -96,23 +97,15 @@ minetest.register_entity("mcl_burning:fire", { local parent = self.object:get_attach() if not parent then - return + return false end local storage = mcl_burning.get_storage(parent) if not storage or not storage.burn_time then - return + return false end - return parent, storage - end, - update_frame = function(self, parent, storage) - local frame_overlay = "^[opacity:180^[verticalframe:" .. mcl_burning.animation_frames .. ":" .. self.animation_frame - local fire_texture = "mcl_burning_entity_flame_animated.png" .. frame_overlay - self.object:set_properties({textures = {"blank.png", "blank.png", fire_texture, fire_texture, fire_texture, fire_texture}}) - if parent:is_player() then - parent:hud_change(storage.fire_hud_id, "text", "mcl_burning_hud_flame_animated.png" .. frame_overlay) - end + return true end, }) From 0e15accada59737c415a0920e93b65a39e5aa2ae Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 19 Sep 2021 11:15:19 +0000 Subject: [PATCH 275/720] Enable fly in creative mode --- mods/MISC/mcl_privs/init.lua | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index 63694ab11..5a23c00fb 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -3,3 +3,14 @@ local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_privilege("maphack", { description = S("Can place and use advanced blocks like mob spawners, command blocks and barriers."), }) + +minetest.register_on_joinplayer(function(player) + local name = user:get_player_name() + local fly = false + if minetest.is_creative_enabled(name) then + fly = true + end + minetest.set_player_privs(name, { + fly = fly, + }) +end) From 18a83fa5d725c51563a2f35bf818b7c9b9041680 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 19 Sep 2021 11:18:09 +0000 Subject: [PATCH 276/720] Fix typo --- mods/MISC/mcl_privs/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index 5a23c00fb..091ddb65e 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -5,7 +5,7 @@ minetest.register_privilege("maphack", { }) minetest.register_on_joinplayer(function(player) - local name = user:get_player_name() + local name = player:get_player_name() local fly = false if minetest.is_creative_enabled(name) then fly = true From fed43586f202cd71fe374560f90b42bef18361ec Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 19 Sep 2021 11:28:07 +0000 Subject: [PATCH 277/720] fix typo --- mods/MISC/mcl_privs/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index 091ddb65e..1d1465676 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -6,7 +6,7 @@ minetest.register_privilege("maphack", { minetest.register_on_joinplayer(function(player) local name = player:get_player_name() - local fly = false + local fly = nil if minetest.is_creative_enabled(name) then fly = true end From f10d579d9c45bdddb7f2ae1935d74821b9c6a8b3 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 19 Sep 2021 12:07:21 +0000 Subject: [PATCH 278/720] Only change fly priv on join if it wasn't revoked or granted --- mods/MISC/mcl_privs/init.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index 1d1465676..c63f7c5c5 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -6,6 +6,10 @@ minetest.register_privilege("maphack", { minetest.register_on_joinplayer(function(player) local name = player:get_player_name() + + local meta = player:get_meta() + if meta:get_int("fly_changed") == 1 then return end + local fly = nil if minetest.is_creative_enabled(name) then fly = true @@ -14,3 +18,13 @@ minetest.register_on_joinplayer(function(player) fly = fly, }) end) + +for _, action in pairs({ "grant", "revoke" }) do + minetest["register_on_priv_" .. action](function(name, _, priv) + if priv == "fly" then + local player = minetest.get_player_by_name(name) + local meta = player:get_meta() + meta:set_int("fly_changed", 1) + end + end) +end \ No newline at end of file From c6003398b5f4149b3eaffe585fde40e8374c721b Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 19 Sep 2021 13:14:36 +0000 Subject: [PATCH 279/720] Remove chain armor recipes, because villagers spawn now --- mods/MISC/mcl_temp_helper_recipes/init.lua | 34 ---------------------- 1 file changed, 34 deletions(-) diff --git a/mods/MISC/mcl_temp_helper_recipes/init.lua b/mods/MISC/mcl_temp_helper_recipes/init.lua index 420cd6c2e..b7607946d 100644 --- a/mods/MISC/mcl_temp_helper_recipes/init.lua +++ b/mods/MISC/mcl_temp_helper_recipes/init.lua @@ -35,40 +35,6 @@ minetest.register_craft({ }, }) -minetest.register_craft({ - output = "mcl_armor:helmet_chain", - recipe = { - { "xpanes:bar_flat", "mcl_core:iron_ingot", "xpanes:bar_flat" }, - { "xpanes:bar_flat", "", "xpanes:bar_flat" }, - } -}) - -minetest.register_craft({ - output = "mcl_armor:leggings_chain", - recipe = { - { "xpanes:bar_flat", "mcl_core:iron_ingot", "xpanes:bar_flat" }, - { "xpanes:bar_flat", "", "xpanes:bar_flat" }, - { "xpanes:bar_flat", "", "xpanes:bar_flat" }, - } -}) - -minetest.register_craft({ - output = "mcl_armor:boots_chain", - recipe = { - { "xpanes:bar_flat", "", "xpanes:bar_flat" }, - { "xpanes:bar_flat", "", "xpanes:bar_flat" }, - } -}) - -minetest.register_craft({ - output = "mcl_armor:chestplate_chain", - recipe = { - { "xpanes:bar_flat", "", "xpanes:bar_flat" }, - { "xpanes:bar_flat", "mcl_core:iron_ingot", "xpanes:bar_flat" }, - { "xpanes:bar_flat", "xpanes:bar_flat", "xpanes:bar_flat" }, - } -}) - -- Make red sand, red sandstone and more craftable in v6 -- NOTE: When you change these, also update mcl_craftguide for the "v6" icon in -- the craft guide! From 3e54acce9db66ff7d330cbcffe20c8ae8ffcd91a Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 20 Sep 2021 09:47:24 +0200 Subject: [PATCH 280/720] fix emerald help text translation --- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.es.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.fr.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.pl.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.ru.tr | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index 0a1cbad37..b064cebbe 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Smaragd Emerald Ore=Smaragderz Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Smaragderz ist das Erz von Smaragden. Es ist sehr selten und kann nur einzeln gefunden werden, nicht in Ansammlungen. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Smaragde sind nicht besonders nützlich, aber man kann sie in der Fertigung durch Goldbarren eintauschen. +Emeralds are used in villager trades as currency.= Flint=Feuerstein Flint is a raw material.=Feuerstein ist ein Rohstoff. Flowing Lava=Fließende Lava diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr index 1e1029c0f..1937babd3 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Esmeralda Emerald Ore=Mena de esmeralda Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=El mineral esmeralda es el mineral de las esmeraldas. Es muy raro y se puede encontrar solo, no en grupos. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Las esmeraldas no son muy útiles por sí mismas, pero pueden cambiarse por lingotes de oro haciendo artesanías. +Emeralds are used in villager trades as currency.= Flint=Pedernal Flint is a raw material.=El pedernal es una materia prima. Flowing Lava=Lava que fluye diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr index 725025e48..64aadd6db 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Emeraude Emerald Ore=Minerai d'Emeraude Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Le minerai d'émeraude produit des émeraudes. Il est très rare et peut être trouvé seul, pas en filons. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Les émeraudes ne sont pas très utiles seules, mais elles peuvent être échangées contre des lingots d'or. +Emeralds are used in villager trades as currency.=Les émeraudes sont utilisées pour faire des échanges avec les villageois. Flint=Silex Flint is a raw material.=Le silex est une matière première. Flowing Lava=Lave qui coule diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr index 832a47830..68dfbd3d0 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass 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. +Emeralds are used in villager trades as currency.= Flint=Krzemień Flint is a raw material.=Krzemień jest surowym materiałem. Flowing Lava=Płynąca lawa diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr index f93db7c2c..2d5b5462c 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Изумруд Emerald Ore=Изумрудная руда Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Изумрудная руда встречается очень редко и всегда по одному блоку. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Изумруды не очень полезны сами по себе, но их можно обменять на золотые слитки. +Emeralds are used in villager trades as currency.= Flint=Кремень Flint is a raw material.=Кремень это необработанный материал. Flowing Lava=Текущая лава From e0c7e938dea19a3df5efd9fa73b61c85d17640ed Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 20 Sep 2021 07:55:51 +0000 Subject: [PATCH 281/720] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fcore/locale/mcl=5Fcore.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_core/locale/mcl_core.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr index 4d6a3ed43..64aadd6db 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Emeraude Emerald Ore=Minerai d'Emeraude Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Le minerai d'émeraude produit des émeraudes. Il est très rare et peut être trouvé seul, pas en filons. -Emeralds are used in villager trades as currency.=Les émeraudes ne sont pas très utiles seules, mais elles peuvent être échangées contre des lingots d'or. +Emeralds are used in villager trades as currency.=Les émeraudes sont utilisées pour faire des échanges avec les villageois. Flint=Silex Flint is a raw material.=Le silex est une matière première. Flowing Lava=Lave qui coule From e8134345d4476be032117723b5397926ff6d5199 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 20 Sep 2021 07:56:25 +0000 Subject: [PATCH 282/720] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fcore/locale/mcl=5Fcore.de.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index 8b75dfd40..b064cebbe 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Smaragd Emerald Ore=Smaragderz Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Smaragderz ist das Erz von Smaragden. Es ist sehr selten und kann nur einzeln gefunden werden, nicht in Ansammlungen. -Emeralds are used in villager trades as currency.=Smaragde sind nicht besonders nützlich, aber man kann sie in der Fertigung durch Goldbarren eintauschen. +Emeralds are used in villager trades as currency.= Flint=Feuerstein Flint is a raw material.=Feuerstein ist ein Rohstoff. Flowing Lava=Fließende Lava From b2af00db2201f1ddc20c0b9650c983402aaa10b7 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 20 Sep 2021 07:57:04 +0000 Subject: [PATCH 283/720] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fcore/locale/mcl=5Fcore.es.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_core/locale/mcl_core.es.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr index d77f45dc2..1937babd3 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Esmeralda Emerald Ore=Mena de esmeralda Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=El mineral esmeralda es el mineral de las esmeraldas. Es muy raro y se puede encontrar solo, no en grupos. -Emeralds are used in villager trades as currency.=Las esmeraldas no son muy útiles por sí mismas, pero pueden cambiarse por lingotes de oro haciendo artesanías. +Emeralds are used in villager trades as currency.= Flint=Pedernal Flint is a raw material.=El pedernal es una materia prima. Flowing Lava=Lava que fluye From e36a8c5acf48d473db9ae5807b176b94a779e15c Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 20 Sep 2021 07:58:25 +0000 Subject: [PATCH 284/720] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fcore/locale/mcl=5Fcore.pl.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_core/locale/mcl_core.pl.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr index f8dbbde6b..68dfbd3d0 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass 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 used in villager trades as currency.=Szmaragdy nie są zbyt użyteczne same w sobie, ale można z nich wytworzyć sztabki złota. +Emeralds are used in villager trades as currency.= Flint=Krzemień Flint is a raw material.=Krzemień jest surowym materiałem. Flowing Lava=Płynąca lawa From b0cf07a020ba353545465b8909fd88ad8725c4cd Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 20 Sep 2021 07:59:00 +0000 Subject: [PATCH 285/720] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fcore/locale/mcl=5Fcore.ru.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_core/locale/mcl_core.ru.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr index ad9d863b2..2d5b5462c 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Изумруд Emerald Ore=Изумрудная руда Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Изумрудная руда встречается очень редко и всегда по одному блоку. -Emeralds are used in villager trades as currency.=Изумруды не очень полезны сами по себе, но их можно обменять на золотые слитки. +Emeralds are used in villager trades as currency.= Flint=Кремень Flint is a raw material.=Кремень это необработанный материал. Flowing Lava=Текущая лава From 89e90b13eb53085a801c37c639a796a0a917cac0 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 20 Sep 2021 14:16:59 +0000 Subject: [PATCH 286/720] Use on_newplayer --- mods/MISC/mcl_privs/init.lua | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index c63f7c5c5..302557f86 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -4,12 +4,9 @@ minetest.register_privilege("maphack", { description = S("Can place and use advanced blocks like mob spawners, command blocks and barriers."), }) -minetest.register_on_joinplayer(function(player) +minetest.register_on_newplayer(function(player) local name = player:get_player_name() - local meta = player:get_meta() - if meta:get_int("fly_changed") == 1 then return end - local fly = nil if minetest.is_creative_enabled(name) then fly = true @@ -18,13 +15,3 @@ minetest.register_on_joinplayer(function(player) fly = fly, }) end) - -for _, action in pairs({ "grant", "revoke" }) do - minetest["register_on_priv_" .. action](function(name, _, priv) - if priv == "fly" then - local player = minetest.get_player_by_name(name) - local meta = player:get_meta() - meta:set_int("fly_changed", 1) - end - end) -end \ No newline at end of file From df1d8077e6123cef815bc4f30dd02838b9b84dec Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 21 Sep 2021 18:07:36 +0000 Subject: [PATCH 287/720] Some fixes for mcl_beds - remove enable_bed_night_skip setting (mcl_playersSleepingPercentage setting can be used to enable disable night skip) - make it possible to change mcl_playersSleepingPercentage ingame - fix weird bug which allowed only numbers <= 0 --- mods/ITEMS/mcl_beds/functions.lua | 39 +++++++++++++++---------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index 01ccec851..e7306b40a 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -9,36 +9,36 @@ local weather_mod = minetest.get_modpath("mcl_weather") local explosions_mod = minetest.get_modpath("mcl_explosions") local spawn_mod = minetest.get_modpath("mcl_spawn") local worlds_mod = minetest.get_modpath("mcl_worlds") -local players_in_bed_setting = tonumber(minetest.settings:get("mcl_playersSleepingPercentage")) -- Helper functions local function get_look_yaw(pos) local n = minetest.get_node(pos) - if n.param2 == 1 then - return math.pi / 2, n.param2 - elseif n.param2 == 3 then - return -math.pi / 2, n.param2 - elseif n.param2 == 0 then - return math.pi, n.param2 + local param = n.param2 + if param == 1 then + return math.pi / 2, param + elseif param == 3 then + return -math.pi / 2, param + elseif param == 0 then + return math.pi, param else - return 0, n.param2 + return 0, param end end +local function players_in_bed_setting() + return tonumber(minetest.settings:get("mcl_playersSleepingPercentage")) +end + local function is_night_skip_enabled() - local enable_night_skip = minetest.settings:get_bool("enable_bed_night_skip") - if enable_night_skip == nil then - enable_night_skip = true - end - return enable_night_skip + return players_in_bed_setting() <= 100 end local function check_in_beds(players) if not players then players = minetest.get_connected_players() end - return players_in_bed_setting <= (#mcl_beds.player * 100) / #players + return players_in_bed_setting() <= (player_in_bed * 100) / #players end -- These monsters do not prevent sleep @@ -190,8 +190,8 @@ end local function update_formspecs(finished, ges) local ges = ges or #minetest.get_connected_players() local form_n = "size[12,5;true]" - local all_in_bed = players_in_bed_setting <= (player_in_bed * 100) / ges - local night_skip = is_night_skip_enabled() and players_in_bed_setting <= 100 + local all_in_bed = players_in_bed_setting() <= (player_in_bed * 100) / ges + local night_skip = is_night_skip_enabled() local button_leave = "button_exit[4,3;4,0.75;leave;"..F(S("Leave bed")).."]" local button_abort = "button_exit[4,3;4,0.75;leave;"..F(S("Abort sleep")).."]" local bg_presleep = "bgcolor[#00000080;true]" @@ -204,7 +204,7 @@ local function update_formspecs(finished, ges) return elseif not is_sp then local text = S("Players in bed: @1/@2", player_in_bed, ges) - if not night_skip or players_in_bed_setting > 100 then + if not night_skip then text = text .. "\n" .. S("Note: Night skip is disabled.") form_n = form_n .. bg_presleep form_n = form_n .. button_leave @@ -214,10 +214,10 @@ local function update_formspecs(finished, ges) form_n = form_n .. button_abort else local comment = "You will fall asleep when " - if players_in_bed_setting == 100 then + if players_in_bed_setting() == 100 then comment = S(comment .. "all players are in bed.") else - comment = S(comment .. "@1% of all players are in bed.", players_in_bed_setting) + comment = S(comment .. "@1% of all players are in bed.", players_in_bed_setting()) end text = text .. "\n" .. comment form_n = form_n .. bg_presleep @@ -347,7 +347,6 @@ function mcl_beds.on_rightclick(pos, player, is_top) end end - -- Callbacks minetest.register_on_joinplayer(function(player) local meta = player:get_meta() From 71f448537cb523c9f8287b630ccce6f1ddd91cca Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 21 Sep 2021 18:14:24 +0000 Subject: [PATCH 288/720] Remove unused setting from settingtypes.txt --- settingtypes.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/settingtypes.txt b/settingtypes.txt index 89e11833f..542711675 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -36,11 +36,9 @@ enable_bed_respawn (Respawn at bed) bool true # How many players have to sleep to skip the night, in percent. # Setting to 0 will mean 1 player is always enough to skip the night. Setting above 100 will prevent skipping the night. # 100 by default. +# The setting can be changed ingame using `/set mcl_playersSleepingPercentage ` mcl_playersSleepingPercentage (Players Sleeping Percentage) int 100 -# If enabled, the night can be skipped if all players are in bed. -# This setting is only read at startup. -enable_bed_night_skip (Skip night when sleeping) bool true # Normally, players drop all their items when they die. Enable this # setting, so players always keep their inventory on death. mcl_keepInventory (Keep inventory on death) bool false From e83438e42cb677e6336f52e5e17973fcbef5663c Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 21 Sep 2021 18:19:07 +0000 Subject: [PATCH 289/720] Update mcl_bed README.txt --- mods/ITEMS/mcl_beds/README.txt | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/mods/ITEMS/mcl_beds/README.txt b/mods/ITEMS/mcl_beds/README.txt index cda6ebd92..34b493702 100644 --- a/mods/ITEMS/mcl_beds/README.txt +++ b/mods/ITEMS/mcl_beds/README.txt @@ -12,15 +12,7 @@ Authors of media (textures) BlockMen (CC BY-SA 3.0) This mod adds a bed to Minetest which allows to skip the night. -To sleep, rightclick the bed. If playing in singleplayer mode the night gets skipped -immediately. If playing multiplayer you get shown how many other players are in bed too, -if all players are sleeping the night gets skipped. The night skip can be forced if more -than 50% of the players are lying in bed and use this option. - -Another feature is a controlled respawning. If you have slept in bed (not just lying in -it) your respawn point is set to the beds location and you will respawn there after +To sleep, rightclick the bed. +Another feature is a controlled respawning. If you have slept in bed your respawn point is set to the beds location and you will respawn there after death. -You can disable the respawn at beds by setting "enable_bed_respawn = false" in -minetest.conf. -You can disable the night skip feature by setting "enable_bed_night_skip = false" in -minetest.conf or by using the /set command in-game. +Use the mcl_playersSleepingPercentage setting to enable/disable night skipping or set a percentage of how many players need to sleep to skip the night. \ No newline at end of file From 8697b38d60325f289eb75fd19b83e86e877946bc Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 27 Sep 2021 20:00:11 +0000 Subject: [PATCH 290/720] Remove on_newplayer ... --- mods/MISC/mcl_privs/init.lua | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index 302557f86..c63f7c5c5 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -4,9 +4,12 @@ minetest.register_privilege("maphack", { description = S("Can place and use advanced blocks like mob spawners, command blocks and barriers."), }) -minetest.register_on_newplayer(function(player) +minetest.register_on_joinplayer(function(player) local name = player:get_player_name() + local meta = player:get_meta() + if meta:get_int("fly_changed") == 1 then return end + local fly = nil if minetest.is_creative_enabled(name) then fly = true @@ -15,3 +18,13 @@ minetest.register_on_newplayer(function(player) fly = fly, }) end) + +for _, action in pairs({ "grant", "revoke" }) do + minetest["register_on_priv_" .. action](function(name, _, priv) + if priv == "fly" then + local player = minetest.get_player_by_name(name) + local meta = player:get_meta() + meta:set_int("fly_changed", 1) + end + end) +end \ No newline at end of file From 03be73656648136fdabff2dd68c6e44ed184f475 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 27 Sep 2021 20:13:12 +0000 Subject: [PATCH 291/720] Dont skip night if no players are in bed --- mods/ITEMS/mcl_beds/functions.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index e7306b40a..e2bece033 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -38,6 +38,9 @@ local function check_in_beds(players) if not players then players = minetest.get_connected_players() end + if player_in_bed < 0 then + return false + end return players_in_bed_setting() <= (player_in_bed * 100) / #players end From 16c73c1cb652b02f77e6140e9ad41f602d5f29aa Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 28 Sep 2021 13:16:19 +0000 Subject: [PATCH 292/720] Add forgotten `=` --- mods/ITEMS/mcl_beds/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index e2bece033..062219294 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -38,7 +38,7 @@ local function check_in_beds(players) if not players then players = minetest.get_connected_players() end - if player_in_bed < 0 then + if player_in_bed <= 0 then return false end return players_in_bed_setting() <= (player_in_bed * 100) / #players From e9437e9e1e623a493ecf2abbac91fefd775c5aa4 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 29 Sep 2021 21:06:51 +0200 Subject: [PATCH 293/720] fix crash then using function in `_mcl_armor_[texture, preview]` tool field --- mods/ITEMS/mcl_enchanting/engine.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index d2a749947..6050aeed2 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -270,8 +270,14 @@ function mcl_enchanting.initialize() new_def.groups.not_in_creative_inventory = 1 new_def.groups.not_in_craft_guide = 1 new_def.groups.enchanted = 1 - new_def._mcl_armor_texture = new_def._mcl_armor_texture and new_def._mcl_armor_texture .. mcl_enchanting.overlay - new_def._mcl_armor_preview = new_def._mcl_armor_preview and new_def._mcl_armor_preview .. mcl_enchanting.overlay + + if new_def._mcl_armor_texture and not type(new_def._mcl_armor_texture) == "function" then + new_def._mcl_armor_texture = new_def._mcl_armor_texture .. mcl_enchanting.overlay + end + if new_def._mcl_armor_preview and not type(new_def._mcl_armor_preview) == "function" then + new_def._mcl_armor_preview = new_def._mcl_armor_preview .. mcl_enchanting.overlay + end + new_def._mcl_enchanting_enchanted_tool = new_name new_def.after_use = get_after_use_callback(itemdef) local register_list = register_item_list From a410d173069baf3d38f5fe5a704e4db562e5dd8a Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 30 Sep 2021 20:14:13 +0000 Subject: [PATCH 294/720] Fix that all of new players' default_privs are removed --- mods/MISC/mcl_privs/init.lua | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index c63f7c5c5..f06ff3582 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -6,7 +6,6 @@ minetest.register_privilege("maphack", { minetest.register_on_joinplayer(function(player) local name = player:get_player_name() - local meta = player:get_meta() if meta:get_int("fly_changed") == 1 then return end @@ -14,12 +13,12 @@ minetest.register_on_joinplayer(function(player) if minetest.is_creative_enabled(name) then fly = true end - minetest.set_player_privs(name, { - fly = fly, - }) + local player_privs = minetest.get_player_privs(name) + player_privs.fly = fly + minetest.set_player_privs(name, player_privs) end) -for _, action in pairs({ "grant", "revoke" }) do +for _, action in pairs({"grant", "revoke"}) do minetest["register_on_priv_" .. action](function(name, _, priv) if priv == "fly" then local player = minetest.get_player_by_name(name) From 8e3f9d216944d258cd385223db037ef1882deb63 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 09:22:27 +0000 Subject: [PATCH 295/720] add basic lightning API --- mods/ENVIRONMENT/lightning/init.lua | 75 ++++++++++++++++++----------- 1 file changed, 46 insertions(+), 29 deletions(-) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 3d5955d6e..3230f0b0a 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -24,13 +24,14 @@ local get_objects_inside_radius = minetest.get_objects_inside_radius local get_item_group = minetest.get_item_group lightning = { - interval_low = 17, - interval_high = 503, - range_h = 100, - range_v = 50, - size = 100, - -- disable this to stop lightning mod from striking - auto = true, + interval_low = 17, + interval_high = 503, + range_h = 100, + range_v = 50, + size = 100, + -- disable this to stop lightning mod from striking + auto = true, + on_strike_functions = {}, } local rng = PcgRandom(32321123312123) @@ -54,6 +55,18 @@ end minetest.register_globalstep(revertsky) +-- lightning strike API + +-- See README.md +--[[ + lightning.register_on_strike(function(pos, pos2, objects) + -- code + end) +]] +function lightning.register_on_strike(func) + table.insert(lightning.on_strike_functions, func) +end + -- select a random strike point, midpoint local function choose_pos(pos) if not pos then @@ -79,14 +92,14 @@ local function choose_pos(pos) pos.z = math.floor(pos.z - (lightning.range_h / 2) + rng:next(1, lightning.range_h)) end - local b, pos2 = line_of_sight(pos, {x = pos.x, y = pos.y - lightning.range_v, z = pos.z}, 1) + local b, pos2 = line_of_sight(pos, { x = pos.x, y = pos.y - lightning.range_v, z = pos.z }, 1) -- nothing but air found if b then return nil, nil end - local n = get_node({x = pos2.x, y = pos2.y - 1/2, z = pos2.z}) + local n = get_node({ x = pos2.x, y = pos2.y - 1/2, z = pos2.z }) if n.name == "air" or n.name == "ignore" then return nil, nil end @@ -94,7 +107,6 @@ local function choose_pos(pos) return pos, pos2 end --- lightning strike API -- * pos: optional, if not given a random pos will be chosen -- * returns: bool - success if a strike happened function lightning.strike(pos) @@ -108,21 +120,30 @@ function lightning.strike(pos) if not pos then return false end + local objects = get_objects_inside_radius(pos2, 3.5) + if lightning.on_strike_functions then + for _, func in pairs(lightning.on_strike_functions) do + func(pos, pos2, objects) + end + end +end + + +lightning.register_on_strike(function(pos, pos2, objects) + local particle_pos = vector.offset(pos2, 0, (lightning.size / 2) + 0.5, 0) + local particle_size = lightning.size * 10 + local time = 0.2 add_particlespawner({ amount = 1, - time = 0.2, + time = time, -- make it hit the top of a block exactly with the bottom - minpos = {x = pos2.x, y = pos2.y + (lightning.size / 2) + 1/2, z = pos2.z }, - maxpos = {x = pos2.x, y = pos2.y + (lightning.size / 2) + 1/2, z = pos2.z }, - minvel = {x = 0, y = 0, z = 0}, - maxvel = {x = 0, y = 0, z = 0}, - minacc = {x = 0, y = 0, z = 0}, - maxacc = {x = 0, y = 0, z = 0}, - minexptime = 0.2, - maxexptime = 0.2, - minsize = lightning.size * 10, - maxsize = lightning.size * 10, + minpos = particle_pos, + maxpos = particle_pos, + minexptime = time, + maxexptime = time, + minsize = particle_size, + maxsize = particle_size, collisiondetection = true, vertical = true, -- to make it appear hitting the node that will get set on fire, make sure @@ -135,10 +156,7 @@ function lightning.strike(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] + for _, obj in pairs(objects) do local lua = obj:get_luaentity() -- pig → zombie pigman (no damage) if lua and lua.name == "mobs_mc:pig" then @@ -155,7 +173,7 @@ function lightning.strike(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. --[[ @@ -172,7 +190,7 @@ function lightning.strike(pos) obj:set_yaw(rot) -- Other objects: Just damage else - mcl_util.deal_damage(obj, 5, {type = "lightning_bolt"}) + mcl_util.deal_damage(obj, 5, { type = "lightning_bolt" }) end end @@ -223,8 +241,7 @@ function lightning.strike(pos) end end end - -end +end) -- if other mods disable auto lightning during initialization, don't trigger the first lightning. after(5, function(dtime) From e4af02ea526ef32da38ca7094f13b1c7c128bc83 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 09:54:58 +0000 Subject: [PATCH 296/720] Add function to replace mobs --- mods/CORE/mcl_util/init.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index a7504af08..363b9b5fe 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -538,3 +538,12 @@ function mcl_util.get_object_name(object) return luaentity.nametag and luaentity.nametag ~= "" and luaentity.nametag or luaentity.description or luaentity.name end end + +function mcl_util.replace_mob(obj, mob) + local rot = obj:get_yaw() + local pos = obj:get_pos() + obj:remove() + obj = minetest.add_entity(pos, mob) + obj:set_yaw(rot) + return obj +end From 463fe2af5f3343dcecefec9eb5147f34ec04cb3d Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 09:57:36 +0000 Subject: [PATCH 297/720] use mcl_util.replace_mob function to simplify lightning code --- mods/ENVIRONMENT/lightning/init.lua | 38 +++++++---------------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 3230f0b0a..5568e63fc 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -128,8 +128,6 @@ function lightning.strike(pos) end end - - lightning.register_on_strike(function(pos, pos2, objects) local particle_pos = vector.offset(pos2, 0, (lightning.size / 2) + 0.5, 0) local particle_size = lightning.size * 10 @@ -158,37 +156,19 @@ lightning.register_on_strike(function(pos, pos2, objects) -- damage nearby objects, transform mobs for _, obj in pairs(objects) do local lua = obj:get_luaentity() - -- pig → zombie pigman (no damage) if lua and lua.name == "mobs_mc:pig" then - local rot = obj:get_yaw() - obj:remove() - obj = add_entity(pos2, "mobs_mc:pigman") - obj:set_yaw(rot) - -- mooshroom: toggle color red/brown (no damage) + mcl_util.replace_mob(obj, "mobs_mc:pigman") elseif lua and lua.name == "mobs_mc:mooshroom" then if lua.base_texture[1] == "mobs_mc_mooshroom.png" then lua.base_texture = { "mobs_mc_mooshroom_brown.png", "mobs_mc_mushroom_brown.png" } else lua.base_texture = { "mobs_mc_mooshroom.png", "mobs_mc_mushroom_red.png" } end - obj:set_properties({textures = lua.base_texture}) - -- villager → witch (no damage) - -- elseif lua and lua.name == "mobs_mc:villager" then - -- Witches are incomplete, this code is unused - -- TODO: Enable this code when witches are working. - --[[ - local rot = obj:get_yaw() - obj:remove() - obj = minetest.add_entity(pos2, "mobs_mc:witch") - obj:set_yaw(rot) - ]] - -- charged creeper + obj:set_properties({ textures = lua.base_texture }) + elseif lua and lua.name == "mobs_mc:villager" then + mcl_util.replace_mob(obj, "mobs_mc:witch") elseif lua and lua.name == "mobs_mc:creeper" then - local rot = obj:get_yaw() - obj:remove() - obj = add_entity(pos2, "mobs_mc:creeper_charged") - obj:set_yaw(rot) - -- Other objects: Just damage + mcl_util.replace_mob(obj, "mobs_mc:creeper_charged") else mcl_util.deal_damage(obj, 5, { type = "lightning_bolt" }) end @@ -204,7 +184,7 @@ lightning.register_on_strike(function(pos, pos2, objects) local name = player:get_player_name() if ps[name] == nil then ps[name] = {p = player, sky = sky} - mcl_weather.skycolor.add_layer("lightning", {{r=255,g=255,b=255}}, true) + mcl_weather.skycolor.add_layer("lightning", { { r = 255, g = 255, b = 255 } }, true) mcl_weather.skycolor.active = true end end @@ -219,7 +199,7 @@ lightning.register_on_strike(function(pos, pos2, objects) if rng:next(1,100) <= 3 then skeleton_lightning = true end - if get_item_group(get_node({x = pos2.x, y = pos2.y - 1, z = pos2.z}).name, "liquid") < 1 then + if get_item_group(get_node({ x = pos2.x, y = pos2.y - 1, z = pos2.z }).name, "liquid") < 1 then if get_node(pos2).name == "air" then -- Low chance for a lightning to spawn skeleton horse + skeletons if skeleton_lightning then @@ -228,7 +208,7 @@ lightning.register_on_strike(function(pos, pos2, objects) local angle, posadd angle = math.random(0, math.pi*2) for i=1,3 do - posadd = {x=math.cos(angle),y=0,z=math.sin(angle)} + posadd = { x=math.cos(angle),y=0,z=math.sin(angle) } posadd = vector.normalize(posadd) local mob = add_entity(vector.add(pos2, posadd), "mobs_mc:skeleton") mob:set_yaw(angle-math.pi/2) @@ -237,7 +217,7 @@ lightning.register_on_strike(function(pos, pos2, objects) -- Cause a fire else - set_node(pos2, {name = "mcl_fire:fire"}) + set_node(pos2, { name = "mcl_fire:fire" }) end end end From fe91d7f3e0a5c629cb1f3abad593671ee851ee39 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 10:07:45 +0000 Subject: [PATCH 298/720] use mcl_util.replace_mob function to simplify dispenser code --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 82d53c806..47acacbb9 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -203,12 +203,8 @@ local dispenserdef = { else minetest.add_item(droppos, mobs_mc.items.mushroom_red .. " 5") end - local oldyaw = obj:get_yaw() - obj:remove() - local cow = minetest.add_entity(pos, "mobs_mc:cow") - cow:set_yaw(oldyaw) - obj = cow - entity = cow:get_luaentity() + obj = mcl_util.replace_mob(obj, "mobs_mc:cow") + entity = obj:get_luaentity() used = true end if used then From 9188467a6adfdc6bd8edfeb8f156c510ce7ab1b0 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 12:31:19 +0000 Subject: [PATCH 299/720] add API.md for lightning mod --- mods/ENVIRONMENT/lightning/API.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 mods/ENVIRONMENT/lightning/API.md diff --git a/mods/ENVIRONMENT/lightning/API.md b/mods/ENVIRONMENT/lightning/API.md new file mode 100644 index 000000000..6a4dd11cf --- /dev/null +++ b/mods/ENVIRONMENT/lightning/API.md @@ -0,0 +1,31 @@ +# lightning +Lightning mod for MineClone2 with the following API: + +## lightning.register_on_strike(function(pos, pos2, objects)) +Custom function called when a lightning strikes. + +* `pos`: impact position +* `pos2`: rounded node position where fire is placed +* `objects`: table with ObjectRefs of all objects within a radius of 3.5 around pos2 + +## lightning.strike(pos) +Let a lightning strike. + +* pos: optional, if not given a random pos will be chosen +* returns: bool - success if a strike happened + + +### Examples: + +``` +lightning.register_on_strike(function(pos, pos2, objects) + for _, obj in pairs(objects) do + obj:remove() + end + minetest.add_entity(pos, "mobs_mc:sheep") +end) + +minetest.register_on_respawnplayer(function(player) + lightning.strike(player:get_pos()) +end) +``` \ No newline at end of file From 72ea9069bd848eb4bcbd030bc32b859370c5cef5 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 12:35:05 +0000 Subject: [PATCH 300/720] correct lightning API.md a bit --- mods/ENVIRONMENT/lightning/API.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ENVIRONMENT/lightning/API.md b/mods/ENVIRONMENT/lightning/API.md index 6a4dd11cf..ad4f0a3b4 100644 --- a/mods/ENVIRONMENT/lightning/API.md +++ b/mods/ENVIRONMENT/lightning/API.md @@ -11,8 +11,8 @@ Custom function called when a lightning strikes. ## lightning.strike(pos) Let a lightning strike. -* pos: optional, if not given a random pos will be chosen -* returns: bool - success if a strike happened +* `pos`: optional, if not given a random pos will be chosen +* `returns`: bool - success if a strike happened ### Examples: From 03829dd51884c92fae3d8ee0dd04f3dad1155dec Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 12:35:50 +0000 Subject: [PATCH 301/720] fix typo --- mods/ENVIRONMENT/lightning/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 5568e63fc..b234092af 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -57,7 +57,7 @@ minetest.register_globalstep(revertsky) -- lightning strike API --- See README.md +-- See API.md --[[ lightning.register_on_strike(function(pos, pos2, objects) -- code From 0584d16569103bb5cd15c5e5041efb842d5b8784 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 13:21:33 +0000 Subject: [PATCH 302/720] add lightning API support for mobs --- mods/ENVIRONMENT/lightning/init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index b234092af..83494462f 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -156,6 +156,10 @@ lightning.register_on_strike(function(pos, pos2, objects) -- damage nearby objects, transform mobs for _, obj in pairs(objects) do local lua = obj:get_luaentity() + if lua and lua._on_strike then + lua._on_strike(lua, pos, pos2, objects) + end + -- remove this when mob API is done if lua and lua.name == "mobs_mc:pig" then mcl_util.replace_mob(obj, "mobs_mc:pigman") elseif lua and lua.name == "mobs_mc:mooshroom" then From 9ccf8de606c4ce4e6b903ac3ce6727d01f3d5160 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 9 Oct 2021 14:41:56 +0000 Subject: [PATCH 303/720] Fix crash on startup if mcl_playersSleepingPercentage is not defined (#1874) --- mods/ITEMS/mcl_beds/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index 062219294..b8478fc1f 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -27,7 +27,7 @@ local function get_look_yaw(pos) end local function players_in_bed_setting() - return tonumber(minetest.settings:get("mcl_playersSleepingPercentage")) + return tonumber(minetest.settings:get("mcl_playersSleepingPercentage")) or 100 end local function is_night_skip_enabled() From 1c458a2e7258565e0d98050263cf98ec17607c71 Mon Sep 17 00:00:00 2001 From: epCode Date: Fri, 15 Oct 2021 12:00:37 -0700 Subject: [PATCH 304/720] Add crossbows --- mods/ITEMS/mcl_bows/arrow.lua | 6 +- mods/ITEMS/mcl_bows/crossbow.lua | 454 ++++++++ mods/ITEMS/mcl_bows/init.lua | 6 + .../ITEMS/mcl_bows/models/mcl_bows_rocket.b3d | Bin 0 -> 11758 bytes .../ITEMS/mcl_bows/models/mcl_bows_rocket.mtl | 10 + .../ITEMS/mcl_bows/models/mcl_bows_rocket.obj | 1016 +++++++++++++++++ mods/ITEMS/mcl_bows/rocket.lua | 706 ++++++++++++ .../sounds/mcl_bows_crossbow_drawback_0.ogg | Bin 0 -> 13529 bytes .../sounds/mcl_bows_crossbow_drawback_1.ogg | Bin 0 -> 13401 bytes .../sounds/mcl_bows_crossbow_drawback_2.ogg | Bin 0 -> 10139 bytes .../sounds/mcl_bows_crossbow_load.ogg | Bin 0 -> 7627 bytes .../sounds/mcl_bows_crossbow_shoot.ogg | Bin 0 -> 9767 bytes .../mcl_bows/sounds/mcl_bows_firework.ogg | Bin 0 -> 42143 bytes .../sounds/mcl_bows_firework_soft.ogg | Bin 0 -> 55786 bytes .../mcl_bows/textures/mcl_bows_crossbow.png | Bin 0 -> 2311 bytes .../mcl_bows/textures/mcl_bows_crossbow_0.png | Bin 0 -> 2369 bytes .../mcl_bows/textures/mcl_bows_crossbow_1.png | Bin 0 -> 2383 bytes .../mcl_bows/textures/mcl_bows_crossbow_2.png | Bin 0 -> 2362 bytes .../mcl_bows/textures/mcl_bows_crossbow_3.png | Bin 0 -> 2794 bytes .../textures/mcl_bows_firework_blue.png | Bin 0 -> 630 bytes .../textures/mcl_bows_firework_green.png | Bin 0 -> 627 bytes .../textures/mcl_bows_firework_red.png | Bin 0 -> 622 bytes .../textures/mcl_bows_firework_white.png | Bin 0 -> 1577 bytes .../textures/mcl_bows_firework_yellow.png | Bin 0 -> 1717 bytes .../mcl_bows/textures/mcl_bows_rocket.png | Bin 0 -> 2133 bytes .../textures/mcl_bows_rocket_particle.png | Bin 0 -> 4675 bytes mods/ITEMS/mcl_enchanting/enchantments.lua | 14 +- mods/ITEMS/mcl_mobspawners/init.lua | 3 +- mods/ITEMS/mcl_potions/tipped_arrow.lua | 2 +- mods/PLAYER/mcl_player/init.lua | 6 +- mods/PLAYER/mcl_playerplus/init.lua | 13 + 31 files changed, 2221 insertions(+), 15 deletions(-) create mode 100644 mods/ITEMS/mcl_bows/crossbow.lua create mode 100644 mods/ITEMS/mcl_bows/models/mcl_bows_rocket.b3d create mode 100644 mods/ITEMS/mcl_bows/models/mcl_bows_rocket.mtl create mode 100644 mods/ITEMS/mcl_bows/models/mcl_bows_rocket.obj create mode 100644 mods/ITEMS/mcl_bows/rocket.lua create mode 100644 mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_drawback_0.ogg create mode 100644 mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_drawback_1.ogg create mode 100644 mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_drawback_2.ogg create mode 100644 mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_load.ogg create mode 100644 mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_shoot.ogg create mode 100644 mods/ITEMS/mcl_bows/sounds/mcl_bows_firework.ogg create mode 100644 mods/ITEMS/mcl_bows/sounds/mcl_bows_firework_soft.ogg create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_0.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_1.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_2.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_3.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_firework_blue.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_firework_green.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_firework_red.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_firework_white.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_firework_yellow.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_rocket.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_rocket_particle.png diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index 9a22ee622..343707617 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -43,7 +43,7 @@ S("An arrow fired from a bow has a regular damage of 1-9. At full charge, there' S("Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons."), _doc_items_usagehelp = S("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."), inventory_image = "mcl_bows_arrow_inv.png", - groups = { ammo=1, ammo_bow=1, ammo_bow_regular=1 }, + groups = { ammo=1, ammo_bow=1, ammo_bow_regular=1, ammo_crossbow=1 }, _on_dispense = function(itemstack, dispenserpos, droppos, dropnode, dropdir) -- Shoot arrow local shootpos = vector.add(dispenserpos, vector.multiply(dropdir, 0.51)) @@ -324,7 +324,9 @@ function ARROW_ENTITY.on_step(self, dtime) end if not obj:is_player() then mcl_burning.extinguish(self.object) - self.object:remove() + if self._piercing == 0 then + self.object:remove() + end end return end diff --git a/mods/ITEMS/mcl_bows/crossbow.lua b/mods/ITEMS/mcl_bows/crossbow.lua new file mode 100644 index 000000000..e3124156b --- /dev/null +++ b/mods/ITEMS/mcl_bows/crossbow.lua @@ -0,0 +1,454 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +mcl_bows_s = {} + +-- local arrows = { +-- ["mcl_bows:arrow"] = "mcl_bows:arrow_entity", +-- } + +local GRAVITY = 9.81 +local BOW_DURABILITY = 385 + +-- Charging time in microseconds +local _BOW_CHARGE_TIME_HALF = 350000 -- bow level 1 +local _BOW_CHARGE_TIME_FULL = 900000 -- bow level 2 (full charge) + +local BOW_CHARGE_TIME_HALF = 350000 -- bow level 1 +local BOW_CHARGE_TIME_FULL = 900000 -- bow level 2 (full charge) + +-- Factor to multiply with player speed while player uses bow +-- This emulates the sneak speed. +local PLAYER_USE_CROSSBOW_SPEED = tonumber(minetest.settings:get("movement_speed_crouch")) / tonumber(minetest.settings:get("movement_speed_walk")) + +-- TODO: Use Minecraft speed (ca. 53 m/s) +-- Currently nerfed because at full speed the arrow would easily get out of the range of the loaded map. +local BOW_MAX_SPEED = 68 + +local function play_load_sound(id, pos) + minetest.sound_play("mcl_bows_crossbow_drawback_"..id, {pos=pos, max_hear_distance=12}, true) +end + +--[[ Store the charging state of each player. +keys: player name +value: +nil = not charging or player not existing +number: currently charging, the number is the time from minetest.get_us_time + in which the charging has started +]] +local bow_load = {} + +-- Another player table, this one stores the wield index of the bow being charged +local bow_index = {} + +function mcl_bows_s.shoot_arrow_crossbow(arrow_item, pos, dir, yaw, shooter, power, damage, is_critical, crossbow_stack, collectable) + local obj = minetest.add_entity({x=pos.x,y=pos.y,z=pos.z}, arrow_item.."_entity") + if power == nil then + power = BOW_MAX_SPEED --19 + end + if damage == nil then + damage = 3 + end + local knockback + if crossbow_stack then + local enchantments = mcl_enchanting.get_enchantments(crossbow_stack) + if enchantments.piercing then + obj:get_luaentity()._piercing = 1 * enchantments.piercing + else + obj:get_luaentity()._piercing = 0 + end + end + obj:set_velocity({x=dir.x*power, y=dir.y*power, z=dir.z*power}) + obj:set_acceleration({x=0, y=-GRAVITY, z=0}) + obj:set_yaw(yaw-math.pi/2) + local le = obj:get_luaentity() + le._shooter = shooter + le._source_object = shooter + le._damage = damage + le._is_critical = is_critical + le._startpos = pos + le._knockback = knockback + le._collectable = collectable + minetest.sound_play("mcl_bows_crossbow_shoot", {pos=pos, max_hear_distance=16}, true) + if shooter and shooter:is_player() then + if obj:get_luaentity().player == "" then + obj:get_luaentity().player = shooter + end + obj:get_luaentity().node = shooter:get_inventory():get_stack("main", 1):get_name() + end + return obj +end + +local function get_arrow(player) + local inv = player:get_inventory() + local arrow_stack, arrow_stack_id + for i=1, inv:get_size("main") do + local it = inv:get_stack("main", i) + if not it:is_empty() and minetest.get_item_group(it:get_name(), "ammo_crossbow") ~= 0 then + arrow_stack = it + arrow_stack_id = i + break + end + end + return arrow_stack, arrow_stack_id +end + +local function player_shoot_arrow(itemstack, player, power, damage, is_critical) + local has_multishot_enchantment = mcl_enchanting.has_enchantment(player:get_wielded_item(), "multishot") + local arrow_itemstring = wielditem:get_meta():get("arrow") + + if not arrow_itemstring then + return false + end + + local playerpos = player:get_pos() + local dir = player:get_look_dir() + local yaw = player:get_look_horizontal() + + if has_multishot_enchantment then + mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, {x=dir.x, y=dir.y, z=dir.z + .2}, yaw, player, power, damage, is_critical, player:get_wielded_item(), false) + mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, {x=dir.x, y=dir.y, z=dir.z - .2}, yaw, player, power, damage, is_critical, player:get_wielded_item(), false) + mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, dir, yaw, player, power, damage, is_critical, player:get_wielded_item(), true) + else + mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, dir, yaw, player, power, damage, is_critical, player:get_wielded_item(), true) + end + return true +end + +-- Bow item, uncharged state +minetest.register_tool("mcl_bows:crossbow", { + description = S("Corssbow"), + _tt_help = S("Launches arrows"), + _doc_items_longdesc = S("Bows are ranged weapons to shoot arrows at your foes.").."\n".. +S("The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead."), + _doc_items_usagehelp = S("To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot."), + _doc_items_durability = BOW_DURABILITY, + inventory_image = "mcl_bows_crossbow.png", + wield_scale = mcl_vars.tool_wield_scale, + stack_max = 1, + range = 4, + -- Trick to disable digging as well + on_use = function() return end, + on_place = function(itemstack, player, pointed_thing) + if pointed_thing and pointed_thing.type == "node" then + -- Call on_rightclick if the pointed node defines it + local node = minetest.get_node(pointed_thing.under) + if player and not player:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, player, itemstack) or itemstack + end + end + end + + itemstack:get_meta():set_string("active", "true") + return itemstack + end, + on_secondary_use = function(itemstack) + itemstack:get_meta():set_string("active", "true") + return itemstack + end, + groups = {weapon=1,weapon_ranged=1,crossbow=1,enchantability=1}, + _mcl_uses = 326, +}) + +minetest.register_tool("mcl_bows:crossbow_loaded", { + description = S("Corssbow"), + _tt_help = S("Launches arrows"), + _doc_items_longdesc = S("Corssbow are ranged weapons to shoot arrows at your foes.").."\n".. +S("The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead."), + _doc_items_usagehelp = S("To use the corssbow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to load an arrow into the chamber, then to shoot press left mouse."), + _doc_items_durability = BOW_DURABILITY, + inventory_image = "mcl_bows_crossbow_3.png", + wield_scale = mcl_vars.tool_wield_scale, + stack_max = 1, + range = 4, + -- Trick to disable digging as well + on_use = function() return end, + on_place = function(itemstack, player, pointed_thing) + if pointed_thing and pointed_thing.type == "node" then + -- Call on_rightclick if the pointed node defines it + local node = minetest.get_node(pointed_thing.under) + if player and not player:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, player, itemstack) or itemstack + end + end + end + + itemstack:get_meta():set_string("active", "true") + return itemstack + end, + on_secondary_use = function(itemstack) + itemstack:get_meta():set_string("active", "true") + return itemstack + end, + groups = {weapon=1,weapon_ranged=1,crossbow=1,enchantability=1}, + _mcl_uses = 326, +}) + +-- Iterates through player inventory and resets all the bows in "charging" state back to their original stage +local function reset_bows(player) + local inv = player:get_inventory() + local list = inv:get_list("main") + for place, stack in pairs(list) do + if stack:get_name() == "mcl_bows:crossbow" or stack:get_name() == "mcl_bows:crossbow_enchanted" then + stack:get_meta():set_string("active", "") + elseif stack:get_name()=="mcl_bows:crossbow_0" or stack:get_name()=="mcl_bows:crossbow_1" or stack:get_name()=="mcl_bows:crossbow_2" then + stack:set_name("mcl_bows:crossbow") + stack:get_meta():set_string("active", "") + list[place] = stack + elseif stack:get_name()=="mcl_bows:crossbow_0_enchanted" or stack:get_name()=="mcl_bows:crossbow_1_enchanted" or stack:get_name()=="mcl_bows:crossbow_2_enchanted" then + stack:set_name("mcl_bows:crossbow_enchanted") + stack:get_meta():set_string("active", "") + list[place] = stack + end + end + inv:set_list("main", list) +end + +-- Resets the bow charging state and player speed. To be used when the player is no longer charging the bow +local function reset_bow_state(player, also_reset_bows) + bow_load[player:get_player_name()] = nil + bow_index[player:get_player_name()] = nil + if minetest.get_modpath("playerphysics") then + playerphysics.remove_physics_factor(player, "speed", "mcl_bows:use_crossbow") + end + if also_reset_bows then + reset_bows(player) + end +end + +-- Bow in charging state +for level=0, 2 do + minetest.register_tool("mcl_bows:crossbow_"..level, { + description = S("Crossbow"), + _doc_items_create_entry = false, + inventory_image = "mcl_bows_crossbow_"..level..".png", + wield_scale = mcl_vars.tool_wield_scale, + stack_max = 1, + range = 0, -- Pointing range to 0 to prevent punching with bow :D + groups = {not_in_creative_inventory=1, not_in_craft_guide=1, bow=1, enchantability=1}, + -- Trick to disable digging as well + on_use = function() return end, + on_drop = function(itemstack, dropper, pos) + reset_bow_state(dropper) + itemstack:get_meta():set_string("active", "") + if mcl_enchanting.is_enchanted(itemstack:get_name()) then + itemstack:set_name("mcl_bows:crossbow_enchanted") + else + itemstack:set_name("mcl_bows:crossbow") + end + minetest.item_drop(itemstack, dropper, pos) + itemstack:take_item() + return itemstack + end, + -- Prevent accidental interaction with itemframes and other nodes + on_place = function(itemstack) + return itemstack + end, + _mcl_uses = 385, + }) +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 wielditem = player:get_wielded_item() + if wielditem:get_name()=="mcl_bows:crossbow_2" and get_arrow(player) or wielditem:get_name()=="mcl_bows:crossbow_2" and minetest.is_creative_enabled(player:get_player_name()) or wielditem:get_name()=="mcl_bows:crossbow_2_enchanted" and get_arrow(player) or wielditem:get_name()=="mcl_bows:crossbow_2_enchanted" and minetest.is_creative_enabled(player:get_player_name()) then + local arrow_stack, arrow_stack_id = get_arrow(player) + local arrow_itemstring + + if minetest.is_creative_enabled(player:get_player_name()) then + if arrow_stack then + arrow_itemstring = arrow_stack:get_name() + else + arrow_itemstring = "mcl_bows:arrow" + end + else + arrow_itemstring = arrow_stack:get_name() + arrow_stack:take_item() + player:get_inventory():set_stack("main", arrow_stack_id, arrow_stack) + end + + wielditem:get_meta():set_string("arrow", arrow_itemstring) + + if wielditem:get_name()=="mcl_bows:crossbow_2" then + wielditem:set_name("mcl_bows:crossbow_loaded") + else + wielditem:set_name("mcl_bows:crossbow_loaded_enchanted") + end + player:set_wielded_item(wielditem) + minetest.sound_play("mcl_bows_crossbow_load", {pos=player:get_pos(), max_hear_distance=16}, true) + else + reset_bow_state(player, true) + end +end) + +controls.register_on_press(function(player, key, time) + if key~="LMB" then return end + wielditem = player:get_wielded_item() + if wielditem:get_name()=="mcl_bows:crossbow_loaded" or wielditem:get_name()=="mcl_bows:crossbow_loaded_enchanted" then + local enchanted = mcl_enchanting.is_enchanted(wielditem:get_name()) + local speed, damage + local p_load = bow_load[player:get_player_name()] + local charge + -- Type sanity check + if type(p_load) == "number" then + charge = minetest.get_us_time() - p_load + else + -- In case something goes wrong ... + -- Just assume minimum charge. + charge = 0 + minetest.log("warning", "[mcl_bows] Player "..player:get_player_name().." fires arrow with non-numeric bow_load!") + end + charge = math.max(math.min(charge, BOW_CHARGE_TIME_FULL), 0) + + local charge_ratio = charge / BOW_CHARGE_TIME_FULL + charge_ratio = math.max(math.min(charge_ratio, 1), 0) + + -- Calculate damage and speed + -- Fully charged + local is_critical = false + speed = BOW_MAX_SPEED + local r = math.random(1,5) + if r == 1 then + -- 20% chance for critical hit + damage = 10 + is_critical = true + else + damage = 9 + end + + local has_shot = player_shoot_arrow(wielditem, player, speed, damage, is_critical) + + if enchanted then + wielditem:set_name("mcl_bows:crossbow_enchanted") + else + wielditem:set_name("mcl_bows:crossbow") + end + + if has_shot and not minetest.is_creative_enabled(player:get_player_name()) then + local durability = BOW_DURABILITY + local unbreaking = mcl_enchanting.get_enchantment(wielditem, "unbreaking") + local multishot = mcl_enchanting.get_enchantment(wielditem, "multishot") + if unbreaking > 0 then + durability = durability * (unbreaking + 1) + end + if multishot then + durability = durability / 3 + end + wielditem:add_wear(65535/durability) + end + player:set_wielded_item(wielditem) + reset_bow_state(player, true) + end +end) + +controls.register_on_hold(function(player, key, time) + local name = player:get_player_name() + local creative = minetest.is_creative_enabled(name) + if key ~= "RMB" then + return + end + --local inv = minetest.get_inventory({type="player", name=name}) + local wielditem = player:get_wielded_item() + local enchantments = mcl_enchanting.get_enchantments(wielditem) + if enchantments.quick_charge then + BOW_CHARGE_TIME_HALF = _BOW_CHARGE_TIME_HALF - (enchantments.quick_charge * 0.13 * 1000000 * .5) + BOW_CHARGE_TIME_FULL = _BOW_CHARGE_TIME_FULL - (enchantments.quick_charge * 0.13 * 1000000) + else + BOW_CHARGE_TIME_HALF = _BOW_CHARGE_TIME_HALF + BOW_CHARGE_TIME_FULL = _BOW_CHARGE_TIME_FULL + end + + if bow_load[name] == nil and (wielditem:get_name()=="mcl_bows:crossbow" or wielditem:get_name()=="mcl_bows:crossbow_enchanted") and wielditem:get_meta():get("active") and (creative or get_arrow(player)) then + local enchanted = mcl_enchanting.is_enchanted(wielditem:get_name()) + if enchanted then + wielditem:set_name("mcl_bows:crossbow_0_enchanted") + play_load_sound(0, player:get_pos()) + else + wielditem:set_name("mcl_bows:crossbow_0") + play_load_sound(0, player:get_pos()) + end + player:set_wielded_item(wielditem) + if minetest.get_modpath("playerphysics") then + -- Slow player down when using bow + playerphysics.add_physics_factor(player, "speed", "mcl_bows:use_crossbow", PLAYER_USE_CROSSBOW_SPEED) + end + bow_load[name] = minetest.get_us_time() + bow_index[name] = player:get_wield_index() + else + if player:get_wield_index() == bow_index[name] then + if type(bow_load[name]) == "number" then + if wielditem:get_name() == "mcl_bows:crossbow_0" and minetest.get_us_time() - bow_load[name] >= BOW_CHARGE_TIME_HALF then + wielditem:set_name("mcl_bows:crossbow_1") + play_load_sound(1, player:get_pos()) + elseif wielditem:get_name() == "mcl_bows:crossbow_0_enchanted" and minetest.get_us_time() - bow_load[name] >= BOW_CHARGE_TIME_HALF then + wielditem:set_name("mcl_bows:crossbow_1_enchanted") + play_load_sound(1, player:get_pos()) + elseif wielditem:get_name() == "mcl_bows:crossbow_1" and minetest.get_us_time() - bow_load[name] >= BOW_CHARGE_TIME_FULL then + wielditem:set_name("mcl_bows:crossbow_2") + play_load_sound(2, player:get_pos()) + elseif wielditem:get_name() == "mcl_bows:crossbow_1_enchanted" and minetest.get_us_time() - bow_load[name] >= BOW_CHARGE_TIME_FULL then + wielditem:set_name("mcl_bows:crossbow_2_enchanted") + play_load_sound(2, player:get_pos()) + end + else + if wielditem:get_name() == "mcl_bows:crossbow_0" or wielditem:get_name() == "mcl_bows:crossbow_1" or wielditem:get_name() == "mcl_bows:crossbow_2" then + wielditem:set_name("mcl_bows:crossbow") + play_load_sound(1, player:get_pos()) + elseif wielditem:get_name() == "mcl_bows:crossbow_0_enchanted" or wielditem:get_name() == "mcl_bows:crossbow_1_enchanted" or wielditem:get_name() == "mcl_bows:crossbow_2_enchanted" then + wielditem:set_name("mcl_bows:crossbow_enchanted") + play_load_sound(1, player:get_pos()) + end + end + player:set_wielded_item(wielditem) + else + reset_bow_state(player, true) + end + end +end) + +minetest.register_globalstep(function(dtime) + for _, player in pairs(minetest.get_connected_players()) do + local name = player:get_player_name() + local wielditem = player:get_wielded_item() + local wieldindex = player:get_wield_index() + --local controls = player:get_player_control() + if type(bow_load[name]) == "number" and ((wielditem:get_name()~="mcl_bows:crossbow_0" and wielditem:get_name()~="mcl_bows:crossbow_1" and wielditem:get_name()~="mcl_bows:crossbow_2" and wielditem:get_name()~="mcl_bows:crossbow_0_enchanted" and wielditem:get_name()~="mcl_bows:crossbow_1_enchanted" and wielditem:get_name()~="mcl_bows:crossbow_2_enchanted") or wieldindex ~= bow_index[name]) then + reset_bow_state(player, true) + end + end +end) + +minetest.register_on_joinplayer(function(player) + reset_bows(player) +end) + +minetest.register_on_leaveplayer(function(player) + reset_bow_state(player, true) +end) + +if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_mobitems") then + minetest.register_craft({ + output = "mcl_bows:crossbow", + recipe = { + {"mcl_core:stick", "mcl_core:iron_ingot", "mcl_core:stick"}, + {"mcl_mobitems:string", "mcl_bows:arrow", "mcl_mobitems:string"}, + {"", "mcl_core:stick", ""}, + } + }) +end + +minetest.register_craft({ + type = "fuel", + recipe = "group:bow", + burntime = 15, +}) + +-- Add entry aliases for the Help +if minetest.get_modpath("doc") then + doc.add_entry_alias("tools", "mcl_bows:crossbow", "tools", "mcl_bows:crossbow_0") + doc.add_entry_alias("tools", "mcl_bows:crossbow", "tools", "mcl_bows:crossbow_1") + doc.add_entry_alias("tools", "mcl_bows:crossbow", "tools", "mcl_bows:crossbow_2") +end diff --git a/mods/ITEMS/mcl_bows/init.lua b/mods/ITEMS/mcl_bows/init.lua index a2745d950..d5b06dac7 100644 --- a/mods/ITEMS/mcl_bows/init.lua +++ b/mods/ITEMS/mcl_bows/init.lua @@ -1,5 +1,11 @@ +--Bow dofile(minetest.get_modpath("mcl_bows") .. "/arrow.lua") dofile(minetest.get_modpath("mcl_bows") .. "/bow.lua") +dofile(minetest.get_modpath("mcl_bows") .. "/rocket.lua") +--Crossbow +dofile(minetest.get_modpath("mcl_bows") .. "/crossbow.lua") + +--Compatiblility with older MineClone worlds minetest.register_alias("mcl_throwing:bow", "mcl_bows:bow") minetest.register_alias("mcl_throwing:arrow", "mcl_bows:arrow") diff --git a/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.b3d b/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.b3d new file mode 100644 index 0000000000000000000000000000000000000000..0a34f1eaa63c07c7f37e90df2300497fc6c5385f GIT binary patch literal 11758 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.mtl b/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.mtl new file mode 100644 index 000000000..f231bdf4c --- /dev/null +++ b/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.mtl @@ -0,0 +1,10 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl None +Ns 500 +Ka 0.8 0.8 0.8 +Kd 0.8 0.8 0.8 +Ks 0.8 0.8 0.8 +d 1 +illum 2 diff --git a/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.obj b/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.obj new file mode 100644 index 000000000..e2bd11d34 --- /dev/null +++ b/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.obj @@ -0,0 +1,1016 @@ +# Blender v3.0.0 Alpha OBJ File: '' +# www.blender.org +mtllib mcl_bows_rocket.mtl +o Plane +v -1.414214 -0.063116 0.000000 +v 0.000000 -0.063116 1.414214 +v -0.000000 -0.063116 -1.414214 +v 1.414214 -0.063116 -0.000000 +v -1.414214 -0.062205 0.000000 +v 0.000000 -0.062205 1.414214 +v -0.000000 -0.062205 -1.414214 +v 1.414214 -0.062205 -0.000000 +v -1.414214 -0.060838 0.000000 +v 0.000000 -0.060838 1.414214 +v -0.000000 -0.060838 -1.414214 +v 1.414214 -0.060838 -0.000000 +v -1.414214 -0.059926 0.000000 +v 0.000000 -0.059926 1.414214 +v -0.000000 -0.059926 -1.414214 +v 1.414214 -0.059926 -0.000000 +v -1.414214 -0.058559 0.000000 +v 0.000000 -0.058559 1.414214 +v -0.000000 -0.058559 -1.414214 +v 1.414214 -0.058559 -0.000000 +v -1.414214 -0.057648 0.000000 +v 0.000000 -0.057648 1.414214 +v -0.000000 -0.057648 -1.414214 +v 1.414214 -0.057648 -0.000000 +v -1.414214 -0.056281 0.000000 +v 0.000000 -0.056281 1.414214 +v -0.000000 -0.056281 -1.414214 +v 1.414214 -0.056281 -0.000000 +v -1.414214 -0.055369 0.000000 +v 0.000000 -0.055369 1.414214 +v -0.000000 -0.055369 -1.414214 +v 1.414214 -0.055369 -0.000000 +v -1.414214 -0.054002 0.000000 +v 0.000000 -0.054002 1.414214 +v -0.000000 -0.054002 -1.414214 +v 1.414214 -0.054002 -0.000000 +v -1.414214 -0.053091 0.000000 +v 0.000000 -0.053091 1.414214 +v -0.000000 -0.053091 -1.414214 +v 1.414214 -0.053091 -0.000000 +v -1.414214 -0.051723 0.000000 +v 0.000000 -0.051723 1.414214 +v -0.000000 -0.051723 -1.414214 +v 1.414214 -0.051723 -0.000000 +v -1.414214 -0.050812 0.000000 +v 0.000000 -0.050812 1.414214 +v -0.000000 -0.050812 -1.414214 +v 1.414214 -0.050812 -0.000000 +v -1.414214 -0.049445 0.000000 +v 0.000000 -0.049445 1.414214 +v -0.000000 -0.049445 -1.414214 +v 1.414214 -0.049445 -0.000000 +v -1.414214 -0.048533 0.000000 +v 0.000000 -0.048533 1.414214 +v -0.000000 -0.048533 -1.414214 +v 1.414214 -0.048533 -0.000000 +v -1.414214 -0.047166 0.000000 +v 0.000000 -0.047166 1.414214 +v -0.000000 -0.047166 -1.414214 +v 1.414214 -0.047166 -0.000000 +v -1.414214 -0.046255 0.000000 +v 0.000000 -0.046255 1.414214 +v -0.000000 -0.046255 -1.414214 +v 1.414214 -0.046255 -0.000000 +v -1.414214 -0.044888 0.000000 +v 0.000000 -0.044888 1.414214 +v -0.000000 -0.044888 -1.414214 +v 1.414214 -0.044888 -0.000000 +v -1.414214 -0.043976 0.000000 +v 0.000000 -0.043976 1.414214 +v -0.000000 -0.043976 -1.414214 +v 1.414214 -0.043976 -0.000000 +v -1.414214 -0.042609 0.000000 +v 0.000000 -0.042609 1.414214 +v -0.000000 -0.042609 -1.414214 +v 1.414214 -0.042609 -0.000000 +v -1.414214 -0.041698 0.000000 +v 0.000000 -0.041698 1.414214 +v -0.000000 -0.041698 -1.414214 +v 1.414214 -0.041698 -0.000000 +v -1.414214 -0.040331 0.000000 +v 0.000000 -0.040331 1.414214 +v -0.000000 -0.040331 -1.414214 +v 1.414214 -0.040331 -0.000000 +v -1.414214 -0.039419 0.000000 +v 0.000000 -0.039419 1.414214 +v -0.000000 -0.039419 -1.414214 +v 1.414214 -0.039419 -0.000000 +v -1.414214 -0.038052 0.000000 +v 0.000000 -0.038052 1.414214 +v -0.000000 -0.038052 -1.414214 +v 1.414214 -0.038052 -0.000000 +v -1.414214 -0.037141 0.000000 +v 0.000000 -0.037141 1.414214 +v -0.000000 -0.037141 -1.414214 +v 1.414214 -0.037141 -0.000000 +v -1.414214 -0.035773 0.000000 +v 0.000000 -0.035773 1.414214 +v -0.000000 -0.035773 -1.414214 +v 1.414214 -0.035773 -0.000000 +v -1.414214 -0.034862 0.000000 +v 0.000000 -0.034862 1.414214 +v -0.000000 -0.034862 -1.414214 +v 1.414214 -0.034862 -0.000000 +v -1.414214 -0.033495 0.000000 +v 0.000000 -0.033495 1.414214 +v -0.000000 -0.033495 -1.414214 +v 1.414214 -0.033495 -0.000000 +v -1.414214 -0.032583 0.000000 +v 0.000000 -0.032583 1.414214 +v -0.000000 -0.032583 -1.414214 +v 1.414214 -0.032583 -0.000000 +v -1.414214 -0.031216 0.000000 +v 0.000000 -0.031216 1.414214 +v -0.000000 -0.031216 -1.414214 +v 1.414214 -0.031216 -0.000000 +v -1.414214 -0.030305 0.000000 +v 0.000000 -0.030305 1.414214 +v -0.000000 -0.030305 -1.414214 +v 1.414214 -0.030305 -0.000000 +v -1.414214 -0.028938 0.000000 +v 0.000000 -0.028938 1.414214 +v -0.000000 -0.028938 -1.414214 +v 1.414214 -0.028938 -0.000000 +v -1.414214 -0.028026 0.000000 +v 0.000000 -0.028026 1.414214 +v -0.000000 -0.028026 -1.414214 +v 1.414214 -0.028026 -0.000000 +v -1.414214 -0.026659 0.000000 +v 0.000000 -0.026659 1.414214 +v -0.000000 -0.026659 -1.414214 +v 1.414214 -0.026659 -0.000000 +v -1.414214 -0.025748 0.000000 +v 0.000000 -0.025748 1.414214 +v -0.000000 -0.025748 -1.414214 +v 1.414214 -0.025748 -0.000000 +v -1.414214 -0.024381 0.000000 +v 0.000000 -0.024381 1.414214 +v -0.000000 -0.024381 -1.414214 +v 1.414214 -0.024381 -0.000000 +v -1.414214 -0.023469 0.000000 +v 0.000000 -0.023469 1.414214 +v -0.000000 -0.023469 -1.414214 +v 1.414214 -0.023469 -0.000000 +v -1.414214 -0.022102 0.000000 +v 0.000000 -0.022102 1.414214 +v -0.000000 -0.022102 -1.414214 +v 1.414214 -0.022102 -0.000000 +v -1.414214 -0.021191 0.000000 +v 0.000000 -0.021191 1.414214 +v -0.000000 -0.021191 -1.414214 +v 1.414214 -0.021191 -0.000000 +v -1.414214 -0.019824 0.000000 +v 0.000000 -0.019824 1.414214 +v -0.000000 -0.019824 -1.414214 +v 1.414214 -0.019824 -0.000000 +v -1.414214 -0.018912 0.000000 +v 0.000000 -0.018912 1.414214 +v -0.000000 -0.018912 -1.414214 +v 1.414214 -0.018912 -0.000000 +v -1.414214 -0.017545 0.000000 +v 0.000000 -0.017545 1.414214 +v -0.000000 -0.017545 -1.414214 +v 1.414214 -0.017545 -0.000000 +v -1.414214 -0.016634 0.000000 +v 0.000000 -0.016634 1.414214 +v -0.000000 -0.016634 -1.414214 +v 1.414214 -0.016634 -0.000000 +v -1.414214 -0.015266 0.000000 +v 0.000000 -0.015266 1.414214 +v -0.000000 -0.015266 -1.414214 +v 1.414214 -0.015266 -0.000000 +v -1.414214 -0.014355 0.000000 +v 0.000000 -0.014355 1.414214 +v -0.000000 -0.014355 -1.414214 +v 1.414214 -0.014355 -0.000000 +v -1.414214 -0.012988 0.000000 +v 0.000000 -0.012988 1.414214 +v -0.000000 -0.012988 -1.414214 +v 1.414214 -0.012988 -0.000000 +v -1.414214 -0.012076 0.000000 +v 0.000000 -0.012076 1.414214 +v -0.000000 -0.012076 -1.414214 +v 1.414214 -0.012076 -0.000000 +v -1.414214 -0.010709 0.000000 +v 0.000000 -0.010709 1.414214 +v -0.000000 -0.010709 -1.414214 +v 1.414214 -0.010709 -0.000000 +v -1.414214 -0.009798 0.000000 +v 0.000000 -0.009798 1.414214 +v -0.000000 -0.009798 -1.414214 +v 1.414214 -0.009798 -0.000000 +v -1.414214 -0.008431 0.000000 +v 0.000000 -0.008431 1.414214 +v -0.000000 -0.008431 -1.414214 +v 1.414214 -0.008431 -0.000000 +v -1.414214 -0.007519 0.000000 +v 0.000000 -0.007519 1.414214 +v -0.000000 -0.007519 -1.414214 +v 1.414214 -0.007519 -0.000000 +v -1.414214 -0.006152 0.000000 +v 0.000000 -0.006152 1.414214 +v -0.000000 -0.006152 -1.414214 +v 1.414214 -0.006152 -0.000000 +v -1.414214 -0.005241 0.000000 +v 0.000000 -0.005241 1.414214 +v -0.000000 -0.005241 -1.414214 +v 1.414214 -0.005241 -0.000000 +v -1.414214 -0.003874 0.000000 +v 0.000000 -0.003874 1.414214 +v -0.000000 -0.003874 -1.414214 +v 1.414214 -0.003874 -0.000000 +v -1.414214 -0.002962 0.000000 +v 0.000000 -0.002962 1.414214 +v -0.000000 -0.002962 -1.414214 +v 1.414214 -0.002962 -0.000000 +v -1.414214 -0.001595 0.000000 +v 0.000000 -0.001595 1.414214 +v -0.000000 -0.001595 -1.414214 +v 1.414214 -0.001595 -0.000000 +v -1.414214 -0.000684 0.000000 +v 0.000000 -0.000684 1.414214 +v -0.000000 -0.000684 -1.414214 +v 1.414214 -0.000684 -0.000000 +v -1.414214 0.000684 0.000000 +v 0.000000 0.000684 1.414214 +v -0.000000 0.000684 -1.414214 +v 1.414214 0.000684 -0.000000 +v -1.414214 0.001595 0.000000 +v 0.000000 0.001595 1.414214 +v -0.000000 0.001595 -1.414214 +v 1.414214 0.001595 -0.000000 +v -1.414214 0.002962 0.000000 +v 0.000000 0.002962 1.414214 +v -0.000000 0.002962 -1.414214 +v 1.414214 0.002962 -0.000000 +v -1.414214 0.003874 0.000000 +v 0.000000 0.003874 1.414214 +v -0.000000 0.003874 -1.414214 +v 1.414214 0.003874 -0.000000 +v -1.414214 0.005241 0.000000 +v 0.000000 0.005241 1.414214 +v -0.000000 0.005241 -1.414214 +v 1.414214 0.005241 -0.000000 +v -1.414214 0.006152 0.000000 +v 0.000000 0.006152 1.414214 +v -0.000000 0.006152 -1.414214 +v 1.414214 0.006152 -0.000000 +v -1.414214 0.007519 0.000000 +v 0.000000 0.007519 1.414214 +v -0.000000 0.007519 -1.414214 +v 1.414214 0.007519 -0.000000 +v -1.414214 0.008431 0.000000 +v 0.000000 0.008431 1.414214 +v -0.000000 0.008431 -1.414214 +v 1.414214 0.008431 -0.000000 +v -1.414214 0.009798 0.000000 +v 0.000000 0.009798 1.414214 +v -0.000000 0.009798 -1.414214 +v 1.414214 0.009798 -0.000000 +v -1.414214 0.010709 0.000000 +v 0.000000 0.010709 1.414214 +v -0.000000 0.010709 -1.414214 +v 1.414214 0.010709 -0.000000 +v -1.414214 0.012076 0.000000 +v 0.000000 0.012076 1.414214 +v -0.000000 0.012076 -1.414214 +v 1.414214 0.012076 -0.000000 +v -1.414214 0.012988 0.000000 +v 0.000000 0.012988 1.414214 +v -0.000000 0.012988 -1.414214 +v 1.414214 0.012988 -0.000000 +v -1.414214 0.014355 0.000000 +v 0.000000 0.014355 1.414214 +v -0.000000 0.014355 -1.414214 +v 1.414214 0.014355 -0.000000 +v -1.414214 0.015266 0.000000 +v 0.000000 0.015266 1.414214 +v -0.000000 0.015266 -1.414214 +v 1.414214 0.015266 -0.000000 +v -1.414214 0.016634 0.000000 +v 0.000000 0.016634 1.414214 +v -0.000000 0.016634 -1.414214 +v 1.414214 0.016634 -0.000000 +v -1.414214 0.017545 0.000000 +v 0.000000 0.017545 1.414214 +v -0.000000 0.017545 -1.414214 +v 1.414214 0.017545 -0.000000 +v -1.414214 0.018912 0.000000 +v 0.000000 0.018912 1.414214 +v -0.000000 0.018912 -1.414214 +v 1.414214 0.018912 -0.000000 +v -1.414214 0.019824 0.000000 +v 0.000000 0.019824 1.414214 +v -0.000000 0.019824 -1.414214 +v 1.414214 0.019824 -0.000000 +v -1.414214 0.021191 0.000000 +v 0.000000 0.021191 1.414214 +v -0.000000 0.021191 -1.414214 +v 1.414214 0.021191 -0.000000 +v -1.414214 0.022102 0.000000 +v 0.000000 0.022102 1.414214 +v -0.000000 0.022102 -1.414214 +v 1.414214 0.022102 -0.000000 +v -1.414214 0.023469 0.000000 +v 0.000000 0.023469 1.414214 +v -0.000000 0.023469 -1.414214 +v 1.414214 0.023469 -0.000000 +v -1.414214 0.024381 0.000000 +v 0.000000 0.024381 1.414214 +v -0.000000 0.024381 -1.414214 +v 1.414214 0.024381 -0.000000 +v -1.414214 0.025748 0.000000 +v 0.000000 0.025748 1.414214 +v -0.000000 0.025748 -1.414214 +v 1.414214 0.025748 -0.000000 +v -1.414214 0.026659 0.000000 +v 0.000000 0.026659 1.414214 +v -0.000000 0.026659 -1.414214 +v 1.414214 0.026659 -0.000000 +v -1.414214 0.028026 0.000000 +v 0.000000 0.028026 1.414214 +v -0.000000 0.028026 -1.414214 +v 1.414214 0.028026 -0.000000 +v -1.414214 0.028938 0.000000 +v 0.000000 0.028938 1.414214 +v -0.000000 0.028938 -1.414214 +v 1.414214 0.028938 -0.000000 +v -1.414214 0.030305 0.000000 +v 0.000000 0.030305 1.414214 +v -0.000000 0.030305 -1.414214 +v 1.414214 0.030305 -0.000000 +v -1.414214 0.031216 0.000000 +v 0.000000 0.031216 1.414214 +v -0.000000 0.031216 -1.414214 +v 1.414214 0.031216 -0.000000 +v -1.414214 0.032584 0.000000 +v 0.000000 0.032584 1.414214 +v -0.000000 0.032584 -1.414214 +v 1.414214 0.032584 -0.000000 +v -1.414214 0.033495 0.000000 +v 0.000000 0.033495 1.414214 +v -0.000000 0.033495 -1.414214 +v 1.414214 0.033495 -0.000000 +v -1.414214 0.034862 0.000000 +v 0.000000 0.034862 1.414214 +v -0.000000 0.034862 -1.414214 +v 1.414214 0.034862 -0.000000 +v -1.414214 0.035774 0.000000 +v 0.000000 0.035774 1.414214 +v -0.000000 0.035774 -1.414214 +v 1.414214 0.035774 -0.000000 +v -1.414214 0.037141 0.000000 +v 0.000000 0.037141 1.414214 +v -0.000000 0.037141 -1.414214 +v 1.414214 0.037141 -0.000000 +v -1.414214 0.038052 0.000000 +v 0.000000 0.038052 1.414214 +v -0.000000 0.038052 -1.414214 +v 1.414214 0.038052 -0.000000 +v -1.414214 0.039419 0.000000 +v 0.000000 0.039419 1.414214 +v -0.000000 0.039419 -1.414214 +v 1.414214 0.039419 -0.000000 +v -1.414214 0.040331 0.000000 +v 0.000000 0.040331 1.414214 +v -0.000000 0.040331 -1.414214 +v 1.414214 0.040331 -0.000000 +v -1.414214 0.041698 0.000000 +v 0.000000 0.041698 1.414214 +v -0.000000 0.041698 -1.414214 +v 1.414214 0.041698 -0.000000 +v -1.414214 0.042609 0.000000 +v 0.000000 0.042609 1.414214 +v -0.000000 0.042609 -1.414214 +v 1.414214 0.042609 -0.000000 +v -1.414214 0.043976 0.000000 +v 0.000000 0.043976 1.414214 +v -0.000000 0.043976 -1.414214 +v 1.414214 0.043976 -0.000000 +v -1.414214 0.044888 0.000000 +v 0.000000 0.044888 1.414214 +v -0.000000 0.044888 -1.414214 +v 1.414214 0.044888 -0.000000 +v -1.414214 0.046255 0.000000 +v 0.000000 0.046255 1.414214 +v -0.000000 0.046255 -1.414214 +v 1.414214 0.046255 -0.000000 +v -1.414214 0.047166 0.000000 +v 0.000000 0.047166 1.414214 +v -0.000000 0.047166 -1.414214 +v 1.414214 0.047166 -0.000000 +v -1.414214 0.048533 0.000000 +v 0.000000 0.048533 1.414214 +v -0.000000 0.048533 -1.414214 +v 1.414214 0.048533 -0.000000 +v -1.414214 0.049445 0.000000 +v 0.000000 0.049445 1.414214 +v -0.000000 0.049445 -1.414214 +v 1.414214 0.049445 -0.000000 +v -1.414214 0.050812 0.000000 +v 0.000000 0.050812 1.414214 +v -0.000000 0.050812 -1.414214 +v 1.414214 0.050812 -0.000000 +v -1.414214 0.051723 0.000000 +v 0.000000 0.051723 1.414214 +v -0.000000 0.051723 -1.414214 +v 1.414214 0.051723 -0.000000 +v -1.414214 0.053091 0.000000 +v 0.000000 0.053091 1.414214 +v -0.000000 0.053091 -1.414214 +v 1.414214 0.053091 -0.000000 +v -1.414214 0.054002 0.000000 +v 0.000000 0.054002 1.414214 +v -0.000000 0.054002 -1.414214 +v 1.414214 0.054002 -0.000000 +v -1.414214 0.055369 0.000000 +v 0.000000 0.055369 1.414214 +v -0.000000 0.055369 -1.414214 +v 1.414214 0.055369 -0.000000 +v -1.414214 0.056281 0.000000 +v 0.000000 0.056281 1.414214 +v -0.000000 0.056281 -1.414214 +v 1.414214 0.056281 -0.000000 +v -1.414214 0.057648 0.000000 +v 0.000000 0.057648 1.414214 +v -0.000000 0.057648 -1.414214 +v 1.414214 0.057648 -0.000000 +v -1.414214 0.058559 0.000000 +v 0.000000 0.058559 1.414214 +v -0.000000 0.058559 -1.414214 +v 1.414214 0.058559 -0.000000 +v -1.414214 0.059926 0.000000 +v 0.000000 0.059926 1.414214 +v -0.000000 0.059926 -1.414214 +v 1.414214 0.059926 -0.000000 +v -1.414214 0.060838 0.000000 +v 0.000000 0.060838 1.414214 +v -0.000000 0.060838 -1.414214 +v 1.414214 0.060838 -0.000000 +v -1.414214 0.062205 0.000000 +v 0.000000 0.062205 1.414214 +v -0.000000 0.062205 -1.414214 +v 1.414214 0.062205 -0.000000 +v -1.414214 0.063116 0.000000 +v 0.000000 0.063116 1.414214 +v -0.000000 0.063116 -1.414214 +v 1.414214 0.063116 -0.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +usemtl None +s off +f 1/1/1 3/2/1 4/3/1 2/4/1 +f 5/5/2 6/6/2 8/7/2 7/8/2 +f 9/9/1 11/10/1 12/11/1 10/12/1 +f 13/13/2 14/14/2 16/15/2 15/16/2 +f 17/17/1 19/18/1 20/19/1 18/20/1 +f 21/21/2 22/22/2 24/23/2 23/24/2 +f 25/25/1 27/26/1 28/27/1 26/28/1 +f 29/29/2 30/30/2 32/31/2 31/32/2 +f 33/33/1 35/34/1 36/35/1 34/36/1 +f 37/37/2 38/38/2 40/39/2 39/40/2 +f 41/41/1 43/42/1 44/43/1 42/44/1 +f 45/45/2 46/46/2 48/47/2 47/48/2 +f 49/49/1 51/50/1 52/51/1 50/52/1 +f 53/53/2 54/54/2 56/55/2 55/56/2 +f 57/57/1 59/58/1 60/59/1 58/60/1 +f 61/61/2 62/62/2 64/63/2 63/64/2 +f 65/65/1 67/66/1 68/67/1 66/68/1 +f 69/69/2 70/70/2 72/71/2 71/72/2 +f 73/73/1 75/74/1 76/75/1 74/76/1 +f 77/77/2 78/78/2 80/79/2 79/80/2 +f 81/81/1 83/82/1 84/83/1 82/84/1 +f 85/85/2 86/86/2 88/87/2 87/88/2 +f 89/89/1 91/90/1 92/91/1 90/92/1 +f 93/93/2 94/94/2 96/95/2 95/96/2 +f 97/97/1 99/98/1 100/99/1 98/100/1 +f 101/101/2 102/102/2 104/103/2 103/104/2 +f 105/105/1 107/106/1 108/107/1 106/108/1 +f 109/109/2 110/110/2 112/111/2 111/112/2 +f 113/113/1 115/114/1 116/115/1 114/116/1 +f 117/117/2 118/118/2 120/119/2 119/120/2 +f 121/121/1 123/122/1 124/123/1 122/124/1 +f 125/125/2 126/126/2 128/127/2 127/128/2 +f 129/129/1 131/130/1 132/131/1 130/132/1 +f 133/133/2 134/134/2 136/135/2 135/136/2 +f 137/137/1 139/138/1 140/139/1 138/140/1 +f 141/141/2 142/142/2 144/143/2 143/144/2 +f 145/145/1 147/146/1 148/147/1 146/148/1 +f 149/149/2 150/150/2 152/151/2 151/152/2 +f 153/153/1 155/154/1 156/155/1 154/156/1 +f 157/157/2 158/158/2 160/159/2 159/160/2 +f 161/161/1 163/162/1 164/163/1 162/164/1 +f 165/165/2 166/166/2 168/167/2 167/168/2 +f 169/169/1 171/170/1 172/171/1 170/172/1 +f 173/173/2 174/174/2 176/175/2 175/176/2 +f 177/177/1 179/178/1 180/179/1 178/180/1 +f 181/181/2 182/182/2 184/183/2 183/184/2 +f 185/185/1 187/186/1 188/187/1 186/188/1 +f 189/189/2 190/190/2 192/191/2 191/192/2 +f 193/193/1 195/194/1 196/195/1 194/196/1 +f 197/197/2 198/198/2 200/199/2 199/200/2 +f 201/201/1 203/202/1 204/203/1 202/204/1 +f 205/205/2 206/206/2 208/207/2 207/208/2 +f 209/209/1 211/210/1 212/211/1 210/212/1 +f 213/213/2 214/214/2 216/215/2 215/216/2 +f 217/217/1 219/218/1 220/219/1 218/220/1 +f 221/221/2 222/222/2 224/223/2 223/224/2 +f 225/225/1 227/226/1 228/227/1 226/228/1 +f 229/229/2 230/230/2 232/231/2 231/232/2 +f 233/233/1 235/234/1 236/235/1 234/236/1 +f 237/237/2 238/238/2 240/239/2 239/240/2 +f 241/241/1 243/242/1 244/243/1 242/244/1 +f 245/245/2 246/246/2 248/247/2 247/248/2 +f 249/249/1 251/250/1 252/251/1 250/252/1 +f 253/253/2 254/254/2 256/255/2 255/256/2 +f 257/257/1 259/258/1 260/259/1 258/260/1 +f 261/261/2 262/262/2 264/263/2 263/264/2 +f 265/265/1 267/266/1 268/267/1 266/268/1 +f 269/269/2 270/270/2 272/271/2 271/272/2 +f 273/273/1 275/274/1 276/275/1 274/276/1 +f 277/277/2 278/278/2 280/279/2 279/280/2 +f 281/281/1 283/282/1 284/283/1 282/284/1 +f 285/285/2 286/286/2 288/287/2 287/288/2 +f 289/289/1 291/290/1 292/291/1 290/292/1 +f 293/293/2 294/294/2 296/295/2 295/296/2 +f 297/297/1 299/298/1 300/299/1 298/300/1 +f 301/301/2 302/302/2 304/303/2 303/304/2 +f 305/305/1 307/306/1 308/307/1 306/308/1 +f 309/309/2 310/310/2 312/311/2 311/312/2 +f 313/313/1 315/314/1 316/315/1 314/316/1 +f 317/317/2 318/318/2 320/319/2 319/320/2 +f 321/321/1 323/322/1 324/323/1 322/324/1 +f 325/325/2 326/326/2 328/327/2 327/328/2 +f 329/329/1 331/330/1 332/331/1 330/332/1 +f 333/333/2 334/334/2 336/335/2 335/336/2 +f 337/337/1 339/338/1 340/339/1 338/340/1 +f 341/341/2 342/342/2 344/343/2 343/344/2 +f 345/345/1 347/346/1 348/347/1 346/348/1 +f 349/349/2 350/350/2 352/351/2 351/352/2 +f 353/353/1 355/354/1 356/355/1 354/356/1 +f 357/357/2 358/358/2 360/359/2 359/360/2 +f 361/361/1 363/362/1 364/363/1 362/364/1 +f 365/365/2 366/366/2 368/367/2 367/368/2 +f 369/369/1 371/370/1 372/371/1 370/372/1 +f 373/373/2 374/374/2 376/375/2 375/376/2 +f 377/377/1 379/378/1 380/379/1 378/380/1 +f 381/381/2 382/382/2 384/383/2 383/384/2 +f 385/385/1 387/386/1 388/387/1 386/388/1 +f 389/389/2 390/390/2 392/391/2 391/392/2 +f 393/393/1 395/394/1 396/395/1 394/396/1 +f 397/397/2 398/398/2 400/399/2 399/400/2 +f 401/401/1 403/402/1 404/403/1 402/404/1 +f 405/405/2 406/406/2 408/407/2 407/408/2 +f 409/409/1 411/410/1 412/411/1 410/412/1 +f 413/413/2 414/414/2 416/415/2 415/416/2 +f 417/417/1 419/418/1 420/419/1 418/420/1 +f 421/421/2 422/422/2 424/423/2 423/424/2 +f 425/425/1 427/426/1 428/427/1 426/428/1 +f 429/429/2 430/430/2 432/431/2 431/432/2 +f 433/433/1 435/434/1 436/435/1 434/436/1 +f 437/437/2 438/438/2 440/439/2 439/440/2 +f 441/441/1 443/442/1 444/443/1 442/444/1 +f 445/445/2 446/446/2 448/447/2 447/448/2 diff --git a/mods/ITEMS/mcl_bows/rocket.lua b/mods/ITEMS/mcl_bows/rocket.lua new file mode 100644 index 000000000..678aba4d4 --- /dev/null +++ b/mods/ITEMS/mcl_bows/rocket.lua @@ -0,0 +1,706 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +local math = math +local vector = vector + +-- Time in seconds after which a stuck arrow is deleted +local ARROW_TIMEOUT = 1 +-- Time after which stuck arrow is rechecked for being stuck +local STUCK_RECHECK_TIME = 0.1 + +--local GRAVITY = 9.81 + +local YAW_OFFSET = -math.pi/2 + +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 function random_arrow_positions(positions, placement) + if positions == "x" then + return math.random(-4, 4) + elseif positions == "y" then + return math.random(0, 10) + end + if placement == "front" and positions == "z" then + return 3 + elseif placement == "back" and positions == "z" then + return -3 + end + return 0 +end + +local function damage_explosion(self, damagemulitplier) + mcl_explosions.explode(self.object:get_pos(), 3, {}) + local objects = minetest.get_objects_inside_radius(self.object:get_pos(), 8) + for _,obj in pairs(objects) do + if obj:is_player() then + mcl_util.deal_damage(obj, damagemulitplier - vector.distance(self.object:get_pos(), obj:get_pos()), {type = "explosion"}) + elseif obj:get_luaentity()._cmi_is_mob then + obj:punch(self.object, 1.0, { + full_punch_interval=1.0, + damage_groups={fleshy=damagemulitplier - vector.distance(self.object:get_pos(), obj:get_pos())}, + }, self.object:get_velocity()) + end + end +end + +local function particle_explosion(self) + local particle_pattern = math.random(1, 3) + local fpitch = 0 + local true_type = "" + local type = math.random(1,2) + local size = math.random(1,3) + local colors = {"red", "yellow", "blue", "green", "white"} + local this_colors = {colors[math.random(#colors)], colors[math.random(#colors)], colors[math.random(#colors)]} + + if size == 1 then + fpitch = math.random(200, 300) + elseif size == 2 then + fpitch = math.random(100, 130) + else + fpitch = math.random(60, 70) + end + + if type == 1 then + true_type = "Popper" + else + true_type = "Floof" + end + + if type == 1 then + minetest.sound_play("mcl_bows_firework", { + pos = self.object:get_pos(), + max_hear_distance = 100, + gain = 3.0, + pitch = fpitch/100 + }, true) + else + minetest.sound_play("mcl_bows_firework_soft", { + pos = self.object:get_pos(), + max_hear_distance = 100, + gain = 4.0, + pitch = fpitch/100 + }, true) + end + + if particle_pattern == 1 then + minetest.add_particlespawner({ + amount = 400 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-7 * size,-7 * size,-7 * size), + maxvel = vector.new(7 * size,7 * size,7 * size), + minexptime = .6 * size / 2, + maxexptime = .9 * size / 2, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[1]..".png", + glow = 14, + }) + minetest.add_particlespawner({ + amount = 400 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-2 * size,-2 * size,-2 * size), + maxvel = vector.new(2 * size,2 * size,2 * size), + minexptime = .6 * size / 2, + maxexptime = .9 * size / 2, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[2]..".png", + glow = 14, + }) + minetest.add_particlespawner({ + amount = 100 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-14 * size,-14 * size,-14 * size), + maxvel = vector.new(14 * size,14 * size,14 * size), + minexptime = .6 * size / 2, + maxexptime = .9 * size / 2, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[3]..".png", + glow = 14, + }) + elseif particle_pattern == 2 then + + minetest.add_particlespawner({ + amount = 240 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-5 * size,-5 * size,-5 * size), + maxvel = vector.new(5 * size,5 * size,5 * size), + minexptime = .6 * size / 2, + maxexptime = .9 * size / 2, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[1]..".png", + glow = 14, + }) + minetest.add_particlespawner({ + amount = 500 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-2 * size,-2 * size,-2 * size), + maxvel = vector.new(2 * size,2 * size,2 * size), + minexptime = .6 * size / 2, + maxexptime = .9 * size / 2, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[2]..".png", + glow = 14, + }) + minetest.add_particlespawner({ + amount = 350 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-3 * size,-3 * size,-3 * size), + maxvel = vector.new(3 * size,3 * size,3 * size), + minexptime = .6 * size / 2, + maxexptime = .9 * size / 2, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[3]..".png", + glow = 14, + }) + elseif particle_pattern == 3 then + + minetest.add_particlespawner({ + amount = 400 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-6 * size,-4 * size,-6 * size), + maxvel = vector.new(6 * size,4 * size,6 * size), + minexptime = .6 * size, + maxexptime = .9 * size, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[1]..".png", + glow = 14, + }) + minetest.add_particlespawner({ + amount = 120 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-8 * size,6 * size,-8 * size), + maxvel = vector.new(8 * size,6 * size,8 * size), + minexptime = .6 * size, + maxexptime = .9 * size, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[2]..".png", + glow = 14, + }) + minetest.add_particlespawner({ + amount = 130 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-3 * size,3 * size,-3 * size), + maxvel = vector.new(3 * size,3 * size,3 * size), + minexptime = .6 * size, + maxexptime = .9 * size, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[3]..".png", + glow = 14, + }) + end + + return size + +end + +local mod_awards = minetest.get_modpath("awards") and minetest.get_modpath("mcl_achievements") +local mod_button = minetest.get_modpath("mesecons_button") + +minetest.register_craftitem("mcl_bows:rocket", { + description = S("Arrow"), + _tt_help = S("Ammunition").."\n"..S("Damage from bow: 1-10").."\n"..S("Damage from dispenser: 3"), + _doc_items_longdesc = S("Arrows are ammunition for bows and dispensers.").."\n".. +S("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.").."\n".. +S("Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons."), + _doc_items_usagehelp = S("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."), + inventory_image = "mcl_bows_rocket.png", + groups = { ammo=1, ammo_crossbow=1, ammo_bow_regular=1 }, + _on_dispense = function(itemstack, dispenserpos, droppos, dropnode, dropdir) + -- Shoot arrow + local shootpos = vector.add(dispenserpos, vector.multiply(dropdir, 0.51)) + local yaw = math.atan2(dropdir.z, dropdir.x) + YAW_OFFSET + mcl_bows.shoot_arrow(itemstack:get_name(), shootpos, dropdir, yaw, nil, 19, 3) + end, +}) + + + +local ARROW_ENTITY={ + physical = true, + pointable = false, + visual = "mesh", + mesh = "mcl_bows_rocket.obj", + visual_size = {x=2.5, y=2.5}, + textures = {"mcl_bows_rocket.png"}, + collisionbox = {-0.19, -0.125, -0.19, 0.19, 0.125, 0.19}, + collide_with_objects = false, + _fire_damage_resistant = true, + + _lastpos={}, + _startpos=nil, + _damage=1, -- Damage on impact + _is_critical=false, -- Whether this arrow would deal critical damage + _stuck=false, -- Whether arrow is stuck + _fuse=nil,-- Amount of time (in seconds) the arrow has been stuck so far + _fuserechecktimer=nil,-- An additional timer for periodically re-checking the stuck status of an arrow + _stuckin=nil, --Position of node in which arow is stuck. + _shooter=nil, -- ObjectRef of player or mob who shot it + _is_arrow = true, + + _viscosity=0, -- Viscosity of node the arrow is currently in + _deflection_cooloff=0, -- Cooloff timer after an arrow deflection, to prevent many deflections in quick succession +} + +-- Destroy arrow entity self at pos and drops it as an item +local function spawn_item(self, pos) + if not minetest.is_creative_enabled("") then + local item = minetest.add_item(pos, "mcl_bows:rocket") + item:set_velocity({x=0, y=0, z=0}) + item:set_yaw(self.object:get_yaw()) + end + mcl_burning.extinguish(self.object) + self.object:remove() +end + +local function damage_particles(pos, is_critical) + if is_critical then + minetest.add_particlespawner({ + amount = 15, + time = 0.1, + minpos = {x=pos.x-0.5, y=pos.y-0.5, z=pos.z-0.5}, + maxpos = {x=pos.x+0.5, y=pos.y+0.5, z=pos.z+0.5}, + minvel = {x=-0.1, y=-0.1, z=-0.1}, + maxvel = {x=0.1, y=0.1, z=0.1}, + minacc = {x=0, y=0, z=0}, + maxacc = {x=0, y=0, z=0}, + minexptime = 1, + maxexptime = 2, + minsize = 1.5, + maxsize = 1.5, + collisiondetection = false, + vertical = false, + texture = "mcl_particles_crit.png^[colorize:#bc7a57:127", + }) + end +end + +function ARROW_ENTITY.on_step(self, dtime) + mcl_burning.tick(self.object, dtime, self) + + self._time_in_air = self._time_in_air + .001 + + + local pos = self.object:get_pos() + local dpos = table.copy(pos) -- digital pos + dpos = vector.round(dpos) + local node = minetest.get_node(dpos) + + if not self._fuse then + self._fuse = 0 + end + if not self._fuserechecktimer then + self._fuserechecktimer = 0 + end + + self._fuse = self._fuse + dtime + self._fuserechecktimer = self._fuserechecktimer + dtime + + if self._fuse > ARROW_TIMEOUT then + self._stuck = true + end + if self._stuck then + if self._fuse > ARROW_TIMEOUT then + local eploded_particle = particle_explosion(self) + damage_explosion(self, eploded_particle * 17) + mcl_burning.extinguish(self.object) + self.object:remove() + return + end + -- Drop arrow as item when it is no longer stuck + -- FIXME: Arrows are a bit slow to react and continue to float in mid air for a few seconds. + if self._fuserechecktimer > STUCK_RECHECK_TIME then + local stuckin_def + if self._stuckin then + stuckin_def = minetest.registered_nodes[minetest.get_node(self._stuckin).name] + end + -- TODO: In MC, arrow just falls down without turning into an item + if stuckin_def and stuckin_def.walkable == false then + spawn_item(self, pos) + return + end + self._fuserechecktimer = 0 + end + -- Pickup arrow if player is nearby (not in Creative Mode) + local objects = minetest.get_objects_inside_radius(pos, 1) + for _,obj in ipairs(objects) do + if obj:is_player() then + if self._collectable and not minetest.is_creative_enabled(obj:get_player_name()) then + if obj:get_inventory():room_for_item("main", "mcl_bows:rocket") then + obj:get_inventory():add_item("main", "mcl_bows:rocket") + minetest.sound_play("item_drop_pickup", { + pos = pos, + max_hear_distance = 16, + gain = 1.0, + }, true) + end + end + mcl_burning.extinguish(self.object) + self.object:remove() + return + end + end + + -- Check for object "collision". Done every tick (hopefully this is not too stressing) + else + + if self._in_player == false then + minetest.add_particlespawner({ + amount = 1, + time = .0001, + minpos = pos, + maxpos = pos, + minvel = vector.new(-0.1,-0.1,-0.1), + maxvel = vector.new(0.1,0.1,0.1), + minexptime = 0.5, + maxexptime = 0.5, + minsize = 2, + maxsize = 2, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_rocket_particle.png", + glow = 1, + }) + end + -- We just check for any hurtable objects nearby. + -- The radius of 3 is fairly liberal, but anything lower than than will cause + -- arrow to hilariously go through mobs often. + -- TODO: Implement an ACTUAL collision detection (engine support needed). + local objs = minetest.get_objects_inside_radius(pos, 1.5) + local closest_object + local closest_distance + + if self._deflection_cooloff > 0 then + self._deflection_cooloff = self._deflection_cooloff - dtime + end + + -- Iterate through all objects and remember the closest attackable object + for k, obj in pairs(objs) do + local ok = false + -- Arrows can only damage players and mobs + if obj:is_player() then + ok = true + elseif obj:get_luaentity() then + if (obj:get_luaentity()._cmi_is_mob or obj:get_luaentity()._hittable_by_projectile) then + ok = true + end + end + + if ok then + local dist = vector.distance(pos, obj:get_pos()) + if not closest_object or not closest_distance then + closest_object = obj + closest_distance = dist + elseif dist < closest_distance then + closest_object = obj + closest_distance = dist + end + end + end + + -- If an attackable object was found, we will damage the closest one only + + if closest_object then + local obj = closest_object + local is_player = obj:is_player() + local lua = obj:get_luaentity() + if obj == self._shooter and self._time_in_air > 1.02 or obj ~= self._shooter and (is_player or (lua and (lua._cmi_is_mob or lua._hittable_by_projectile))) then + if obj:get_hp() > 0 then + -- Check if there is no solid node between arrow and object + local ray = minetest.raycast(self.object:get_pos(), obj:get_pos(), true) + for pointed_thing in ray do + if pointed_thing.type == "object" and pointed_thing.ref == closest_object then + -- Target reached! We can proceed now. + break + elseif pointed_thing.type == "node" then + local nn = minetest.get_node(minetest.get_pointed_thing_position(pointed_thing)).name + local def = minetest.registered_nodes[nn] + if (not def) or def.walkable then + -- There's a node in the way. Delete arrow without damage + mcl_burning.extinguish(self.object) + self.object:remove() + return + end + end + end + + -- Punch target object but avoid hurting enderman. + if not lua or lua.name ~= "mobs_mc:enderman" then + if self._in_player == false then + damage_particles(self.object:get_pos(), self._is_critical) + end + if mcl_burning.is_burning(self.object) then + mcl_burning.set_on_fire(obj, 5) + end + if self._in_player == false then + obj:punch(self.object, 1.0, { + full_punch_interval=1.0, + damage_groups={fleshy=self._damage}, + }, self.object:get_velocity()) + if obj:is_player() then + local eploded_particle = particle_explosion(self) + damage_explosion(self, eploded_particle * 17) + mcl_burning.extinguish(self.object) + self.object:remove() + end + end + end + + + if is_player then + if self._shooter and self._shooter:is_player() and self._in_player == false then + -- “Ding” sound for hitting another player + minetest.sound_play({name="mcl_bows_hit_player", gain=0.1}, {to_player=self._shooter:get_player_name()}, true) + end + end + + if lua then + local entity_name = lua.name + -- Achievement for hitting skeleton, wither skeleton or stray (TODO) with an arrow at least 50 meters away + -- NOTE: Range has been reduced because mobs unload much earlier than that ... >_> + -- TODO: This achievement should be given for the kill, not just a hit + if self._shooter and self._shooter:is_player() and vector.distance(pos, self._startpos) >= 20 then + if mod_awards and (entity_name == "mobs_mc:skeleton" or entity_name == "mobs_mc:stray" or entity_name == "mobs_mc:witherskeleton") then + awards.unlock(self._shooter:get_player_name(), "mcl:snipeSkeleton") + end + end + end + if self._in_player == false then + minetest.sound_play({name="mcl_bows_hit_other", gain=0.3}, {pos=self.object:get_pos(), max_hear_distance=16}, true) + end + end + if not obj:is_player() then + mcl_burning.extinguish(self.object) + if self._piercing == 0 then + local eploded_particle = particle_explosion(self) + damage_explosion(self, eploded_particle * 17) + self.object:remove() + end + end + return + end + end + end + + -- Check for node collision + if self._lastpos.x~=nil and not self._stuck then + local def = minetest.registered_nodes[node.name] + local vel = self.object:get_velocity() + -- Arrow has stopped in one axis, so it probably hit something. + -- This detection is a bit clunky, but sadly, MT does not offer a direct collision detection for us. :-( + if (math.abs(vel.x) < 0.0001) or (math.abs(vel.z) < 0.0001) or (math.abs(vel.y) < 0.00001) then + -- Check for the node to which the arrow is pointing + local dir + if math.abs(vel.y) < 0.00001 then + if self._lastpos.y < pos.y then + dir = {x=0, y=1, z=0} + else + dir = {x=0, y=-1, z=0} + end + else + dir = minetest.facedir_to_dir(minetest.dir_to_facedir(minetest.yaw_to_dir(self.object:get_yaw()-YAW_OFFSET))) + end + self._stuckin = vector.add(dpos, dir) + local snode = minetest.get_node(self._stuckin) + local sdef = minetest.registered_nodes[snode.name] + + -- If node is non-walkable, unknown or ignore, don't make arrow stuck. + -- This causes a deflection in the engine. + if not sdef or sdef.walkable == false or snode.name == "ignore" then + self._stuckin = nil + if self._deflection_cooloff <= 0 then + -- Lose 1/3 of velocity on deflection + local newvel = vector.multiply(vel, 0.6667) + + self.object:set_velocity(newvel) + -- Reset deflection cooloff timer to prevent many deflections happening in quick succession + self._deflection_cooloff = 1.0 + end + else + + -- Node was walkable, make arrow stuck + self._stuck = true + self._fuserechecktimer = 0 + + self.object:set_velocity({x=0, y=0, z=0}) + self.object:set_acceleration({x=0, y=0, z=0}) + + minetest.sound_play({name="mcl_bows_hit_other", gain=0.3}, {pos=self.object:get_pos(), max_hear_distance=16}, true) + + if mcl_burning.is_burning(self.object) and snode.name == "mcl_tnt:tnt" then + tnt.ignite(self._stuckin) + end + + -- Push the button! Push, push, push the button! + if mod_button and minetest.get_item_group(node.name, "button") > 0 and minetest.get_item_group(node.name, "button_push_by_arrow") == 1 then + local bdir = minetest.wallmounted_to_dir(node.param2) + -- Check the button orientation + if vector.equals(vector.add(dpos, bdir), self._stuckin) then + mesecon.push_button(dpos, node) + end + end + end + elseif (def and def.liquidtype ~= "none") then + -- Slow down arrow in liquids + local v = def.liquid_viscosity + if not v then + v = 0 + end + --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 + vel.x = vel.x * vpenalty + end + if math.abs(vel.z) > 0.001 then + vel.z = vel.z * vpenalty + end + self.object:set_velocity(vel) + end + end + + -- Update yaw + if not self._stuck then + local vel = self.object:get_velocity() + local yaw = minetest.dir_to_yaw(vel)+YAW_OFFSET + local pitch = dir_to_pitch(vel) + self.object:set_rotation({ x = 0, y = yaw, z = pitch }) + end + + -- Update internal variable + self._lastpos={x=pos.x, y=pos.y, z=pos.z} +end + +-- Force recheck of stuck arrows when punched. +-- Otherwise, punching has no effect. +function ARROW_ENTITY.on_punch(self) + if self._stuck then + self._fuserechecktimer = STUCK_RECHECK_TIME + end +end + +function ARROW_ENTITY.get_staticdata(self) + local out = { + lastpos = self._lastpos, + startpos = self._startpos, + damage = self._damage, + is_critical = self._is_critical, + stuck = self._stuck, + stuckin = self._stuckin, + } + if self._stuck then + -- If _fuse is missing for some reason, assume the maximum + if not self._fuse then + self._fuse = ARROW_TIMEOUT + end + out.stuckstarttime = minetest.get_gametime() - self._fuse + end + if self._shooter and self._shooter:is_player() then + out.shootername = self._shooter:get_player_name() + end + return minetest.serialize(out) +end + +function ARROW_ENTITY.on_activate(self, staticdata, dtime_s) + self._time_in_air = 1.0 + self._in_player = false + local data = minetest.deserialize(staticdata) + if data then + self._stuck = data.stuck + if data.stuck then + if data.stuckstarttime then + -- First, check if the stuck arrow is aleady past its life timer. + -- If yes, delete it. + self._fuse = minetest.get_gametime() - data.stuckstarttime + if self._fuse > ARROW_TIMEOUT then + mcl_burning.extinguish(self.object) + self.object:remove() + return + end + end + + self._fuse = 2 + -- Perform a stuck recheck on the next step. + self._fuserechecktimer = STUCK_RECHECK_TIME + + self._stuckin = data.stuckin + end + + -- Get the remaining arrow state + self._lastpos = data.lastpos + self._startpos = data.startpos + self._damage = data.damage + self._is_critical = data.is_critical + if data.shootername then + local shooter = minetest.get_player_by_name(data.shootername) + if shooter and shooter:is_player() then + self._shooter = shooter + end + end + end + self.object:set_armor_groups({ immortal = 1 }) +end + +minetest.register_entity("mcl_bows:rocket_entity", ARROW_ENTITY) + +if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_mobitems") then + minetest.register_craft({ + output = "mcl_bows:rocket 1", + recipe = { + {"mcl_core:paper"}, + {"mcl_fireworks:rocket_2"}, + {"mcl_bows:arrow"}, + } + }) +end + +if minetest.get_modpath("doc_identifier") then + doc.sub.identifier.register_object("mcl_bows:rocket_entity", "craftitems", "mcl_bows:rocket") +end diff --git a/mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_drawback_0.ogg b/mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_drawback_0.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f4f81b30749b453245ee3b3280244ceecb167fe0 GIT binary patch literal 13529 zcmeHtXH-)`x9ADI*MNi?LJLiL7YMy0y-Dbyqexdof>J{fkS4u1=>npHfJhOfNf!|i zq$?_-B0}Cl{l5FX@7;CpTkEd(@6DP_X7=7Q`^+vgd*+;r9v#Nq_~8PxP-V29QiIU`kz_wYOtBoau@J`LjcQ*UOcyl|Glp1o_CQZHd8&11MeY7^vA<;S$ds z%K{d0>;XgERrvuFLe<5$C?tpAw+$t?%kLU1ZdaG3DDEIzC)6oLTVLrLO3YZfHgu7o zZv>7hZ07$h$bZiR4nB)I3CxX7o$PG*c)`k?0C1>3(}Dw7aGHQl8dR?tI?~KOI>~$S zi-;+s%%qf-xrLD>n1a#PA(*+4;JJ_p+nkt79TB!2F_-3J(BEU6Sz`a@9}&yn&+_l7 z!y!O1k3!a(U@3yN^qoQ}VRURA0pNBf5;%D}LNL8duhQMS!7H!b^M1SENQ=lw3)OED z00NSnrDCt#%Ksy~+h$?@`;77&5&}@5EC;W$4_@WfGUFW#5F!07;UNIjDauTwKR{Y1 zP@PrRn2AmW$XEv|&jlLIfucB*$bX%p ze%lK;5$*!_EN?8CRI2lDv0%YrSxU$>sQz#Q3F1rE;kgsJ2crr!x$lc>pm|fh2^M(* zk7{!AerwQo47LX9QgHZQfAPJE+`utCs@#e{wQCG{r1dqgKp1Q@pJo8&4AObM$|bE? zumStpPULP>KZ1g_gp53awnr9!#`|j)H4gb>y$Y*fkA&BGK99)JVC~2)|Klk68SLN9 z2LZg8PJN8+cpXV8x(YXD%xi4 zgex-4^aU&acoe8qxLc|k3GBC%#O4GH3s!+%@vn;e#5+#UG5Iff{4={L10R?tB}L7p zlr1eRtwa25vx65O#-Qhem**mu=aL=I#s0ft{nK**&}pK7`(%bolEh&CZDV!vKMMYb z=Ujyjrm??B<27jEHF_m7`bGNUf%GJ!mZ`LnITL!4DR_z*V=jxHlEF+_VrD`x3+%9?IE(SLYOF*49J6#xJ|sZ<8P*AY`Q(HS$D88cB!3+4aXV?gYTw9%9_DA-H@ zfC0dIdFAwV8U~kCg#Q{q~C6`DOM=aj87odLOvWU(yk^ zBqrCp>8gpg514VkuO~fDsfj%6PVWfT?Fv8pWuL zV$}N6{GXK|BWY72F#jC}WHf03nUwy^3*^!xrG=6Pcar~k`cHV7%0Mpu3on$k5z4~o zf6nRukMRE`@ZU-RG;s(G_+wTt;T9&q%0qy-HB>rW?~^pv)%MecFjhmx6&vOYw7H~H z|L_iQgZ&~M#(9CZk~~$KwvcrEw%0!+LjZmaL==L=x@U;Z-hbFN_#mGQ87s*rqrC|( zOhtP=lXkBC&mRs809XhqfCU(bQU83VGF=7$kWY8B1>+0dbPNQ*Vr&aZ0U#Z7jq^Vr z=Kmi0Zww(=Bml&f+A#aGj}WA|+M?1$D4lEpBf>CN6clnsOmOyeY|?zpq)2HuK7fuG zSn-FByplFum(Qy3Djm8iVlbtdh5>`11cWqLr7zsPR!Kg70L~kUEA=7(w--?C#Ajlc z_0$)kG4UMI2jILw&#HXZ`)j3092h^<4qp`+InXqP8kt+7v)630HWNybxs|n#&x4G{ ze{WG>aOau(Pq4HR6kLVD)fjy)cO&6!gxcB$N|16&+6bhaBQEvKt*og9cM{ZZ!kJ+7 zx%e|!Ex5Z7oDo@~=Q1%^FRw!UB3oiZe}J(3}89r!JiFTOl%zy@CA(aTr*r=Ds1wq>q~6p2QqM1 zuz=xB4b=54#>q&R0OMq1{TDePOrXLIq|3i+rU=4lz~Qt!@e*Ve<drIz#47)_pc9uL}ZcuAJAk0-t zzYT5C$VXFm*LqDPIFO^*ax%)9=GJ00Xxue$T3ODqB9wRW5fVTSsp;~v8V~a zESa6l$j@pV6iB2~g z278<#Kz4i;(|>v(&mv*{ntviHGBV75_a*xsB7;ZKvq+TzwA~CduwM+w<4^1i3WNgW z@f)EJ9$BI4GR%bjG{NPU@ND(t5fXiFEY)y!g~w# zK^Abyz6Ah;^pcEZP*hYD6(En&O(g&*D5*I5v{0z?++{t*{)X}b1+oC37XOkiA-*3j zQNoH8swBkr6UW{Fh9>59pLAf)6WUMoqe<1t)ah>7u%jU4^75;(0&hP>v*j0?TkN1f zJ^;W8tbohc0)Rl2-do%H^aCKLhj9x^D5%l@Mk@h706^Ca8z1kvA+LBr1*NX3t*dWn zYyvKCkl#BY3V@K2{W)-+waLi--gF56?hl;ZbewIAW$T}`(3w!{Ykgw}-%m_XqKM8B

f;m2@iI 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�RIDaq3pr3&2e)p%3JgIJo9SYPvCD-qn}cSOHJO)!ik!QXO}FU8jhBy zwHa?z75N{i*((o}9`wl~^m5fDk9Vc*XE{qGz;?9C6oHTd%DCDzc;jWw6%{yaIE>pvc?tn&gEWPh}go$Rt3IO1JX zKdgc>(6q$?RKPip=aOp53YFpRWScxkE%0rRfZa@?9@%L-sd|Z$m#RHA7p#&-%`1BU z?C;7V-?i(F&?cQ64L%2*(O-Z1pkEUrdgX6=@djJBazi3%(I_>b;cdib7hfH(=;inH z(FMx4lYu5~oR>DulE%Vgr&MjI@#kK8QX~=9#F3N_pVV{bSC!6XK02~07Wm@{p!J|K z`{wt1S7G=wYYZ#C&%hM-FExP77pQrtGm#QbJt!>~xH2(qZ5G!T%xwO)a?6&y<+YEz z7#_93AP8x=dwW8MX8Nst$4o+s@1EVDkCYrU(Oj};T2I(zMk1;5?TF+kX#~Xy6H_K; zgWZr|(xHo;4OztO`c#4BO*d~Hin%G^c}y(i)JCC!sTaZmd$*58BG-qp#~a-u4}@*C zh{BA2yg!$NN~LRO@Vj}NWotCSdVwSY!HAZL$ct)S^uvg~E<0sA+G4X~u; z5sX^k15BgX5X?2s(%GNX4&Sr}oN}w|nvkwJdX%RYhid|GHc_Z(L^qzvlF6ZveTy_o z&K(w%k551L`ueBgX0FBRb6ayeLcsdrI#7$Mqfz0yiAtDUkbcnDcnKc$W^Ui9+}wGv zW!+6ST|*)gnaE{n;p^2op^VxToJ+JJ8w;KpFl%)$Xq~A`77L}&ozn%2G5O}ZQ0)4_ z6qxH;)UPxwxTst{F+n?R+8csy9~p_-ESCqzi-nvf-Wc3J>2y>EXhlkIySZ0xo(Q`Y27LSC}jZ))CzPAS!l~ zN4oOSU^oEUkjsUxl^nT<8AI*29A;4?n4G&$Y8qdkGqb|5hRVp`Cb1`Bd z+Lnt&sv|gAO%ZXoa6edoPso6rI5cC5!dYyON1-!_NNKXVILlM2gn?hsR|U1I3C*bI z12l0I2~n|btk+~|T=7mIxLYU?N`(@-%#NES!Lb^!kpIL5Lo;}wDCqoY!~13BX(=IN zLU`1HQ3@IOU=%{^&yIU+HJX;>RxCJG`QUermWL`4>8XhT6_%renL@9uC$~JO)sOh< zvWCSZiGbO_1ns6?>t{r~dihP86*|oVDBLVIs(na}VV=d_hT0~t*A@EUrIUoosGZSK ze*Dr>FC}Hb)g=oztSV0P+i_&~+e1B4Tt#JDClTK<0J$-H!7cjnZaeoZ-&h!kG`uwi zn{hEcKrrtN!vSc9^xhC7fXS@qet5ZiE;RQ2+Lz%zvzOw553`hlg|3yIqt8zJ?#5+l zKbF=~jQiB0`j!AuF3^1n1Z8$k${4ArJi>~j4%VmWfr$DD3?_D8Lf@tH#s>v(CoAE> z3VX8V(|G*0b7aCt-be7eCSVJQ4*OU00{Oa&S z;!j6z)0K*f3`OHAILD*GDzrkridtj}MSx_1^728Fm@O3`!I@pBR}OzOt6sJ2-uMub z#FI)m9k(PQO7_R>IdsS@2{%Rlw*GKR^?+>aI;!WM7rQZ(*zDFVXj6)j>aO3AfH9Fh zOyD8>F=ZS}Hf!2ipw}GC80J8ic<&2CuU@y~Q3)FDaCCGHUT;JT&{@iQ6Ljv6WOCpoOV=?JihL$IGkQ~v?YvRa)8DM-Ai-Bzd>SsJJdVF-h zez%Z&?(EqwNrnQl9ymyr@E8}S^^Ef;;k^s}LANK9N?^MP>w?ud)i!=_Jbgpawaa^> z0AbUYbMGtCM0dl{;vtN%TQWAZxb*sONlIWu-96a$qpL&C0B9Qo5?U7t0!3I7D1 zZa5W@*N{J^^mJF#q>{CZ+2+Q)m`1N1$@X{d8BFA-%#26_TepmR>sUE%uJu=Knli?tKq33-*no}69J^c zGNM<|@-U?0vXJ&i+<7@B2=z_Rq*j&613J1x06*BKN6;fA3q(=eCCu6NK|-)8p?U9& z5b~sg(Op8x;JdCAMzfGoFZ#Vd9(ZfE-Ra&^-y@9=!dBt7>eN;yDH;0e9wZ_h z9re>_Gz`7GAG6aDd~NLGboblGE3@ub-(-Hjv>%&^u+m zF&i}~xiw{PDG`t2FI|reXAckFX!~=F90NOfwtd4p%G9|B_u(57k}pgJ^zLlC^QWh- zL4Z=bZ^p0)DP&{nc?@$Li!m%#|Gd~EgG}OPag;lDjppmSM7jy!)QhoTH>9K7TTO-RN@4N2$A4m^ z0wI|wlGu}m;5SEqZwZuGHQ<4D$h~TwX|*rS_Bnj}Eu`-aYpiSD6(|^|nHfR=)ZxyM ziVar{tXlmWXF}wcT{x>}r*{FLM6_I~v{x%bvi@a3=AO;p?I@DOI)B^OWpl|un02qU zGJqf~UfjL8J0Pyhefq__S1ns4WIMwraR+^-XR(=Dk@JK*UjbBpp>HB-&vMQ&~G@^V7F zmz(?H47oK38S1(5*^-SLOYZa92ecs%9%1=n*$4G(S}Jqc=W)<_$M1yW(gTk zOb^P<@9qpOere8?;Vx!N(my8vVOZJF@defu1j7IZMg9!wMRL0$t;@~JUF)mC$5VRn zSZTQk3JGTlky&h6b^QL*pXGYftPVVkiSoPMq6Ni2kp{n|!d4*9P$a0cvACO|{Hr4M ziu(&y32v_0Hh`A0z}lob`M_5*i!nVSKO(m)>Hf##{i^4{{W~rMnE+L9G2Sa(9cY6e zB9}Ar52LkxsdFmD!H~)F)kW!|LJ*uH5`G%v%PMnXv4$ZJp!`+zIkZ*^aa7{tQqX8; zyv}rAbqZK-e~%=T*Z~h-?7eC4P_b-D%cp&{@9Fm^Q(s>j9sdeTxJq&MFwtp(B3Ru* z`~}CY$Azv3qNd;101d-+{#un_8Mll~>fXIEut5Udi0m}zUNTXH8~~`_&aZszZ&Xk7 z@SVS4|ArH9>vBMXsW=1jR=pZ?2ax=bXi0aEHM5;4kwj#rNc=&q5lE`DaM5x;CwS~^ zor!bzR+sqazJOAfFpF2|Y6G}v&!nu8Zla#h$(5;;#smf*6W_)M7-(2dLze0e?I z=)*vuuy*L%__Iq{bWJAVWkt}tabJXuOS1S-T;Bu$yh=P*HVRo%RR>f?x+6+=NeISm zyBmX2B!s@y+j{1~nut-jG^4a`YHXJ)EfuYY*3+%LoceG_o3nl3Y3t#pgH~1)MmN=3 zz&^yT#4;g;B7|%!88Wb}uv6Cyd(F0NogwG!EF3zS!7%fWHg}k4u+j^(;S7?C>fR>A z6)JbdUN3Cb%_Y5mLSEf?OY%v()4b8>*iruDeip9Y@I>`%GV0>jZ;rX?cVJ#8UKt-U ztvML^RtZ35FovIFGDq=J4h5MR!lY}n)y=Dl?lO8Rm85q)&P?fdgw>XRO*(B~b4K6yeP`Sm=zyZ&gu*5zaB zzDWlN4&A!7BuyG(nHVJlbuH7Zq<0(AyhpSeifgz_r1yd=tzuYokRmNs6@g7DkO+Ec zc}wdk56{{;uI-g?XggJDgP{A`k%i=9<3J+y@+&jZ$yHei&eHAjUdKREz@fhNQ+K{h z@A`HXG2OCJ#k7#V65w-agJg32gR_ZmQ?oo|N6+oKO5FI6tTI|dJkVgi_R%)vtz&li zo_do5=&d_-U!DfuB*68kI3>1b3YroE_+)J&nf#1oC>Qz-}lWR$I47kH*^#9kw5m2*oG85 z8@ic9kMe~aJdexap1!MR&*iY_kdc54s|DUlC81nZl+wTB#7<~Xr? zNQliG6|$`xT^6SgCzV0J1R;&$!BMd1)o2=La_^}fV`@QZ+4yOiZEMfvjYcsThX3o( zJIqe-rhL;`b>=>`B)2K|i@J*+_o|XhkL48Tnh&j*i1i(f0vsrz@Y^t#p=qvE5Q)!80O+XJ6Yf3#Q1-EqBodgo4aC}{NgUX^^9;k8GiT?UEYKXjMDX>Cc_}U&**4*Jkm;1nT)jW!=?Dx|6X0-=lZ*(D#vvS-!kZ?X4`Vz z%ZD(^ia2&!Ib=`5RhK8_-x}4qec+&PaZ}chM7bg4%L^=POX8uW=C_3dd}y0sO`Z-_ zrZXTjxH4qw|Hg)HH=-bQ6k!hHbJ zDUoi|6YsDl!Qo=UN~o^cM!r<&bLE}Sg1?j?S33Yif!m7nzpN?$Y0p+evfUMZY5wc=Y>*GTS z$6P#lHLYVD>zYEkmu1boM?p%(Mdp%}_2--6inw+&pripgNE-M%U4K;o_Tw2<+{dpDBq-4Lx`nEua(_1$v-VaNF(E^k#9`g2K&Oyl$Eaau z)adr8-`b+qwI>C&eRG(3x4CyC@o%0ZcM)TkoJr4orGI!%B|hhYbB+l$-!v%Sd{^BxWc0)!lMG=6G09>vp71lRC-bz+kb4j^WWC*p0g(26snNtP~uJh z<~dyi19!-qnr(dF&hK&65G2rTl!bp+003RN>fUqb2#sz#N_QNk+cFue{(FysMn@fd zhaDin76G6Sz{Bd=k=>eF;khoEBrby5ZO{|!`g?g*aCSzni3jz$QQ&2iQftW|HBD#a z0Vl>VfsrL@jPxYgw)N7D9!XT7V-Eq2=mX7*Fauvj18+sh^W=p(419H9SG48P11eoZ z4n*x$L~Y7^_djbPMh-M3sD4`pVl>2n4LN+{1##(GP9Zu#k>o!w|AH6I5$69lUPK39 zBE$DT=k$Lo{GSB=tpp$whiO88x^72|tQGjqFpx1x%*Rn*Iq)NbUaj1T_0gVS>#kf- zsxthScR&I5jl<5xD;LzN<~l4mq;f4K`g>*waJ!&^LlCj2eBjBszw8?NkXJt1wW>p@ zF$yb(Q=`v2gh~JP$MFH+!&CqtX!jGpe^ZsG768uqkwH*?;h7%=1N^9bP7YKamd2b$C>gKq|#$*5aqCgFGP6*F6Nfj)=8mALYyNUO$=Em zkmICKbWxBKF+*+?Me(Ddd7Z~>6dCh<{Yt5Hs`Hrj0Duyx--@Dwlqcl9W++9U=z;-U z7sBPB& zy=-fW>2RZ>e6KoOHJxq=2Yf?k=#Py^OK(sDZ=h^1qA>ij%M(*KFT&&U1TCW)Jt)1Y z(}|GhIEDEHC{OnDx>N$;ENUVly7B_LD}>X85{_*UNp&IJ?P+-elz&t}Brrgnm$oq0 z&rXXmCvFVrnvkpOkOd@eYJTmmLl#ip8k1i=k11Vw?VI#>9r`BY_z*}NazU95$aPdF zl_H_uFeIondA=)^PM>d+%l}4V*e$v6r#rhKxhF>HcgVxHjT!*{TLG|Y3QJ5a5X-ut zK&K#&m#GAVC6se18&#v+JT235|6lWm@u4|<)VCXoQ+C)lC=U7eTgyN0FaMj+IEUBR z$^v><(-et8siNf#rWKeR<%QU0Er3vkv`!Kbo|+csdwF5pvR&|IMa3Lpqnm($sHq;| z#1eF`xu_heF60O;+a5p)f^g7QIKgU0HHDlk+cv$jSR+VlJO~%D+^ZGBL0jS3c%6iB zvK~F2h=MO$Cm-cCI$AzT@Rp5oA{tuFtFrUuxQ5m-<3hT9uTCHYm8RPDe$V{RRE?mr?Q_M-| z4hflFuiV1qc15q&OMuJ_mny%BRU_sGNKkqS=}bT3uYn_}`SgBhhI{~GXI3*ZKLan% zguUv%57ZPE(&y$P=2B$nDk{%ZwIJIqq(k%4ARhC%Gb9is#A9y23%auExT($$6y`&8 zHQxpxM$r1-1|UYzGV?PaK%RmZ$!X=lTw5oHpzeG-KTrcPf{^nlIU}h1ZM`{0g>J_x48Q%by0a`AY+OM@d02ln1GJ2-+-~P_~7KzSD%0? zTHnZ$;6g&r4gUZ>0pLmJ3k2N9&aNw06Wz!jo?bqF0nqUVn~Q`*07D?=FP!o|0`cvo zW9~Hq0QpOYJS;x?v?XUXOkODN0e)1kHGU2&oxQz0*LeH*czdt$_40J`Ad`JOy;uF< z>_YYPU$e?(rL)TqRH_%nf7Z>*hwMWINM!)tDSgd!BKqN8NG+cFx4_~R;?|a`n)h7_ z#f66XZi)`ksQPfU^V$l3-Vk>%#uf{&pE|NTI-_%c%WC00{hJ#;ePoyOL zV=*t^$5r8t@z_VR+Gt9K2byY;z&riKB)O)h=B7YYD>CN-1I+<_?T?zvbgs1+{sX*I zDy~&3QHxol$!A)NJt$1_P~GdeTZJXYW44Spo0c*uqmpo0sG+o^s2-a|VlqfA6aLzJ z%WuE-YF>J@N%J{n$Eo~=0m}yWpNDLxY>gF3Bz8PWX+(nU5lf{k*~P*bu)-`DpjovX@v51aGU??T;&{+3LNZNgB=L zzzvOA%tn@@n5&}^7dS3u@pRA)G0cm;`D0#xF1*{9v`mZ-XVyCk@e1lMyvWt6SDF(< z$~(-AucvPK?WD&NetCI$Fp7_?RMFdZbA*)4<-FMd_!-FAW$&ztn4OnHo1gqE$Uxftbv6IP*;Xu1>2~ajq zAt@8RRksGAi<{J|D$(TDvPIn%W$PC))h(iytWP9af)-e!l4nwxVC1w@We%v@qMg_I z5!QF><8W&zmW0D3*!8)FC-QGdRQbkiOPE&98OSq1`r@nfX8~j+T#@cdL z%i`kxN6Dl6z{7`n%JNm4=;v+F5A!Q*_gf!Qihp9WZP$f1|K`J7cvzfK} zUb7L4j{7k3_ZA&#`SBNiUO|DHaR7{wJ%D(%Gn>t1>WDl7HbKFcj20Q6z4qYcWbKDD z=$}r6Q$Nq<`%^}dLJy$x$M!+uoiEg$grDzkQPCK=a+tBQ{a&fDbyKQS9su2(Y@wB| zXbih90M1luOs0(LQHqWam`OcaJ)#H-V$S5i;pX0C%#Hd6b%iAAMpahCtwlE>n?y1DPPJIiQO5tLWva5WuogZ{_2VmLGUu^($5L9;7WJ{ z|0zoS*=sM_CF#{AQ-wdDqBEMMZ!=sU+42VLmzyccCIAYZLKu@W8--jQ_`1ZgKfj*d zA2@`^io|^%_TG|SsT<*@zff!*@~Tj{+m6fGZ9 zr7%rCr%5Jb!x5M6g{!-kd;B`fW{k_c0zz-%Z^OJx zDWmTnJ=OoL$-ZtQJ+^GkwZZnb&E)VDOsWeI(6VVVWswvwH0A`@vWTO4C{Z%akz=S} zt;>VSJdIM(JdD8_<*ue2c*BgBIOo^);li2H{WH>N*U|Ak2CI_(2Htk1=<8>fuY|cMNHB~ZkBmkuRw5T(Z#>2&<=om~ zao}Z6{9$A>+Ino_%!6}Swgg^`9GN*~kQ(#T)eEkN52OTK8Q8V6zR2D<#4XvGN_H>+);pMC(z55(lE>bM=4(-j%kpv z8R$k2OiQv=t4X#Vj}iCFn;6lX=0vuILd#cVxs8_Z+HqOzEXFy=wDee0#0<~xr=XxiON%0q>$%sBSC}{_6QTWC3-Z1!hMau_DI9%dU@Lu1FN=*=bc6WUc-B`cKuU-viHntvmZ> z*Q8ImAIN^bJ>hEjlm;O&w!JJtH*kxfPDLTNAi_Q#cq#0$Jcb{*A845nbG-Z(asa(X z&G7l7ot~o$j84PKf8TB#eqcsocjzzR7eFG#+qx*20qWxY?w<;2Iz3}j`j@1A&<&6^ z?f#-w0Qs#%cSYuQu1)}R_FiG?+uDM4(1A9PdDG;Qlj+q}h*`lS^7FjNMOsf5r?$6Y z?WvI@$jJ4q1p->5K-pmo$+~Ms+`Qi6~LQ+k2S z3|en&tH1YcSBMc|+Pm6pa?3Bp?+fA4$xWF?p+uRow~u4PB5o|1XQ<2&`5B%IIT8+~ zP*)9XI6Yzx(K@-&t)4AYkm5LS3aI|NCp$XOa-q%eFROc7>I&70m*5ETE0s9Po?NLlzaf|EmlMVXU7RZAl)_^#w_IH%9*LQ)c<|&SJID5`laLD=fn{}E z+V=(ZCfKk^P-f7#!04JGA{Upk&k+n-?JE)JWjxwf7}8iNmSQ9C@G?d;uKhTi+)mPG zRB_d-Rn@>mw#?w!a4H;Z?PY6zP*FhSUm#Y4N|@*58~g$HlN8fCdz6r3M;3kBu(iKz zd?>ofAGD}u89dD}lUaPcl}gckcOiegU{-EWc?AkEB9$M%%V4$Axn1Uaqn}VVf8{OS z=(=gD;0L7rLlF7e%eju?q;h^m*4pz_+h!NknPuQ4&PCq_U~uML=!Ni9QY>oFvhe!V zy#2zV@g@`XH9HN@hc-Cks~>IG!ZphBC9=cCx2XJ!9}J09XpDu8XdHJ}H@&l%ySHJ{PZ@fi zovQ}_7~j(Bo?O1t2*D3K-u9t3S|CL;8P=S}URKAokflE+&h9w*#q_wzZV_7TSl*8( z-#E01#gccgy~+{Pr=sbPe*x>?>(<~F6qg4pqL^qNnZQb9o467qBI?*yV+?hvAEUwD z0sqTQ78#ZG0eHU9?R zEiJXT_smr@SLTQINRZNG&3Yt9WQA*Q=M0R#xc=znQx{@(;?ofcqN}wj28|wKXZTUF zb@QDr7ir-^NA!hY%Y6#`S!!!h^Jd>W;)X&@QFH#m{z?fscUC9D&&<5|!356Z@?{_U z~d{hy{q=&a~>Sx6*>y}RDa%Jgp1qFX=Zjy}{^HYv)pdiU_L38K^zJ9+O* z87q6ybYt1XQ6&p*oCcyjRL4tAET4UcUFn?6%H^ zDS#FMCFF4~a7nyt6|j?{*jM+K^>wT{uV4ZAd66~i0;*o9DZ@*p+<+l2U}lXAA=jkT z$B-#;$6n{xFi!T0m$k5(Duulq8Uwt0{-x#8Q^A7WS|7ecXMnb;#Wg^NcPIoejtcUi zsZCdknT#G?T7%%}t2;3kQUMebpB67$E1LY!A4o>?VrhZhSR@ny&G=Lm)~2&=s-f5S zjjFJXNty|u6j)l45O2!Np(D*5jo~eVnnvC^4yC0t=T9*A5}^cK=Uy`A zULxebqDAZ9+^g}Y#*facJ(z*sf2vH~y6&W2hWGFQB{$Qbop}3!P zc^^Bwhwfr*z5z;dwm-D%F$5sMBnn|F84qg>mjx2Kdk@8@c7&rAF2pRHcx#qAlb(iI z=n!R0w(efiwBd^X3k=#0C&uue7o2jQ-i^m8>NTQm z#PlI0c$e;{q{uAhPRqjZbFm9?N~;dJD23i!Dutgt{pG}G?eW}{X2pQD-kO&)B+2ZS zHa4wVwOnBZ^eDp~6gC)3y_S znr{9}5|fByfoPn6XnZ^%qpZg|c#UVsR%BwgYwiK+uNx~I{gq=3n>E26coxkeD#?ic z%JWQe55Bbd49aq+sR|?JL}6~;IsT{uE{5RY`$yXa+RB-XAFW@WJ+xxYgC$DjCKeCi z!Jha1s5+m3u-Q>-_iB4m+H+=Lq+3&-nmMpz(ORKbYGX0Y@1wX9Z;Yjlbk<-n=%LK} zysy8P_nT(`=T5-=tw``t^?1T5CC46h(**;4 z+CM$nsTw2H_gq~38fIRCyU_tE&G`UW6Hgl3=#2_lGHE3zBc>;u$ACxoL{X07rN+ux zEZIY~j(+>SA#@spQqKh4uq++6Q++_hLKPc&=x+^fqC0B2eVNfPJRF6A@AnUqK>1O3 zKr6Q!+xYAlQtDw7YN*~I6|$=y{Ez{}7_v<$Gs4iy6-qBUH>gY1pPYrMg(@imhdNd4lYlk-~o3I(x!HxCVUy|q)b!EcXxUk6Q zQNQ!n+@$wb8D>gqXL^9Kp3=6M7HyBl!{H#n(W3?V%ItW*RTE-O5J{ac4osn)%6hi8 zXrh0l`}psX)5`t{i`!2QsWzDOqt7hwQ`Bn`!$WSni z*ed=vekiup<*5TOb3Jk7W*Q6xxHqg5ScXc*xIN+OKn1McU|Qz?W^ZL3N*dwOJY)K& zN-6Tl?tvN&)#tWFin5fFl#&vn)ds&Xb3YhtIRLC@-QgRL>wRF=_c*{YKU@fRY-~#p zyLm8OnCPx?p)LK&)cm%K;sxa63b9rg9?liG&#hwD!F zkvq4i5=12>N44eFY(9DeXOCuy8vLUyYEfCdHdOmjfZw!dSLE}I{+Pb2r=!! zSrt7!2@Kh-^-~l%;@=7|Q-gIhw6#<`%6<9bh1E=(1Np-X z*XB!W|Crjdm8ruBAi#%((5!T!5Gg=LZhpKO+a;7=&D3LE@0;#uZ9bl5U64>ac05bn z&JTB>v0&D5UHeqx>W;j(OnO@En@x|WPm~WlY2}G-X-(L#NDSO}O(A%r^{a!5{G^cE Qoyb|&u<}Xhfw1ns0I+TuF#rGn literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_load.ogg b/mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_load.ogg new file mode 100644 index 0000000000000000000000000000000000000000..02d2fd1afcbb49c4eb423909287e3c80378435a0 GIT binary patch literal 7627 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_shoot.ogg b/mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_shoot.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a7d7b69d12fdd3ff614c0c612faa7a2d03f40459 GIT binary patch literal 9767 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 h@mz2nxK18jA1T) zm`5K*v!q;_yO3T*3*VfiY8P^w)y(6@I11>2!!bI-7zF?sbuaXsDh^VGmo{%B+KQ%P zh6D;l;|Y@JhH+s?*9eztO%oMQYz54WdtWJ3de!!t>E(69sw?l6{H?uLtoCbaYO$%3 zn4+P<(rAcQ&C1Ngtf~bQa+{2tBT@-Jd=WYA#(Yc~Sq{eiM{i&&6*{EMHHwS_3o%DdeyWi(I9k!)t7c$t;y#K)1T)*Y3IIY@z$93m9@i}Y1 ztX9zPiP3b|G3|!ybXL_vdG&3In)32$ESLyQ@2ZL+y2J3O%lrN8tCY&#jHQ)t+7@q_ z_kbnIe%|iqMUH%4XMJQwuD-fCir?$nwg$xi^HqP zz7LDy<>A0=$MNnjM$vI>bXP3r{?}BV?YPLFG za16B|#Eem)cgyySDj9*4|q_$d5s36e*)C#o3ZvV|a{zvHNuRZ7r2JcKHkM zNUGah7~L&Rde`>e_HQ}cI5&Rz_(5ZXy!gq9v z55$RJC*ExEQD@V|F=7sDcbp9i0&A5-gDS>vgPNSs2RKjX$LDS)l>j@-Ai$Kg|Ljg**AcrEI#LJUX$Am+7tfKL=+lumC2_oz z*n)ZkCpx2)wPcw{-zj1;d`!|m5-@5=f)R>McMfsjBQIkwQWg=8i-lmzVgK0oik|n+NQ~U zcanCKf8C+eU}#XESn~3PA-%I6#gedg^qy_cIFAn9+X$PF+^}ha+H;NR8ys~!@fuvd zha-T%MF4;@sW&)!HR;zuy9YogL~(6Q_Hfjr?+_Ntsah!qb58y1I=t^?i?>cmR=aomC@$G}ZpTxn(w8%F&6)iD@c7 zb6U>1MSJ>Wq~J#M#?L8zsb_y3nSXy+c@GvEl0%A(^)=n zVN15{@v`|N_ll#ncV9(>pq-z~NijnfkIWxM>@h1E0Bt>clHi-bJ%)^qj<$dR^<$K* z>3U{F1e-}OMb|NzljN-}Q_bl^ERuSUn}}0Pr(|_CQqU{#`lsip;JVCHk-`2i>M9Uo)(#+x)Zo@*ZLQY~|7? z&tEh`0|3MJmfzdn)V-TYdbQ_FfBCO5zno~Y7;Q|#y8#Pd8{`2z7&SnUeQl8aQ&twH z_CaB0;={AC$}PgA%Na^Pr$F9hx8_dG0seM(hzZ-LPNjk%hml2Ij;04J3*+FR0^pYj zY1ez3HM5SOGpK56K0a!#+s+KNHFtHF(!01zXd=3{bvRm(VN7=z9dQ#O5e$XEVW?sk zSIojX0pyl-504gKgsI&szv?x2N`OdQveKB1!Qc8u;E^oI51@oW!H!$A6rNw1zw5l7 z2J(PJZsN`i&M1M>5lTuU5>MPrzk#!)-SXP~QDhNwN$bAqCfpy-4vdK3K`$@e-gClG zPDoGr1;;%Qk1=mn^c%e+UzN25+1LZQ5S_i#`-*~k0K=gdXFdy6MBSW*T98;}EDa5t zUYmzVi{7+j`0SDrwim#*rR`U1t3#X2(;S~~ZJwSi17oIYhE%}kBwZ9ZUbK^H`G_?t z>gm=T8qvDmfJz7eA|QbhBnM%mb|N$CuD z>g+Ouf{MCJvwidX&>Hq`jI+mFYMThNN~G;x$W65=-Tkj9*KGhmrJfsd_J?% zeV-gjuL_CSVW@Y_=U7vf0#0t3r{Qv#mWsNvI`AzzG{|eE##RC*`}0tHU4E$HbP5ac z{=%x-+Qc26JHs(b$w&(oxvWf#gB%bpm9SDt8ADF=$?!8&v7M-%Z|p=z#if#*LI~g? z&9vf;`}(ez3e1Z$z~sq>XuG7j*>_}7uYQ`YtSM}9i%Bf{wBp`Td1{Rg&V= zN#YH^7Te~iV$+%J9_~jF2EeW8a>mejsOt0*iT)|t8OIYT$#TvP_|2YWbnbd@0UQ%; zk?d*iVejDJ004E%=V|-*CoE}P!$KveR4^^ubQ_slrV&NDMf74$Y-&<#Gde?n66lIG zsAF`opU%btM!`?7{T&69CJ0Q-mpA)fcXOmqZIoAKhi7S;GNg4SqyRh-aJP2DM<=$Ui3A3b-~fOL9Wz#vl_GOd@;fHq^kjvH+yGZpdUDhNv3U&l;J*?oJ_`Z>KmY=n zP~!>?6zwL3t%(`q-13BNRfXPDAxCR$3#0bkFqk_PHx%1DO)}G?VCo@)8~~sS)M5CV z4~bbMbvQAYM3B1;Q@_u4Lt`n)3r6D^rV3H!IWA066*(>`h!Z(sYM7QnXK$EQQs!RJ zF|X=GGJ4@YDSVjyPlEcVA5`GGNFk9};7Fl7G#|-aobCoT^|xD8Kp@ynKt2Iqu@--< zmV9D{PVFeNqu4v*>Tm7dH#JvUC=NksM}Y4U(9G zc(${d$fYZ~U|qfG%!86vd@vW4oW*N)1?6VCOgxwqOcfA^WQI>&Or1pO@dhg?k9(N8kTNz-PN_6RU6X{d$Rqeq z?)6z7i?|10^U%73-EFfp2Cl&OB4XN>J3srWD{a$55NM;e10)M7S%P>W+54|3hB zgca!%%}E+Zw60RgHJ_^z-WfRbB@qbOTcK3-*OIS zx!`5F(qw7S9H7_qkHP#ko2@0!|FE0~6QL1~+f_(J_@9=O#}v0C6i2I=NT-*`;G1e4 zm06mRdt922_FpW=Ci;DP^!v!@!^k+Ms8rji%(B*ehtaCjw*PJXx8=yY(SZ@P99cKI z|FE1MZgOeRn(Ek8zWnW@_zcKU4_TuB6aWD9#A7`DGmdCzvM*@zFKDvEw8j6|76X

VT~sYSN=!>(*k=VTHrK_@7Rh7Zg>%02WgMxFWs_M0g> z-xdy>UO=`ZKCoTDMu`ne-DX$`prQkMJ_@Do`{px6gZ@+5s4Lsp7a0wF6)l)i+OBTu zVN^a-W^q{?2S{k@&lCkZcQ%>-2J@-lgQGAw8XFO19z;E~P*zrj4r0#nseqVEi1{{| z#ieE7OalFbxZr6-6!`!v17{bw2PBx$Qi^4uEm*IuiVa@-?=wkWS=mWj73&xPI#4Sq zmU>9r4^MS$0I=Ny0jPRVL`F*LP{>qTE&+VfIvOAn)P)#RCGH{&b6hF3cc#ix3e*;w znk>vkXi_ZnDVmZBMTMF?O6*0cnuydXiAtqZg_@eoh(I8P5csEy5*A*80DK0$J@aI< zap6NcDJAZMYCU z)L6PEh8ZijM+~>T@V>Ux5HUDp2Lk~7BOW{yd}vS*1|S4gh=&8v&@m`J$U>nU)CE0x zF3LiTIRXG6899y<6*)k~{f?B0r5HYN05SXpFg(4i(B2Zr0dF`xV1z7%B83yIOAdvg z3JHA-XWYCDCCkp!(msKLbO3-7*anBM6@Z2&KV$dk@*9Bqh=iJ%TUheZpJGwq8vrP1 z21Z8O90-YsNkFA!m<9JWI0FjWdd<8MBBX87L9|G zGljaE-i#?LF^2;syhA41(pBQE4Jx^;7q^#RIvE#Woi=N~{oiFbw%r}}o)V_@=rC0h zkXnVVtA%e!u3#E=$He~}X%QuEU)lbF2~58#dFnOhG#Qu0mAKg4s9#bV-lhz`Tg4-- z)Oh&{ehk{$!^&63$~!g}ui@Q0tbZ;nwU0ziHVKf)S;4U1IWM7$zxXM#%TYTfv*vK$ zpkJ1i!h8qauj0gND>3FhZJ<-OrIW}1Ex9_FyHMsqBd6 z*LrEWBm&QbR8&7uW){D1WySPM;*Ht$?)jL}&8vFuws4Pl8X@{d?NvP!hpGk)+BuL$ zrR89js&&^+_V!{j2uVq^lS?L?g<8A^KAMUj)w#?)|9u#H{YG+P8Y}@+Q6?RIc)e=4_2lv+ zO}sLA`$}Itk$X3Y@R{7jZRLpRYie_=rd0>WD{WSiW-sB3Cqz=b$o_G&kDU`|+Hp%6 zlg)$|(1k)Yh3C2m%^CftoTWl7wTwc5X%QU&?Dx1GKie2OYTqv zsdN+UZpa&{G^HL(d+MURWz3X&L=r4PX-uFNtt^*99L~o^C~aNtqd;+M3kyJi6=Tzv zgpNjp`v>NRH>#gIiMncNzYghgsyxe~Lo<~nw{QZ1& z>#}a6o?@*asg}p7RW&@!pJ6%a=I3t-m*GjPVdToEY8w}3lVd(2#7fWoN7+0MQ^v^4 z!!jf#=c5$G^Gu40VRulahcN9u=W^{_Gy^`V#A_F&A3d)bG$nHaT{A- zV)w-gD}BAn{5Bnv68tZ&rR9No7ew=gWvA~A@2 zq$X05QUno-UQ_scDiTgRXlO1@Y^Cn#7mSyk-BuAyOjeK+2j;SOJnA(3Qd`s|Bz^L- zFENP$7c?Is3&DneD7{*`26WlXI5K6=f_Up-(--{AD3_aa9JesuVW`9S?sd8a!UPzUO<>; z?Lj1rrld#26qs+LEG(sB*_NB>C#4kv2Zx6yGv~ucv+UXD#iFbo6~!>(Hj)|ro*X+4 zrl4AvST>J|HgXSlkS+dUo<7^{{ZZK?&-NFzt=IZg34%kagl!sc+)s=qJA1fR#LqHc z2sZ?p;+mY7KBpEI=M&I_yh;BYHZF+lTtH6bVj8WqVPsVLF_-N7#zY5Ia9JcSbqd{wrWIGpwtI$~K;ggdY&oWW%Qo1;(X#7Z^&A+`c%9Ul@>SdX$37f%<@l!ojyiYyY`MNKTnsh@=Y`^ zOVq1G$C|5KxbGk0ufLejHS>-5_(+l9t3_$LnwwXX{g-O=MCmF1E{WfscL%=#v+X)v zJZ(DdnRw~MUx;vBcL(AU-`(PD^CzCVxjpMG$$F)ceKL|cqF7~>_j<%k;rIL&p(EMh zDW>8+Co@Q&+o#s(+7;v!j7VNk$p- zQ;?k)Vk&wPF`+{TTMLqr-O+4p&n_&wV*aQAVdWB8~gihDDhu)%qPQg;b@h{`twiYH7*K>;9I8h0n|Tw=iM7 z2v*Ttl;LnGEv^38$!gN!FSjuaVJBv_zjwlr;t=M7B7TOM9>P-A*^(;!eF&#AzWMzm zd81Y|HPuzbQy=TcVEd&h@KLW`75So38jwR~@>%icbq3ksjaMznovKGy2fxIRZweeg z@$Xes+UxO9M(iL+qeAL*2wd?Qb%P?M+Yl;9m(}&P^Io~hBxW`V#V;}mM02O@@Czde zna72%fvzq`KAL&HV48=`!_lpB(MLuBZrlbdl>siV>N9*2vUY=_I8-VabYjE;>d2-z zjd&5BrX*SBNM2`H>x7PH-V`?a(qzIH&a%)G)J7cxSHWP zBZ-3L>dC?z1)k=xL?#|tUH)cB->^t&@J6e0Q^Y&KM!qP026reDMb%5CWU@l}j46ow z%1S`Gv&<~%sSdu2K{cXL+o&>&Y93)~>3n#VK!}%+#gbQ|UiUTc6y)Bu ze@?slS>YwuR%$W)*p1lNd~o6WH44vB`4g{ohIwReV=?>s+~Z;e{d=>^T6dD^u&gX} zUM?W;0I|$2e0?yK#webYU zgNWyrS9^-`SOc!Yx|)~zvIfIP{(kR^@>J7m!9A;>a=WkTex#6D+cpSGo(Yg)si{p% zXUYzVE>6e_it({KI&s5#6G&5(&#PMFv>C~}kfb$7(D0P;s|-Jy(Rp?@BJr6oLj0Ih zNomf$a1sW8k4pABk)K~uPDa|XN>SOA#YfcVF0~T4Jd;xRuuI>VSGwc5k0;}HHjT%k-qzbDEBjL!A2apnXa6swm-B07G!#RNXZKVREqNy30{o8U~{Wm)by&+Jckd z*>kdsuLV{f_v`ZOCzDrvty~qI;jIQM~_eM46nbZvQ*sVUL3Ik>gjjW_pP}_Gm?{TscoTxI;g@ z2DbNH>#B4r0+NrKk<%%+eYUSsue`X-JHZp<%bxB1S^yp}>DdA2F8CgJjBQ9D1fZk% z*lcmi8C-j$@GJSOjdN~r_wlbW&K0}?VnjfJYd1^$DE8@Sx|aye&*Cy8htYwWdt&$O zjlQ=*rQ84l#Z`OicjdPNzsX0?Y5Siw>t@Co2lzahA<~HfcWpVmF^ju@dxdRi2QD<` zvCQK`z5V>jt2jjmlfWnB?Mti$)oQ%(xPWLnH<72nRXD7cL$1y z1D4^?<-NoWv-GTy$Io$WpKOmtNQvle#PLv;p8l$#L;4QDEGY_zP)9Rp=P-&ikP0~n zJw_JFN-b16*y^jfEcB!jWXTdGt>WtB9?dI#x2msK^bd%lioCSnb76_jtW$ucd!4VM z&Lax%v{LwL_ZZ>8ay29!w&Ar|bCL>{YJBV1$^(V`(k7v|SH5E?^CA~RYOb1J8;G=_^a>ml9RMvw6%2r&sKPPM34^CC%8 zj^UVkO5<7E5<@f%+(#~w!IE~X7c2ew>i9+auwbYV)`vSVaA7=qQ^*vp3B#vHAynK* z-sQpo;Z{2Ow)EeB-Bs7Y{oP-H8i3{xhKK!yhqJN6ekMHu`jBN^FE2JhiDLtdC#d4?y|J|o3-Q9 zJVN_ZmokjVU)$E2S*`Ly{@XB8}RU7+j*c|BT%{wNIjq8<{y$(I; zD1MpC;ojDC+GTWw>uOhmtwHUDultnh@aj40GS;|S0y5nzUqlFDg?IV5l6g|+2jtx9 zt~TFKRPrY@fvm#38$45vgMAW@>$d178~c(5$k&Q~iG1lhq&Ac$_*F#XJBD+7D(|;` zY9{F+W2Ml*aY_?Hf2ui6(KDfyHV?E#W3~!^LzsXQwmVNnFpos`2^@M1K%a<`M*Li6 zxyV+D>#VBwF6})^cPw`#J5f@~dYla&GXSotf@58$eJ=7t8ee}J+?6awh}q$j^q zhyHceVv6)+utiV10-rm>qIx66yEgwMS~bB1=dHJAW8)?ISH)ITM(XacH+Q3-VQb37 zU+=W+ZQiDLS#d3-d<}+SpaT{Tk##yPhw{G@iy+DEQ0tgmNLL$1Hw@lnx4)Rf|6Q$^ zV<9_{-q1fT+=|Oeo!jT zV`3fn7T1@D$e*UhWwy)gO}rXbh#T!>l5Z(IF@V5CZ_dNHp{Yt|=jN;@?B>nc7-@yuIY@mZ4IdVMbIyx*Hel`}i6>o7S4kq4J(f zOa=Z4F8}zR?~BS#-g(lA6>*2N@;VqIece9Oi;IIegcyt98<&wKhFu=X})&4Ega^Y=T45ShOB*qX&Dfi)kZUgu?3Y2($+k+qVfBobr z*jH@ye-hqY18&mrorIeM0RFuGgu~CtTEVv+!exSQUkM+#2&@@5|JZcx>ZCAKuJ&ke zEN4&UQAizIxQ=&v+%9h1A!OvQTu~?%m$r|E*NB;;U^pslypt>ORi1i=AW78lpprh= zsdZ7Vmi>94>S!FvXmj*X!2aw>kzF(--A$B6-$2}V9*?6@=fx%#|T1jM1gKge37=c3oi9 z5-<^X9YxDEn}@tP&UW}~`-hN(i0ETY*G~cVw91v|HumgB?x0DKW9_+nzA`@Ocn)jN zs4<&YQ|(aYd`0@$c=eS~^Y_%Hh$Kq`ry-S_waGUU4u$rVMp}NuD)uB+V&^V1kRp>& z@e7^$8(P#ED*S36J>pLs;n6HSrfO31Ei{NZ4P!IrXQ=bh6Bg8~yfmfi++#y5uAjn- z65qKD(XDS)h|{bb+j6)eq763z-wUuVn_bP!j>ueIWb^m(HE=(wB3Ev}cN_-na&5UP zGB90vDBr=UP1}!k6kg!3)b-hh2Ql6n&*_iyqe4_PHO=qjxs^*I&AzB_R${0jo#| z)5D*6D&W@BAy;rHf&P+%fqY+xD?jh5ydK|{EvG=a4AxoL`G`2q3KTpe1@5UD&IRT# zx08t+901_C-~O5Ss5!jJtx^>2^EdE;f=wMqdRC`6S2G3eQ*&2Y0p-rcjX#GP^4ayIq#-!q@c_-+p)deL4{TB#}FmHu=eLIpEaR`}(a!y`bYA zL#gBE{7y#S3DGu~(^CUF-NG1&dUAKmd_Jv;7DlriGux@_VK!OG@WS^S`Bul#uz?Bi z3KugiQVmX7DQkgQ2)~h#wuW8rps=o~!IRmbq>MhcfYjgW+70I0A-?Ou%H_|91d3hc zpk5zC$?XmFigzFo)o96BJDZ&NG9_;aNxevxXDsC-3*HYFGkn_q)Ce*zYJ7gh5!r>W zM`gE_RTBAG^Csz4o3LOhMyA+Y!Ewx*d)zfD(Rtb8(8X}Q!TCajbl3R6*^IiFa~Z5M z+(%>xGAVSoHFR+}gx};uP^}PgO!p!Yd%{BX%ya>hLjIaZR6wBaU@93~EiM{DkL=ji3(bt4SVkEz8Jm$9moOFz;QnAtUd1t z+dIq9^c3wN!U{VYVm5vcYGC?WX$k862A#%)d}*5>UY*-kw*aegot4Ua0_ypcFx14? z4xk%nVG7R}$iOHuvZ5|vkmO>L*P|mYo28zsEQ(OH;yTw-;ohq7g=MTx#4PIB5%WZe zJ4R}aYkpd=BW8JX&dyRwO>R5+PNJ$Q6#29^2W^$OVL4qwKnxDv5$dReZr2oaWv4Mj zh=PDvg94fEgb_HKun)b!tCN3b1L1R<-bI8^65fgYBP2cCvLWu{|KI?t! zN(s0m4b^RJ>fzj#G-`l%K*=;iz*YOcN%rAeoo>p>9CR`RiY-y0nwoXWrknGWq>+(T z$HC!VE9bM@3vMi9PA6GjeSL~njF`6x<|MnCM#fHw2@1l(+8hJQL*;C~I%Y10IB-#C z4evii>6Q1ku31#NFtuD21xNGBSj<)Z*p6ZGKNlj&$S13~Ah z-(0Cb@een5ZmIIo^GAx&+4w~>7S@BGW#(46Xp`U|fw7MvMaUyuM0L{@3eOlcG~OlC zWEJ^`Di~wpWY7s=(uU9)Lwl1w`s2bMA(No}7AZQyT}7ekIY~}TL%;@Fezp5ncgvQO z-(`0dtTs88!!W^3V=4#ElZ~`bH&2KJ#U#wru7~)?v4o#xt0Ai$?#9X;M$5X5MG~CN zQj5}#jGClJSTPqI(CxGFd|x$>VtF58W(i67RYE}@FNXG1`PlZ8g9g&~_&8>#UKJV{ zSW4N(sK?@tEd|Okk9rFhA?M15Fm(u7=5@@#YWh2(*UGzkl*(@mtg^@2CfVlTKkdP7 z#0+p5+5Sk`7r=9F#e6(q_2u05>=Exg2HS20LR~){vkxry3P*c~ztb;}>cZ^GEW4uL zjPB3_g@IO3?+ReHvx}tEp+fqRHMyy0`D8mf5HV%MOT|#msbp4WPI)mCX#*7w&v*hK zKgrE(Q)fn3=)`p{oQ@=cvizVT|22R9a2fM(W?xV3_~)Pmolw~7Q+@>kNDU2Fk2#P$ zL6=fxLvA_m@%p?F55pN!lZyjPE9kq#PSCDqYSZEZUD5Q(1~M^xJdp}Ta2L4WG{CiZ zy)orC`!O%k8|6pT4h1)k_LZf!DH&$qad)fG#l4;&xnE^?`1urBhrvtT+8mE|YS{ye z0QuNo2Xj9hC#+(MEKxI0oY1-Plvw;U(ln1rJ7R7c4~#Z64OXHl4ro*$uw;5)qZwS3 zH$?-_B?Fo1YUEAU(~E{aO(Ldy<`nu#@*Axosl@||)pG#tr4l+)p_@>NxLjowK^s{$ z1JJfaQp@Fout7OLE|R)xPL)McXhu)JilG6|mo_kvIj6>v>5_9%)WMM7FT%cXqE}ee zwDb&OL|56TSKuUNTH&?){1F*M7&n_~53Mm8U=Z?}aO` z(aCq^D{Z?=`%*`^-*WuEw@rHV7 zz*H3GZfVKtw@e#&-d0yekcxsZ!ZtVL6RSJgw=P3gAV!NrhW9) zDw?q-JRr_ij3*bOZbUKRju*PD7)b$2tqiEzWZ z-W*hnD%R^EZMepC3SWz7f0(ilT0ZJIAdMkiF1qHjY^~rgnp@hNx5?HH?7WgV7KO+T z??1vY{B4xo(Tl1MUUmh#M2hxkKhgrzN-0N=V&#M2HrF)nOs>0LYLCV)4?2jR*e}{K zwI>ED0szyw#+=({7uRK~C@kUJj?QE&v!eBmbmDd5DUKVnfyc3rxBV;G966282Cj01 zU|32LQPC-%{qgo|E9^ZDw94liZ*E4vhOy>2McG>C(1u-Bp~tTo;fo+|?=#qMYZiDDDeUdM*~d?9A$Z$} zi)Ur8s=jWdj47;Cl#x^rLJ65@>}ykxIb`5fWT#d0@^{DdfMAxIs1nW&M}3rz^vzu4 z9bBprH?Im7zd5@)u0b4lWOi9mws+tKM)WNzrtcBRA+v1I0`wF>q2iwpP@u2DWjPog zc1!-;(vTp45#MWr8zctzI`^9QX5fVk^?O6`QikchSr?k+H3=~!P?MSA@r)mz0&NTD z(D2dAoHe-svc@J@5v-2;;oSLd!$rt6TXd2wQGP16+xf%WZ{7Bfo2N1kuO`yeeQ4PeRSOGVaYKNAN3U@T&A%YIsb%>^dNJD;VW@> z`vv8dk?4p00eqL%OJZs6CC$JHfm}h1Jkt~%Iy8`vAnm1tvH zf;C@}6+8++5Q{mVCtP1Qp?i--5(TZwd}1r6X1Bl6VDHZqG*`-xcD7 zdFrS}-i7JU#HHmX7FXxm&U!ejHoUAJr#Pt!OUFz6$RQ(ABQvNJKW{yaGS{HIn5t=< zx=E(VGJ~@59<@^(tra_29W9)cGqYE^s-@h^Ix88z0&CyeQGORcYV{h855IlQjZ>m6 z`?8~Tp2Zt7rz0D>0a2F`f2zsHlP^b%l1q?>D=8&|T5cV@+*gdsYsom6@Im9u0p9gC zuvY`qC$E_CsrZ-T>?BHHK*nf(`sZ18jmyy+Tl4u9dFs_AEm{ECSXd7tU7Leyb z;iGH}>yZh{Yyr9|80lSa-=j1zankM3@m!dWeiZKU z(oiBJO|KxFu4AOVae|(aEYv>@B zb~`ckQiO>}V9Cs0v);#RZEH%W`*~H)?q$e%+stsy)~M4h+VNog(TY0J`-+&vM)S=4 zPoXJ5f+Nk~qnmzPv%bykY`wUG6ECzM0+N+I3^b73p78gX1*hYglKXVmNvEh9H^jo6 zvtij3uqiZh?V@i|H9T#KT-m>d-%P^;8$_AKx->S!;7XRMpr z*X3{-ZIe+{85+mf*7E7zePggY`+LP-7VVSZ#i^RKj$CwmsD{ppd%`s|rY>^FmTbn= zI6~h65Ms~+S)3_>)NYKkQgZm)p zCZ)kOd%e5M|1va5wKurlO=#SXu)K&bAO9)dgfcqz zDHaVK5gQeYB+0ZNXWJ)T+|-7oGE!`K2^o>|it%2SoBLxIIAiscATmnbI#apmD0p!{ zgVioZ7upFJRmSxqtic?cUCQpvntyYVo-NPQiv~zg))}s;2~1KRaj)b*UlyR@R`@P6 z2jebcc~*+9)`#V%n;Gbk4#$%v7!jMBO4xvZT390o?0}ar6-*achJ?b?^e3O(TC{633&9}ML=JnwC zK=9tS5EmTKMN06Ez~BuM*?N&$^p+z3Y#xBECUUc=wqc6Acr-(Nm+tP7&d#xQ?yBDH%mMkz9{6#Z1C6nmd+X0o&UVc*91Xbumq z{Ww)Lc~h*&qsN0pN*O;6M+I-vA~h@*BS{!PEJAlF0(lPFzkDAjCYJh1{}JmoGI7s& z#)WtH={z1{++E4nbDOoy@G`|{&~X^u+*zHlzxe4`aIUiPb$_5=-g)|<$@ygJJOBK% zpEDGbzoNNQhbyJ)me0smHjb>{XAKx6Au$SHcopfio%(U4+OeKoC!v|;OD8q-T)Gf= zsnNT770E3KQ5V!SwsDhO`oC=FJ*xmhZ<+Ia-k@D)?igeNn!(53@@qA8^jhvm>$(eQfdoJnjFBib}wnJtvhr>~GsYZQ1 zNvD*kqFt$mlnyVkR$UFNy=tnL$gV{hQ%ACG{VV?4@bw90->=lR@046j>2|18lWbH5 z#4$CX0DxU$883unjg7(uL$ddvo=w*<0;!O=YMt7JDe^_S1lxM0SO}Qs4IVrVcLU&q3Lx zv}w+r@m$-Rrlv2Z#^Kz8(%R zXslFS+VcZkhy_399rO7Ys~c^8H$nmp{0Uvbd(TdX8nU|QH%54T;tG>VDKzbDQzA+l zE;qQfxG`mE7c`qWMP|p$8SH`i!`7JNvOSg^%UMzS_*^R?89cDU2qDFo{F2B(&)$RF45FhnGo6QngfXS1uJ}1XTnjgBfvO zi9m6?ek6Zm?T4&yUw=o~Q?nte2@-VM+w5!+>VAIx?Bob;%|_mSriq_lNi!MTUHEBV z;QHBHE{)52sVdeuw^PKhdnd-I9Iko%%l8zv_c?REtSi<_n^|9AXJ3DH{9szD8VfLh z$$S@LUxC;TRnYi|(rBXj5CxXwwKmwSXELuhMfP~fFGT(5X>i+7$Z+Ojv#J|6Fc!j( zw34eJiGeaHlpMV)D6zgJw*m}N>y?ojEFn-ada~EKljLRwPX#JP8rss|3pB_-HqoWY9RTy*(?zo(Y3hD5%7u;_fq z861~;M_&0xpH@m*C50JOQk2g7{g>=*#xLFIo&*e?tz2BaNbhbC_7kz%?ZVikz}hf~ zPB=#UMQ^?s(5&BOUYoYirO7&E$v)&sd00QmZgHYyYgsnF^P%M+&I{RHmj|`|L{fXw z+bReK!)x8AS_8KVY&F8>R9b8U`9&o(}$9jC!9-Iu(hguJ=Yu_8E^?e(O|REFrCx&V65w62Tpbfm`A ztVZBakDuo|nzvoQLqvtEl;(xT)O%K#5m{gar$}!JO#W~2P2Oma?itqSym#7 z2+IaCPEu3fF`rrHF*#(GC`57;y zVH!pvNRnNcmrZ*li;`kF9uHJZt6N|@L@PR(H3j;w->$gi#vU>-y50=*w6q6&*)RD9 z=~VzO3t$bONl|HE!2Q+?K;(P=5?-ZMqXF_pKnT(Yyc|vLuO3cU7V0UR>)lGI#YmUh zX7JBBA@8p5OziwHrSoA)ncX5KF%kR#|7w0=YGmfe%TI2Nzx#x8BKHP*e-AP?R=3X! z8?5bhN?Ofj^76!d??7G~D)aq1-m71dQMp%+hdShi-;D-aP_eRAr0G{LuX{7es%$j6 zZmw6BrrF;i$z^F}cd=KpbsU(kNt4<@d8WjM7q9Sm_Jk8HC`>%xI@3fmmfD9mj!_2P zVnABeyMzW$t}1kIx^Z&0Xk&j9W(nmD3SV_m$SOZzVbnoY4h*zP`fcIN+>&&3tI;csiO}` z)!>FJG1*1XIWvYH(mN(aAM|YV68K$Oc=T)umNclF4e@lbVc&Th}|JsD>a!uDe86zg&P!qgSA zscO-?6U5Vn8S=97DbemN!ikK&w$YH!lG1U<l@l>U)6}hT4Xh1>R2r3mW^-%Y`1bSCv0*Vnz%s&~TLtL1z=FVMpVXZNc2 zPWP_Aj|=xcO%rkj&J}&g8kz-qD%DG#{`xd8To@47^lmk-EL<@Kyz&7+DSuI3tmPP2 zo*6hgQ?4J~>rpNV5M3DQJ{2Qh7aJ3=$?eSgNoii=S*mDbKt{5{&3F)yZP779UN=d8 zq%)@D{`3XQ9WdoNYaK7X&&4e%p9Y_nYU_!uFQv_=JHb}+^`%LuyV0{qVn_c=b^Aq4 zI!`srf4*ajDv zyPqZwe4p};M9bo1*&p}O+G&oSTnL;INi-VE1&>!60BJFG3Z60ve)BTNj>q@Rxo?@I3ruOpoFzx)6sKo4> zUpMP-9XNBnEXBKxzT3SPT_aC@uhVuib~kU!+A%U=GT z8B$pWt4<^(*x6)|&0b(j&3QUSAL*l+rd4x}qENOjXKRm~Mhm^p*B%sPLnvAKeMG9Yv1EoGUi7Wz2P6dz4z$-g zh72O-YcXWwS;AY!Rj)r%;e(X$PcM&!wr|++$dZp&!Dbv>cgahhc z1?KY+z}plGVT{CoUVHLwv7P#zG+kzO0XXleeDmf*ONU>toJM#x;6G;)Jm(m7WbFAU zX)?oxS0ubzkF3m&S~>%~=*r^7y7=MqhLHFA%G7tp5KQUPU0rEP&SD~!1nc*2J)K^} zj(+I>t=?C1Lz9pH)>-NM$niHBWZIP3p{EBQOMbE}yrbEXJ#FL=8tJr>+!V}@8og!Wp8qSEZ*l zE|nNpFc7u8Fg|M@d-dczV3V7~M8+%nMbyBz28ghYq{VEKnRgVO5;^9$x}nO+gk_m~ z9*4dl+;=wU0DL%ZXjxe_V|!aQby(+)!z)$ZE&I)hPNVOhcrED5@a^e>ube0Mf(aJ~ z2Jq+eD^1~BS3JmkPtI|9`P2_s>PD=NDyV6=UH9aAB3xpHpX7yRAqC~J1pgv{(km`O z6XzKu!EcAVTKm_lBh&emp(R?0-TC|^2y=jwLHnXdcCn%O-4XG5q}+%3WaeTfN$|Hj zzRxdypZB@_K7{Ej+~#_FVPTWODD}B>RpMtx+LsllM3}u(=Z)Hn-vR~hYax_89d{PB zwKbv2T2)*4R^L8*Z8Tk*rc|vwb=W4gmy`B3+$R|z*-NKiND_yUoRc@?(~YXeLWyP) z)#n<-*;)~VUEKt4Qswj*F^mggnuL_R#V{)?krYGmbAPnGNNs*IQ-n-$xsF)g2ulmX zlPpeMJ*4nMOVUzIzE2EET{&)U;|rB#+MiCU5KJ=MGJ`Rzu;yZQ@0N|)yqnahHnXxz zC>VQWjN)`l618f@k#w_>fIaiCYK2}T8-} zG-~Un)Lvx5$l>5BY&Vxq4&uND`l~}IXJ@&O2jC{zi2+gC4+jU~=c{~2YS~2)DsAT8 zEhs!7sE;iy_pUQ(8T^`Mb;O?-o;O_1OO>lR2_u#I< z-Q9w_1Puf@`>X#yb!KX6YA)vHt#`V5RtB{i8#MH##)#fJx3$pQ+4-tQGt2hK zE_Jaq4hoR*nVTSWI4|AS&pY@1E`#t8HmknWAFyVf{hBLitg{V#mY7*5Frx7%-ztUi zlvzn~$U;4;%~XzE)7_AaU*>naL=AH3RMh0$um!~6R+MaEUU2*+oZ1Ws(%YExP?Xi0 zWm&SYGoPeR1tAwJo#Y0%JbGjHG`WK}9X>Yi3sIezdZgR@WzJLAdapgdJLI^xCDL!# z{dDj%>$=r~t!&jEto@1eCe4Zx1G51O0vwPj#$j>FC=rzyg%Bta{-m%0(6zYACmJ66 zf`?Z483EXA#X7m9iz&E{Lbv|o61L+TxVv-OlNkc0nOh*GI0)g15w^h8NEJ`G+LNqD-Pv;gO%qJgRYyHL~6Afo;!bMvFG*;ccss~{W|YL?S? zrhVE6h_oL^Bn_`yU_KVqmJKYkPIDJg=5aacB?gc#^9-b~0A^f1f=$gW6)svaU%sBu z`zxrRIt%}rXAn9+Uq}c_CmtgHV0sp2H^IF_NkrL%Bsz-zfaod}zrlt*v|l&^A~&7q zIPH)tS3ZR8M*xF8s`5MBq&MOT_}No0eB0W;VqWp=X12>*jl4>J1uo=S?E~H&%VSUq zp8%u?o}{ERaogWVen?@mP=Xh+zE222O*#^QUKwR&OlgdqO2Ee~S*dS7+=N-;w%sZZ z8iq=qnj3#{cGl!9TKrOjq|0bS6~z5ln!n8t?hh_HZ&5S-s5zx?-$gfaHs0PWy!+o{fRVu zuGgJ!!Er|{8MKOH;@`N5mg@grFk}VMd#ftMq|kY5?eMge=SPcqmk})ftaE1Dw|ZE& zbCZ?lH<=lra6TL9xN%V*6;_5>8kuQZR{A`>-NszX2rUyYd2^%v-tq7_b@4VMkc|%r zPcpZ_-#Jzu!&+po0&C8tq2BI+Z%hacCSxxH3CfA%I$JLvxSruCOQc7%syD61%P&%> z8Ft5yEv@DhRKym=gxd4!J`2TD1|(*F>B^Y=awAxGAg$C_$4ODmSWxS?IC*f;d%u&e zlQ4`DESs<*gqgZ{aa?*MS;g}UQO?u-%gbGD_4Wjsgpfnq-5q9<9hRaORZcZ`A}Tqa zC;_|!Ro^>vw#Rfz;2r4C3OPPNG77%3hsK0QHI!Q}f(cTX_1owmo5Pf|z_-o8D^+W& zs`7FdI_WY}=w`03-kjjd>H0JByjH~Zslm^bgI>I;EKe@*5uA+-%H$f~~Ui%bO?` zn>dz4zi#bZN$FFP4UMTdA~>u#1fPi`>|wB;lvtB7HU}cm-xiI1#InlaZfCI4;2_uK z300v^2n!9&`91K9k)$PkUKLhNOeCz=>MX0)d+d0A9lqAGfAa@cbtzf4v2-06p@~4_}Ay%dc^pS7unPZ3)ZE zsX0KDz%-+VdD6y@-6i3zmoF&=H$O~LJSZ@|qh5S!E}3UzN^l2b+@9ToT}_J=1qTM6 zUC(1|J#}75W0ZZnC{SH(RWS)IeZ&+@h^ND(YEy?>TR2>{s{)BILQo0t$#y{K)zkLM zKYxrSt_n#m%+wL`TWi~xtLo3~loSlo9G`kC({TEc;!GpGXnbUC)@_&^wmSh2;pz}Xy|TkSMQ3~G?{9{*xX46D-7@Tru#VHU{lCvp2uD?{D9r zogWTwPH+Bi9&e$7BR@`R)G~Syb(ruUu%BS59oUuK?1>|{IE?P`&n@`m*deMAQ*{71 zdfkyw&U$_BCKRlkoMV>tbaz?$gqS1Zb!F-s*}r*KurI-0oAB)1s&jvVZ>7m@WsM$E z(^IslPd6%gw>5hnTK08Uc126pKo;Vr2;q>|Sx=kZD_kAzNF|VoM7WCQCUD|PAp5G2 ztSTh&Q5@mDWb~)hrlPo30|haGyuv_?Q&NZ^N-BQMFe7Z_;DYSrPv@fqR8fvo16l-@ zUmi!r`+=2OG)ve4(=EvZWN1z`+Da1`EwD*wl}tstml_-Kof{r(aT_xyfp%z&;|>E@ zTfYV-$&4l?!|*=(_mXVd`cx{KdtA9@^3>w|1Vy@^&D#P*e>6e@;LxVkoNY0W%vl1^ zz&JJu0Gy^!@33fZu4`hHs1ybQHD$}j8DQy*!wA_JlF zR>6c)X_R%=eO8P6%A0D)x!d~Ku9BzthO~6Xfoq4Ph0k=wPfOEx#Hp5s)?|c3QRTVc z34ToP^Qoq1QscKWz@sj6yY(5VhSSu?kEha0xKl%P%D6{=Xoa$H=Laci2upA%A;*eG zg}Y^n>Q-Ub!=4tGqlDw-jzmL5EiIA*Y$ISpdDF3SSFtTs5*e-9(k@uqL;94k7pQGi zO6x)AVP54l8EG@4X3W3%Dzi_tW6YB(WD86`;yC1fcc?SNu-LfX#m9ZqZGPiq{_@b~ zVL-~o!Jheh61nBk>xhVcYTkU2W0Gk?l7+)pI^Wd2=zH_ND?e@rky4-h?rScTFm zPfvY@K4VCROxfYF4CJmi<>HXSWTzD#<%DGeJ=7}x6Tf7DZNvLBqMeLa@Tez9UEgKR zW-U}(RFsgQl3p4B*m4Y>Z{9Eog8wSu{;>%c5ag*PbffYsp6Ob@=rm=1)*sie)nsZf zE!`SpQ@#jF{F}$vx$pjEV~~roPAXewMpQ8dF3Oe$;QXA;*hn#;Wlfh7DAjqkB zVDwsHCn;s^h66YbIAQhaeN_jh{Mk;MTD==1CQbYIaw>6{J5-ab$`E(CDI)vjT0D}- z;$lI?@oM36TPwcI&kqa;wrr>ZvdSFta}DNR=2hqTQ%#?kHT^7Cc%}|VJV89^a%c&c z)A^Cme+#qW6!dQ|(mV_?p|qfQZn3}C6cSPhZ6?@pp?9mMk1NdIl=9D2BE$blW0PQQ zpO-0F4hNysXu^D<1UAcV`w!63L0}>3S#-Z$>;`QAwL6!`*B2sU{MP-u`UC5zQqD>= zY-mh+WU<+>_Rwz6xk>0hP5CtFF~?0nFqEk`W!h8xHW6}tzA~l#RC7sKe0+t;9PWx6 zLartbm7s`{v7a%u*z~X^FKa&)rt3Hu3Y$8AmgVf^FAUvj!%%Dx88Yl2QCTW#lu(i) zEmE9)m-a$O9@?K${}Eb_wIrLg>3oPQ7w}bx`4%{uxRq~Se>-c~op*hAn(ipim1cie&X{XmTpSTTqpPyn zS-*tN`feLb&3#iKC0Xww&K~w9593B8^9@PqOGy4k(!5~f};H`8i zjlgkP$f|s3|)Ngtyg;_J^itf-OJuSr?bnc!;SrKdq>o#6YXy`g%|C& zs4Dn&2aLX}TVCmmCY-m%_Hw`M?yC~xeP+fGi82#!C&RQB3PvtXwnF>Ci=#0i%rUD`13x zkv8Q79XZkUi+qrsx6l2MFJksuDr3nJth$OkPU&kG>#xk`RllI}Y@g_xuMhb!m&^7^ z#p>9+(q6A)Cg%Eo9(qL?6QG89hGf+&NMoi7tL$WtGM6G3oNHY={Xc&8y+kywRNfwi z!oz}Bx20EVjV_+~41vA)lX4eRGHoo^%u5yxBj**AYIc`%OFAP!c(>8~-GBm)_ zD|0#Nj^ic-(xepaNTh$lIIypgy}(r+EAwQ35t#Qs?o@}YnHAVpRJ*_cv{;sQViRZ~ z)|?NgvTvET>t`EDtoVG7Uyr92erc~yJs2HX@a#qHfUdu5)o`D_MW=k{r;8rATgsp~ zkEK^Qmee&mp)-9i!1;Ib((9j#sePHXVY~Q&cJc&m?e)4nt=qf7pXp3-3YNhrD|6a1 zjFS%y@J5{VdhfLZ2$zLX!sc1zW@+k6erWZLN*zId z-Na-1H%TN+OH1#X^wBz#K{X*fu6=-@?z+}HzdbEVVva*p2K$>LCbXvgos%ZoN|jl3aR?CbLi1v+ zXogz+F#gphmb)zH1xt)Yc@tMH+Pw6Hnq()zC86F^m&S0(=Jg#{$pcTOep5*v-k@}R z!RdCy))vx=#U&$JELR%4)8{RZQ5_dX(q?^wJ_GNiOkG!g+c>q=0(21vMw|gUi_HWI zz=)zpOixMpPj2tl_QN-o{sP!yKu-on1c&>-u(Nk?ogEp3d?aV}WY3LY(=(y=VQq-t zOSfgQoK?a{ys8l=@1Q(U1{0bKTE$Jwxn0`77)>53a-CX_G*-A0%4YlIM$j*j=MeC{ z*U$VmZqIutY3Mb%!ncIap!iU#IOaGbcEaD?;Fj2`R`*U-4aDjgFMu3_N_!Jad=qMB z*0e@EkI3U%DJp~6TTVtm{a(ajCtZEtWijj5V#pXiBFVdV9@5lmoK%6@o7FN>DQf+3 z*KV3{MuD|%Ya&PFSciJjtMjEb5wQJPS6FreliIA2<&q4d8ok_H`$#!Kz!*dCgz<-$iqHw>Prdm1t_Lw0v|95Vfy}fG!OO_@jPBB!yOBZ@0HXvq9_rQw0TYgBK%%@H*qa zn%&I_Z6yh#)PJeznmR*MnBGH+Z=Qz6eh=TaBJSp&GM@Rm!2H)oS?>45PkDYFwjQex z{0~p=>eUn>2`NUGiyG&DE9==u&mF}TKFfZ#=1}#9gqWae$Blqk1*Fx@G-nqqaZad^ zW;o^Lno`fS5o>L$5vBCQE%!p62cjKJO=iDss&&WJ<9OJQ5ll1=lWG#S)ISA4g%Y01xkv$@Vn7W$wPYoy~0M$zYPD9c@Z?xOkg zmx%6crlY-_G~`U#`;uUWu40Ss`;DR1fm}y!+aXJcvzJj<6NC-ih5ra9Haul0D96KCA}d}fB$lyBi3vf%zb=wUbDH- zh-m-Q)a#j{z7xl@)fGCY>8lI&)RV-=l`n67(wKHaAF)6G-K%_jmtLMm=N3bw-Uyav zGeNHrP6PNaK<&G0S|*cX`^7cAfpD11JniDaXPK_8o*izglu6|_q0D@A{p0Z)vQhPP zGN{6GH$PoSQfk5+wuz+5hYC&bo?Ow*OiKt^83t>LXF+B6^(xHG6=wGY-SH$^+6iu^o#tGbn*~t3^cP`EB52wF57ng8B z90IFfzyCWXwm*N!@td1o&=A%*-0S&qE`yQvYNuP)z56=J|NONcF2oGrJW!yW0ScEd zMt5>ye@J)bzCoifK4`DhWPg-urJLCQN}oy(BMAc`X3+3EQl-R{FdhjE>lC>STD+?Wk|= zjWcHL=RWv6Bd&T|SM68Ve>c9h&*}4b?nvWe<&Rbhp$dRNyplJ00elw6NBZCs4p4$49iCnV)q zQTbF3LRJ+l2{4-|b46TrEsd+s>UUwlFIgfoGs3j7$mG$L#3D#mx!PlE*PwNQ?D%+r zl|tw;uXDU7`_iu`Ma}(Io<@$d1Slep7_J_3OA+hZXsoB2EfiAd<@M&LdFEc2_pff1 zko3aTdf(IAJh8qX%WQJZoN#t> zbA!yRGp7X)2!0fgV242+{PGxqT7^m&*#LV2zf6m2Qtyw_?DO>%-Tws;vKA6aBLzSQ zf#@|X{_y_mu-kz!*`D(TH~rb*K^QOr`rj`z8$I0PSJXkS_#Y}S?UC;reZ>gx z(2I+;QRyiGq3A+3yHi`*&VSx3KmT6qESH{YJ&Urxw7#KncI?a2Yw9~CA{lb;qPn{DY8N_3z?U}Pd0dJrjYUGPp3T*Rq0=Ur|d^N$J6 z3wttu4tHooA=EziXxxp;FfYB_>F@McMunYbb-43`2!cfeAMF*F&u4g1$%f9jQE14!1Mz?ZJAe@vOKuVW~h5x@NW865ipw2IxN ziJ#x-*k7j}<^SETmin<*pM7$wYfrPDWMAqawt1IF-EEl`aX6C_07z2f^nH)+v5_ri z`p##6L;VY$5IJK&=ciCWEy@oJMl*t+q^P2#3l5`rKsJoX85Dku{J**k?tiSO|EJ3! zLGK_L$OH~lg$ah94p2?T^DXer?alSg`OVok3~X@o6JyzbtibRs7_$dn$4voC@C@2< z1}?V+Giu614dtnS#Y_2~zy0~r?p-kO+E#F{z3J8HJ+N8-a+Sb%1o)w7?iKd4wJOffT;nwvmSeG_BSo<3EILlEEG&%JHCw<(b!s3P9@w;$+p+JL zwzFAu`0oQcBDNtKBd~LmA*6Yh4zP`mZh}BtQ3z}y$N+7_V*l;x%;g40#>>Ltxy_Ba zpPz=p^U4BEM(xXZW264Rc=r2BVxHaUHqP-w*MC=kFaEr)83$=67UmC)K{_iCLX0=2 z$QO#hvU>2+`S75s7_>MN7^+6~^3Db)wf6?|ri1=WDFeo8ZRlS$Rcx_}aNc4*YpG+Qyv;WO9xNi9W+7R$#@4 zCRH~!?C;fkEFmzqYFujCWI*-CMso?GzmFoDfG=4FL3eS0VU@F=>??;~`8Krz{R(lT zYvXmCVHJxcKq{Rt5sa%30)Szc$bv(|KG8rSqN|W0eIG=EkyyMQ*lJcup-o`fzg8v~ z7ud$2fst!P1%%#U0aPKN%QMpGW;iK#-CwFuA|nL)5v;=%@AL+5S5ot zf(L%Yue!PEFFs8iJVSEO_FJAMF!VK+)=qqjaNRvdb|%l84`PTjmj#AS28Vwx2c`*7 zbCrPD3Ws)8jw?|)(wn~rP#dV8C`Hs4-=tXRi|^9 zRapN^w?5}FAW7)!BG$|2mt|_rJ*FCvlhjp~M@~kP&Fy3SgFLS zz#elC18cjMk|>226%s+7u?zTK4@5dHnUKg)4vI(!Kw5=O*)|{rvOS?t#T|G|F4B6u zjNIoSgce9+mu>*2u2EM+dX8IeS#RRx+QB#7Kpe7%aAkZ0k&@ydw4^l7D+R zm9EJ=N4z{QfpA(+2-azl`1l2p)XrV7yFZ!!96JUF$Fh!W82oS^x>$&|4BY7>bMeJP zMgHZS)F+JEz3e{u3p+%QkTY&;o@XDw34)YM627jTP3%H44Lb|}N?%V2BnyLtPo)Ia z2kovLW94h_9n1)unl)2;HT>jfeTr4@K$**jps$z@jGxx3wmv9ajgqxiu)V*#TF8A& zBsGGgWnV|IaEd!>1mZY#kmG%gGLT{w<8bbCVfz8#;99}(9S{_qhzM+Y%=ce9AR!@r z)B@kS_Y?PEUYR8yejWRlm-5WfT0l~7UtlYl5u^?&FSC*Y0M|jHHCxur>g%nBH+%O~ zC7YUs{ou5}D>S>Q6(kxph9)M8ys!CbFNTS%JQUVtBMErYY&K{{Ufy#a4^qk)MM96| zh>gPcWO_*Gl)H|n()I79i7HJI%-JfG`NV28`=T^Ch@pxDI*q!D)-DTeG681n`WkKu zq~J$`_XGhpv?jx5nL!WWA8yDdm8cY5cP6Mz@Z1^FQPf$Ow6=RoYbsP`OFO7fvOW5{ zFF1`VwbD3qr7b_)X1ESdq;>wv#ODUUHpoY+ZC!=Um3*p)G95gP(xy1hD6#Xzq=;{@hzPYfbq($Tla9rb)nfBBT1UQk93ui6J7Qe*UF9 zJf*tUgmqaAl9q72#=Q{U3p>ZiMP|0zto0u zVv6OHRc;1sdf5S}#q3Y8p+8TL(#$W1MVgZ7_#_1!zqJ zW&eeqca|M0fBXp`CDtMNnL+S8zSdJ7yjGA<(cBy#0EHJ zYSpClV$!4~2*$AS4gl|0C9nKrg@w<56ya5MQzgUefkOf18N$*2U;wyo7JwLDf-#|nGmDjw6(t#1z=EdI zN0i}%__~WoSIqODbFM=ji(Dwi)J~+(N%1XO9Pu1%y;%`mhecvasuCV3A4$|%|7Uub?G}jG=CAD zP@55OT}a{?xhTGrt1I3t&Zo1ILCdy%vp-A6WFh3ZT-^-!l>D#@B9J1Fc*g#2O0-B>Zs_)gjY%j zI3|~;+0(4%7z@Hi&Ux}c6pkV(z`w;1cXaA@eos41-m>Bx`Za&3hvEP6YbYyuQtXdrwae?@Ksi+(H_V_-e~^7S_dD z`dw&knG*-LIW(pD)n+buYTsX5G%AmXN*FBwTvl9p{ta0?2t~!76)*_0pLwFKzFik% z2D^OOb-L7R;c_N}%%x{~c+Li!eW1-#s(e0M<80(1( zqqi-hhl#C{634Zi#kX^#`3MHJXP0kIn$4=llxy}?5iBtYTlKEW{T{a2TGM?h>FPsZ zyylUveX5DIN)~RXc^5u2oKo#uq<7P^%#GG!hMp z5+-QE#gvrhFAPg-d~P6 zB+mDdBI&waJ@wsPJAc{Po?@BcQXem=b!I#+xqs^p=OQ&2WT`gnnf;)nfIkKgC(qtYJ{z2h$%BhOYKj+^cT@~~L@Pt7;*pxDwd+B<1TF-^5gS~4CfeRm+j4S)aw z1U)0KH1_mB{4g<+qOV~d@d0ox=lA>LpoYv67>TteH04q&Fu7VeG?nq~bRGT8{~U#c z%pTF8?>F_%Y`fsHpHCZ2QK+@b4G%d_+G>IvK6H&LNAy39%47$0 zwa?Oh^OwH|S{aR3HV&6rpv(o`R9zHXJ650Lo7Z5P0ZhYkJA2x}u*21iqvnnDLl0^$ zpG_@!HA|f6OLD12<|2dvRfG+-BcdUD>Vz2Ub*+H)a@wM6MV2vHo$=qt+79p zBiR!H8U%xigl-<;5XVS?8QvmsU|5Ok9oiYa*w18rjrkE$!Z0N?Mm$4Ni~#j?O`xSH zISX3I-ShyjU(P4Ar22~&?D>^s_w^;fJFHoJYO2qw9a*8q>x$x(5dEc=6ki@401q@= za@c*tTl!*6*|xNEwywvEB_E-SucISR#QUkQ(A2EO2yy(AzJUlL0g`?HYr5$^;?$miv(ID0=Q`}uMJ^LhA()wpLci$*H z(vGRvxwY{2Ny*8)Hs*6w1!fbBn!-ZNQ+tMh)69iTDudOb$lnV_-59KxgyOafMi^Fc zlcmiy_1SAVjjVzdtu!uoO~0Xt-bVNVn}<*_$8581uuDXBUz#em{)UVMp;hh?wmyVC z(9^JZh$F?PL(h8aX+bB;YslS~3g$x37LPsC58HX*`jLN<(AR+31HTx;KF$NVd{a2& z<5T+f_a)_%we>n-h}x}iLU8o?27+H+Y&YJIC>(GF^<+n3Uew)CHf`oO8}>5h>nb_f z`#K7i(9;7?#DM=58YKTuX!wtBTSC!UjQ8dOHGtT>>A&ehFO@grHwg3&dDGam06)6d z2?P)-S;}p@?Ncnk-{|h~b&}+9Y0MBUGIavgzOTVnH4g$2cmhIe3XWAqvJWf0*~_(d${s zf25w_Ow()pMdqrHjdwd_5F6dczx?9;HxRde#v(NrM%T)1@%X*%Xm-O*jObStts5AF z=>HM!D=rI+eX6Z#!}}!V+ZXYB!%qcWRZ+p^RxCw~q8|ZZ+*a|M zXLp64J~6uh#~k&0yGa6-dUk?(d!POLRN)U;T^%$06O-=jh;Fti#ol)AlrOX$_@1sT zK@GClZ0Fz;E##_195E52!8617e9eW7pP-5qH}QGx(F!G2ir|rZ-i{(e%bJLc$`r#} zBmwkf;W(+YYR+<6$VSPrWp^Y)Wi^38Tb{0C%PgaIvY_L}K%7PSs2sVM;jqQ=pKVxX zjeWD3e9KXPU4WE$pfUO4qKh!xWaba;>AVlH_Ayx?QNUCxpSB)P@gCa+u19crpP9Je z0z;P}>ofi0XT0BC0TuPAm*@8OzsIpsk@ye4tb>OlU#c1hlRMobky35?j}S@Tn^ zx_?k;&XZ~ze%hda7aRQLhywKs1PQqZ8N~uFg-sWk@lbqnuV-L9#K{!)&hQ zV${<8pNF^k?@gK^ns)k$`W)U&7ENiZ3r;tIAi>RgvQg@o;bUrJnKHqTA#3gvx8&}* zlDAG_?>`LS^ybw`?Ca=I&JJGN!C4-jz#3O@P+v;6L~t(|s9o1DC%q$B>{t(3q2EhtcE}Rf5-=LRdnBE?(7eJTB!1E954ep9*t<_w%NeulTeqRr~8@b~QO&baY!<&59D9Yr=$1czN6mq|Kv zR;|_JKaDI#eKH)r^ZTb|;u8@17OO2YCJm3YJs-8*7v?1OyXxOrR#W=tc!|8mQnd}) z@XD<&nZqD*`2>W({bk*DwI~{P8H2?6chmAzli>jjVY{@vrTOgNpWqA->2bmhEI=I0+sR#(@~ z?x7n~{;7P)TRYF^4U={38Q!Wk%==pphNO*nQV66#|G2^@w-0o&k{)7p@BP6uT#W*!wm*}6U(Uip6 zVkHGwL@S9-<|E+Hm9buEtlPEXsLdDhryjzk*Uqh3%MiDMcl@FAp=39F;Ml>ksiw5G zoPGbthK(L2A2s`exc1Nd_@YhE6pHD}DwR+HGx9!}MoY1(#GANTmXo9E@S1F*8QGyU zjSw12!3|?%It8&hMqMJK!*f;vO4>VkWpjqgu+-U>M21%Eq;hZZX;ps<-jZR?EY@o2 zF*Ol{R4}nnMOgg<$Bf7)Y6jL=X>nQC$m=;%J%S33*mE7{+ziHYdy8Sjm<@5|ilV5U zDy5>#@d zfZ?Dl_=t)0T2zujATg8Dc-0%LBb4@Is-H(cP=0kAagY7^#*X;iEP?!0gPJU`%}(5a z1o(P@`}r!R+W`--`c?E%1QNhC@N8S6=$-3IJ;)-l_HK@ou{^OZ@eCH2pFUqxzHB1c zG`rkp&Es6R+-m0}bYJtT;27G>w%c%An8thl7Pn_Xlo`#d?~K^ld?6B4#Z+cCKPZUh zRn$}2qgfswAr7-B={!!55%1%joX6Ybr90%IgcW+>7Fl!Fm;{)mQ4RiN9KmJJ8|XsC3hY)UivPZix1jbAWD;cLO||zvf!m^PZ3^Dc_?Fbv8fst&M-6f zIjei**nOhJ9cvLxNP-eo8b}?mJ~nOe2*+ojlo`9iaXpz|Y~(-3`m;k9?zeEfiJT=2 zrP_Knvn3*J)SigZefasW;yB03E*f!)!tdWy^eSQMda?jmzya3RqHx{)M9bxUPoA=a zewmMo7vXj>cFsi7K8)pZ$z`dyW=MItO0NonG}NPAr_1AI{l0@^%&N6?L*5VMj-3(S z-5@O|b;EtX$zJC$Z&>Dh`Q_9}Yw-SG-z+&XoFJ7&Lq5}of=E{*FJye_u+l{wHX1V8 zRwLxI<8l@>EJ6zRWexU?u%)thJ85d{TRST*G5z7CG-8FClW|gI>$l_`8l5;CVYC<9FqsH8ucde$aJ0{}+4;MSq*}{PlAjp=5vaiuDiE>k0T4BX|BB}QrHbT26#BF+ znhWDPixO-D+*^zp^oTp}{BATSe9MWR9k~3qkk#2|cNvydzZENxofSH2g0ncd z=tiJSv9%~##R)l==N_GzCnlb!ND<-J0o}?$o9{mBJduet3lwW}=vpofydz_j!4Bl* z95`o6VgCb%LNh7gfw5fZNJ_JNVx^&!=TgMSE6e0hkCs&aXQv?x4piyJE@l;8_;FNN zPGp}p+tE&H0@rF-w{hG@z&)eJqS964iw=c>8L9Vi@pq8OBsdLge`S=mFTo9hmp;~R z5Pw_!lK^EHr}Vgpfv$;Xo!zeEl)wcG zz-(H`9bqrR0znee-}?C@V0sW}Cc>VfZln2cqL3uI5hkd$!=C!(`@qI$YD~M`Y`#sh z4BM|n7cZCf?u}(Jl^29t6mAEuNl}9^pw{s@;iyqxGkedBbgR<$Q@Apr&5T#^Dc+sU zfgc@BGqydINv;Atl$rRk8%~A8>0$c?a1y^%k#f6$-VS%} zA72@)fwEpN=j1#aEkl0v(sph!dn{u%1i6D^W5t;d{+U^bsi^g7cPx-f-Hjw{F2{{W zmCP*NW?U5Si1r5U)3|ofoSI({*YOz1jLW(NWI@ta@(;dE8hJp99U$rl!=^&~C`TZ{rKSJ2%i~qTo#a143(knPOzx7_Xw1Gef7ZH> zga5RLBokvHX@^y zzC51|VOk4MS&d6J4$85JBtvD4ccEvy7&~E+&&K#P3MT~;JtzzmvrJ|~^ATct5}>jG z8sazRdQ=j_|IyvK$X6E)mEpxaZSDt1=N7j3R$LTx!Ifad>>mACsw?2LdCv->+}D^O zs*#f*ZR2X3D_h`L!R*}tEV=*XAlP+M^@W{86FgfHPMJ6&TQ0U0Cy!Lr_a#Ies{#!v#O~@m~9GHuk z{_B%(O2xmLt`pQRUJ$d>IM0^qf@HUJxY-I(GkXff47FVQ^TB269 zX-gaShh?&Y?CS)IdibO1pc};yJ3lGC+U}jkz~*MX>aXp>zSyUF)LAd;JMhKjtF$js z&n&KrrSItcNuDav%V?LbpVSL6q(=l^4gFIxMW$#Sakc$A2w8i_RPR3kKr7?B7y#s9E1$UMXN2$xNn zVN?o_km?;Pe$-D(><`-u5dD7;hWGyo63EbO*I;A~g#ZfERD}uY+$c-t1(ezhhnr%t0YgPQ27YY96Hb=GSBJ;b`Y zh~lh2jmatAeeybKGuskeypOE+731YubjjFQVSm)lQrBpHxL6hyV1gpb;-%HjA&rsw zJ^RC_jS6a_F7EB+N9whMsK2+z;Y)pIy-Wft!+d7o)M>PWQPBL+Lid$b9UpmJpdyqg z-N{EK;Vgfzbi9GR9R>mn#9GpCMjjB9WF{O)bC=}Sbn0L41E|{oX zzgBflJA(+}?%nTCsl3dl9^HNocsp8d5!D#4R+)Or%Zt{+3ia&pKB%HUif4@zpavZ^ z(C|FNpj1`v_s4z*PX*JNp5C0{)#o{Qy~SFK#6E1vJo?#1Y@hlkE!Mof zja&ajv$ngq5gh++kWkCFq7!|pp46;citLN72-L(kEy7ESqcJiwd|(Uvmr7KML{t1R za_?$erGOKRdOV;lhf_Wyi@;%$)5u4k?SNA=B)ptu__N<0=R{(zL2X&cgnmSZ_Wm7vB~$f~_hmClBx0XG9Bc*L_$tOD#)-k397?2Bd|u0+d0Z z+?h9SPqP_AAvYOU+!65bc<>znwKtR2$$5a7(rVNTMlV8f!tdNle{gQ@$1*5Gmc+v4 zpT@V(gn+liFCU3RHo$>Gv2%@{aCRL!cT{_=yiCSyLEnnmpMym0g0S6BrKz@O2>ub5t-6~Il~ zNA4{gNK&=?=n%E7jz(xmmzAXo0sz3ZuFmej}k8BYwp2w&JJw_eVhY?Yo>7BZ5nOs_Y*(1|cQ|uY)S9Dl8Mq+{3)8SRn z)XhS?tS5U$wS>B6SbA*17DUC>LwPN$s=Q>yNs?Hd?S#?LP4|jt#w2v1NY*XMvH#_E z%-Go5Pd5*;O%Cnq@FH-xnQT?7dUa2sB3F==-DSvHYMethn!aa~KP7SM$Fbg{q_|iX|Zc0APGS5Hpe+{bAOe{b)RRKR9`;pSd5j4yBuAn~t3Mbr$So z_U!C~Wt!;>a;Y(-0WX&L2?F$J4tm@}nxMH1-rvklSLUf~ay56-Z&6aX zn>h8%J|W0%PVMP}<>ZJNZwb-1wiQ^#H)i&We!qq(`_bcKlD?T#rEu0-gNgwP{r^8$ zD~3R~w==Hzde+_Y^J#Ycs^4_qxX1S|_|vlfW1p)b6g+5ya7zL=7_k5;Eh0@?K|qiG z3_!xj1`>b=0p4ef+;`-jOaSy56ZsuhG68Vogv}R3uy!A_ZEI~+!vtMQB@+Sw06%Ip z?f!QT8FRbQ#WT;e*ccPZ zt;trS7MRG#y&MYsmKjA9)m5FssI$z(+qRIxa6!@$+}HF03Q*4D91j}ETAd(6mtAQ) z5-W{{c`EN**Pp8F8_|z&D3|FPls$_*i2dQSM$!Y!#&+`dFk@@ii(9WcNKJPr;CM^N^c# z0!b&pTB)KwW*x4I3hxhy<Z-iY44pg) zHXkt<0s#QvV~|;2`4JR?4XGs2LK_G{|B}X$Tmy!KBaSE_0A4su^e5~A+60HeVS(Qf zCjj7ZQPj?OZnL9pn6;s%Qc^0&5&(dZ!}`bKq~H`%))^nIWbawI zc}iF;lPs-o);|7h`~3Xi&sqPX^3rR|ef3T~KCH(S_2mG1F~?EX%5Cgl`5Qbq#iPyC%+djgiS9M&f zsRI1Q@$0dJX0TzcGL5Wd8m5NV=*b)TnkgO=@9#Hj@PtN;8#}TR??2Drk8(f zQCJEi{%5SjPv}7-NI;-5;Xh#|0B}*1{hWQYz74H~RW)3SnMnWu0Gqd!^DG1V`LA{~ zuewN`B0UAG2$x!XI&U@Q{*a@~`OUL?a^tpB=W z7ilZfT3XeU%JhNI~9aY zq83yvr!%lSiW}-=%%mVy(Nvo5gq5OeOvhuuS;#~Nl1f#Qiy6CZ%*~(OGVGNwaF9Oj0Y{GGak!kp$+4i|-o zOovX}N84JXtyWb^rX)oI06^3_f9%fYE$#mD+HiAjp8k7nhF8ggG_g#tarf<~`Rq=e z$$Ps#?{C$bZTlzES{>tW=B01gJLQ%U#us0DDGt)iVFia$g64w3f!73Q3tu+_^x(vr zuAoUY#KkyX)?G;h4(VM;^2vD_0X&`O^9u>yb88^a*W%I z<#QF;g-dk`SlOjGA0Tk8lhDo}ilEj}JF7D+-A_}U9pOAbolt+=HJ)^@V-QYII6DUc z_=;!5LgCqqD@Y^qhh$1^j`l!%9(TA<^?7#cZdk;wZB>);gi`m1*W$f|12w4rFf+9l` zNMdWi(b*6RzGf8McUTF`0>lj^@e`&42OMws_@RfMv8Tj=*FI+W(bhs$HKeOdNfH2n zYMdN&Oop}UxwAP}_rG6jkGJbLH(ZQ9-al+^kGpT?&mUe5t7jN)5rd_D%X0F=G99J6 z&21a|e(-VH6{}O!bP=Y{m~Iy0kY%#sm^#A10+afHh9UtOrg5`S0%yt5%Iil>kEv4S z_B!6gVt`eRkkry@v_v%eq_af=WIRM2XROQ&ld77aEO0KFK%;e6l5vx?s+pRxxTLC1 z1X@+l9x}5iv{^HguE~sbzVfS%?LRV0MRi9F*;Mr*yV=1RIR6;CzPILs<@eXt)Q3Ji zKi-9L6O)h4#h+XJTX(g6>aU7tOmz8o|MB;6JQQB??7MKradtM$>^)8MVq-5Zz&SNz z(-1pJkTBo}05J9QziSX8AVB&Ok+K8^6#yDU5D*7`FrWdRH#G21#Bne;IK&Mxv3bO2 zU|`GPcCioJ!y00+cXZSmt*>fGDV3Q7006)E{!gaM@a*Sr@Av&BATSb z+)cKzHO16!^5Lo2`$VN@$JW$t*s- zhomp(p&BM@2BIQ+U^krH!#?EDb88qwO3AI=p6DQu4E}L(@d|*Rs9+#(!NZWrLjdRZ zqRo5jFHDf#EputPFsA(joV_w#*U%&d131`W%=oc+$EGed{4}Q23K{zvV%f5L8Hj0EmCW2VP8D#zJ+x>77`W3-K^R>L&Z zG?+;M0GQ_N?*twD<=&gYw)TDfwHFsrEY|79YV++~8*WW)ux;CoMY=V2hebyvrInLB z>x;U+Gz<>q9;zf*GVWLgYKJPfRJ&<2-M9iWC9<7?oT$nA4okDg+pbc^Y8X- zQ&YTDmbnfCT~KDN_sNKY?vnMpjqlF4>xYUqeCQ&m+aNdN$d4kQn4W9Mt5ShBBq zJD>3Lx@d{7F2>ohFGmOKxnZ^5b#T*&Bbh8Q3f-T=Xk8FZhez=)$M}+Ba=ct5fl|a% z92Y5$qLd~AorRQbheq5ggz2JkpjbT>Q3Y`gMp-jdGn&MUBln}0vm^RPaTidg8O;>x zo?)@-i8ZZ;T-UY}>X!4NQMQ?3Zd@1uxrgJk_yf$kZp=WrZ`eIFIk6aP+?Uxl{D{T* zadmEFF*1_KJGS0dkTEb+P5;mI-g77b*s1ZY!X-PSU}ou}iGIMfJKOedW@DTEap~;L z9wy%DW=O6>&Bhns|Htfqc#0ya3+VISeEl)@?b`zX&!0QLKeKJ$3{xau;g?F%64~FV zns2)T2xdiRa5(zg68gQ}4pBu3tsNKuN&ru1XHx(KxTpaD00000_7njY3IG5AL%wT3 z6#rfSWdBtETK`D@JpVBN7yQAgHC|^d=vUQBme+l?7o%c?%DmhmM4vt-;rU~*&Kbvuf;d7Zu_48`1Q-kvs#_?sOx>} z0M}JnRlHtmjnazLtn&WXJMOOF8q{@_)<=3Grd!^lJu4l*xfQiggW|BJR7~f1)GneN z`3k}LRGDfJfg|>Qy)2WAq)O4&p)8Ykl#$C!nPVR=TV ztCNhN8SYrqP^0OEskQ~v*IU`sKb_U{!&mLoo|`pQ-S2dF9WW~W@NPCagLYpv=VF!` z?%GN9MINtB=h5ADa&xj6ayQ>O?13hytA{S&ylPdqd92O+OfatN=k?c9e`c{}Up}q* z#Z13X!jtSydSLop`JWcC_3b|I9cydbzty1_{t~u17)VQ@kCJo`JGc*AMOap)g z0h}@<0RCo7#80wiq!+tQWn9mUTKN-sE8{^6s&T#Db&%Puze(C88f!q*Un3&S47p}8l7DZ zGB%><+vONFaM*NKRmUNW-9b5vLlTAqIcG3MCvQn1m~i6~T}9Kal ziI~I=$F^CDHMYwjroA;O&U5$PFmAd(@f5zGv-l|14H*sv(J{U8}*Kgn74KP`i2u=uekU# zgJ;rxl4WnUO-Q;QLXC+dYi6m1C+DEQ9+AgoGBU?6^R!8fC<-SXqW~RGcQeCQ-+DN zd}JowNhNFM>1*tMOg6NGV#!9<)aYq6HHHD0n4T4iHZed;rp= zKmr>8-e&Z~pV-@Iv@?M+qaZeqxs}1*1Gr(j%jpBVuc+4gW?Bsml>h($KS)#X$sw5IMigFfowD< z>3JW1Pt2u^?@lg`NeRFd#YPhG)Z6c6#$*Ok>_MLHL8(Ik+x*;Nw1q`-Wi8d<@TiOl3aa_&n<)C#Q0N zCle9v}^nQ}WG2uc225Mlf4gg0}fsq>MjMsFo0#q7uRK`!7RI@OQ16HkTkU=#$ zyGzgmLn!xc7znewTx63h)rEml0ghx6+b+)qWKuhujt62FiJaUx69F#?*_kb6auIP& z0ST34L}e)%8k#{h)ZK$k_P_kP7{IZ=7nGCKF3>VPwg2Q?TBF)D*~57nV5X1F&jZ>0 zQsb)5|97@006CT+Rt=;ur%;x)J>F=JU=AKr*pBmmFwfHN$S$N&7RhE zX*uc7mcI8obgx81pJR!wk8V*i;-*;KaZzEkL`2gX(?+pV?QROkklhi6t|l1+O`Ptj zcNxdj6Vi)S+Ywg98I_VXO%0h9Cvj)0vRw~z%qs)tx9X%_p2eDlK`YK;=$vU@x}ho9 zyvbn(=qB6M6KyJi5injnhqoy3w2GevLFYc+N8v_&?9N)l6t#;anw}c5JZILvg}|#7 zTR-+#;D*OUpkES_Q8!If(=uK{4X;fw3Gx%}ROds8;$oGoN(nOi6dGLqo-NlB5!4 z&^VQdLz|l>h($03f=b=QmF5KC;EJHaWT)-;Vt)w`ZSivvbD#WwMyF|L!1n z|NnRS&dNg8t|w1crAuGe{ zMT#R6$Yv}cskQnHR?R}Mopnc8rBrv+(NSz)Wjd@6x@-^a-8518`-<|gj_7<@8`p!l zAM5hj&F4~gaRIKL_aVU708BUV7(6%&+_2}~J;xLP4*&oV3$T3-1ONa4d@%6v2LOP> zZUX=e&J}zB%h&}t4h#Sfuz&-=g8~4aW$g4B@hdvU2BwUWeJGL@uz{P&-s(E~*@JDi zK2!xk0w4qc00000Zs@AG7n^aPHNGa_dyoHy&EIQn!<~wHSJk{5tnJ-rnpU>S?EBW+ z8CQlib1u}HqKusKuBXdD)%Sud&XTpYZjrGlBNCW!TE(!eT9p(kNSj`Pc|f5mtD?3l zaJQwJID1W#;=YJT6)K2yjzf^ZR3Vw7MSP7aYaWvRh|%P7-$sSoyAKQa_u(ENT=DP# z0yrLzh64aBo@Kn~Q}2L6d0;DoE8|w4`ZyFUiW|7mZnwK?wcBWmZPY>q0RR9100000 zAgjT0zvno+|J>~JcbD$bjl0L9)E0FIt>oXK(w~8eePl)Go^0)@XZr znjvGds8roc9i`-msq9LpmsRw-WRdX#Mb>p+v9hNC2F+AWme`1lqZ&{g-BB1A+|%n~ zvVakroAOZ`tMKD7rhs@f#jpVB0p4Z&_bgwU01nV){O>GZN&p8SqzV84000000001h Z2QkYyuAV!?7LKUJE;D1-4Oakw2LP@;_w)b& literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/sounds/mcl_bows_firework_soft.ogg b/mods/ITEMS/mcl_bows/sounds/mcl_bows_firework_soft.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8b2e7bc5bdf0d5d25ae4a1c89c881e0ff4900369 GIT binary patch literal 55786 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 c-je@FEoVy(XtS8|T4%!zRSg4e&Hs=55ATUp8vp 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_1.png b/mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3769f2967b880e0b3eaa1162b8db067891f48b19 GIT binary patch literal 2383 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_3.png b/mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8a8f1b03fcfaf94a5ef572da591dc05a5c80080f GIT binary patch literal 2794 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 QCIA2c07*qoM6N<$f>%QorT_o{ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/textures/mcl_bows_firework_green.png b/mods/ITEMS/mcl_bows/textures/mcl_bows_firework_green.png new file mode 100644 index 0000000000000000000000000000000000000000..acd74d6d1c59b86acfa3c74c9861a414b28f061c GIT binary patch literal 627 zcmV-(0*w8MP)EX>4Tx04R}tkv&MmKpe$iTSX}?4pxxj5U@H~5EXIMDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|=H{g6A|?JWDYS_3;J6>}?mh0_0scmXsb<$WplX(p zP9}tGZdK@cMG#>OU>H$}nfjb4rrU7TlmpZjx!mAuISpFljzbi*RvAfDc| zbk6(45mu5E;&b9LgDyz?$aUG}H_kbWYY7*5n`d(!Ey()lA#h$5yuo&qkMnX zWrgz=XSGset$XqphVt6VGS_JiA&EsSL4*JqHIz|-g*dGmDJIgipYZTU9luB}nOtQs zax9<<6_Voz|AXJ%nuW;;Hz||=x?gPjV+82g1)6o+{yw(t<_QpZ2ClTWzuEw1K1r{) zwb&8Rw+&oew>5bWxZD8-pLEHP94SE4Unl_YXY@@up#K&KuDQLn_Hp_EWT>mu4RCM> zj20<--Q(T8oxS~grq$mMb0c!6Z+X|p00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-^y4HYOI7BNEw0001jNklYzcxul;3SeR&5wJig1tv8yW=TBiUj2Rk;NLBT z1~FzyOHM~2W>KuF-~D}k{QG_s4GatnLd>G_?8+>RtZ1tL{Qu4H6T?YR4kIfwBQupf zJsdQ!pobs^Koev^jveIiMvFLf4X^$_KmL6`{-lAT;laOKkeH{wrvVGvFD=Wy1!MpK N002ovPDHLkV1m_i4Y~jT literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/textures/mcl_bows_firework_red.png b/mods/ITEMS/mcl_bows/textures/mcl_bows_firework_red.png new file mode 100644 index 0000000000000000000000000000000000000000..4d7355c57a57e45bcf3060f4831604a1bc07d10a GIT binary patch literal 622 zcmV-!0+IcRP)EX>4Tx04R}tkv&MmKpe$iTSX}?4pxxj5U@H~5EXIMDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|=H{g6A|?JWDYS_3;J6>}?mh0_0scmXsb<$WplX(p zP9}tGZdK@cMG#>OU>H$}nfjb4rrU7TlmpZjx!mAuISpFljzbi*RvAfDc| zbk6(45mu5E;&b9LgDyz?$aUG}H_kbWYY7*5n`d(!Ey()lA#h$5yuo&qkMnX zWrgz=XSGset$XqphVt6VGS_JiA&EsSL4*JqHIz|-g*dGmDJIgipYZTU9luB}nOtQs zax9<<6_Voz|AXJ%nuW;;Hz||=x?gPjV+82g1)6o+{yw(t<_QpZ2ClTWzuEw1K1r{) zwb&8Rw+&oew>5bWxZD8-pLEHP94SE4Unl_YXY@@up#K&KuDQLn_Hp_EWT>mu4RCM> zj20<--Q(T8oxS~grq$mMb0c!6Z+X|p00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-^y4HYO23x-o+0001eNklYjYH!a#3SeR&5wJk@si`qbO5#!X_xbaGw{9Uc zFiT2uIyy3oiegv&`t|qy`%yG7FfcHSin1#!GqSRxss8`__fJeGK>#BwD zaB^>EX>4U6ba`-PAZ2)IW&i+q+TB-Mmg6W4{nsjH2}nXbmV?2Z(>v(p&&4*bI92IN zI`uJULfMjKA;i5PT(tiF)#)Gn#IcaKm_iQ0;pel@QlKQa|MGTc=ePUu;HGl1)A<5n zokHsV7|Y>bV7HGBa|~Xtc1p(^Nk^a=`3R_EWP#FdlZ0J%JNqM0UUwzr6mL^qWS8}D z+)_C%ja%q5$atn(gO5O|8N5_vRaUp%)1HBji?s~CnMleQ~hmHR9@|8xt*8vf` zbYg|PWUO4IF_;^7c!3b^2XD3kJljFPyIDV2s$kGIm=h*g+_HyQj6c?vZagde407KU zOtBpS01?JEB*O{@Twpa0?4n3y295~?6=W{h8w(g=xfG#-feK<3_!n3fS#En$gETJlmVmQVH7YN)ZMnrms& zw4qG2&|*t1x3V&=s1&PTZ4GN&)0)@PvDUhF->rupd+NEDleL4@PwfTP_+U*oriNcU zS%Z~goFRCW6C0d?G4Tw><6r;_S_Wq>vG+2V8=Sc;*c2v6(gruwcrXSE{mNpUPwqaL zdx|%*^b~LM9dk6O`w8X<)P3gd3)b2==jz7Tz6%GYPOqvPyOB}Pn z$B~>6F+B%GK6;v;QF)z7t(%D+bEAGvpruLIIwLPfWS)}l4R=x|8UD;5&Veqd(6g}Q z&#+u1eGiL1g5`n+y#dQb(i^Z`B)tL4MbaCvTqL~#%SF-~uv}1~H(0dQdoLY*vb#nj!0flKpLr_UWLm+T+Z)Rz1WdHzpoPCi!NW(xJ#a~mUQd%7> z_<=))>SRGw#8InIgbJlrXw|{w(hs3YLz3d+D7Y3J{8+3yxH#+T;3^1$A0TdSPKqv4 z;{TFDix>}%`|XH%&pJjd5P ze0;r&@htCie~z${HyPj)iD#H@Sj6kZQ=68~d7n7KN|Hi+PCRPR1&JTIF1!53x#+OK zGb2VOJx3fN7K?2xw=pXjD)A(7R8cj`7qTuZoVPfu%gm2FkDyqg5ltM4I;F9{xecpCXq`t_?79%%cJolH&*egWuhng^6)DDHI1fUu^qh z7zpeFjhbzLAKP~01n@rtS6a(osRPrWq}N(n^a$wL1}?5!n!E>G?g0Hyx@1U>MD5y92^28Mao|Dcz0KOZ~vZY_V)upL2{ECAdxKq z000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jvP57Y-u@zorTR004DKL_t(2&)t$e z4uBvGgZ%TyO0aUeK b{`;X<* zaB^>EX>4U6ba`-PAZ2)IW&i+q+Ray4lI$o9{MRYw2uL6h$H6QSbAvhlB;Z=Qt9q&K z_wkCbk!2x?OaU(H|NT4YAN+(xC}^^nV|4h19I_M$=JqeIJG-#%=YzWlZ}fD1Ay9er zem|yi+85~cHsBJ2kGFcV^NrZ)=;HZw=x1bs(C(9jUbddY=_vOt#BAw4)kAh)Ps5eU zdHJ+lU!BZnx>tk*l$yfIi*(Q4t-I|E{JhwgsbBX1JN9wOp3nt-o5|;>0vtOHAb^B`kq}05s1dK zq8we&nPXsh0CK;EMYM!VA*aa%U2qWQ71&~ z?1~lgl3BS(V=_1IumT}GPTq6@d}$~B?yi1Ns$ftT%!UaTcWf7j@~yV~;@QJa(eG8k zl-lV45FxfA8TMenMfS>(T@p#mz|lZZLFR(Baex6Fw{^{uR&F#CNrp{ya^?~q0Rz^jOLGWZ{9&kVE$^Fv7 zU*zaWK^dPQD3=_?Xlgq)fZrxY7om(Dz~`u8s^qZH?4xnbZ<`iE!>Y+A*M zv&`K~Ju<>N+uohjnzvZ799*rphwxQuv~z1`qRnS_v^`1XY<=mA1zx)O;qpOGr{Lp? zkQt}&lDcA>b!ExJSwFnrNel@+KhAE0?XdQ@m0HJA-@Zl)9m{=>@6`)$eSDS|Jxx?} zN#^P}39KztIUy5Y>H~iCHMjTpwUZZ|=cY@{=2ld~PPxN>+~<`i_E5j)-?1}3z(=3p z_Y!>c34SlZN1x#L5`6RtelNjCpWycreDt&Od+h0F<@X35{jB^R;i8|F-y?kV?edec zLTL*T|6`WE@GTAcg5Nz;eB~?eY2xpbdxjsqQh)LG@USz}i(B)DJ2QQAYkqf%Jsx88 zyVLA;h|#xBv2XPBC(ix9$kD(DSVmR<4>_^-vPu8QtpET4g=s@WP)S2WAaHVTW@&6? z004NLeUUv#!$2IxUsI)0S{*F-fkTGsWIiY`*(|B^zB7!Qv7@$TN^?j0c1%S<&p#sF2bjC3L{W^*fI z;1xl1qYq&WNX*n{Q>i38$Jaf4e7%eDEbnuFjF%XP9nS#OuUUo0iUbpE$xw zl0tk=JZjJdi66NxyZpwv=&-;uBSt1YM;sv*i)}2oF)JA=@g#9nQ8mgJvMwu}w>Yci zDr?@8zc7^7mY29ra|j76U=b;ZkWs}3%CHclRU^ejn)c%!{z1o|B9~0A4KQ-dqXHF@ z;|KqP-`$#piE%e66bCwAZ2Myv2@ApqkCqV!s6DuPlGk$N9?CIg4fdwrD zF-`dY?>BZ0e}BIIi8GpCqigv4^ZEBT`|&3Y6b=8r-GanC^*s#$Sz#~>;{u0_00000 LNkvXXu0mjfC5$>B literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/textures/mcl_bows_rocket.png b/mods/ITEMS/mcl_bows/textures/mcl_bows_rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..800185ce08db4e4327442dcee0a0393223ad1bc5 GIT binary patch literal 2133 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 FV1hj1Dy9Gc literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index ecc9fe113..17b6b6ac6 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -379,8 +379,8 @@ mcl_enchanting.enchantments.mending = { inv_tool_tab = true, } --- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.multishot = { + +mcl_enchanting.enchantments.multishot = { name = S("Multishot"), max_level = 1, primary = {crossbow = true}, @@ -396,10 +396,10 @@ mcl_enchanting.enchantments.mending = { power_range_table = {{20, 50}}, inv_combat_tab = true, inv_tool_tab = false, -}]]-- +} -- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.piercing = { +mcl_enchanting.enchantments.piercing = { name = S("Piercing"), max_level = 4, primary = {crossbow = true}, @@ -415,7 +415,7 @@ mcl_enchanting.enchantments.mending = { power_range_table = {{1, 50}, {11, 50}, {21, 50}, {31, 50}}, inv_combat_tab = true, inv_tool_tab = false, -}]]-- +} -- implemented in mcl_bows mcl_enchanting.enchantments.power = { @@ -456,7 +456,7 @@ mcl_enchanting.enchantments.punch = { } -- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.quick_charge = { +mcl_enchanting.enchantments.quick_charge = { name = S("Quick Charge"), max_level = 3, primary = {crossbow = true}, @@ -472,7 +472,7 @@ mcl_enchanting.enchantments.punch = { power_range_table = {{12, 50}, {32, 50}, {52, 50}}, inv_combat_tab = true, inv_tool_tab = false, -}]]-- +} -- unimplemented --[[mcl_enchanting.enchantments.respiration = { diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index 6c5d7f6e4..b756d4a6d 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -230,7 +230,7 @@ local function spawn_mobs(pos, elapsed) -- spawn up to 4 mobs in random air blocks if air then - local max = 4 + local max = 200 if spawn_count_overrides[mob] then max = spawn_count_overrides[mob] end @@ -387,4 +387,3 @@ minetest.register_lbm({ respawn_doll(pos) end, }) - diff --git a/mods/ITEMS/mcl_potions/tipped_arrow.lua b/mods/ITEMS/mcl_potions/tipped_arrow.lua index ab55cb72a..1717533a8 100644 --- a/mods/ITEMS/mcl_potions/tipped_arrow.lua +++ b/mods/ITEMS/mcl_potions/tipped_arrow.lua @@ -463,4 +463,4 @@ function mcl_potions.register_arrow(name, desc, color, def) if minetest.get_modpath("doc_identifier") then doc.sub.identifier.register_object("mcl_bows:arrow_entity", "craftitems", "mcl_bows:arrow") end -end \ No newline at end of file +end diff --git a/mods/PLAYER/mcl_player/init.lua b/mods/PLAYER/mcl_player/init.lua index a3c769741..2a4c25c34 100644 --- a/mods/PLAYER/mcl_player/init.lua +++ b/mods/PLAYER/mcl_player/init.lua @@ -9,7 +9,7 @@ local animation_blend = 0 local function get_mouse_button(player) local controls = player:get_player_control() local get_wielded_item_name = player:get_wielded_item():get_name() - if controls.RMB and not string.find(get_wielded_item_name, "mcl_bows:bow") or controls.LMB then + if controls.RMB and not string.find(get_wielded_item_name, "mcl_bows:bow") and not string.find(get_wielded_item_name, "mcl_bows:crossbow") or controls.LMB then return true else return false @@ -212,9 +212,9 @@ minetest.register_globalstep(function(dtime) player_set_animation(player, "swim_walk_mine", animation_speed_mod) elseif not controls.sneak and head_in_water and is_sprinting == true then player_set_animation(player, "swim_walk", animation_speed_mod) - elseif string.find(player:get_wielded_item():get_name(), "mcl_bows:bow") and controls.RMB and controls.sneak then + elseif string.find(player:get_wielded_item():get_name(), "mcl_bows:bow") and controls.RMB and controls.sneak or string.find(player:get_wielded_item():get_name(), "mcl_bows:crossbow_") and controls.sneak then player_set_animation(player, "bow_sneak", animation_speed_mod) - elseif string.find(player:get_wielded_item():get_name(), "mcl_bows:bow") and controls.RMB then + elseif string.find(player:get_wielded_item():get_name(), "mcl_bows:bow") and controls.RMB or string.find(player:get_wielded_item():get_name(), "mcl_bows:crossbow_") then player_set_animation(player, "bow_walk", animation_speed_mod) elseif is_sprinting == true and get_mouse_button(player) == true and not controls.sneak and not head_in_water then player_set_animation(player, "run_walk_mine", animation_speed_mod) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 1f881d2b6..f86d5e26a 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -127,6 +127,7 @@ minetest.register_globalstep(function(dtime) for _,player in pairs(get_connected_players()) do --[[ + _ _ _ __ _ _ __ (_)_ __ ___ __ _| |_(_) ___ _ __ ___ / _` | '_ \| | '_ ` _ \ / _` | __| |/ _ \| '_ \/ __| @@ -220,6 +221,10 @@ minetest.register_globalstep(function(dtime) player:set_bone_position("Wield_Item", vector.new(0,3.9,1.3), vector.new(90,0,0)) elseif string.find(wielded:get_name(), "mcl_bows:bow") then player:set_bone_position("Wield_Item", vector.new(.5,4.5,-1.6), vector.new(90,0,20)) + elseif string.find(wielded:get_name(), "mcl_bows:crossbow_loaded") then + player:set_bone_position("Wield_Item", vector.new(-1.5,5.7,1.8), vector.new(64,90,0)) + elseif string.find(wielded:get_name(), "mcl_bows:crossbow") then + player:set_bone_position("Wield_Item", vector.new(-1.5,5.7,1.8), vector.new(90,90,0)) else player:set_bone_position("Wield_Item", vector.new(-1.5,4.9,1.8), vector.new(135,0,90)) end @@ -231,6 +236,14 @@ minetest.register_globalstep(function(dtime) if string.find(wielded:get_name(), "mcl_bows:bow") and control.RMB then player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch+90,-30,pitch * -1 * .35)) player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3.5,5.785,0), vector.new(pitch+90,43,pitch * .35)) + -- controls right and left arms pitch when holing a loaded crossbow + elseif string.find(wielded:get_name(), "mcl_bows:crossbow_loaded") then + player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch+90,-30,pitch * -1 * .35)) + player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3.5,5.785,0), vector.new(pitch+90,43,pitch * .35)) + -- controls right and left arms pitch when loading a crossbow + elseif string.find(wielded:get_name(), "mcl_bows:crossbow_") then + player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(45,-20,25)) + player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3,5.785,0), vector.new(55,20,-45)) -- when punching elseif control.LMB and not parent then player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch,0,0)) From e5c5a785533115a82cea5414f61e6844ed47b27d Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 24 Oct 2021 20:13:34 +0200 Subject: [PATCH 305/720] Update contribution guidelines --- CODE_OF_CONDUCT.md | 128 +++++++++++++++++++++++++++++++ CONTRIBUTING.md | 186 ++++++++++++++++++++++++++------------------- 2 files changed, 236 insertions(+), 78 deletions(-) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..8086a2f44 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +eliasfleckenstein@web.de. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1b5098a4f..84ac10f20 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,101 +1,127 @@ -# Contributing to MineClone 2 -So you want to contribute to MineClone 2? +# Contributing to MineClone2 +So you want to contribute to MineClone2? Wow, thank you! :-) But first, some things to note: -MineClone 2's development target is to make a free software clone of Minecraft, -***version 1.12***, ***PC edition***, *** + Optifine features supported by the Minetest Engine ***. +MineClone2's development target is to make a free software clone of Minecraft, +***version 1.17***, ***Java Edition***, *** + Optifine features supported by the Minetest Engine***. The priority is making polished features up to version 1.12. -MineClone 2 is maintained by three persons. Namely, kay27, EliasFleckenstein and jordan4ibanez. You can find us -in the Minetest forums (forums.minetest.net), in IRC in the #mineclone2 -channel on irc.freenode.net. And finally, you can send e-mails to - or . +MineClone2 is maintained by Nicu and Fleckenstein. If you have any +problems or questions, contact us (See Links section below). -By sending us patches or asking us to include your changes in this game, -you agree that they fall under the terms of the LGPLv2.1, which basically -means they will become part of a free software. +You can help with MineClone2's development in many different ways, +whether you're a programmer or not. -## The suggested workflow -We don't **dictate** your workflow, but in order to work with us in an efficient -way, you can follow these suggestions: +## Links +* [Mesehub](https://git.minetest.land/MineClone2/MineClone2) +* [Discord](https://discord.gg/xE4z8EEpDC) +* [YouTube](https://www.youtube.com/channel/UClI_YcsXMF3KNeJtoBfnk9A) +* [IRC](https://web.libera.chat/#mineclone2) +* [Matrix](https://app.element.io/#/room/#mc2:matrix.org) +* [Reddit](https://www.reddit.com/r/MineClone2/) +* [Minetest forums](https://forum.minetest.net/viewtopic.php?f=50&t=16407) -For small and medium changes: +## Using git +MineClone2 is developed using the version control system [git](https://git-scm.com/). If you want to +contribute code to the project, it is **highly recommended** that you learn the git basics. +However, if you're not a programmer or don't plan to help with the coding part of the development, +it's still useful if you know it - in case you want to contribute files that are not related to code, +or to easily keep your game updated and test out pull requests. However, it's not required in this +case. -* Fork the repository +## How you can help as a non-programmer + +As someone who does not know how to write programs in Lua or does not +know how to use the Minetest API, you can still help us out a lot. +For example, by opening an issue in the [Issue tracker](https://git.minetest.land/MineClone2/MineClone2/issues), you can +report a bug or request a feature. + +### Rules about both bugs and feature requests +* Stay polite towards the developers and anyone else involved in the discussion. +* Choose a descriptive title. +* Try to use proper english and please start the title with a capital letter. +* Always check the currently opened issues before creating a new one. Don't report bugs that have already been reported or request features that already have been requested. +* If you know about Minetest's inner workings, please think about whether the bug / the feature that you are reporting / requesting is actually an issue with Minetest itself, and if it is, head to the [Minetest issue tracker](https://github.com/minetest/minetest/issues) instead. +* If you need any help regarding creating a Mesehub account or opening an issue, feel free to ask on the Discord / Matrix server or the IRC channel. + +### Reporting bugs +* A bug is an unintended behavior or, in the worst case, a crash. However, it is not a bug if you believe something is missing in the game. In this case, please read "Requesting features" +* If you report a crash, always include the error message. If you play in singleplayer, post a screenshot of the message that minetest showed when the crash happened (or copy the message into your issue). If you are a server admin, you can find error messages in the log file of the server. +* Tell us which MineClone2 and minetest versions you are using. +* It's always useful to tell us what you were doing to trigger the bug, e.g. before the crash happened or what causes the faulty behavior + +### Requesting features +* Make sure the feature you request is Minecraft 1.17 Java Edition or Optifine behavior. +* Don't beg for something to be implemented. We are not going to rethink our development roadmap because someone sais "Pls pls make this I'm waiting for this so bad!!!11!". +* Check whether the feature has been implemented in a newer version of MineClone2, in case you are not using the latest one. + +### Testing code +If you want to help us with speeding up MineClone2 development and making the game more stable, a great way to do that is by testing out new features from contributors. +For most new things that get into the game, a pull request is created. A pull request is essentially a programmer saying "Look, I modified the game, please apply my changes to the upstream version of the game". +However, every programmer makes mistakes sometimes, some of which are hard to spot. You can help by downloading this modified version of the game and trying it out - then you tell us whether the code works and does what it claims to do or whether you have encountered any issues. +You can find currently open pull requests here: . Note that pull requests that start with a `WIP:` are not done yet, and therefore might not work, so it's not very useful to try them out yet. + +### Profiling +If you own a server, a great way to help us improve MineClone2's code is by giving us profiler results. Profiler results give us detailed information about the game's performance and let us know where the real troublespots are. This way we can make the game faster. +Minetest has a built in profiler. Simply set `profiler.load = true` in your configuration file and restart the server. After running the server for some time, just run `/profiler save` in chat - then you will find a file in the world directory containing the results. Open a new issue and upload the file. You can name the issue " profiler results". + +### Let us know your opinion +It is always encouraged to actively contribute to issue discussions, let us know what you think about a topic and help us make decisions. + +### Crediting +If you opened or have contributed to an issue, you receive the `Community` role on our Discord (after asking for it). + +## How you can help as a programmer +(Almost) all the MineClone2 development is done using pull requests. If you feel like a problem needs to fixed or you want to make a new feature, you could start writing the code right away and notifying us when you're, but it it never hurts to discuss things first. If there is no issue on the topic, open one. If there is an issue, tell us that you'd like to take care of it, to avoid duplicate work. Note that we appreciate any effort, so even if you are a relatively new programmer, you can already contribute to the project - if you have problems or questions regarding git, Lua, or the Minetest API - or the MineClone2 codebase, feel free to ask them on our Discord. +By asking us to include your changes in this game, you agree that they fall under the terms of the GPLv3, which basically means they will become part of a free software. +If your code leads to bugs or crashes after being merged, it is your responsibility to fix them as soon as possible. + +### The recommended workflow +* Fork the repository (in case you have not already) * Do your change in a new branch * Create a pull request to get your changes merged into master +* Keep your pull request up to date by regulary merging upstream +* After the pull request got merged, you can delete the branch -For small changes, sending us a patch is also good. +### Git Guidelines +* We use merge rather than rebase or squash merge +* We don't use git submodules. +* Your commit names should be relatively descriptive, e.g. when saying "Fix #issueid", the commit message should also contain the title of the issue. -For big changes: Same as above, but consider notifying us first to avoid -duplicate work and possible tears of rejection. ;-) +### Code Guidelines +* Each mod must provide `mod.conf`. +* Each mod which add API functions should store functions inside a global table named like the mod. +* Public functions should not use self references but rather just access the table directly. +* Use modern Minetest API +* Use spaces instead of tabs +* Even if it improves performance, it is discouraged to localize variables at the beggining of files, since if another mod overrides some of the functions / variables you localized, you will still have a reference to the old function. -For trusted people, we might give them direct commit access to this -repository. In this case, you obviously don't need to fork, but you still -need to show your contributions align with the project goals. We still -reserve the right to revert everything that we don't like. -For bigger changes, we strongly recommend to use feature branches and -discuss with me first. +### Changes to Gameplay +Pull Requests that change gameplay have to be properly researched and need to state their sources. These PRs also need Fleckenstein's approval before they are merged. +You can use these sources: -If your code causes bugs and crashes, it is your responsibility to fix them as soon as possible. +* Minecraft code (Name the source file and line, however DONT post any proprietary code). You can use MCP to decompile Minecraft. +* Testing things inside of Minecraft (Attach screenshots / video footage of the results) +* Official Minecraft Wiki (Include a link to the page) -We mostly use plain merging rather than rebasing or squash merging. +### Developer status +Active and trusted contributors are often granted write access to the MineClone2 repository. However you should not push things directly to MineClone2 master - rather, do your work on a branch on your private repo, then create a pull request. This way other people can review your changes and make sure they work before they get merged. You are allowed to merge PRs if they have recieved the necessary feedback. +You may also be assigned to issues or pull requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can also unassign yourself from the issue / PR if you have no time or don't want to take care of it for some other reason (after all, everyone is a volunteer and we can't expect you to do work that you are not intrested in) - the important thing is really that you make sure to inform us if you won't take care of something that has been assigned to you. +Also, please assign yourself to something that you want to work on to avoid duplicate work. +As a developer, it should be easy to reach you about your code. You should be on the Discord (or, if you really don't like Discord, Matrix or IRC). -Your commit names should be relatively descriptive, e.g. when saying "Fix #issueid", the commit message should also contain the title of the issue. +### Maintainer status +Maintainers are responsible for making sure issues are addressed and pull requests are reviewed and merged, by assigning either themselves or Developers to issues / PRs. +Maintainers are responsible for making releases, making sure guidelines are kept and making project decisions based on what the community wants. +Maintainers grant/revoke developer access. -Contributors will be credited in `CREDITS.md`. +Currently there are two maintainers with different responsibility fields: -## Code Style +* Fleckenstein - responsible for gameplay review, technical guidelines and issue/PR delegation +* Nicu - responsible for community related issues -Each mod must provide `mod.conf`. -Each mod which add API functions should store functions inside a global table named like the mod. -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 -``` -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. - -## What we accept - -* Every MC features up to version 1.12 JE. -* Every already finished and working good features from versions above (only when making a MineClone5 PR / Contribution). -* Except features which couldn't be done easily and bugfree because of Minetest engine limitations. Eg. we CAN extend world boundaries by playing with map chunks, just teleporting player onto next layer after 31000 , but it would cost too much (time, code, bugs, performance, stability, etc). -* Some features, approved by the rest of the community, I mean maybe some voting and really missing any negative feedback. - -## What we reject - -* Any features which cause critical bugs, sending them to rework/fix or trying to fix immediately. -* Some small portions of big entirely missing features which just definitely break gamplay balance give nothing useful -* Controversial features, which some people support while others do not should be discussed well, with publishing forum announcements, at least during the week. In case if there are still doubts - send them into the mod. - -## Reporting bugs -Report all bugs and missing Minecraft features here: - - - -## Direct discussion -We have an IRC channel! Join us on #mineclone2 in freenode.net. - - - -## Creating releases +#### Creating releases * Launch MineClone2 to make sure it still runs * Update the version number in README.md * Use `git tag ` to tag the latest commit with the version number @@ -103,3 +129,7 @@ We have an IRC channel! Join us on #mineclone2 in freenode.net. * Update ContentDB (https://content.minetest.net/packages/Wuzzy/mineclone2/) * Update first post in forum thread (https://forum.minetest.net/viewtopic.php?f=50&t=16407) * Post release announcement and changelog in forums + +## Crediting +Contributors, Developers and Maintainers will be credited in `CREDITS.md`. If you make your first time contribution, please add yourself to this file. +There are also Discord roles for Contributors, Developers and Maintainers. From 5c55ddff1e77db995979c6e64457190455fa07f5 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 24 Oct 2021 20:21:54 +0200 Subject: [PATCH 306/720] Delete merge artifact --- CONTRIBUTING.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 67554d9fa..84ac10f20 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -81,7 +81,6 @@ If your code leads to bugs or crashes after being merged, it is your responsibil * Fork the repository (in case you have not already) * Do your change in a new branch * Create a pull request to get your changes merged into master -<<<<<<< HEAD * Keep your pull request up to date by regulary merging upstream * After the pull request got merged, you can delete the branch From 832e634e3bae8e37657a5e8eb23950d6c37c0509 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 24 Oct 2021 20:44:37 +0200 Subject: [PATCH 307/720] Use tabs instead of spaces, spaces are braindead --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 84ac10f20..b47ab9aa0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -94,7 +94,7 @@ If your code leads to bugs or crashes after being merged, it is your responsibil * Each mod which add API functions should store functions inside a global table named like the mod. * Public functions should not use self references but rather just access the table directly. * Use modern Minetest API -* Use spaces instead of tabs +* Use tabs instead of spaces * Even if it improves performance, it is discouraged to localize variables at the beggining of files, since if another mod overrides some of the functions / variables you localized, you will still have a reference to the old function. ### Changes to Gameplay From dafe860e56ac7ce866affe414fe7eef20b5fd3db Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 24 Oct 2021 19:31:51 +0000 Subject: [PATCH 308/720] simple totem particles --- mods/ITEMS/mcl_totems/init.lua | 77 +++++++++------------------------- 1 file changed, 20 insertions(+), 57 deletions(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index 2206fcb2a..79b2c8de0 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -4,49 +4,7 @@ minetest.register_on_leaveplayer(function(player) hud_totem[player] = nil end) --- Totem particle registration - -function rgb_to_hex(r, g, b) - return string.format("%02x%02x%02x", r, g, b) -end - -minetest.register_entity("mcl_totems:totem_particle", { - physical = true, - collide_with_objects = false, - collisionbox = { -0.02, -0.02, -0.02, 0.02, 0.02, 0.02 }, - pointable = false, - visual = "sprite", - visual_size = { x = 0.2, y = 0.2 }, - spritediv = { x = 1, y = 1 }, - initial_sprite_basepos = { x = 0, y = 0 }, - static_save = false, - glow = 14, - on_activate = function(self, staticdata) - local color - if math.random(0, 3) == 0 then - color = rgb_to_hex( 153 + math.random() * 51, 153 + math.random() * 76.5, math.random() * 51) - else - color = rgb_to_hex(25.5 + math.random() * 102, 153 + math.random() * 76.5, math.random() * 51) - end - self.object:set_properties({ - textures = { "mcl_particles_totem"..math.random(1, 4)..".png^[colorize:#"..color } - }) - local t = math.random(1, 2)*math.random() - minetest.after(t, function() - self.object:set_velocity({ x = math.random(-4, 4) * math.random(), y = math.random(-1, 4) * math.random(), z = math.random(-4, 4) * math.random() }) - end) - minetest.after(0.3 + t, function() - self.object:set_acceleration({ x = 0, y = -4, z = 0 }) - self.object:set_velocity({ x = 0, y = 0, z = 0 }) - end) - end, - on_step = function(self, dtime) - local r = math.random(1, 50) - if r == 1 then - self.object:remove() - end - end -}) +local particle_colors = {"98BF22", "C49E09", "337D0B", "B0B021", "1E9200"} -- TODO: real MC colors -- Save the player from death when holding totem of undying in hand mcl_damage.register_modifier(function(obj, damage, reason) @@ -74,27 +32,32 @@ mcl_damage.register_modifier(function(obj, damage, reason) end -- Effects - minetest.sound_play({ name = "mcl_totems_totem", gain = 1 }, { pos = ppos, max_hear_distance = 16 }, true) - - --Particles + minetest.sound_play({name = "mcl_totems_totem", gain = 1}, {pos=ppos, max_hear_distance = 16}, true) - minetest.after(0.1, function() - local new_pos = obj:get_pos() - if not new_pos then return end - local particlepos = { x = new_pos.x, y = new_pos.y + 1, z = new_pos.z } - for i = 1, 150 do - minetest.add_entity(particlepos, "mcl_totems:totem_particle") - end - end) + for i = 1, 100 do + minetest.add_particle({ + pos = vector.offset(ppos, 0, math.random(-10, 10) / 10, 0), + velocity = vector.new(math.random(-15, 15) / 10, math.random(0, 15) / 10, math.random(-15, 15) / 10), + acceleration = vector.new(0, -math.random(1, 10) / 10, 0), + expirationtime = math.random(1, 3), + size = math.random(1, 2), + collisiondetection = true, + collision_removal = true, + object_collision = false, + texture = "mcl_particles_totem" .. math.random(1, 4) .. ".png^[colorize:#" .. particle_colors[math.random(#particle_colors)], + glow = 10, + }) + + end -- Big totem overlay if not hud_totem[obj] then hud_totem[obj] = obj:hud_add({ hud_elem_type = "image", text = "mcl_totems_totem.png", - position = { x = 0.5, y = 1 }, - scale = { x = 17, y = 17 }, - offset = { x = 0, y = -178 }, + position = {x = 0.5, y = 1}, + scale = {x = 17, y = 17}, + offset = {x = 0, y = -178}, z_index = 100, }) minetest.after(3, function() From 6e94550a12ad7685a18e09fc5235238ac0a06770 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 08:44:12 +0000 Subject: [PATCH 309/720] Clarification about tab indent Signed-off-by: Elias Fleckenstein --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b47ab9aa0..1765a8799 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -94,7 +94,7 @@ If your code leads to bugs or crashes after being merged, it is your responsibil * Each mod which add API functions should store functions inside a global table named like the mod. * Public functions should not use self references but rather just access the table directly. * Use modern Minetest API -* Use tabs instead of spaces +* Use tabs for indentation (rather than spaces) * Even if it improves performance, it is discouraged to localize variables at the beggining of files, since if another mod overrides some of the functions / variables you localized, you will still have a reference to the old function. ### Changes to Gameplay From f3693138c85a3f91a79a5f26ab10bcc914e02062 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 08:46:33 +0000 Subject: [PATCH 310/720] Use proper English Signed-off-by: Elias Fleckenstein --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1765a8799..ebea65736 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,7 +5,7 @@ Wow, thank you! :-) But first, some things to note: MineClone2's development target is to make a free software clone of Minecraft, -***version 1.17***, ***Java Edition***, *** + Optifine features supported by the Minetest Engine***. The priority is making polished features up to version 1.12. +***version 1.17***, ***Java Edition***, *** + Optifine features supported by the Minetest Engine ***. The priority is making polished features up to version 1.12. MineClone2 is maintained by Nicu and Fleckenstein. If you have any problems or questions, contact us (See Links section below). @@ -40,7 +40,7 @@ report a bug or request a feature. ### Rules about both bugs and feature requests * Stay polite towards the developers and anyone else involved in the discussion. * Choose a descriptive title. -* Try to use proper english and please start the title with a capital letter. +* Try to use proper English and please start the title with a capital letter. * Always check the currently opened issues before creating a new one. Don't report bugs that have already been reported or request features that already have been requested. * If you know about Minetest's inner workings, please think about whether the bug / the feature that you are reporting / requesting is actually an issue with Minetest itself, and if it is, head to the [Minetest issue tracker](https://github.com/minetest/minetest/issues) instead. * If you need any help regarding creating a Mesehub account or opening an issue, feel free to ask on the Discord / Matrix server or the IRC channel. From b18e077ba3d99c0f2a3660a8b7a9bc5f973b98f4 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 08:47:56 +0000 Subject: [PATCH 311/720] Markdown fix to development target info Signed-off-by: Elias Fleckenstein --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ebea65736..4f3bc9c39 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,7 +5,7 @@ Wow, thank you! :-) But first, some things to note: MineClone2's development target is to make a free software clone of Minecraft, -***version 1.17***, ***Java Edition***, *** + Optifine features supported by the Minetest Engine ***. The priority is making polished features up to version 1.12. +***version 1.17***, ***Java Edition***, ***+ Optifine features supported by the Minetest Engine***. The priority is making polished features up to version 1.12. MineClone2 is maintained by Nicu and Fleckenstein. If you have any problems or questions, contact us (See Links section below). From b9999195ec99104aaa5ff6584600893c2bb739c8 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 16:52:56 +0200 Subject: [PATCH 312/720] Add publishing releases to my responsibility field --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b47ab9aa0..e9a14a54f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -118,7 +118,7 @@ Maintainers grant/revoke developer access. Currently there are two maintainers with different responsibility fields: -* Fleckenstein - responsible for gameplay review, technical guidelines and issue/PR delegation +* Fleckenstein - responsible for gameplay review, publishing releases, technical guidelines and issue/PR delegation * Nicu - responsible for community related issues #### Creating releases From 664244d25c5212bd672b3e42db70489a46771162 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 17:20:58 +0200 Subject: [PATCH 313/720] Make sure PRs are tested at least twice before being merged --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e9a14a54f..eaced68fa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -106,7 +106,7 @@ You can use these sources: * Official Minecraft Wiki (Include a link to the page) ### Developer status -Active and trusted contributors are often granted write access to the MineClone2 repository. However you should not push things directly to MineClone2 master - rather, do your work on a branch on your private repo, then create a pull request. This way other people can review your changes and make sure they work before they get merged. You are allowed to merge PRs if they have recieved the necessary feedback. +Active and trusted contributors are often granted write access to the MineClone2 repository. However you should not push things directly to MineClone2 master - rather, do your work on a branch on your private repo, then create a pull request. This way other people can review your changes and make sure they work before they get merged. You are allowed to merge PRs if they have recieved the necessary feedback and have been tested to not lead to any crashes and do what they claim to do by at least two different people. You may also be assigned to issues or pull requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can also unassign yourself from the issue / PR if you have no time or don't want to take care of it for some other reason (after all, everyone is a volunteer and we can't expect you to do work that you are not intrested in) - the important thing is really that you make sure to inform us if you won't take care of something that has been assigned to you. Also, please assign yourself to something that you want to work on to avoid duplicate work. As a developer, it should be easy to reach you about your code. You should be on the Discord (or, if you really don't like Discord, Matrix or IRC). From 4b1606eaee2d5da2c36e1892efae3bae37d3b13e Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 18:26:31 +0200 Subject: [PATCH 314/720] Update 'git for non-programmers' section --- CONTRIBUTING.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 79d08e22a..93b52c32b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,10 +25,10 @@ whether you're a programmer or not. ## Using git MineClone2 is developed using the version control system [git](https://git-scm.com/). If you want to contribute code to the project, it is **highly recommended** that you learn the git basics. -However, if you're not a programmer or don't plan to help with the coding part of the development, -it's still useful if you know it - in case you want to contribute files that are not related to code, -or to easily keep your game updated and test out pull requests. However, it's not required in this -case. +For non-programmers and people who do not plan to contribute code to Mineclone2, git is not required. +However, git is a tool that will be referenced frequently because of its usefulness. +As such, it is valuable in learning how git works and its terminology. It can also help you in +keeping your game updated, and easily testing pull requests. ## How you can help as a non-programmer From 27f35fe422c560bad9109e09460ff36a9f1f024a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 18:48:11 +0200 Subject: [PATCH 315/720] Add info about discord server in 'Let us know your opinion' section --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 93b52c32b..1e1b20778 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -67,7 +67,7 @@ If you own a server, a great way to help us improve MineClone2's code is by givi Minetest has a built in profiler. Simply set `profiler.load = true` in your configuration file and restart the server. After running the server for some time, just run `/profiler save` in chat - then you will find a file in the world directory containing the results. Open a new issue and upload the file. You can name the issue " profiler results". ### Let us know your opinion -It is always encouraged to actively contribute to issue discussions, let us know what you think about a topic and help us make decisions. +It is always encouraged to actively contribute to issue discussions on MeseHub, let us know what you think about a topic and help us make decisions. Also, note that a lot of discussion takes place on the Discord server, so it's definitely worth checking it out. ### Crediting If you opened or have contributed to an issue, you receive the `Community` role on our Discord (after asking for it). From d2242363889327ecc44ef1c1924f3f16160e2604 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 18:58:30 +0200 Subject: [PATCH 316/720] Consistency about line length (not a convention, just something applied to this file) --- CONTRIBUTING.md | 201 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 147 insertions(+), 54 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1e1b20778..7e914ac17 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,8 +4,10 @@ Wow, thank you! :-) But first, some things to note: -MineClone2's development target is to make a free software clone of Minecraft, -***version 1.17***, ***Java Edition***, ***+ Optifine features supported by the Minetest Engine***. The priority is making polished features up to version 1.12. +MineClone2's development target is to make a free software clone of +Minecraft, ***version 1.17***, ***Java Edition***, ***+ Optifine +features supported by the Minetest Engine***. The priority is making +polished features up to version 1.12. MineClone2 is maintained by Nicu and Fleckenstein. If you have any problems or questions, contact us (See Links section below). @@ -23,59 +25,116 @@ whether you're a programmer or not. * [Minetest forums](https://forum.minetest.net/viewtopic.php?f=50&t=16407) ## Using git -MineClone2 is developed using the version control system [git](https://git-scm.com/). If you want to -contribute code to the project, it is **highly recommended** that you learn the git basics. -For non-programmers and people who do not plan to contribute code to Mineclone2, git is not required. -However, git is a tool that will be referenced frequently because of its usefulness. -As such, it is valuable in learning how git works and its terminology. It can also help you in +MineClone2 is developed using the version control system +[git](https://git-scm.com/). If you want to contribute code to the +project, it is **highly recommended** that you learn the git basics. +For non-programmers and people who do not plan to contribute code to +Mineclone2, git is not required. However, git is a tool that will be +referenced frequently because of its usefulness. As such, it is valuable +in learning how git works and its terminology. It can also help you in keeping your game updated, and easily testing pull requests. ## How you can help as a non-programmer As someone who does not know how to write programs in Lua or does not -know how to use the Minetest API, you can still help us out a lot. -For example, by opening an issue in the [Issue tracker](https://git.minetest.land/MineClone2/MineClone2/issues), you can -report a bug or request a feature. +know how to use the Minetest API, you can still help us out a lot. For +example, by opening an issue in the +[Issue tracker](https://git.minetest.land/MineClone2/MineClone2/issues), +you can report a bug or request a feature. ### Rules about both bugs and feature requests -* Stay polite towards the developers and anyone else involved in the discussion. +* Stay polite towards the developers and anyone else involved in the +discussion. * Choose a descriptive title. -* Try to use proper English and please start the title with a capital letter. -* Always check the currently opened issues before creating a new one. Don't report bugs that have already been reported or request features that already have been requested. -* If you know about Minetest's inner workings, please think about whether the bug / the feature that you are reporting / requesting is actually an issue with Minetest itself, and if it is, head to the [Minetest issue tracker](https://github.com/minetest/minetest/issues) instead. -* If you need any help regarding creating a Mesehub account or opening an issue, feel free to ask on the Discord / Matrix server or the IRC channel. +* Try to use proper English and please start the title with a capital +letter. +* Always check the currently opened issues before creating a new one. +Don't report bugs that have already been reported or request features +that already have been requested. +* If you know about Minetest's inner workings, please think about +whether the bug / the feature that you are reporting / requesting is +actually an issue with Minetest itself, and if it is, head to the +[Minetest issue tracker](https://github.com/minetest/minetest/issues) +instead. +* If you need any help regarding creating a Mesehub account or opening +an issue, feel free to ask on the Discord / Matrix server or the IRC +channel. ### Reporting bugs -* A bug is an unintended behavior or, in the worst case, a crash. However, it is not a bug if you believe something is missing in the game. In this case, please read "Requesting features" -* If you report a crash, always include the error message. If you play in singleplayer, post a screenshot of the message that minetest showed when the crash happened (or copy the message into your issue). If you are a server admin, you can find error messages in the log file of the server. +* A bug is an unintended behavior or, in the worst case, a crash. +However, it is not a bug if you believe something is missing in the +game. In this case, please read "Requesting features" +* If you report a crash, always include the error message. If you play +in singleplayer, post a screenshot of the message that minetest showed +when the crash happened (or copy the message into your issue). If you +are a server admin, you can find error messages in the log file of the +server. * Tell us which MineClone2 and minetest versions you are using. -* It's always useful to tell us what you were doing to trigger the bug, e.g. before the crash happened or what causes the faulty behavior +* It's always useful to tell us what you were doing to trigger the bug, +e.g. before the crash happened or what causes the faulty behavior ### Requesting features -* Make sure the feature you request is Minecraft 1.17 Java Edition or Optifine behavior. -* Don't beg for something to be implemented. We are not going to rethink our development roadmap because someone sais "Pls pls make this I'm waiting for this so bad!!!11!". -* Check whether the feature has been implemented in a newer version of MineClone2, in case you are not using the latest one. +* Make sure the feature you request is Minecraft 1.17 Java Edition or +Optifine behavior. +* Don't beg for something to be implemented. We are not going to rethink +our development roadmap because someone sais "Pls pls make this I'm +waiting for this so bad!!!11!". +* Check whether the feature has been implemented in a newer version of +MineClone2, in case you are not using the latest one. ### Testing code -If you want to help us with speeding up MineClone2 development and making the game more stable, a great way to do that is by testing out new features from contributors. -For most new things that get into the game, a pull request is created. A pull request is essentially a programmer saying "Look, I modified the game, please apply my changes to the upstream version of the game". -However, every programmer makes mistakes sometimes, some of which are hard to spot. You can help by downloading this modified version of the game and trying it out - then you tell us whether the code works and does what it claims to do or whether you have encountered any issues. -You can find currently open pull requests here: . Note that pull requests that start with a `WIP:` are not done yet, and therefore might not work, so it's not very useful to try them out yet. +If you want to help us with speeding up MineClone2 development and +making the game more stable, a great way to do that is by testing out +new features from contributors. For most new things that get into the +game, a pull request is created. A pull request is essentially a +programmer saying "Look, I modified the game, please apply my changes +to the upstream version of the game". However, every programmer makes +mistakes sometimes, some of which are hard to spot. You can help by +downloading this modified version of the game and trying it out - then +you tell us whether the code works and does what it claims to do or +whether you have encountered any issues. You can find currently open +pull requests here: +. Note that pull +requests that start with a `WIP:` are not done yet, and therefore might +not work, so it's not very useful to try them out yet. ### Profiling -If you own a server, a great way to help us improve MineClone2's code is by giving us profiler results. Profiler results give us detailed information about the game's performance and let us know where the real troublespots are. This way we can make the game faster. -Minetest has a built in profiler. Simply set `profiler.load = true` in your configuration file and restart the server. After running the server for some time, just run `/profiler save` in chat - then you will find a file in the world directory containing the results. Open a new issue and upload the file. You can name the issue " profiler results". +If you own a server, a great way to help us improve MineClone2's code +is by giving us profiler results. Profiler results give us detailed +information about the game's performance and let us know where the real +troublespots are. This way we can make the game faster. Minetest has a +built in profiler. Simply set `profiler.load = true` in your +configuration file and restart the server. After running the server for +some time, just run `/profiler save` in chat - then you will find a file +in the world directory containing the results. Open a new issue and +upload the file. You can name the issue " profiler +results". ### Let us know your opinion -It is always encouraged to actively contribute to issue discussions on MeseHub, let us know what you think about a topic and help us make decisions. Also, note that a lot of discussion takes place on the Discord server, so it's definitely worth checking it out. +It is always encouraged to actively contribute to issue discussions on +MeseHub, let us know what you think about a topic and help us make +decisions. Also, note that a lot of discussion takes place on the +Discord server, so it's definitely worth checking it out. ### Crediting -If you opened or have contributed to an issue, you receive the `Community` role on our Discord (after asking for it). +If you opened or have contributed to an issue, you receive the +`Community` role on our Discord (after asking for it). ## How you can help as a programmer -(Almost) all the MineClone2 development is done using pull requests. If you feel like a problem needs to fixed or you want to make a new feature, you could start writing the code right away and notifying us when you're, but it it never hurts to discuss things first. If there is no issue on the topic, open one. If there is an issue, tell us that you'd like to take care of it, to avoid duplicate work. Note that we appreciate any effort, so even if you are a relatively new programmer, you can already contribute to the project - if you have problems or questions regarding git, Lua, or the Minetest API - or the MineClone2 codebase, feel free to ask them on our Discord. -By asking us to include your changes in this game, you agree that they fall under the terms of the GPLv3, which basically means they will become part of a free software. -If your code leads to bugs or crashes after being merged, it is your responsibility to fix them as soon as possible. +(Almost) all the MineClone2 development is done using pull requests. +If you feel like a problem needs to fixed or you want to make a new +feature, you could start writing the code right away and notifying us +when you're, but it it never hurts to discuss things first. If there is +no issue on the topic, open one. If there is an issue, tell us that +you'd like to take care of it, to avoid duplicate work. Note that we +appreciate any effort, so even if you are a relatively new programmer, +you can already contribute to the project - if you have problems or +questions regarding git, Lua, or the Minetest API - or the MineClone2 +codebase, feel free to ask them on our Discord. By asking us to include +your changes in this game, you agree that they fall under the terms of +the GPLv3, which basically means they will become part of a free +software. If your code leads to bugs or crashes after being merged, it +is your responsibility to fix them as soon as possible. ### The recommended workflow * Fork the repository (in case you have not already) @@ -87,49 +146,83 @@ If your code leads to bugs or crashes after being merged, it is your responsibil ### Git Guidelines * We use merge rather than rebase or squash merge * We don't use git submodules. -* Your commit names should be relatively descriptive, e.g. when saying "Fix #issueid", the commit message should also contain the title of the issue. +* Your commit names should be relatively descriptive, e.g. when saying +"Fix #issueid", the commit message should also contain the title of the +issue. ### Code Guidelines * Each mod must provide `mod.conf`. -* Each mod which add API functions should store functions inside a global table named like the mod. -* Public functions should not use self references but rather just access the table directly. +* Each mod which add API functions should store functions inside a +global table named like the mod. +* Public functions should not use self references but rather just access +the table directly. * Use modern Minetest API * Use tabs for indentation (rather than spaces) -* Even if it improves performance, it is discouraged to localize variables at the beggining of files, since if another mod overrides some of the functions / variables you localized, you will still have a reference to the old function. +* Even if it improves performance, it is discouraged to localize +variables at the beggining of files, since if another mod overrides some +of the functions / variables you localized, you will still have a +reference to the old function. ### Changes to Gameplay -Pull Requests that change gameplay have to be properly researched and need to state their sources. These PRs also need Fleckenstein's approval before they are merged. +Pull Requests that change gameplay have to be properly researched and +need to state their sources. These PRs also need Fleckenstein's approval +before they are merged. You can use these sources: -* Minecraft code (Name the source file and line, however DONT post any proprietary code). You can use MCP to decompile Minecraft. -* Testing things inside of Minecraft (Attach screenshots / video footage of the results) +* Minecraft code (Name the source file and line, however DONT post any +proprietary code). You can use MCP to decompile Minecraft. +* Testing things inside of Minecraft (Attach screenshots / video footage +of the results) * Official Minecraft Wiki (Include a link to the page) ### Developer status -Active and trusted contributors are often granted write access to the MineClone2 repository. However you should not push things directly to MineClone2 master - rather, do your work on a branch on your private repo, then create a pull request. This way other people can review your changes and make sure they work before they get merged. You are allowed to merge PRs if they have recieved the necessary feedback and have been tested to not lead to any crashes and do what they claim to do by at least two different people. -You may also be assigned to issues or pull requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can also unassign yourself from the issue / PR if you have no time or don't want to take care of it for some other reason (after all, everyone is a volunteer and we can't expect you to do work that you are not intrested in) - the important thing is really that you make sure to inform us if you won't take care of something that has been assigned to you. -Also, please assign yourself to something that you want to work on to avoid duplicate work. -As a developer, it should be easy to reach you about your code. You should be on the Discord (or, if you really don't like Discord, Matrix or IRC). +Active and trusted contributors are often granted write access to the +MineClone2 repository. However you should not push things directly to +MineClone2 master - rather, do your work on a branch on your private +repo, then create a pull request. This way other people can review your +changes and make sure they work before they get merged. You are allowed +to merge PRs if they have recieved the necessary feedback and have been +tested to not lead to any crashes and do what they claim to do by at +least two different people. You may also be assigned to issues or pull +requests as a developer. In this case it is your responsibility to fix +the issue / review and merge the pull request when it is ready. You can +also unassign yourself from the issue / PR if you have no time or don't +want to take care of it for some other reason (after all, everyone is a +volunteer and we can't expect you to do work that you are not intrested +in) - the important thing is really that you make sure to inform us if +you won't take care of something that has been assigned to you. Also, +please assign yourself to something that you want to work on to avoid +duplicate work. As a developer, it should be easy to reach you about +your code. You should be on the Discord (or, if you really don't like +Discord, Matrix or IRC). ### Maintainer status -Maintainers are responsible for making sure issues are addressed and pull requests are reviewed and merged, by assigning either themselves or Developers to issues / PRs. -Maintainers are responsible for making releases, making sure guidelines are kept and making project decisions based on what the community wants. -Maintainers grant/revoke developer access. +Maintainers are responsible for making sure issues are addressed and +pull requests are reviewed and merged, by assigning either themselves or +Developers to issues / PRs. Maintainers are responsible for making +releases, making sure guidelines are kept and making project decisions +based on what the community wants. Maintainers grant/revoke developer +access. Currently there are two maintainers with different +responsibility fields: -Currently there are two maintainers with different responsibility fields: - -* Fleckenstein - responsible for gameplay review, publishing releases, technical guidelines and issue/PR delegation +* Fleckenstein - responsible for gameplay review, publishing releases, +technical guidelines and issue/PR delegation * Nicu - responsible for community related issues #### Creating releases * Launch MineClone2 to make sure it still runs * Update the version number in README.md -* Use `git tag ` to tag the latest commit with the version number +* Use `git tag ` to tag the latest commit with the +version number * Push to repo (don't forget `--tags`!) -* Update ContentDB (https://content.minetest.net/packages/Wuzzy/mineclone2/) -* Update first post in forum thread (https://forum.minetest.net/viewtopic.php?f=50&t=16407) +* Update ContentDB +(https://content.minetest.net/packages/Wuzzy/mineclone2/) +* Update first post in forum thread +(https://forum.minetest.net/viewtopic.php?f=50&t=16407) * Post release announcement and changelog in forums ## Crediting -Contributors, Developers and Maintainers will be credited in `CREDITS.md`. If you make your first time contribution, please add yourself to this file. -There are also Discord roles for Contributors, Developers and Maintainers. +Contributors, Developers and Maintainers will be credited in +`CREDITS.md`. If you make your first time contribution, please add +yourself to this file. There are also Discord roles for Contributors, +Developers and Maintainers. From 74890101520d4b04578dbc333aab38ea6cdf6eca Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 25 Oct 2021 17:08:38 +0000 Subject: [PATCH 317/720] Use particlespawners instead of single particles --- mods/ITEMS/mcl_totems/init.lua | 37 +++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index 79b2c8de0..aa188855f 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -34,20 +34,29 @@ mcl_damage.register_modifier(function(obj, damage, reason) -- Effects minetest.sound_play({name = "mcl_totems_totem", gain = 1}, {pos=ppos, max_hear_distance = 16}, true) - for i = 1, 100 do - minetest.add_particle({ - pos = vector.offset(ppos, 0, math.random(-10, 10) / 10, 0), - velocity = vector.new(math.random(-15, 15) / 10, math.random(0, 15) / 10, math.random(-15, 15) / 10), - acceleration = vector.new(0, -math.random(1, 10) / 10, 0), - expirationtime = math.random(1, 3), - size = math.random(1, 2), - collisiondetection = true, - collision_removal = true, - object_collision = false, - texture = "mcl_particles_totem" .. math.random(1, 4) .. ".png^[colorize:#" .. particle_colors[math.random(#particle_colors)], - glow = 10, - }) - + for i = 1, 4 do + for c = 1, #particle_colors do + minetest.add_particlespawner({ + amount = math.round(100/(4 * #particle_colors)), + time = 1, + minpos = vector.offset(ppos, 0, -1, 0), + maxpos = vector.offset(ppos, 0, 1, 0), + minvel = vector.new(-1.5, 0, -1.5), + maxvel = vector.new(1.5, 1.5, 1.5), + minacc = vector.new(0, -0.1, 0), + maxacc = vector.new(0, -1, 0), + minexptime = 1, + maxexptime = 3, + minsize = 1, + maxsize = 2, + collisiondetection = true, + collision_removal = true, + object_collision = false, + vertical = false, + texture = "mcl_particles_totem" .. i .. ".png^[colorize:#" .. particle_colors[c], + glow = 10, + }) + end end -- Big totem overlay From a6def5e9bb7ddc3e70b13be51e4a53f1f33dcbba Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:14:53 +0200 Subject: [PATCH 318/720] Remove guideline about localizing variables --- CONTRIBUTING.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7e914ac17..722deefaf 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -158,10 +158,6 @@ global table named like the mod. the table directly. * Use modern Minetest API * Use tabs for indentation (rather than spaces) -* Even if it improves performance, it is discouraged to localize -variables at the beggining of files, since if another mod overrides some -of the functions / variables you localized, you will still have a -reference to the old function. ### Changes to Gameplay Pull Requests that change gameplay have to be properly researched and From 6580bcab5a80644f940dbaf172b64979bbe5d6d5 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:15:26 +0200 Subject: [PATCH 319/720] Add info about Minestorm and add links for MCP and Minestorm --- CONTRIBUTING.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 722deefaf..f9d97c063 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -166,7 +166,10 @@ before they are merged. You can use these sources: * Minecraft code (Name the source file and line, however DONT post any -proprietary code). You can use MCP to decompile Minecraft. +proprietary code). You can use +[MCP](https://minecraft.fandom.com/wiki/Programs_and_editors/Mod_Coder_Pack) +to decompile Minecraft or look at +[Minestorm](https://github.com/Minestom/Minestom) code. * Testing things inside of Minecraft (Attach screenshots / video footage of the results) * Official Minecraft Wiki (Include a link to the page) From 362de4c920453f838349f43261f2cd9f46ba6951 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:16:24 +0200 Subject: [PATCH 320/720] Add minecraft wiki link --- CONTRIBUTING.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f9d97c063..3637bdf1c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -172,7 +172,8 @@ to decompile Minecraft or look at [Minestorm](https://github.com/Minestom/Minestom) code. * Testing things inside of Minecraft (Attach screenshots / video footage of the results) -* Official Minecraft Wiki (Include a link to the page) +* [Official Minecraft Wiki](https://minecraft.fandom.com/wiki/Minecraft_Wiki) +(Include a link to the specific page you used) ### Developer status Active and trusted contributors are often granted write access to the From 3a422e3afc91a9dded5f613770b776759a2f8376 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:25:48 +0200 Subject: [PATCH 321/720] Reword 'understandable English' rule --- CONTRIBUTING.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3637bdf1c..03a76ce57 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -46,8 +46,9 @@ you can report a bug or request a feature. * Stay polite towards the developers and anyone else involved in the discussion. * Choose a descriptive title. -* Try to use proper English and please start the title with a capital -letter. +* Please write in plain, understandable English. It will be easier to +communicate. +* Please start the issue title with a capital letter. * Always check the currently opened issues before creating a new one. Don't report bugs that have already been reported or request features that already have been requested. From 756d28e2c61300205731e0cd370329e2dbb3a708 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:31:07 +0200 Subject: [PATCH 322/720] Use iliekprogrammar's wording in the begging rule --- CONTRIBUTING.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 03a76ce57..df3b5c059 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -77,9 +77,10 @@ e.g. before the crash happened or what causes the faulty behavior ### Requesting features * Make sure the feature you request is Minecraft 1.17 Java Edition or Optifine behavior. -* Don't beg for something to be implemented. We are not going to rethink -our development roadmap because someone sais "Pls pls make this I'm -waiting for this so bad!!!11!". +* Begging or excessive attention seeking does not help us in the +slightest, and may very well disrupt Mineclone2 development. It's better +to put that energy into helping or researching the feature in question. +After all, we're just volunteers working on our spare time. * Check whether the feature has been implemented in a newer version of MineClone2, in case you are not using the latest one. From 7707c3132c4da6c6f5db246d802c589610ab100d Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:46:13 +0200 Subject: [PATCH 323/720] Fix duplicate and forgotten word in 'helping as a programmer' section --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index df3b5c059..9b209d912 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -126,8 +126,8 @@ If you opened or have contributed to an issue, you receive the (Almost) all the MineClone2 development is done using pull requests. If you feel like a problem needs to fixed or you want to make a new feature, you could start writing the code right away and notifying us -when you're, but it it never hurts to discuss things first. If there is -no issue on the topic, open one. If there is an issue, tell us that +when you're done, but it never hurts to discuss things first. If there +is no issue on the topic, open one. If there is an issue, tell us that you'd like to take care of it, to avoid duplicate work. Note that we appreciate any effort, so even if you are a relatively new programmer, you can already contribute to the project - if you have problems or From c9987884358cff0548af0d017b5d073274aaa00a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:48:14 +0200 Subject: [PATCH 324/720] Reword 'help for junior devs' section --- CONTRIBUTING.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9b209d912..cd7f9c465 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -128,15 +128,17 @@ If you feel like a problem needs to fixed or you want to make a new feature, you could start writing the code right away and notifying us when you're done, but it never hurts to discuss things first. If there is no issue on the topic, open one. If there is an issue, tell us that -you'd like to take care of it, to avoid duplicate work. Note that we -appreciate any effort, so even if you are a relatively new programmer, -you can already contribute to the project - if you have problems or -questions regarding git, Lua, or the Minetest API - or the MineClone2 -codebase, feel free to ask them on our Discord. By asking us to include -your changes in this game, you agree that they fall under the terms of -the GPLv3, which basically means they will become part of a free -software. If your code leads to bugs or crashes after being merged, it -is your responsibility to fix them as soon as possible. +you'd like to take care of it, to avoid duplicate work. We appreciate +any contributing effort to Mineclone2. If you are a relatively new +programmer, you can reach us on Discord, Matrix or IRC for questions +about git, Lua, Minetest API, Mineclone2 codebase or anything related +to MineClone2. We can help you avoid writing code that would be deemed +inadequeate, or help you become familiar with Mineclone2 better, or even +help using development tools. By asking us to include your changes in +this game, you agree that they fall under the terms of the GPLv3, which +basically means they will become part of a free software. If your code +leads to bugs or crashes after being merged, it is your responsibility +to fix them as soon as possible. ### The recommended workflow * Fork the repository (in case you have not already) From 5edf27ac88cbbbd249e781f0ca623b1f3696733f Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:54:10 +0200 Subject: [PATCH 325/720] Reword 'bug responsibility' section --- CONTRIBUTING.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cd7f9c465..66a1a3452 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -136,9 +136,10 @@ to MineClone2. We can help you avoid writing code that would be deemed inadequeate, or help you become familiar with Mineclone2 better, or even help using development tools. By asking us to include your changes in this game, you agree that they fall under the terms of the GPLv3, which -basically means they will become part of a free software. If your code -leads to bugs or crashes after being merged, it is your responsibility -to fix them as soon as possible. +basically means they will become part of a free software. Sometimes, +your code may cause crashes or bugs - we try to avoid such scenarios by +testing everytime before merging it, but if your merged work causes +problems, we ask you fix the issues as soon as possible. ### The recommended workflow * Fork the repository (in case you have not already) From 7f43ba6e36f857374803025664f0855dc7abceac Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:56:03 +0200 Subject: [PATCH 326/720] Clarify rule about merging upstream --- CONTRIBUTING.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 66a1a3452..ec0974e63 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -145,7 +145,9 @@ problems, we ask you fix the issues as soon as possible. * Fork the repository (in case you have not already) * Do your change in a new branch * Create a pull request to get your changes merged into master -* Keep your pull request up to date by regulary merging upstream +* Keep your pull request up to date by regulary merging upstream. It is +imperative that conflicts are resolved prior to merging the pull +request. * After the pull request got merged, you can delete the branch ### Git Guidelines From a877c615a5723e3a83bb5b42b90dd9f1938d67be Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:01:12 +0200 Subject: [PATCH 327/720] Clarify tabs usage: Use spaces for alignment --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ec0974e63..dfe2d9265 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -164,7 +164,7 @@ global table named like the mod. * Public functions should not use self references but rather just access the table directly. * Use modern Minetest API -* Use tabs for indentation (rather than spaces) +* Tabs should be used for indent, spaces for alignment ### Changes to Gameplay Pull Requests that change gameplay have to be properly researched and From 6e7827902cb9f5951550139cdb7d32c350aa7f1c Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:04:08 +0200 Subject: [PATCH 328/720] Use the wording 'reproduce a problem' in the reporting bugs section --- CONTRIBUTING.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dfe2d9265..3d29321c7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -71,8 +71,9 @@ when the crash happened (or copy the message into your issue). If you are a server admin, you can find error messages in the log file of the server. * Tell us which MineClone2 and minetest versions you are using. -* It's always useful to tell us what you were doing to trigger the bug, -e.g. before the crash happened or what causes the faulty behavior +* Tell us how to reproduce the problem: What you were doing to trigger +the bug, e.g. before the crash happened or what causes the faulty +behavior. ### Requesting features * Make sure the feature you request is Minecraft 1.17 Java Edition or From fba30eccd67e54852d98c320732c8add0a6acb2b Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:04:51 +0200 Subject: [PATCH 329/720] Add rule about double quotes for strings --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3d29321c7..c829fa3f3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -166,6 +166,7 @@ global table named like the mod. the table directly. * Use modern Minetest API * Tabs should be used for indent, spaces for alignment +* Use double quotes for strings ### Changes to Gameplay Pull Requests that change gameplay have to be properly researched and From 47fbb0c176b849a14cc7f62d9a026303f73d5d37 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:18:03 +0200 Subject: [PATCH 330/720] Mod naming convention, snake case convention --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c829fa3f3..3495d4ad3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -160,6 +160,7 @@ issue. ### Code Guidelines * Each mod must provide `mod.conf`. +* Mod names are snake case, and newly added mods start with `mcl_` * Each mod which add API functions should store functions inside a global table named like the mod. * Public functions should not use self references but rather just access @@ -167,6 +168,7 @@ the table directly. * Use modern Minetest API * Tabs should be used for indent, spaces for alignment * Use double quotes for strings +* Use snake_case rather than CamelCase ### Changes to Gameplay Pull Requests that change gameplay have to be properly researched and From a80438d58e7aec6bfb817578633099226138ffd4 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:21:45 +0200 Subject: [PATCH 331/720] Advice about atomic commits --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3495d4ad3..926fab212 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -157,6 +157,7 @@ request. * Your commit names should be relatively descriptive, e.g. when saying "Fix #issueid", the commit message should also contain the title of the issue. +* Try to keep your commits as atomic as possible ### Code Guidelines * Each mod must provide `mod.conf`. From 64660617964c6a51fa5a7237446e7ebeab8ef8db Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:33:45 +0200 Subject: [PATCH 332/720] Add back function declaration guideline, provide examples for code style guidelines --- CONTRIBUTING.md | 79 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 71 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 926fab212..827497799 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -161,15 +161,78 @@ issue. ### Code Guidelines * Each mod must provide `mod.conf`. -* Mod names are snake case, and newly added mods start with `mcl_` -* Each mod which add API functions should store functions inside a -global table named like the mod. +* Mod names are snake case, and newly added mods start with `mcl_`, e.g. +`mcl_core`, `mcl_farming`, `mcl_monster_eggs` +* To export functions, store them inside a global table named like the +mod, e.g. + +```lua +mcl_example = {} + +function mcl_example.do_something() + -- ... +end + +``` + * Public functions should not use self references but rather just access -the table directly. -* Use modern Minetest API -* Tabs should be used for indent, spaces for alignment -* Use double quotes for strings -* Use snake_case rather than CamelCase +the table directly, e.g. + +```lua +-- bad +function mcl_example:do_something() +end + +-- good +function mcl_example.do_something() +end +``` + +* Use modern Minetest API, e.g. no usage of `minetest.env` +* Tabs should be used for indent, spaces for alignment, e.g. + +```lua + +-- use tabs for indent + +for i = 1, 10 do + if i % 3 == 0 then + print(i) + end +end + +-- use tabs for indent and spaces to align things + +some_table = { + {"a string", 5}, + {"a very much longer string", 10}, +} +``` + +* Use double quotes for strings, e.g. `"asdf"` rather than `'asdf'` +* Use snake_case rather than CamelCase, e.g. `my_function` rather than +`MyFunction` +* Dont declare functions as an assignment, e.g. + +```lua +-- bad +local some_local_func = function() + -- ... +end + +my_mod.some_func = function() + -- ... +end + +-- good +local function some_local_func() + -- ... +end + +function my_mod.some_func() + -- ... +end +``` ### Changes to Gameplay Pull Requests that change gameplay have to be properly researched and From da5e703675429381932b8d8fb9c863ccd3d16f96 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:36:29 +0200 Subject: [PATCH 333/720] Clarify that 'make atomic commits' is just an advise --- CONTRIBUTING.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 827497799..1f2d1d0de 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -157,7 +157,8 @@ request. * Your commit names should be relatively descriptive, e.g. when saying "Fix #issueid", the commit message should also contain the title of the issue. -* Try to keep your commits as atomic as possible +* Try to keep your commits as atomic as possible (advise, but completely +optional) ### Code Guidelines * Each mod must provide `mod.conf`. From f3d16d264cb46f1659b85795a75c1b762be4b615 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:41:09 +0200 Subject: [PATCH 334/720] Add notice about Minetest not supporting capital letters in modnames --- CONTRIBUTING.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1f2d1d0de..9c235880d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -163,7 +163,8 @@ optional) ### Code Guidelines * Each mod must provide `mod.conf`. * Mod names are snake case, and newly added mods start with `mcl_`, e.g. -`mcl_core`, `mcl_farming`, `mcl_monster_eggs` +`mcl_core`, `mcl_farming`, `mcl_monster_eggs`. Keep in mind Minetest +does not support capital letters in mod names. * To export functions, store them inside a global table named like the mod, e.g. From eccba76732bff067bf677bee46acfc51e1298234 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 25 Oct 2021 20:25:34 +0000 Subject: [PATCH 335/720] Use math.floor instead of math.round --- mods/ITEMS/mcl_totems/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index aa188855f..b11e68df7 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -37,7 +37,7 @@ mcl_damage.register_modifier(function(obj, damage, reason) for i = 1, 4 do for c = 1, #particle_colors do minetest.add_particlespawner({ - amount = math.round(100/(4 * #particle_colors)), + amount = math.floor(100 / (4 * #particle_colors)), time = 1, minpos = vector.offset(ppos, 0, -1, 0), maxpos = vector.offset(ppos, 0, 1, 0), From 30f7c638f377f7a2387974736ccd6ac171e5b0a6 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 22:55:48 +0200 Subject: [PATCH 336/720] mcl_enchanting: Add spanish translations and update template Credit to: todoporlalibertad Reviewed by j45 --- .../locale/mcl_enchanting.es.tr | 123 +++++++++++ mods/ITEMS/mcl_enchanting/locale/template.txt | 205 ++++++++++-------- 2 files changed, 240 insertions(+), 88 deletions(-) create mode 100644 mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.es.tr diff --git a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.es.tr b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.es.tr new file mode 100644 index 000000000..a977e8fe6 --- /dev/null +++ b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.es.tr @@ -0,0 +1,123 @@ +# textdomain: mcl_enchanting + + +### enchantments.lua ### + +Arrows passes through multiple objects.=Las flechas atraviesan multiples enemigos. +Arrows set target on fire.=Las flechas prenderan los enemigos. +Bane of Arthropods=Perdición de los Artrópodos +Channeling=Conductividad + +Channels a bolt of lightning toward a target. Works only during thunderstorms and if target is unobstructed with opaque blocks.=Canaliza los rayos de una tormenta hacia el enemigo. + +Curse of Vanishing=Maldición de Desaparición +Decreases crossbow charging time.=Disminuye el tiempo de carga de las ballestas. +Decreases time until rod catches something.=Disminuye el tiempo que tardan en picar los cebos en la pesca. +Depth Strider=Agilidad acuática +Efficiency=Eficiencia +Extends underwater breathing time.=Aumenta el tiempo de mantener la respiración. +Fire Aspect=Aspecto Ígneo +Flame=Fuego +Fortune=Fortuna +Frost Walker=Paso Helado +Impaling=Empalamiento +Increases arrow damage.=Incrementa el daño de las flechas. +Increases arrow knockback.=Incrementa el empuje de las flechas. +Increases certain block drops.=Incrementa la cantidad de objetos que sueltan los bloques. + +Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).=Incrementa el daño y ralentiza a los artrópodos. (arañas, lepismas, endermitas, etc) + +Increases damage to undead mobs.=Incrementa el daño contra no-muertos. +Increases damage.=Incrementa el daño. +Increases item durability.=Incrementa la durabilidad de una herramienta. +Increases knockback.=Incrementa el empuje. +Increases mining speed.=Incrementa la velocidad de picado. +Increases mob loot.=Incrementa el botín de los enemigos. +Increases rate of good loot (enchanting books, etc.)=Incrementa la probabilidad de encontrar tesoros. +Increases sweeping attack damage.=Incrementa el daño de efecto area. +Increases underwater movement speed.=Incrementa la velocidad de nado bajo el agua. +Increases walking speed on soul sand.=Incrementa la velocidad al caminar sobre arena de Almas. +Infinity=Infinidad +Item destroyed on death.=El objeto se destruye tras tu muerte. +Knockback=Empuje +Looting=Botín +Loyalty=Lealtad +Luck of the Sea=Suerte Marina +Lure=Atracción +Mending=Reparación +Mined blocks drop themselves.=Los bloques se minarán enteros. +Multishot=Multidisparo +Piercing=Perforación +Power=Poder +Punch=Retroceso +Quick Charge=Carga Rápida +Repair the item while gaining XP orbs.=Repara los objetos portados al recibir orbes de experiencia. +Respiration=Respiración +Riptide=Propulsión acuática +Sets target on fire.=Incencia al enemigo. +Sharpness=Filo +Shoot 3 arrows at the cost of one.=Dispara 3 flechas al precio de una. +Shooting consumes no regular arrows.=No se consumiran las flechas lanzadas. +Silk Touch=Toque de Seda +Smite=Golpeo +Soul Speed=Velocidad de Almas +Sweeping Edge=Filo Arrasador +Trident deals additional damage to ocean mobs.=Incrementa el daño del tridente sobre criaturas acuáticas. + +Trident launches player with itself when thrown. Works only in water or rain.=El tridente impulsa al portador dentro del agua o bajo la lluvia. + +Trident returns after being thrown. Higher levels reduce return time.=El tridente regresa al portador tras lanzarlo. + +Turns water beneath the player into frosted ice and prevents the damage from magma blocks.=Congela el agua bajo tus pies y evita el daño de los bloques de magma. + +Unbreaking=Irrompibilidad + +### engine.lua ### + +@1 Enchantment Levels=Nivel de encantamiento: @1 +@1 Lapis Lazuli=@1 Lapis Lázuli +Inventory=Inventario +Level requirement: @1=Nivel requerido: @1 + +### init.lua ### + +'@1' is not a valid number='@1' no es un número válido +'@1' is not a valid number.='@1' no es un número válido + []= [] +@1 can't be combined with @2.=@1 no se puede combinar con @2 + +After finally selecting your enchantment; left-click on the selection, and you will see both the lapis lazuli and your experience levels consumed. And, an enchanted item left in its place.=Despues elige tu encantamiento, los niveles de experiencia y el lapis lázuli seran consumidos y el encantamiento aplicado al objeto. + +After placing your items in the slots, the enchanting options will be shown. Hover over the options to read what is available to you.=Coloca el objeto en su ranura yse mostraran los encantamientos a elegir. + +Enchant=Encantamiento +Enchant an item=Encantar objeto +Enchanted Book=Libro Encantado +Enchanting Table=Mesa de Encantamientos + +Enchanting Tables will let you enchant armors, tools, weapons, and books with various abilities. But, at the cost of some experience, and lapis lazuli.=La mesa de Encantamientos dara a tus herramientas, armas o armadura algunas habilidades magicas. Pero a coste de algo de experiencia y lapis lázuli. + +Enchanting succeded.=Encantado correctamente. +Forcefully enchant an item=Encantar objeto a la fuerza. + +Place a tool, armor, weapon or book into the top left slot, and then place 1-3 Lapis Lazuli in the slot to the right.=Coloca una herramienta, arma, armadura o libro sobre la ranura izquierda, coloca de 1 a 3 Lapis lázulis en la ranura derecha. + +Player '@1' cannot be found.=Jugador @1 no encontrado. +Rightclick the Enchanting Table to open the enchanting menu.=Clic derecho sobre la mesa de encantamientos para abrir la interfaz. +Spend experience, and lapis to enchant various items.=Experiencia y Lapis para encantar varios objetos. + +The number you have entered (@1) is too big, it must be at most @2.=@1 es muy grande, debe ser menor que @2 + +The number you have entered (@1) is too small, it must be at least @2.=@1 es muy pequeño, debe ser mayor a @2 + +The selected enchantment can't be added to the target item.=El encantamiento seleccionado no puede añadirse a ese objeto. +The target doesn't hold an item.=El jugador no sujeta un objeto. +The target item is not enchantable.=El objeto del jugador no se puede encantar. +There is no such enchantment '@1'.=@1 no es un encantamiento. + +These options are randomized, and dependent on experience level; but the enchantment strength can be increased.=Las opciones seran aleatorias dependiendo del nivel de experiencia, los niveles de encantamiento pueden ser aumentados. + +To increase the enchantment strength, place bookshelves around the enchanting table. However, you will need to keep 1 air node between the table, & the bookshelves to empower the enchanting table.=Para aumentar los niveles de encantamientos, coloca librerias alrededor y cerca de la mesa de encantamientos. + +Usage: /enchant []=Usa: /enchant [] +Usage: /forceenchant []=Usa /forceenchant [] diff --git a/mods/ITEMS/mcl_enchanting/locale/template.txt b/mods/ITEMS/mcl_enchanting/locale/template.txt index 08fa82097..1f540d6d3 100644 --- a/mods/ITEMS/mcl_enchanting/locale/template.txt +++ b/mods/ITEMS/mcl_enchanting/locale/template.txt @@ -1,100 +1,129 @@ # textdomain: mcl_enchanting -Aqua Affinity= -Increases underwater mining speed.= -Bane of Arthropods= -Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).= -Blast Protection= -Reduces explosion damage and knockback.= -Channeling= -Channels a bolt of lightning toward a target. Works only during thunderstorms and if target is unobstructed with opaque blocks.= -Curse of Binding= -Item cannot be removed from armor slots except due to death, breaking or in Creative Mode.= -Curse of Vanishing= -Item destroyed on death.= -Depth Strider= -Increases underwater movement speed.= -Efficiency= -Increases mining speed.= -Feather Falling= -Reduces fall damage.= -Fire Aspect= -Sets target on fire.= -Fire Protection= -Reduces fire damage.= -Flame= -Arrows set target on fire.= -Fortune= -Increases certain block drops.= -Frost Walker= -Turns water beneath the player into frosted ice and prevents the damage from magma blocks.= -Impaling= -Trident deals additional damage to ocean mobs.= -Infinity= -Shooting consumes no regular arrows.= -Knockback= -Increases knockback.= -Looting= -Increases mob loot.= -Loyalty= -Trident returns after being thrown. Higher levels reduce return time.= -Luck of the Sea= -Increases rate of good loot (enchanting books, etc.)= -Lure= -Decreases time until rod catches something.= -Mending= -Repair the item while gaining XP orbs.= -Multishot= -Shoot 3 arrows at the cost of one.= -Piercing= + + +### enchantments.lua ### + Arrows passes through multiple objects.= -Power= -Increases arrow damage.= -Projectile Protection= -Reduces projectile damage.= -Protection= -Reduces most types of damage by 4% for each level.= -Punch= -Increases arrow knockback.= -Quick Charge= +Arrows set target on fire.= +Bane of Arthropods= +Channeling= + +Channels a bolt of lightning toward a target. Works only during thunderstorms and if target is unobstructed with opaque blocks.= + +Curse of Vanishing= Decreases crossbow charging time.= -Respiration= +Decreases time until rod catches something.= +Depth Strider= +Efficiency= Extends underwater breathing time.= -Riptide= -Trident launches player with itself when thrown. Works only in water or rain.= -Sharpness= -Increases damage.= -Silk Touch= -Mined blocks drop themselves.= -Smite= +Fire Aspect= +Flame= +Fortune= +Frost Walker= +Impaling= +Increases arrow damage.= +Increases arrow knockback.= +Increases certain block drops.= + +Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).= + Increases damage to undead mobs.= -Soul Speed= -Increases walking speed on soul sand.= -Sweeping Edge= -Increases sweeping attack damage.= -Thorns= -Reflects some of the damage taken when hit, at the cost of reducing durability with each proc.= -Unbreaking= +Increases damage.= Increases item durability.= -Inventory= -@1 Lapis Lazuli= +Increases knockback.= +Increases mining speed.= +Increases mob loot.= +Increases rate of good loot (enchanting books, etc.)= +Increases sweeping attack damage.= +Increases underwater movement speed.= +Increases walking speed on soul sand.= +Infinity= +Item destroyed on death.= +Knockback= +Looting= +Loyalty= +Luck of the Sea= +Lure= +Mending= +Mined blocks drop themselves.= +Multishot= +Piercing= +Power= +Punch= +Quick Charge= +Repair the item while gaining XP orbs.= +Respiration= +Riptide= +Sets target on fire.= +Sharpness= +Shoot 3 arrows at the cost of one.= +Shooting consumes no regular arrows.= +Silk Touch= +Smite= +Soul Speed= +Sweeping Edge= +Trident deals additional damage to ocean mobs.= + +Trident launches player with itself when thrown. Works only in water or rain.= + +Trident returns after being thrown. Higher levels reduce return time.= + +Turns water beneath the player into frosted ice and prevents the damage from magma blocks.= + +Unbreaking= + +### engine.lua ### + @1 Enchantment Levels= +@1 Lapis Lazuli= +Inventory= Level requirement: @1= -Enchant an item= - []= -Usage: /enchant []= -Player '@1' cannot be found.= -There is no such enchantment '@1'.= -The target doesn't hold an item.= -The selected enchantment can't be added to the target item.= + +### init.lua ### + '@1' is not a valid number= -The number you have entered (@1) is too big, it must be at most @2.= -The number you have entered (@1) is too small, it must be at least @2.= -@1 can't be combined with @2.= -Enchanting succeded.= -Forcefully enchant an item= -Usage: /forceenchant []= -The target item is not enchantable.= '@1' is not a valid number.= + []= +@1 can't be combined with @2.= + +After finally selecting your enchantment; left-click on the selection, and you will see both the lapis lazuli and your experience levels consumed. And, an enchanted item left in its place.= + +After placing your items in the slots, the enchanting options will be shown. Hover over the options to read what is available to you.= + +Enchant= +Enchant an item= Enchanted Book= Enchanting Table= -Enchant= + +Enchanting Tables will let you enchant armors, tools, weapons, and books with various abilities. But, at the cost of some experience, and lapis lazuli.= + +Enchanting succeded.= +Forcefully enchant an item= + +Place a tool, armor, weapon or book into the top left slot, and then place 1-3 Lapis Lazuli in the slot to the right.= + +Player '@1' cannot be found.= +Rightclick the Enchanting Table to open the enchanting menu.= +Spend experience, and lapis to enchant various items.= + +The number you have entered (@1) is too big, it must be at most @2.= + +The number you have entered (@1) is too small, it must be at least @2.= + +The selected enchantment can't be added to the target item.= +The target doesn't hold an item.= +The target item is not enchantable.= +There is no such enchantment '@1'.= + +These options are randomized, and dependent on experience level; but the enchantment strength can be increased.= + +To increase the enchantment strength, place bookshelves around the enchanting table. However, you will need to keep 1 air node between the table, & the bookshelves to empower the enchanting table.= + +Usage: /enchant []= +Usage: /forceenchant []= + + +##### not used anymore ##### + +# textdomain: mcl_enchanting +Aqua Affinity= From 0369465630508956cb75d1c2c055e71a67b74b73 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 22:59:21 +0200 Subject: [PATCH 337/720] Add todoporlalibertad to translation credits --- CREDITS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.md b/CREDITS.md index 296e7c23b..de3dcae61 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -110,6 +110,7 @@ * wuniversales * kay27 * pitchum +* todoporlalibertad ## Special thanks * celeron55 for creating Minetest From 4e8e6fbb51a6a110619dbe0f2d6acccbc87dfa60 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 11:42:33 +0200 Subject: [PATCH 338/720] Update development target section --- CONTRIBUTING.md | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9c235880d..6cdd0db6e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,10 +4,22 @@ Wow, thank you! :-) But first, some things to note: -MineClone2's development target is to make a free software clone of -Minecraft, ***version 1.17***, ***Java Edition***, ***+ Optifine -features supported by the Minetest Engine***. The priority is making -polished features up to version 1.12. +MineClone2's development target is to... + +- Crucially, create a stable, moddable, free/libre clone of Minecraft +based on the Minetest engine with polished features, usable in both +singleplayer and multiplayer. Currently, most of **Minecraft Java +Edition 1.12.2** features are already implemented and polishing existing +features are prioritised over new feature requests. +- With lessened priority yet strictly, implement features targetting +**Minecraft version 1.17 + Optifine** (Optifine only as far as supported +by the Minetest Engine). This means features in parity with the listed +Minecraft experiences are prioritised over those that don't fulfill this +scope. +- Optionally, create a performant experience that will run relatively +well on really low spec computers. Unfortunately, due to Minecraft's +mechanisms and Minetest engine's limitations along with a very small +playerbase on low spec computers, optimizations are hard to investigate. MineClone2 is maintained by Nicu and Fleckenstein. If you have any problems or questions, contact us (See Links section below). @@ -298,7 +310,7 @@ version number (https://forum.minetest.net/viewtopic.php?f=50&t=16407) * Post release announcement and changelog in forums -## Crediting +### Crediting Contributors, Developers and Maintainers will be credited in `CREDITS.md`. If you make your first time contribution, please add yourself to this file. There are also Discord roles for Contributors, From e341b2a6fe22c879abb66353a7539fd32320bb27 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 11:55:08 +0200 Subject: [PATCH 339/720] Split code contributor section --- CONTRIBUTING.md | 81 ++++++++++++++++++++++++++++--------------------- 1 file changed, 46 insertions(+), 35 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6cdd0db6e..6c5aa2cd1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -137,24 +137,8 @@ If you opened or have contributed to an issue, you receive the ## How you can help as a programmer (Almost) all the MineClone2 development is done using pull requests. -If you feel like a problem needs to fixed or you want to make a new -feature, you could start writing the code right away and notifying us -when you're done, but it never hurts to discuss things first. If there -is no issue on the topic, open one. If there is an issue, tell us that -you'd like to take care of it, to avoid duplicate work. We appreciate -any contributing effort to Mineclone2. If you are a relatively new -programmer, you can reach us on Discord, Matrix or IRC for questions -about git, Lua, Minetest API, Mineclone2 codebase or anything related -to MineClone2. We can help you avoid writing code that would be deemed -inadequeate, or help you become familiar with Mineclone2 better, or even -help using development tools. By asking us to include your changes in -this game, you agree that they fall under the terms of the GPLv3, which -basically means they will become part of a free software. Sometimes, -your code may cause crashes or bugs - we try to avoid such scenarios by -testing everytime before merging it, but if your merged work causes -problems, we ask you fix the issues as soon as possible. -### The recommended workflow +### Recommended workflow * Fork the repository (in case you have not already) * Do your change in a new branch * Create a pull request to get your changes merged into master @@ -163,7 +147,45 @@ imperative that conflicts are resolved prior to merging the pull request. * After the pull request got merged, you can delete the branch -### Git Guidelines +### Discuss first +If you feel like a problem needs to fixed or you want to make a new +feature, you could start writing the code right away and notifying us +when you're done, but it never hurts to discuss things first. If there +is no issue on the topic, open one. If there is an issue, tell us that +you'd like to take care of it, to avoid duplicate work. + +### Don't hesitate to ask for help +We appreciate any contributing effort to MineClone2. If you are a +relatively new programmer, you can reach us on Discord, Matrix or IRC +for questions about git, Lua, Minetest API, MineClone2 codebase or +anything related to MineClone2. We can help you avoid writing code that +would be deemed inadequeate, or help you become familiar with MineClone2 +better, or even help using development tools. + +### Maintain your own code, even if alreay got merged +Sometimes, your code may cause crashes or bugs - we try to avoid such +scenarios by testing everytime before merging it, but if your merged +work causes problems, we ask you fix the issues as soon as possible. + +### Changing Gameplay +Pull Requests that change gameplay have to be properly researched and +need to state their sources. These PRs also need Fleckenstein's approval +before they are merged. +You can use these sources: + +* Minecraft code (Name the source file and line, however DONT post any +proprietary code). You can use +[MCP](https://minecraft.fandom.com/wiki/Programs_and_editors/Mod_Coder_Pack) +to decompile Minecraft or look at +[Minestorm](https://github.com/Minestom/Minestom) code. +* Testing things inside of Minecraft (Attach screenshots / video footage +of the results) +* [Official Minecraft Wiki](https://minecraft.fandom.com/wiki/Minecraft_Wiki) +(Include a link to the specific page you used) + +### Keep our guidelines + +#### Git Guidelines * We use merge rather than rebase or squash merge * We don't use git submodules. * Your commit names should be relatively descriptive, e.g. when saying @@ -172,7 +194,7 @@ issue. * Try to keep your commits as atomic as possible (advise, but completely optional) -### Code Guidelines +#### Code Guidelines * Each mod must provide `mod.conf`. * Mod names are snake case, and newly added mods start with `mcl_`, e.g. `mcl_core`, `mcl_farming`, `mcl_monster_eggs`. Keep in mind Minetest @@ -226,7 +248,7 @@ some_table = { * Use double quotes for strings, e.g. `"asdf"` rather than `'asdf'` * Use snake_case rather than CamelCase, e.g. `my_function` rather than `MyFunction` -* Dont declare functions as an assignment, e.g. +* Don't declare functions as an assignment, e.g. ```lua -- bad @@ -248,21 +270,10 @@ function my_mod.some_func() end ``` -### Changes to Gameplay -Pull Requests that change gameplay have to be properly researched and -need to state their sources. These PRs also need Fleckenstein's approval -before they are merged. -You can use these sources: - -* Minecraft code (Name the source file and line, however DONT post any -proprietary code). You can use -[MCP](https://minecraft.fandom.com/wiki/Programs_and_editors/Mod_Coder_Pack) -to decompile Minecraft or look at -[Minestorm](https://github.com/Minestom/Minestom) code. -* Testing things inside of Minecraft (Attach screenshots / video footage -of the results) -* [Official Minecraft Wiki](https://minecraft.fandom.com/wiki/Minecraft_Wiki) -(Include a link to the specific page you used) +### Licensing +By asking us to include your changes in +this game, you agree that they fall under the terms of the GPLv3, which +basically means they will become part of a free software. ### Developer status Active and trusted contributors are often granted write access to the From a0789e72f04ee7c5bbc03c1fcf68e082eceac980 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 11:57:17 +0200 Subject: [PATCH 340/720] Move licensing down, just before crediting --- CONTRIBUTING.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6c5aa2cd1..f7e21d481 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -270,11 +270,6 @@ function my_mod.some_func() end ``` -### Licensing -By asking us to include your changes in -this game, you agree that they fall under the terms of the GPLv3, which -basically means they will become part of a free software. - ### Developer status Active and trusted contributors are often granted write access to the MineClone2 repository. However you should not push things directly to @@ -321,6 +316,11 @@ version number (https://forum.minetest.net/viewtopic.php?f=50&t=16407) * Post release announcement and changelog in forums +### Licensing +By asking us to include your changes in +this game, you agree that they fall under the terms of the GPLv3, which +basically means they will become part of a free software. + ### Crediting Contributors, Developers and Maintainers will be credited in `CREDITS.md`. If you make your first time contribution, please add From 70425e9f30611ab7dcbbbf5518ed113fdf1e1809 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 11:59:32 +0200 Subject: [PATCH 341/720] Split profiling section --- CONTRIBUTING.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f7e21d481..1f063a062 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -117,11 +117,13 @@ not work, so it's not very useful to try them out yet. If you own a server, a great way to help us improve MineClone2's code is by giving us profiler results. Profiler results give us detailed information about the game's performance and let us know where the real -troublespots are. This way we can make the game faster. Minetest has a -built in profiler. Simply set `profiler.load = true` in your -configuration file and restart the server. After running the server for -some time, just run `/profiler save` in chat - then you will find a file -in the world directory containing the results. Open a new issue and +troublespots are. This way we can make the game faster. + +#### Using Minetest's profiler +Minetest has a built in profiler. Simply set `profiler.load = true` in +your configuration file and restart the server. After running the server +for some time, just run `/profiler save` in chat - then you will find a +file in the world directory containing the results. Open a new issue and upload the file. You can name the issue " profiler results". From ea0f52763c2b183368b8a0f4690c34d060bdafac Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 12:04:16 +0200 Subject: [PATCH 342/720] Split developer responsibilities into a list --- CONTRIBUTING.md | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1f063a062..58762bfcb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -274,22 +274,27 @@ end ### Developer status Active and trusted contributors are often granted write access to the -MineClone2 repository. However you should not push things directly to +MineClone2 repository. + +#### Developer responsibilities +- You should not push things directly to MineClone2 master - rather, do your work on a branch on your private repo, then create a pull request. This way other people can review your -changes and make sure they work before they get merged. You are allowed -to merge PRs if they have recieved the necessary feedback and have been +changes and make sure they work before they get merged. +- Merge PRs if they have recieved the necessary feedback and have been tested to not lead to any crashes and do what they claim to do by at -least two different people. You may also be assigned to issues or pull +least two different people. +- You may also be assigned to issues or pull requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can also unassign yourself from the issue / PR if you have no time or don't want to take care of it for some other reason (after all, everyone is a volunteer and we can't expect you to do work that you are not intrested -in) - the important thing is really that you make sure to inform us if -you won't take care of something that has been assigned to you. Also, -please assign yourself to something that you want to work on to avoid -duplicate work. As a developer, it should be easy to reach you about +in) - **the important thing is that you make sure to inform us if you +won't take care of something that has been assigned to you.** +- Please assign yourself to something that you want to work on to avoid +duplicate work. +- As a developer, it should be easy to reach you about your code. You should be on the Discord (or, if you really don't like Discord, Matrix or IRC). From 1bd972bff7cf48e7076cc28f5c03a6067f5b27b2 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 12:11:18 +0200 Subject: [PATCH 343/720] Split maintainer responsibilities into list --- CONTRIBUTING.md | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 58762bfcb..fed4885b4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -299,19 +299,25 @@ your code. You should be on the Discord (or, if you really don't like Discord, Matrix or IRC). ### Maintainer status -Maintainers are responsible for making sure issues are addressed and -pull requests are reviewed and merged, by assigning either themselves or -Developers to issues / PRs. Maintainers are responsible for making -releases, making sure guidelines are kept and making project decisions -based on what the community wants. Maintainers grant/revoke developer -access. Currently there are two maintainers with different -responsibility fields: +Maintainers carry the main responsibility for the project. +#### Maintainer responsibilities +- Making sure issues are addressed and pull requests are reviewed and +merged, by assigning either themselves or Developers to issues / PRs +- Making releases +- Making sure guidelines are kept +- Making project decisions based on what the community wants +- Granting/revoking developer access +- Enforcing the code of conduct (See CODE_OF_CONDUCT.md) +- Moderating official community spaces (See Links section) +- Resolving conflicts and problems within the community + +#### Current maintainers * Fleckenstein - responsible for gameplay review, publishing releases, technical guidelines and issue/PR delegation * Nicu - responsible for community related issues -#### Creating releases +#### Release process * Launch MineClone2 to make sure it still runs * Update the version number in README.md * Use `git tag ` to tag the latest commit with the From 64ebdd0f18beabe915bcabed52b52bf1bb7433e5 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 12:16:00 +0200 Subject: [PATCH 344/720] Update line length in licensing section --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fed4885b4..eb93cc2ff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -330,9 +330,9 @@ version number * Post release announcement and changelog in forums ### Licensing -By asking us to include your changes in -this game, you agree that they fall under the terms of the GPLv3, which -basically means they will become part of a free software. +By asking us to include your changes in this game, you agree that they +fall under the terms of the GPLv3, which basically means they will +become part of a free software. ### Crediting Contributors, Developers and Maintainers will be credited in From 0c567c7921b63d2b690577cd45de2467bdbebb43 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 12:22:21 +0200 Subject: [PATCH 345/720] Update maintainer section in CREDITS.md (leave kay27 in, but remove jordan since he never did any maintainance work) --- CREDITS.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CREDITS.md b/CREDITS.md index de3dcae61..3d039f6b1 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -8,8 +8,8 @@ ## Maintainers * Fleckenstein +* Nicu * kay27 -* jordan4ibanez ## Developers * bzoss @@ -19,7 +19,6 @@ * iliekprogrammar * MysticTempest * Rootyjr -* Nicu * aligator * Code-Sploit * NO11 From c315d155e1a51a678931be04b16ae9bcc3cf91ae Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 12:35:19 +0200 Subject: [PATCH 346/720] Update CREDITS.md --- CREDITS.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/CREDITS.md b/CREDITS.md index 3d039f6b1..95884dcac 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -22,6 +22,8 @@ * aligator * Code-Sploit * NO11 +* cora +* jordan4ibanez ## Contributors * Laurent Rocher @@ -47,8 +49,24 @@ * dBeans * nickolas360 * yutyo -* ztianyang +* Tianyang Zhang * j45 +* Marcin Serwin +* erlehmann +* E +* Benjamin Schötz +* Doloment +* Sydney Gems +* talamh +* Emily2255 +* Emojigit +* FinishedFragment +* sfan5 +* Blue Blancmange +* Jared Moody +* SmallJoker +* Sven792 +* aldum ## MineClone5 * kay27 @@ -73,7 +91,6 @@ * Rochambeau * rubenwardy * stu -* jordan4ibanez * 4aiman * Kahrl * Krock @@ -102,6 +119,7 @@ * xMrVizzy * yutyo * NO11 +* kay27 ## Translations * Wuzzy @@ -110,6 +128,7 @@ * kay27 * pitchum * todoporlalibertad +* Marcin Serwin ## Special thanks * celeron55 for creating Minetest From 797da20fa7d4c83f411a4c2586ed16b1c1da913a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 13:08:07 +0200 Subject: [PATCH 347/720] Add script to automatically generate ingame credits from CREDITS.md --- mods/HUD/mcl_credits/init.lua | 121 +------------------------ mods/HUD/mcl_credits/people.lua | 141 ++++++++++++++++++++++++++++++ tools/generate_ingame_credits.lua | 49 +++++++++++ 3 files changed, 193 insertions(+), 118 deletions(-) create mode 100644 mods/HUD/mcl_credits/people.lua create mode 100755 tools/generate_ingame_credits.lua diff --git a/mods/HUD/mcl_credits/init.lua b/mods/HUD/mcl_credits/init.lua index 235b2a3cb..db3ac8436 100644 --- a/mods/HUD/mcl_credits/init.lua +++ b/mods/HUD/mcl_credits/init.lua @@ -3,123 +3,8 @@ local S = minetest.get_translator(modname) mcl_credits = { players = {}, -} - -mcl_credits.description = S("A faithful Open Source clone of Minecraft") - --- Sub-lists are sorted by number of commits, but the list should not be rearranged (-> new contributors are just added at the end of the list) -mcl_credits.people = { - { S("Creator of MineClone"), 0x0A9400, { - "davedevils", - }}, - { S("Creator of MineClone2"), 0xFBF837, { - "Wuzzy", - }}, - { S("Maintainers"), 0xFF51D5, { - "Fleckenstein", - "kay27", - "oilboi", - }}, - { S("Developers"), 0xF84355, { - "bzoss", - "AFCMS", - "epCode", - "ryvnf", - "iliekprogrammar", - "MysticTempest", - "Rootyjr", - "Nicu", - "aligator", - "Code-Sploit", - "NO11", - }}, - { S("Contributors"), 0x52FF00, { - "Laurent Rocher", - "HimbeerserverDE", - "TechDudie", - "Alexander Minges", - "ArTee3", - "ZeDique la Ruleta", - "pitchum", - "wuniversales", - "Bu-Gee", - "David McMackins II", - "Nicholas Niro", - "Wouters Dorian", - "Blue Blancmange", - "Jared Moody", - "Li0n", - "Midgard", - "Saku Laesvuori", - "Yukitty", - "ZedekThePD", - "aldum", - "dBeans", - "nickolas360", - "yutyo", - "ztianyang", - "j45", - }}, - {"MineClone5", 0xA60014, { - "kay27", - "Debiankaios", - "epCode", - "NO11", - "j45", - }}, - { S("Original Mod Authors"), 0x343434, { - "Wuzzy", - "Fleckenstein", - "BlockMen", - "TenPlus1", - "PilzAdam", - "ryvnf", - "stujones11", - "Arcelmi", - "celeron55", - "maikerumine", - "GunshipPenguin", - "Qwertymine3", - "Rochambeau", - "rubenwardy", - "stu", - "oilboi", - "4aiman", - "Kahrl", - "Krock", - "UgnilJoZ", - "lordfingle", - "22i", - "bzoss", - "kilbith", - "xeranas", - "kddekadenz", - "sofar", - "4Evergreen4", - "jordan4ibanez", - "paramat", - }}, - { S("3D Models"), 0x0019FF, { - "22i", - "tobyplowy", - "epCode", - }}, - { S("Textures"), 0xFF9705, { - "XSSheep", - "Wuzzy", - "kingoscargames", - "leorockway", - "xMrVizzy", - "yutyo", - "NO11", - }}, - { S("Translations"), 0x00FF60, { - "Wuzzy", - "Rocher Laurent", - "wuniversales", - "kay27", - "pitchum", - }}, + description = S("A faithful Open Source clone of Minecraft"), + people = dofile(minetest.get_modpath(modname) .. "/people.lua"), } local function add_hud_element(def, huds, y) @@ -243,7 +128,7 @@ minetest.register_globalstep(function(dtime) y = y - 5 end end - + if y > -100 then if id == huds.icon then y = math.max(400, y) diff --git a/mods/HUD/mcl_credits/people.lua b/mods/HUD/mcl_credits/people.lua new file mode 100644 index 000000000..2861b5052 --- /dev/null +++ b/mods/HUD/mcl_credits/people.lua @@ -0,0 +1,141 @@ +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) + +return { + {S("Creator of MineClone"), 0x0A9400, { + "davedevils", + }}, + {S("Creator of MineClone2"), 0xFBF837, { + "Wuzzy", + }}, + {S("Maintainers"), 0xFF51D5, { + "Fleckenstein", + "Nicu", + "kay27", + }}, + {S("Developers"), 0xF84355, { + "bzoss", + "AFCMS", + "epCode", + "ryvnf", + "iliekprogrammar", + "MysticTempest", + "Rootyjr", + "aligator", + "Code-Sploit", + "NO11", + "cora", + "jordan4ibanez", + }}, + {S("Contributors"), 0x52FF00, { + "Laurent Rocher", + "HimbeerserverDE", + "TechDudie", + "Alexander Minges", + "ArTee3", + "ZeDique la Ruleta", + "pitchum", + "wuniversales", + "Bu-Gee", + "David McMackins II", + "Nicholas Niro", + "Wouters Dorian", + "Blue Blancmange", + "Jared Moody", + "Li0n", + "Midgard", + "Saku Laesvuori", + "Yukitty", + "ZedekThePD", + "aldum", + "dBeans", + "nickolas360", + "yutyo", + "Tianyang Zhang", + "j45", + "Marcin Serwin", + "erlehmann", + "E", + "Benjamin Schötz", + "Doloment", + "Sydney Gems", + "talamh", + "Emily2255", + "Emojigit", + "FinishedFragment", + "sfan5", + "Blue Blancmange", + "Jared Moody", + "SmallJoker", + "Sven792", + "aldum", + }}, + {S("MineClone5"), 0xA60014, { + "kay27", + "Debiankaios", + "epCode", + "NO11", + "j45", + }}, + {S("Original Mod Authors"), 0x343434, { + "Wuzzy", + "Fleckenstein", + "BlockMen", + "TenPlus1", + "PilzAdam", + "ryvnf", + "stujones11", + "Arcelmi", + "celeron55", + "maikerumine", + "GunshipPenguin", + "Qwertymine3", + "Rochambeau", + "rubenwardy", + "stu", + "4aiman", + "Kahrl", + "Krock", + "UgnilJoZ", + "lordfingle", + "22i", + "bzoss", + "kilbith", + "xeranas", + "kddekadenz", + "sofar", + "4Evergreen4", + "jordan4ibanez", + "paramat", + }}, + {S("3D Models"), 0x0019FF, { + "22i", + "tobyplowy", + "epCode", + }}, + {S("Textures"), 0xFF9705, { + "XSSheep", + "Wuzzy", + "kingoscargames", + "leorockway", + "xMrVizzy", + "yutyo", + "NO11", + "kay27", + }}, + {S("Translations"), 0x00FF60, { + "Wuzzy", + "Rocher Laurent", + "wuniversales", + "kay27", + "pitchum", + "todoporlalibertad", + "Marcin Serwin", + }}, + {S("Special thanks"), 0x00E9FF, { + "celeron55 for creating Minetest", + "Jordach for the jukebox music compilation from Big Freaking Dig", + "The workaholics who spent way too much time writing for the Minecraft Wiki. It's an invaluable resource for creating this game", + "Notch and Jeb for being the major forces behind Minecraft", + }}, +} diff --git a/tools/generate_ingame_credits.lua b/tools/generate_ingame_credits.lua new file mode 100755 index 000000000..89b633ef0 --- /dev/null +++ b/tools/generate_ingame_credits.lua @@ -0,0 +1,49 @@ +#! /usr/bin/env lua +-- Script to automatically generate mods/HUD/mcl_credits/people.lua from CREDITS.md +-- Run from MCL2 root folder + +local colors = { + ["Creator of MineClone"] = "0x0A9400", + ["Creator of MineClone2"] = "0xFBF837", + ["Maintainers"] = "0xFF51D5", + ["Developers"] = "0xF84355", + ["Contributors"] = "0x52FF00", + ["MineClone5"] = "0xA60014", + ["Original Mod Authors"] = "0x343434", + ["3D Models"] = "0x0019FF", + ["Textures"] = "0xFF9705", + ["Translations"] = "0x00FF60", + ["Special thanks"] = "0x00E9FF", +} + +local from = io.open("CREDITS.md", "r") +local to = io.open("mods/HUD/mcl_credits/people.lua", "w") + +to:write([[ +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) + +]]) + +to:write("return {\n") + +local started_block = false + +for line in from:lines() do + if line:find("## ") == 1 then + if started_block then + to:write("\t}},\n") + end + local title = line:sub(4, #line) + to:write("\t{S(\"" .. title .. "\"), " .. (colors[title] or "0xFFFFFF") .. ", {\n") + started_block = true + elseif line:find("*") == 1 then + to:write("\t\t\"" .. line:sub(3, #line) .. "\",\n") + end +end + +if started_block then + to:write("\t}},\n") +end + +to:write("}\n") From 835076ea4b2ed25d850ce2452b858fd26ab4364f Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 14:28:40 +0200 Subject: [PATCH 348/720] Document asset contributions --- CONTRIBUTING.md | 57 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index eb93cc2ff..e817f81bd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -113,6 +113,63 @@ pull requests here: requests that start with a `WIP:` are not done yet, and therefore might not work, so it's not very useful to try them out yet. +### Contributing assets +Due to license problems, MineClone2 can unfortunately not use +Minecraft's assets, therefore we are always looking for asset +contributions. To contribute assets, it can be useful to learn git +basics and read the section for Programmers of this document, however +this is not required. It's also a good idea to join the Discord server +(or alternatively IRC or Matrix). + +#### Textures +For textures we use the Pixel Perfection texture pack. This is mostly +enough; however in some cases - e.g. for newer minecraft features, it's +useful to have texture artists around. If you want to make such +contributions, join our Discord server. Demands for textures will be +communicated there. + +#### Sounds +MineClone2 currently does not have a consistent way to handle sounds. +The sounds in the game come from different sources, like the SnowZone +ressource pack or minetest_game. Unfortunately, MineClone2 does not play +a sound in every situation you would get one in Minecraft. Any help with +sounds is greatly appreciated, however if you add new sounds you should +probably work together with a programmer, to write the code to actually +play these sounds in game. + +#### 3D Models +Most of the 3D Models in MineClone2 come from +[22i's repository](https://github.com/22i/minecraft-voxel-blender-models). +Similar to the textures, we need people that can make 3D Models with +Blender on demand. Many of the models have to be patched, some new +animations have to be added etc. + +#### Translations + +##### Workflow +To add/update support for your language to MineClone2, you should take +the steps documented in the section for Programmers, add/update the +translation files of the mods that you want to update. You can add +support for all mods, just some of them or only one mod; you can update +the translation file entirely or only partly; basically any effort is +valued. If your changes are small, you can also send them to developers +via E-Mail, Discord, IRC or Matrix - they will credit you appropriately. + +##### Things to note +You can use the script at `tools/check_translate_files.py` to compare +the translation files for the language you are working on with the +template files, to see what is missing and what is out of date with +the template file. However, template files are often incomplete and/or +out of date, sometimes they don't match the code. You can update the +translation files if that is required, you can also modifiy the code in +your translation PR if it's related to translation. You can also work on +multiple languages at the same time in one PR. + +#### Crediting +Asset contributions will be credited in their own respective sections in +CREDITS.md. If you have commited the results yourself, you will also be +credited in the Contributors section. + ### Profiling If you own a server, a great way to help us improve MineClone2's code is by giving us profiler results. Profiler results give us detailed From 19689dd857c047fb857489ed4385b4c5440400c6 Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 26 Oct 2021 16:50:10 +0000 Subject: [PATCH 349/720] Use enchanted golden apple for thing banner --- mods/ITEMS/mcl_banners/patterncraft.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_banners/patterncraft.lua b/mods/ITEMS/mcl_banners/patterncraft.lua index 79778a665..767235b1e 100644 --- a/mods/ITEMS/mcl_banners/patterncraft.lua +++ b/mods/ITEMS/mcl_banners/patterncraft.lua @@ -119,8 +119,7 @@ local patterns = { name = N("@1 Thing Charge"), type = "shapeless", - -- TODO: Replace with enchanted golden apple - { e, "mcl_core:apple_gold", d }, + { e, "mcl_core:apple_gold_enchanted", d }, }, ["rhombus"] = { name = N("@1 Lozenge"), From d30e014233957a0b31f06c0e0f753ab005028282 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:40:45 +0200 Subject: [PATCH 350/720] Mineclone2 -> MineClone2 --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e817f81bd..bd02346b4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -41,7 +41,7 @@ MineClone2 is developed using the version control system [git](https://git-scm.com/). If you want to contribute code to the project, it is **highly recommended** that you learn the git basics. For non-programmers and people who do not plan to contribute code to -Mineclone2, git is not required. However, git is a tool that will be +MineClone2, git is not required. However, git is a tool that will be referenced frequently because of its usefulness. As such, it is valuable in learning how git works and its terminology. It can also help you in keeping your game updated, and easily testing pull requests. @@ -91,7 +91,7 @@ behavior. * Make sure the feature you request is Minecraft 1.17 Java Edition or Optifine behavior. * Begging or excessive attention seeking does not help us in the -slightest, and may very well disrupt Mineclone2 development. It's better +slightest, and may very well disrupt MineClone2 development. It's better to put that energy into helping or researching the feature in question. After all, we're just volunteers working on our spare time. * Check whether the feature has been implemented in a newer version of From 90796ec7b44d0eab168c77cae2c205e2b296b62f Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:42:11 +0200 Subject: [PATCH 351/720] can unfortunately not -> unfortunately cannot --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bd02346b4..d200085ff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -114,7 +114,7 @@ requests that start with a `WIP:` are not done yet, and therefore might not work, so it's not very useful to try them out yet. ### Contributing assets -Due to license problems, MineClone2 can unfortunately not use +Due to license problems, MineClone2 unfortunately cannot use Minecraft's assets, therefore we are always looking for asset contributions. To contribute assets, it can be useful to learn git basics and read the section for Programmers of this document, however From 61dccfb9e529be38be73fea6cf1f90827e410e26 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:44:10 +0200 Subject: [PATCH 352/720] Reword up to date guideline for feature requests --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d200085ff..482bd6c00 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -94,8 +94,8 @@ Optifine behavior. slightest, and may very well disrupt MineClone2 development. It's better to put that energy into helping or researching the feature in question. After all, we're just volunteers working on our spare time. -* Check whether the feature has been implemented in a newer version of -MineClone2, in case you are not using the latest one. +* Ensure the requested feature has not been implemented in MineClone2 +latest or development versions. ### Testing code If you want to help us with speeding up MineClone2 development and From c1934c4f3a7d720854a9ece52fc7d34213733d59 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:45:37 +0200 Subject: [PATCH 353/720] Reword feature request alignment with development goals guideline --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 482bd6c00..d8929c9e5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -88,8 +88,8 @@ the bug, e.g. before the crash happened or what causes the faulty behavior. ### Requesting features -* Make sure the feature you request is Minecraft 1.17 Java Edition or -Optifine behavior. +* Ensure the requested feature fulfills our development targets and +goals. * Begging or excessive attention seeking does not help us in the slightest, and may very well disrupt MineClone2 development. It's better to put that energy into helping or researching the feature in question. From 938911e7e383e0f625574c40c49e4ce1b5f551e6 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:46:58 +0200 Subject: [PATCH 354/720] even help using -> assist you use --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d8929c9e5..949b61ddb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -219,7 +219,7 @@ relatively new programmer, you can reach us on Discord, Matrix or IRC for questions about git, Lua, Minetest API, MineClone2 codebase or anything related to MineClone2. We can help you avoid writing code that would be deemed inadequeate, or help you become familiar with MineClone2 -better, or even help using development tools. +better, or assist you use development tools. ### Maintain your own code, even if alreay got merged Sometimes, your code may cause crashes or bugs - we try to avoid such From fb2a501a9c5d104096b968cb13ea97e11c75f46b Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:47:38 +0200 Subject: [PATCH 355/720] Keep our guidelines -> Stick to our guidelines --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 949b61ddb..a6385f627 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -242,7 +242,7 @@ of the results) * [Official Minecraft Wiki](https://minecraft.fandom.com/wiki/Minecraft_Wiki) (Include a link to the specific page you used) -### Keep our guidelines +### Stick to our guidelines #### Git Guidelines * We use merge rather than rebase or squash merge From 4db9952a84df35d96b127b40a2e93735ae2e8b83 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:48:38 +0200 Subject: [PATCH 356/720] if -> only when --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a6385f627..35b3eaa3e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -338,9 +338,9 @@ MineClone2 repository. MineClone2 master - rather, do your work on a branch on your private repo, then create a pull request. This way other people can review your changes and make sure they work before they get merged. -- Merge PRs if they have recieved the necessary feedback and have been -tested to not lead to any crashes and do what they claim to do by at -least two different people. +- Merge PRs only when they have recieved the necessary feedback and have +been tested to not lead to any crashes and do what they claim to do by +at least two different people. - You may also be assigned to issues or pull requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can From 11e364b3ec7bc472f04f6d17cc38113ea5aacd97 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:52:26 +0200 Subject: [PATCH 357/720] Give development target it's own headline --- CONTRIBUTING.md | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 35b3eaa3e..c328ca371 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,10 +2,13 @@ So you want to contribute to MineClone2? Wow, thank you! :-) -But first, some things to note: +MineClone2 is maintained by Nicu and Fleckenstein. If you have any +problems or questions, contact us (See Links section below). -MineClone2's development target is to... +You can help with MineClone2's development in many different ways, +whether you're a programmer or not. +## MineClone2's development target is to... - Crucially, create a stable, moddable, free/libre clone of Minecraft based on the Minetest engine with polished features, usable in both singleplayer and multiplayer. Currently, most of **Minecraft Java @@ -21,12 +24,6 @@ well on really low spec computers. Unfortunately, due to Minecraft's mechanisms and Minetest engine's limitations along with a very small playerbase on low spec computers, optimizations are hard to investigate. -MineClone2 is maintained by Nicu and Fleckenstein. If you have any -problems or questions, contact us (See Links section below). - -You can help with MineClone2's development in many different ways, -whether you're a programmer or not. - ## Links * [Mesehub](https://git.minetest.land/MineClone2/MineClone2) * [Discord](https://discord.gg/xE4z8EEpDC) From 6fd8ff8865af2841366a730239e9babc465cb65d Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:54:39 +0200 Subject: [PATCH 358/720] testing -> test --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c328ca371..56876fad1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -40,8 +40,8 @@ project, it is **highly recommended** that you learn the git basics. For non-programmers and people who do not plan to contribute code to MineClone2, git is not required. However, git is a tool that will be referenced frequently because of its usefulness. As such, it is valuable -in learning how git works and its terminology. It can also help you in -keeping your game updated, and easily testing pull requests. +in learning how git works and its terminology. It can also help you +keeping your game updated, and easily test pull requests. ## How you can help as a non-programmer From bbdd8f55eb28acf6245864f3eeff8aa0071949a6 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 28 Oct 2021 09:34:39 +0200 Subject: [PATCH 359/720] Reword 'reporting issues' part in 'testing pull requests' section --- CONTRIBUTING.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 56876fad1..de3ae536e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -103,9 +103,10 @@ programmer saying "Look, I modified the game, please apply my changes to the upstream version of the game". However, every programmer makes mistakes sometimes, some of which are hard to spot. You can help by downloading this modified version of the game and trying it out - then -you tell us whether the code works and does what it claims to do or -whether you have encountered any issues. You can find currently open -pull requests here: +tell us if the code works as expected without any issues. Ideally, you +would report issues will pull requests similar to when you were +reporting bugs that are the mainline (See Reporting bugs section). You +can find currently open pull requests here: . Note that pull requests that start with a `WIP:` are not done yet, and therefore might not work, so it's not very useful to try them out yet. From 5b37f5600504608e3cd0dbffc1c43c15a6b6c14d Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 28 Oct 2021 09:43:14 +0000 Subject: [PATCH 360/720] Remove small gray border of buttons in creative inventory pages --- mods/HUD/mcl_inventory/creative.lua | 1339 +++++++++++++-------------- 1 file changed, 669 insertions(+), 670 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index ff9cccf9e..2be0be4bc 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -1,670 +1,669 @@ -local S = minetest.get_translator(minetest.get_current_modname()) -local F = minetest.formspec_escape - --- Prepare player info table -local players = {} - --- Containing all the items for each Creative Mode tab -local inventory_lists = {} - ---local mod_player = minetest.get_modpath("mcl_player") - --- Create tables -local builtin_filter_ids = {"blocks","deco","redstone","rail","food","tools","combat","mobs","brew","matr","misc","all"} -for _, f in pairs(builtin_filter_ids) do - inventory_lists[f] = {} -end - -local function replace_enchanted_books(tbl) - for k, item in ipairs(tbl) do - if item:find("mcl_enchanting:book_enchanted") == 1 then - local _, enchantment, level = item:match("(%a+) ([_%w]+) (%d+)") - level = level and tonumber(level) - if enchantment and level then - tbl[k] = mcl_enchanting.enchant(ItemStack("mcl_enchanting:book_enchanted"), enchantment, level) - end - end - end -end - ---[[ Populate all the item tables. We only do this once. Note this code must be -executed after loading all the other mods in order to work. ]] -minetest.register_on_mods_loaded(function() - for name,def in pairs(minetest.registered_items) do - if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) and def.description and def.description ~= "" then - local function is_redstone(def) - return def.mesecons or def.groups.mesecon or def.groups.mesecon_conductor_craftable or def.groups.mesecon_effecor_off - end - local function is_tool(def) - return def.groups.tool or (def.tool_capabilities and def.tool_capabilities.damage_groups == nil) - end - local function is_weapon_or_armor(def) - return def.groups.weapon or def.groups.weapon_ranged or def.groups.ammo or def.groups.combat_item or ((def.groups.armor_head or def.groups.armor_torso or def.groups.armor_legs or def.groups.armor_feet or def.groups.horse_armor) and def.groups.non_combat_armor ~= 1) - end - -- Is set to true if it was added in any category besides misc - local nonmisc = false - if def.groups.building_block then - table.insert(inventory_lists["blocks"], name) - nonmisc = true - end - if def.groups.deco_block then - table.insert(inventory_lists["deco"], name) - nonmisc = true - end - if is_redstone(def) then - table.insert(inventory_lists["redstone"], name) - nonmisc = true - end - if def.groups.transport then - table.insert(inventory_lists["rail"], name) - nonmisc = true - end - if (def.groups.food and not def.groups.brewitem) or def.groups.eatable then - table.insert(inventory_lists["food"], name) - nonmisc = true - end - if is_tool(def) then - table.insert(inventory_lists["tools"], name) - nonmisc = true - end - if is_weapon_or_armor(def) then - table.insert(inventory_lists["combat"], name) - nonmisc = true - end - if def.groups.spawn_egg == 1 then - table.insert(inventory_lists["mobs"], name) - nonmisc = true - end - if def.groups.brewitem then - table.insert(inventory_lists["brew"], name) - nonmisc = true - end - if def.groups.craftitem then - table.insert(inventory_lists["matr"], name) - nonmisc = true - end - -- Misc. category is for everything which is not in any other category - if not nonmisc then - table.insert(inventory_lists["misc"], name) - end - - table.insert(inventory_lists["all"], name) - end - end - - for ench, def in pairs(mcl_enchanting.enchantments) do - local str = "mcl_enchanting:book_enchanted " .. ench .. " " .. def.max_level - if def.inv_tool_tab then - table.insert(inventory_lists["tools"], str) - end - if def.inv_combat_tab then - table.insert(inventory_lists["combat"], str) - end - table.insert(inventory_lists["all"], str) - end - - for _, to_sort in pairs(inventory_lists) do - table.sort(to_sort) - replace_enchanted_books(to_sort) - end -end) - -local function filter_item(name, description, lang, filter) - local desc - if not lang then - desc = string.lower(description) - else - desc = string.lower(minetest.get_translated_string(lang, description)) - end - return string.find(name, filter) or string.find(desc, filter) -end - -local function set_inv_search(filter, player) - local playername = player:get_player_name() - local inv = minetest.get_inventory({type="detached", name="creative_"..playername}) - local creative_list = {} - local lang = minetest.get_player_information(playername).lang_code - for name,def in pairs(minetest.registered_items) do - if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) and def.description and def.description ~= "" then - if filter_item(string.lower(def.name), def.description, lang, filter) then - table.insert(creative_list, name) - end - end - end - for ench, def in pairs(mcl_enchanting.enchantments) do - for i = 1, def.max_level do - local stack = mcl_enchanting.enchant(ItemStack("mcl_enchanting:book_enchanted"), ench, i) - if filter_item("mcl_enchanting:book_enchanted", minetest.strip_colors(stack:get_description()), lang, filter) then - table.insert(creative_list, "mcl_enchanting:book_enchanted " .. ench .. " " .. i) - end - end - end - table.sort(creative_list) - replace_enchanted_books(creative_list) - - inv:set_size("main", #creative_list) - inv:set_list("main", creative_list) -end - -local function set_inv_page(page, player) - local playername = player:get_player_name() - local inv = minetest.get_inventory({type="detached", name="creative_"..playername}) - inv:set_size("main", 0) - local creative_list = {} - if inventory_lists[page] then -- Standard filter - creative_list = inventory_lists[page] - end - inv:set_size("main", #creative_list) - inv:set_list("main", creative_list) -end - -local function init(player) - local playername = player:get_player_name() - 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 - else - return 0 - end - end, - allow_put = function(inv, listname, index, stack, player) - return 0 - end, - allow_take = function(inv, listname, index, stack, player) - if minetest.is_creative_enabled(player:get_player_name()) then - return -1 - else - return 0 - end - end, - }, playername) - set_inv_page("all", player) -end - --- Create the trash field -local trash = minetest.create_detached_inventory("trash", { - allow_put = function(inv, listname, index, stack, player) - if minetest.is_creative_enabled(player:get_player_name()) then - return stack:get_count() - else - return 0 - end - end, - on_put = function(inv, listname, index, stack, player) - inv:set_stack(listname, index, "") - end, -}) -trash:set_size("main", 1) - -local noffset = {} -- numeric tab offset -local offset = {} -- string offset: -local boffset = {} -- -local hoch = {} -local filtername = {} ---local bg = {} - -local noffset_x_start = -0.24 -local noffset_x = noffset_x_start -local noffset_y = -0.25 -local function next_noffset(id, right) - if right then - noffset[id] = { 8.94, noffset_y } - else - noffset[id] = { noffset_x, noffset_y } - noffset_x = noffset_x + 1.25 - end -end - --- Upper row -next_noffset("blocks") -next_noffset("deco") -next_noffset("redstone") -next_noffset("rail") -next_noffset("brew") -next_noffset("misc") -next_noffset("nix", true) - -noffset_x = noffset_x_start -noffset_y = 8.12 - --- Lower row -next_noffset("food") -next_noffset("tools") -next_noffset("combat") -next_noffset("mobs") -next_noffset("matr") -next_noffset("inv", true) - -for k,v in pairs(noffset) do - offset[k] = tostring(v[1]) .. "," .. tostring(v[2]) - boffset[k] = tostring(v[1]+0.19) .. "," .. tostring(v[2]+0.25) -end - -hoch["blocks"] = "" -hoch["deco"] = "" -hoch["redstone"] = "" -hoch["rail"] = "" -hoch["brew"] = "" -hoch["misc"] = "" -hoch["nix"] = "" -hoch["default"] = "" -hoch["food"] = "_down" -hoch["tools"] = "_down" -hoch["combat"] = "_down" -hoch["mobs"] = "_down" -hoch["matr"] = "_down" -hoch["inv"] = "_down" - -filtername["blocks"] = S("Building Blocks") -filtername["deco"] = S("Decoration Blocks") -filtername["redstone"] = S("Redstone") -filtername["rail"] = S("Transportation") -filtername["misc"] = S("Miscellaneous") -filtername["nix"] = S("Search Items") -filtername["food"] = S("Foodstuffs") -filtername["tools"] = S("Tools") -filtername["combat"] = S("Combat") -filtername["mobs"] = S("Mobs") -filtername["brew"] = S("Brewing") -filtername["matr"] = S("Materials") -filtername["inv"] = S("Survival Inventory") - ---local dark_bg = "crafting_creative_bg_dark.png" - ---[[local function reset_menu_item_bg() - bg["blocks"] = dark_bg - bg["deco"] = dark_bg - bg["redstone"] = dark_bg - bg["rail"] = dark_bg - bg["misc"] = dark_bg - bg["nix"] = dark_bg - bg["food"] = dark_bg - bg["tools"] = dark_bg - bg["combat"] = dark_bg - bg["mobs"] = dark_bg - bg["brew"] = dark_bg - bg["matr"] = dark_bg - bg["inv"] = dark_bg - bg["default"] = dark_bg -end]] - - -function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, show, page, filter) - --reset_menu_item_bg() - pagenum = math.floor(pagenum) or 1 - - local playername = player:get_player_name() - - if not inv_size then - if page == "nix" then - local inv = minetest.get_inventory({type="detached", name="creative_"..playername}) - inv_size = inv:get_size("main") - elseif page and page ~= "inv" then - inv_size = #(inventory_lists[page]) - else - inv_size = 0 - end - end - local pagemax = math.max(1, math.floor((inv_size-1) / (9*5) + 1)) - local name = "nix" - local main_list - local listrings = "listring[detached:creative_"..playername..";main]".. - "listring[current_player;main]".. - "listring[detached:trash;main]" - - if page then - name = page - if players[playername] then - players[playername].page = page - end - end - --bg[name] = "crafting_creative_bg.png" - - local inv_bg = "crafting_inventory_creative.png" - if name == "inv" then - inv_bg = "crafting_inventory_creative_survival.png" - - -- Show armor and player image - local player_preview - if minetest.settings:get_bool("3d_player_preview", true) then - player_preview = mcl_player.get_player_formspec_model(player, 3.9, 1.4, 1.2333, 2.4666, "") - else - player_preview = "image[3.9,1.4;1.2333,2.4666;"..mcl_player.player_get_preview(player).."]" - end - - -- Background images for armor slots (hide if occupied) - local armor_slot_imgs = "" - local inv = player:get_inventory() - if inv:get_stack("armor", 2):is_empty() then - armor_slot_imgs = armor_slot_imgs .. "image[2.5,1.3;1,1;mcl_inventory_empty_armor_slot_helmet.png]" - end - if inv:get_stack("armor", 3):is_empty() then - armor_slot_imgs = armor_slot_imgs .. "image[2.5,2.75;1,1;mcl_inventory_empty_armor_slot_chestplate.png]" - end - if inv:get_stack("armor", 4):is_empty() then - armor_slot_imgs = armor_slot_imgs .. "image[5.5,1.3;1,1;mcl_inventory_empty_armor_slot_leggings.png]" - end - if inv:get_stack("armor", 5):is_empty() then - armor_slot_imgs = armor_slot_imgs .. "image[5.5,2.75;1,1;mcl_inventory_empty_armor_slot_boots.png]" - end - - -- Survival inventory slots - main_list = "list[current_player;main;0,3.75;9,3;9]".. - mcl_formspec.get_itemslot_bg(0,3.75,9,3).. - -- armor - "list[current_player;armor;2.5,1.3;1,1;1]".. - "list[current_player;armor;2.5,2.75;1,1;2]".. - "list[current_player;armor;5.5,1.3;1,1;3]".. - "list[current_player;armor;5.5,2.75;1,1;4]".. - mcl_formspec.get_itemslot_bg(2.5,1.3,1,1).. - mcl_formspec.get_itemslot_bg(2.5,2.75,1,1).. - mcl_formspec.get_itemslot_bg(5.5,1.3,1,1).. - mcl_formspec.get_itemslot_bg(5.5,2.75,1,1).. - armor_slot_imgs.. - -- player preview - player_preview.. - -- crafting guide button - "image_button[9,1;1,1;craftguide_book.png;__mcl_craftguide;]".. - "tooltip[__mcl_craftguide;"..F(S("Recipe book")).."]".. - -- help button - "image_button[9,2;1,1;doc_button_icon_lores.png;__mcl_doc;]".. - "tooltip[__mcl_doc;"..F(S("Help")).."]".. - -- skins button - "image_button[9,3;1,1;mcl_skins_button.png;__mcl_skins;]".. - "tooltip[__mcl_skins;"..F(S("Select player skin")).."]".. - -- achievements button - "image_button[9,4;1,1;mcl_achievements_button.png;__mcl_achievements;]".. - --"style_type[image_button;border=;bgimg=;bgimg_pressed=]".. - "tooltip[__mcl_achievements;"..F(S("Achievements")).."]" - - -- For shortcuts - listrings = listrings .. - "listring[detached:"..playername.."_armor;armor]".. - "listring[current_player;main]" - else - -- Creative inventory slots - main_list = "list[detached:creative_"..playername..";main;0,1.75;9,5;"..tostring(start_i).."]".. - mcl_formspec.get_itemslot_bg(0,1.75,9,5).. - -- Page buttons - "label[9.0,5.5;"..F(S("@1/@2", pagenum, pagemax)).."]".. - "image_button[9.0,6.0;0.7,0.7;crafting_creative_prev.png;creative_prev;]".. - "image_button[9.5,6.0;0.7,0.7;crafting_creative_next.png;creative_next;]" - end - - local tab_icon = { - blocks = "mcl_core:brick_block", - deco = "mcl_flowers:peony", - redstone = "mesecons:redstone", - rail = "mcl_minecarts:golden_rail", - misc = "mcl_buckets:bucket_lava", - nix = "mcl_compass:compass", - food = "mcl_core:apple", - tools = "mcl_core:axe_iron", - combat = "mcl_core:sword_gold", - mobs = "mobs_mc:cow", - brew = "mcl_potions:dragon_breath", - matr = "mcl_core:stick", - inv = "mcl_chests:chest", - } - local function tab(current_tab, this_tab) - local bg_img - if current_tab == this_tab then - bg_img = "crafting_creative_active"..hoch[this_tab]..".png" - else - bg_img = "crafting_creative_inactive"..hoch[this_tab]..".png" - end - return - "style["..this_tab..";border=false;bgimg=;bgimg_pressed=]".. - "item_image_button[" .. boffset[this_tab] ..";1,1;"..tab_icon[this_tab]..";"..this_tab..";]".. - "image[" .. offset[this_tab] .. ";1.5,1.44;" .. bg_img .. "]" .. - "image[" .. boffset[this_tab] .. ";1,1;crafting_creative_marker.png]" - end - local caption = "" - if name ~= "inv" and filtername[name] then - caption = "label[0,1.2;"..F(minetest.colorize("#313131", filtername[name])).."]" - end - - 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.."]".. - "label[-5,-5;"..name.."]".. - tab(name, "blocks") .. - "tooltip[blocks;"..F(filtername["blocks"]).."]".. - tab(name, "deco") .. - "tooltip[deco;"..F(filtername["deco"]).."]".. - tab(name, "redstone") .. - "tooltip[redstone;"..F(filtername["redstone"]).."]".. - tab(name, "rail") .. - "tooltip[rail;"..F(filtername["rail"]).."]".. - tab(name, "misc") .. - "tooltip[misc;"..F(filtername["misc"]).."]".. - tab(name, "nix") .. - "tooltip[nix;"..F(filtername["nix"]).."]".. - caption.. - "list[current_player;main;0,7;9,1;]".. - mcl_formspec.get_itemslot_bg(0,7,9,1).. - main_list.. - tab(name, "food") .. - "tooltip[food;"..F(filtername["food"]).."]".. - tab(name, "tools") .. - "tooltip[tools;"..F(filtername["tools"]).."]".. - tab(name, "combat") .. - "tooltip[combat;"..F(filtername["combat"]).."]".. - tab(name, "mobs") .. - "tooltip[mobs;"..F(filtername["mobs"]).."]".. - tab(name, "brew") .. - "tooltip[brew;"..F(filtername["brew"]).."]".. - tab(name, "matr") .. - "tooltip[matr;"..F(filtername["matr"]).."]".. - tab(name, "inv") .. - "tooltip[inv;"..F(filtername["inv"]).."]".. - "list[detached:trash;main;9,7;1,1;]".. - mcl_formspec.get_itemslot_bg(9,7,1,1).. - "image[9,7;1,1;crafting_creative_trash.png]".. - listrings - - if name == "nix" then - if filter == nil then - filter = "" - end - formspec = formspec .. "field[5.3,1.34;4,0.75;search;;"..minetest.formspec_escape(filter).."]" - formspec = formspec .. "field_close_on_enter[search;false]" - end - if pagenum then formspec = formspec .. "p"..tostring(pagenum) end - player:set_inventory_formspec(formspec) -end - -minetest.register_on_player_receive_fields(function(player, formname, fields) - local page = nil - - if not minetest.is_creative_enabled(player:get_player_name()) then - return - end - if formname ~= "" or fields.quit == "true" then - -- No-op if formspec closed or not player inventory (formname == "") - return - end - - local name = player:get_player_name() - - if fields.blocks then - if players[name].page == "blocks" then return end - set_inv_page("blocks",player) - page = "blocks" - elseif fields.deco then - if players[name].page == "deco" then return end - set_inv_page("deco",player) - page = "deco" - elseif fields.redstone then - if players[name].page == "redstone" then return end - set_inv_page("redstone",player) - page = "redstone" - elseif fields.rail then - if players[name].page == "rail" then return end - set_inv_page("rail",player) - page = "rail" - elseif fields.misc then - if players[name].page == "misc" then return end - set_inv_page("misc",player) - page = "misc" - elseif fields.nix then - set_inv_page("all",player) - page = "nix" - elseif fields.food then - if players[name].page == "food" then return end - set_inv_page("food",player) - page = "food" - elseif fields.tools then - if players[name].page == "tools" then return end - set_inv_page("tools",player) - page = "tools" - elseif fields.combat then - if players[name].page == "combat" then return end - set_inv_page("combat",player) - page = "combat" - elseif fields.mobs then - if players[name].page == "mobs" then return end - set_inv_page("mobs",player) - page = "mobs" - elseif fields.brew then - if players[name].page == "brew" then return end - set_inv_page("brew",player) - page = "brew" - elseif fields.matr then - if players[name].page == "matr" then return end - set_inv_page("matr",player) - page = "matr" - elseif fields.inv then - if players[name].page == "inv" then return end - page = "inv" - elseif fields.search == "" and not fields.creative_next and not fields.creative_prev then - set_inv_page("all", player) - page = "nix" - elseif fields.search and not fields.creative_next and not fields.creative_prev then - set_inv_search(string.lower(fields.search),player) - page = "nix" - end - - if page then - players[name].page = page - end - if players[name].page then - page = players[name].page - end - - -- Figure out current scroll bar from formspec - --local formspec = player:get_inventory_formspec() - - local start_i = players[name].start_i - - if fields.creative_prev then - start_i = start_i - 9*5 - elseif fields.creative_next then - start_i = start_i + 9*5 - else - -- Reset scroll bar if not scrolled - start_i = 0 - end - if start_i < 0 then - start_i = start_i + 9*5 - end - - local inv_size - if page == "nix" then - local inv = minetest.get_inventory({type="detached", name="creative_"..name}) - inv_size = inv:get_size("main") - elseif page and page ~= "inv" then - inv_size = #(inventory_lists[page]) - else - inv_size = 0 - end - - if start_i >= inv_size then - start_i = start_i - 9*5 - end - if start_i < 0 or start_i >= inv_size then - start_i = 0 - end - players[name].start_i = start_i - - local filter = "" - if not fields.nix and fields.search and fields.search ~= "" then - filter = fields.search - players[name].filter = filter - end - - mcl_inventory.set_creative_formspec(player, start_i, start_i / (9*5) + 1, inv_size, false, page, filter) -end) - - -if minetest.is_creative_enabled("") then - minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack) - -- Place infinite nodes, except for shulker boxes - local group = minetest.get_item_group(itemstack:get_name(), "shulker_box") - return group == 0 or group == nil - end) - - function minetest.handle_node_drops(pos, drops, digger) - if not digger or not digger:is_player() then - for _,item in ipairs(drops) do - minetest.add_item(pos, item) - end - end - local inv = digger:get_inventory() - if inv then - for _,item in ipairs(drops) do - if not inv:contains_item("main", item, true) then - inv:add_item("main", item) - end - end - end - end - - mcl_inventory.update_inventory_formspec = function(player) - local page - - local name = player:get_player_name() - - if players[name].page then - page = players[name].page - else - page = "nix" - end - - -- Figure out current scroll bar from formspec - --local formspec = player:get_inventory_formspec() - local start_i = players[name].start_i - - local inv_size - if page == "nix" then - local inv = minetest.get_inventory({type="detached", name="creative_"..name}) - inv_size = inv:get_size("main") - elseif page and page ~= "inv" then - inv_size = #(inventory_lists[page]) - else - inv_size = 0 - end - - local filter = players[name].filter - if filter == nil then - filter = "" - end - - mcl_inventory.set_creative_formspec(player, start_i, start_i / (9*5) + 1, inv_size, false, page, filter) - end -end - -minetest.register_on_joinplayer(function(player) - -- Initialize variables and inventory - local name = player:get_player_name() - if not players[name] then - players[name] = {} - players[name].page = "nix" - players[name].filter = "" - players[name].start_i = 0 - end - init(player) - mcl_inventory.set_creative_formspec(player, 0, 1, nil, false, "nix", "") -end) +local S = minetest.get_translator(minetest.get_current_modname()) +local F = minetest.formspec_escape + +-- Prepare player info table +local players = {} + +-- Containing all the items for each Creative Mode tab +local inventory_lists = {} + +--local mod_player = minetest.get_modpath("mcl_player") + +-- Create tables +local builtin_filter_ids = {"blocks","deco","redstone","rail","food","tools","combat","mobs","brew","matr","misc","all"} +for _, f in pairs(builtin_filter_ids) do + inventory_lists[f] = {} +end + +local function replace_enchanted_books(tbl) + for k, item in ipairs(tbl) do + if item:find("mcl_enchanting:book_enchanted") == 1 then + local _, enchantment, level = item:match("(%a+) ([_%w]+) (%d+)") + level = level and tonumber(level) + if enchantment and level then + tbl[k] = mcl_enchanting.enchant(ItemStack("mcl_enchanting:book_enchanted"), enchantment, level) + end + end + end +end + +--[[ Populate all the item tables. We only do this once. Note this code must be +executed after loading all the other mods in order to work. ]] +minetest.register_on_mods_loaded(function() + for name,def in pairs(minetest.registered_items) do + if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) and def.description and def.description ~= "" then + local function is_redstone(def) + return def.mesecons or def.groups.mesecon or def.groups.mesecon_conductor_craftable or def.groups.mesecon_effecor_off + end + local function is_tool(def) + return def.groups.tool or (def.tool_capabilities and def.tool_capabilities.damage_groups == nil) + end + local function is_weapon_or_armor(def) + return def.groups.weapon or def.groups.weapon_ranged or def.groups.ammo or def.groups.combat_item or ((def.groups.armor_head or def.groups.armor_torso or def.groups.armor_legs or def.groups.armor_feet or def.groups.horse_armor) and def.groups.non_combat_armor ~= 1) + end + -- Is set to true if it was added in any category besides misc + local nonmisc = false + if def.groups.building_block then + table.insert(inventory_lists["blocks"], name) + nonmisc = true + end + if def.groups.deco_block then + table.insert(inventory_lists["deco"], name) + nonmisc = true + end + if is_redstone(def) then + table.insert(inventory_lists["redstone"], name) + nonmisc = true + end + if def.groups.transport then + table.insert(inventory_lists["rail"], name) + nonmisc = true + end + if (def.groups.food and not def.groups.brewitem) or def.groups.eatable then + table.insert(inventory_lists["food"], name) + nonmisc = true + end + if is_tool(def) then + table.insert(inventory_lists["tools"], name) + nonmisc = true + end + if is_weapon_or_armor(def) then + table.insert(inventory_lists["combat"], name) + nonmisc = true + end + if def.groups.spawn_egg == 1 then + table.insert(inventory_lists["mobs"], name) + nonmisc = true + end + if def.groups.brewitem then + table.insert(inventory_lists["brew"], name) + nonmisc = true + end + if def.groups.craftitem then + table.insert(inventory_lists["matr"], name) + nonmisc = true + end + -- Misc. category is for everything which is not in any other category + if not nonmisc then + table.insert(inventory_lists["misc"], name) + end + + table.insert(inventory_lists["all"], name) + end + end + + for ench, def in pairs(mcl_enchanting.enchantments) do + local str = "mcl_enchanting:book_enchanted " .. ench .. " " .. def.max_level + if def.inv_tool_tab then + table.insert(inventory_lists["tools"], str) + end + if def.inv_combat_tab then + table.insert(inventory_lists["combat"], str) + end + table.insert(inventory_lists["all"], str) + end + + for _, to_sort in pairs(inventory_lists) do + table.sort(to_sort) + replace_enchanted_books(to_sort) + end +end) + +local function filter_item(name, description, lang, filter) + local desc + if not lang then + desc = string.lower(description) + else + desc = string.lower(minetest.get_translated_string(lang, description)) + end + return string.find(name, filter) or string.find(desc, filter) +end + +local function set_inv_search(filter, player) + local playername = player:get_player_name() + local inv = minetest.get_inventory({type="detached", name="creative_"..playername}) + local creative_list = {} + local lang = minetest.get_player_information(playername).lang_code + for name,def in pairs(minetest.registered_items) do + if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) and def.description and def.description ~= "" then + if filter_item(string.lower(def.name), def.description, lang, filter) then + table.insert(creative_list, name) + end + end + end + for ench, def in pairs(mcl_enchanting.enchantments) do + for i = 1, def.max_level do + local stack = mcl_enchanting.enchant(ItemStack("mcl_enchanting:book_enchanted"), ench, i) + if filter_item("mcl_enchanting:book_enchanted", minetest.strip_colors(stack:get_description()), lang, filter) then + table.insert(creative_list, "mcl_enchanting:book_enchanted " .. ench .. " " .. i) + end + end + end + table.sort(creative_list) + replace_enchanted_books(creative_list) + + inv:set_size("main", #creative_list) + inv:set_list("main", creative_list) +end + +local function set_inv_page(page, player) + local playername = player:get_player_name() + local inv = minetest.get_inventory({type="detached", name="creative_"..playername}) + inv:set_size("main", 0) + local creative_list = {} + if inventory_lists[page] then -- Standard filter + creative_list = inventory_lists[page] + end + inv:set_size("main", #creative_list) + inv:set_list("main", creative_list) +end + +local function init(player) + local playername = player:get_player_name() + 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 + else + return 0 + end + end, + allow_put = function(inv, listname, index, stack, player) + return 0 + end, + allow_take = function(inv, listname, index, stack, player) + if minetest.is_creative_enabled(player:get_player_name()) then + return -1 + else + return 0 + end + end, + }, playername) + set_inv_page("all", player) +end + +-- Create the trash field +local trash = minetest.create_detached_inventory("trash", { + allow_put = function(inv, listname, index, stack, player) + if minetest.is_creative_enabled(player:get_player_name()) then + return stack:get_count() + else + return 0 + end + end, + on_put = function(inv, listname, index, stack, player) + inv:set_stack(listname, index, "") + end, +}) +trash:set_size("main", 1) + +local noffset = {} -- numeric tab offset +local offset = {} -- string offset: +local boffset = {} -- +local hoch = {} +local filtername = {} +--local bg = {} + +local noffset_x_start = -0.24 +local noffset_x = noffset_x_start +local noffset_y = -0.25 +local function next_noffset(id, right) + if right then + noffset[id] = { 8.94, noffset_y } + else + noffset[id] = { noffset_x, noffset_y } + noffset_x = noffset_x + 1.25 + end +end + +-- Upper row +next_noffset("blocks") +next_noffset("deco") +next_noffset("redstone") +next_noffset("rail") +next_noffset("brew") +next_noffset("misc") +next_noffset("nix", true) + +noffset_x = noffset_x_start +noffset_y = 8.12 + +-- Lower row +next_noffset("food") +next_noffset("tools") +next_noffset("combat") +next_noffset("mobs") +next_noffset("matr") +next_noffset("inv", true) + +for k,v in pairs(noffset) do + offset[k] = tostring(v[1]) .. "," .. tostring(v[2]) + boffset[k] = tostring(v[1]+0.19) .. "," .. tostring(v[2]+0.25) +end + +hoch["blocks"] = "" +hoch["deco"] = "" +hoch["redstone"] = "" +hoch["rail"] = "" +hoch["brew"] = "" +hoch["misc"] = "" +hoch["nix"] = "" +hoch["default"] = "" +hoch["food"] = "_down" +hoch["tools"] = "_down" +hoch["combat"] = "_down" +hoch["mobs"] = "_down" +hoch["matr"] = "_down" +hoch["inv"] = "_down" + +filtername["blocks"] = S("Building Blocks") +filtername["deco"] = S("Decoration Blocks") +filtername["redstone"] = S("Redstone") +filtername["rail"] = S("Transportation") +filtername["misc"] = S("Miscellaneous") +filtername["nix"] = S("Search Items") +filtername["food"] = S("Foodstuffs") +filtername["tools"] = S("Tools") +filtername["combat"] = S("Combat") +filtername["mobs"] = S("Mobs") +filtername["brew"] = S("Brewing") +filtername["matr"] = S("Materials") +filtername["inv"] = S("Survival Inventory") + +--local dark_bg = "crafting_creative_bg_dark.png" + +--[[local function reset_menu_item_bg() + bg["blocks"] = dark_bg + bg["deco"] = dark_bg + bg["redstone"] = dark_bg + bg["rail"] = dark_bg + bg["misc"] = dark_bg + bg["nix"] = dark_bg + bg["food"] = dark_bg + bg["tools"] = dark_bg + bg["combat"] = dark_bg + bg["mobs"] = dark_bg + bg["brew"] = dark_bg + bg["matr"] = dark_bg + bg["inv"] = dark_bg + bg["default"] = dark_bg +end]] + + +function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, show, page, filter) + --reset_menu_item_bg() + pagenum = math.floor(pagenum) or 1 + + local playername = player:get_player_name() + + if not inv_size then + if page == "nix" then + local inv = minetest.get_inventory({type="detached", name="creative_"..playername}) + inv_size = inv:get_size("main") + elseif page and page ~= "inv" then + inv_size = #(inventory_lists[page]) + else + inv_size = 0 + end + end + local pagemax = math.max(1, math.floor((inv_size-1) / (9*5) + 1)) + local name = "nix" + local main_list + local listrings = "listring[detached:creative_"..playername..";main]".. + "listring[current_player;main]".. + "listring[detached:trash;main]" + + if page then + name = page + if players[playername] then + players[playername].page = page + end + end + --bg[name] = "crafting_creative_bg.png" + + local inv_bg = "crafting_inventory_creative.png" + if name == "inv" then + inv_bg = "crafting_inventory_creative_survival.png" + + -- Show armor and player image + local player_preview + if minetest.settings:get_bool("3d_player_preview", true) then + player_preview = mcl_player.get_player_formspec_model(player, 3.9, 1.4, 1.2333, 2.4666, "") + else + player_preview = "image[3.9,1.4;1.2333,2.4666;"..mcl_player.player_get_preview(player).."]" + end + + -- Background images for armor slots (hide if occupied) + local armor_slot_imgs = "" + local inv = player:get_inventory() + if inv:get_stack("armor", 2):is_empty() then + armor_slot_imgs = armor_slot_imgs .. "image[2.5,1.3;1,1;mcl_inventory_empty_armor_slot_helmet.png]" + end + if inv:get_stack("armor", 3):is_empty() then + armor_slot_imgs = armor_slot_imgs .. "image[2.5,2.75;1,1;mcl_inventory_empty_armor_slot_chestplate.png]" + end + if inv:get_stack("armor", 4):is_empty() then + armor_slot_imgs = armor_slot_imgs .. "image[5.5,1.3;1,1;mcl_inventory_empty_armor_slot_leggings.png]" + end + if inv:get_stack("armor", 5):is_empty() then + armor_slot_imgs = armor_slot_imgs .. "image[5.5,2.75;1,1;mcl_inventory_empty_armor_slot_boots.png]" + end + + -- Survival inventory slots + main_list = "list[current_player;main;0,3.75;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,3.75,9,3).. + -- armor + "list[current_player;armor;2.5,1.3;1,1;1]".. + "list[current_player;armor;2.5,2.75;1,1;2]".. + "list[current_player;armor;5.5,1.3;1,1;3]".. + "list[current_player;armor;5.5,2.75;1,1;4]".. + mcl_formspec.get_itemslot_bg(2.5,1.3,1,1).. + mcl_formspec.get_itemslot_bg(2.5,2.75,1,1).. + mcl_formspec.get_itemslot_bg(5.5,1.3,1,1).. + mcl_formspec.get_itemslot_bg(5.5,2.75,1,1).. + armor_slot_imgs.. + -- player preview + player_preview.. + -- crafting guide button + "image_button[9,1;1,1;craftguide_book.png;__mcl_craftguide;]".. + "tooltip[__mcl_craftguide;"..F(S("Recipe book")).."]".. + -- help button + "image_button[9,2;1,1;doc_button_icon_lores.png;__mcl_doc;]".. + "tooltip[__mcl_doc;"..F(S("Help")).."]".. + -- skins button + "image_button[9,3;1,1;mcl_skins_button.png;__mcl_skins;]".. + "tooltip[__mcl_skins;"..F(S("Select player skin")).."]".. + -- achievements button + "image_button[9,4;1,1;mcl_achievements_button.png;__mcl_achievements;]".. + --"style_type[image_button;border=;bgimg=;bgimg_pressed=]".. + "tooltip[__mcl_achievements;"..F(S("Achievements")).."]" + + -- For shortcuts + listrings = listrings .. + "listring[detached:"..playername.."_armor;armor]".. + "listring[current_player;main]" + else + -- Creative inventory slots + main_list = "list[detached:creative_"..playername..";main;0,1.75;9,5;"..tostring(start_i).."]".. + mcl_formspec.get_itemslot_bg(0,1.75,9,5).. + -- Page buttons + "label[9.0,5.5;"..F(S("@1/@2", pagenum, pagemax)).."]".. + "image_button[9.0,6.0;0.7,0.7;crafting_creative_prev.png;creative_prev;]".. + "image_button[9.5,6.0;0.7,0.7;crafting_creative_next.png;creative_next;]" + end + + local tab_icon = { + blocks = "mcl_core:brick_block", + deco = "mcl_flowers:peony", + redstone = "mesecons:redstone", + rail = "mcl_minecarts:golden_rail", + misc = "mcl_buckets:bucket_lava", + nix = "mcl_compass:compass", + food = "mcl_core:apple", + tools = "mcl_core:axe_iron", + combat = "mcl_core:sword_gold", + mobs = "mobs_mc:cow", + brew = "mcl_potions:dragon_breath", + matr = "mcl_core:stick", + inv = "mcl_chests:chest", + } + local function tab(current_tab, this_tab) + local bg_img + if current_tab == this_tab then + bg_img = "crafting_creative_active"..hoch[this_tab]..".png" + else + bg_img = "crafting_creative_inactive"..hoch[this_tab]..".png" + end + return + "style["..this_tab..";border=false;bgimg=;bgimg_pressed=]".. + "item_image_button[" .. boffset[this_tab] ..";1,1;"..tab_icon[this_tab]..";"..this_tab..";]".. + "image[" .. offset[this_tab] .. ";1.5,1.44;" .. bg_img .. "]" + end + local caption = "" + if name ~= "inv" and filtername[name] then + caption = "label[0,1.2;"..F(minetest.colorize("#313131", filtername[name])).."]" + end + + 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.."]".. + "label[-5,-5;"..name.."]".. + tab(name, "blocks") .. + "tooltip[blocks;"..F(filtername["blocks"]).."]".. + tab(name, "deco") .. + "tooltip[deco;"..F(filtername["deco"]).."]".. + tab(name, "redstone") .. + "tooltip[redstone;"..F(filtername["redstone"]).."]".. + tab(name, "rail") .. + "tooltip[rail;"..F(filtername["rail"]).."]".. + tab(name, "misc") .. + "tooltip[misc;"..F(filtername["misc"]).."]".. + tab(name, "nix") .. + "tooltip[nix;"..F(filtername["nix"]).."]".. + caption.. + "list[current_player;main;0,7;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7,9,1).. + main_list.. + tab(name, "food") .. + "tooltip[food;"..F(filtername["food"]).."]".. + tab(name, "tools") .. + "tooltip[tools;"..F(filtername["tools"]).."]".. + tab(name, "combat") .. + "tooltip[combat;"..F(filtername["combat"]).."]".. + tab(name, "mobs") .. + "tooltip[mobs;"..F(filtername["mobs"]).."]".. + tab(name, "brew") .. + "tooltip[brew;"..F(filtername["brew"]).."]".. + tab(name, "matr") .. + "tooltip[matr;"..F(filtername["matr"]).."]".. + tab(name, "inv") .. + "tooltip[inv;"..F(filtername["inv"]).."]".. + "list[detached:trash;main;9,7;1,1;]".. + mcl_formspec.get_itemslot_bg(9,7,1,1).. + "image[9,7;1,1;crafting_creative_trash.png]".. + listrings + + if name == "nix" then + if filter == nil then + filter = "" + end + formspec = formspec .. "field[5.3,1.34;4,0.75;search;;"..minetest.formspec_escape(filter).."]" + formspec = formspec .. "field_close_on_enter[search;false]" + end + if pagenum then formspec = formspec .. "p"..tostring(pagenum) end + player:set_inventory_formspec(formspec) +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + local page = nil + + if not minetest.is_creative_enabled(player:get_player_name()) then + return + end + if formname ~= "" or fields.quit == "true" then + -- No-op if formspec closed or not player inventory (formname == "") + return + end + + local name = player:get_player_name() + + if fields.blocks then + if players[name].page == "blocks" then return end + set_inv_page("blocks",player) + page = "blocks" + elseif fields.deco then + if players[name].page == "deco" then return end + set_inv_page("deco",player) + page = "deco" + elseif fields.redstone then + if players[name].page == "redstone" then return end + set_inv_page("redstone",player) + page = "redstone" + elseif fields.rail then + if players[name].page == "rail" then return end + set_inv_page("rail",player) + page = "rail" + elseif fields.misc then + if players[name].page == "misc" then return end + set_inv_page("misc",player) + page = "misc" + elseif fields.nix then + set_inv_page("all",player) + page = "nix" + elseif fields.food then + if players[name].page == "food" then return end + set_inv_page("food",player) + page = "food" + elseif fields.tools then + if players[name].page == "tools" then return end + set_inv_page("tools",player) + page = "tools" + elseif fields.combat then + if players[name].page == "combat" then return end + set_inv_page("combat",player) + page = "combat" + elseif fields.mobs then + if players[name].page == "mobs" then return end + set_inv_page("mobs",player) + page = "mobs" + elseif fields.brew then + if players[name].page == "brew" then return end + set_inv_page("brew",player) + page = "brew" + elseif fields.matr then + if players[name].page == "matr" then return end + set_inv_page("matr",player) + page = "matr" + elseif fields.inv then + if players[name].page == "inv" then return end + page = "inv" + elseif fields.search == "" and not fields.creative_next and not fields.creative_prev then + set_inv_page("all", player) + page = "nix" + elseif fields.search and not fields.creative_next and not fields.creative_prev then + set_inv_search(string.lower(fields.search),player) + page = "nix" + end + + if page then + players[name].page = page + end + if players[name].page then + page = players[name].page + end + + -- Figure out current scroll bar from formspec + --local formspec = player:get_inventory_formspec() + + local start_i = players[name].start_i + + if fields.creative_prev then + start_i = start_i - 9*5 + elseif fields.creative_next then + start_i = start_i + 9*5 + else + -- Reset scroll bar if not scrolled + start_i = 0 + end + if start_i < 0 then + start_i = start_i + 9*5 + end + + local inv_size + if page == "nix" then + local inv = minetest.get_inventory({type="detached", name="creative_"..name}) + inv_size = inv:get_size("main") + elseif page and page ~= "inv" then + inv_size = #(inventory_lists[page]) + else + inv_size = 0 + end + + if start_i >= inv_size then + start_i = start_i - 9*5 + end + if start_i < 0 or start_i >= inv_size then + start_i = 0 + end + players[name].start_i = start_i + + local filter = "" + if not fields.nix and fields.search and fields.search ~= "" then + filter = fields.search + players[name].filter = filter + end + + mcl_inventory.set_creative_formspec(player, start_i, start_i / (9*5) + 1, inv_size, false, page, filter) +end) + + +if minetest.is_creative_enabled("") then + minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack) + -- Place infinite nodes, except for shulker boxes + local group = minetest.get_item_group(itemstack:get_name(), "shulker_box") + return group == 0 or group == nil + end) + + function minetest.handle_node_drops(pos, drops, digger) + if not digger or not digger:is_player() then + for _,item in ipairs(drops) do + minetest.add_item(pos, item) + end + end + local inv = digger:get_inventory() + if inv then + for _,item in ipairs(drops) do + if not inv:contains_item("main", item, true) then + inv:add_item("main", item) + end + end + end + end + + mcl_inventory.update_inventory_formspec = function(player) + local page + + local name = player:get_player_name() + + if players[name].page then + page = players[name].page + else + page = "nix" + end + + -- Figure out current scroll bar from formspec + --local formspec = player:get_inventory_formspec() + local start_i = players[name].start_i + + local inv_size + if page == "nix" then + local inv = minetest.get_inventory({type="detached", name="creative_"..name}) + inv_size = inv:get_size("main") + elseif page and page ~= "inv" then + inv_size = #(inventory_lists[page]) + else + inv_size = 0 + end + + local filter = players[name].filter + if filter == nil then + filter = "" + end + + mcl_inventory.set_creative_formspec(player, start_i, start_i / (9*5) + 1, inv_size, false, page, filter) + end +end + +minetest.register_on_joinplayer(function(player) + -- Initialize variables and inventory + local name = player:get_player_name() + if not players[name] then + players[name] = {} + players[name].page = "nix" + players[name].filter = "" + players[name].start_i = 0 + end + init(player) + mcl_inventory.set_creative_formspec(player, 0, 1, nil, false, "nix", "") +end) From 28b73042114ae4a7f1077d41d1e0cff8d224be64 Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 2 Nov 2021 22:55:49 +0100 Subject: [PATCH 361/720] Break minecart it's near a cactus (Fix #924) --- mods/ENTITIES/mcl_minecarts/init.lua | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 4d3873cc2..119a13523 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -198,7 +198,20 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick, o else self._last_float_check = self._last_float_check + dtime end - local pos, rou_pos, node + + local pos, rou_pos, node = self.object:get_pos() + local r = 0.6 + for _, node_pos in pairs({{r, 0}, {0, r}, {-r, 0}, {0, -r}}) do + if minetest.get_node(vector.offset(pos, node_pos[1], 0, node_pos[2])).name == "mcl_core:cactus" then + detach_driver(self) + for d = 1, #drop do + minetest.add_item(pos, drop[d]) + end + self.object:remove() + return + end + end + -- Drop minecart if it isn't on a rail anymore if self._last_float_check >= mcl_minecarts.check_float_time then pos = self.object:get_pos() From db696d0e2b41e41c5859c0748a046144c3cf5981 Mon Sep 17 00:00:00 2001 From: Artem Arbatsky Date: Fri, 24 Sep 2021 16:50:54 +0500 Subject: [PATCH 362/720] Add missing call for on_die function --- mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 45e46d3db..03e6789ed 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua @@ -122,7 +122,10 @@ mobs.death_logic = function(self, dtime) 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)) + mcl_experience.throw_experience(self.object:get_pos(), math_random(self.xp_min, self.xp_max)) + if self.on_die then + self.on_die(self, self.object:get_pos()) + end self.object:remove() return end @@ -155,4 +158,4 @@ mobs.death_logic = function(self, dtime) if self.pause_timer <= 0 then mobs.set_velocity(self,0) end -end \ No newline at end of file +end From 2607d40f1fcb4680f324aea4ad733fbe48a0fbfa Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Sat, 17 Jul 2021 07:23:20 +0200 Subject: [PATCH 363/720] Add script to show packets count from debug logs Mineclonia has inherited mods from MineClone 2 that send a lot of network packets. This behaviour wastes bandwith and is most likely a major reason for the unusually high amount of lag that MineClone2 and Mineclonia have. Many network packets that are sent by Mineclonia are entirely useless. Analyzing minetest log files to figure out what kind of packets are sent and how often is a first step in getting rid of useless traffic. --- tools/analyze-packet-spam | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 tools/analyze-packet-spam diff --git a/tools/analyze-packet-spam b/tools/analyze-packet-spam new file mode 100755 index 000000000..310616fd9 --- /dev/null +++ b/tools/analyze-packet-spam @@ -0,0 +1,60 @@ +#!/bin/sh -eu +# analyze-packet-spam – show minetest client packet count per second +# Copyright © 2021 Nils Dagsson Moskopp (erlehmann) + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# Dieses Programm hat das Ziel, die Medienkompetenz der Leser zu +# steigern. Gelegentlich packe ich sogar einen handfesten Buffer +# Overflow oder eine Format String Vulnerability zwischen die anderen +# Codezeilen und schreibe das auch nicht dran. + +# This script takes a minetest log with at least INFO log level and +# outputs the MINETEST network protocol packet count per second. + +# To collect such a log file of minetest running for 10 minutes, run: +# timeout 600 minetest --info >log.txt 2>&1 >/dev/null + +# To get packet counts from that file, run: +# ./analyze-packet-spam "${TEMPFILE}" + +TIMESTAMP_START=$( <"${TEMPFILE}" head -n1 |cut -d' ' -f1 ) +TIMESTAMP_END=$( <"${TEMPFILE}" tail -n1 |cut -d' ' -f1 ) +DURATION=$(( 30 + ${TIMESTAMP_END} - ${TIMESTAMP_START} )) + +PACKET_NAME_SEEN='' +<"${TEMPFILE}" tac \ + |while read _ PACKET_NAME PACKET_COUNT; do + case "${PACKET_NAME_SEEN}" in + *"${PACKET_NAME}"*) + ;; + *) + PACKET_COUNT_PER_SECOND=$( + printf '1k %s %s /p' "${PACKET_COUNT}" "${DURATION}" \ + |dc + ) + printf '%s\t%s\n' "${PACKET_COUNT_PER_SECOND}" "${PACKET_NAME}" + PACKET_NAME_SEEN="${PACKET_NAME_SEEN} ${PACKET_NAME}" + ;; + esac + done + +unlink "${TEMPFILE}" From 148575a05b8d0204155e0d5ce4cf1dcd45490f19 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 16:28:13 +0100 Subject: [PATCH 364/720] Remove unused hud_manager.hud_exists function --- mods/HUD/mcl_experience/init.lua | 9 --------- 1 file changed, 9 deletions(-) diff --git a/mods/HUD/mcl_experience/init.lua b/mods/HUD/mcl_experience/init.lua index e514ffc19..b7175ccfb 100644 --- a/mods/HUD/mcl_experience/init.lua +++ b/mods/HUD/mcl_experience/init.lua @@ -116,15 +116,6 @@ function hud_manager.change_hud(data) end end --- gets if hud exists -function hud_manager.hud_exists(player,hud_name) - local name = player:get_player_name() - if player_huds[name] and player_huds[name][hud_name] then - return true - else - return false - end -end ------------------- -- saves specific users data for when they relog From a4e73886d566d2718ed6700731dd57198faa5744 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 19:36:57 +0100 Subject: [PATCH 365/720] Rework XP API --- mods/ENTITIES/mcl_item_entity/init.lua | 4 +- .../api/mob_functions/death_logic.lua | 4 +- mods/ENTITIES/mobs_mc/ender_dragon.lua | 2 +- mods/HUD/mcl_experience/bottle.lua | 63 ++ mods/HUD/mcl_experience/command.lua | 39 + mods/HUD/mcl_experience/init.lua | 723 ++++-------------- mods/HUD/mcl_experience/orb.lua | 220 ++++++ .../{experience.ogg => mcl_experience.ogg} | Bin ...vel_up.ogg => mcl_experience_level_up.ogg} | Bin ...erience_bar.png => mcl_experience_bar.png} | Bin ....png => mcl_experience_bar_background.png} | Bin ...erience_orb.png => mcl_experience_orb.png} | Bin mods/ITEMS/mcl_enchanting/enchantments.lua | 43 ++ mods/ITEMS/mcl_enchanting/engine.lua | 6 +- mods/ITEMS/mcl_fishing/init.lua | 6 +- mods/ITEMS/mcl_furnaces/init.lua | 4 +- mods/ITEMS/mcl_mobspawners/init.lua | 2 +- 17 files changed, 538 insertions(+), 578 deletions(-) create mode 100644 mods/HUD/mcl_experience/bottle.lua create mode 100644 mods/HUD/mcl_experience/command.lua create mode 100644 mods/HUD/mcl_experience/orb.lua rename mods/HUD/mcl_experience/sounds/{experience.ogg => mcl_experience.ogg} (100%) rename mods/HUD/mcl_experience/sounds/{level_up.ogg => mcl_experience_level_up.ogg} (100%) rename mods/HUD/mcl_experience/textures/{experience_bar.png => mcl_experience_bar.png} (100%) rename mods/HUD/mcl_experience/textures/{experience_bar_background.png => mcl_experience_bar_background.png} (100%) rename mods/HUD/mcl_experience/textures/{experience_orb.png => mcl_experience_orb.png} (100%) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index cfd141f04..678f8e2b7 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -290,10 +290,10 @@ function minetest.handle_node_drops(pos, drops, digger) end end - if digger and mcl_experience.throw_experience and not silk_touch_drop then + if digger and mcl_experience.throw_xp and not silk_touch_drop then local experience_amount = minetest.get_item_group(dug_node.name,"xp") if experience_amount > 0 then - mcl_experience.throw_experience(pos, experience_amount) + mcl_experience.throw_xp(pos, experience_amount) end end 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 45e46d3db..27d0030ea 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua @@ -122,7 +122,7 @@ mobs.death_logic = function(self, dtime) 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)) + mcl_experience.throw_xp(self.object:get_pos(), math_random(self.xp_min, self.xp_max)) self.object:remove() return end @@ -155,4 +155,4 @@ mobs.death_logic = function(self, dtime) if self.pause_timer <= 0 then mobs.set_velocity(self,0) end -end \ No newline at end of file +end diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index bafb3f84a..3634e20f4 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -103,7 +103,7 @@ mobs:register_mob("mobs_mc:enderdragon", { mcl_portals.spawn_gateway_portal() mcl_structures.call_struct(self._portal_pos, "end_exit_portal_open") if self._initial then - mcl_experience.throw_experience(pos, 11500) -- 500 + 11500 = 12000 + mcl_experience.throw_xp(pos, 11500) -- 500 + 11500 = 12000 minetest.set_node(vector.add(self._portal_pos, vector.new(3, 5, 3)), {name = mobs_mc.items.dragon_egg}) end end diff --git a/mods/HUD/mcl_experience/bottle.lua b/mods/HUD/mcl_experience/bottle.lua new file mode 100644 index 000000000..10e42a57d --- /dev/null +++ b/mods/HUD/mcl_experience/bottle.lua @@ -0,0 +1,63 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +minetest.register_entity("mcl_experience:bottle",{ + textures = {"mcl_experience_bottle.png"}, + hp_max = 1, + visual_size = {x = 0.35, y = 0.35}, + collisionbox = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1}, + pointable = false, + on_step = function(self, dtime) + local pos = self.object:get_pos() + local node = minetest.get_node(pos) + local n = node.name + if n ~= "air" and n ~= "mcl_portals:portal" and n ~= "mcl_portals:portal_end" and minetest.get_item_group(n, "liquid") == 0 then + minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1}) + mcl_experience.throw_xp(pos, math.random(3, 11)) + minetest.add_particlespawner({ + amount = 50, + time = 0.1, + minpos = vector.add(pos, vector.new(-0.1, 0.5, -0.1)), + maxpos = vector.add(pos, vector.new( 0.1, 0.6, 0.1)), + minvel = vector.new(-2, 0, -2), + maxvel = vector.new( 2, 2, 2), + minacc = vector.new(0, 0, 0), + maxacc = vector.new(0, 0, 0), + minexptime = 0.5, + maxexptime = 1.25, + minsize = 1, + maxsize = 2, + collisiondetection = true, + vertical = false, + texture = "mcl_particles_effect.png^[colorize:blue:127", + }) + self.object:remove() + end + end, +}) + +local function throw_xp_bottle(pos, dir, velocity) + minetest.sound_play("mcl_throwing_throw", {pos = pos, gain = 0.4, max_hear_distance = 16}, true) + local obj = minetest.add_entity(pos, "mcl_experience:bottle") + obj:set_velocity(vector.multiply(dir, velocity)) + local acceleration = vector.multiply(dir, -3) + acceleration.y = -9.81 + obj:set_acceleration(acceleration) +end + +minetest.register_craftitem("mcl_experience:bottle", { + description = "Bottle o' Enchanting", + inventory_image = "mcl_experience_bottle.png", + wield_image = "mcl_experience_bottle.png", + stack_max = 64, + on_use = function(itemstack, placer, pointed_thing) + throw_xp_bottle(vector.add(placer:get_pos(), vector.new(0, 1.5, 0)), placer:get_look_dir(), 10) + if not minetest.is_creative_enabled(placer:get_player_name()) then + itemstack:take_item() + end + return itemstack + end, + _on_dispense = function(_, pos, _, _, dir) + throw_xp_bottle(vector.add(pos, vector.multiply(dir, 0.51)), dir, 10) + end +}) + diff --git a/mods/HUD/mcl_experience/command.lua b/mods/HUD/mcl_experience/command.lua new file mode 100644 index 000000000..040031b5a --- /dev/null +++ b/mods/HUD/mcl_experience/command.lua @@ -0,0 +1,39 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +minetest.register_chatcommand("xp", { + params = S("[[] ]"), + description = S("Gives a player some XP"), + privs = {server=true}, + func = function(name, params) + local player, xp = nil, 1000 + local P, i = {}, 0 + for str in string.gmatch(params, "([^ ]+)") do + i = i + 1 + P[i] = str + end + if i > 2 then + return false, S("Error: Too many parameters!") + end + if i > 0 then + xp = tonumber(P[i]) + end + if i < 2 then + player = minetest.get_player_by_name(name) + end + if i == 2 then + player = minetest.get_player_by_name(P[1]) + end + + if not xp then + return false, S("Error: Incorrect value of XP") + end + + if not player then + return false, S("Error: Player not found") + end + + mcl_experience.add_xp(player, xp) + + return true, S("Added @1 XP to @2, total: @3, experience level: @4", tostring(xp), player:get_player_name(), tostring(mcl_experience.get_xp(player)), tostring(mcl_experience.get_level(player))) + end, +}) diff --git a/mods/HUD/mcl_experience/init.lua b/mods/HUD/mcl_experience/init.lua index b7175ccfb..aea805fa2 100644 --- a/mods/HUD/mcl_experience/init.lua +++ b/mods/HUD/mcl_experience/init.lua @@ -1,632 +1,227 @@ -local S = minetest.get_translator(minetest.get_current_modname()) - -mcl_experience = {} - -local vector = vector -local math = math -local string = string - -local pool = {} -local registered_nodes -local max_xp = 2^31-1 -local max_orb_age = 300 -- seconds - -local gravity = {x = 0, y = -((tonumber(minetest.settings:get("movement_gravity"))) or 9.81), z = 0} -local size_min, size_max = 20, 59 -- percents -local delta_size = size_max - size_min -local size_to_xp = { - {-32768, 2}, -- 1 - { 3, 6}, -- 2 - { 7, 16}, -- 3 - { 17, 36}, -- 4 - { 37, 72}, -- 5 - { 73, 148}, -- 6 - { 149, 306}, -- 7 - { 307, 616}, -- 8 - { 617, 1236}, -- 9 - { 1237, 2476}, --10 - { 2477, 32767} --11 +mcl_experience = { + on_add_xp = {}, } -local function xp_to_size(xp) - local i, l = 1, #size_to_xp - while (xp > size_to_xp[i][1]) and (i < l) do - i = i + 1 - end - return ((i-1) / (l-1) * delta_size + size_min)/100 -end +local modpath = minetest.get_modpath(minetest.get_current_modname()) -minetest.register_on_mods_loaded(function() - registered_nodes = minetest.registered_nodes -end) +dofile(modpath .. "/command.lua") +dofile(modpath .. "/orb.lua") +dofile(modpath .. "/bottle.lua") -local function load_data(player) - local name = player:get_player_name() - pool[name] = {} - local temp_pool = pool[name] - local meta = player:get_meta() - temp_pool.xp = meta:get_int("xp") or 0 - temp_pool.level = mcl_experience.xp_to_level(temp_pool.xp) - temp_pool.bar, temp_pool.bar_step, temp_pool.xp_next_level = mcl_experience.xp_to_bar(temp_pool.xp, temp_pool.level) - temp_pool.last_time= minetest.get_us_time()/1000000 -end +-- local storage --- saves data to be utilized on next login -local function save_data(player) - local name = player:get_player_name() - local temp_pool = pool[name] - local meta = player:get_meta() - meta:set_int("xp", temp_pool.xp) - pool[name] = nil -end +local hud_bars = {} +local hud_levels = {} +local caches = {} -local player_huds = {} -- the list of players hud lists (3d array) -hud_manager = {} -- hud manager class +-- helpers --- terminate the player's list on leave -minetest.register_on_leaveplayer(function(player) - local name = player:get_player_name() - player_huds[name] = nil -end) - --- create instance of new hud -function hud_manager.add_hud(player,hud_name,def) - local name = player:get_player_name() - if minetest.is_creative_enabled(name) then - return - end - local local_hud = player:hud_add({ - hud_elem_type = def.hud_elem_type, - position = def.position, - text = def.text, - text2 = def.text2, - number = def.number, - item = def.item, - direction = def.direction, - size = def.size, - offset = def.offset, - z_index = def.z_index, - alignment = def.alignment, - scale = def.scale, - }) - -- create new 3d array here - -- depends.txt is not needed - -- with it here - if not player_huds[name] then - player_huds[name] = {} - end - - player_huds[name][hud_name] = local_hud -end - --- delete instance of hud -function hud_manager.remove_hud(player,hud_name) - local name = player:get_player_name() - if player_huds[name] and player_huds[name][hud_name] then - player:hud_remove(player_huds[name][hud_name]) - player_huds[name][hud_name] = nil - end -end - --- change element of hud -function hud_manager.change_hud(data) - local name = data.player:get_player_name() - if player_huds[name] and player_huds[name][data.hud_name] then - data.player:hud_change(player_huds[name][data.hud_name], data.element, data.data) - end -end - -------------------- - --- saves specific users data for when they relog -minetest.register_on_leaveplayer(function(player) - save_data(player) -end) - --- is used for shutdowns to save all data -local function save_all() - for name,_ in pairs(pool) do - local player = minetest.get_player_by_name(name) - if player then - save_data(player) - end - end -end - --- save all data to mod storage on shutdown -minetest.register_on_shutdown(function() - save_all() -end) - - -function mcl_experience.get_player_xp_level(player) - local name = player:get_player_name() - return pool[name].level -end - -function mcl_experience.set_player_xp_level(player,level) - local name = player:get_player_name() - if level == pool[name].level then - return - end - pool[name].level = level - pool[name].xp, pool[name].bar_step, pool[name].xp_next_level = mcl_experience.bar_to_xp(pool[name].bar, level) - hud_manager.change_hud({player = player, hud_name = "xp_level", element = "text", data = tostring(level)}) - -- we may don't update the bar -end - -local name -local temp_pool -minetest.register_on_joinplayer(function(player) - - load_data(player) - - name = player:get_player_name() - temp_pool = pool[name] - - hud_manager.add_hud(player,"experience_bar", - { - hud_elem_type = "image", - name = "experience bar", - text = "experience_bar_background.png^[lowpart:" .. math.floor(temp_pool.bar / 36 * 100) .. ":experience_bar.png^[transformR270", - position = {x=0.5, y=1}, - offset = {x = (-9 * 28) - 3, y = -(48 + 24 + 16 - 5)}, - scale = {x = 2.8, y = 3.0}, - alignment = { x = 1, y = 1 }, - z_index = 11, - }) - - hud_manager.add_hud(player,"xp_level", - { - hud_elem_type = "text", position = {x=0.5, y=1}, - name = "xp_level", text = tostring(temp_pool.level), - number = 0x80FF20, - offset = {x = 0, y = -(48 + 24 + 24)}, - z_index = 12, - }) -end) - -function mcl_experience.xp_to_level(xp) +local function xp_to_level(xp) local xp = xp or 0 local a, b, c, D + if xp > 1507 then - a, b, c = 4.5, -162.5, 2220-xp + a, b, c = 4.5, -162.5, 2220 - xp elseif xp > 352 then - a, b, c = 2.5, -40.5, 360-xp + a, b, c = 2.5, -40.5, 360 - xp else a, b, c = 1, 6, -xp end - D = b*b-4*a*c + + D = b * b - 4 * a * c + if D == 0 then - return math.floor(-b/2/a) - elseif D > 0 then - local v1, v2 = -b/2/a, math.sqrt(D)/2/a - return math.floor((math.max(v1-v2, v1+v2))) + return math.floor(-b / 2 / a) + elseif D > 0 then + local v1, v2 = -b / 2 / a, math.sqrt(D) / 2 / a + return math.floor(math.max(v1 - v2, v1 + v2)) end + return 0 end -function mcl_experience.level_to_xp(level) - if (level >= 1 and level <= 16) then +local function level_to_xp(level) + if level >= 1 and level <= 16 then return math.floor(math.pow(level, 2) + 6 * level) - elseif (level >= 17 and level <= 31) then + elseif level >= 17 and level <= 31 then return math.floor(2.5 * math.pow(level, 2) - 40.5 * level + 360) elseif level >= 32 then - return math.floor(4.5 * math.pow(level, 2) - 162.5 * level + 2220); + return math.floor(4.5 * math.pow(level, 2) - 162.5 * level + 2220) end + return 0 end -function mcl_experience.xp_to_bar(xp, level) - local level = level or mcl_experience.xp_to_level(xp) - local xp_this_level = mcl_experience.level_to_xp(level) - local xp_next_level = mcl_experience.level_to_xp(level+1) - local bar_step = 36 / (xp_next_level-xp_this_level) - local bar = (xp-xp_this_level) * bar_step - return bar, bar_step, xp_next_level +local function calculate_bounds(level) + return level_to_xp(level), level_to_xp(level + 1) end -function mcl_experience.bar_to_xp(bar, level) - local xp_this_level = mcl_experience.level_to_xp(level) - local xp_next_level = mcl_experience.level_to_xp(level+1) - local bar_step = 36 / (xp_next_level-xp_this_level) - local xp = xp_this_level + math.floor(bar/36*(xp_next_level-xp_this_level)) - return xp, bar_step, xp_next_level +local function xp_to_bar(xp, level) + local xp_min, xp_max = calculate_bounds(level) + + return (xp - xp_min) / (xp_max - xp_min) end -function mcl_experience.add_experience(player, experience) - local name = player:get_player_name() - local temp_pool = pool[name] +local function bar_to_xp(bar, level) + local xp_min, xp_max = calculate_bounds(level) - local inv = player:get_inventory() - local candidates = { - {list = "main", index = player:get_wield_index()}, - {list = "armor", index = 2}, - {list = "armor", index = 3}, - {list = "armor", index = 4}, - {list = "armor", index = 5}, - } - local final_candidates = {} - for _, can in ipairs(candidates) do - local stack = inv:get_stack(can.list, can.index) - local wear = stack:get_wear() - if mcl_enchanting.has_enchantment(stack, "mending") and wear > 0 then - can.stack = stack - can.wear = wear - table.insert(final_candidates, can) - end - end - 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 uses = mcl_util.calculate_durability(stack) - local multiplier = 2 * 65535 / uses - local repair = experience * multiplier - local new_wear = wear - repair - if new_wear < 0 then - experience = math.floor(-new_wear / multiplier + 0.5) - new_wear = 0 - else - experience = 0 - end - stack:set_wear(math.floor(new_wear)) - inv:set_stack(list, index, stack) - end + return xp_min + bar * (xp_max - xp_min) +end - local old_bar, old_xp, old_level = temp_pool.bar, temp_pool.xp, temp_pool.level - temp_pool.xp = math.min(math.max(temp_pool.xp + experience, 0), max_xp) +local function get_time() + return minetest.get_us_time() / 1000000 +end - if (temp_pool.xp < temp_pool.xp_next_level) and (temp_pool.xp >= old_xp) then - temp_pool.bar = temp_pool.bar + temp_pool.bar_step * experience - else - temp_pool.level = mcl_experience.xp_to_level(temp_pool.xp) - temp_pool.bar, temp_pool.bar_step, temp_pool.xp_next_level = mcl_experience.xp_to_bar(temp_pool.xp, temp_pool.level) - end +-- api - if old_bar ~= temp_pool.bar then - hud_manager.change_hud({player = player, hud_name = "experience_bar", element = "text", data = "experience_bar_background.png^[lowpart:" .. math.floor(temp_pool.bar / 36 * 100) .. ":experience_bar.png^[transformR270",}) - end +function mcl_experience.get_level(player) + return caches[player].level +end - if experience > 0 and minetest.get_us_time()/1000000 - temp_pool.last_time > 0.01 then - if old_level ~= temp_pool.level then - minetest.sound_play("level_up",{gain=0.2,to_player = name}) - temp_pool.last_time = minetest.get_us_time()/1000000 + 0.2 - else - minetest.sound_play("experience",{gain=0.1,to_player = name,pitch=math.random(75,99)/100}) - temp_pool.last_time = minetest.get_us_time()/1000000 - end - end +function mcl_experience.set_level(player, level) + local cache = caches[player] - if old_level ~= temp_pool.level then - hud_manager.change_hud({player = player, hud_name = "xp_level", element = "text", data = tostring(temp_pool.level)}) + if level ~= cache.level then + mcl_experience.set_xp(player, math.floor(bar_to_xp(xp_to_bar(mcl_experience.get_xp(player), cache.level), level))) end end ---reset player level -local name -local temp_pool -local xp_amount -minetest.register_on_dieplayer(function(player) - if minetest.settings:get_bool("mcl_keepInventory", false) then - return - end +function mcl_experience.get_xp(player) + return player:get_meta():get_int("xp") +end - name = player:get_player_name() - temp_pool = pool[name] - xp_amount = temp_pool.xp +function mcl_experience.set_xp(player, xp) + player:get_meta():set_int("xp", xp) - temp_pool.xp = 0 - temp_pool.level = 0 - temp_pool.bar, temp_pool.bar_step, temp_pool.xp_next_level = mcl_experience.xp_to_bar(temp_pool.xp, temp_pool.level) + mcl_experience.update(player) +end - hud_manager.change_hud({player = player, hud_name = "xp_level", element = "text", data = tostring(temp_pool.level)}) - hud_manager.change_hud({player = player, hud_name = "experience_bar", element = "text", data = "experience_bar_background.png^[lowpart:" .. math.floor(temp_pool.bar / 36 * 100) .. ":experience_bar.png^[transformR270",}) +function mcl_experience.add_xp(player, xp) + for _, cb in ipairs(mcl_experience.on_add_xp) do + xp = cb.func(player, xp) or xp - mcl_experience.throw_experience(player:get_pos(), xp_amount) -end) - -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 -local function xp_step(self, dtime) - --if item set to be collected then only execute go to player - if self.collected == true then - if not self.collector then - self.collected = false - return - end - collector = minetest.get_player_by_name(self.collector) - if collector and collector:get_hp() > 0 and vector.distance(self.object:get_pos(),collector:get_pos()) < 7.25 then - self.object:set_acceleration(vector.new(0,0,0)) - self.disable_physics(self) - --get the variables - pos = self.object:get_pos() - pos2 = collector:get_pos() - - player_velocity = collector:get_velocity() or collector:get_player_velocity() - - pos2.y = pos2.y + 0.8 - - direction = vector.direction(pos,pos2) - distance = vector.distance(pos2,pos) - multiplier = distance - if multiplier < 1 then - multiplier = 1 - end - goal = vector.multiply(direction,multiplier) - currentvel = self.object:get_velocity() - - if distance > 1 then - multiplier = 20 - distance - velocity = vector.multiply(direction,multiplier) - goal = velocity - acceleration = vector.new(goal.x-currentvel.x,goal.y-currentvel.y,goal.z-currentvel.z) - self.object:add_velocity(vector.add(acceleration,player_velocity)) - elseif distance < 0.8 then - mcl_experience.add_experience(collector, self._xp) - self.object:remove() - end - return - else - self.collector = nil - self.enable_physics(self) + if xp == 0 then + break end end + local cache = caches[player] + local old_level = cache.level - self.age = self.age + dtime - if self.age > max_orb_age then - self.object:remove() - return - end + mcl_experience.set_xp(player, mcl_experience.get_xp(player) + xp) - pos = self.object:get_pos() + local current_time = get_time() - if pos then - node = minetest.get_node_or_nil({ - x = pos.x, - y = pos.y -0.25, - z = pos.z - }) - else - return - end + if current_time - cache.last_time > 0.01 then + local name = player:get_player_name() - -- Remove nodes in 'ignore' - if node and node.name == "ignore" then - self.object:remove() - return - end - - if not self.physical_state then - return -- Don't do anything - end - - -- Slide on slippery nodes - vel = self.object:get_velocity() - def = node and registered_nodes[node.name] - is_moving = (def and not def.walkable) or - vel.x ~= 0 or vel.y ~= 0 or vel.z ~= 0 - is_slippery = false - - if def and def.walkable then - slippery = minetest.get_item_group(node.name, "slippery") - is_slippery = slippery ~= 0 - if is_slippery and (math.abs(vel.x) > 0.2 or math.abs(vel.z) > 0.2) then - -- Horizontal deceleration - slip_factor = 4.0 / (slippery + 4) - self.object:set_acceleration({ - x = -vel.x * slip_factor, - y = 0, - z = -vel.z * slip_factor + if old_level == cache.level then + minetest.sound_play("mcl_experience", { + to_player = name, + gain = 0.1, + pitch = math.random(75, 99) / 100, }) - elseif vel.y == 0 then - is_moving = false + + cache.last_time = current_time + else + minetest.sound_play("mcl_experience_level_up", { + to_player = name, + gain = 0.2, + }) + + cache.last_time = current_time + 0.2 end end - - if self.moving_state == is_moving and self.slippery_state == is_slippery then - -- Do not update anything until the moving state changes - return - end - - self.moving_state = is_moving - self.slippery_state = is_slippery - - if is_moving then - self.object:set_acceleration(gravity) - else - self.object:set_acceleration({x = 0, y = 0, z = 0}) - self.object:set_velocity({x = 0, y = 0, z = 0}) - end end -minetest.register_entity("mcl_experience:orb", { - initial_properties = { - hp_max = 1, - physical = true, - collide_with_objects = false, - collisionbox = {-0.2, -0.2, -0.2, 0.2, 0.2, 0.2}, - visual = "sprite", - visual_size = {x = 0.4, y = 0.4}, - textures = {name="experience_orb.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0}}, - spritediv = {x = 1, y = 14}, - initial_sprite_basepos = {x = 0, y = 0}, - is_visible = true, - pointable = false, - static_save = false, - }, - moving_state = true, - slippery_state = false, - physical_state = true, - -- Item expiry - age = 0, - -- Pushing item out of solid nodes - force_out = nil, - force_out_start = nil, - --Collection Variables - collectable = false, - try_timer = 0, - collected = false, - delete_timer = 0, - radius = 4, - - - on_activate = function(self, staticdata, dtime_s) - self.object:set_velocity(vector.new( - math.random(-2,2)*math.random(), - math.random(2,5), - math.random(-2,2)*math.random() - )) - self.object:set_armor_groups({immortal = 1}) - self.object:set_velocity({x = 0, y = 2, z = 0}) - self.object:set_acceleration(gravity) - local xp = tonumber(staticdata) - self._xp = xp - size = xp_to_size(xp) - self.object:set_properties({ - visual_size = {x = size, y = size}, - glow = 14, - }) - self.object:set_sprite({x=1,y=math.random(1,14)}, 14, 0.05, false) - end, - - enable_physics = function(self) - if not self.physical_state then - self.physical_state = true - self.object:set_properties({physical = true}) - self.object:set_velocity({x=0, y=0, z=0}) - self.object:set_acceleration(gravity) - end - end, - - disable_physics = function(self) - if self.physical_state then - self.physical_state = false - self.object:set_properties({physical = false}) - self.object:set_velocity({x=0, y=0, z=0}) - self.object:set_acceleration({x=0, y=0, z=0}) - end - end, - on_step = function(self, dtime) - xp_step(self, dtime) - end, -}) - -minetest.register_chatcommand("xp", { - params = S("[[] ]"), - description = S("Gives a player some XP"), - privs = {server=true}, - func = function(name, params) - local player, xp = nil, 1000 - local P, i = {}, 0 - for str in string.gmatch(params, "([^ ]+)") do - i = i + 1 - P[i] = str - end - if i > 2 then - return false, S("Error: Too many parameters!") - end - if i > 0 then - xp = tonumber(P[i]) - end - if i < 2 then - player = minetest.get_player_by_name(name) - end - if i == 2 then - player = minetest.get_player_by_name(P[1]) - end - if not xp then - return false, S("Error: Incorrect value of XP") - end - if not player then - return false, S("Error: Player not found") - end - mcl_experience.add_experience(player, xp) - local playername = player:get_player_name() - minetest.chat_send_player(name, S("Added @1 XP to @2, total: @3, experience level: @4", tostring(xp), playername, tostring(pool[playername].xp), tostring(pool[playername].level))) - end, -}) - -function mcl_experience.throw_experience(pos, amount) +function mcl_experience.throw_xp(pos, total_xp) local i, j = 0, 0 - local obj, xp - while i < amount and j < 100 do - xp = math.min(math.random(1, math.min(32767, amount-math.floor(i/2))), amount-i) - obj = minetest.add_entity(pos, "mcl_experience:orb", tostring(xp)) + + while i < total_xp and j < 100 do + local xp = math.min(math.random(1, math.min(32767, total_xp - math.floor(i / 2))), total_xp - i) + local obj = minetest.add_entity(pos, "mcl_experience:orb", tostring(xp)) + if not obj then return false end - obj:set_velocity({ - x=math.random(-2,2)*math.random(), - y=math.random(2,5), - z=math.random(-2,2)*math.random() - }) + + obj:set_velocity(vector.new( + math.random(-2, 2) * math.random(), + math.random( 2, 5), + math.random(-2, 2) * math.random() + )) + i = i + xp j = j + 1 end end -minetest.register_entity("mcl_experience:bottle",{ - textures = {"mcl_experience_bottle.png"}, - hp_max = 1, - visual_size = {x = 0.35, y = 0.35}, - collisionbox = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1}, - pointable = false, - on_step = function(self, dtime) - local pos = self.object:get_pos() - local node = minetest.get_node(pos) - local n = node.name - if n ~= "air" and n ~= "mcl_portals:portal" and n ~= "mcl_portals:portal_end" and minetest.get_item_group(n, "liquid") == 0 then - minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1}) - mcl_experience.throw_experience(pos, math.random(3, 11)) - minetest.add_particlespawner({ - amount = 50, - time = 0.1, - minpos = vector.add(pos, vector.new(-0.1, 0.5, -0.1)), - maxpos = vector.add(pos, vector.new( 0.1, 0.6, 0.1)), - minvel = vector.new(-2, 0, -2), - maxvel = vector.new( 2, 2, 2), - minacc = vector.new(0, 0, 0), - maxacc = vector.new(0, 0, 0), - minexptime = 0.5, - maxexptime = 1.25, - minsize = 1, - maxsize = 2, - collisiondetection = true, - vertical = false, - texture = "mcl_particles_effect.png^[colorize:blue:127", - }) - self.object:remove() - end - end, -}) +function mcl_experience.update(player) + local xp = mcl_experience.get_xp(player) + local cache = caches[player] -local function throw_xp_bottle(pos, dir, velocity) - minetest.sound_play("mcl_throwing_throw", {pos = pos, gain = 0.4, max_hear_distance = 16}, true) - local obj = minetest.add_entity(pos, "mcl_experience:bottle") - obj:set_velocity(vector.multiply(dir, velocity)) - local acceleration = vector.multiply(dir, -3) - acceleration.y = -9.81 - obj:set_acceleration(acceleration) + cache.level = xp_to_level(xp) + + if not minetest.is_creative_enabled(player:get_player_name()) then + player:hud_change(hud_bars[player], "text", "mcl_experience_bar_background.png^[lowpart:" + .. math.floor(math.floor(xp_to_bar(xp, cache.level) * 18) / 18 * 100) + .. ":mcl_experience_bar.png^[transformR270" + ) + + if cache.level == 0 then + player:hud_change(hud_levels[player], "text", "") + else + player:hud_change(hud_levels[player], "text", tostring(cache.level)) + end + end end -minetest.register_craftitem("mcl_experience:bottle", { - description = "Bottle o' Enchanting", - inventory_image = "mcl_experience_bottle.png", - wield_image = "mcl_experience_bottle.png", - stack_max = 64, - on_use = function(itemstack, placer, pointed_thing) - throw_xp_bottle(vector.add(placer:get_pos(), vector.new(0, 1.5, 0)), placer:get_look_dir(), 10) - if not minetest.is_creative_enabled(placer:get_player_name()) then - itemstack:take_item() - end - return itemstack - end, - _on_dispense = function(_, pos, _, _, dir) - throw_xp_bottle(vector.add(pos, vector.multiply(dir, 0.51)), dir, 10) +function mcl_experience.register_on_add_xp(func, priority) + table.insert(mcl_experience.on_add_xp, {func = func, priority = priority or 0}) +end + +-- callbacks + +minetest.register_on_joinplayer(function(player) + caches[player] = { + last_time = get_time(), + } + + if not minetest.is_creative_enabled(player:get_player_name()) then + hud_bars[player] = player:hud_add({ + hud_elem_type = "image", + position = {x = 0.5, y = 1}, + offset = {x = (-9 * 28) - 3, y = -(48 + 24 + 16 - 5)}, + scale = {x = 2.8, y = 3.0}, + alignment = {x = 1, y = 1}, + z_index = 11, + }) + + hud_levels[player] = player:hud_add({ + hud_elem_type = "text", + position = {x = 0.5, y = 1}, + number = 0x80FF20, + offset = {x = 0, y = -(48 + 24 + 24)}, + z_index = 12, + }) end -}) + + mcl_experience.update(player) +end) + +minetest.register_on_leaveplayer(function(player) + hud_bars[player] = nil + hud_levels[player] = nil + caches[player] = nil +end) + +minetest.register_on_dieplayer(function(player) + if not minetest.settings:get_bool("mcl_keepInventory", false) then + mcl_experience.throw_xp(player:get_pos(), mcl_experience.get_xp(player)) + mcl_experience.set_xp(player, 0) + end +end) + +minetest.register_on_mods_loaded(function() + table.sort(mcl_experience.on_add_xp, function(a, b) return a.priority < b.priority end) +end) diff --git a/mods/HUD/mcl_experience/orb.lua b/mods/HUD/mcl_experience/orb.lua new file mode 100644 index 000000000..9aecce00d --- /dev/null +++ b/mods/HUD/mcl_experience/orb.lua @@ -0,0 +1,220 @@ +local size_min, size_max = 20, 59 +local delta_size = size_max - size_min + +local size_to_xp = { + {-32768, 2}, -- 1 + { 3, 6}, -- 2 + { 7, 16}, -- 3 + { 17, 36}, -- 4 + { 37, 72}, -- 5 + { 73, 148}, -- 6 + { 149, 306}, -- 7 + { 307, 616}, -- 8 + { 617, 1236}, -- 9 + { 1237, 2476}, -- 10 + { 2477, 32767} -- 11 +} + +local function xp_to_size(xp) + local i, l = 1, #size_to_xp + + while xp > size_to_xp[i][1] and i < l do + i = i + 1 + end + + return ((i - 1) / (l - 1) * delta_size + size_min) / 100 +end + +local max_orb_age = 300 -- seconds +local gravity = vector.new(0, -((tonumber(minetest.settings:get("movement_gravity"))) or 9.81), 0) + +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 +local function xp_step(self, dtime) + --if item set to be collected then only execute go to player + if self.collected == true then + if not self.collector then + self.collected = false + return + end + collector = minetest.get_player_by_name(self.collector) + if collector and collector:get_hp() > 0 and vector.distance(self.object:get_pos(),collector:get_pos()) < 7.25 then + self.object:set_acceleration(vector.new(0,0,0)) + self.disable_physics(self) + --get the variables + pos = self.object:get_pos() + pos2 = collector:get_pos() + + player_velocity = collector:get_velocity() or collector:get_player_velocity() + + pos2.y = pos2.y + 0.8 + + direction = vector.direction(pos,pos2) + distance = vector.distance(pos2,pos) + multiplier = distance + if multiplier < 1 then + multiplier = 1 + end + goal = vector.multiply(direction,multiplier) + currentvel = self.object:get_velocity() + + if distance > 1 then + multiplier = 20 - distance + velocity = vector.multiply(direction,multiplier) + goal = velocity + acceleration = vector.new(goal.x-currentvel.x,goal.y-currentvel.y,goal.z-currentvel.z) + self.object:add_velocity(vector.add(acceleration,player_velocity)) + elseif distance < 0.8 then + mcl_experience.add_xp(collector, self._xp) + self.object:remove() + end + return + else + self.collector = nil + self.enable_physics(self) + end + end + + + self.age = self.age + dtime + if self.age > max_orb_age then + self.object:remove() + return + end + + pos = self.object:get_pos() + + if pos then + node = minetest.get_node_or_nil({ + x = pos.x, + y = pos.y -0.25, + z = pos.z + }) + else + return + end + + -- Remove nodes in 'ignore' + if node and node.name == "ignore" then + self.object:remove() + return + end + + if not self.physical_state then + return -- Don't do anything + end + + -- Slide on slippery nodes + vel = self.object:get_velocity() + def = node and minetest.registered_nodes[node.name] + is_moving = (def and not def.walkable) or + vel.x ~= 0 or vel.y ~= 0 or vel.z ~= 0 + is_slippery = false + + if def and def.walkable then + slippery = minetest.get_item_group(node.name, "slippery") + is_slippery = slippery ~= 0 + if is_slippery and (math.abs(vel.x) > 0.2 or math.abs(vel.z) > 0.2) then + -- Horizontal deceleration + slip_factor = 4.0 / (slippery + 4) + self.object:set_acceleration({ + x = -vel.x * slip_factor, + y = 0, + z = -vel.z * slip_factor + }) + elseif vel.y == 0 then + is_moving = false + end + end + + if self.moving_state == is_moving and self.slippery_state == is_slippery then + -- Do not update anything until the moving state changes + return + end + + self.moving_state = is_moving + self.slippery_state = is_slippery + + if is_moving then + self.object:set_acceleration(gravity) + else + self.object:set_acceleration({x = 0, y = 0, z = 0}) + self.object:set_velocity({x = 0, y = 0, z = 0}) + end +end + +minetest.register_entity("mcl_experience:orb", { + initial_properties = { + hp_max = 1, + physical = true, + collide_with_objects = false, + collisionbox = {-0.2, -0.2, -0.2, 0.2, 0.2, 0.2}, + visual = "sprite", + visual_size = {x = 0.4, y = 0.4}, + textures = {name="mcl_experience_orb.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0}}, + spritediv = {x = 1, y = 14}, + initial_sprite_basepos = {x = 0, y = 0}, + is_visible = true, + pointable = false, + static_save = false, + }, + moving_state = true, + slippery_state = false, + physical_state = true, + -- Item expiry + age = 0, + -- Pushing item out of solid nodes + force_out = nil, + force_out_start = nil, + --Collection Variables + collectable = false, + try_timer = 0, + collected = false, + delete_timer = 0, + radius = 4, + + + on_activate = function(self, staticdata, dtime_s) + self.object:set_velocity(vector.new( + math.random(-2,2)*math.random(), + math.random(2,5), + math.random(-2,2)*math.random() + )) + self.object:set_armor_groups({immortal = 1}) + self.object:set_velocity({x = 0, y = 2, z = 0}) + self.object:set_acceleration(gravity) + local xp = tonumber(staticdata) + self._xp = xp + size = xp_to_size(xp) + self.object:set_properties({ + visual_size = {x = size, y = size}, + glow = 14, + }) + self.object:set_sprite({x=1,y=math.random(1,14)}, 14, 0.05, false) + end, + + enable_physics = function(self) + if not self.physical_state then + self.physical_state = true + self.object:set_properties({physical = true}) + self.object:set_velocity({x=0, y=0, z=0}) + self.object:set_acceleration(gravity) + end + end, + + disable_physics = function(self) + if self.physical_state then + self.physical_state = false + self.object:set_properties({physical = false}) + self.object:set_velocity({x=0, y=0, z=0}) + self.object:set_acceleration({x=0, y=0, z=0}) + end + end, + on_step = function(self, dtime) + xp_step(self, dtime) + end, +}) diff --git a/mods/HUD/mcl_experience/sounds/experience.ogg b/mods/HUD/mcl_experience/sounds/mcl_experience.ogg similarity index 100% rename from mods/HUD/mcl_experience/sounds/experience.ogg rename to mods/HUD/mcl_experience/sounds/mcl_experience.ogg diff --git a/mods/HUD/mcl_experience/sounds/level_up.ogg b/mods/HUD/mcl_experience/sounds/mcl_experience_level_up.ogg similarity index 100% rename from mods/HUD/mcl_experience/sounds/level_up.ogg rename to mods/HUD/mcl_experience/sounds/mcl_experience_level_up.ogg diff --git a/mods/HUD/mcl_experience/textures/experience_bar.png b/mods/HUD/mcl_experience/textures/mcl_experience_bar.png similarity index 100% rename from mods/HUD/mcl_experience/textures/experience_bar.png rename to mods/HUD/mcl_experience/textures/mcl_experience_bar.png diff --git a/mods/HUD/mcl_experience/textures/experience_bar_background.png b/mods/HUD/mcl_experience/textures/mcl_experience_bar_background.png similarity index 100% rename from mods/HUD/mcl_experience/textures/experience_bar_background.png rename to mods/HUD/mcl_experience/textures/mcl_experience_bar_background.png diff --git a/mods/HUD/mcl_experience/textures/experience_orb.png b/mods/HUD/mcl_experience/textures/mcl_experience_orb.png similarity index 100% rename from mods/HUD/mcl_experience/textures/experience_orb.png rename to mods/HUD/mcl_experience/textures/mcl_experience_orb.png diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 17b6b6ac6..e876baf31 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -379,6 +379,49 @@ mcl_enchanting.enchantments.mending = { inv_tool_tab = true, } +mcl_experience.register_on_add_xp(function(player, xp) + local inv = player:get_inventory() + + local candidates = { + {list = "main", index = player:get_wield_index()}, + {list = "armor", index = 2}, + {list = "armor", index = 3}, + {list = "armor", index = 4}, + {list = "armor", index = 5}, + } + + local final_candidates = {} + for _, can in ipairs(candidates) do + local stack = inv:get_stack(can.list, can.index) + local wear = stack:get_wear() + if mcl_enchanting.has_enchantment(stack, "mending") and wear > 0 then + can.stack = stack + can.wear = wear + table.insert(final_candidates, can) + end + end + + 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 uses = mcl_util.calculate_durability(stack) + local multiplier = 2 * 65535 / uses + local repair = xp * multiplier + local new_wear = wear - repair + + if new_wear < 0 then + xp = math.floor(-new_wear / multiplier + 0.5) + new_wear = 0 + else + xp = 0 + end + + stack:set_wear(math.floor(new_wear)) + inv:set_stack(list, index, stack) + end + + return xp +end, 0) mcl_enchanting.enchantments.multishot = { name = S("Multishot"), diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index 6050aeed2..02425945c 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -499,7 +499,7 @@ function mcl_enchanting.show_enchanting_formspec(player) .. "real_coordinates[true]" .. "image[3.15,0.6;7.6,4.1;mcl_enchanting_button_background.png]" local itemstack = inv:get_stack("enchanting_item", 1) - local player_levels = mcl_experience.get_player_xp_level(player) + local player_levels = mcl_experience.get_level(player) local y = 0.65 local any_enchantment = false local table_slots = mcl_enchanting.get_table_slots(player, itemstack, num_bookshelves) @@ -549,11 +549,11 @@ function mcl_enchanting.handle_formspec_fields(player, formname, fields) if not slot then return end - local player_level = mcl_experience.get_player_xp_level(player) + local player_level = mcl_experience.get_level(player) if player_level < slot.level_requirement then return end - mcl_experience.set_player_xp_level(player, player_level - button_pressed) + mcl_experience.set_level(player, player_level - button_pressed) inv:remove_item("enchanting_lapis", cost) mcl_enchanting.set_enchanted_itemstring(itemstack) mcl_enchanting.set_enchantments(itemstack, slot.enchantments) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index e0c78832f..ade0be818 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -37,7 +37,7 @@ local fish = function(itemstack, player, pointed_thing) local num = 0 local ent = nil local noent = true - + local durability = 65 local unbreaking = mcl_enchanting.get_enchantment(itemstack, "unbreaking") if unbreaking > 0 then @@ -117,8 +117,8 @@ local fish = function(itemstack, player, pointed_thing) else minetest.add_item(pos, item) end - if mcl_experience.throw_experience then - mcl_experience.throw_experience(pos, math.random(1,6)) + if mcl_experience.throw_xp then + mcl_experience.throw_xp(pos, math.random(1,6)) end if not minetest.is_creative_enabled(player:get_player_name()) then diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index ca43b275a..dca476762 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -75,9 +75,9 @@ local function give_xp(pos, player) local xp = meta:get_int("xp") if xp > 0 then if player then - mcl_experience.add_experience(player, xp) + mcl_experience.add_xp(player, xp) else - mcl_experience.throw_experience(vector.add(pos, dir), xp) + mcl_experience.throw_xp(vector.add(pos, dir), xp) end meta:set_int("xp", 0) end diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index b756d4a6d..6e4b24c96 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -317,7 +317,7 @@ minetest.register_node("mcl_mobspawners:spawner", { if obj then obj:remove() end - mcl_experience.throw_experience(pos, math.random(15, 43)) + mcl_experience.throw_xp(pos, math.random(15, 43)) end, on_punch = function(pos) From 34f329a9d559c326e1c198ce1fbbfa16c1edee8e Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 19:57:21 +0100 Subject: [PATCH 366/720] TextureConverter: Implement grass palette conversion Source: https://minecraft.fandom.com/wiki/Tint Since the MineClone2 biomes do not entirely match with the Minecraft ones I picked the Minecraft biomes that seem to match them best. This also changes the palette index of the nether to match the desert instead of the mesa biome and changes the color of grass blocks in item form to the default minecraft one. --- mods/ITEMS/mcl_core/nodes_base.lua | 2 +- mods/MAPGEN/mcl_biomes/init.lua | 2 +- tools/Texture_Converter.py | 67 +++++++++++++++++++++--------- 3 files changed, 50 insertions(+), 21 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index abc650bb0..fe1ee58c2 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -365,7 +365,7 @@ minetest.register_node("mcl_core:dirt_with_grass", { overlay_tiles = {"mcl_core_grass_block_top.png", "", {name="mcl_core_grass_block_side_overlay.png", tileable_vertical=false}}, palette = "mcl_core_palette_grass.png", palette_index = 0, - color = "#55aa60", + color = "#8EB971", is_ground_content = true, stack_max = 64, groups = {handy=1,shovely=1,dirt=2,grass_block=1, grass_block_no_snow=1, soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, spreading_dirt_type=1, enderman_takable=1, building_block=1}, diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index a630dba04..a04822439 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -1496,7 +1496,7 @@ local function register_dimension_biomes() heat_point = 100, humidity_point = 0, _mcl_biome_type = "hot", - _mcl_palette_index = 19, + _mcl_palette_index = 17, }) --[[ THE END ]] diff --git a/tools/Texture_Converter.py b/tools/Texture_Converter.py index 820fa9c08..bdf249113 100755 --- a/tools/Texture_Converter.py +++ b/tools/Texture_Converter.py @@ -118,17 +118,6 @@ def colorize_alpha(colormap, source, colormap_pixel, texture_size, destination): colorize(colormap, source, colormap_pixel, texture_size, tempfile2.name) os.system("composite -compose Dst_In "+source+" "+tempfile2.name+" -alpha Set "+destination) -# This function is unused atm. -# TODO: Implemnt colormap extraction -def extract_colormap(colormap, colormap_pixel, positions): - os.system("convert -size 16x16 canvas:black "+tempfile1.name) - x=0 - y=0 - for p in positions: - os.system("convert "+colormap+" -crop 1x1+"+colormap_pixel+" -depth 8 "+tempfile2.name) - os.system("composite -geometry 16x16+"+x+"+"+y+" "+tempfile2.name) - x = x+1 - def target_dir(directory): if make_texture_pack: return output_dir + "/" + output_dir_name @@ -397,20 +386,60 @@ def convert_textures(): colorize_alpha(FOLIAG, tex_dir+"/blocks/vine.png", "16+39", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/mcl_core_vine.png") # Tall grass, fern (inventory images) - pcol = "49+172" # Plains grass color + pcol = "50+173" # Plains grass color colorize_alpha(GRASS, tex_dir+"/blocks/tallgrass.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_tallgrass_inv.png") colorize_alpha(GRASS, tex_dir+"/blocks/fern.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_fern_inv.png") colorize_alpha(GRASS, tex_dir+"/blocks/double_plant_fern_top.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_double_plant_fern_inv.png") colorize_alpha(GRASS, tex_dir+"/blocks/double_plant_grass_top.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_double_plant_grass_inv.png") - # TODO: Convert grass palette - - offset = [ - [ pcol, "", "grass" ], # Default grass: Plains + # Convert grass palette: https://minecraft.fandom.com/wiki/Tint + grass_colors = [ + # [Coords or #Color, AdditionalTint], # Index - Minecraft biome name (MineClone2 biome names) + ["50+173"], # 0 - Plains (flat, Plains, Plains_beach, Plains_ocean, End) + ["0+255"], # 1 - Savanna (Savanna, Savanna_beach, Savanna_ocean) + ["255+255"], # 2 - Ice Spikes (IcePlainsSpikes, IcePlainsSpikes_ocean) + ["255+255"], # 3 - Snowy Taiga (ColdTaiga, ColdTaiga_beach, ColdTaiga_beach_water, ColdTaiga_ocean) + ["178+193"], # 4 - Giant Tree Taiga (MegaTaiga, MegaTaiga_ocean) + ["178+193"], # 5 - Giant Tree Taiga (MegaSpruceTaiga, MegaSpruceTaiga_ocean) + ["203+239"], # 6 - Montains (ExtremeHills, ExtremeHills_beach, ExtremeHills_ocean) + ["203+239"], # 7 - Montains (ExtremeHillsM, ExtremeHillsM_ocean) + ["203+239"], # 8 - Montains (ExtremeHills+, ExtremeHills+_snowtop, ExtremeHills+_ocean) + ["50+173"], # 9 - Beach (StoneBeach, StoneBeach_ocean) + ["255+255"], # 10 - Snowy Tundra (IcePlains, IcePlains_ocean) + ["50+173"], # 11 - Sunflower Plains (SunflowerPlains, SunflowerPlains_ocean) + ["191+203"], # 12 - Taiga (Taiga, Taiga_beach, Taiga_ocean) + ["76+112"], # 13 - Forest (Forest, Forest_beach, Forest_ocean) + ["76+112"], # 14 - Flower Forest (FlowerForest, FlowerForest_beach, FlowerForest_ocean) + ["101+163"], # 15 - Birch Forest (BirchForest, BirchForest_ocean) + ["101+163"], # 16 - Birch Forest Hills (BirchForestM, BirchForestM_ocean) + ["0+255"], # 17 - Desert and Nether (Desert, Desert_ocean, Nether) + ["76+112", "#28340A"], # 18 - Dark Forest (RoofedForest, RoofedForest_ocean) + ["#90814d"], # 19 - Mesa (Mesa, Mesa_sandlevel, Mesa_ocean, ) + ["#90814d"], # 20 - Mesa (MesaBryce, MesaBryce_sandlevel, MesaBryce_ocean) + ["#90814d"], # 21 - Mesa (MesaPlateauF, MesaPlateauF_grasstop, MesaPlateauF_sandlevel, MesaPlateauF_ocean) + ["#90814d"], # 22 - Mesa (MesaPlateauFM, MesaPlateauFM_grasstop, MesaPlateauFM_sandlevel, MesaPlateauFM_ocean) + ["0+255"], # 23 - Shattered Savanna (or Savanna Plateau ?) (SavannaM, SavannaM_ocean) + ["12+36"], # 24 - Jungle (Jungle, Jungle_shore, Jungle_ocean) + ["12+36"], # 25 - Modified Jungle (JungleM, JungleM_shore, JungleM_ocean) + ["12+61"], # 26 - Jungle Edge (JungleEdge, JungleEdge_ocean) + ["12+61"], # 27 - Modified Jungle Edge (JungleEdgeM, JungleEdgeM_ocean) + ["#6A7039"], # 28 - Swamp (Swampland, Swampland_shore, Swampland_ocean) + ["25+25"], # 29 - Mushroom Fields and Mushroom Field Shore (MushroomIsland, MushroomIslandShore, MushroomIsland_ocean) ] - for o in offset: - colorize(GRASS, tex_dir+"/blocks/grass_top.png", o[0], str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_"+o[2]+".png") - colorize_alpha(GRASS, tex_dir+"/blocks/grass_side_overlay.png", o[0], str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_"+o[2]+"_side.png") + + grass_palette_file = target_dir("/mods/ITEMS/mcl_core/textures") + "/mcl_core_palette_grass.png" + os.system("convert -size 16x16 canvas:transparent " + grass_palette_file) + + for i, color in enumerate(grass_colors): + if color[0][0] == "#": + os.system("convert -size 1x1 xc:\"" + color[0] + "\" " + tempfile1.name + ".png") + else: + os.system("convert " + GRASS + " -crop 1x1+" + color[0] + " " + tempfile1.name + ".png") + + if len(color) > 1: + os.system("convert " + tempfile1.name + ".png \\( -size 1x1 xc:\"" + color[1] + "\" \\) -compose blend -define compose:args=50,50 -composite " + tempfile1.name + ".png") + + os.system("convert " + grass_palette_file + " \\( " + tempfile1.name + ".png -geometry +" + str(i % 16) + "+" + str(int(i / 16)) + " \\) -composite " + grass_palette_file) # Metadata if make_texture_pack: From 970988cb39bcd1ab35e17de886ffdd46aa52eee0 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 4 Aug 2021 12:41:25 +0200 Subject: [PATCH 367/720] Add sugar cane colorisation --- mods/ITEMS/mcl_core/functions.lua | 10 +++++++--- mods/ITEMS/mcl_core/nodes_cactuscane.lua | 13 +++++++++++++ .../mcl_core/textures/default_papyrus.png | Bin 277 -> 1953 bytes 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 2ef73af72..d2ff3690a 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -773,8 +773,7 @@ end local grass_spread_randomizer = PseudoRandom(minetest.get_mapgen_setting("seed")) --- Return appropriate grass block node for pos -function mcl_core.get_grass_block_type(pos) +function mcl_core.get_grass_palette_index(pos) local biome_data = minetest.get_biome_data(pos) local index = 0 if biome_data then @@ -785,7 +784,12 @@ function mcl_core.get_grass_block_type(pos) index = reg_biome._mcl_palette_index end end - return {name="mcl_core:dirt_with_grass", param2=index} + return index +end + +-- Return appropriate grass block node for pos +function mcl_core.get_grass_block_type(pos) + return {name = "mcl_core:dirt_with_grass", param2 = mcl_core.get_grass_palette_index(pos)} end ------------------------------ diff --git a/mods/ITEMS/mcl_core/nodes_cactuscane.lua b/mods/ITEMS/mcl_core/nodes_cactuscane.lua index 839102534..e61d6df80 100644 --- a/mods/ITEMS/mcl_core/nodes_cactuscane.lua +++ b/mods/ITEMS/mcl_core/nodes_cactuscane.lua @@ -53,7 +53,10 @@ minetest.register_node("mcl_core:reeds", { _doc_items_longdesc = S("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."), _doc_items_usagehelp = S("Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow."), drawtype = "plantlike", + paramtype2 = "color", tiles = {"default_papyrus.png"}, + palette = "mcl_core_palette_grass.png", + palette_index = 0, inventory_image = "mcl_core_reeds.png", wield_image = "mcl_core_reeds.png", paramtype = "light", @@ -79,6 +82,7 @@ minetest.register_node("mcl_core:reeds", { groups = {dig_immediate=3, craftitem=1, deco_block=1, plant=1, non_mycelium_plant=1, dig_by_piston=1}, sounds = mcl_sounds.node_sound_leaves_defaults(), node_placement_prediction = "", + drop = "mcl_core:reeds", -- to prevent color inheritation on_place = mcl_util.generate_on_place_plant_function(function(place_pos, place_node) local soil_pos = {x=place_pos.x, y=place_pos.y-1, z=place_pos.z} local soil_node = minetest.get_node_or_nil(soil_pos) @@ -114,6 +118,15 @@ minetest.register_node("mcl_core:reeds", { return false end), + on_construct = function(pos) + local node = minetest.get_node(pos) + if node.param2 == 0 then + node.param2 = mcl_core.get_grass_palette_index(pos) + if node.param2 ~= 0 then + minetest.set_node(pos, node) + end + end + end, _mcl_blast_resistance = 0, _mcl_hardness = 0, }) diff --git a/mods/ITEMS/mcl_core/textures/default_papyrus.png b/mods/ITEMS/mcl_core/textures/default_papyrus.png index b6e2062ec6e5f4d2bf5c2a41437627ac6935e687..c928402f9507ddf95b93d2c43f31738a09356b81 100644 GIT binary patch delta 1951 zcmV;Q2VnS>0-+C(7=H)^0002B`ZwwT00i-RR9JLUVRs;Ka&Km7Y-J#Hd2nSQWq4_3 z004N}tyfuc?I;ZW*D87mNFavgFjl=C^zvI^z}G|alBzbb(G^%a=m_CJ{r69Uf8-+c z1`IoIgSAR76HK5ef>*~C#uJqp&-p_w;i88*J@3bANsmJ)bWuADFIs@N9SXemsrLL(xTfIyeTVF$u_Jc{_mWGeDOhFA46^-_kAk6sKO_VrgfLM0g!Q zzUlRLL!XZIMt?-t0Vd@h%b9m;#kW?E)kR|^qIPD~2sSP=GBHWW^?1!nb8@rDZnPlH ztEjS2UQ|{|TE>7RtTaG_1tT`BqtBQHqM=GodZH{ub)DCa0%hHKGQD9Vr-LrSAn8mM zv=%jOEI9mz;V+{X&jn>Fp&08_f7#%>!QV7!E%y+i@_##4f{S`y3yjWOf66Q&1l#0| zM}SwG^sA5jkyI51d4$=^0;5WYiNtv3mL5E7na9!}TL{6GX+T0GzFEMa76z0>&1g|M zB8Mn(^g>V+EpbbISzwa>AW6VT=q4 zA71$$0e<$jgitwe@j`VsuK4s0(u7soCpPo{~A{3;lv+ zy?^TB?bUm)b9(U@RrD}r?`f-li!SyKPH{-SEvfp)yAs7IQe`yqr%*P?kmOv;u1sa? zSvW=H7wtK7Gem?5_p>9 zY7N#f+O$@jDS!UVm|sQoDWl!Z&awE-7wrcHy+*tB{j<2erZFmL7|_&}q5|!&h0_q<@5M>+ITC z8P+}^`^f%go~faEC&JF-()of3-|Us7#T|P7Md;u&c4xX-y)l%Xyxbn#o=$z+`D{BYoJ%7KQugYl#Z^zlmE5^N;(jKRiJJBlGM`%4gZA0`$ z->BRVLikGzFVW8a9)`vXGSGP*wer|cXPsAH^sD~E*z_v{c?UOV`?KJ!C4hWUZB`fH zu!O>2e+k@rxO}OcYqw|IOnZsjW;5HkzK?ePH2aXsUTbhqbDw0w7p&?N+kakOlMlcE z{{iyl_o#?U>4X3P0V8QcLr_UWLm+T+Z)Rz1WdHzpoSl%dO2beThQHRJrRX4vgE(Yx zEx6dpr78r$LW~uxPHEC&F*k-JrT7NEi9SpRLGTTH0R?CO8yy_X;)TQiaX9Dy@4e7; zlgJd#9+knLU8vG1 z%S&h+h`aMLv#etCb`TtiAH;5K(pdZ?-i=Lc+3p4=nMFUI_BN~I^y1w1RXcc`(8tGR z#EdBkB^_z1&M{r~r5-sU_Y_3Zgt2;a&6M1T3ORWkiUuOxrY3K@%762fGLpwsUN+$l zBTt)${on7kkF#pCv9-v;Jgizvs^(+@?~kxHgpFrtU)N-{e!s0|rd!SY^NnAA?NBgF z<9F8p0007FOGiWi|A&vvzW@LL32;bRa{vGf6951U69E94oEQKA00(qQO+^Rg2m}fd z2@>7nWdHyH21!IgRDUSXZPC9<13?f5@ZTOO6m4X=GKHOm5Ku^$*GOR*u)f}ag}qOZ z&h+{KR=$9wusCci4g@{YNlYVak#mjUR6Fc9^Zl8?by}DQMn);BT?F7ZEnJ13t!hPU zP^EpRpxEnKHW=XXyn|A1`h+Ig^1|h`$=vICPdiZ13Ysl?q~)-g8*F|8tQK llh9+?wVNdCEf~PDfp2QAPj|0&ecJ#4002ovPDHLkV1niRxds3L delta 261 zcmZ3;Kb2{ML_G^L0|Ud`yN`l^lx~1eh%1mTpC06ysvl<{o6zDEm}_?b{(Zf0U9%KZ zZf@=k8#bu=s9E^ShbwDxa&j`A(Ut*f;4caC3ugHLABsQ}16S-^bD&g*r;B4q1!HnT zNJ1Hpw|5A$A=A}M(pM$anj|8l`wZ)RN)q%#ytzw~Ja``56`Cd{b>sqH$eU@?N_rk{ zW!n7ep1qkzHJFNeMB!#hT!RT2?Q2hJ5RGaSuOTX}KmN-3bD7(8A5T-G@yGywo? CI9i$j From 47340386e20501cad0d2e7a0deba2a64a0022c0a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 20:55:33 +0100 Subject: [PATCH 368/720] Turn parethesized sentence about voluntary work into normal one --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index de3ae536e..6d46237ca 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -343,9 +343,9 @@ at least two different people. requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can also unassign yourself from the issue / PR if you have no time or don't -want to take care of it for some other reason (after all, everyone is a +want to take care of it for some other reason. After all, everyone is a volunteer and we can't expect you to do work that you are not intrested -in) - **the important thing is that you make sure to inform us if you +in. **The important thing is that you make sure to inform us if you won't take care of something that has been assigned to you.** - Please assign yourself to something that you want to work on to avoid duplicate work. From 4d93e13f80873075b492a35ef340ab49f2b6ff4f Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 20:59:27 +0100 Subject: [PATCH 369/720] Reword developer presence in public discussion rooms rule --- CONTRIBUTING.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6d46237ca..bbe097c0c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -349,9 +349,10 @@ in. **The important thing is that you make sure to inform us if you won't take care of something that has been assigned to you.** - Please assign yourself to something that you want to work on to avoid duplicate work. -- As a developer, it should be easy to reach you about -your code. You should be on the Discord (or, if you really don't like -Discord, Matrix or IRC). +- As a developer, it should be easy to reach you about your work. You +should be in at least one of the public MineClone2 discussion rooms - +preferrably Discord, but if you really don't like Discord, Matrix +or IRC are fine too. ### Maintainer status Maintainers carry the main responsibility for the project. From 6473494cbcf66e2454d33bc7b678dbf0c21ccdd1 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:01:43 +0100 Subject: [PATCH 370/720] prioritised -> prioritized --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bbe097c0c..ad9090930 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,11 +13,11 @@ whether you're a programmer or not. based on the Minetest engine with polished features, usable in both singleplayer and multiplayer. Currently, most of **Minecraft Java Edition 1.12.2** features are already implemented and polishing existing -features are prioritised over new feature requests. +features are prioritized over new feature requests. - With lessened priority yet strictly, implement features targetting **Minecraft version 1.17 + Optifine** (Optifine only as far as supported by the Minetest Engine). This means features in parity with the listed -Minecraft experiences are prioritised over those that don't fulfill this +Minecraft experiences are prioritized over those that don't fulfill this scope. - Optionally, create a performant experience that will run relatively well on really low spec computers. Unfortunately, due to Minecraft's From c2f0f0297be67de7ddc5775c5a5a63de9b5bb637 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:02:15 +0100 Subject: [PATCH 371/720] Optifine -> OptiFine --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ad9090930..ed5d2704d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,7 +15,7 @@ singleplayer and multiplayer. Currently, most of **Minecraft Java Edition 1.12.2** features are already implemented and polishing existing features are prioritized over new feature requests. - With lessened priority yet strictly, implement features targetting -**Minecraft version 1.17 + Optifine** (Optifine only as far as supported +**Minecraft version 1.17 + OptiFine** (OptiFine only as far as supported by the Minetest Engine). This means features in parity with the listed Minecraft experiences are prioritized over those that don't fulfill this scope. From 7c1777c53ac4ae388b1127d0266c5ec801fed4fb Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:03:17 +0100 Subject: [PATCH 372/720] minetest -> Minetest --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ed5d2704d..ea1175534 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -75,11 +75,11 @@ channel. However, it is not a bug if you believe something is missing in the game. In this case, please read "Requesting features" * If you report a crash, always include the error message. If you play -in singleplayer, post a screenshot of the message that minetest showed +in singleplayer, post a screenshot of the message that Minetest showed when the crash happened (or copy the message into your issue). If you are a server admin, you can find error messages in the log file of the server. -* Tell us which MineClone2 and minetest versions you are using. +* Tell us which MineClone2 and Minetest versions you are using. * Tell us how to reproduce the problem: What you were doing to trigger the bug, e.g. before the crash happened or what causes the faulty behavior. From faff9316e0b21cc32aa73e5f9fda7993ce56d1f1 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:03:58 +0100 Subject: [PATCH 373/720] minecraft -> Minecraft --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ea1175534..e8711bceb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -121,7 +121,7 @@ this is not required. It's also a good idea to join the Discord server #### Textures For textures we use the Pixel Perfection texture pack. This is mostly -enough; however in some cases - e.g. for newer minecraft features, it's +enough; however in some cases - e.g. for newer Minecraft features, it's useful to have texture artists around. If you want to make such contributions, join our Discord server. Demands for textures will be communicated there. From 6000c29171b7bcee909293addb60fb2fe012fd58 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:04:52 +0100 Subject: [PATCH 374/720] ressource -> resource --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e8711bceb..3f9186a32 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -129,7 +129,7 @@ communicated there. #### Sounds MineClone2 currently does not have a consistent way to handle sounds. The sounds in the game come from different sources, like the SnowZone -ressource pack or minetest_game. Unfortunately, MineClone2 does not play +resource pack or minetest_game. Unfortunately, MineClone2 does not play a sound in every situation you would get one in Minecraft. Any help with sounds is greatly appreciated, however if you add new sounds you should probably work together with a programmer, to write the code to actually From d6907970111ea975cd3fbbbb1f403721514fef7f Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:05:38 +0100 Subject: [PATCH 375/720] commited -> committed --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3f9186a32..f69a83015 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -159,7 +159,7 @@ the translation files for the language you are working on with the template files, to see what is missing and what is out of date with the template file. However, template files are often incomplete and/or out of date, sometimes they don't match the code. You can update the -translation files if that is required, you can also modifiy the code in +translation files if that is required, you can also modify the code in your translation PR if it's related to translation. You can also work on multiple languages at the same time in one PR. From cdf6533e0ac2c1321c5a048d28db3556af6d4161 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:06:08 +0100 Subject: [PATCH 376/720] regulary -> regularly --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f69a83015..2246e4bf9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -199,7 +199,7 @@ If you opened or have contributed to an issue, you receive the * Fork the repository (in case you have not already) * Do your change in a new branch * Create a pull request to get your changes merged into master -* Keep your pull request up to date by regulary merging upstream. It is +* Keep your pull request up to date by regularly merging upstream. It is imperative that conflicts are resolved prior to merging the pull request. * After the pull request got merged, you can delete the branch From bb6fe65aa5a3bb04b094f71851067e25b42b901b Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:06:35 +0100 Subject: [PATCH 377/720] inadequeate -> inadequate --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2246e4bf9..bc90905e0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -216,7 +216,7 @@ We appreciate any contributing effort to MineClone2. If you are a relatively new programmer, you can reach us on Discord, Matrix or IRC for questions about git, Lua, Minetest API, MineClone2 codebase or anything related to MineClone2. We can help you avoid writing code that -would be deemed inadequeate, or help you become familiar with MineClone2 +would be deemed inadequate, or help you become familiar with MineClone2 better, or assist you use development tools. ### Maintain your own code, even if alreay got merged From e70161501f3a01ac7c1ef3f3e895e1b07f334ec9 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:06:58 +0100 Subject: [PATCH 378/720] alreay -> already --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bc90905e0..b9f277a69 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -219,7 +219,7 @@ anything related to MineClone2. We can help you avoid writing code that would be deemed inadequate, or help you become familiar with MineClone2 better, or assist you use development tools. -### Maintain your own code, even if alreay got merged +### Maintain your own code, even if already got merged Sometimes, your code may cause crashes or bugs - we try to avoid such scenarios by testing everytime before merging it, but if your merged work causes problems, we ask you fix the issues as soon as possible. From 18dd1cabd0e523d25323a881071eb717b47bdeea Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:07:28 +0100 Subject: [PATCH 379/720] everytime -> every time --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b9f277a69..4e4be4ff7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -221,7 +221,7 @@ better, or assist you use development tools. ### Maintain your own code, even if already got merged Sometimes, your code may cause crashes or bugs - we try to avoid such -scenarios by testing everytime before merging it, but if your merged +scenarios by testing every time before merging it, but if your merged work causes problems, we ask you fix the issues as soon as possible. ### Changing Gameplay From 39f66eb4a025c8e4207ccadd690eb0467b8701be Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:08:11 +0100 Subject: [PATCH 380/720] repo -> repository --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4e4be4ff7..b9f443573 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -334,8 +334,8 @@ MineClone2 repository. #### Developer responsibilities - You should not push things directly to MineClone2 master - rather, do your work on a branch on your private -repo, then create a pull request. This way other people can review your -changes and make sure they work before they get merged. +repository, then create a pull request. This way other people can review +your changes and make sure they work before they get merged. - Merge PRs only when they have recieved the necessary feedback and have been tested to not lead to any crashes and do what they claim to do by at least two different people. From 46d1dd42d4f2c5ca4fd839fdf683c102c95ff5e7 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:08:47 +0100 Subject: [PATCH 381/720] recieved -> received --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b9f443573..67cc2c3e6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -336,7 +336,7 @@ MineClone2 repository. MineClone2 master - rather, do your work on a branch on your private repository, then create a pull request. This way other people can review your changes and make sure they work before they get merged. -- Merge PRs only when they have recieved the necessary feedback and have +- Merge PRs only when they have received the necessary feedback and have been tested to not lead to any crashes and do what they claim to do by at least two different people. - You may also be assigned to issues or pull From 61d0dc8182d37e2da33e3d6c7d0e082d813e3e20 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:09:13 +0100 Subject: [PATCH 382/720] intrested -> interested --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 67cc2c3e6..8ab8ee818 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -344,7 +344,7 @@ requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can also unassign yourself from the issue / PR if you have no time or don't want to take care of it for some other reason. After all, everyone is a -volunteer and we can't expect you to do work that you are not intrested +volunteer and we can't expect you to do work that you are not interested in. **The important thing is that you make sure to inform us if you won't take care of something that has been assigned to you.** - Please assign yourself to something that you want to work on to avoid From c6e9d763d673816251d37c03eb19318c7bd8a8a6 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:09:57 +0100 Subject: [PATCH 383/720] repo -> repository (in release process documentation) --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8ab8ee818..2b1f16ad8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -378,7 +378,7 @@ technical guidelines and issue/PR delegation * Update the version number in README.md * Use `git tag ` to tag the latest commit with the version number -* Push to repo (don't forget `--tags`!) +* Push to repository (don't forget `--tags`!) * Update ContentDB (https://content.minetest.net/packages/Wuzzy/mineclone2/) * Update first post in forum thread From 24ca8252a9aa97303475b6e15aac21ac65f0804f Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:14:22 +0100 Subject: [PATCH 384/720] community wants -> community feedback --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2b1f16ad8..961e16cee 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -362,7 +362,7 @@ Maintainers carry the main responsibility for the project. merged, by assigning either themselves or Developers to issues / PRs - Making releases - Making sure guidelines are kept -- Making project decisions based on what the community wants +- Making project decisions based on community feedback - Granting/revoking developer access - Enforcing the code of conduct (See CODE_OF_CONDUCT.md) - Moderating official community spaces (See Links section) From a77e79d985fc384ea49810b1feb2d625a9c9feac Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:15:20 +0100 Subject: [PATCH 385/720] where the real troublespots are -> places to investigate optimization issues --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 961e16cee..7abbcc5ea 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -171,8 +171,8 @@ credited in the Contributors section. ### Profiling If you own a server, a great way to help us improve MineClone2's code is by giving us profiler results. Profiler results give us detailed -information about the game's performance and let us know where the real -troublespots are. This way we can make the game faster. +information about the game's performance and let us know places to +investigate optimization issues. This way we can make the game faster. #### Using Minetest's profiler Minetest has a built in profiler. Simply set `profiler.load = true` in From f9e7f584926946148c22675fa816e30ab8e366d0 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 4 Nov 2021 12:21:06 +0100 Subject: [PATCH 386/720] Reword necessary PR feedback section --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7abbcc5ea..5d84ea47b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -336,9 +336,9 @@ MineClone2 repository. MineClone2 master - rather, do your work on a branch on your private repository, then create a pull request. This way other people can review your changes and make sure they work before they get merged. -- Merge PRs only when they have received the necessary feedback and have -been tested to not lead to any crashes and do what they claim to do by -at least two different people. +- Merge PRs only when they have recieved the necessary feedback and have +been tested by at least two different people (including the author of +the pull request), to avoid crashes or the introduction of new bugs. - You may also be assigned to issues or pull requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can From b937b38b1c24f14e25e24621978110ed1b7602bd Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 4 Nov 2021 12:26:14 +0100 Subject: [PATCH 387/720] Separate translations and assets --- CONTRIBUTING.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5d84ea47b..5e00fddd8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -142,9 +142,14 @@ Similar to the textures, we need people that can make 3D Models with Blender on demand. Many of the models have to be patched, some new animations have to be added etc. -#### Translations +#### Crediting +Asset contributions will be credited in their own respective sections in +CREDITS.md. If you have commited the results yourself, you will also be +credited in the Contributors section. -##### Workflow +### Contributing Translations + +#### Workflow To add/update support for your language to MineClone2, you should take the steps documented in the section for Programmers, add/update the translation files of the mods that you want to update. You can add @@ -153,7 +158,7 @@ the translation file entirely or only partly; basically any effort is valued. If your changes are small, you can also send them to developers via E-Mail, Discord, IRC or Matrix - they will credit you appropriately. -##### Things to note +#### Things to note You can use the script at `tools/check_translate_files.py` to compare the translation files for the language you are working on with the template files, to see what is missing and what is out of date with @@ -164,9 +169,9 @@ your translation PR if it's related to translation. You can also work on multiple languages at the same time in one PR. #### Crediting -Asset contributions will be credited in their own respective sections in -CREDITS.md. If you have commited the results yourself, you will also be -credited in the Contributors section. +Translation contributions will be credited in their own in CREDITS.md. +If you have commited the results yourself, you will also be credited in +the Contributors section. ### Profiling If you own a server, a great way to help us improve MineClone2's code From 649f481b51162e4314da28c58769d9730e9b216c Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 4 Nov 2021 12:28:36 +0100 Subject: [PATCH 388/720] provide example for non-descriptive title --- CONTRIBUTING.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5e00fddd8..9be680d6a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -54,7 +54,8 @@ you can report a bug or request a feature. ### Rules about both bugs and feature requests * Stay polite towards the developers and anyone else involved in the discussion. -* Choose a descriptive title. +* Choose a descriptive title (e.g. not just "crash", "bug" or "question" +). * Please write in plain, understandable English. It will be easier to communicate. * Please start the issue title with a capital letter. From 4a3a8841cdf956807e4b97a7dee2774ae873a930 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 4 Nov 2021 12:31:13 +0100 Subject: [PATCH 389/720] Add ingame credits script to release process --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9be680d6a..e8ea2bf5b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -380,6 +380,8 @@ technical guidelines and issue/PR delegation * Nicu - responsible for community related issues #### Release process +* Run `tools/generate_ingame_credits.lua` to update the ingame credits +from `CREDITS.md` and commit the result (if anything changed) * Launch MineClone2 to make sure it still runs * Update the version number in README.md * Use `git tag ` to tag the latest commit with the From ce4c0ed4c199028ebb69614629e7ece31a395e4b Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 4 Nov 2021 12:56:34 +0100 Subject: [PATCH 390/720] free -> free/libre --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e8ea2bf5b..de13bce7d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -396,7 +396,7 @@ version number ### Licensing By asking us to include your changes in this game, you agree that they fall under the terms of the GPLv3, which basically means they will -become part of a free software. +become part of a free/libre software. ### Crediting Contributors, Developers and Maintainers will be credited in From be86b603f8391d733f174bb6ccd44869f8327948 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 4 Nov 2021 13:14:35 +0100 Subject: [PATCH 391/720] Update README.md to reflect new contribution guidelines --- README.md | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 034d381ab..fe32f0039 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# MineClone 2 +# MineClone2 An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by many people. Not developed or endorsed by Mojang AB. @@ -69,9 +69,9 @@ an explanation. This game requires [Minetest](http://minetest.net) to run (version 5.3.0 or later). So you need to install Minetest first. Only stable versions of Minetest are officially supported. -There is no support for running MineClone 2 in development versions of Minetest. +There is no support for running MineClone2 in development versions of Minetest. -To install MineClone 2 (if you haven't already), move this directory into the +To install MineClone2 (if you haven't already), move this directory into the “games” directory of your Minetest data directory. Consult the help of Minetest to learn more. @@ -86,20 +86,21 @@ The MineClone2 repository is hosted at Mesehub. To contribute or report issues, * Reddit: * Minetest forums: -## Project description -The main goal of **MineClone 2** is to be a clone of Minecraft and to be released as free software. - -* **Target of development: Minecraft, PC Edition, version 1.12** (later known as “Java Edition”) -* MineClone2 also includes Optifine features supported by the Minetest -* In general, Minecraft is aimed to be cloned as good as possible -* Cloning the gameplay has highest priority -* MineClone 2 will use different assets, but with a similar style -* Limitations found in Minetest will be documented in the course of development -* Features of later Minecraft versions are collected in the mineclone5 branch - -## Using features from newer versions of Minecraft -For > 1.12 features, checkout MineClone5. It includes features from newer Minecraft versions. -Download it here: https://git.minetest.land/MineClone2/MineClone2/src/branch/mineclone5 +## Target +- Crucially, create a stable, moddable, free/libre clone of Minecraft +based on the Minetest engine with polished features, usable in both +singleplayer and multiplayer. Currently, most of **Minecraft Java +Edition 1.12.2** features are already implemented and polishing existing +features are prioritized over new feature requests. +- With lessened priority yet strictly, implement features targetting +**Minecraft version 1.17 + OptiFine** (OptiFine only as far as supported +by the Minetest Engine). This means features in parity with the listed +Minecraft experiences are prioritized over those that don't fulfill this +scope. +- Optionally, create a performant experience that will run relatively +well on really low spec computers. Unfortunately, due to Minecraft's +mechanisms and Minetest engine's limitations along with a very small +playerbase on low spec computers, optimizations are hard to investigate. ## Completion status This game is currently in **beta** stage. @@ -186,7 +187,7 @@ Technical differences from Minecraft: * Different engine (Minetest) * Different easter eggs -… and finally, MineClone 2 is free software (“free” as in “freedom”)! +… and finally, MineClone2 is free software (“free” as in “freedom”)! ## Other readme files From 23ca11c8e1b0f4e802ea5b41ac63c32136dc760a Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Thu, 4 Nov 2021 01:53:58 +0100 Subject: [PATCH 392/720] Use RLE compression in tga_encoder --- mods/CORE/tga_encoder/init.lua | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/mods/CORE/tga_encoder/init.lua b/mods/CORE/tga_encoder/init.lua index 96afda5e1..973e44855 100644 --- a/mods/CORE/tga_encoder/init.lua +++ b/mods/CORE/tga_encoder/init.lua @@ -38,18 +38,31 @@ function image:encode_header() self.data = self.data .. string.char(0) -- image id .. string.char(0) -- color map type - .. string.char(2) -- image type (uncompressed true-color image = 2) + .. string.char(10) -- image type (RLE RGB = 10) self:encode_colormap_spec() -- color map specification self:encode_image_spec() -- image specification end function image:encode_data() + local current_pixel = '' + local previous_pixel = '' + local count = 1 + local encoded = '' + local rle_packet = '' for _, row in ipairs(self.pixels) do for _, pixel in ipairs(row) do - self.data = self.data - .. string.char(pixel[3], pixel[2], pixel[1]) + current_pixel = string.char(pixel[3], pixel[2], pixel[1]) + if current_pixel ~= previous_pixel or count == 128 then + encoded = encoded .. rle_packet + count = 1 + previous_pixel = current_pixel + else + count = count + 1 + end + rle_packet = string.char(128 + count - 1) .. current_pixel end end + self.data = self.data .. encoded .. rle_packet end function image:encode_footer() From 4926c0560da96ef4d0677487212fac519f6c2083 Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Thu, 4 Nov 2021 15:15:28 +0100 Subject: [PATCH 393/720] Speed up TGA encoding by creating fewer strings --- mods/CORE/tga_encoder/init.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/CORE/tga_encoder/init.lua b/mods/CORE/tga_encoder/init.lua index 973e44855..39309c9c9 100644 --- a/mods/CORE/tga_encoder/init.lua +++ b/mods/CORE/tga_encoder/init.lua @@ -47,13 +47,13 @@ function image:encode_data() local current_pixel = '' local previous_pixel = '' local count = 1 - local encoded = '' + local packets = {} local rle_packet = '' for _, row in ipairs(self.pixels) do for _, pixel in ipairs(row) do current_pixel = string.char(pixel[3], pixel[2], pixel[1]) if current_pixel ~= previous_pixel or count == 128 then - encoded = encoded .. rle_packet + packets[#packets +1] = rle_packet count = 1 previous_pixel = current_pixel else @@ -62,7 +62,8 @@ function image:encode_data() rle_packet = string.char(128 + count - 1) .. current_pixel end end - self.data = self.data .. encoded .. rle_packet + packets[#packets +1] = rle_packet + self.data = self.data .. table.concat(packets) end function image:encode_footer() From d1d11f97406500ada5fe8e29577a36bd5bd6bf31 Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Thu, 4 Nov 2021 20:58:54 +0100 Subject: [PATCH 394/720] Fixed debug hudbars for player saturation and exhaustion when mcl_hunger_debug=true is set in .config file --- mods/PLAYER/mcl_hunger/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 8c154700a..90a622a18 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -91,8 +91,8 @@ end -- register saturation hudbar hb.register_hudbar("hunger", 0xFFFFFF, S("Food"), { icon = "hbhunger_icon.png", bgicon = "hbhunger_bgicon.png", bar = "hbhunger_bar.png" }, 1, 20, 20, false) if mcl_hunger.debug then - hb.register_hudbar("saturation", 0xFFFFFF, S("Saturation"), { icon = "mcl_hunger_icon_saturation.png", bgicon = "mcl_hunger_bgicon_saturation.png", bar = "mcl_hunger_bar_saturation.png" }, 1, mcl_hunger.SATURATION_INIT, 200, false, S("%s: %.1f/%d")) - hb.register_hudbar("exhaustion", 0xFFFFFF, S("Exhaust."), { icon = "mcl_hunger_icon_exhaustion.png", bgicon = "mcl_hunger_bgicon_exhaustion.png", bar = "mcl_hunger_bar_exhaustion.png" }, 1, 0, mcl_hunger.EXHAUST_LVL, false, S("%s: %d/%d")) + hb.register_hudbar("saturation", 0xFFFFFF, S("Saturation"), { icon = "mcl_hunger_icon_saturation.png", bgicon = "mcl_hunger_bgicon_saturation.png", bar = "mcl_hunger_bar_saturation.png" }, 1, mcl_hunger.SATURATION_INIT, 200, false) + hb.register_hudbar("exhaustion", 0xFFFFFF, S("Exhaust."), { icon = "mcl_hunger_icon_exhaustion.png", bgicon = "mcl_hunger_bgicon_exhaustion.png", bar = "mcl_hunger_bar_exhaustion.png" }, 1, 0, mcl_hunger.EXHAUST_LVL, false) end minetest.register_on_joinplayer(function(player) From d0d60804a39da1b8d8a980861440b1146747ec20 Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Thu, 4 Nov 2021 21:01:28 +0100 Subject: [PATCH 395/720] Implemented health regeneration mechanics as described in minecraft wiki. Saturation values and different regeneration speeds now used. --- mods/PLAYER/mcl_hunger/init.lua | 84 +++++++++++++++++++-------------- 1 file changed, 48 insertions(+), 36 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 90a622a18..535ccbed1 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -134,46 +134,58 @@ minetest.register_on_player_hpchange(function(player, hp_change) end end) -local main_timer = 0 -local timer = 0 -- Half second timer -local timerMult = 1 -- Cycles from 0 to 7, each time when timer hits half a second -minetest.register_globalstep(function(dtime) - main_timer = main_timer + dtime - timer = timer + dtime - 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.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. - if timerMult == 0 then - if h >= 18 and hp > 0 and hp < 20 then - -- +1 HP, +exhaustion - player:set_hp(hp+1) - mcl_hunger.exhaust(name, mcl_hunger.EXHAUST_REGEN) - mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) - elseif h == 0 then - -- Damage hungry player down to 1 HP - -- TODO: Allow starvation at higher difficulty levels - if hp-1 > 0 then - mcl_util.deal_damage(player, 1, {type = "starve"}) + +local fastFoodTickTimer = 0 -- 0.5 second cycle +local slowFoodTickTimer = 0 -- 4 second cycle +minetest.register_globalstep(function(dtime) + fastFoodTickTimer = fastFoodTickTimer + dtime + slowFoodTickTimer = slowFoodTickTimer + dtime + + local fastTimerWrapped = false -- if the fastFoodTickTimer wrapped around and everything dependent should be updated + local slowTimerWrapped = false + + if fastFoodTickTimer > 0.5 then + fastFoodTickTimer = 0 + fastTimerWrapped = true + end + if slowFoodTickTimer > 4.0 then + slowFoodTickTimer = 0 + slowTimerWrapped = true + end + + if fastTimerWrapped or slowTimerWrapped then -- only update players if something must be updated + for _,player in ipairs(minetest.get_connected_players()) do + + local playerName = player:get_player_name() + local foodLevel = mcl_hunger.get_hunger(player) + local foodSaturationLevel = mcl_hunger.get_saturation(player) + local playerHealth = player:get_hp() + + if playerHealth < 20 then + if foodLevel == 20 and foodSaturationLevel >= 6 then -- fast regeneration (2 health per second) + if fastTimerWrapped then + player:set_hp(playerHealth+1) + mcl_hunger.exhaust(playerName, mcl_hunger.EXHAUST_REGEN) + mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) + end + elseif foodLevel >= 18 then -- slow regeneration (1 health every 4 seconds) + if slowTimerWrapped then + player:set_hp(playerHealth+1) + mcl_hunger.exhaust(playerName, mcl_hunger.EXHAUST_REGEN) + mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) end end end - - end - end - end - if timer > 0.25 then - timer = 0 - timerMult = timerMult + 2 - if timerMult > 7 then - timerMult = 0 + + if foodLevel == 0 then --starvation + maximumStarvation = 1 -- the amount of health at which a player will stop to get harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) + -- TODO: implement Minecraft-like difficulty modes and the update maximumStarvation here + if playerHealth > maximumStarvation and slowTimerWrapped then + mcl_util.deal_damage(player, 1, {type = "starve"}) + end + end + end end end) From 1b259f928bb32e30208235d17560097ba059b047 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 6 Nov 2021 13:12:03 +0000 Subject: [PATCH 396/720] Add simple bone meal API - callback api - particle api --- mods/ITEMS/mcl_dye/init.lua | 83 ++++++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 34 deletions(-) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index b9b5d92ac..274e31fcf 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -128,26 +128,35 @@ for _, row in ipairs(dyelocal.dyes) do end -- Bone Meal -local function bone_meal_particle(pos) +function mcl_dye.add_bone_meal_particle(pos, def) + if not def then + def = {} + end minetest.add_particlespawner({ - amount = 10, - time = 0.1, - minpos = { x = pos.x - 0.5, y = pos.y - 0.5, z = pos.z - 0.5 }, - maxpos = { x = pos.x + 0.5, y = pos.y + 0.5, z = pos.z + 0.5 }, - minvel = { x = 0, y = 0, z = 0}, - maxvel = { x = 0, y = 0, z = 0}, - minacc = { x = 0, y = 0, z = 0}, - maxacc = { x = 0, y = 0, z = 0}, - minexptime = 1, - maxexptime = 4, - minsize = 0.7, - maxsize = 2.4, + amount = def.amount or 10, + time = def.time or 0.1, + minpos = def.minpos or vector.subtract(pos, 0.5), + maxpos = def.maxpos or vector.add(pos, 0.5), + minvel = def.minvel or vector.new(0, 0, 0), + maxvel = def.maxvel or vector.new(0, 0, 0), + minacc = def.minacc or vector.new(0, 0, 0), + minacc = def.minacc or vector.new(0, 0, 0), + minexptime = def.minexptime or 1, + maxexptime = def.maxexptime or 4, + minsize = def.minsize or 0.7, + maxsize = def.maxsize or 2.4, texture = "mcl_particles_bonemeal.png^[colorize:#00EE00:125", -- TODO: real MC color - glow = 5, + glow = def.glow or 5, }) end -function mcl_dye.apply_bone_meal(pointed_thing) +mcl_dye.bone_meal_callbacks = {} + +function mcl_dye.register_on_bone_meal_apply(func) + table.insert(mcl_dye.bone_meal_callbacks, func) +end + +local function apply_bone_meal(pointed_thing) -- Bone meal currently spawns all flowers found in the plains. local flowers_table_plains = { "mcl_flowers:dandelion", @@ -183,14 +192,21 @@ function mcl_dye.apply_bone_meal(pointed_thing) local pos = pointed_thing.under local n = minetest.get_node(pos) if n.name == "" then return false end + + for _, func in pairs(mcl_dye.bone_meal_callbacks) do + if func(pointed_thing, user) then + return true + end + end + if minetest.get_item_group(n.name, "sapling") >= 1 then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) -- Saplings: 45% chance to advance growth stage if math.random(1,100) <= 45 then return mcl_core.grow_sapling(pos, n) end elseif minetest.get_item_group(n.name, "mushroom") == 1 then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) -- Try to grow huge mushroom -- Must be on a dirt-type block @@ -240,39 +256,37 @@ function mcl_dye.apply_bone_meal(pointed_thing) return false -- Wheat, Potato, Carrot, Pumpkin Stem, Melon Stem: Advance by 2-5 stages elseif string.find(n.name, "mcl_farming:wheat_") then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_wheat", pos, n, stages, true) elseif string.find(n.name, "mcl_farming:potato_") then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_potato", pos, n, stages, true) elseif string.find(n.name, "mcl_farming:carrot_") then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_carrot", pos, n, stages, true) elseif string.find(n.name, "mcl_farming:pumpkin_") then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_pumpkin_stem", pos, n, stages, true) elseif string.find(n.name, "mcl_farming:melontige_") then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_melon_stem", pos, n, stages, true) elseif string.find(n.name, "mcl_farming:beetroot_") then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) -- Beetroot: 75% chance to advance to next stage if math.random(1, 100) <= 75 then return mcl_farming:grow_plant("plant_beetroot", pos, n, 1, true) end elseif n.name == "mcl_cocoas:cocoa_1" or n.name == "mcl_cocoas:cocoa_2" then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) -- Cocoa: Advance by 1 stage mcl_cocoas.grow(pos) return true elseif minetest.get_item_group(n.name, "grass_block") == 1 then - local grass_block_pos = {x = pos.x, y = pos.y + 1, z = pos.z} - bone_meal_particle(grass_block_pos) -- Grass Block: Generate tall grass and random flowers all over the place for i = -2, 2 do for j = -2, 2 do @@ -285,6 +299,7 @@ function mcl_dye.apply_bone_meal(pointed_thing) -- Randomly generate flowers, tall grass or nothing if math.random(1,100) <= 90 then -- 90% tall grass, 10% flower + mcl_dye.add_bone_meal_particle(pos, {amount = 4}) if math.random(1,100) <= 90 then local col = n2.param2 minetest.add_node(pos, {name="mcl_flowers:tallgrass", param2=col}) @@ -314,24 +329,24 @@ function mcl_dye.apply_bone_meal(pointed_thing) -- Double flowers: Drop corresponding item elseif n.name == "mcl_flowers:rose_bush" or n.name == "mcl_flowers:rose_bush_top" then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) minetest.add_item(pos, "mcl_flowers:rose_bush") return true elseif n.name == "mcl_flowers:peony" or n.name == "mcl_flowers:peony_top" then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) minetest.add_item(pos, "mcl_flowers:peony") return true elseif n.name == "mcl_flowers:lilac" or n.name == "mcl_flowers:lilac_top" then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) minetest.add_item(pos, "mcl_flowers:lilac") return true elseif n.name == "mcl_flowers:sunflower" or n.name == "mcl_flowers:sunflower_top" then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) minetest.add_item(pos, "mcl_flowers:sunflower") return true elseif n.name == "mcl_flowers:tallgrass" then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) -- Tall Grass: Grow into double tallgrass local toppos = { x=pos.x, y=pos.y+1, z=pos.z } local topnode = minetest.get_node(toppos) @@ -342,7 +357,7 @@ function mcl_dye.apply_bone_meal(pointed_thing) end elseif n.name == "mcl_flowers:fern" then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) -- Fern: Grow into large fern local toppos = { x=pos.x, y=pos.y+1, z=pos.z } local topnode = minetest.get_node(toppos) @@ -374,7 +389,7 @@ minetest.register_craftitem("mcl_dye:white", { end -- Use the bone meal on the ground - if(mcl_dye.apply_bone_meal(pointed_thing) and (not minetest.is_creative_enabled(user:get_player_name()))) then + if (apply_bone_meal(pointed_thing, user) and (not minetest.is_creative_enabled(user:get_player_name()))) then itemstack:take_item() end return itemstack @@ -387,7 +402,7 @@ minetest.register_craftitem("mcl_dye:white", { else pointed_thing = { above = pos, under = droppos } end - local success = mcl_dye.apply_bone_meal(pointed_thing) + local success = apply_bone_meal(pointed_thing, nil) if success then stack:take_item() end From 7bbc1e99519e12e47e0f88d84b9a999aa0affdb4 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 6 Nov 2021 13:34:22 +0000 Subject: [PATCH 397/720] Add API.md for bone meal API --- mods/ITEMS/mcl_dye/API.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 mods/ITEMS/mcl_dye/API.md diff --git a/mods/ITEMS/mcl_dye/API.md b/mods/ITEMS/mcl_dye/API.md new file mode 100644 index 000000000..04169f966 --- /dev/null +++ b/mods/ITEMS/mcl_dye/API.md @@ -0,0 +1,14 @@ +# mcl_dye + +# Bone meal API +Callback and particle functions. + +## mcl_dye.add_bone_meal_particle(pos, def) +Spawns standard or custom bone meal particles. +* `pos`: position, is ignored if you define def.minpos and def.maxpos +* `def`: (optional) particle definition + +## mcl_dye.register_on_bone_meal_apply(function(pointed_thing, user)) +Called when the bone meal is applied anywhere. +* `pointed_thing`: exact pointing location (see Minetest API), where the bone meal is applied +* `user`: ObjectRef of the player who aplied the bone meal, can be nil! \ No newline at end of file From ea46c8741bc8e89b789ff63ef3e989e8e490ec37 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 7 Nov 2021 20:29:11 +0100 Subject: [PATCH 398/720] Add OpenCollective link and credits --- CONTRIBUTING.md | 8 ++++++++ CREDITS.md | 3 +++ README.md | 1 + mods/HUD/mcl_credits/people.lua | 3 +++ tools/generate_ingame_credits.lua | 1 + 5 files changed, 16 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index de13bce7d..27a820d87 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -32,6 +32,7 @@ playerbase on low spec computers, optimizations are hard to investigate. * [Matrix](https://app.element.io/#/room/#mc2:matrix.org) * [Reddit](https://www.reddit.com/r/MineClone2/) * [Minetest forums](https://forum.minetest.net/viewtopic.php?f=50&t=16407) +* [OpenCollective](https://opencollective.com/mineclone2) ## Using git MineClone2 is developed using the version control system @@ -194,9 +195,16 @@ MeseHub, let us know what you think about a topic and help us make decisions. Also, note that a lot of discussion takes place on the Discord server, so it's definitely worth checking it out. +### Funding +You can help pay for our infrastructure (Mesehub) by donating to our +OpenCollective link (See Links section). + ### Crediting If you opened or have contributed to an issue, you receive the `Community` role on our Discord (after asking for it). +OpenCollective Funders are credited in their own section in +`CREDITS.md` and receive a special role "Funder" on our discord (unless +they have made their donation Incognito). ## How you can help as a programmer (Almost) all the MineClone2 development is done using pull requests. diff --git a/CREDITS.md b/CREDITS.md index 95884dcac..dfbe58375 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -130,6 +130,9 @@ * todoporlalibertad * Marcin Serwin +## Funders +* 40W + ## Special thanks * celeron55 for creating Minetest * Jordach for the jukebox music compilation from Big Freaking Dig diff --git a/README.md b/README.md index fe32f0039..b8dc50f1f 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,7 @@ The MineClone2 repository is hosted at Mesehub. To contribute or report issues, * Matrix: * Reddit: * Minetest forums: +* OpenCollective: ## Target - Crucially, create a stable, moddable, free/libre clone of Minecraft diff --git a/mods/HUD/mcl_credits/people.lua b/mods/HUD/mcl_credits/people.lua index 2861b5052..8f1d4c2e9 100644 --- a/mods/HUD/mcl_credits/people.lua +++ b/mods/HUD/mcl_credits/people.lua @@ -132,6 +132,9 @@ return { "todoporlalibertad", "Marcin Serwin", }}, + {S("Funders"), 0xF7FF00, { + "40W", + }}, {S("Special thanks"), 0x00E9FF, { "celeron55 for creating Minetest", "Jordach for the jukebox music compilation from Big Freaking Dig", diff --git a/tools/generate_ingame_credits.lua b/tools/generate_ingame_credits.lua index 89b633ef0..db124aaf6 100755 --- a/tools/generate_ingame_credits.lua +++ b/tools/generate_ingame_credits.lua @@ -13,6 +13,7 @@ local colors = { ["3D Models"] = "0x0019FF", ["Textures"] = "0xFF9705", ["Translations"] = "0x00FF60", + ["Funders"] = "0xF7FF00", ["Special thanks"] = "0x00E9FF", } From a34ae040c8ea78d8a4f697bbce7485365f549f0a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 8 Nov 2021 14:02:22 +0100 Subject: [PATCH 399/720] Add ContentDB links --- CONTRIBUTING.md | 1 + README.md | 1 + 2 files changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 27a820d87..a7383df79 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -32,6 +32,7 @@ playerbase on low spec computers, optimizations are hard to investigate. * [Matrix](https://app.element.io/#/room/#mc2:matrix.org) * [Reddit](https://www.reddit.com/r/MineClone2/) * [Minetest forums](https://forum.minetest.net/viewtopic.php?f=50&t=16407) +* [ContentDB](https://content.minetest.net/packages/wuzzy/mineclone2/) * [OpenCollective](https://opencollective.com/mineclone2) ## Using git diff --git a/README.md b/README.md index b8dc50f1f..8f8f0b1e6 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,7 @@ The MineClone2 repository is hosted at Mesehub. To contribute or report issues, * Matrix: * Reddit: * Minetest forums: +* ContentDB: * OpenCollective: ## Target From 30ce6f8a779d5f4a3ab564c46b3d7ecbdaaf11b5 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 8 Nov 2021 13:16:20 +0000 Subject: [PATCH 400/720] Fix typo min -> max --- 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 274e31fcf..2f6b0f105 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -140,7 +140,7 @@ function mcl_dye.add_bone_meal_particle(pos, def) minvel = def.minvel or vector.new(0, 0, 0), maxvel = def.maxvel or vector.new(0, 0, 0), minacc = def.minacc or vector.new(0, 0, 0), - minacc = def.minacc or vector.new(0, 0, 0), + maxacc = def.maxacc or vector.new(0, 0, 0), minexptime = def.minexptime or 1, maxexptime = def.maxexptime or 4, minsize = def.minsize or 0.7, From 976f522b9d25952768a77f7d6a9ae990d186da37 Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Mon, 8 Nov 2021 15:33:53 +0100 Subject: [PATCH 401/720] Combine slowFoodTickTimer and fastFoodTickTimer to a single food_tick_timer --- mods/PLAYER/mcl_hunger/init.lua | 69 +++++++++++++-------------------- 1 file changed, 27 insertions(+), 42 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 535ccbed1..0405c28ef 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -136,57 +136,42 @@ end) -local fastFoodTickTimer = 0 -- 0.5 second cycle -local slowFoodTickTimer = 0 -- 4 second cycle + +local food_tick_timer = 0 minetest.register_globalstep(function(dtime) - fastFoodTickTimer = fastFoodTickTimer + dtime - slowFoodTickTimer = slowFoodTickTimer + dtime + food_tick_timer = food_tick_timer + dtime - local fastTimerWrapped = false -- if the fastFoodTickTimer wrapped around and everything dependent should be updated - local slowTimerWrapped = false - - if fastFoodTickTimer > 0.5 then - fastFoodTickTimer = 0 - fastTimerWrapped = true - end - if slowFoodTickTimer > 4.0 then - slowFoodTickTimer = 0 - slowTimerWrapped = true - end - - if fastTimerWrapped or slowTimerWrapped then -- only update players if something must be updated - for _,player in ipairs(minetest.get_connected_players()) do + for _,player in ipairs(minetest.get_connected_players()) do + + local player_name = player:get_player_name() + local food_level = mcl_hunger.get_hunger(player) + local food_saturation_level = mcl_hunger.get_saturation(player) + local player_health = player:get_hp() + + if food_tick_timer > 4.0 then + food_tick_timer = 0 - local playerName = player:get_player_name() - local foodLevel = mcl_hunger.get_hunger(player) - local foodSaturationLevel = mcl_hunger.get_saturation(player) - local playerHealth = player:get_hp() + if food_level >= 18 and player_health < 20 then --slow regenration + food_tick_timer = 0 + player:set_hp(player_health+1) + mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) + mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) - if playerHealth < 20 then - if foodLevel == 20 and foodSaturationLevel >= 6 then -- fast regeneration (2 health per second) - if fastTimerWrapped then - player:set_hp(playerHealth+1) - mcl_hunger.exhaust(playerName, mcl_hunger.EXHAUST_REGEN) - mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) - end - elseif foodLevel >= 18 then -- slow regeneration (1 health every 4 seconds) - if slowTimerWrapped then - player:set_hp(playerHealth+1) - mcl_hunger.exhaust(playerName, mcl_hunger.EXHAUST_REGEN) - mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) - end - end - end - - if foodLevel == 0 then --starvation - maximumStarvation = 1 -- the amount of health at which a player will stop to get harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) + elseif food_level == 0 then --starvation + maximumStarvation = 1 --the amount of health at which a player will stop to get harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) -- TODO: implement Minecraft-like difficulty modes and the update maximumStarvation here - if playerHealth > maximumStarvation and slowTimerWrapped then + if player_health > maximumStarvation then mcl_util.deal_damage(player, 1, {type = "starve"}) end end - + + elseif food_tick_timer > 0.5 and food_level == 20 and food_saturation_level >= 6 then --fast regeneration + food_tick_timer = 0 + player:set_hp(player_health+1) + mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) + mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) end + end end) From 2f053885414d0cc5d480e92d2acc63e7e7de8b1a Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Mon, 8 Nov 2021 15:49:05 +0100 Subject: [PATCH 402/720] Add one food_tick_timer per player instead of using one for all players. --- mods/PLAYER/mcl_hunger/init.lua | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 0405c28ef..1e3d07a47 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -137,11 +137,16 @@ end) -local food_tick_timer = 0 +local food_tick_timers = {} --one food_tick_timer per player, keys are the player-objects minetest.register_globalstep(function(dtime) - food_tick_timer = food_tick_timer + dtime - for _,player in ipairs(minetest.get_connected_players()) do + + local food_tick_timer = food_tick_timers[player] + if food_tick_timer == nil then + food_tick_timer = 0 + else + food_tick_timer = food_tick_timer + dtime + end local player_name = player:get_player_name() local food_level = mcl_hunger.get_hunger(player) @@ -172,6 +177,7 @@ minetest.register_globalstep(function(dtime) mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) end + food_tick_timers[player] = food_tick_timer --update food_tick_timer table end end) From e82d21040c952e78fa8c64c8a32405d311a8a43c Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Mon, 8 Nov 2021 19:15:56 +0100 Subject: [PATCH 403/720] minor changes, ipairs() replaced with pairs() --- mods/PLAYER/mcl_hunger/init.lua | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 1e3d07a47..3a7af7e67 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -139,15 +139,9 @@ end) local food_tick_timers = {} --one food_tick_timer per player, keys are the player-objects minetest.register_globalstep(function(dtime) - for _,player in ipairs(minetest.get_connected_players()) do + for _,player in pairs(minetest.get_connected_players()) do - local food_tick_timer = food_tick_timers[player] - if food_tick_timer == nil then - food_tick_timer = 0 - else - food_tick_timer = food_tick_timer + dtime - end - + local food_tick_timer = food_tick_timers[player] and food_tick_timers[player] + dtime or 0 local player_name = player:get_player_name() local food_level = mcl_hunger.get_hunger(player) local food_saturation_level = mcl_hunger.get_saturation(player) @@ -157,15 +151,14 @@ minetest.register_globalstep(function(dtime) food_tick_timer = 0 if food_level >= 18 and player_health < 20 then --slow regenration - food_tick_timer = 0 player:set_hp(player_health+1) mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) elseif food_level == 0 then --starvation - maximumStarvation = 1 --the amount of health at which a player will stop to get harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) + local maximum_starvation = 1 --the amount of health at which a player will stop to get harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) -- TODO: implement Minecraft-like difficulty modes and the update maximumStarvation here - if player_health > maximumStarvation then + if player_health > maximum_starvation then mcl_util.deal_damage(player, 1, {type = "starve"}) end end From a7bc460fae77f2a841bb7a5b9e735226373a4e44 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 9 Nov 2021 17:39:39 +0100 Subject: [PATCH 404/720] Fix boat and enchanting book texture glitches / warnings --- mods/ENTITIES/mcl_boats/init.lua | 10 ++++++++-- mods/ITEMS/mcl_enchanting/init.lua | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 311b07882..f46c14d46 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -115,7 +115,7 @@ local boat = { collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.3, 0.5}, visual = "mesh", mesh = "mcl_boats_boat.b3d", - textures = {"mcl_boats_texture_oak_boat.png"}, + textures = {"mcl_boats_texture_oak_boat.png", "mcl_boats_texture_oak_boat.png", "mcl_boats_texture_oak_boat.png", "mcl_boats_texture_oak_boat.png", "mcl_boats_texture_oak_boat.png"}, visual_size = boat_visual_size, hp_max = boat_max_hp, damage_texture_modifier = "^[colorize:white:0", @@ -148,6 +148,11 @@ function boat.on_activate(self, staticdata, dtime_s) self._v = data.v self._last_v = self._v self._itemstring = data.itemstring + + while #data.textures < 5 do + table.insert(data.textures, data.textures[1]) + end + self.object:set_properties({textures = data.textures}) end end @@ -434,8 +439,9 @@ for b=1, #boat_ids do pos = vector.add(pos, vector.multiply(dir, boat_y_offset_ground)) end local boat = minetest.add_entity(pos, "mcl_boats:boat") + local texture = "mcl_boats_texture_"..images[b].."_boat.png" boat:get_luaentity()._itemstring = itemstring - boat:set_properties({textures = { "mcl_boats_texture_"..images[b].."_boat.png" }}) + boat:set_properties({textures = { texture, texture, texture, texture, texture }}) boat:set_yaw(placer:get_look_horizontal()) if not minetest.is_creative_enabled(placer:get_player_name()) then itemstack:take_item() diff --git a/mods/ITEMS/mcl_enchanting/init.lua b/mods/ITEMS/mcl_enchanting/init.lua index 5aec1ced6..9f9fbd271 100644 --- a/mods/ITEMS/mcl_enchanting/init.lua +++ b/mods/ITEMS/mcl_enchanting/init.lua @@ -183,7 +183,7 @@ minetest.register_entity("mcl_enchanting:book", { collisionbox = {0, 0, 0}, pointable = false, physical = false, - textures = {"mcl_enchanting_book_entity.png"}, + textures = {"mcl_enchanting_book_entity.png", "mcl_enchanting_book_entity.png", "mcl_enchanting_book_entity.png", "mcl_enchanting_book_entity.png", "mcl_enchanting_book_entity.png"}, static_save = false, }, _player_near = false, From 017bf705e9f5b549a45d448b89a0d1d347db370c Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Tue, 9 Nov 2021 19:35:32 +0100 Subject: [PATCH 405/720] Fixing that player can regenerate health in death screen and then respawn without HP being set to maximum --- mods/PLAYER/mcl_hunger/init.lua | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 3a7af7e67..e54fb2fb2 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -150,10 +150,12 @@ minetest.register_globalstep(function(dtime) if food_tick_timer > 4.0 then food_tick_timer = 0 - if food_level >= 18 and player_health < 20 then --slow regenration - player:set_hp(player_health+1) - mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) - mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) + if food_level >= 18 then --slow regenration + if player_health > 0 and player_health < 20 then + player:set_hp(player_health+1) + mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) + mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) + end elseif food_level == 0 then --starvation local maximum_starvation = 1 --the amount of health at which a player will stop to get harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) @@ -164,10 +166,12 @@ minetest.register_globalstep(function(dtime) end elseif food_tick_timer > 0.5 and food_level == 20 and food_saturation_level >= 6 then --fast regeneration - food_tick_timer = 0 - player:set_hp(player_health+1) - mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) - mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) + if player_health > 0 and player_health < 20 then + food_tick_timer = 0 + player:set_hp(player_health+1) + mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) + mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) + end end food_tick_timers[player] = food_tick_timer --update food_tick_timer table From fa22ec4dd0b9c70eebb108bfef004e9100655bd2 Mon Sep 17 00:00:00 2001 From: iliekprogrammar Date: Wed, 10 Nov 2021 02:50:49 +0800 Subject: [PATCH 406/720] Add helper functions to update/merge tables. --- mods/CORE/mcl_util/init.lua | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index 363b9b5fe..d91c86f09 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -1,5 +1,27 @@ mcl_util = {} +-- Updates all values in t using values from to*. +function table.update(t, ...) + for _, to in ipairs{...} do + for k,v in pairs(to) do + t[k] = v + end + end + return t +end + +-- Updates nil values in t using values from to*. +function table.update_nil(t, ...) + for _, to in ipairs{...} do + for k,v in pairs(to) do + if t[k] == nil then + t[k] = v + end + end + end + return t +end + -- Based on minetest.rotate_and_place --[[ From f61143758edc46cb1e4d7feef5a78d35c7c31d75 Mon Sep 17 00:00:00 2001 From: iliekprogrammar Date: Wed, 10 Nov 2021 12:54:28 +0800 Subject: [PATCH 407/720] Fix small typo in API.md --- mods/CORE/mcl_worlds/API.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/CORE/mcl_worlds/API.md b/mods/CORE/mcl_worlds/API.md index dd96b01b5..69508e924 100644 --- a/mods/CORE/mcl_worlds/API.md +++ b/mods/CORE/mcl_worlds/API.md @@ -12,7 +12,7 @@ Params: * pos: position -## mcl_worlds.y_to_layer(y) +## mcl_worlds.y_to_layer(y) This function is used to calculate the minetest y layer and dimension of the given minecraft layer. Mainly used for ore generation. Takes an Y coordinate as input and returns: @@ -78,4 +78,4 @@ Table containing all function registered with mcl_worlds.register_on_dimension_c 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 +* dimension: string, new dimension ("overworld", "nether", "end", "void") From 8979230c4262411d8e2ae47ba8433e84e63585d1 Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 10 Nov 2021 17:15:27 +0000 Subject: [PATCH 408/720] Several fixes for applying bone meal to grass --- mods/ITEMS/mcl_dye/init.lua | 53 +++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index 2f6b0f105..2b4d8a2f2 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -288,38 +288,39 @@ local function apply_bone_meal(pointed_thing) return true elseif minetest.get_item_group(n.name, "grass_block") == 1 then -- Grass Block: Generate tall grass and random flowers all over the place - for i = -2, 2 do - for j = -2, 2 do - pos = pointed_thing.above - pos = {x=pos.x+i, y=pos.y, z=pos.z+j} - n = minetest.get_node(pos) - local n2 = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}) + for i = -7, 7 do + for j = -7, 7 do + for y = -1, 1 do + pos = vector.offset(pointed_thing.above, i, y, j) + n = minetest.get_node(pos) + local n2 = minetest.get_node(vector.offset(pos, 0, -1, 0)) - if n.name ~= "" and n.name == "air" and (minetest.get_item_group(n2.name, "grass_block_no_snow") == 1) then - -- Randomly generate flowers, tall grass or nothing - if math.random(1,100) <= 90 then - -- 90% tall grass, 10% flower - mcl_dye.add_bone_meal_particle(pos, {amount = 4}) - if math.random(1,100) <= 90 then - local col = n2.param2 - minetest.add_node(pos, {name="mcl_flowers:tallgrass", param2=col}) - else - local flowers_table - if mg_name == "v6" then - flowers_table = flowers_table_plains + if n.name ~= "" and n.name == "air" and (minetest.get_item_group(n2.name, "grass_block_no_snow") == 1) then + -- Randomly generate flowers, tall grass or nothing + if math.random(1, 100) <= 90 / ((math.abs(i) + math.abs(j)) / 2)then + -- 90% tall grass, 10% flower + mcl_dye.add_bone_meal_particle(pos, {amount = 4}) + if math.random(1,100) <= 90 then + local col = n2.param2 + minetest.add_node(pos, {name="mcl_flowers:tallgrass", param2=col}) else - local biome = minetest.get_biome_name(minetest.get_biome_data(pos).biome) - if biome == "Swampland" or biome == "Swampland_shore" or biome == "Swampland_ocean" or biome == "Swampland_deep_ocean" or biome == "Swampland_underground" then - flowers_table = flowers_table_swampland - elseif biome == "FlowerForest" or biome == "FlowerForest_beach" or biome == "FlowerForest_ocean" or biome == "FlowerForest_deep_ocean" or biome == "FlowerForest_underground" then - flowers_table = flowers_table_flower_forest - elseif biome == "Plains" or biome == "Plains_beach" or biome == "Plains_ocean" or biome == "Plains_deep_ocean" or biome == "Plains_underground" or biome == "SunflowerPlains" or biome == "SunflowerPlains_ocean" or biome == "SunflowerPlains_deep_ocean" or biome == "SunflowerPlains_underground" then + local flowers_table + if mg_name == "v6" then flowers_table = flowers_table_plains else - flowers_table = flowers_table_simple + local biome = minetest.get_biome_name(minetest.get_biome_data(pos).biome) + if biome == "Swampland" or biome == "Swampland_shore" or biome == "Swampland_ocean" or biome == "Swampland_deep_ocean" or biome == "Swampland_underground" then + flowers_table = flowers_table_swampland + elseif biome == "FlowerForest" or biome == "FlowerForest_beach" or biome == "FlowerForest_ocean" or biome == "FlowerForest_deep_ocean" or biome == "FlowerForest_underground" then + flowers_table = flowers_table_flower_forest + elseif biome == "Plains" or biome == "Plains_beach" or biome == "Plains_ocean" or biome == "Plains_deep_ocean" or biome == "Plains_underground" or biome == "SunflowerPlains" or biome == "SunflowerPlains_ocean" or biome == "SunflowerPlains_deep_ocean" or biome == "SunflowerPlains_underground" then + flowers_table = flowers_table_plains + else + flowers_table = flowers_table_simple + end end + minetest.add_node(pos, {name=flowers_table[math.random(1, #flowers_table)]}) end - minetest.add_node(pos, {name=flowers_table[math.random(1, #flowers_table)]}) end end end From 0b6467d6798c8620db1dee91152feda66087fdfe Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Thu, 11 Nov 2021 16:03:04 +0100 Subject: [PATCH 409/720] Reduce creeper run_velocity to 2.1, to fix #1691 --- mods/ENTITIES/mobs_mc/creeper.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 999cc5f2d..616e823c8 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -37,7 +37,7 @@ mobs:register_mob("mobs_mc:creeper", { }, makes_footstep_sound = false, walk_velocity = 1.05, - run_velocity = 3.25, + run_velocity = 2.1, runaway_from = { "mobs_mc:ocelot", "mobs_mc:cat" }, attack_type = "explode", eye_height = 1.25, From 68810a2a74ff3dca000234b26c749fb5486d5996 Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Thu, 11 Nov 2021 16:47:32 +0100 Subject: [PATCH 410/720] Change creeper fuse range and defuse range according to minecraft wiki: https://minecraft.fandom.com/wiki/Creeper and: https://minecraft.fandom.com/wiki/Explosion. Fix of #1689 --- mods/ENTITIES/mobs_mc/creeper.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 616e823c8..eb1f108c6 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -47,8 +47,8 @@ mobs:register_mob("mobs_mc:creeper", { --explosion_radius = 3, --explosion_damage_radius = 6, --explosiontimer_reset_radius = 6, - reach = 1.5, - defuse_reach = 4, + reach = 3, + defuse_reach = 5.2, explosion_timer = 0.3, allow_fuse_reset = true, stop_to_explode = true, @@ -186,8 +186,8 @@ mobs:register_mob("mobs_mc:creeper_charged", { --explosion_radius = 3, --explosion_damage_radius = 6, --explosiontimer_reset_radius = 3, - reach = 1.5, - defuse_reach = 4, + reach = 3, + defuse_reach = 10.4, explosion_timer = 0.3, allow_fuse_reset = true, stop_to_explode = true, From 10a5f8c4bfdbfec27fe83ab3c40478e7217c3680 Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Thu, 11 Nov 2021 16:50:29 +0100 Subject: [PATCH 411/720] Adding attribute hostile=true to charged creeper to fix that the charged creeper has no behavior: Issue #1756 --- mods/ENTITIES/mobs_mc/creeper.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index eb1f108c6..2b66d0f07 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -151,6 +151,7 @@ mobs:register_mob("mobs_mc:creeper_charged", { description = S("Charged Creeper"), type = "monster", spawn_class = "hostile", + hostile = true, hp_min = 20, hp_max = 20, xp_min = 5, From 03d22852ee8a5b203840266f39d302a8854e3cfb Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Thu, 11 Nov 2021 16:56:44 +0100 Subject: [PATCH 412/720] Replace mobs:boom with equivalent mcl_explosions.exlode() to fix game crash when creeper is right-clicked with flint and steel. Issue #1753 --- mods/ENTITIES/mobs_mc/creeper.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 2b66d0f07..1e23231c1 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -95,7 +95,8 @@ mobs:register_mob("mobs_mc:creeper", { if self._forced_explosion_countdown_timer then self._forced_explosion_countdown_timer = self._forced_explosion_countdown_timer - dtime if self._forced_explosion_countdown_timer <= 0 then - mobs:boom(self, mcl_util.get_object_center(self.object), self.explosion_strength) + local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false + mcl_explosions.explode(mcl_util.get_object_center(self.object), self.explosion_strength, { griefing = mobs_griefing, drop_chance = 1.0}, self.object) end end end, @@ -220,7 +221,8 @@ mobs:register_mob("mobs_mc:creeper_charged", { if self._forced_explosion_countdown_timer then self._forced_explosion_countdown_timer = self._forced_explosion_countdown_timer - dtime if self._forced_explosion_countdown_timer <= 0 then - mobs:boom(self, mcl_util.get_object_center(self.object), self.explosion_strength) + local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false + mcl_explosions.explode(mcl_util.get_object_center(self.object), self.explosion_strength, { griefing = mobs_griefing, drop_chance = 1.0}, self.object) end end end, From 0564121183177331901cb5a99e501500f086e535 Mon Sep 17 00:00:00 2001 From: iliekprogrammar Date: Fri, 12 Nov 2021 02:28:27 +0800 Subject: [PATCH 413/720] Code style for #1890 --- mods/PLAYER/mcl_hunger/init.lua | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index e54fb2fb2..21c1e0860 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -134,38 +134,37 @@ minetest.register_on_player_hpchange(function(player, hp_change) end end) - - - -local food_tick_timers = {} --one food_tick_timer per player, keys are the player-objects +local food_tick_timers = {} -- one food_tick_timer per player, keys are the player-objects minetest.register_globalstep(function(dtime) for _,player in pairs(minetest.get_connected_players()) do - + local food_tick_timer = food_tick_timers[player] and food_tick_timers[player] + dtime or 0 local player_name = player:get_player_name() local food_level = mcl_hunger.get_hunger(player) local food_saturation_level = mcl_hunger.get_saturation(player) local player_health = player:get_hp() - + if food_tick_timer > 4.0 then food_tick_timer = 0 - - if food_level >= 18 then --slow regenration + + if food_level >= 18 then -- slow regenration if player_health > 0 and player_health < 20 then player:set_hp(player_health+1) mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) end - - elseif food_level == 0 then --starvation - local maximum_starvation = 1 --the amount of health at which a player will stop to get harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) + + elseif food_level == 0 then -- starvation + -- the amount of health at which a player will stop to get + -- harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) + local maximum_starvation = 1 -- TODO: implement Minecraft-like difficulty modes and the update maximumStarvation here if player_health > maximum_starvation then mcl_util.deal_damage(player, 1, {type = "starve"}) end end - - elseif food_tick_timer > 0.5 and food_level == 20 and food_saturation_level >= 6 then --fast regeneration + + elseif food_tick_timer > 0.5 and food_level == 20 and food_saturation_level >= 6 then -- fast regeneration if player_health > 0 and player_health < 20 then food_tick_timer = 0 player:set_hp(player_health+1) @@ -173,8 +172,8 @@ minetest.register_globalstep(function(dtime) mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) end end - - food_tick_timers[player] = food_tick_timer --update food_tick_timer table + + food_tick_timers[player] = food_tick_timer -- update food_tick_timer table end end) From 740f7583ef991e59b8f62ce3344744515aa2f10d Mon Sep 17 00:00:00 2001 From: iliekprogrammar Date: Fri, 12 Nov 2021 02:49:18 +0800 Subject: [PATCH 414/720] Add Dieter44 to CREDITS.md --- CREDITS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.md b/CREDITS.md index dfbe58375..1381b1c37 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -67,6 +67,7 @@ * SmallJoker * Sven792 * aldum +* Dieter44 ## MineClone5 * kay27 From 2a08f3143561d52e01fad66a5b4dadd1b765b0a2 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 12 Nov 2021 14:09:59 +0000 Subject: [PATCH 415/720] Use particlespawners for better performance (sponge particles) --- mods/ITEMS/mcl_sponges/init.lua | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_sponges/init.lua b/mods/ITEMS/mcl_sponges/init.lua index a1998ecb0..e9755479b 100644 --- a/mods/ITEMS/mcl_sponges/init.lua +++ b/mods/ITEMS/mcl_sponges/init.lua @@ -115,16 +115,22 @@ function place_wet_sponge(itemstack, placer, pointed_thing) if mcl_worlds.pos_to_dimension(pointed_thing.above) == "nether" then minetest.item_place_node(ItemStack("mcl_sponges:sponge"), placer, pointed_thing) local pos = pointed_thing.above - for n = 0, 25 do - minetest.add_particle({ - pos = {x = pos.x + math.random(-1, 1)*math.random()/2, y = pos.y + 0.6, z = pos.z + math.random(-1, 1)*math.random()/2}, - velocity = {x = 0, y = math.random(), z = 0}, - acceleration = {x=0, y=0, z=0}, - expirationtime = math.random(), + + for n = 1, 5 do + minetest.add_particlespawner({ + amount = 5, + time = 0.1, + minpos = vector.offset(pos, -0.5, 0.6, -0.5), + maxpos = vector.offset(pos, 0.5, 0.6, 0.5), + minvel = vector.new(0, 0.1, 0), + maxvel = vector.new(0, 1, 0), + minexptime = 0.1, + maxexptime = 1, + minsize = 2, + maxsize = 5, collisiondetection = false, vertical = false, - size = math.random(2, 5), - texture = "mcl_particles_sponge"..math.random(1, 5)..".png", + texture = "mcl_particles_sponge" .. n .. ".png", }) end if not minetest.is_creative_enabled(name) then From 490e40d042325302dd5a7e58880cba82be514937 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 12 Nov 2021 15:41:09 +0000 Subject: [PATCH 416/720] Bone meal particles: add some velocity, correct glow --- mods/ITEMS/mcl_dye/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index 2b4d8a2f2..dfb962446 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -137,8 +137,8 @@ function mcl_dye.add_bone_meal_particle(pos, def) time = def.time or 0.1, minpos = def.minpos or vector.subtract(pos, 0.5), maxpos = def.maxpos or vector.add(pos, 0.5), - minvel = def.minvel or vector.new(0, 0, 0), - maxvel = def.maxvel or vector.new(0, 0, 0), + minvel = def.minvel or vector.new(-0.01, 0.01, -0.01), + maxvel = def.maxvel or vector.new(0.01, 0.01, 0.01), minacc = def.minacc or vector.new(0, 0, 0), maxacc = def.maxacc or vector.new(0, 0, 0), minexptime = def.minexptime or 1, @@ -146,7 +146,7 @@ function mcl_dye.add_bone_meal_particle(pos, def) minsize = def.minsize or 0.7, maxsize = def.maxsize or 2.4, texture = "mcl_particles_bonemeal.png^[colorize:#00EE00:125", -- TODO: real MC color - glow = def.glow or 5, + glow = def.glow or 1, }) end From 0cc0a7e01de8fc00dd63eab1b960701940719a66 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 12 Nov 2021 17:49:27 +0000 Subject: [PATCH 417/720] Make dripping particles MC-like --- mods/ENTITIES/drippingwater/init.lua | 167 ++++++++++----------------- 1 file changed, 59 insertions(+), 108 deletions(-) diff --git a/mods/ENTITIES/drippingwater/init.lua b/mods/ENTITIES/drippingwater/init.lua index e17bdda40..a4855acdc 100644 --- a/mods/ENTITIES/drippingwater/init.lua +++ b/mods/ENTITIES/drippingwater/init.lua @@ -1,114 +1,65 @@ ---Dripping Water Mod ---by kddekadenz +-- Dripping Water Mod +-- by kddekadenz local math = math -- License of code, textures & sounds: CC0 ---Drop entities +local function register_drop(liquid, glow, sound, nodes) + minetest.register_entity("drippingwater:drop_" .. liquid, { + hp_max = 1, + physical = true, + collide_with_objects = false, + collisionbox = {-0.01, 0.01, -0.01, 0.01, 0.01, 0.01}, + glow = glow, + pointable = false, + visual = "sprite", + visual_size = {x = 0.1, y = 0.1}, + textures = {""}, + spritediv = {x = 1, y = 1}, + initial_sprite_basepos = {x = 0, y = 0}, + static_save = false, + _dropped = false, + on_activate = function(self) + self.object:set_properties({ + textures = {"[combine:2x2:" .. -math.random(1, 16) .. "," .. -math.random(1, 16) .. "=default_" .. liquid .. "_source_animated.png"} + }) + 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(vector.new(0, -5, 0)) + end + if minetest.get_node(vector.offset(ownpos, 0, 0.5, 0)).name == "air" then + self.object:set_acceleration(vector.new(0, -5, 0)) + end + if minetest.get_node(vector.offset(ownpos, 0, -0.1, 0)).name ~= "air" then + if not self.object:get_luaentity()._dropped then + self.object:get_luaentity()._dropped = true + minetest.sound_play({name = "drippingwater_" .. sound .. "drip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}, true) + end + if k < 3 then + self.object:remove() + end + end + end, + }) + minetest.register_abm({ + label = "Create drops", + nodenames = nodes, + neighbors = {"group:" .. liquid}, + interval = 2, + chance = 22, + action = function(pos) + if minetest.get_item_group(minetest.get_node(vector.offset(pos, 0, 1, 0)).name, liquid) ~= 0 + and minetest.get_node(vector.offset(pos, 0, -1, 0)).name == "air" then + local x, z = math.random(-45, 45) / 100, math.random(-45, 45) / 100 + minetest.add_entity(vector.offset(pos, x, -0.520, z), "drippingwater:drop_" .. liquid) + end + end, + }) +end ---water - -local water_tex = "default_water_source_animated.png^[verticalframe:16:0" -minetest.register_entity("drippingwater:drop_water", { - hp_max = 1, - physical = true, - collide_with_objects = false, - collisionbox = {-0.025,-0.05,-0.025,0.025,-0.01,0.025}, - pointable = false, - visual = "cube", - visual_size = {x=0.05, y=0.1}, - textures = {water_tex, water_tex, water_tex, water_tex, water_tex, water_tex}, - 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 - 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) - end - end, -}) - - ---lava - -local lava_tex = "default_lava_source_animated.png^[verticalframe:16:0" -minetest.register_entity("drippingwater:drop_lava", { - hp_max = 1, - physical = true, - collide_with_objects = false, - collisionbox = {-0.025,-0.05,-0.025,0.025,-0.01,0.025}, - glow = math.max(7, minetest.registered_nodes["mcl_core:lava_source"].light_source - 3), - pointable = false, - visual = "cube", - visual_size = {x=0.05, y=0.1}, - textures = {lava_tex, lava_tex, lava_tex, lava_tex, lava_tex, lava_tex}, - 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 - 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) - end - end, -}) - - - ---Create drop - -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 - 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, -}) - ---Create lava drop - -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 - 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, -}) \ No newline at end of file +register_drop("water", 1, "", {"group:opaque", "group:leaves"}) +register_drop("lava", math.max(7, minetest.registered_nodes["mcl_core:lava_source"].light_source - 3), "lava", {"group:opaque"}) \ No newline at end of file From 7ed964756e1798ba7e2feb6b3459e1fb66dae914 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 12 Nov 2021 18:00:04 +0000 Subject: [PATCH 418/720] local luaentity --- mods/ENTITIES/drippingwater/init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/drippingwater/init.lua b/mods/ENTITIES/drippingwater/init.lua index a4855acdc..45a211d8f 100644 --- a/mods/ENTITIES/drippingwater/init.lua +++ b/mods/ENTITIES/drippingwater/init.lua @@ -35,8 +35,9 @@ local function register_drop(liquid, glow, sound, nodes) self.object:set_acceleration(vector.new(0, -5, 0)) end if minetest.get_node(vector.offset(ownpos, 0, -0.1, 0)).name ~= "air" then - if not self.object:get_luaentity()._dropped then - self.object:get_luaentity()._dropped = true + local ent = self.object:get_luaentity() + if not ent._dropped then + ent._dropped = true minetest.sound_play({name = "drippingwater_" .. sound .. "drip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}, true) end if k < 3 then From 5515e2baa169ee3e5e2fe55043f8fe3272a5269a Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 12 Nov 2021 21:49:47 +0000 Subject: [PATCH 419/720] Add 64 items to inventory when creative is on --- mods/HUD/mcl_inventory/creative.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 2be0be4bc..43301ce0b 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -667,3 +667,9 @@ minetest.register_on_joinplayer(function(player) init(player) mcl_inventory.set_creative_formspec(player, 0, 1, nil, false, "nix", "") end) + +minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info) + if minetest.is_creative_enabled(player:get_player_name()) and action == "put" and inventory_info.listname == "main" then + player:get_inventory():set_stack("main", inventory_info.index, inventory_info.stack:get_name() .. " 64") + end +end) From 96c4fb60d8641b4181edb902ed24dbf173828d09 Mon Sep 17 00:00:00 2001 From: iliekprogrammar Date: Sat, 13 Nov 2021 10:46:16 +0800 Subject: [PATCH 420/720] Fix crash on startup during immediate runtime by mcl_burning The crash occurs if mcl_burning:data is deserialized to nil. The cause of mcl_burning being set to "return nil" is unknown. Therefore, when it occurs, it will be logged as warning. --- mods/ENTITIES/mcl_burning/init.lua | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/mods/ENTITIES/mcl_burning/init.lua b/mods/ENTITIES/mcl_burning/init.lua index 313e75dca..a47824537 100644 --- a/mods/ENTITIES/mcl_burning/init.lua +++ b/mods/ENTITIES/mcl_burning/init.lua @@ -44,18 +44,18 @@ minetest.register_on_respawnplayer(function(player) mcl_burning.extinguish(player) end) -minetest.register_on_joinplayer(function(player) - local storage - - local burn_data = player:get_meta():get_string("mcl_burning:data") - if burn_data == "" then - storage = {} - else - storage = minetest.deserialize(burn_data) +function mcl_burning.init_player(player) + local meta = player:get_meta() + -- NOTE: mcl_burning:data may be "return nil" (which deserialize into nil) for reasons unknown. + if meta:get_string("mcl_burning:data"):find("return nil", 1, true) then + minetest.log("warning", "[mcl_burning] 'mcl_burning:data' player meta field is invalid! Please report this bug") end - - mcl_burning.storage[player] = storage + mcl_burning.storage[player] = meta:contains("mcl_burning:data") and minetest.deserialize(meta:get_string("mcl_burning:data")) or {} mcl_burning.channels[player] = minetest.mod_channel_join("mcl_burning:" .. player:get_player_name()) +end + +minetest.register_on_joinplayer(function(player) + mcl_burning.init_player(player) end) minetest.register_on_leaveplayer(function(player) From bd1491854369913b8e1373dd5cadcd7280415535 Mon Sep 17 00:00:00 2001 From: iliekprogrammar Date: Sat, 13 Nov 2021 12:12:20 +0800 Subject: [PATCH 421/720] Reduce defuse reach for charged creeper 5.2 is actually half of the estimated MC creeper defuse range, which is 10.4. The reason for this change is to balance the creeper in MCL2 where it fuses whilst moving making it more difficult than MC. In MC, the creeper does not move while fusing. --- mods/ENTITIES/mobs_mc/creeper.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 1e23231c1..a7e33d1bd 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -189,7 +189,7 @@ mobs:register_mob("mobs_mc:creeper_charged", { --explosion_damage_radius = 6, --explosiontimer_reset_radius = 3, reach = 3, - defuse_reach = 10.4, + defuse_reach = 5.2, explosion_timer = 0.3, allow_fuse_reset = true, stop_to_explode = true, From ae8068cca671f5e215045fa4227e05b21fe5ebc5 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 13 Nov 2021 11:17:46 +0000 Subject: [PATCH 422/720] Use stack_max instead of 64 for all items --- mods/HUD/mcl_inventory/creative.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 43301ce0b..4f9f1685a 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -670,6 +670,7 @@ end) minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info) if minetest.is_creative_enabled(player:get_player_name()) and action == "put" and inventory_info.listname == "main" then - player:get_inventory():set_stack("main", inventory_info.index, inventory_info.stack:get_name() .. " 64") + local stack = inventory_info.stack + player:get_inventory():set_stack("main", inventory_info.index, stack:get_name() .. " " .. stack:get_stack_max()) end -end) +end) \ No newline at end of file From d4da8555708f2db411cbd0352cc4d7e62b7ee99d Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 13 Nov 2021 12:25:10 +0000 Subject: [PATCH 423/720] Add button to switch between max stack size and just one item --- mods/HUD/mcl_inventory/creative.lua | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 4f9f1685a..de03886d9 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -289,6 +289,17 @@ filtername["inv"] = S("Survival Inventory") bg["default"] = dark_bg end]] +local function get_stack_size(player) + return player:get_meta():get_int("switch_stack") +end + +local function set_stack_size(player, n) + player:get_meta():set_int("switch_stack", n) +end + +minetest.register_on_newplayer(function (player) + set_stack_size(player, 64) +end) function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, show, page, filter) --reset_menu_item_bg() @@ -349,6 +360,11 @@ function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, armor_slot_imgs = armor_slot_imgs .. "image[5.5,2.75;1,1;mcl_inventory_empty_armor_slot_boots.png]" end + local switch_overlay = "blank.png" + if get_stack_size(player) == 64 then + switch_overlay = "mcl_inventory_button_switch_stack.png" + end + -- Survival inventory slots main_list = "list[current_player;main;0,3.75;9,3;9]".. mcl_formspec.get_itemslot_bg(0,3.75,9,3).. @@ -376,7 +392,10 @@ function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, -- achievements button "image_button[9,4;1,1;mcl_achievements_button.png;__mcl_achievements;]".. --"style_type[image_button;border=;bgimg=;bgimg_pressed=]".. - "tooltip[__mcl_achievements;"..F(S("Achievements")).."]" + "tooltip[__mcl_achievements;"..F(S("Achievements")).."]".. + -- switch stack size button + "image_button[9,5;1,1;default_apple.png^" .. switch_overlay .. ";__switch_stack;]".. + "tooltip[__switch_stack;"..F(S("Switch stack size")).."]" -- For shortcuts listrings = listrings .. @@ -544,6 +563,12 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) elseif fields.search and not fields.creative_next and not fields.creative_prev then set_inv_search(string.lower(fields.search),player) page = "nix" + elseif fields.__switch_stack then + local switch = 1 + if get_stack_size(player) == 1 then + switch = 64 + end + set_stack_size(player, switch) end if page then @@ -669,7 +694,7 @@ minetest.register_on_joinplayer(function(player) end) minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info) - if minetest.is_creative_enabled(player:get_player_name()) and action == "put" and inventory_info.listname == "main" then + if minetest.is_creative_enabled(player:get_player_name()) and action == "put" and inventory_info.listname == "main" and get_stack_size(player) == 64 then local stack = inventory_info.stack player:get_inventory():set_stack("main", inventory_info.index, stack:get_name() .. " " .. stack:get_stack_max()) end From d7e59f6a359c2bb371e63829b51f74ae685735ab Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 13 Nov 2021 12:26:01 +0000 Subject: [PATCH 424/720] Add switch stack size overlay texture --- .../mcl_inventory_button_switch_stack.png | Bin 0 -> 8936 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_button_switch_stack.png diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_button_switch_stack.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_button_switch_stack.png new file mode 100644 index 0000000000000000000000000000000000000000..ac56d833d0c6c4efcb9633794ffc9d767247d962 GIT binary patch literal 8936 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 Date: Sat, 13 Nov 2021 15:19:34 +0000 Subject: [PATCH 425/720] localize wielditem in crossbow.lua (Fix #1901) --- mods/ITEMS/mcl_bows/crossbow.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_bows/crossbow.lua b/mods/ITEMS/mcl_bows/crossbow.lua index e3124156b..5ae21a1f3 100644 --- a/mods/ITEMS/mcl_bows/crossbow.lua +++ b/mods/ITEMS/mcl_bows/crossbow.lua @@ -92,7 +92,7 @@ local function get_arrow(player) return arrow_stack, arrow_stack_id end -local function player_shoot_arrow(itemstack, player, power, damage, is_critical) +local function player_shoot_arrow(wielditem, player, power, damage, is_critical) local has_multishot_enchantment = mcl_enchanting.has_enchantment(player:get_wielded_item(), "multishot") local arrow_itemstring = wielditem:get_meta():get("arrow") @@ -286,7 +286,7 @@ end) controls.register_on_press(function(player, key, time) if key~="LMB" then return end - wielditem = player:get_wielded_item() + local wielditem = player:get_wielded_item() if wielditem:get_name()=="mcl_bows:crossbow_loaded" or wielditem:get_name()=="mcl_bows:crossbow_loaded_enchanted" then local enchanted = mcl_enchanting.is_enchanted(wielditem:get_name()) local speed, damage From bcb6251d2058d46ca75cb262fd2628ea44526731 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 13 Nov 2021 17:26:17 +0000 Subject: [PATCH 426/720] Use label instead of extra texture --- mods/HUD/mcl_inventory/creative.lua | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index de03886d9..a3314ec0a 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -1,5 +1,6 @@ local S = minetest.get_translator(minetest.get_current_modname()) local F = minetest.formspec_escape +local C = minetest.colorize -- Prepare player info table local players = {} @@ -360,11 +361,8 @@ function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, armor_slot_imgs = armor_slot_imgs .. "image[5.5,2.75;1,1;mcl_inventory_empty_armor_slot_boots.png]" end - local switch_overlay = "blank.png" - if get_stack_size(player) == 64 then - switch_overlay = "mcl_inventory_button_switch_stack.png" - end - + local stack_size = get_stack_size(player) + -- Survival inventory slots main_list = "list[current_player;main;0,3.75;9,3;9]".. mcl_formspec.get_itemslot_bg(0,3.75,9,3).. @@ -394,8 +392,9 @@ function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, --"style_type[image_button;border=;bgimg=;bgimg_pressed=]".. "tooltip[__mcl_achievements;"..F(S("Achievements")).."]".. -- switch stack size button - "image_button[9,5;1,1;default_apple.png^" .. switch_overlay .. ";__switch_stack;]".. - "tooltip[__switch_stack;"..F(S("Switch stack size")).."]" + "image_button[9,5;1,1;default_apple.png;__switch_stack;]".. + "label[9.4,5.4;".. F(C("#FFFFFF", stack_size ~= 1 and stack_size or "")) .."]".. + "tooltip[__switch_stack;"..F(S("Switch stack size")).."]" -- For shortcuts listrings = listrings .. From add97d39a6171ee5bc20c829dc98074d37fcc14f Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 13 Nov 2021 17:28:13 +0000 Subject: [PATCH 427/720] delete overlay texture --- .../mcl_inventory_button_switch_stack.png | Bin 8936 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_button_switch_stack.png diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_button_switch_stack.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_button_switch_stack.png deleted file mode 100644 index ac56d833d0c6c4efcb9633794ffc9d767247d962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8936 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 Date: Sat, 13 Nov 2021 18:56:52 +0000 Subject: [PATCH 428/720] Use on_joinplayer instead of on_newplayer --- mods/HUD/mcl_inventory/creative.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index a3314ec0a..d2dedd556 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -291,15 +291,17 @@ filtername["inv"] = S("Survival Inventory") end]] local function get_stack_size(player) - return player:get_meta():get_int("switch_stack") + return player:get_meta():get_int("mcl_inventory:switch_stack") end local function set_stack_size(player, n) - player:get_meta():set_int("switch_stack", n) + player:get_meta():set_int("mcl_inventory:switch_stack", n) end -minetest.register_on_newplayer(function (player) - set_stack_size(player, 64) +minetest.register_on_joinplayer(function (player) + if get_stack_size(player) == 0 then + set_stack_size(player, 64) + end end) function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, show, page, filter) From 7ef6613f0967718463e9be3f1f90f97811d8346a Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 15 Nov 2021 21:39:43 +0100 Subject: [PATCH 429/720] Rename drippingwater mod to mcl_dripping --- .../{drippingwater => mcl_dripping}/init.lua | 0 .../{drippingwater => mcl_dripping}/mod.conf | 0 .../{drippingwater => mcl_dripping}/readme.txt | 0 .../sounds/drippingwater_drip.1.ogg | Bin .../sounds/drippingwater_drip.2.ogg | Bin .../sounds/drippingwater_drip.3.ogg | Bin .../sounds/drippingwater_lavadrip.1.ogg | Bin .../sounds/drippingwater_lavadrip.2.ogg | Bin .../sounds/drippingwater_lavadrip.3.ogg | Bin 9 files changed, 0 insertions(+), 0 deletions(-) rename mods/ENTITIES/{drippingwater => mcl_dripping}/init.lua (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/mod.conf (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/readme.txt (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/sounds/drippingwater_drip.1.ogg (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/sounds/drippingwater_drip.2.ogg (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/sounds/drippingwater_drip.3.ogg (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/sounds/drippingwater_lavadrip.1.ogg (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/sounds/drippingwater_lavadrip.2.ogg (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/sounds/drippingwater_lavadrip.3.ogg (100%) diff --git a/mods/ENTITIES/drippingwater/init.lua b/mods/ENTITIES/mcl_dripping/init.lua similarity index 100% rename from mods/ENTITIES/drippingwater/init.lua rename to mods/ENTITIES/mcl_dripping/init.lua diff --git a/mods/ENTITIES/drippingwater/mod.conf b/mods/ENTITIES/mcl_dripping/mod.conf similarity index 100% rename from mods/ENTITIES/drippingwater/mod.conf rename to mods/ENTITIES/mcl_dripping/mod.conf diff --git a/mods/ENTITIES/drippingwater/readme.txt b/mods/ENTITIES/mcl_dripping/readme.txt similarity index 100% rename from mods/ENTITIES/drippingwater/readme.txt rename to mods/ENTITIES/mcl_dripping/readme.txt diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.1.ogg b/mods/ENTITIES/mcl_dripping/sounds/drippingwater_drip.1.ogg similarity index 100% rename from mods/ENTITIES/drippingwater/sounds/drippingwater_drip.1.ogg rename to mods/ENTITIES/mcl_dripping/sounds/drippingwater_drip.1.ogg diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.2.ogg b/mods/ENTITIES/mcl_dripping/sounds/drippingwater_drip.2.ogg similarity index 100% rename from mods/ENTITIES/drippingwater/sounds/drippingwater_drip.2.ogg rename to mods/ENTITIES/mcl_dripping/sounds/drippingwater_drip.2.ogg diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.3.ogg b/mods/ENTITIES/mcl_dripping/sounds/drippingwater_drip.3.ogg similarity index 100% rename from mods/ENTITIES/drippingwater/sounds/drippingwater_drip.3.ogg rename to mods/ENTITIES/mcl_dripping/sounds/drippingwater_drip.3.ogg diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.1.ogg b/mods/ENTITIES/mcl_dripping/sounds/drippingwater_lavadrip.1.ogg similarity index 100% rename from mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.1.ogg rename to mods/ENTITIES/mcl_dripping/sounds/drippingwater_lavadrip.1.ogg diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.2.ogg b/mods/ENTITIES/mcl_dripping/sounds/drippingwater_lavadrip.2.ogg similarity index 100% rename from mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.2.ogg rename to mods/ENTITIES/mcl_dripping/sounds/drippingwater_lavadrip.2.ogg diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.3.ogg b/mods/ENTITIES/mcl_dripping/sounds/drippingwater_lavadrip.3.ogg similarity index 100% rename from mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.3.ogg rename to mods/ENTITIES/mcl_dripping/sounds/drippingwater_lavadrip.3.ogg From d2a03ec0b91c7e5580daab13cea2b585501e50d6 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 15 Nov 2021 21:44:23 +0100 Subject: [PATCH 430/720] Rename entity ids --- mods/ENTITIES/mcl_dripping/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_dripping/init.lua b/mods/ENTITIES/mcl_dripping/init.lua index 45a211d8f..57ba7ecfe 100644 --- a/mods/ENTITIES/mcl_dripping/init.lua +++ b/mods/ENTITIES/mcl_dripping/init.lua @@ -6,7 +6,7 @@ local math = math -- License of code, textures & sounds: CC0 local function register_drop(liquid, glow, sound, nodes) - minetest.register_entity("drippingwater:drop_" .. liquid, { + minetest.register_entity("mcl_dripping:drop_" .. liquid, { hp_max = 1, physical = true, collide_with_objects = false, @@ -56,7 +56,7 @@ local function register_drop(liquid, glow, sound, nodes) if minetest.get_item_group(minetest.get_node(vector.offset(pos, 0, 1, 0)).name, liquid) ~= 0 and minetest.get_node(vector.offset(pos, 0, -1, 0)).name == "air" then local x, z = math.random(-45, 45) / 100, math.random(-45, 45) / 100 - minetest.add_entity(vector.offset(pos, x, -0.520, z), "drippingwater:drop_" .. liquid) + minetest.add_entity(vector.offset(pos, x, -0.520, z), "mcl_dripping:drop_" .. liquid) end end, }) From a9804879e208de4c8774498d05bb17a5ff0facaf Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 15 Nov 2021 21:54:16 +0100 Subject: [PATCH 431/720] Rename drippingwater to mcl_dripping in mod.conf and readme.txt --- mods/ENTITIES/mcl_dripping/mod.conf | 2 +- mods/ENTITIES/mcl_dripping/readme.txt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_dripping/mod.conf b/mods/ENTITIES/mcl_dripping/mod.conf index 1de118f4c..921d5e59f 100644 --- a/mods/ENTITIES/mcl_dripping/mod.conf +++ b/mods/ENTITIES/mcl_dripping/mod.conf @@ -1,4 +1,4 @@ -name = drippingwater +name = mcl_dripping author = kddekadenz description = Drops are generated rarely under solid nodes depends = mcl_core diff --git a/mods/ENTITIES/mcl_dripping/readme.txt b/mods/ENTITIES/mcl_dripping/readme.txt index f609163ed..afe35608e 100644 --- a/mods/ENTITIES/mcl_dripping/readme.txt +++ b/mods/ENTITIES/mcl_dripping/readme.txt @@ -1,12 +1,12 @@ -Dripping Water Mod +Dripping Mod by kddekadenz -modified for MineClone 2 by Wuzzy +modified for MineClone 2 by Wuzzy and NO11 Installing instructions: - 1. Copy the drippingwater mod folder into games/gamemode/mods + 1. Copy the mcl_dripping mod folder into games/gamemode/mods 2. Start game and enjoy :) From c757e98b4fbd9110d5afbcda53f4fcc37131ea84 Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 17 Nov 2021 00:37:11 +0100 Subject: [PATCH 432/720] Fix #1911, error in lightning callback --- mods/ENVIRONMENT/lightning/init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 83494462f..3579316e8 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -215,7 +215,9 @@ lightning.register_on_strike(function(pos, pos2, objects) posadd = { x=math.cos(angle),y=0,z=math.sin(angle) } posadd = vector.normalize(posadd) local mob = add_entity(vector.add(pos2, posadd), "mobs_mc:skeleton") - mob:set_yaw(angle-math.pi/2) + if mob then + mob:set_yaw(angle-math.pi/2) + end angle = angle + (math.pi*2) / 3 end From 9919011aca6fbcf9cbb086d8260e4da0d1de3625 Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 17 Nov 2021 16:43:48 +0100 Subject: [PATCH 433/720] Fix enchanted books losing their enchantments in creative inventory --- mods/HUD/mcl_inventory/creative.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index d2dedd556..76139160b 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -695,8 +695,9 @@ minetest.register_on_joinplayer(function(player) end) minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info) - if minetest.is_creative_enabled(player:get_player_name()) and action == "put" and inventory_info.listname == "main" and get_stack_size(player) == 64 then - local stack = inventory_info.stack - player:get_inventory():set_stack("main", inventory_info.index, stack:get_name() .. " " .. stack:get_stack_max()) + local stack = inventory_info.stack + local item = stack:get_name() + if minetest.is_creative_enabled(player:get_player_name()) and action == "put" and inventory_info.listname == "main" and get_stack_size(player) == 64 and not item:find("mcl_enchanting:book_enchanted") then + player:get_inventory():set_stack("main", inventory_info.index, item .. " " .. stack:get_stack_max()) end end) \ No newline at end of file From 30528b0a2c4fb0cd54f30dfe0ba38d568a2f9b18 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 17 Nov 2021 18:25:12 +0100 Subject: [PATCH 434/720] Fix crash when opening a chest with an unknown node on top --- mods/ITEMS/mcl_chests/init.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 69f6a601d..7a0e54c69 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -608,10 +608,12 @@ local function register_chest(basename, desc, longdesc, usagehelp, tt_help, tile on_rightclick = function(pos, node, clicker) local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") - if minetest.registered_nodes[minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name].groups.opaque == 1 - or minetest.registered_nodes[minetest.get_node({x = pos_other.x, y = pos_other.y + 1, z = pos_other.z}).name].groups.opaque == 1 then - -- won't open if there is no space from the top - return false + local above_def = minetest.registered_nodes[minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name] + local above_def_other = minetest.registered_nodes[minetest.get_node({x = pos_other.x, y = pos_other.y + 1, z = pos_other.z}).name] + + if not above_def or above_def.groups.opaque == 1 or not above_def_other or above_def_other.groups.opaque == 1 then + -- won't open if there is no space from the top + return false end local name = minetest.get_meta(pos):get_string("name") From 903d1777be98e62e1f9c11aedcda8236688dc796 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 18 Nov 2021 17:40:32 +0100 Subject: [PATCH 435/720] Use set_count instead of creating a new item and checking for enchanted books --- mods/HUD/mcl_inventory/creative.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 76139160b..f5a9574eb 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -695,9 +695,9 @@ minetest.register_on_joinplayer(function(player) end) minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info) - local stack = inventory_info.stack - local item = stack:get_name() - if minetest.is_creative_enabled(player:get_player_name()) and action == "put" and inventory_info.listname == "main" and get_stack_size(player) == 64 and not item:find("mcl_enchanting:book_enchanted") then - player:get_inventory():set_stack("main", inventory_info.index, item .. " " .. stack:get_stack_max()) + if minetest.is_creative_enabled(player:get_player_name()) and get_stack_size(player) == 64 and action == "put" and inventory_info.listname == "main" then + local stack = inventory_info.stack + stack:set_count(stack:get_stack_max()) + player:get_inventory():set_stack("main", inventory_info.index, stack) end -end) \ No newline at end of file +end) From b0aceae73dbfc3405b4b3a3d0db63e759e9a48f1 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Fri, 19 Nov 2021 15:22:40 +0100 Subject: [PATCH 436/720] Fix reference dupe glitches --- mods/ITEMS/mcl_chests/init.lua | 4 ++-- mods/ITEMS/mcl_furnaces/init.lua | 4 ++-- mods/ITEMS/mcl_hoppers/init.lua | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 7a0e54c69..d87ae2a1d 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -293,7 +293,7 @@ local function register_chest(basename, desc, longdesc, usagehelp, tt_help, tile local function drop_items_chest(pos, oldnode, oldmetadata) local meta = minetest.get_meta(pos) - local meta2 = meta + local meta2 = meta:to_table() if oldmetadata then meta:from_table(oldmetadata) end @@ -305,7 +305,7 @@ local function register_chest(basename, desc, longdesc, usagehelp, tt_help, tile minetest.add_item(p, stack) end end - meta:from_table(meta2:to_table()) + meta:from_table(meta2) end local function on_chest_blast(pos) diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index dca476762..9f836d161 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -461,7 +461,7 @@ minetest.register_node("mcl_furnaces:furnace", { on_timer = furnace_node_timer, after_dig_node = function(pos, oldnode, oldmetadata, digger) local meta = minetest.get_meta(pos) - local meta2 = meta + local meta2 = meta:to_table() meta:from_table(oldmetadata) local inv = meta:get_inventory() for _, listname in ipairs({"src", "dst", "fuel"}) do @@ -471,7 +471,7 @@ minetest.register_node("mcl_furnaces:furnace", { minetest.add_item(p, stack) end end - meta:from_table(meta2:to_table()) + meta:from_table(meta2) end, on_construct = function(pos) diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index 9defa26ca..f9ba1a8c8 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -61,7 +61,7 @@ local def_hopper = { after_dig_node = function(pos, oldnode, oldmetadata, digger) local meta = minetest.get_meta(pos) - local meta2 = meta + local meta2 = meta:to_table() meta:from_table(oldmetadata) local inv = meta:get_inventory() for i=1,inv:get_size("main") do @@ -71,7 +71,7 @@ local def_hopper = { minetest.add_item(p, stack) end end - meta:from_table(meta2:to_table()) + meta:from_table(meta2) end, allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) local name = player:get_player_name() From 46394e7e1f82856c9c9de262857bb08c2d8ea820 Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Wed, 17 Nov 2021 18:03:45 +0100 Subject: [PATCH 437/720] Add obsidian boat that always sinks --- mods/ENTITIES/mcl_boats/init.lua | 11 ++++++----- .../textures/mcl_boats_obsidian_boat.png | Bin 0 -> 264 bytes .../textures/mcl_boats_texture_obsidian_boat.png | Bin 0 -> 535 bytes 3 files changed, 6 insertions(+), 5 deletions(-) create mode 100644 mods/ENTITIES/mcl_boats/textures/mcl_boats_obsidian_boat.png create mode 100644 mods/ENTITIES/mcl_boats/textures/mcl_boats_texture_obsidian_boat.png diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index f46c14d46..beff5fb52 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -342,7 +342,8 @@ function boat.on_step(self, dtime, moveresult) self.object:get_velocity().y) else p.y = p.y + 1 - if is_water(p) then + local is_obsidian_boat = self.object:get_luaentity()._itemstring == "mcl_boats:boat_obsidian" + if is_water(p) or is_obsidian_boat then -- Inside water: Slowly sink local y = self.object:get_velocity().y y = y - 0.01 @@ -382,13 +383,13 @@ end -- Register one entity for all boat types minetest.register_entity("mcl_boats:boat", boat) -local boat_ids = { "boat", "boat_spruce", "boat_birch", "boat_jungle", "boat_acacia", "boat_dark_oak" } -local names = { S("Oak Boat"), S("Spruce Boat"), S("Birch Boat"), S("Jungle Boat"), S("Acacia Boat"), S("Dark Oak Boat") } +local boat_ids = { "boat", "boat_spruce", "boat_birch", "boat_jungle", "boat_acacia", "boat_dark_oak", "boat_obsidian" } +local names = { S("Oak Boat"), S("Spruce Boat"), S("Birch Boat"), S("Jungle Boat"), S("Acacia Boat"), S("Dark Oak Boat"), S("Obsidian Boat") } local craftstuffs = {} if minetest.get_modpath("mcl_core") then - craftstuffs = { "mcl_core:wood", "mcl_core:sprucewood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_core:darkwood" } + craftstuffs = { "mcl_core:wood", "mcl_core:sprucewood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_core:darkwood", "mcl_core:obsidian" } end -local images = { "oak", "spruce", "birch", "jungle", "acacia", "dark_oak" } +local images = { "oak", "spruce", "birch", "jungle", "acacia", "dark_oak", "obsidian" } for b=1, #boat_ids do local itemstring = "mcl_boats:"..boat_ids[b] diff --git a/mods/ENTITIES/mcl_boats/textures/mcl_boats_obsidian_boat.png b/mods/ENTITIES/mcl_boats/textures/mcl_boats_obsidian_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae10c0c4b4dfd9e13a5008aa3a60c15d85b2930 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUWnt!GW8vjw7vbj<6Xi2d zmkKS7o4>X9B}5!9sH39;5nrED<_XlxQ4-`A45Yze`}3fMKt{c%i(?3ftmwgwoJ@ui ztPif=c-}efU4n(*27z}61VyG7a$J78Q1Zb82c7&jorJD>=5~Xhb|uf(y)4`@;Z9HX zmo@L?+0T0&Jox_1lrs;yS6vrZH`P3JX383uGm)3_J1d?m*@_yT+_Z%KnQQOiC2AHv oTq@g{`yQ35$bO5s%XZ-}V|t54)E+nOa*&%mUHx3vIVCg!0P{jy^8f$< literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mcl_boats/textures/mcl_boats_texture_obsidian_boat.png b/mods/ENTITIES/mcl_boats/textures/mcl_boats_texture_obsidian_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..af3c24b30e5fa0fa9937cf9f874aa43651924013 GIT binary patch literal 535 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!VDx8ekAz-DT4r?5LXsvE;bfkPIeJ~J~2@~ z19hp;(zy9sdtc%bm*bgZ1=Pz?666;Qq`_eO^Pq(c42*rAE{-7)hu>b`>vcFmB&)BTM(WJn$tN6`~Ce68JJ%+6dvU?1dC3sEtQoH{C zd;GU~xl;o<9tg#6^V-b#U|GB3vx?W}_R9x1tYJ=(iDs4f)*yRBi{Y4f85d83(gX!b zld_*DmOP)3!*^gGbF?eNgLUlL_D&)nId5o1vMVy&(E4`YzUYtiX1}I=t5&U={^gD! zgQ|Mf{HaD#droHnrDt9`d3m;_#ir7iwi#PbtHj@wYMuDjNWD5>_T1vDHLlsKR{cD6 z$o50%?BlCSeW>F z^0(Cj;o%$Q4RY`8e0wnK9QR{ehv&C%&l5LGv5)xu`H=jJgXZyfO;s;w_FM) Date: Sun, 21 Nov 2021 22:13:24 -0300 Subject: [PATCH 438/720] Fix mobs spawn count --- mods/ITEMS/mcl_mobspawners/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index 6e4b24c96..0795fb611 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -230,7 +230,7 @@ local function spawn_mobs(pos, elapsed) -- spawn up to 4 mobs in random air blocks if air then - local max = 200 + local max = 4 if spawn_count_overrides[mob] then max = spawn_count_overrides[mob] end From d3015edeb9489d8a046cd3a635acc7bff14db8f5 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 29 Nov 2021 19:12:49 +0100 Subject: [PATCH 439/720] Fix reference dupes for droppers and dispensers --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 4 ++-- mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 4 ++-- mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 47acacbb9..0cd0608c4 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -82,7 +82,7 @@ local dispenserdef = { end, after_dig_node = function(pos, oldnode, oldmetadata, digger) local meta = minetest.get_meta(pos) - local meta2 = meta + local meta2 = meta:to_table() meta:from_table(oldmetadata) local inv = meta:get_inventory() for i=1, inv:get_size("main") do @@ -92,7 +92,7 @@ local dispenserdef = { minetest.add_item(p, stack) end end - meta:from_table(meta2:to_table()) + meta:from_table(meta2) end, _mcl_blast_resistance = 3.5, _mcl_hardness = 3.5, diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index b5bcc1d08..abb351091 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -55,7 +55,7 @@ local dropperdef = { sounds = mcl_sounds.node_sound_stone_defaults(), after_dig_node = function(pos, oldnode, oldmetadata, digger) local meta = minetest.get_meta(pos) - local meta2 = meta + local meta2 = meta:to_table() meta:from_table(oldmetadata) local inv = meta:get_inventory() for i=1, inv:get_size("main") do @@ -65,7 +65,7 @@ local dropperdef = { minetest.add_item(p, stack) end end - meta:from_table(meta2:to_table()) + meta:from_table(meta2) end, allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) local name = player:get_player_name() diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua index 5409e6abc..bd8c0a3c3 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua @@ -53,7 +53,7 @@ local dropperdef = { sounds = mcl_sounds.node_sound_stone_defaults(), after_dig_node = function(pos, oldnode, oldmetadata, digger) local meta = minetest.get_meta(pos) - local meta2 = meta + local meta2 = meta:to_table() meta:from_table(oldmetadata) local inv = meta:get_inventory() for i=1, inv:get_size("main") do @@ -63,7 +63,7 @@ local dropperdef = { minetest.add_item(p, stack) end end - meta:from_table(meta2:to_table()) + meta:from_table(meta2) end, allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) local name = player:get_player_name() From e6b200aaf3b0a56860272a57012f24ccfa7182ff Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 2 Dec 2021 16:19:59 +0100 Subject: [PATCH 440/720] Fix access to ender inventory without an ender chest --- mods/ITEMS/mcl_chests/init.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index d87ae2a1d..ad5c781f7 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -1055,6 +1055,20 @@ minetest.register_on_joinplayer(function(player) inv:set_size("enderchest", 9*3) end) +minetest.register_allow_player_inventory_action(function(player, action, inv, info) + if inv:get_location().type == "player" and ( + action == "move" and (info.from_list == "enderchest" or info.to_list == "enderchest") + or action == "put" and info.listname == "enderchest" + or action == "take" and info.listname == "enderchest" + ) then + local def = player:get_wielded_item():get_definition() + + if not minetest.find_node_near(player:get_pos(), def and def.range or ItemStack():get_definition().range, "mcl_chests:ender_chest_small", true) then + return 0 + end + end +end) + minetest.register_craft({ output = "mcl_chests:ender_chest", recipe = { From 92686e5412b593776bcc9c5568c94e0aea23a8eb Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 2 Dec 2021 17:28:19 +0100 Subject: [PATCH 441/720] Fix broken mcl_util.calculate_durability --- mods/CORE/mcl_util/init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index d91c86f09..d548f6cac 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -478,7 +478,9 @@ function mcl_util.calculate_durability(itemstack) end end end - uses = uses or (next(itemstack:get_tool_capabilities().groupcaps) or {}).uses + + local _, groupcap = next(itemstack:get_tool_capabilities().groupcaps) + uses = uses or (groupcap or {}).uses end return uses or 0 From 261faafb7c2d05f1269fb3733912dd82cc815aec Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 7 Dec 2021 15:47:23 +0100 Subject: [PATCH 442/720] Fix get_possible_enchantments to not return incompatible enchantments, even if treasure enchantments are allowed --- mods/ITEMS/mcl_enchanting/engine.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index 02425945c..d02be418d 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -123,7 +123,7 @@ function mcl_enchanting.can_enchant(itemstack, enchantment, level) if itemname == "" then return false, "item missing" end - local supported, primary = mcl_enchanting.item_supports_enchantment(itemstack:get_name(), enchantment) + local supported, primary = mcl_enchanting.item_supports_enchantment(itemname, enchantment) if not supported then return false, "item not supported" end @@ -132,7 +132,7 @@ function mcl_enchanting.can_enchant(itemstack, enchantment, level) end if level > enchantment_def.max_level then return false, "level too high", enchantment_def.max_level - elseif level < 1 then + elseif level < 1 then return false, "level too small", 1 end local item_enchantments = mcl_enchanting.get_enchantments(itemstack) @@ -298,8 +298,8 @@ 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 _, _, _, primary = mcl_enchanting.can_enchant(itemstack, enchantment, 1) - if primary or treasure then + local can_enchant, _, _, primary = mcl_enchanting.can_enchant(itemstack, enchantment, 1) + if can_enchant and (primary or treasure) then table.insert(possible_enchantments, enchantment) accum_weight = accum_weight + enchantment_def.weight weights[enchantment] = accum_weight From 882db9f873213ad9e6901b7be62b4b32658f70c4 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 7 Dec 2021 15:49:12 +0100 Subject: [PATCH 443/720] Remove unused and completely unlogical enchantment_level paramenter from get_possible_enchantments --- mods/ITEMS/mcl_enchanting/engine.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index d02be418d..d4953b7da 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -295,7 +295,7 @@ function mcl_enchanting.initialize() end end -function mcl_enchanting.get_possible_enchantments(itemstack, enchantment_level, treasure) +function mcl_enchanting.get_possible_enchantments(itemstack, treasure) local possible_enchantments, weights, accum_weight = {}, {}, 0 for enchantment, enchantment_def in pairs(mcl_enchanting.enchantments) do local can_enchant, _, _, primary = mcl_enchanting.can_enchant(itemstack, enchantment, 1) @@ -327,7 +327,7 @@ function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_leve if enchantment_level == 0 then break end - local possible, weights, accum_weight = mcl_enchanting.get_possible_enchantments(itemstack, enchantment_level, treasure) + local possible, weights, accum_weight = mcl_enchanting.get_possible_enchantments(itemstack, treasure) local selected_enchantment, enchantment_power if #possible > 0 then local r = math.random(accum_weight) From b3958a956d3dfb7751a14670076b8d6b3fd3731e Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 7 Dec 2021 16:16:07 +0100 Subject: [PATCH 444/720] Refactor random enchantment selection code --- mods/ITEMS/mcl_enchanting/engine.lua | 113 +++++++++++++-------------- 1 file changed, 54 insertions(+), 59 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index d4953b7da..b1cb74fb4 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -295,17 +295,22 @@ function mcl_enchanting.initialize() end end -function mcl_enchanting.get_possible_enchantments(itemstack, treasure) - local possible_enchantments, weights, accum_weight = {}, {}, 0 +function mcl_enchanting.get_random_enchantment(itemstack, treasure, weighted, exclude, pr) + local possible = {} + for enchantment, enchantment_def in pairs(mcl_enchanting.enchantments) do local can_enchant, _, _, primary = mcl_enchanting.can_enchant(itemstack, enchantment, 1) - if can_enchant and (primary or treasure) then - table.insert(possible_enchantments, enchantment) - accum_weight = accum_weight + enchantment_def.weight - weights[enchantment] = accum_weight + + if can_enchant and (primary or treasure) and (not exclude or table.indexof(exclude, enchantment) == -1) then + local weight = weighted and enchantment_def.weight or 1 + + for i = 1, weight do + table.insert(possible, enchantment) + end end end - return possible_enchantments, weights, accum_weight + + return #possible > 0 and possible[pr and pr:next(1, #possible) or math.random(#possible)] end function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted) @@ -324,41 +329,42 @@ function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_leve enchantment_level = enchantment_level * 2 repeat enchantment_level = math.floor(enchantment_level / 2) + if enchantment_level == 0 then break end - local possible, weights, accum_weight = mcl_enchanting.get_possible_enchantments(itemstack, treasure) - local selected_enchantment, enchantment_power - if #possible > 0 then - local r = math.random(accum_weight) - for _, enchantment in ipairs(possible) do - if weights[enchantment] >= r then - selected_enchantment = enchantment - break - end - end - local enchantment_def = mcl_enchanting.enchantments[selected_enchantment] - local power_range_table = enchantment_def.power_range_table - for i = enchantment_def.max_level, 1, -1 do - local power_range = power_range_table[i] - if enchantment_level >= power_range[1] and enchantment_level <= power_range[2] then - enchantment_power = i - break - end - end - if not description then - if not enchantment_power then - return - end - description = mcl_enchanting.get_enchantment_description(selected_enchantment, enchantment_power) - end - if enchantment_power then - enchantments[selected_enchantment] = enchantment_power - mcl_enchanting.enchant(itemstack, selected_enchantment, enchantment_power) - end - else + + local selected_enchantment = mcl_enchanting.get_random_enchantment(itemstack, treasure, true) + + if not selected_enchantment then break end + + local enchantment_def = mcl_enchanting.enchantments[selected_enchantment] + local power_range_table = enchantment_def.power_range_table + + local enchantment_power + + for i = enchantment_def.max_level, 1, -1 do + local power_range = power_range_table[i] + if enchantment_level >= power_range[1] and enchantment_level <= power_range[2] then + enchantment_power = i + break + end + end + + if not description then + if not enchantment_power then + return + end + + description = mcl_enchanting.get_enchantment_description(selected_enchantment, enchantment_power) + end + + if enchantment_power then + enchantments[selected_enchantment] = enchantment_power + mcl_enchanting.enchant(itemstack, selected_enchantment, enchantment_power) + end until not no_reduced_bonus_chance and math.random() >= (enchantment_level + 1) / 50 return enchantments, description end @@ -381,32 +387,21 @@ function mcl_enchanting.get_randomly_enchanted_book(enchantment_level, treasure, return mcl_enchanting.enchant_randomly(ItemStack("mcl_books:book"), enchantment_level, treasure, no_reduced_bonus_chance, true) end -function mcl_enchanting.get_uniform_randomly_enchanted_book(except, pr) - except = except or except - local stack = ItemStack("mcl_enchanting:book_enchanted") - local list = {} - for enchantment in pairs(mcl_enchanting.enchantments) do - if table.indexof(except, enchantment) == -1 then - table.insert(list, enchantment) - end +function mcl_enchanting.enchant_uniform_randomly(stack, exclude, pr) + local enchantment = mcl_enchanting.get_random_enchantment(stack, true, weighted, exclude, pr) + + if enchantment then + local max_level = mcl_enchanting.enchantments[enchantment].max_level + mcl_enchanting.enchant(stack, enchantment, pr and pr:next(1, max_level) or math.random(max_level)) end - local index, level - if pr then - index = pr:next(1,#list) - else - index = math.random(#list) - end - local enchantment = list[index] - local enchantment_def = mcl_enchanting.enchantments[enchantment] - if pr then - level = pr:next(1, enchantment_def.max_level) - else - level = math.random(enchantment_def.max_level) - end - mcl_enchanting.enchant(stack, enchantment, level) + return stack end +function mcl_enchanting.get_uniform_randomly_enchanted_book(exclude, pr) + return mcl_enchanting.enchant_uniform_randomly(ItemStack("mcl_books:book"), exclude, pr) +end + function mcl_enchanting.get_random_glyph_row() local glyphs = "" local x = 1.3 From ec7e245b9d165c0ffdd8963909c494f835ccf19a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 7 Dec 2021 17:57:18 +0100 Subject: [PATCH 445/720] Various fixes to the enchanting and loot system - enchanted loot generated by mapgen now uses PseudoRandom for randomness - prevent fishing loot from generating loot 32767 times (!!!) when only 1 is needed - bows and fishing rods obtained from the treasure section of fishing loot are now enchanted - there is now a function to uniform enchant items other than books --- mods/CORE/mcl_loot/init.lua | 23 ++++---- mods/ENTITIES/mobs_mc/villager.lua | 2 +- mods/ITEMS/mcl_enchanting/engine.lua | 57 ++++++++++++-------- mods/ITEMS/mcl_fishing/init.lua | 26 ++++++--- mods/MAPGEN/mcl_dungeons/init.lua | 3 ++ mods/MAPGEN/mcl_structures/init.lua | 4 +- mods/MAPGEN/tsm_railcorridors/gameconfig.lua | 4 +- 7 files changed, 76 insertions(+), 43 deletions(-) diff --git a/mods/CORE/mcl_loot/init.lua b/mods/CORE/mcl_loot/init.lua index 1b2c50807..b90cd4428 100644 --- a/mods/CORE/mcl_loot/init.lua +++ b/mods/CORE/mcl_loot/init.lua @@ -58,26 +58,27 @@ function mcl_loot.get_loot(loot_definitions, pr) end if item then local itemstring = item.itemstring - local itemstack = item.itemstack + if itemstring then + local stack = ItemStack(itemstring) + if item.amount_min and item.amount_max then - itemstring = itemstring .. " " .. pr:next(item.amount_min, item.amount_max) + stack:set_count(pr:next(item.amount_min, item.amount_max)) end + if item.wear_min and item.wear_max then -- Sadly, PseudoRandom only allows very narrow ranges, so we set wear in steps of 10 local wear_min = math.floor(item.wear_min / 10) local wear_max = math.floor(item.wear_max / 10) - local wear = pr:next(wear_min, wear_max) * 10 - if not item.amount_min and not item.amount_max then - itemstring = itemstring .. " 1" - end - - itemstring = itemstring .. " " .. tostring(wear) + stack:set_wear(pr:next(wear_min, wear_max) * 10) end - table.insert(items, itemstring) - elseif itemstack then - table.insert(items, itemstack) + + if item.func then + item.func(stack, pr) + end + + table.insert(items, stack) else minetest.log("error", "[mcl_loot] INTERNAL ERROR! Failed to select random loot item!") end diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index 06cec9ed6..ce2e76575 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -409,7 +409,7 @@ local init_trades = function(self, inv) local offered_stack = ItemStack({name = offered_item, count = offered_count}) if mcl_enchanting.is_enchanted(offered_item) then if mcl_enchanting.is_book(offered_item) then - offered_stack = mcl_enchanting.get_uniform_randomly_enchanted_book({"soul_speed"}) + mcl_enchanting.enchant_uniform_randomly(offered_stack, {"soul_speed"}) else mcl_enchanting.enchant_randomly(offered_stack, math.random(5, 19), false, false, true) mcl_enchanting.unload_enchantments(offered_stack) diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index b1cb74fb4..97a176b97 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -295,6 +295,16 @@ function mcl_enchanting.initialize() end end +function mcl_enchanting.random(pr, ...) + local r = pr and pr:next(...) or math.random(...) + + if pr and not ({...})[1] then + r = r / 32767 + end + + return r +end + function mcl_enchanting.get_random_enchantment(itemstack, treasure, weighted, exclude, pr) local possible = {} @@ -310,23 +320,30 @@ function mcl_enchanting.get_random_enchantment(itemstack, treasure, weighted, ex end end - return #possible > 0 and possible[pr and pr:next(1, #possible) or math.random(#possible)] + return #possible > 0 and possible[mcl_enchanting.random(pr, 1, #possible)] end -function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted) +function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) local itemname = itemstack:get_name() + if not mcl_enchanting.can_enchant_freshly(itemname) and not ignore_already_enchanted then return end + itemstack = ItemStack(itemstack) + local enchantability = minetest.get_item_group(itemname, "enchantability") - enchantability = 1 + math.random(0, math.floor(enchantability / 4)) + math.random(0, math.floor(enchantability / 4)) + enchantability = 1 + mcl_enchanting.random(pr, 0, math.floor(enchantability / 4)) + mcl_enchanting.random(pr, 0, math.floor(enchantability / 4)) + enchantment_level = enchantment_level + enchantability - enchantment_level = enchantment_level + enchantment_level * (math.random() + math.random() - 1) * 0.15 + enchantment_level = enchantment_level + enchantment_level * (mcl_enchanting.random(pr) + mcl_enchanting.random(pr) - 1) * 0.15 enchantment_level = math.max(math.floor(enchantment_level + 0.5), 1) + local enchantments = {} local description + enchantment_level = enchantment_level * 2 + repeat enchantment_level = math.floor(enchantment_level / 2) @@ -334,7 +351,7 @@ function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_leve break end - local selected_enchantment = mcl_enchanting.get_random_enchantment(itemstack, treasure, true) + local selected_enchantment = mcl_enchanting.get_random_enchantment(itemstack, treasure, true, nil, pr) if not selected_enchantment then break @@ -365,43 +382,41 @@ function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_leve enchantments[selected_enchantment] = enchantment_power mcl_enchanting.enchant(itemstack, selected_enchantment, enchantment_power) end - until not no_reduced_bonus_chance and math.random() >= (enchantment_level + 1) / 50 + + until not no_reduced_bonus_chance and mcl_enchanting.random(pr) >= (enchantment_level + 1) / 50 + return enchantments, description end -function mcl_enchanting.generate_random_enchantments_reliable(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted) +function mcl_enchanting.generate_random_enchantments_reliable(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) local enchantments + repeat - enchantments = mcl_enchanting.generate_random_enchantments(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted) + enchantments = mcl_enchanting.generate_random_enchantments(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) until enchantments + return enchantments end -function mcl_enchanting.enchant_randomly(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted) +function mcl_enchanting.enchant_randomly(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) + local enchantments = mcl_enchanting.generate_random_enchantments_reliable(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) + mcl_enchanting.set_enchanted_itemstring(itemstack) - mcl_enchanting.set_enchantments(itemstack, mcl_enchanting.generate_random_enchantments_reliable(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted)) + mcl_enchanting.set_enchantments(itemstack, enchantments) + return itemstack end -function mcl_enchanting.get_randomly_enchanted_book(enchantment_level, treasure, no_reduced_bonus_chance) - return mcl_enchanting.enchant_randomly(ItemStack("mcl_books:book"), enchantment_level, treasure, no_reduced_bonus_chance, true) -end - function mcl_enchanting.enchant_uniform_randomly(stack, exclude, pr) - local enchantment = mcl_enchanting.get_random_enchantment(stack, true, weighted, exclude, pr) + local enchantment = mcl_enchanting.get_random_enchantment(stack, true, false, exclude, pr) if enchantment then - local max_level = mcl_enchanting.enchantments[enchantment].max_level - mcl_enchanting.enchant(stack, enchantment, pr and pr:next(1, max_level) or math.random(max_level)) + mcl_enchanting.enchant(stack, enchantment, mcl_enchanting.random(pr, 1, mcl_enchanting.enchantments[enchantment].max_level)) end return stack end -function mcl_enchanting.get_uniform_randomly_enchanted_book(exclude, pr) - return mcl_enchanting.enchant_uniform_randomly(ItemStack("mcl_books:book"), exclude, pr) -end - function mcl_enchanting.get_random_glyph_row() local glyphs = "" local x = 1.3 diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index ade0be818..788e591dc 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -71,7 +71,9 @@ local fish = function(itemstack, player, pointed_thing) { itemstring = "mcl_fishing:salmon_raw", weight = 25 }, { itemstring = "mcl_fishing:clownfish_raw", weight = 2 }, { itemstring = "mcl_fishing:pufferfish_raw", weight = 13 }, - } + }, + stacks_min = 1, + stacks_max = 1, }, pr) elseif r <= junk_value then -- Junk @@ -88,21 +90,29 @@ local fish = function(itemstack, player, pointed_thing) { 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 - } + }, + stacks_min = 1, + stacks_max = 1, }, 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_bows:bow", wear_min = 49144, wear_max = 65535, func = function(stack, pr) + mcl_enchanting.enchant_randomly(stack, 30, true, false, false, pr) + end }, -- 75%-100% damage + { itemstring = "mcl_books:book", func = function(stack, pr) + mcl_enchanting.enchant_randomly(stack, 30, true, true, false, pr) + end }, + { itemstring = "mcl_fishing:fishing_rod", wear_min = 49144, wear_max = 65535, func = function(stack, pr) + mcl_enchanting.enchant_randomly(stack, 30, true, false, false, pr) + end }, -- 75%-100% damage { itemstring = "mcl_mobs:nametag", }, { itemstring = "mcl_mobitems:saddle", }, { itemstring = "mcl_flowers:waterlily", }, - } + }, + stacks_min = 1, + stacks_max = 1, }, pr) end local item diff --git a/mods/MAPGEN/mcl_dungeons/init.lua b/mods/MAPGEN/mcl_dungeons/init.lua index 58e23b12e..e65294313 100644 --- a/mods/MAPGEN/mcl_dungeons/init.lua +++ b/mods/MAPGEN/mcl_dungeons/init.lua @@ -323,6 +323,9 @@ local function ecb_spawn_dungeon(blockpos, action, calls_remaining, param) { itemstring = "mcl_jukebox:record_4", weight = 15 }, { itemstring = "mobs_mc:iron_horse_armor", weight = 15 }, { itemstring = "mcl_core:apple_gold", weight = 15 }, + { itemstring = "mcl_books:book", weight = 10, func = function(stack, pr) + mcl_enchanting.enchant_uniform_randomly({"soul_speed"}, pr) + end }, { itemstack = mcl_enchanting.get_uniform_randomly_enchanted_book({"soul_speed"}, pr), weight = 10 }, { itemstring = "mobs_mc:gold_horse_armor", weight = 10 }, { itemstring = "mobs_mc:diamond_horse_armor", weight = 5 }, diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index 533c9cab0..7ca7789be 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -454,7 +454,9 @@ local function temple_placement_callback(p1, p2, size, rotation, pr) { itemstring = "mcl_mobitems:bone", weight = 25, amount_min = 4, amount_max=6 }, { itemstring = "mcl_mobitems:rotten_flesh", weight = 25, amount_min = 3, amount_max=7 }, { itemstring = "mcl_mobitems:spider_eye", weight = 25, amount_min = 1, amount_max=3 }, - { itemstack = mcl_enchanting.get_uniform_randomly_enchanted_book({"soul_speed"}, pr), weight = 20, }, + { itemstring = "mcl_books:book", weight = 20, func = function(stack, pr) + mcl_enchanting.enchant_uniform_randomly({"soul_speed"}, pr) + end }, { itemstring = "mcl_mobitems:saddle", weight = 20, }, { itemstring = "mcl_core:apple_gold", weight = 20, }, { itemstring = "mcl_core:gold_ingot", weight = 15, amount_min = 2, amount_max = 7 }, diff --git a/mods/MAPGEN/tsm_railcorridors/gameconfig.lua b/mods/MAPGEN/tsm_railcorridors/gameconfig.lua index 168ecf535..cbe2c9bed 100644 --- a/mods/MAPGEN/tsm_railcorridors/gameconfig.lua +++ b/mods/MAPGEN/tsm_railcorridors/gameconfig.lua @@ -66,7 +66,9 @@ function tsm_railcorridors.get_treasures(pr) items = { { itemstring = "mcl_mobs:nametag", weight = 30 }, { itemstring = "mcl_core:apple_gold", weight = 20 }, - { itemstack = mcl_enchanting.get_uniform_randomly_enchanted_book({"soul_speed"}, pr), weight = 10 }, + { itemstring = "mcl_books:book", weight = 10, func = function(stack, pr) + mcl_enchanting.enchant_uniform_randomly({"soul_speed"}, pr) + end }, { itemstring = "", weight = 5}, { itemstring = "mcl_core:pick_iron", weight = 5 }, { itemstring = "mcl_core:apple_gold_enchanted", weight = 1 }, From 0e9a56fa353ed689bd86dd6a853f5adbb11b0c19 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 7 Dec 2021 18:19:41 +0100 Subject: [PATCH 446/720] Add stacks to enchant_uniform_randomly --- mods/MAPGEN/mcl_dungeons/init.lua | 124 +++++++++---------- mods/MAPGEN/mcl_structures/init.lua | 2 +- mods/MAPGEN/tsm_railcorridors/gameconfig.lua | 2 +- 3 files changed, 63 insertions(+), 65 deletions(-) diff --git a/mods/MAPGEN/mcl_dungeons/init.lua b/mods/MAPGEN/mcl_dungeons/init.lua index e65294313..905e26396 100644 --- a/mods/MAPGEN/mcl_dungeons/init.lua +++ b/mods/MAPGEN/mcl_dungeons/init.lua @@ -63,6 +63,67 @@ local surround_vectors = { { x=0, y=0, z=1 }, } +local loottable = +{ + { + stacks_min = 1, + stacks_max = 3, + items = { + { itemstring = "mcl_mobs:nametag", weight = 20 }, + { itemstring = "mcl_mobitems:saddle", weight = 20 }, + { itemstring = "mcl_jukebox:record_1", weight = 15 }, + { itemstring = "mcl_jukebox:record_4", weight = 15 }, + { itemstring = "mobs_mc:iron_horse_armor", weight = 15 }, + { itemstring = "mcl_core:apple_gold", weight = 15 }, + { itemstring = "mcl_books:book", weight = 10, func = function(stack, pr) + mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) + end }, + { itemstring = "mobs_mc:gold_horse_armor", weight = 10 }, + { itemstring = "mobs_mc:diamond_horse_armor", weight = 5 }, + { itemstring = "mcl_core:apple_gold_enchanted", weight = 2 }, + } + }, + { + stacks_min = 1, + stacks_max = 4, + items = { + { itemstring = "mcl_farming:wheat_item", weight = 20, amount_min = 1, amount_max = 4 }, + { itemstring = "mcl_farming:bread", weight = 20 }, + { itemstring = "mcl_core:coal_lump", weight = 15, amount_min = 1, amount_max = 4 }, + { itemstring = "mesecons:redstone", weight = 15, amount_min = 1, amount_max = 4 }, + { itemstring = "mcl_farming:beetroot_seeds", weight = 10, amount_min = 2, amount_max = 4 }, + { itemstring = "mcl_farming:melon_seeds", weight = 10, amount_min = 2, amount_max = 4 }, + { itemstring = "mcl_farming:pumpkin_seeds", weight = 10, amount_min = 2, amount_max = 4 }, + { itemstring = "mcl_core:iron_ingot", weight = 10, amount_min = 1, amount_max = 4 }, + { itemstring = "mcl_buckets:bucket_empty", weight = 10 }, + { itemstring = "mcl_core:gold_ingot", weight = 5, amount_min = 1, amount_max = 4 }, + }, + }, + { + stacks_min = 3, + stacks_max = 3, + items = { + { itemstring = "mcl_mobitems:bone", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_mobitems:gunpowder", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_mobitems:rotten_flesh", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_mobitems:string", weight = 10, amount_min = 1, amount_max = 8 }, + }, + } +} + +-- Bonus loot for v6 mapgen: Otherwise unobtainable saplings. +if mg_name == "v6" then + table.insert(loottable, { + stacks_min = 1, + stacks_max = 3, + items = { + { itemstring = "mcl_core:birchsapling", weight = 1, amount_min = 1, amount_max = 2 }, + { itemstring = "mcl_core:acaciasapling", weight = 1, amount_min = 1, amount_max = 2 }, + { itemstring = "", weight = 6 }, + }, + }) +end + local function ecb_spawn_dungeon(blockpos, action, calls_remaining, param) if calls_remaining >= 1 then return end @@ -310,69 +371,6 @@ local function ecb_spawn_dungeon(blockpos, action, calls_remaining, param) set_node(pos, {name="mcl_chests:chest", param2=facedir}) local meta = get_meta(pos) - - local loottable = - { - { - stacks_min = 1, - stacks_max = 3, - items = { - { itemstring = "mcl_mobs:nametag", weight = 20 }, - { itemstring = "mcl_mobitems:saddle", weight = 20 }, - { itemstring = "mcl_jukebox:record_1", weight = 15 }, - { itemstring = "mcl_jukebox:record_4", weight = 15 }, - { itemstring = "mobs_mc:iron_horse_armor", weight = 15 }, - { itemstring = "mcl_core:apple_gold", weight = 15 }, - { itemstring = "mcl_books:book", weight = 10, func = function(stack, pr) - mcl_enchanting.enchant_uniform_randomly({"soul_speed"}, pr) - end }, - { itemstack = mcl_enchanting.get_uniform_randomly_enchanted_book({"soul_speed"}, pr), weight = 10 }, - { itemstring = "mobs_mc:gold_horse_armor", weight = 10 }, - { itemstring = "mobs_mc:diamond_horse_armor", weight = 5 }, - { itemstring = "mcl_core:apple_gold_enchanted", weight = 2 }, - } - }, - { - stacks_min = 1, - stacks_max = 4, - items = { - { itemstring = "mcl_farming:wheat_item", weight = 20, amount_min = 1, amount_max = 4 }, - { itemstring = "mcl_farming:bread", weight = 20 }, - { itemstring = "mcl_core:coal_lump", weight = 15, amount_min = 1, amount_max = 4 }, - { itemstring = "mesecons:redstone", weight = 15, amount_min = 1, amount_max = 4 }, - { itemstring = "mcl_farming:beetroot_seeds", weight = 10, amount_min = 2, amount_max = 4 }, - { itemstring = "mcl_farming:melon_seeds", weight = 10, amount_min = 2, amount_max = 4 }, - { itemstring = "mcl_farming:pumpkin_seeds", weight = 10, amount_min = 2, amount_max = 4 }, - { itemstring = "mcl_core:iron_ingot", weight = 10, amount_min = 1, amount_max = 4 }, - { itemstring = "mcl_buckets:bucket_empty", weight = 10 }, - { itemstring = "mcl_core:gold_ingot", weight = 5, amount_min = 1, amount_max = 4 }, - }, - }, - { - stacks_min = 3, - stacks_max = 3, - items = { - { itemstring = "mcl_mobitems:bone", weight = 10, amount_min = 1, amount_max = 8 }, - { itemstring = "mcl_mobitems:gunpowder", weight = 10, amount_min = 1, amount_max = 8 }, - { itemstring = "mcl_mobitems:rotten_flesh", weight = 10, amount_min = 1, amount_max = 8 }, - { itemstring = "mcl_mobitems:string", weight = 10, amount_min = 1, amount_max = 8 }, - }, - } - } - - -- Bonus loot for v6 mapgen: Otherwise unobtainable saplings. - if mg_name == "v6" then - table_insert(loottable, { - stacks_min = 1, - stacks_max = 3, - items = { - { itemstring = "mcl_core:birchsapling", weight = 1, amount_min = 1, amount_max = 2 }, - { itemstring = "mcl_core:acaciasapling", weight = 1, amount_min = 1, amount_max = 2 }, - { itemstring = "", weight = 6 }, - }, - }) - end - minetest.log("action", "[mcl_dungeons] Filling chest " .. tostring(c) .. " at " .. minetest.pos_to_string(pos)) mcl_loot.fill_inventory(meta:get_inventory(), "main", mcl_loot.get_multi_loot(loottable, pr), pr) end diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index 7ca7789be..be1be0f67 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -455,7 +455,7 @@ local function temple_placement_callback(p1, p2, size, rotation, pr) { itemstring = "mcl_mobitems:rotten_flesh", weight = 25, amount_min = 3, amount_max=7 }, { itemstring = "mcl_mobitems:spider_eye", weight = 25, amount_min = 1, amount_max=3 }, { itemstring = "mcl_books:book", weight = 20, func = function(stack, pr) - mcl_enchanting.enchant_uniform_randomly({"soul_speed"}, pr) + mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, { itemstring = "mcl_mobitems:saddle", weight = 20, }, { itemstring = "mcl_core:apple_gold", weight = 20, }, diff --git a/mods/MAPGEN/tsm_railcorridors/gameconfig.lua b/mods/MAPGEN/tsm_railcorridors/gameconfig.lua index cbe2c9bed..de4b18119 100644 --- a/mods/MAPGEN/tsm_railcorridors/gameconfig.lua +++ b/mods/MAPGEN/tsm_railcorridors/gameconfig.lua @@ -67,7 +67,7 @@ function tsm_railcorridors.get_treasures(pr) { itemstring = "mcl_mobs:nametag", weight = 30 }, { itemstring = "mcl_core:apple_gold", weight = 20 }, { itemstring = "mcl_books:book", weight = 10, func = function(stack, pr) - mcl_enchanting.enchant_uniform_randomly({"soul_speed"}, pr) + mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, { itemstring = "", weight = 5}, { itemstring = "mcl_core:pick_iron", weight = 5 }, From b945975427e3bd0c7436efea4d8d2835cc98bd4e Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 9 Dec 2021 18:11:05 +0100 Subject: [PATCH 447/720] Slime splitting: nil check child to prevent crash (that happened on oysterity-mcl2) --- mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 48aacfcce..9236b255e 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -31,12 +31,14 @@ local spawn_children_on_die = function(child_mob, children_count, spawn_distance speed_penalty = 0.5 end local mob = minetest.add_entity(newpos, child_mob) - if (not mother_stuck) then - mob:set_velocity(vector.multiply(dir, eject_speed * speed_penalty)) + if mob then + if (not mother_stuck) then + mob:set_velocity(vector.multiply(dir, eject_speed * speed_penalty)) + end + mob:set_yaw(angle - math.pi/2) + table.insert(children, mob) + angle = angle + (math.pi*2)/children_count end - mob:set_yaw(angle - math.pi/2) - table.insert(children, mob) - angle = angle + (math.pi*2)/children_count end -- If mother was murdered, children attack the killer after 1 second if self.state == "attack" then From e4feb233e077ee4878c4bf85a88d24bc709c20b2 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 9 Dec 2021 18:20:24 +0100 Subject: [PATCH 448/720] Fix hopper dupe --- mods/ITEMS/mcl_hoppers/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index f9ba1a8c8..36a21ad95 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -350,7 +350,7 @@ minetest.register_abm({ local inv = meta:get_inventory() for _,object in pairs(minetest.get_objects_inside_radius(pos, 2)) do - if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then + if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" and not object:get_luaentity()._removed then if inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then -- Item must get sucked in when the item just TOUCHES the block above the hopper -- This is the reason for the Y calculation. From 0c8e5dc7a40985bb887c33bee955742cafa68e3e Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 9 Dec 2021 02:55:57 +0400 Subject: [PATCH 449/720] Disable Nether portal node rotation by screwdriver --- mods/ITEMS/mcl_portals/portal_nether.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index 3f15a134d..46025619c 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -237,6 +237,11 @@ local function destroy_nether_portal(pos, node) check_remove({x = pos.x, y = pos.y + 1, z = pos.z}) end +local on_rotate +if minetest.get_modpath("screwdriver") then + on_rotate = screwdriver.disallow +end + minetest.register_node(PORTAL, { description = S("Nether Portal"), _doc_items_longdesc = S("A Nether portal teleports creatures and objects to the hot and dangerous Nether dimension (and back!). Enter at your own risk!"), @@ -286,6 +291,7 @@ minetest.register_node(PORTAL, { groups = { creative_breakable = 1, portal = 1, not_in_creative_inventory = 1 }, sounds = mcl_sounds.node_sound_glass_defaults(), after_destruct = destroy_nether_portal, + on_rotate = on_rotate, _mcl_hardness = -1, _mcl_blast_resistance = 0, From 5a4abcbcb7d7aef5d61dbc54c9a783cd9b494ce7 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Fri, 10 Dec 2021 13:59:31 +0000 Subject: [PATCH 450/720] fixed daylightsensor's register_abms By changing the check if a normal/inverted daylightsensor should update by turning on and off, I made them workling again --- mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua index ed0e4c608..1c89293cc 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua @@ -96,8 +96,9 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) + local time = minetest.get_us_time() - if light >= 12 and minetest.get_timeofday() > 0.2 and minetest.get_timeofday() < 0.8 then + if light >= 14 and time > 6000 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_on", param2=node.param2}) mesecon.receptor_on(pos, mesecon.rules.pplate) end @@ -111,8 +112,9 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) + local time = minetest.get_us_time() - if light < 12 then + if light < 14 and time > 18000 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_off", param2=node.param2}) mesecon.receptor_off(pos, mesecon.rules.pplate) end @@ -203,8 +205,9 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) + local time = minetest.get_us_time() - if light < 12 then + if light < 14 and time > 18000 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_inverted_on", param2=node.param2}) mesecon.receptor_on(pos, mesecon.rules.pplate) end @@ -218,8 +221,9 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) + local time = minetest.get_us_time() - if light >= 12 and minetest.get_timeofday() > 0.8 and minetest.get_timeofday() < 0.2 then + if light >= 14 and time > 6000 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_inverted_off", param2=node.param2}) mesecon.receptor_off(pos, mesecon.rules.pplate) end From e2360204a7a7b754b0ccdf5336c6a230cea491eb Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 12 Dec 2021 15:55:52 +0100 Subject: [PATCH 451/720] Revert "fixed daylightsensor's register_abms" This reverts commit 5a4abcbcb7d7aef5d61dbc54c9a783cd9b494ce7. --- mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua index 1c89293cc..ed0e4c608 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua @@ -96,9 +96,8 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) - local time = minetest.get_us_time() - if light >= 14 and time > 6000 then + if light >= 12 and minetest.get_timeofday() > 0.2 and minetest.get_timeofday() < 0.8 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_on", param2=node.param2}) mesecon.receptor_on(pos, mesecon.rules.pplate) end @@ -112,9 +111,8 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) - local time = minetest.get_us_time() - if light < 14 and time > 18000 then + if light < 12 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_off", param2=node.param2}) mesecon.receptor_off(pos, mesecon.rules.pplate) end @@ -205,9 +203,8 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) - local time = minetest.get_us_time() - if light < 14 and time > 18000 then + if light < 12 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_inverted_on", param2=node.param2}) mesecon.receptor_on(pos, mesecon.rules.pplate) end @@ -221,9 +218,8 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) - local time = minetest.get_us_time() - if light >= 14 and time > 6000 then + if light >= 12 and minetest.get_timeofday() > 0.8 and minetest.get_timeofday() < 0.2 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_inverted_off", param2=node.param2}) mesecon.receptor_off(pos, mesecon.rules.pplate) end From bfd1fd69d18676facec9e457fc75f6e2fa185420 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 19 Dec 2021 18:59:09 +0100 Subject: [PATCH 452/720] Fix potential crash when falling onto unknown node --- mods/PLAYER/mcl_playerplus/init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index f86d5e26a..50fec2bd6 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -550,7 +550,8 @@ mcl_damage.register_modifier(function(obj, damage, reason) node = minetest.get_node(pos) end if node then - if minetest.registered_nodes[node.name].walkable then + local def = minetest.registered_nodes[node.name] + if not def or def.walkable then return end if minetest.get_item_group(node.name, "water") ~= 0 then From a7e471de628374526b557cdb738c5fa288155fd0 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 23 Dec 2021 18:02:43 +0100 Subject: [PATCH 453/720] framed stained glass --- mods/ITEMS/mcl_core/nodes_glass.lua | 5 +++-- .../textures/mcl_core_glass_black_detail.png | Bin 0 -> 4706 bytes .../textures/mcl_core_glass_blue_detail.png | Bin 0 -> 4710 bytes .../textures/mcl_core_glass_brown_detail.png | Bin 0 -> 4709 bytes .../textures/mcl_core_glass_cyan_detail.png | Bin 0 -> 4710 bytes .../textures/mcl_core_glass_gray_detail.png | Bin 0 -> 4703 bytes .../textures/mcl_core_glass_green_detail.png | Bin 0 -> 4708 bytes .../mcl_core_glass_light_blue_detail.png | Bin 0 -> 4708 bytes .../textures/mcl_core_glass_lime_detail.png | Bin 0 -> 4712 bytes .../textures/mcl_core_glass_magenta_detail.png | Bin 0 -> 4707 bytes .../textures/mcl_core_glass_orange_detail.png | Bin 0 -> 4712 bytes .../textures/mcl_core_glass_pink_detail.png | Bin 0 -> 4708 bytes .../textures/mcl_core_glass_purple_detail.png | Bin 0 -> 4710 bytes .../textures/mcl_core_glass_red_detail.png | Bin 0 -> 4706 bytes .../textures/mcl_core_glass_silver_detail.png | Bin 0 -> 4705 bytes .../textures/mcl_core_glass_white_detail.png | Bin 0 -> 4706 bytes .../textures/mcl_core_glass_yellow_detail.png | Bin 0 -> 4710 bytes 17 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_black_detail.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_blue_detail.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_brown_detail.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_cyan_detail.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_gray_detail.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_green_detail.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_light_blue_detail.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_lime_detail.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_magenta_detail.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_orange_detail.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_pink_detail.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_purple_detail.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_red_detail.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_silver_detail.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_white_detail.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_glass_yellow_detail.png diff --git a/mods/ITEMS/mcl_core/nodes_glass.lua b/mods/ITEMS/mcl_core/nodes_glass.lua index 492ea2f99..8b3aea689 100644 --- a/mods/ITEMS/mcl_core/nodes_glass.lua +++ b/mods/ITEMS/mcl_core/nodes_glass.lua @@ -40,10 +40,11 @@ function mcl_core.add_stained_glass(desc, recipeitem, colorgroup, color) _doc_items_create_entry = create_entry, _doc_items_entry_name = entry_name, _doc_items_longdesc = longdesc, - drawtype = "glasslike", + drawtype = "glasslike_framed_optional", is_ground_content = false, - tiles = {"mcl_core_glass_"..color..".png"}, + tiles = {"mcl_core_glass_"..color..".png", "mcl_core_glass_"..color.."_detail.png"}, paramtype = "light", + paramtype2 = "glasslikeliquidlevel", sunlight_propagates = true, use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "blend" or true, stack_max = 64, diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_black_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_black_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..48bcb54c4887c96985dc6dec6ac85ca5c32d7e6d GIT binary patch literal 4706 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_gray_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_gray_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..f7daeba1984614baa75a8e35ad9b4145351a8140 GIT binary patch literal 4703 zcmeHLYg7|w8Xn|Y1Qisys1U*`-jYmi+SB_QJ2{_&jcKXT3_llStx@B4hu z_nk~OO5+!~I{P?75acR}7A1hsDVEF00lfP?d5u8Oghz$46jK6{Pcj&Bl}3w^Oa%sv zgqbxe2r_r}mZvv%kz6+1SSGH>kT`9;odGkuBPwnLbmicy9|=3_ey}^c);`o}Re0Ia z+OXI~^ zJL|}fx^7F@M ze~h2M76Jc}dUj{C-N~7|=IoYv-|XouO3%36=Gj@-5c}Z^?Ur4R$lR%?6~V`At~C3d z_g++#*}ow9@n&AJE2mh#!^?rpx={PTwc+^zK40Uqj-8i$GeJA2eET5}CQ;um z4{0vUAqF2b7(L`wsj){M9BFTd)$5Ec9j>;iX$3pkUsSa>c0R~XPiq~x-;_=3{(7*p ztH4Y#dwOWcjoPR{_I1gb z@aBW3vhudq9*bvH+IZD1Ch3cy8CC0ky19et*pzWpcFnxcC6Ha|>Z~ADauhWtwBk9* z=jUHHrZui?{nP7mxw8o`TXAP#Q)kJZz28g?jz{cr-Ks;K%qZTUHYl&_<6mzGi}c&O z_2Qy?0Z-kAoL+@RK7S~^f_u+Akd|({&kpPe9}Q4`O59>TitDI|5?5eUv(5l^1_XtK znGFbIzwFCD7>B+VFB<#Gb08XoeI-*I@;I_!X(ZEAR`U^ zW(FYx2M8?zBk)`!iiz_uy(wTUgc2RiH{=?%)^U_54bx&e5K4fm^mj@wlEg_zGb|LS zH9CVe3y}Rzq)DTCOV&HRSv=Np#x?@dM{(bYelxo@7(~Uz@kKbAYiUm+5|AzR`AQts zDEZb~1;*eqFb0bfMCT|dEEWb+crb%Wf$2dg%0lQEm!TK~CD9WmM2}(?C;(2?030?O zMcJ^5MNwfGlfpt+ObVjpaw$9(gQ4OgD5_**V<0{>YJe&c?bxm?P)Yy=E9fj#iKr++ z3?_i$GBFB*1YrP*jRi4O9HxrHwn8aUeiUxhAz(Q*Iz)}p40^TIVIiC!A(aTo3@ZHA zBGn=$6-W?}7i;vn=C=-+Mu#Pu5DT01AQsHvaDsR|HcaOR1-%VQ#*73|q6L!4SnXgIzR-vvCfq2)ajk%CX^CXXw916A3=wU5J(=Tv=#z+!!9%v(W^1Azefc1#;*CT#R^if6o^Vm;c|I& z3JZo&3c_R4DRerjVse7mbe?LMwo!BfSDEq=BNm|slY(i0fUMJy=31$o_iiuwnV5wq zm;oRe6b4g9=kQr{K9jcqrt@K#OdA=PX4%zmCJv$f4<{kkfHB7a$Q!nS;{}{nw9(^g zgfk0`zvF9UEq=!e0D8R0d+|F?*En78#lU+7kE?5(uJ>Z#y@JQp^?#$w`RxM_rU$=* z^1*~5O~CMVUw_~|0Coo7R& z+x+#Zdy^cuKMZ7Pq7&pZ?K_Is`E5>e^i-$MlG{f-wmtp*_mWHEn3u~FGTm;S$_cyP zz2e#l+x4j%52?DmYO~5qOT=eng-I^Q$t9srGn|+V<};pTQwy=OyQQ_G+3CW6LI>~O zJEx3ucrLoR?7)oa{SN(C59}wd2TuBHakYPFpfCGg@#(GdrSjFcs`FENcKHYFstlau zw)vOo$*GkdE<4R--0CIlbDjxQH5boGj`e6i7Ptn1>l+plHFrpgl+*5iD3MAd+-9eg zT>QLLL5_H_Wb*5^w<^BdzpdUWYK#4jy^(n@d)7Q|PGfTDkLK8a8vbIlZjFm=QF`r1 zM|%6vuETqvU)4P^*+XsYjG^sMvl1uz*>rb(dnPwAabRuRtlHO-3fG@XU$QpHCz-=O z#bazw{4M-$RaYA7S2sDl?CVW8AjeO>jsA0Ehv0hmrOvLCYM)oHp!0W)ZDBLpOTn|L zgCcg32x3G2kRwOKeg!Na7^0UE5HxYB<+6dQs=a{G(IklzJKlEjoH8$P%?AsjfGJoa zijZ;J(5Le@@| aMGOdv=yuI2m~@f?U?7P&UUWDzqxir6I@vM+ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_green_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_green_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..fb54f942be2872a83811ec6a18cde6045b39d3f6 GIT binary patch literal 4708 zcmeHLdsGu=79T_&KCptIh$u1Wg0e{_k4Z=*ghwKY7=!>qDJql6Bn0vz2_&EbQmiOv zRZuD_Dryla;%mhhB4q{FN~uCo6a;OlLd#K9RCX0~Cjk*p`;X^r|0Cy2GP&RH{_efM zd%y2wvN<#)$ZoRBWB>r{1bnUt`ez;$+??3tNcuf7WFZH>4B2S|7bip46Uxw*Qm^=e}d) zv+k2MLv)FH@t|!#alvdT_kace(#~&?%&>prJYU$Y=gp~HBj#VL^66L+$n^>!s6E(W z7uLS$+`n4xbot1&;QZc>%atC@yDTmYJ&n3ie_|e|y`o68s7Au+tUPi8X^iHPoXU>3 z9-0@-Oe;KB%RB#SV)Y)o69NC)+8pXyl@{mqgU|D?C`aurTMq^7U=iB3rQGz(**H-5 z)wF(~7QE=pnCCFK%rQpMEZOp9FOagKpf9>d)Bc>liLt3$PvF9$<8I0pA_DFb9Ju*{prlDM*97>+csx!cm@W|rLQ~Fnd-l6K363KeTD-Ids*gtT3Jd zMK{iKaBSUdO$E9lZ0iWq;{tVHLr95c`xNPgpRdk9CzjPJMAI#6PtWK*WK&h=(S#d_ zx|d(zp&BgxRaE?D{)N7Kond>Q$>Lq>ehhaOG-mz8c=cmv>Kwk*_u_fWK6$80W+zxKL8PwzcBEunnV}@JIYrC}HOD~Wy2Yf&7HNF#y-o>87c!TV0e z`Di6lmWaD_gaZ4<#>eaR8WxFUFc^piDp9SKk;qIYlLS&o6bb=D5Ok?3J!~YXbnYgK zVGb^;L$q>@UanT*Oq{S-ovdf$@z^@aeKfk3t3s zgrTDzCJAJ6rN-=qiTx2$FPDB0>!aLEE9P>>CW5(-@_vMVU%MHMp@c#fSB)f_(i3pm zcvF0qM2*NLEb}cLqB0p&vXnq$QW*pqosJSX5IIX0EBVr*6>DhWmf zK~j(^C3_PXD8rjTV;~4YEWxsYXbg}crc)sp@-|aR5Y|$)RtaP6lq+EwO46ug<^_}B zEdNje8&4q)CvLWcDqy`7b713_%T>w756}p?5)IeGCN;@)8c1PyQ_0>8ItVhDA3!Tn ztqz++6DJuYQifA7wS|Qhg9!_p<`g3^dtkM&0<|ctS8F5GY6Tl_N&si_G>b+h5 zC(R;5WC*3eSf40j8i58%K>|!cK>~y@DX3HmOC|K-W{tAz)Ka|x)}sD0tWvBRY=F$w z;5^MzF8VkZLp*BI38at-WD0>ojUY2v5Sayedx2yY2;xa21(Qs>`hCSdq(5llV+M>l z1~9*28+N>4rxj`RxEj&SB;#NB8tKJf7y+Xm5AsR+j>|PJ*C#3PN#OD68kg&n6!;|Y z_;mf>5?hzW7=dt-${9NnTgqPr* ztfp+Sl^zY5$>mL)RS{snI6LNGq|J_A51O1WigmSW&HB5aHKKU?uG%C{XUE!m)t1>Yo6Dr_&cz8|=jHI~Bhn(LUc%@2zKFA>Qm8MPf-P5c z>pHIdyS2*p#&h3+?w;!sq4j^bzkGgV&dg`l&svU@=sG>7oysbj@9QxS>dC6x78@0t z-c@9Xez1GK`|d)IY4*AQow+im&}nLcG2go=47xr`M3i}}lU4>h-9GP;0fXfgf7k7M zgcC>CIV{Kt4fVHQ7@c$T+dMJe|4rCu?=rh~T`SpMZo71=)y{(fDT5C(o>qN9Wsslz z&FZkHIzG8^U= zzZ2}TyPG#i+Za2|$T_TDW?6mCuX|7X7l>QwXMXt?x7-J8Hhst6f4Y_3+0oS2UL$iE z8UlXk);4flZ|7mprq<%%AT9s_^8p)%92&wblQjI#bpSABhUu~Z_7pi|MjO3A$g_Dk zb=Gt$>lnV8iv%E<#<~aeLkjEd$7XkA nCUU)pTvkm;YRPQM=28H_almf>6{lJdqX7iG5bp7SxUByHR(a#1 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_light_blue_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_light_blue_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..5c7a34fcef1e9ea940f3d6d7d69073c034cdeaff GIT binary patch literal 4708 zcmeHLdsGu=79T($MWCV;go?yK1&evV12H^;5H!eJ6i_BJlQ58%Nq~S=5fKqrURI%M z>w}7*i*`j>R^*5RvMY5J*Gd7wR|P%jf=?7hb`lWrwEuX{_CIpYWM=N;cklh(`+X;0 zwuOcS+E_VR0RUhl3KE86_Zfx@XMugYJR1c8!1P&0WQ;BxOv9@+Dk&;Q@Vaz0f=BeI z6ae&{k9UWiyysyZFuJmNk%!*|ILex9UFgLC|DR4 zxbz(EbuF)^FF%^Jexu#p>f%9<&Sx`|N(u)%d`o-;CA*TfZ_Z>Z1pTjLw(Vb@cj#4h z*R39#w!L}j+360&e<^NWZs|5J_*&a}kCnH-=*+3f+y8Q@wMn|e5ih3x)P-N3re2-3 zt1e*R@xxuwcan3@PWwmCi`aF9^$!cz&3nhwJ~`HWCDrptJFU0lPwpG*8?rfHEOTV*9zNh9)M{jJ`aKlSSmL1IS1t@`Sa6FGt^ zfuGC4f~$cKT%X$w<3`S94-OqXe9Oe`NL^c_c{a8zoKS51W5mmNkV-)UVU+|S=@n{h zc>sX7K(7X&WJHITATm_RCk)h`Bj8b(PgubeQ^ab2BoPhD&>#^RA(2ozKFE4dO{S74WQBq}*+Z)f zNX0m=Q;gDH^%492g=aazufdYO$!)k3t5D z#Gw-&1`1@TLT&WI$o|Muhe|(?^-*pHjj^1`iD2#%xF1=+uia>jS&79wp$bYdq$d*c z35NJQSOuXl&-ln5ekNQOH>*Kh_w?{fHH)vR?3VD1K~X1 zP!XR%BT+s`Lgk=NiaGEJ%TQ&C{(~YCRUi>M(7+~@#h}pG92S>OWi#1a`Uj(EM5Dzf z(SS*%kZ2sE#?TfXRt!cgXqZzBz$nLR;rVM2P^Z#Fs#J15!H^Q(;AtFhy!TjBf>14H zk#3my@tOAnWn*t+OF)hqRd~E{YuEioMCd|40?Fk!a& z^gNujBE()8FwLRL&+hB&RR^OiclNt8(4g?Rx#sOzn_ad?Svtt#o#V`X2hEx;Ulz3m z1ixJqo@jUP{8~Xz_qv<)X4$K@RZ6?&97x(-lpD|-nGt1umXN#nc><13qrc#a@*1_@ zbT_uN*Ws=_T|CtH;1VphcqP2MviwW?Cl*hxmmk*lxZD0MYv26E?(>)rvYHCwR>W<% zw=XT`_ILALzbkdOwcGyMK6+K@Z0lY6V$QxW<|T)4l8mET8@+V)jav7OAmv!qBJKCR zcu7ptOt;+7P+z;RVsft@Es_v?--LZWnt89}pN9*N;g;l^e|yj`_3iDAgLScVHub*? z%*%Ybxg7c2r}#|XEx>YXL(mT=+xb1+ZJk}`WKJU^ zz|Vb}R>9mGMcCQYLb5ba2rz;9fF&Dcj$o3{)Ilq?05E-);W7dC?3;rLEp;MsfaQH_ zhZ#JZ=J+yGOyngJ`bKhEp=Ep1U3Y9UZD{hD-yqGjw;MjCc0ADB(4gLdyWIYhqt8jH q&g{6|o#)BA&zi!_mdu*@F92|QVjI7trDXtv0Ym{I!sC7kS^opi1@P4X literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_lime_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_lime_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..963933572563e7d08979c1c002c688f0b4aee0d9 GIT binary patch literal 4712 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_magenta_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_magenta_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..8a1ffeda806b54a1b77e5f1a5184ee45bacac7c4 GIT binary patch literal 4707 zcmeHLYg7~079IrzB2bY6f+AzU0&1S*Eg?X{BVyz!A|NuEOdvoWCIJGiqKIC_`amnF zmnz5w6^pbgim!?ViWOZJbx8q56s%UNC{l|k<(>poShs&%>-Ha6Ym&^~-~RUA-`VG^ zOg4uu3ADsH;vfjJ6b1>x!RIvnWi|!8JHH%8AZT)5R%Em`9La!HYNb?`iox1U6$WEE znG}L_ZBGlrj(53R_zy2{STIRww)tTKdFhGu@oQGLZhJJB#H)IfQZX5;&56sk>io}8 z%fjl?R<|W6+RyrIxd84NE{_DjMHPcGc?yw$hRhgY~eMf2utuAJBNI(qYgki3Hf zC))3IST_GVFEcmOe&?4v8$wK7XD_U_D#ojaY9%6jl zg|lZqf7wxEP87+jm%qFn)4S&c|4dhllTp?^-LA^ieW%X0{uPrilcXS6W+~|8mI58ZZE?&`}P&nY~ z*!@>t?D4+(t;1i%;j}#0Kfi8YnC$7z?}F3!|6rC}V0&P3@9$3QCCY)0hT!je`jZE4 z4!ZPP51Osc_4acv+5YozuvxZq%%COP?NG^`(9&gKS2)VR^hb*pb5Nz6h)9%TjHr{V z!0vz`FP=_?pedLZ7GsGr1sC6Y?jjzRNx1lBbP-vk;$um&pe!{Ok+mce%}PPp5feu zjBp4r4XT!@v@)dv)^j3aWtx_Y#{)n7u0FX+BzjM;(2S}8^dRXF6^TM5ljL&J*a(f* zKOK;a7WB6fnn-Ynkis#IGEI$Q{^^)P>oS%?g1(PerKwX5?MP4(mWs&%R0Fb7#-$7t zibCH<=p{&$$yJ6ZAoe(sO^=<$Ilt{!8DA6>1c|rjf zug}ksC{dY&WB5uF(-DM0LkLtl$|lex5(+^~!%za1K_k;BRE){MkTFz3g+_}gP)tt+ z$cZw*Lt&#*7L7(Dpcq9=pkY!Pfh|SBEmKNi(aB2B)#rgn>!qgft ziF!^7nMfV+=$C~9ngPNh`Z)yzh6vCLhp)yEtx_GSRHkzA`jTLMq+z^auaQLwl4$@U zQ$O*eGw+8aj@*rGfmE5n1;d815VIK=i!5fM;_>VnrBs`Ns4?F}&?)E!43ME4*xewd z$9Qx`5~kOQOr;PgR07pAlEUQBnH(y8KAFNHlkud{hDrKe{jOs#(*J1UWdMvh20+}1 z4ID4vv?9Gfu0}P}%lHqzM%UsW%mAn-l6;iD6LL++^-&6Z6nJ8~Cgl1k1wINqFz%hOHMLJ%;S^`$``oDh+BIRb|Dv}m z!;`GLF0JBq-2ME{1*6=U%}1o|Gm4W7@;CW6L}o3uIFH}t-Jf9QN%j1LEzGOad~vs~ zvE`iE^*--EA3eSz5ltBoJXl^n)9%HT7q`mGG#zeM-{lm|@phX{f1FdlJ#Jatny#XZ z=+3=!T=wp9v$Edu+Ab<)kFCXS-A-0f82yTUI5Cl>Ton~;d%MOh8zCR9T%h^-S6Ccf zKizdxXsECC+~`d|SLBQFzHh=l8D85}c)4uHQL}(;CSR5KrN8aWets_2lSz5@nMtY7 zn=SHe3!`-_isP%F_M+{_4nTh;b}mX8Y@#O&?&?pDnCd*~ZhLJ*T13RFwM|aN!@@$# z*8I1$4RKaFUa4}C(S_4KkM_04qRxjt@!5Gc?;d3OuiBvf$6L4^cbnVVFD5z;4MA5Q zshfDSZs&t%(<$QMKmkOD=0K)Q8GQ&?%vC|lH4rq_Mt@C$_7%+lMpLa&=~2Ktlf|f@6LOIsXMD+Up_! literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_orange_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_orange_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..4894833f1f20d23b89b273b462e9bee265ccf99f GIT binary patch literal 4712 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_red_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_red_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..db44333b236b889c978025fa5d52a1a98badb03d GIT binary patch literal 4706 zcmeHLd010d7Jn33L{y-|B8r57#VXlDHV9jS5HW~hM;v+Y{HDY(4+^@i=!d!G-$0sJk=wN+2Q7y4|rm^A3npLdj+ zJ5+xuI5IA9?SZb^`!h-zezWfJfYG61OJ;HQ%G9t2PEJ7qkDQJ?Jc*E%OSj$ZN-n-SfAF(QwS|(X%;y{+sp*nmiZ#xZ4k> z`Apvig%wmeH<#o=M@na7>#t-AZ4X$+6n6U+O}8zXGnMm=$Y=G27kk_*+&l!y)4HGl zGNUBs8;*QRnDZAB$rI10jr_QHX4SHU*p_|%QPIiT=B<4Plf-^ju}!kBgrju^&C4fU zPa89SCZ1!SzK=9UeR>*cwtKMt_+0DTt>;8hVnNgOoo8y1rZ8cfBn8 zu72IHrkMWAfub7bKX30iEUv)r6xN*aIeJR>0BcH2et9Sx9@?54vVpwpvyxWJoIVWdqGU9;Z*_uIUeb5?B~;WRbdGh8%yrYmuzJbwK~@XhZeS3%iSN zMm+NFb?moYRS*>RhT=6i5OYaY8+N$N?~_|$U{Sc^K>SJK1w2%xAj47>f{_ghHCP-F z6c}t!!)OMkBOsU@SMrI^>MsxpxRg&!^cPdbY5|sxN3PIdu`8nE&=nadS4s>HvI{iu z0DuD1!32XMQ>o<{_(U@<4?LU96e7XwqRZeDlf*Fufl7lBm}DlIN(wjN*>qx%9U)L7 zmGLCPc_R?ujZaM1>C`+5MX%SB^$fB~Bd5@~TrP!5r_kvn;6c*nD0Q%bq||zwAcir7 zm=@LGY8|dp5=@vdqRP_oi9|3?cw3)BEf$Z$E43pm06r)NSWTgksT75RGB!f13(p21 zBL)3#gfVEIb=i>b%E7NYT-Fb(SX6+>R8bV40W#xN1RG+IuM@MB2A4)+QmH5jLFrVIj46dV2m@nqxb!hlBBfRbD^bh@1;EKT zz+uo38coVzk(ii_N@8+Y2#L$3%Sd#XhOikdIu*u{F%SziI8Y^=IkqYjloUY07{;Kn zscaIA(3zkbmW+fTQiMc9r7Q-E!9ke_%?u?)dGk~n1q`MWSHNR=O_G!~OeXR{eJE}H=!h7+0b5-^PxDA9yT zqmtD#rbx5A34z0t5{YYpM~+GH zBbpC`<->2oOCS?B4-p7v+45j?IEfa{#-!#%AZ~aFO^20o46N@FLA|x(zcX1>CWFpm zA{-J|=1&Im~8;W4cox> z0(L9P=yo;2nTf_f@G~+Oe_#dxJ)Y!)_#LNfoURXI;DemU)iqAn2QlzL&g1I(ztLs) z?!bd7!LJ}aIL;Vu@lznkq7WAdVnhPL+rJ1PXm;tUQhsDZ$c)CNu?LCHR+HA-%8o?4 z2*W41)`U6EDM+b|x7pO~%furksWYrv@>hEr<855!OFUAoLVvZqeEquUyYTsgOC{-! z_r6*l+|j=Br}LHtDMeMXHn+XYwwA67Z;V?JZ~qVCx}e@PTLzu+k}F!@p#7}9;c830 z?Tvp2^*wxaO)9p2E$mD_G~MO7_4C_@4r)7mr<}+y_X_fz>HjGIa&c;6>gV^$^+|Vk zczN&G?mNZN_?t^Y%64b_Erv2q`6B;ot`f4GqgtL2<$ULyZ!S!&uJP0E?jj&bmz{jp z#l(a<&PrN$^KYdHF?3+j)HiwewtaoDq}q1gMyt)0VcCOsbAPR0%wW@=eqyyhWWcD% zwYU7slD&UE-SZ4>J5~YxM}BvHMt_rkTK}frWwDbyE!x{IHfF`fzRGLz*!xDbZSs$$ zgUrIzDTd(vs`-}Z&xSnQ*|r$8;|F^}GNaC-Wu3a; jzivY35sUp3i=+^A{QTs?#aAeg0SqJxj}{&aOUwT+_uT6n literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_silver_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_silver_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..8ff77440aa60fc1195c826381b8b67223208fe09 GIT binary patch literal 4705 zcmeHLc~leU79T|x5fFJ#pe!YhD2h&&$%HJj6NISH2q>rsOlBrwge)e31llS=tq5%u zL==UBib_SaT76oqwc_?3OY4T92-UhkRou0TAa4>7@x1=yIj{ebb0#x$zu*1cdw<{k zzLPI&#F1gP)-Kin0N9Gcg;CVq-gsGAP~RR;`%nNF`6x3cP8)^lXezZ*N~RJtZH9`V z5qeSz0Q#$4MRN&?4lCZ7Nd}^58-sG3+ikgiFZyobZEDF2%pKtcseIXLpKfZh0t?#>w zPb!4tpJ0HJlG{J39b#ZEFJkg?s8OZ*FA^JU6rq~Ny~gm z$17!RZ(b;J5@H)BHf&ipeaeC!Rp6Zvk+;Bk(wLIq)^qc3d57RW zD);h^&1-MHIIX&&!#-oQ`iHxRUkJM|OlbD)NxO4jmRHtwW_8TMglz$3teUl-H^zlF zns23dZ2Nfjl|{~nCAs`VUY#3GKbqp1`m5o7OOx%Qtql2sd{=Xp%C_#(w-?Ig`&>Ck zHf7AV`EAn=hU-X;vn98<=Sc(7;#rZmBE>A-uz``7T;@|$^x}#eTURTdoYUC#XlZ2G zGUgdyYhhmE{_MmCc8dxt*fQx0gVk5;${Nd;`H2^AdDAM{bx(6fjXe6XL)C?{ErIFh zvJJW2ycKxwKLc}^hiX4^um?B}JAzy6Q-xL)X5v-%rWeQB)8;);6?`8)!nK3X@n>CK zeE@D4ogOcxZH-d>;GqzMfFk!#D}V1K=0QvDx-85qj6YZ?Arf+%PO0HT5~%`h zI{kf>6IVBO--!uF5YDVPz3@^le_G+RpY}S7@6}c9$!I!Q)HFX4tF~?3b$e$ulG47d z>6gWV2Wt~*(jK0_H`DcB7mB!Tb;Ag)*Gk8_^UOpeX(kC+v|1Lbc%&)k6x+L?cB%hmg=< zYEq>ol?s}X6O|~_w0H50%h`H9QTp3hERN>CaJDOQ-@|{q{1mGHj{%$e3&={ z^QBA(VWU2f1i`7iP#%u+a4I7y(?o@1f|*LS9Hpj{l%q0&p;E|914h9GL1K{~2-Ewa zCW|-~)k-M`KX4AINYlTA#*lI%T8kRhWceUWn9Jj^5!eUjGWqX7^9i+v>O>o|3Pkz!4`IouLPk*Qd!V7-+R49~EFUhH$>H-L zM2fH=1ed@ND#h3kAHz|YgZscJ+%MZ8yGAM1>QFTiB%>;&s-YUlR1Iy4Ny@43=b}p{ zj5;x47Q})fm>t973OF1A8=1yr37AZfF;FnWxT@b)?92EcO?*v&A=?1u*Keb?7iza+ z3~pBgni*yM8$Sbc@i#`GsE31mkiNrm4a@aG3VaZFxVwhs`XB{92t3?f|2Mg;-yL`e z1@$XPM;&Jf1ilRbBUX_iA!1QT$lHGi0ANb~=lOo&Cj;G1Cr0l8$D5DIwUSmwItoKa zIaLRb^Io}d>paW#_q-4?JSyJJyg7S?N8UV3C)r~6c=Mn~W~Uk(Mdw3j^(00mkGpwd zX+V41r`L{|tz5X~TWPCv`I4gioY2!Tne%LZ1athKC0Vgy_H(`{_oU{twv%U@k6Qiu z#Q)EZ&N@88;-&ES1v_0GA6q=Wv~!21-OFx&cF6>Pua7yM*{9aV$Hp(aS)z-(UOZu9 z@g^_3ae1#C=P%qe-e!ZofLAh?Q|A;#m+_QK=g%I0`H0tYlv!0hT~m68CW$-c;F%*9 z2aTH)mve4+z61<jT^_ z=Tm1>3(4#-A;1A90G3>m(@R-KtHKv(0AS2NjMoTYbBQx$wA6|sLM?CGIN5W-R`9wb zWtt%p2F38|u@b&U>SAV|wZ;&f)d)b~Gx7!;m}fBDa2dCGAIi?c8#^uHC)WPa-06_B f-Qvs1o&_U-yL;^B+BBcgQ8a)kG*Y-XI4S$TKZ@!M literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_white_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_white_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..baddd95eb50e521fff4980e00b182639fa1c9206 GIT binary patch literal 4706 zcmeHLX;c$g7A|ES1QlAq!G#b|Y%%*DN!St~+CdD6AgEL-l~6zylRyG4EGnY7p^b`- z-7pMltGMfo;tuMx%V}FdS_25Kh$}SXhBW;WK;caP@to;@d$ZlD8GVEWP@QWD?EN-dxqtRa?Am?7?#Z!JZp^UYuRF zzthT{ap1?@8Omewgo>g|6I_3OQn#T*%jtOLb#LmZH+psAHtUL#4GRwZ&YJ$nZc^Ls zr|w>!bF1I{dgDsPt69NI+*~FKmo5l?;o`y{*Xq*x_&s#PwFTaczbU!TBP zKRuq5JsM70N%O%$$v!iR4pYWC4}S{Pws2>*I9Z1m`IbDyOU_^7YL)_k#_qeW1d}JgE*zR686lit38Gtkj$)`x3`WxrfPMOEV=Gl!}c_H(*6aF z4W~2I4c4o69>2RUBc;-?_D)$tdwSTaCRUTo@4KCqs^jl(ALk!j68d*;+rgIdb^MGg zHSa0Ujy^qd{miZP6-T$ue|ysOaF58t3cW-Gb4RvSm!-Zj0 zQOoO|PYzmCl0>#5N30BN7(UF6Zg=E)w1eG=#4Y0@{AcHF_P93LhBA8E^h3mxhh{Eu zankk_#2@ZBx30(U#F*A5pSL?qe#x{md6$BoH>`B7o%ZX})?0Vl&l~FAQoAc#8auo@ zoj=$wUBM6bEZcD7thdjIfQk1PHmh@r(;fK{CP`5`{=6DV3yw9y+}+ z9gy@*=ubU#(O?fDNl=|SO^cwybX2AH9!McWKKX0Xw5gVKWC#gOMU?=m15qi1LWYUN zk)J%w5-2dG#^MFU9)#3m^3P%onwxpVlFq=10QXP4gV6oCTfhJ%7IOt^B+WcMk${Ic z$LGq_2qxoNZrLokoFSu82sD(!Ake8WgTP^K8?9ES^6=&f;LM(u_Qv`579||h z0YrwmFt~$hD8iI6LB(NYFuP7I*Bf9h8l(W3f^0woS+c=Ru}Jy# zV6-6#HS0vCQa}v}R9ZBJ#br>rbhaOv!X=aOq`rhn=2hLFu|Mg5H1W3p25bYsuh#~) z7qDBAK5bWhnwe$%3qO6e_zNQd>Y*TCr0aHQVzDR*D0uOc9|4lB3 z&j%h<1>S-T;5cIp`-e3I4O@wYghYx$Li+zAfS@UbOAC47)q&$LE{v+cyV{IcV=vzw z;U*ATyH^G~PhByuY>wULXTEeST#_)}rapJMXTcmhcg6e(2{u8mt!l1c7yTlf@o}Lf z$@#(gMFCBXiyKZ`t(dp^N4aTiY4VoBeBs6D%sGyy@cI1CM0*;Q_Fs-@O|@=GWA)|w zD*K;1_-~)IUXh7y-wE!=?HuRUZrfhFvqIP8JMvI&i5K5@BBM38W<$cbI z9IbNZmo7N=;uT`r{{!^9qIpKjhpUXl51TuaqegfRYc!p^m=+cFCj07y(jL)Pr#poo z=_?aP8UxDJGptVkEAYv7Q#|6iYgFK-lWXolcB{^Xe}A~1*VOpSUDH{GM|U@L?TPkk z!1&vR;B0Cuof#&87?2la$HExh!16auc$^M`Mto(yhC$m)#sZ_AUL+RUJ#us(O($C& zzpw+Cri%nY(d?_p$DW=n4=bDO)j7f0*C7JF6KkOc7Ubl#csOrA0MoK%*IR89ye~Yh jZ*|Epw_Q8gXVWmK`pBr|-GaCqfCdr?BLw?{6LbFn3bO0O literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_yellow_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_yellow_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..83eedf08ba3242e137825a002e6aed13fbe086fb GIT binary patch literal 4710 zcmeHLX;f3!7QToOKt-S;X!Q|-78Ea;Nr;4biV8wN1;pXz<|bSr1IdL1t*C$&p~&C> z@(`g`Q4yhv7DNjbSg2^N3Zf#^d8l>j!wIpzlYk2A^^a@4{v&JM+ld$oUO0leD9R$ zS^w^Fx5bHlg@J_{`_oQQ{e;)8vT0MNew%L;QYMS7h}eQ~TP$)l3CF_I0-a-E1&JS4 zx45^bWGQa_(}q)Xa~~~fIO2G*z`XAM%_^o%Lv(*Uhre5xvN6RyE_hjM(GQtRXZkFu z^5<_;)zIWk6X-`AA9TcPCs-xj+3?4e4#UOBy*$nx?`+%JiPlB!_=S}AG~<|A#~oc+ zg(Q;=7g}nc=iXRExg^^BRrr(`QuUYvU%&Nft$}lhv-b*cXB}8 za-|xin}j4~I@^QJ+i-|+)-)+b zLbkl$*0@JNIv||zwlxzSpJ)y5kM3wcf>#OWc0^Zn)J~}1xK+HOubCrQO$0 zBrC3uF4%MQ+JWS_O3m4;W!Il4wyy2r^oX7Ry{A%s^v&g?9@VP@Ch>l+zPT&gBl%48 zJNl!VhlkJobZJv%O~H~^$GV=Z>Uw)};o|&-QOABibhn~1CA_{mrOmT6z=rJ+)Z$gY z@8=aSb4zPOScL|*(gRrZR0p4PECSwlFg~MCfjyI+VHPT_tHF7UVNAxs0*DNr$3qn|7euTO zVJ=#k5-bo1a`)6K5i|}X$RbRN%lVY2^$ip=9(dN7sT8svLd5YYk-?#4Uxf-Ivs_p%G}vE@ zCow1el?1MklXaYkNRdeJDHJeH{*a$c865nPUalTg0q8;1B1$UVg+`Uh zs6#!}gntqs8BFMJJ=76kAE62{wIWf4V*W{(oNyRQAx1y?D-%`m`f|i56^qAY0ICL2 z>BB+>3W7sFdgvsO;xeV)3y3`oN#K%CVhzhpH=-|RXd=M)g`68ZphFF>J^Az(Uj86w4~O1V@& zpc9t@@IWy@SVY&SfI#m7YT@~+FoaO3A{2^vK1G)RS?8&5Z?gNq zqy*t=fJoML{9w=fAku-ifh7=+>xal>ecSR7bRdWtNy5bXK)`Qc2#rPLQVgu`!G`)^ z$Ny%sBuqAtl|u)Taxs`iqe);l5gmgW96DRf!00IE${fzFR!9g9qQbnTpi)o`Xdrzx zWGB6pGlruzv6xOL8iNkg88CwxLFe$;t~@5wnMUW)XcX#T!BpL<{!p`YZ)L3p~8}5qTxOpRJeVB(3ete%jL@;G7=jGe;Ofl+AO|#2dK(di8nHpo{{miiW+&RGo z|2h53gt3;le@^i1>0WjHgkgI0#(k15+tL-=@-qBeB33RKdz_Nt(YxG)$zZ;46J$22 zzwT~o?W{LB|EI^R`wz~DgNsoR~#1 zDYuI?kvF#6J8Um>G`GxpGjU;bq4n6U+I((t82gNk&_&8sBrKe3eYw_g4MMA^oTc7z zk1UF8wwjg^8tQF1Ju>6h{dppa_uH`X@7LZgIJG;s!X#jm(Uvlwr2ZRgp4BgAa_CRK zGTPiQ(Zd*S1Y9 zeJ>~&cQvn{wLZpN>$yuY$MD3DUiXW-7Nd6MGT>ArBSt3f*X z-8<;)eN~(1l*@VGY-%i;8|VkIA$y3#!P)PC#Z(y-rG}s}U+69asHoT$7)gX6*q?NF ztc?ZNzU6Qw3QV&Fe%=w>HuUShc5e2%QH{-B_KlLY6D|8{l#@zZ8XJ|_Cg(b Date: Thu, 30 Dec 2021 14:04:53 +0100 Subject: [PATCH 454/720] Remove arrow entities when the player leaves to prevent killing on startup --- mods/ITEMS/mcl_bows/arrow.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index 343707617..e8efa6662 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -419,6 +419,10 @@ function ARROW_ENTITY.on_step(self, dtime) self.object:set_rotation({ x = 0, y = yaw, z = pitch }) end + if self._in_player and not self.object:get_attach() then + self.object:remove() + end + -- Update internal variable self._lastpos={x=pos.x, y=pos.y, z=pos.z} end From 7b46225176286f7842bc4eba9d29eecbc634c310 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 1 Jan 2022 22:59:21 +0000 Subject: [PATCH 455/720] Remove arrow entities when the player joins to prevent killing on startup (working fix) --- mods/ITEMS/mcl_bows/arrow.lua | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index e8efa6662..7e5ab169a 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -419,10 +419,6 @@ function ARROW_ENTITY.on_step(self, dtime) self.object:set_rotation({ x = 0, y = yaw, z = pitch }) end - if self._in_player and not self.object:get_attach() then - self.object:remove() - end - -- Update internal variable self._lastpos={x=pos.x, y=pos.y, z=pos.z} end @@ -457,11 +453,21 @@ function ARROW_ENTITY.get_staticdata(self) return minetest.serialize(out) end +local function remove_arrow_on_joinplayer(staticdata, self) + if not staticdata.activated then + staticdata.activated = true + else + self.object:remove() + end +end + function ARROW_ENTITY.on_activate(self, staticdata, dtime_s) self._time_in_air = 1.0 self._in_player = false local data = minetest.deserialize(staticdata) if data then + remove_arrow_on_joinplayer(data, self) + self._stuck = data.stuck if data.stuck then if data.stuckstarttime then From 7cc7fb1331761276205fd94a27fadf97567edd15 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 2 Jan 2022 11:06:29 +0000 Subject: [PATCH 456/720] Make removing of arrow entities also work with mobs, remove arrows on respawn --- mods/ITEMS/mcl_bows/arrow.lua | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index 7e5ab169a..7529da167 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -73,7 +73,7 @@ local ARROW_ENTITY={ _stuckin=nil, --Position of node in which arow is stuck. _shooter=nil, -- ObjectRef of player or mob who shot it _is_arrow = true, - + _in_player = false, _viscosity=0, -- Viscosity of node the arrow is currently in _deflection_cooloff=0, -- Cooloff timer after an arrow deflection, to prevent many deflections in quick succession } @@ -439,6 +439,7 @@ function ARROW_ENTITY.get_staticdata(self) is_critical = self._is_critical, stuck = self._stuck, stuckin = self._stuckin, + stuckin_player = self._in_player, } if self._stuck then -- If _stucktimer is missing for some reason, assume the maximum @@ -453,21 +454,10 @@ function ARROW_ENTITY.get_staticdata(self) return minetest.serialize(out) end -local function remove_arrow_on_joinplayer(staticdata, self) - if not staticdata.activated then - staticdata.activated = true - else - self.object:remove() - end -end - function ARROW_ENTITY.on_activate(self, staticdata, dtime_s) self._time_in_air = 1.0 - self._in_player = false local data = minetest.deserialize(staticdata) if data then - remove_arrow_on_joinplayer(data, self) - self._stuck = data.stuck if data.stuck then if data.stuckstarttime then @@ -498,10 +488,23 @@ function ARROW_ENTITY.on_activate(self, staticdata, dtime_s) self._shooter = shooter end end + + if data.stuckin_player then + self.object:remove() + end end self.object:set_armor_groups({ immortal = 1 }) end +minetest.register_on_respawnplayer(function(player) + for _, obj in pairs(player:get_children()) do + local ent = obj:get_luaentity() + if ent and ent.name and string.find(ent.name, "mcl_bows:arrow_entity") then + obj:remove() + end + end +end) + minetest.register_entity("mcl_bows:arrow_entity", ARROW_ENTITY) if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_mobitems") then From 627c37cd975da55d9500bfb7afc5945727fb2d7c Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 2 Jan 2022 12:37:20 +0000 Subject: [PATCH 457/720] Fix pumpkin hud --- mods/ITEMS/mcl_farming/pumpkin.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 1d9ca012c..0eb71ac91 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -129,7 +129,7 @@ if minetest.get_modpath("mcl_armor") then pumpkin_blur = player:hud_add({ hud_elem_type = "image", position = {x = 0.5, y = 0.5}, - scale = {x = -100, y = -100}, + scale = {x = -101, y = -101}, text = "mcl_farming_pumpkin_hud.png", z_index = -200 }), From 11f3ad15baf85eeca87c1ba9d6db8b5e31805bf0 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 2 Jan 2022 18:50:15 +0100 Subject: [PATCH 458/720] add logo --- menu/Logo.blend | Bin 0 -> 1166214 bytes menu/icon.png | Bin 3961 -> 559706 bytes menu/icon_small.png | Bin 0 -> 429423 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 menu/Logo.blend create mode 100644 menu/icon_small.png diff --git a/menu/Logo.blend b/menu/Logo.blend new file mode 100644 index 0000000000000000000000000000000000000000..424aae4ea3387cafc3bfae93d45835e5cee366a5 GIT binary patch literal 1166214 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�HPCGw-dLQA&_~{{BP)w(G-0@S`33j8x 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

rfx6>>^DP#-bT=c+rktu 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%0AIXf#(fNYq)}Gkz;8 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ⅆ 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 z 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 OZ0!xA9wpanMB4tw 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%0DBq*OjsU_R* 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%0DB25j#A^@&u^uN=LP;q(_@%6Vo>}O6_ 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 Tj70X3ySdCfe-wje}qr zFaQ8JcY zJRaO9X(ByI_sK|;2hI=F9X&|*?`B_>-27wu$bY5{9ehau%`=*s$TJ$qGn#T5=XJHT zbkCk0$FKGL(GmSm$I8`{1UPd>_kYfpEmBth`TM_J^Zql~AK{rwjAF$f=E47%*Z%Ol z9RU9qaoJm#`5#M`PNe%J!2j!+)_dv3KQf8`Ko);IBYFSNSQ=;5wKb2uH1+!rbc@&Byn`@q-1gXsHzKZJ&cy3VSxXbIj$4} z_EE664E3!7hU$hPad$hs(;dWn4hb{$5IyP@d(i!&3K8#8Sx(;<%-;x&de;aNQcpLZ zxHo@qZ}q|6LU-fdR^#6Hy)E|MpJQQfdu?y!``+(Ydz%Y;D}vpbg|JPVt06!6?&}3> zOLwl0y&^2!Sy&V}t2M5@YS=C478I=2*0o*T*}fWbh`6wF=W5uF%@U*W)5IONQ{cS7 zdH3_+?&t3z!_<}3;0z|adv3{OcB&+OE$DcIJ$6^>W)XpMWX+NV2ZsqhIpgyY~r}%eY+v_&E%G1WAM(x zokib3sio9C$*G2hRl$|L<&X(7l3g(VW@1~-88fykle8ku@X}u(F}p*9uDIiEW~10g z-n4A6WlY`D(wu0S*Jsxz>_Y3?CRm|de4dW=SZiXJk>}1zDD7d+BmA+r;o#7p@1TtkS661jiwnks`?stX~en?pC<06V%A z!DZ_vB*;Fcyz*NSZY1SysiZ5&-tI96$|y#C28uA`NE-yuWhAIj@><$??1)ubk#^kd z1@k5hVXyDzOubaR??>mQJ+?oodaTR2QmYu)!g3Zsqm=wdz1g`c#NV9wBg93V{*>{_ z2H;g(zp+GTANij3b&9?YR-|YQo7- zVt0-rYv^040 zxb=(gua<7R%7FA}-8N%pLPK4?y`Vze!UV9)?(qj`yqa7G=%%_V%j94%*WNuxY04!d zxiHC8aDnQo<)F`hMo3GvKKSqRxs=f=lQY{-A9f0eH{SbZ-*_3ZS=ZGaue9U6ifwZ}I1dg^me+sT zrRxZ9_mi&XJ5I*5xnHw7y};|vn{*{Txa)S;L7PuKElnl-E&#ZL0wnKY9ao!IjZG~8 zja|$C0{;p+OnqzXM5$}!bR?o_+BbIgNvK?oc;1N>HyR~m=;7bi0ws-4Se~}WilX>+ zDMxT`r^tD)OGe%IR-jMv7K-he;>vluM$>uwE~>~#E+*W=t>@J%hU}fFQcvu7=lCpTgMS9s<`a>0}PMc`jO=(Bc zb=p0@)B!QTjg_YrBFJJD;4vwHZIgQSR^ORM>&G^NHA-A3?!Ee2?KGvH^%yBkQUrD$ z+FGeo+sSu1?J{gB_ylB0^{t(_`nU8;n!-xVhS=MG5JxdG6y4c+sW|Tq->W8r9q8wV z>RaBudVlklzMCId^XelfV;f%sV(hPMl?b6n>^S?>pV|>tSl%CWiDogOEOa# zlHAX~bx^DVam#Y>Ni#r7=)4#Uw}e*#AnhyXf5Co=bRGCP7*-8upPu;TO;ukm=;j}*Aj-4h$+y8VWb2hWSMX{)q$o-M6X7;Hx9+@X4)no9u z1-q#R6LkYEsjrzh%>niHCfsM08|c}DVn=aYF)K@NSldd+7usA6c+k3Uq4N{l#JGCQy)Ky(MIZcS zR52SfEs$2TBaK2RyneSi6VK=}pLZo+S19U(<&xh7lKYk#i z$3{O+JF~wIcVi>3G2Xf+=91tkp7X9arG%?q$M~eWlbrbl5{Okw(O$Jvk|W}>x=KQA0v#IeHWIn%r01nNxAIP^x~-x={L;K% z2PA^s_7`H?cKKVmGW%YbLzLjIGd3u<#2Iuf*qcx zHR5h3VgE)e9~_V}wPgDpIqnQP*csHEhavblL01v1a|T~sP50b>7RT2LhBqYlBqjpY zHdjpTBnOJ^O{AsqgNlLYX{Etx-n1ztRQ~)w1aKZD>`lofIN0h_MN}$&@H#1^W&X~U zf69=Uh>$_W+9+Vku=%2-x)YZxPcON_*Ul{iFB|kv3BKXqk6^=XUo_X;AS~D|9^yxY zxQeQ8eM-ApoIwlsM@16&N*IglfQ#h#s;??4g%rmi*OuiwC*#%QZn|GCu7vqZALcHuIxemhoO>wy zQZ2SMD1b<)oS2e)R0T~9?$`&9!D5fIT8#tM=+D#v3G*Q;@9?dEbq!nood5&I%74oq zdn2As6;fj`zW$vWU#%4mKA&2pL>iW7u$uUt zch)NSI}$#*IfvZhgDzphcgog^AH7G72+Cv-i;qCZsh1Fsz5?gaKmj-#DI68=k6cOd z1?I-b7@JmPzDKyAM;E>C#RUBDewADo-ym@NdG5)S+h>e=hSCcey_T1yS_{Rpu|bu@ z)p}x-E#p>25Y|lsZ=E&N&#=GEsS;aVA&+i@ttYk=Q>7}WxW^}E*{TP#w9JvX?T?oS&^3APm-YIu(V;_}r z_NzZH(0bM^#|9X3l8bRFjuWTlrok2Xrc0$`YT3P%`G3ZbGhZzqf^X5~+ELh9-NoE2 ztBf-&e_N~pEx%E`6go{k8}kZNg;s0BntAxp2+D`k_#5QRQ!0ms3@ zN1?sdZI8<`3-7B8T~sH3V!X?~2<~j^y#HBnxHc$hrqaZ?Soa} zk-$RMRLy)SYzg%#yMIOeUn%jKiM!oYF3&Y;Wd#<_Y02PdP;1I`%NZjm<_6n67+vr~ zup8xL(7TklzI0+w?P4`o=JniFqnuNZDo5W|mBoqQRnVa0pXuaMJ=wRctVSrGT1fxg z=x&ru?~H(Xh6@IQ7BldWT5%7EoFAyEf7grj9lT_#$|MAAfSoM#N^r^CHqIF_at0Hq zh5YJ8uuedC@mB8h?`?u!+Hf-jH3rZoRr~v{M*Pu={)4nCrMuCha>a7KuA@ZLnRbCX zfT7uDQ45Z@iF}BaGg|Ri-&BIPA;`@}&s{_ESDpv)u&6yF9>!}0JC)69WskQ&tv598 z+x5`8-qmSdY<5f5SkM-eBs=a0AfBks(m~7SuXP=sVjsn8`k_D3q^J>b;GDw78l+0lFQpaFhJ;g#Re^`h81ma3$p-S7=$xTD$!C;&cX$vj15LsYu5 zO&7>}%Y6?aF4&gS?k8<;xJ;NB^{VOxxn?VT>d$Z#vgcGIW9v+uSR)aMfIMDJNdrmy zSF@aPP64^_%D*sOC^*qdu0VMO2FrqtaBvG!BRBLT<Rn>K$w~PHqnV+&epwN(`F{5O6KB(%z%e@#wx_qwXXc|3cK*^Pjy$KR^%lg z!JtM~eg&Gsa0813fwmY!?)jWD`(Sg>E$-&5Ob?~UMon1Z@qQN{l}mTYxgwVdej2o? z*E~0Bbn$E}-HZUSC{@GzM8Xdd^RrT{+0Vbj4e~v_K}Be0z4c$jvG-tAt9$N3&#^r> z$pP?$(v}kN{jPF#`&6DS((nN&UR8L2B#!-UCUk(~SG5ds|4U_s!f3?n`3Xglz=bUp zl#Id%Z}d5XAO>Z6Y3TG!Oi@GxYPmtwDa>P?U;0%h7;CS0=qu{+>d-jh<)39n`14h$ zST)C5(&0!TJFiOIe%9i-mB2u#$1wfI%fv3>m^0=`j4$0YJ>sTC6b9p>b|xmGQpX+A zZo`d0b~flrD}2NaX7sDbxIWLbrv|5q?uiyxoUfhx7eoCmuptiU#WFc@f#`UoMtMv@ z3eNm(i?LnZZC|UB-|zq%nRoKzaIYB);(q(rAB!0l$^&Kd@As6f$ry=t{n;ij?vFA=%BT=V6ZBg2)nHg4f=!EL+KGLc)zV543xM>O1e+mKy| z<%}Uja!d<_(KWdVC*y0&OXT@&g`xQ|%KUt5v7gN>Ca5duG)8nf@4fHvD>i%)aT6`9 zM=h;4v9|k^pljx0UM1B@yJ+FvmDgnZQfB9XuXqkXxHV`U$k?A?rmBf_&w;-vKFHR( z3!C@}$>Mx%opm6p6)N)7FWfD1U|YI?L=#tvIJ}~y*r3xiUHgxLBzTR9hGYr5Ejj3L z1-q!`qAvb)+Jo*R7oc3+cNd2T$egxK@@Q-A6;)IS|8BO^M}&`Uysp?^y`_p`m+I#B zVWn0Df%w6G?DS9XOe2R=b7r@WK+|i2N~BWsB`9BS35l=-a_}0TQg^F;6WnTMWLir; z^lhU^wwr#H4pH$<*H9O@O>llm{Alqfb53>A_406|ViGrKfnSSs#^$RMnLfKZC%sFf zKi63+CGpa;?VHJ(3&3P$fc&OK8rE30@Ulq;##Zl*W_A7=F4HGALzAmOey_MEd2t2S zataDYz-x~yxoXm>_JJ?*E||ZX!u=AQud4yK-+n1MgMegvJQX&mw&#oeq`+q3+sblj z>&b2pAH8+MUmr~A{w3e3G$aZpw9j@z-sX3Gngu2k{6L65v3xgAM1@Vf-b>xEvpG;L z0c^PS!{33F`_T3%m2&}kF*O_E1L_y{NR(gkKE$spzp}+qx6)fHJD#1SgLN*{_9tF> z!;vP4P$(t7LS;mgPq#AbCfli(MC0kpqLE*%eVz@8@GqIQjl%$qvr05GF1yYEO?p!TMxp(#QA^)+^c&gZ~y0DN9%|5U`Bq8bWb>d1PK1fIlBX-y8)#sV3aeqT+#EVcUd&}8gl(!@5c+|GZ3 z$M=_RMCW@2=DS_6dOt~1czx?y&tzF`&2v|yV4?&emN_&MUBUtya84q1GO(mIHqdx2 z2oe4;cER29)WO_L6c-&(Uzw+VoXouw9t{j?v@Wl8)5O1&4!n=3+A<3E1U=~NFVx%x zCbJfeUwDIX2oZw`plD*!1E?prNZ528m0k=mh8>KUm@`faz)uC7bX;Q(lp^Om ziUQR)$e^!+0J4`wfW{DGV{A#6TvidDOPhJES&I0~b{`AyGJv-vnd~N?MGIa5@1=C4 z;rK+)T%>j#V^=kIPKHAN77sjWgo!rWLA7}AYa;#}vRiGzv=tVnLky4%l-ehV#OV*Y zO4YC&3-J~jKrW03F+cc8(Heim*8#;TWcazt#ABoi!=>Tr@{ubO(gee9crx& zn(=eVM<4P^llJ|}KCowWz{KVoWFYro5f7+q%2?&NpEyMxgwBZ?M*{a5Z zG(GN@LK%Qq# zJE>joI$obONopzGS2-(5uu<|`V&ft9mfG`Ru(QYbPSVHp)-MaVmp|-vN3yQZz#%2)4BQy%I7tF z2G)9s^}>Py#`X{<4j*N(n4WuT|#{~$U6eRtld9sRd-kpR<2J}E@tijbk0 zN7?Ql-stR8y{xLoWuGN~>%4q75-WsYu7i@= zWL4dk4?1t5|AKQ;RW$^p#RJ~vsU9_nO>{s7-#q|%$Q-seuNC7zxUegkBKtC^nS#hcCki@Tx@Uo4SL8$40=*yshjiCHZk6E0tqLq{$18~v!_U2e%pI7mw1JzLd zBQv-P#i@MWqZX;>+0qC;jT%jsR?Ut>q~&K$!|vKp!VX4|6*$%}Rds^hfi#UBSoAgV zOk8wyTL<^VmiRTcr9Q3J5mmAR{35|Hy+Cao(7`vcf(Y z4ai>c|9MM2?E;F1`Zncm+sV0sUwNutV`KCUlkl;-3R9n2Ov~N3g{z2Z&tw3TGpu&f zTV&`_=Xl-vgK-w3DdR-xk;E3rtm;9Q@F|i%eRExWAi3Up;2eof-T&uziTcOBx!xea zEdtaR=Fo;E3~5fXNAnRck+;v~J+1+^0zJBBpOtxuKY3cMZs`Eqsu_}GX)sGJLDR)Y zN=zb^Q_Ypujl6<|a0+)C@2;~M#S^^AIv1j3PhP+J)#1j`ii&TZ(BQ_B zA#$RfTWn-gzqOy(h?Rx;tQkk)6*f^l+ca-K?QrdLU3P0`8H}`0A7I0JoTDiZFH`=T zlm0Jsur?qOBa|t4ffh4^k2EDdRa~@sndtZ)b0eQ1>~z^#ah@^ODzNsKCO2sAV0-hl z3CuMM$Zw!LW+%b;QnF)l1R&BTzI!tAYE{G$WXl@;W%xE@^bSE-oL%W=peH$Ex$qIv zrH%Ko9c!ob4g>X=UPX*Pf=Kb_bVZ9U+nUR*lm+W7;23-vtGN>?HEjcdFZtA z8A8+tBWsm)Ho|jny&;C~<2pjrs;{vn%wZG?2`^eTSF0874}%aUF8ACUv)y72msRKt5|z{cB!DgsQ42~7ndHiKUXE_yF4 z$wY|5vOGu)M3YSD2rImXSUoj*oWnX`CChPpf-88mTu=L^_oyIy7|k0?=3-0Q2`B*EXRi2eluxl{ACLe$zue}lZ)?bc$GJrKp z3CC0K!_3$sA}Uc8IuP3E4N-UW5B$zM{#kSIFSmbdBoSy~Z->k7$Jh~mk&4!U=;A{i zidghP387krZfHqG+rorTbvPxmDqteMTxS6>fPQNdc-Sc4?wC7^7r6ObFkitdHIB8- z$6)nPM`taPSYAco6Mr(b_UDd|)wEZ^**6bjg(R4*DWUo2Ayn!pu!^DgE-zG0ZZcwo z9mzOW)k$ZjM6#{oBGCaFeaa2Pktmhu>#M6_U)JnCm6ioUMa_Dvi*wo%&!9W1=E{kU z_tl>A*J`i4nf>`EEwVZKtqWgg;;dRa4_AeMe2cbq+Q4)BFz+jo*@j?wBBMK|tQ>Fy zMvG~FmTXYVP~r7Xa*B8Xq2vP=a*WxCLSk*qsB1`o7rhFwDUh{&YuIrX>475ujceSeoVUr7lbVavYjz8c$7bJpjBm51(n#QN~)Pv zFP=Sr6BzG!EiGqd+vr-O)>S0f1GGb!WxE`*i3tK(@RiEWH~|@MKN=^)u^-z}`uON% zv`=1}XEXxj`}u`B?($NN`lESW&n$)j9FF-?GW(2tf#!}ch^R*UE}sKD9~D8*t^y6E z`ie~O?Pou`9^8>Ou$oS@>DQWCCBor>KMM% zh|0P7Xi}bz=+Xk>*Xvh;)~nVwr(DO8?pM!9U3^dp@#S=JLrg>ua_ONL zyeOvzwWlu~T$IF%rqk|YHXmWKuFd{}$q&Jo)kbd2key+EN3{2GQXlSCDMB<5y2;yI*4>}~ zu~FwYqRA@%OYuRU>a}tu?7^ovkwR;%gCxe!d`%_qasO59gtuurN+K(W%5vJ$zF=%g zNJ^H9&8t%WfKT-{lQNM>2XRvrEX~LcM~X)#`YsWAcO6kGr^cK2@iPKsKPH{ET%Dwq zV+$mCEsRzxC>CEJ?h7V$B+=v-vv(|Cq!=8sQyRheq3xbOJqeAsE-*BTEy2}s^B2V_ zyl$H&f%{+V8Wfmdb;jIHFC{OYUA&KQEy}`bSGBuUE?7l zr9dpZ-xgwt_DD@RyWv)0np7g?BUq?!F+e-0qq44S^|cc|!bgyIZM#X>$}vS;pB)rbX>?DWX%T(;GO823;z8TvIlT~p8L^4U;Z5I3#4Wofe3Il%Jah{nSt82@L z`8`85&7m6L1`Lb8W&(<}z>Pnx6)xCjzURW3ZDOf0J;#E@WKwP=l)=s1!-UF^W8aZS zb_I85gC3|Kl7I#y6c$^57&$&nl@SX!-s+>X&4Z@Hf;0G&W_yL3>uCUf3*#TmS{(h{ z#LA;(n|d=s7_+VZ_+;dT+U)0~+zq-60rENGdZ#SY-rHYt(?22f-q#z|LWhf#00S+m=sOOmS?C#@#5?iNG4MdOwp=~yrq5W7vF0)< zsH>WA*A$Ck>F_n?g*)jT_-ujc4DPFBehE+_=rs2FEY2PVv39LXQCiD3w+i_|F)jTX zJwfi5U2ymDU-Srb4S}1c_y2IOLx(%=ToJ13GAg?5L%6ARGDGq_!M$+hwxro6a1@_$ zcb4xyrk2|@)I8KExM)vQ5(QukG`uAIi=W!wLnCmH8BNjPPAmM zx<9m)ek&tPu-?at)RX>~5U#B9jB_60RLK|njWZ+4Oh>AzHZuhayz{l1?B;D|q^%dJ zIy?s!ZZRAb)9yspw*K9d_)?M29JwZ|!o}%7Hp)2iSw&_?)mVeRfq(fzb0*8u%XnUS zG?CWpt@t(NNOigm2#@~f=BGB@8a4ZevBvZe1;=qZEq|@jrQxP*sT(QkMaAuF?qSMu zI3Y>ncgWnXV>i0y?N_!LSK=JWrBd~@!-0W^$t_j#duej)RYTJF({qtIk)GCD! z^w^oF#ekX^W4SBZ@c7!$UDWgSCF$AoyKeP0I_x67W0^U1`JDM0U^vzc;}*`nQlVuJ zJIOabpyJ5VUgH)WVLtAs+h9K%eLlTX8?FPs$Gn_$TWH!UXY$m{sERA$5c+VdDyhBI{LZ`w{s$bf!^myawf{fcY@ib zosfIJuE731PIwerBa9S;jbDgtcN%m@<~(km=QZDu=#NxX(Wqt_*c~x&_@PCUtgQqB z7^vVk&0G(1s@__zmL4~3w%XIu0p59Kt8(Ox%YrI=VfQh zD-#C-?=Wr6&!#n=ZTqRGm6X*VjX3j$rFFKcwOUrABeKB}6M{w49$>_A#cif(U?PK>(~k$*GyW>IS{D-}QX?m^tK zV$fu(!5hXucyD{LZy}}Kjs4E_?^ze{(w8s$%Uq-U`W1<11m-3pbxoJa`_!8Q`9~_h zgPhCtQoxpkq6NE7w zkZsyg*?$qhXTa-LZAH&7q1p4T>Mo?Jly3asla=5Ym)tBSSEu|8#hd0UJS(64+f8+^ zxvlZn0#}JHd2hmo^=gZBC$OGKJy_(_LwZyHJcK991x88Q_S4@i!7+@;G;k6N6;!Iw zUlmeHPn=RtiG(>|LClp<$zL26iRVnX39mkz_=uNgCG(7W#Qaxo_;tD$I()&Xijfrq zRwNR96p2qwYWuAt&ro-nF0sld?edeQ`dE{OL3eNfrfHg-EzOG=F`II@_)O{$fDx6Z z#3lQNsbHYvVq0a!L%|Ld9;84oBE8YE)WYz$(c55XT8&l)Ctg*L2a@dFLL2H4H}a6m zp<+JpIp69%BuElb{L9FFvJ6`c$oi9|SFLtsghr#dJdcks&g@2O%vWfXj|6d+Atr( zyFpE*kUT({;3i+`1;l}5tun_w<%210jT3e(|Lc(7E1!sZKMVpSiwF67bs`P*Jte*M z+mH@R>_0I%pEq}4e*+b_cxP=?1yUup`S-y#*5U85Qw}=~5U_=5pL zZj$w{z)>mRCi!y5dgc)%fz3#hvOWmN>__JbvLwfvoGWatEc}GG=TPdb# zv%ZXmKDOj9!4am^*&3tD{>xyQ8CeGEkX@<7V*OsR}hQUx5G>p%#-rB z#Rq>#NurLzRb1!;&!oDcC)K90rIaGteNz*QCc;40L?Zpn04e=fq*=D6i=uu1<*$yM zs`RTF%SDcNU<%g$1*Btv4%ZB|Z3g2JUtVVoax`c!a>p9ASEq-W#b;nYYA5c8Wbmo= zwL#yoBlVdXk#GAZb0dBj8TIenKY3iZUG=jCZKiXGfjqd1BQiD!!!TaCa`yc^7XQ3@ z=tA0O;^T6+bBrNG&>=pbVfZ95jQS!u4Cz;ZRRh(3aX(JC4@g~ilB=43gnb>mqL=cw z>MRG2Bk$~CC4ERhkaTGMr>u{G`b!jxFqM(%J;+%k6S~*)x2=iAf#3&FK zzC&6!A&7!Sw0O>(c(Lx*kV_rBN^m}}rMK@POVxqgP$>0cvz%a}%wRuYUhX{pfXnGw z$JyjUZ(@F#%XC586E@2Ld$fDFPi*Tw7Uy~Bb(o$_xCTg;)Oll$Yjv}984`Iu*h^j8 z&q}j2Q4%C4` z=kMwv#D4K&j|up5Unspd;&8O}4C z`ZFZnR&`sb*cGH@yMbod?mUGU%;~X(w4#4h&GqzWP{3*ZhRpV~h=UW^)4RCAm%L|X zN`Lm|vEc^sJwO&y?}iXt{iYWwjm%!-(954+M7UcoR7UJGPGlZ$gpSZ9^yso?Uk?bM zua26o2O1%-d^YwfqEEp5Zds3{`F9z9S*jCQje4JhnYr$y;gHM){}pMXn+Wt{eMu4w z+h%6U_#$v-!PcmrY3^5DgE<1qQluWx4& z!=Z|i{Nq-ikU6F7;CB~Q=*Ild^dt0>*_=M0e?0#p%ky`+a=-b=* z`JF<}lscKHz!9?T{YW8w1;Y#b*14-L2TLM`V20)UARJtA?Ky5SwrT%HFrv)n2o?IL z8Ye8TqanKkww)hb#M^)mRl+#GL}I*N0AmZqkdR(czY|?3gy5P00=%SV<_;9113R zV+>IVzbNc7En#Y@WkT#qHtUu-DADSnX}8nhJAS#vjd4m-M~uCDd=Ea%AQiUL z2-5z}uxB!W02LI+W@K{YKUwOZQ(2vD@Drodm-v#kuf4U;@Ib(O5Jy5(j;(yfh~*{< z)bAT2FTDZj70&e`_(__cHm9A8LTzRh0;O75sFG|J(N)$$sGQP6uklpl{2r>JPL-FH z&)&0K$T8Vsj1*@&pOg|v4ja)`IYZ=ntdcAAX}|7`x7FkEUSc+%?_GOut-UdG`<07~ z$VI;uFf*Hs0IGdRj4NQO-j`kE*5BP<7KCN3CMSNKJ%YQu$E`GfY2jI@6{u#q8S@p< zWZAP$;byeGY@T%Ot&-oxhUc8|1!}sFG5xD?ejR5msP~8cv3tH7s+>UUg$8gs&ueJH z$2P`ONHJ!Dmw19O>|p)^Y4VlY!JJzf+Qt-X)bmMKae#4pwUv@&@$Tc6Q>n)!?8m6T z)`5p$*Y`krW_qji<;L+giTL`&g4vnXMb+TYK(1udx7*YVd(CiKKwG8p$w^eGv zWtRDW`B$%#eDN{0^6OPfy@_V-jw-5KD6@i?=lB<=L4Ne8OcU#V@{^V0$tp)wwv%0p zHCFyCY$Gy>k-w5jMNMs;dPL|hGG`BG#$v(9hM^?8$RbtF^->Y^&Jk{>89t#*zG$Qu z4X6oU?sAu!ymPdVlArMPtvidhhGterUP}6oKRr;P!qf`{4aMkOx7nf|&yV5}4Bg0= z2#@LB`=Fv$4j*7O7qtJ~AFw#K2C1=#SJS7ZoI82&5p=Qmfc-FAs&eD*2EcT8=`!2T zfir{E+Ujh;r+t(WHS~OQyOS|JM}3U9`Pmtx*6Lj?K%1DS-s`Pik6kG$yIAzdqwH#k z(Cy@mZMSDD^J;ocVEI`e+n34EbbL3~VYemPUd_(1M+%9s!)Gc2HJ>$IXqaHem zh*4_ll%wHlYeb-V-bLEJMEnsxr}A_35anIsTp;4L6~>ttG=>hT{}yXdSua|niYP?) zmxTYrJ*nr^oY&Cxz_6z);wk3ojKv3$#4vPgaJ9T#l&|XmG4?N5yen#19iw6_uHuM= zpD!1lDel2~wvGD)RMQ&eD>ti&+N$8%8ih!C`2zW~jY9pdWAd@Rc?syP;xx88DgvOS zsf3q>KDDu?9RIlH{(~d=FS^3w%J0apq7VkGvR#})Y08G@bxqf{gs22j4i19qaF65Y zPl*NVF}qEq?D_1}*M~F=BSVDx_72= z2u^RRamRM$B2~6LyRNW3cAK5OPM$(NDFr}CPpyx%&7OLMR%dzir-c*e@UX3nvM~6; z6v_Bed9#5b$45$!ac^s|kLqOpRWCIW`umnW_}6S^S$21ER6pv7@8#3rfldK-^^K;E z;&Fjw<~L}@HiB&nF%_~WJa&Qo2~H!dz&X07rC+`xk82PN3I#)|bza-OIMJ@c{gME! z?7Gkp&ZND7=jz8I@-A43=M4owrgIQ2q}gSeql(|zPpQ03?K?Mz7b6T`ZGMyg@FpvW zR59)NF*~OfCPt?u`jj>l9e>Gr%RW9o+HV%~vpFrgun+abQ6*sZ)BTK2F@(0zA(o>S zGGc_hOguX6p3o4N!!K=w3fBa!djHpvQu9yY$1!Z2xqnL9_lk~cxm}P8@-qsSs{4KA~<>vwHTN9XwU4My=5JFnv^_Sf)~TeT)K@#N$e-}LlU zQJ$7pd{OySrtK59@bYNBoCjt10IG)!viA%iM6sYq*IVA5qa80ErcU?fXI)uXI-7f| zF+D^~t5`-dG9=L9M}bD3RC=d%)ZZoP3E5ZJIo;r6cHrqUC*`qB-M0F+V?rgApT*%8 zxLmyCw=SQWS&&up%?2V?SzTRJ=85|4`V+MJ(JL$)%b@{x0I z<|naVcq@mP7q^C%d86h>tvpBg<&2A!h(epwcJL;wbfGp89&fFBobv7Q?GWxhL5*gf zYCvTTxRj+lj-b2&>PG@BMQi80Y0oxV!5?sqL|-eOu3zfIa0o za}IS;UyzCOmwLzy0b`+i)Z7kQ=XSuYgL4;tGg%50%!)rWu+#~>RPZVp0f^xs|R#tEPSQ}5eE zrt5P&V7f8bRJIk1?x!p@p5elG-{_oh&q`XO8(=yOX1?t^By|IvQou3x*) zO!gJB-8}F-5r($0UMWs_hJKOb=&_MF;lZwt)z?sZ?N@i>WU`E}DVpwe?W?w%mS>b_`_Xnv zy>F?1oQT{=+zCbdq-eAaDNvu46b@oF-gQ+if`e5G6|)G^Tf~JVH-%}LXIHxV0Lcoc zT)b1;l^xF+JD5WTyCmDW1$ghFA(vU@O>&~?_eUHwBT2Z~jM8>w{HvYq|ZHd#4&wMGF zT5}>uC0TuUxOu5i+3dn+`Fnn(qtq3#+N&GKIvcF_uaanU@?dMf8?BaA&(T;)Ve@f3 zKfV**12KQae&jFvgeY|10W3HkSntz%(GIejr(ZR9(S4WUM*x0WcB_FrIr8cTNBx%QcFtkBP4Jz<(1{!56s;q#iNDF1bkqX z6mo)7C{qJ4tXa!D;14~l>VHSpkRYNJ6F`akZuAhducD;P`@~&?$vyyl#CkMYssQ%5 zVDusZTFM7jl#sd6BjQPr$0g}BcY+OM&^Xk#+iWqUvG9eUym5{Q`(-V(+Vzb+FAICj z?s8+aEI}2Q`>6aG|p5NTIk99rAocC_##tZhsSP~d5K z4%>mxoGVqplQd|{#I~y#{)Rc}V2<){;?Gu|Qq`Hvz9Zl#bwE+B13+IX>m zkTzJibd3#)Rci6JZpD=ltoMIIhC@gZTJbIbLc%#zIo!bdr_7(qI=73{f0}x(QGd|C z4QqlM6ok~Qy6BI?pEuX3MkWGG-Mz5dV0A!YNf!92)E5=CUC0yp54iwsnG?ute|J^8 zw{*wXI3|WIe;?cj)uX#Xse8=0TgB&piNE70Ar3w$y{l&5XYrnOAaIezFG_%jVgwP{ za_qFDi0RUnID?yNx$)t^);62j+A;&HIWfd}0w4x!I3@FUXHa%cp36d2|Aq2HlzC<4 zzYw*i?5lGTK}Pn4qh>Lagq|^QxQm3J=MZ`7hV%#W4Px&mOxCJ@hW3B7eQ#~kH18}^ec!98^k-v>INFlx5^TKvlyn8!V|KT7~c z1Iojz^HlJZ&lczGM$_UI4Z;}_J$cb#+IgqgwSbb&BgQ}BdiS8s_{YlJ@72>U3;!2i z@BYv9|HuEcS~2x{A+yq}LOBkT@GjLWWWtcc4vcM~6_$$3`J5GV$ax`!5Zi2wk;9OX zLy^Nad8Oo3jpTgF;p6+;_w&o=Z`dyP=l%Y;UvJm@QTC7|^lZsWw&0w|nE>8~I=i&< z33&SFgK>&z4kRB=={CZJuAVm?`Ra7*$u_3h%pawN*VGWuTey?GWcI6-NUF0 z1S}F{q?uT_b5eT*Q;m@#i;wHPzpe3n<$YXkyxa}KTEXUf%-Ac##d?li#(nZBo*0#@ zixDe*cAc9X#?vX%N-*RJw+9h#wexW@FPM}&CkispX~3(*eip~4op%hR0;BlTP5O&^ zNp&$&R)7rbOzUPAzeVbyR?>4p!R96W52U(}{ zP@JWfqM8RshN13d&wD6!S^J!suro*T@7BEE+ABO_d@lwZQJ57@m&egGQt|_-uuHlT z{NFpRs>mzBNmmdL?R=Vb7A9J!`9*aAF74*aD;Q9)@6F(XUj<{v{r99*Ih;8T-R_eY zFBjq~Ok?{eHm3aLU5u4`N4n})d4-|4k>HgHY(zu$p9p6)h}v_o$KTAX*L8rotu7u# z$rgxh`ocB1cY;%(^NFmSYhBLbYEm-QX$KI=xV|RQ(Vq%effYk263|%kyc4WAEN`|1 zw{O5toNBbRsVGRWo5dm3?LXypOP5Mm!dXJIiWpta%SJ@LBfRq?&EulQFWiR! zM@Z?RKHjiFalH|Y*`&bTKGtoLmo;t`Rfah0P%Z^DKH_`Q$4cjjdaD`FslTko7o=>d zgmo_9wy1+fMwr@)w^33}>VHHxQ}jv1K!;bJMQ5{OP>WusTUVI_c5`p= z$!Wih%E`VZ8UbkrwT;O>#aGgH>{bTp?PFIWcU#X;X0~RbYpy%ITB@N&UTY@L$t0h4 za*!O^L~mm&qGZHS9jkh7z89{Ej0@o3u&=64Bfb|2)s8%N~$*l78w0To}f9+v*-ZD-jZ z%fNiEk@uF(MepBLj-vy=jf7=>)*->5N7)mdh&xQ9Yy4?jg%1GD@+{O0kMO(c87`X> z#_iqsFSfH?)pp4}+Zy|T8Y3y}YLv1o6pQk^m@{!e{3N_E{eO1oX7*Q8NsLat;O*z!3!>CsIwp#TN$cx`A zX|O=L=0gE0CbPIqbC$9YMrLQ)q#P}Bv;fRYBK$_1@lqZuMuHW&_;=77s1lSqZ_wJYyu`Q^)qvb*3LwsE@)6C)opI;TpJvaDWbugyzvEyQHls$Jx7W&bkSxSsB zSL*H6$%ECK3^0!j28-EY^36RgDrK`SRW&vzpyTw$NZ0LReQAI41AYQOI>A%g!);&f zoyvUSDajoJ^uBfT5CN>g8!&- z*dL!c+6>YfohcV(YyS8ZcWyekIg|B zxZp+&$CusfQg-znFt={7XZejx+k&5$9q-$lM7xjTNldAais*MF>&E3h56ZF!8?O+* zaup1}DRbK)mE(}eg3pt8$GhV!#s)6CNh)Aa0g@7ne4?j*mxX>h z61)m|?s=H?Gu`x@NqnM}r8EH$wH2;yW^kT%gY5Q^0_GQTMvA?RvCjE`Tc!7@ast}z zAeqaI*+nTxmed38^RsRv89&p`x%^Tj#J$w0P;0mAQmQ8eae2HTd&Fr6t@r*$ENhF5 zphCs}ik*?SoSe%HzQE2p%$}un*ebLn=xssI>Jo!tH_{D@uu?ztD@TN^@Wde^rsAqZ z=E&C!{-deeO&qOq5&(7YrFTVqQ+x^^GF}c)irn};az1OkFnLKZ4u7XkGhQ5MSR6+* zo@~@)IsrBDl25@4Pq;_5LziQ6Xfp210n{0NIA-1!CyvNNMs zOF%WNs99YS1AcXaKHjjLMg#sDM|dknrtSW7v~IzymdL*s;dTjr1K22=!4pH%!gsjq zjEhaseIdteDJ%n=l70)s_^-fa~FksAwgiFTs2zh?W9}7(YBi+_IHj@Tjw7he{R|vpb zxf0p|>lUE4Xnz^IA=3!h8uu-_95orNv6U4|b_04ph^W-!ubuf`Zf)OnK~U%b(n~^7 zEzsa$*R5YrwDDZ+cu4t?*fU|< z3Yz!BW%OS3CeN9abv`qUY&P)Y%5Qcz;dOdP4#64*An--78-wu=MBd8YMUpdh*|ptu zk~x%mQ+v}&siLBrWzFWR47d=MF*6G(Sev{{q=$Y2a0k|@|n$P6o9dA{{8L>QbLJA2fMC}~|2|?zsKa+2R zCoW@yaKm@v-5~R*iFJZ&2=?lE+Dy%5-Dx^MnsGn`l9Q^?W*qPCuskF?U2jdn z&CYl`zV4`QT}0luih8RDF1%@;JqB%G0D7ig+D`k{U>GjEWsw_*I!z06%3Uf9w>PFa zG;I0rQU?b@YEkpst=>Y*y~T<=z|rFqJj&4$UUrqA7KXR1k2B0vb^Ui%Pt+(M+KtcP zt&J1w4kUNSm39{XGvxO#`sVL(ODr&m<$;D9mqqPE$Y!-U`dCpza>aX59(Gt*37Ejp7^6l?=6mw>|Yk$4X$)a%@1*t?-~A{_L>Y~ z>hj6=82OR3GYpe*CuN?)0qu(g1D7DtCgSl$_PE?eOyDxW(^cWDPYjip`n(*xWk1y9 z#MuKYu+iE~3m-!SGsvwjR6L;DtX*Lj>12QWP!cM$iyrk*E~U`f(PNTsMgVOY6_hYt zWX|DAm}W(RyrtrkN9?Lu7Oqj8%#Db%!RV+4fGA?>c|zz=y`CL;hX_qi90}9QwzA1o?{P=k0)!vat_6-d1+|*_DY(HOS z9rpXrK6b<4o)OC6ZZ;Mt4)!TU*wl9vYliK0YD(v*z?z|9Xq>WvE6}=H-eog;TnmY& zN{w*L0}TBuxdP5H2VF zYl@TAhzqOy7uwwm_y^~z2|Dfo`o$@6x|S;}!A|V$EiIxe=u(9dzci_@R=%~DjRStL z1MdKjsPr{ffcYo<#bHHdu98}Av4qBh{hkgLoBW(9K2g*za__$!Y|_Xt^Hv(vkMQKJ zy<2188RXdd`a{f974n{~kI<;^n4KTATSc4a5#KnRO7BxB5Ya@Rv{=gAZU4@D?yM02 z9u0Scyo!4zXQ@z?@sr-bq)#YH8dDE@B@33Ihqni|_PkEu<!1QmQ+)?^kVV(@;|ru?BHN_Cb#Z& zuGVd)>Pv@2+V~=800kQ1G^k}|ju>|~vs)fVupqlPh)G4M&CG327N(;_E|T=dQJVm1 ziSQ|8Z)$=}n>*jOmlY+8Ly2yzY-cB*CsT0nXvEeE2${udB~|yUPXO+i2XxaE7?a5 zlbYgw*k3!5vf#j@OnpT}*GBN7EM-eUy7`nw`Hy7Sox{r5FjuOyjr)KiBy&$Vvxjz{ zVS~cTJ$XCHD~Gh($8zpf=d(VfB+g3>SISkjo1;wZ@^WO+z89(>DsyBX&kGpD2W4i; zoEgLOULABZhgQOqJ#6rtefz5M#LV+rQAoxXopcR*M09ybsL^LkT3ZPusHt@aXIPR{ z+F8bvs2?sfgEMEI8t#s~XNx&z-(?%VpZe05<7y!7t(5PMqu4urf{(t+IN-4Bn%QIE zD{m7eLe(e#5>9H_1lu@Z_4nFL-9TcuiLL`jA(n#Re-gmOi78UY zT?5C-`qz7{Kjjj7@p%qTN2=rc6}Z{fk79g#|XOTXc2juxn1JFZV0 zr8w7ZHKkob4B%gx=qR>oYshnhfSVg5&MtnsuYG!(a#51jy>;jXy&Z$O45*NE)^QIRtV`=(b zl>Q@t0`KDzQLJ>U5ty9cOEG=D*4>!Bva~=~d%1G8>>BrLXrMzc2npow$_Lc9YCKXW?*yO3Fsc=<-PAOFFc0^1 zQiXTZjmx)zolS|6%{SKB>18v#y7Sh^`SO%D$YW^y8=|+Fn9eT*qsjbd!R`VXpL=!t zrD%c#a6M9W5<7a4{v|{ByZ`ozY4A2zVJ+k-WO|mWmz6rr@D9?pmQv6Ntp1{ngY>Jy z&3+4hYb$$nXXxC<9FGK2(QA@kVQusoMi~L*Vbj|!Cie(#T+I#Ed2z4be6K zejR7exUu9H$np&j|1ydwkM41NF1u$biQ__P&d{UguySQ#lAr*)%v z0h{wV!Q6g@0yAv)Q_B+C2R5=ljJ8*87q67*`#L;kFYJwQD}VNn=|GE(J_IZE$ND>r z1(g>FF4`Oal!^-^r$4oAg8M=0&!rwJbF5$fsbat@R&l))180Mu<5oRLspT_n?^Q8 zFJEmscZJ01;$i+Y`nFTQv4+R5&8?>17u0?D=co?{Vb#I=J2e!X2ci&3%JR>q9+d4x zpo0{B>xcENKA>NWCRCw?_7M|nyHlajRl@e2Du=(m`&=UdscBmqNq~i;fD$nTen9*WQy%!oBh#H5C%I ztY(*q+3rTrQmy>m_RJ|jGG5GzJforfgwMb6;VR;8mTPUy-{c}B2?*3AyIa5VT&~h; zFP#qbaqljAXxpw`_c9KFH}A>3@8Uk`cMI%~I-z{w_{@)*s5b^WWvi)isSJG1m;VYk zl*w)MOeOaLqr>If1yPi~XQj~7QyS(4 z!jG00!m2)J%0jurvbx3(;9i>YVpYlM0%57~+~x-4?0C=Z(usA(ifE*<1mGK#yqF`X zp8<*CO`OZb(SJS;MB!pxVP}it>I9!LuiUE-I52MEY@jwThJFJ^)Sq%!t&M>Bj!8LB ziq_O)GJ5i8k+7&fyWyY`$GE^BQ@q00pH< zanQ%AGxNfujWwZ-h8nP^{l$`YyTZMkc>7l7Pn<~;MEMDk%}YE0YH*P{Wn%})Dr%do z2l={5P$+}04znX5u?qRiq=(h=UToxqif}IlGj@C9x1RHvnlQR&(Hm;=59Z^yw1dbA zGu0YcYjJTP_&%vSn*4h;O&8Y0B6QC2Ryxq_@1Gg^u5 zn`H3e=HbmQ-p2!BmuUtT&|$|Dup;B`9eOn1C2js*g_GZ1L~^MIsTC_SdorTVN(#rF zPE{_JPp`ifko0%+1wW?zQ;5_k=VU-vG(2dn{oh@O7iAF-r~Qe`%b&dtX}7+G1XNC^ zS~dO9?-w3>E%6=aF&wfs_1U%Sc%Hsfbh7e!=jamUoYEWwKpi~)&D0-xf-`U%Uvi(X zmp<`i)+sC8mAeou2l=0JkDHYYPnuWAA4>U@aPQj{LmrC0=dl z6>|sI!3EJ>{$;k_^xjvY?45%Y_HP$Ep;E5R_OQH{DB4)qGk~Pu4z=A%<^vSCgz^*( z_zO%qV$Kjdv)>pQ@$e~HQ~o;qeOble)K0UU9h2D#Ezj=3mjj~qy7Y+=Sm36LJj$iY zfH3sP{8eD}s!X_;y%#}S!XN${*HKg$@E zlb+)Z^u0vAskpU&hEpF#CL8N~3Ux~-s}dZfDKN_dyW<99;a!mWZ z@M5GmMe3V9^A=&>g7W&R>09%)McA3^xD%SmwliyleG z$a}oA@>=dYsm&YF0Hd$%hDI4(8TbJky~y5o0q66 znt3gEpHl9426xSdEosdRrXSp9ED-{JC9hQQorXdLkXxfo8Q2pftft$k;2nE$V>ErEQCY_54T zYR6jq2;$PmO=jD7qwTZ2Yc@HHh?|dH?Bsk(i}K6dk7F-kVyp8B?K&m+dV{l;;-PL2 zvk>&w8#Lcmh-rLxerA;Y+WiFnxZjTdz$@xyT*{5nye!{I%3&G)P2yG7oyRe^gdMK# zY00~S;g^B6tX9|9-&qYSWISedP83XtUJD73KY++h2R(vn*snEEf}|CztP!{pD5-(+LtW6|Ly}=9-rlM)8`c2e3uR@w(9LzTF_u+dPI7BZ_y( z`DbXHs>C=dwGY7L#^>AXhKB9C+N>Ppq|Kt|Fh?GXY!#C#r-M`uwC9<;aXerq^2`{1 z0}jndXf2l`QO{^9G^i$IDrxk6_hz55U~)1Ux&x?EbE!wNhjcC$L$1a3WY{<(QoRoF zuE)5eUAmOLLu4Xd{$TuZ*!gz@xxu%~~Jw2b-1sq!g2PfX?|O|iZI9JDgnrzs;* zL+3A*8Z`8iXxac7So)6e^>YeUvIQllIq&pXn;j5@J;V&%V8)JoU4w3 zI+~siN4Ux)kYPqb;U5z59`<;5P9paxP8?)nD)qVsa01v^uh^dHCE$G#(tGvhm`pd` ze;@@d%bJiabQHr@tSrFT_nh?Dq;laJNS(KC4Qnr^XAy=~+@eWew2%1oEU_Hpdq!Q2 zi&seAyy~W}{M%t=N=W^+R$IJWTd@*!q6fO}pT}w#0*~l+-~2*BWsNKt)df3$z`l4f z#GRRO_Si+eUu=J%vmL)2YZM(Jj?R$7huU3ePV8t}JWTta^SdYd*@Qdw{%7vi?Z>n^ zNYCme?*UL0$-#5j43v~+BoR_QrbBs;l`hkLsrQ<@;SgP{$tg4WQ|#jcRv+?h?KyhK zOVHC6-&Tb=y*$+inMVeuOPwyLL*~5Ws22QQ(X+v{uUQQ`WREb?UbCv1lRconSoyXK zV8ZcM#!=R1?WF(F%zr^KxS57MF9D?tJYd^d0sPFz7kLtJv*x5QIk#oV-Sf16*#HBh z%6ZVC5c?y{%To!c7a$3%-L=|Cm>?J%Ymqi|;12wMuqX~$sLQC2734c)p442}KNAisu@(bbUH zU*0^Nrg4AW`xQ5tPZ(~-Tr76jBA{h-cAG$8ym&L{j>frH7fP@=E1Vs0!+-JHOmg{$ z0n;#vO0Ks#N@ZsyjNLM}+0a90v@tLN?-ZJ;S#a^s@D~?YWfM@={~=jpgF|Ll0cwDORk8*D}2M&+=jg90c3-dUrK3FHvKISe8ENEZrdghFTv{ zOtt{N*D+;?YPdtaqzUx%zV2Rnt_|;r-mj_{cF1#z6VuTjTE-dj7Ovp4i%`-IGyed; zr(NxU-?Yg+e8Pi2`RZbLp_k(9Fdte?6_iU<>mrPv*Kl5w+c0ZsDxD%+-H4-=AH&0Q zWefA4xsMgMU|^D~{}bxR7Q1dT0Ye8W+ymvlf=^J_3F67EA0<1PNwr_5yg#Y*S)l64 zUvb-mQ&mILZoEI5_p$H1Xnj5!HNXt@EEhyX5cx6Otx4Axqgu=9AuYL-cP!&++n(Yn zjA@5#JLcv=*(W#stfP`JtrJq`U5{=<#7x9LF$Q+ijyJa)xBtbCVhZqB;nvd^^zTIN zZt6-NXi}mF_t9qM1Mc{L1EroH34ec{8mIM>HRh;e6FFuG)AIP@idl$Bo~B-a+jF_$ zGUX6GH+$h>L8x8HjiPzSlJbrr4EDHGNCddmF{>DG9J((Ywceb#Lo%tW#}CPDWcq?j zI715U%E%QDB=jm7-c2ovxrPz{0T_U>ou6Luv4G{6`yFK0;lE(G)AEbf5rKI(21}{| zQ(#Z%$Wh`iOvqDZY^Y2be<27+?>>e!wxgUS{FolPq&n9A^$n{LIFlXV! z9QgO~{|R1o&lSy8cI_+!&)WwqGL8uvYQ@B%aix7eJ`U*n0hbAsjU#F?-22*Rw}9%5 zLxq?6WKU6m$OahkvG5-qo5JLM?B;uQPcjuXvR={QiVIex4_rg%-G+*R0c)1=cfY@= z4~6Z=JX8V&4_FiPkmDU+U2!@A?`Nt%N-@SawTK4X^W^snjCGg2-edd$E0Ny#YD7*8 z*r5EC-JwwYEz^94VtUVOUKmqk=qsGWyp!Y3Ya|X3BfW^3Xye-(*|4EUq$32-pB~M4 zfGSA9-*eXJwZ|WPx{n*DH3u0vq$4JT2ji~2$@FP9bnuocJ@n2mGPZo^C}H>-ck#%8 zX|#VHz0NvZbWCsnfia3@s^{$Ki(S2ciIkBU-Nk~B;bb>g;fSr8H|#G2=X-gqgL9tq zOcG{gCFFmgPphUsILv&s{ae6E^kcCkN!q4Pvy2H$N){_qf;fBHVh06YnxaN24ivjZ z8vNyITmtTIa4OcaEQ-UGjlGvGVw)1U$I|=0P2qQ_!=mpI{0jA1QJNez?iuy{)&aX$ zNeTMqG;{PXws%v#oFw3B=Tm<&Qu>ygc8LC0Hbv-g3EgkC@gCxLRjUF&tc=jo0VL2f zbYA|JT`T^fZFmzh?+rAf%SPmlLpS%);_DM`Ju+&Oh%QRcgl_E3p5(7Q-9LPX>)wBt zhYI@41PsJz8A}J-&>5_=;w7H9cTtA_8yWDPx>%_Ezr|+ixG)cLxC5Y-A>+QMv3W9! zs(a0`CjlZV197u~-8*IaP7cP@1YwI6|i}U^e?x1*2Xy-p+Nz=*(Np~{Bnq|@08Q~=*@;fQn za8YQ2?$;PmW`ALVK|-=T!K_rrs<(Z!B;=0ZKy%3J1jnlyHBuziLMzB&YVlav#RjtG zHRjO%^RKD>jS?}!{z#vEHhj}48UJo)Probr)FXN8e9z3uLc=G73+AKF-VuYU-(%Jx z`8;a~E{eW_*HPSy^}33G0;IV{O^O!h2Ugs?hVTh$tN?G}!Z%3rshOsGURpZxtq|j@ z#0(KUAuH_3iX$c?Gc-aIE~A_PZqzXdDRqZ^A12zaId!u!`CsV$`x^N@$pwj_qN8gH5B9g{)UW|o zUa0~0L9o7`bcmhg>5T|n!Ryz?o`>qs2TMGlulVK#gm#(9n+yZSyZ$&$?A<%zZC24j zDu1}U#xfa#E=JjPnWE;nm9ljoE>%ZCAJ`dbADI^pBvdRxe6tuS!|iu1F$d`oj^cPs zBk4XmcDvOvIV{F2ak||L;2|?v+7WAqS0CP{)}w-5H#*Pa@5>`oa{p))&xzFu>YmmeYe%n1(=g zN!t8Pd2R7mxnKLsL%m0xTln4y8@0mw_L~{gm3mi1 z{h@Ae@tRhwzke0dnG*OsUFk1C2Xmw?l$f6WRCe zQWym-wYqWnlncmhQ(u0D>qJdMItfuHeqGpEulpGkKs+V5!2{5!Rq1K2#I*%zFyEICmMd*|)cuHMdLA-XK0Jo| zw2|qh5g3+4HH~%KdQ&RCn9*5fJB+&6=q>5;tF=e;e&G7gI$la3 z(cRgjj|f;S2G)Ouh%4=`U-XXBIh?7#4Ld&RSCCNAOC7BE2ko`9o-F82+1&uC$evxXP7xT+HtN!?2acI(eTyGqwThj2rV1SD{~KhW!gO z+v(QylBr3@?SP!D_BC}FhzB4%=ux+Wb(&YUO(W1B^O>wCI@}aR{3y1oUk{Y(d0A*Y zWu5T!Q|2DHcx`rP@`3svca>opj+3B%2D;oOU57)E{?MlVJ=q3vZemB_E0a zzNTm}Lnl{y!N2co57Q2OOZLo>yK;b^ z<8jr3huDNB)pl>kHFxaw%_PkJE){v2Mm(Y_gg>I$GO55oD(*mU$@w`(-u-F7M@=sU z(iZGa+=IyzB185GD?bf5F(0o@5nUo|D<8Y0cG2$S7Y321zF`|PgoWNe0Mb9d(DXi| zE>(QKOqLE-`lvpxZ4?20<9zI6Yj<~eiexroUul#_yd(A*e*bgo?;ungUg~430Hqd# zu-4h%>W60q6Zd|v4WG+b+t;=W-C2D*oJd@Y2XGh`+FT##y1z+>Q7PMu8ME)I;=I#t z!K+lT6gN$yB!br*?pdlCgUa^kp_$;u7_`bs*zJ-yh|Zd2m(5X;bKYQQU| zOx&#T7-Feuq`&m`AL7?Pl-KP!W{kjM!+r{oZu0>&jZ8T1Mj)v5vZGKOVgHK z!TnFbGYt|8-$!yGF1cf^K~^5>hZaG`NJJeyQyCorh+!H32Yi3z;umEF-j4{2x&BSd z-}xLiD8|*ln04ej$cisH5mHN5@%P$<%D6<&p_*?6_s)#kr+D64>i(N2ub(5`;|3iY8KPUkQ^{B6c2)bk^4ZGaO09PWZuz#T3-Pj93{R zh1{t%QY{~EK^zk1F!dYT)3{NVh!YKZlkE-oSLQm#PUTY6m`3lr%=~w<7ePwg6jK05 z?)dGp-`ybl%4^KAAaQlPOdjbU^_h54Rv~Y~;rn|dt@@YwhnTa5yqyXukw$a@^{Pfr zsL2zkSfR}@*Grgpil{3*5e}b$xjzM&W~^bur;8=nt@_<5i1a`%4x2E6(E$S6pf=R= z{&K`!AQJsON@0+UGgUCW9BM>yF#bl?`vu%r$S@<{;e8eYws=Qpga&0&W6oXj&i`|b z$cpL^<>wnDK1-5vQjZdaux920l?ansRyf##r&223cGcC{C-0FHAyV84@!9#fV;Pij zt_Or4%Gs^&z>pQ1=AN8alhcO9!*&>Kk!xLr*3`XVgv1WnYdEJ+ERv zt>&1)flWWGT?2xaw-9g2w1WB%yiP8MeEr0&fWD~_bH|8T|2lLLEM8H9+;^x zFMEw2rMlG3&}vUYKVEwX7}uctqBux!?(|(%hp6z;$D(tD=ocfMGu@{4t^Dw1fV!a7 zRXpGCU%t`eN_`4PYh)R}b{%%OHYxxf#*yccW6`}uavuOiG*zo{>roAPF?8;pU$IAj z8lk55YbbEd>=g7ART*{iqI+zTzR`c*e?I@d!DjI$)yN9!!OK`Ab8-U? zTl4_cMek=GI>AgU1MLgUh=H0{^Oetl>+nb3fLc3~7e^GCG-NrOCC-z`lY-@sBpA#a zL@--Si8b;qLBJ&B<5#lB5Qi9JHJ4@pSzf#q(`B?+muVDE)z{!}aEl%3F@jKGnBvgf zx%nUPCM3$KB+AOVVK`n>9Ya1{^sYWmXV1FLda9}JWcFL??CQHmktce}-vj~=Ot#?U zJlQsL+%lf^!A?(tOsY!)T;@^g8kPzbFVShY;OfYU*|Y^$Yt&iiOB`8ohrb%>(1<%j z@g!0NfS2l?q^g>zXDIFU!dXW89{rvnWNA7pnPT!Ijoq4*810#et$Q&j zp=HxdwV*w_WY|*hdC{mQbH`%yD*rk|{^9QW%J_A5!(muQ4m#kv4p$ZBvt{OLOYPpo zR$Ib;kg7}k;_E!nQT z#4)7D)Q!wrT@A4R(jnI^WCW3|s%ojJ1DL#yCiFJEmXRnI{)DR{vLF;YCP; zInfTE_aC;@@(xyJD?yPiA4^(7`86&XX6m8@J`|3f-wq{)hKKtL4#v`;>p>>?$*cI^`{v-;be5*gCTmUU&OV1t&V4;4=5Z zy`&c_tu_5PU|D5r{axG`7p;(_)NbXp_s~kZ8cj!XhoNJiFebs^ zE6%-<7kbE;yW!!q1s9?M?KVB@D)~-?rEHG=ejl9%M$gldwl#xq{9*dx=MpoTipb-O z?t{UofL+ZBe|9ZELb%>!XfR+baz^4PLXwMU+#a*N|EYTZT7p3XLv@gwo%+2drh(li zM9-I4CuvT=jDIRL$7*2mxiKgsO39k_8#oY1C5M(*>KH$CI>A1>Fz|;-?tj7y@j4^; z8zq+te`X2qwmMrc|3*uy{j#6Z=#~H-p)XpvxEW)b2XP z<-Kb+h|!>@1+5wmPK4** z;LA)-56sm`=RH59Bi75Y1krnk`!Gx?xuoT}+*OswKO(;IS69d3+DR6bx`RJo>nYif z$H&~E-LlViBNhvSn%gWY-?=JW^b&)0&$HWFGNyP@HX|wC+WCWR-h_tLvko-eo4=Hh z-jR;z<5@2@x;fP>NhB|c{zi3E)f7#Ls|CewO*NAyoTv##y)Frm6E9r>U5MY^39yBb zd3uFAxHL%R2DZ{KkCw=wQ&bIgYc=5QdAGOEjw2|eWYPPCAs{} zoJ#GFY?n9E!C#C2?%zR2pq(8dH&Xp>eCjW^d6cgRhS$%zLfX3wj(XdNS5ly3CNgCM z%FNRDnpoA-7ClqgD{JnKMYAC%y70M@=F)G2v2S8IRi%R$V3Y;9Xz;w1-73Hdx4I!5 zXV0y(4*ekN+wY&Mmf*!510Q$P_<>0&GkPu2gF22DSCNX#|KLWnBsn(ez0S13zF^NS zv6C!R9%Nl~(udFs!(|M?syH#)$|X#iGS8_^f z{aqCtM0O07WQTF%s?`g^{$ZSvu-JzpEUQT95Z1cmjS~(?dP2|D>8A?M5CVE9x5L1n z9iHM9bj2anrALaI=FlQJiPMh`)}T|r7tg!M3Mk;x4;$?qB&{)yoUNX<*+Au9_!`bx$JgK7q zFfbG9bnHGq$a#(^W9!oE?q!Crd<)6_=5PcDzsbjMD9byk<#O3h;&orCGhAEgwD}cM zY0C<{GtB5>{lQ}82P0eCf=)j62lP)!-Fecv##t+ZTo)#`oaN{0qz?B{>C9TY4}Ork zr&3Gf{(w?iS~UsgnWQ_|sMC9@q~oov0~liu?XjCaR=Era36E9JD6s;y){nf@x@NLF zQ|$yiF?9*|yDmAldEi!xa&=rD{XDAc`pmzJGY6cXXJY%j9;z@$6mCbp1wBZT4{yPCOv8te|H?7&$Ya}0ao(0&0<3*k#%7b;tR;LWsD@R! z13!TeNyUctEL)Nd)RWb)k;3Pbh1rh&&XeIyHN~!>L#XRN3UiAmeZZf#5=s2rx)4k6 z3O1Y(H`}FY{K=BvXUQy}26=4%lkrO(=w`W-DXwGLnBO}vW~J*8@QVHf7H#t>ffDYx zip~BgjQBO6_2Fds!IVjqNubQFu&H8gj~&gs^_-1ye@BHkpxE3#MW0ddbc{&7H}; zrIj~Bb-$VTzbjuFD_jQ+Y7LSbkB(}K4JpvNHGfe){)zvmKeT>&5R&-wUir579o9`$ z8B{pp;=$ZM^XD?$tut1Y6Z5iBDL8pvEqg0?giK>6BTRxQ(;AIFf>+GCaVGtQb3AkO^uPO z5`8J~>x7!JZbi&=nX(d*-u2FxdQ3pkx*~A_%2ww4#pGE5?h2^;m3uDkQR~V;)lsW9 zsCBwW-+So|w0A1nU1dE^S$)+FTHl-Aqv>l`5u?i#z?zgVANqx@(dJt&#|y-!e0@cw zWN%Fsz?a6Ss%r{RRCj-i;7vWNHHdu$WeM0->2?A2ihz)UNNcljDSia8Ru$gWKYTqC zr2wz?s7tX@MIaZ}v&Qi%XjfQ*1(3MvkX&+A)i4pTOY&R+OKbdIK9>u)Scr>P4moS{ zzJgs9%#`<_WXi>{=4zd%KfmryYaP4PxMgZ}1yr=5E;Z>Im#Xlw5+Q}mC>GdKW3M2J z)NmCr(OPWjXNt2>St%}n%L+7H>IVX1E(rcw$jX7MtlDZ>_)6tiScMlOjpEx~Sd@}z zWN-hseb40_E1OpV0TrFQI%+HlQ zi2AjwD4y1b7pIB~pugU+6-<;o^TJkCchCjAkfw4au!IqQ@g78@Nx|w@YnE4+sTZq@ zMfc-VD))DIJGO&KYTA&FVT2-B2`J-Q&k?P|th0Dsus(n-` zlm*eO$)mFV7oYcfW~JCwboYf_oFbl5Bx%f2rmOC`t7F2P9|qkn~M&}EP9YRj{tn|feNuv(j`i`7z@1gL8O#k#PL+0+6@ z3Kc=fm*TYUn^nK&<-Jzc=HhO$oUxjWN-*3D10nyu0w4OhUi^cV zHIhdDvi767UKyKG{H+B~wR~Lw`?ZO_>Z>RS{UQ$+r;<9VTl624!IwH|ov3>0W~IMp z1v;b-e<7l+Lf--oy~wMYE9*3-5LN;bDlxT!tJMi=1=LIa)A~-y(uG)gArfELj4log zpDqB3z+Zgq^}^~->O~D+3fHw!Ttz~PHPE#%7RF2U7M6c61>XAg0wzhID!_mi@>)RG zy|6WiXz_6=LNtjd)}(+QSz&< z9cfLd_fTJ_JOi!W*WZ1eoG9l}Caskey8@9{p>M5EuajWf{A)A60!(GPz1lFBdp~P( z)j+6)fQoe$MqyF3sZ=?Jri8GD0qFaNUX5(L6abWp92tdv!`-P0U(MRdLmIDnX}E zmOObW5--|6g=s0|z-0n%Wmm<;NElK9iFHb()CjA^TWuOIv1t9A1-!mC@Tyy+;6()! zrG^mls`Mw9b-^nMQNb=HX+%uB^koVRTr_V~OX0JrDC72;$6tX<(j*r~PY8snZ6E-;PAX}?P{@q}(8vh?3pQNp z$E%)<)(@o~)qd~A>Ui<4uMO{uwUd=-k$(6EA-49~#P&)vRs=v+7Ok*EmuC99+w)@7 zWli#`zfi@&F4iqqrnZ0%7xqvX8!67OlQAOXC3j5yz4hEE2zJ?7*Bz_!d)B)qjm<^T zy(XIiMipyNRZZ8)A8C&3i2YSp=Ax#qKv;EgsQ` z!M8#ZUmUI^2A8Q30l2g;t@;|JhyKUcd2J5$kE)Na32;r!dT4d;sCrXgzek_d3+46K zYTWB#UYN5h%2-C4ud3m-FfC}L+|hcsbX`Q76cN2!zqg2tDO0+fU2XgoC|cbor124} zuCJzkDU3BaD+5p%76H-L=DB>nMbqUsR(WJnX>B}pMXiF(%iX!g_4Rp|XC?*nss&J) zsTb2IRpj#p@$k};a;+&YG4ujBu8gsQo)<9oDzLi5q0(UYJDYjFOB^I ztgjj++BYt>(balUCL5{+FHihlo5@RJSXosmHi}nxwSOsWQ1S0A2&8z;7bfyjNL?B| zc?K2q5pYZ=S46C;f&eR!CxxrpA6BGZ0i!iBEHSO9lGkEP3WNnbeHAk-qlH_e!Vu{ zLJF)6{8d2wJh82aSYb0>F}8xxF9}%psaGbj>{IJ&P$o*7#>;EEAm{6Q5Vlsqm`kx( z895R1ks{_rQ&NQ>H8|Bhbp<$t$zF=KRbAf>QbKwc>d>*`T$nkuvUviXp_syadI*;8fd>ok#$p6X{M>mkB;z0h5%_G3i@ zrHr-f^ZPn~Dh_ygRy7~I(B=^!r)XqJ11>d+Sa6olrHY%b;DN;HV$&!!TYYvf&RShZ z`HkQIm+uvy)mH`7iy*iDyENKrE3!75UxB9BvPcoQGAoLzY7<;h@wJE&*1cNO>E5vh zx0MmBLEwdD;93Zj@#qDJl44kkvodCT9Wk#3^`(Jc*uo;*y8dpBvn%r|%->qL6<3xE zIC=pn)vc$9JXTkOH4iPhS#sS9KGcy?trZlg)QK^jqS4Q?6r-BowTUT{4muUL%b8WsRdtBuY^om0XhXSG% zK(RFZLb}XxwCoO6&(G@PC{`D1(R=xjm-kRdj4Sf53G!-B^uiCbHo?DX6{F*53X0Vx z`|Fw1efcuwqs6NrwX&MD7L-*ZK#B(~8cMTLJ}YS~FQf9MDR_0aioVQpS4ynZVoSgP z%@w7oSOCmAPFi210=etwU&M$npP`Q9uhy$;^O_38;W^4{TI;SW0C)vur3P5-LrVj8 z5puo6kRs+7VsjTqY zq`Y88mnJ~{Ukiv>74ui7cLn)gh&-0P_A(kM>~1Z5G(lZhk`j~aD#V2$6c$c%NwI4y z0Ki)GtPRpyq`gv&ms~4NpMam`zsqEi*z&2O{bl6#;sdYXlLA6(Lo6hc*n1YufK|Jx zO#I0d=4JhGd2g3h4Eeg{3|(9XN}ad@b89UlIqwB=TtSCR9#D-Fnb^JvmzLgDz^y3< z*1g+H!o2vpej&S8TL@_mrJ0v;_S(!|3TzE3(xjDyP=s0v5?z`)1v^$W{9@}T_d*-+ z^<35O_4Z%M+x!D7j|Ejgl&tqE(X6Fq99xHk56jYNu+T1@Ji*)=}= z=E$*HU|uYA%X-))2NvPo7yJB6eWv;in$wlh({raWvR#-ER)%Z&+?738&!>n+3ffw2GYhjQcS%Q}EI`70JHMKrGz%vYhQOVe2k$pU0uKoPxP zMFjMfU;2XL7cr;8PM7=tQb4h?3a_+gE_<~K01BYLj%&Z%>6chkZOztvQ5zba-qG4e z^Z`VreYGIe*e#8!Fl!1psl$|jvqCsjw<`e{miO?2#43c^a_?%RR;P;BGgClViP_q3 zU300h&xJgc7^W=t#j&9Z-)j9_367NSVyc1QdWxb3QOzpo#CQg1;6D z1u)T3Vm)6)WNKx7RGGP0##Z2|08E$hzQRCBBP;fg(qL))Th8TrXS6V1@B9T6E`&$1 zntct#i{RS}4IACdzmPn2b*MNxt>1rfAW*VzJ(I<ZXu|1$caQ9@g)>5O?w% z<(yr>t#aSi)qoeEM$!AJfN1GmPJMPsA}g~b#a(ImuA&K2*cU(aGMcEb<5IvCwoZ|B z9W}isFtO&T9`vuyf7!8IRXen^}NXad!bbO8|StrXK_@id*|9XzW{yL z-+7&WT8iN(UcA_(sZPi0EB#6VzmCyrF{7(wOWmWOk>0^tv=_jvGO25EuHRFExN;Yi zV7UTxl?}bd2L*D(u38&4QHw9lQOWm}6<+U>k~77zgBjfr6ED`8)fuUf0s1oqOf2z0 z>$4J{>-5L;9yMvoFOeN?K~c1!l7gm+ZD{da5z>Nw6}y;v>DI&~1?+_lS}v&ygI&f6 zUkD{CgH{4Y-NP+bi_7`bNuMhAbU}i3cUs1g7dAvxla&p*vKWn~Sr{yBPAV9#q(t5C7UDsG%rY%?nXatO`qE&p^~IX+ z)qP<-iz4b)>Uxdi;`gpO{S`Q?cEhT@qUUgZ%}O*V`B#Za`S)UXdeu_UyS?V23Wk@7 zKL zIPScSPx`*z@lEOqE*-be?>7@CQy*!*Xs=0oEId&DD{^DPA+d{BL#^T&1k^`uf(|qwMikT?>t`l|@>CWCb6kv0Q;1sV@uge`%)W{EGGOTFdBXbODqF7*o(u zrhLR+O@$Oozfg$77w1xAM?37*{AudxkWi3Uf8T390 zidk(Xi>T>E{B8NXuH&mxl1jB=hI*zWBvg3%#{aTosPX4o%&; zsGvzr)QYSr*ibHt?yr@-X>BNLGS*^r1t*0i@ai#mzu~lZ%MnE1>k^Grbg-s#<M&$;v`(i7?g`UO}~Qh4n_<@_=l`^q<5-ees=(qw+I>C%z7t`*5*qEma5362JM%&ZB?L9#|bZE zu%%fq6DJbSUX9R~KVQI8-AyixgyvFd9?P19zSqk%T@~LeO-p5JuS(*&(z22-D>%4< zI>lFfZ3wSoxN^5N-dq~BuUvJl?=D(D7p7K7J0Zgsa94YgqJ4F-8?EtCgwbEP;avK> z3e@Pt!YeT7MNP2wlrL6&Dj+ER-{1bdSm$XGB1uvkuod0BSjMfOf+~$)ZI9LfE2w=z zG;6R>tF^j&Q@wfxoRH7ABAbO#SwW90@K>7bE844tv=9<~THIen zz@#7$wEkjCroiE=oz^;5e_{V#?UYLKe_2Ji{QD|Ycm@0_u%*nL=9p@ADRn^=+deBt`e_a*&S>ADq0o=a2I_d0s4!Zms)*ZfZyw9 zUVx;!npg!m)$yumY@G$$uOeXUB`c%NS0-mgR1^un_$o_7P#HTF*;p^?niN$aNd?#R zJeECtJu7uYz6hMG2(|_Z-Srm+O2k~`tSkur0`}D1MhW0mvA){a=~*k{JQZ}4Vz2IN z7qQq2OIKGj6b#nMwxR;Pg3*`4QO|7^K`OcK;zsnsb6Ws}$}YWfJt@*1S{(LmDV8@FuMq?s@v95JFksfc|I#Ut8O;+KFYMu3cl)j7GkkZ(XFJ)Qmb9p zdu5VVK}fB06r4*A85fZ?Z8mg_Rg<6Y^ogc{uwz%R&?;KDBGAGt>3G`8;?@yg-Ak4r zt9RvUPbtZ*j-l1_Uu_$;Db{X&t9sKDVXV7Eq#CZY}xY)g2av`NG6qncT`Q zug!0@8q<4S_M-(ru9{0_Lb2)}NIa6sF#$GS36C$}aAEXc00aeOuS)+*Zu|moM76&H zvRZp-UGrmps-Bm%C@a=?Dv%>AcR@GRH+OApOQWJee?4%Qi(f|9rMN4Ck82Vw3AHAc z!m?ikb*jkNg?Un7r;6ywghgF9SnolZf|0^cnYJ2JUukVD==oI$Pg#}UvQ}!VTx$&MWj~8;}xhXXHWq_6~=s_n^W_cfEPc0 zzo07x*%EYVc@xsGR}sI;0M`9#VVh5u576W<-}7o0R-1lBv#;#irP-_jLDY8Zq|A!W zUK!Yx)vm1AQY@FdUd0rZX%?M}-&mh2yOX-dCi~MD;6&NUuVz^9-U0-yAfi6EwMkjQ z+4X!C=1-gm*21;K@E4%0GKlg#OMDa-Q0=~y9bR*|G>JM6y#BuBK30OHSe~jDfy67V zHP_l?{qMp`OEb9woy$2W4qg{$jFsG3&$*7nUu+nEb9K4cF|X4?FRY5|vy|1;;?yz6 zui|fARX>Z*xiYHqo@!ID6zqz8zZz?lhF2P`7YedF)+9$*gCBC@z&XfwC~To>ha9R*jm{n|*W zEubhYLJDsS#I4sGYw-QQab!M$MUe(v@-6&++3!%%hf?7ol3wT%^0yHLE>bv|#1idUs zXhoPV#f%{NS5?fHD*}Q@mxle-IB)@(Rz&Y&m9iv}B6g*MGfR-Z3VqdPOg@K~d-*G3 ztDpN-!=kXOOHwEzaw;ixuH?^hSJr*^!t7T|J*hpk?pZ$*S+6d2r@Fdm?IP#7)Tae>{@cG*zf;*UE6R(C z+{phbieGnLG#Cr8P)3M_VXQu~SLNc$My(0>#ol$X-zod2(qKseDJ}wqtu3}^5~vld zd$q@_@#qrE6mXCPrU0+*DJ%NCib!3ALDzGlfUUfKWq&JUQ{u5s;ptt`$-nZtwa^p* z<`sx`Q9G{_u#jsL%7yuXoKn3VSz)`J;|th&iK#*w)VNZb zLnTqFjkkb4xYs#ivfF4inMT6__qx+pmp z>znGaSsVQ7;Vw=MrPwa4nTRS~G$@vWr|#_5sT{FV6X4(~M)M*FUPu46fxZ^$>o|HH z`&&Vvt7k7KnBgq1dx+XRe&rZ-XQ}y3o16>cUx4;9U33Ae)_b{tELR|N1!N0IasiU7 z%fn08how<_EuOgAsa?m1UpRiO`@W^IxL62Z01b(A+B{zV{sqY-XRv}kOFejX-4Xy+ zCr{Stt)gMDJin`$tW0i{&${Zv73YxxHq^D4w9BLcSx1TK4Ftqe)HdZqS7ch*x;6Mp zKre0z!nWwoPy}690M>@*h3H!Gl9nW=ES`)Bmx&&23hMJNKSP@I%h?w}v#LQ+*q0X; zei~D1!KsXecmT^8DeCh&`mDggrGPFwhBEG{W87=Z5dgc`z6vO%McPH-y*#I@UO**` zS?_-U7bprM3&tB@qqKk16vaVVuuckgl zkp3dpr{cHOD!ORU6d?aa{dM*ge8J9N#96LFVi&t5T^*=i$byIq@~**I5%vp9QB=dr zUU)@ZYqKXJKCe8}i%^k{2o{w1wWypR__dI^{81Hk-Kkqg1yyiN)fv=pE?PS8cGaD^tpXXRE6a>xx3Y zvUn>HR0uEyvCA%ZX_#NEz^wKAMMq_=W0(6~^u=D+z!!qD5&>n0{d(S(ep9p)wC<^O zX8~8ME#}`|!$s*+n#aogs7LRG4ST65xjwXusuMFEm)(p2`KFn~n> zP8GS=SRe)91@*G6;?DgH3Izj84B9``|Cagkj#kzR;-dY!4 zCqdU-ubLW{354~Y>YlyCC8@Dr)#0KoP|mTCFQpb1(4soOT=iQnAk+%vUGAC2*ad+8 z%h%LVd{srgDE|vnt>S-c^RWgxd9NyDr7V>GeNA*aUaPN1_gb|<74~g;-?{@<)I){U zQdQpC*cFhkf;tL3T<+icY)TUAk-Ceru7YO};h**BxZdW3SZ2 zYYs0tL4ex=Mk!E#(L*WYq;)S}^6ka8ZDr&xt1SgQy^L%tQzu}nioI&wUxBa^&o0f2 z0{c=|RtshYfiKfXmCPzr8WJz-G~`-us*8ly5tnRa1(L2{SrNk#HsPA6N^+Im z$FJm7$5mHQpzazf8@dYNT!6P?gLh@;SEi-h@ikt`T13@scqLkOMfCNImZ`c@0AB?d zMbt{cTU~8Z$D>+rTAs@Tw(jwF@t+GfO|E=k`M0m5F7IJ(mf{mlo)9Uj&5wXoto^**Ua zg05lcvn&ljNizTAfBpCW_CNpk|KaUjfh@Vsb-@d2COTsJp3_}BUwc?s0e3 zu3fv{tycFP%^k&rfq{X6fPujQ0s;mG297wu-~a;y0|Nm80|Ntt0|X2V3=9Me1Ox;G z1Ox;cG$^21nL8ir@vqGP`&Ra;h>X2!zw@LdbJ1A%g@y zGNc6C9v0a?bAA6wshOvxl)g@%-q}cM&Nv>wU zA(KqBJ~U;bl+wQ&QF+i%Am*4x!pu_DMpX4d+WjHhfvFc`279KKEF~0>sU1an3QxVZ zy2u}_E{h+ouF6kV*X5VX%i_z`W%;XeldZJ`6$;3hnm!~I9dVbip*~aRU8)UUOK>Af zAzMezo^wp^aCE}10SGDe&gk`%ZRdrMcT5UBS~j5-We~y+?I4kIP9YO&CNZ4>V(1?u zAfV=jRtWh`b~5-DIcHEW9@CbeS~8W2Ad~u&m4`y3(%@xMROioh*o|wMlY$CRH0?Md$Y$t-0F_{q% zG{;NobwxXoO}V~lk0GY-drFEqy6;o!uNm?fCD>Eye$l#PCg3ZjG*+t=YmNgga7GDL zHk}-G9HZwL0}4?vmO_v-IW(*TIJNv3Y4gaCR?K*;IcAvfLe2SviWdm(N^R|@CeP6} zZOloBUSQY(1nJGlfOl;>8nkD7O1<|S;TGD9DBHUd1<{NOgn|-eFhv8^P=f1CT{x!( zEav^l#gtKd=BlIA_E$y#AOfQ1nDA+V)WL0a&w%<5mY3yk4AB4FEU#WDpH2QB=e`X7t?}ZM)5>|A)+8_2?(~O9GjJbwDLnpP%Y7xLgpdu zc$v^>P3{MB?Lp^H=sAe0uP6zUk}H+!ctS}j)?v(^+h|Fs2K2K+EK782^J_HwS$poF zB#~OpV?H!>LW5oqnS&K+Ey$j*$lyH(ae*p9=s7HLGBB{=P$-+5!XC2(2nxbdK|5OWqn*TRl^B+- zPYJ_BNeE_L**^2gB%BSVK^1ZYQbN`)2gdt&j9xO2C%>fDX0{A(l#jq3s{F>KnuSO6z2R`Ge(Ed1Y?@xVkF8Tn-Ap z59T|Ie?S1(i~IW49k9Fq+I)Wf9X~2Iiz-DqXUQFO0HgD~PfJrAt1^}&sjHIhFqz@WYhbY3@_8^SyiaEZ}NhQLLB8npV zJ?Nxe%l4uZb%cmZQ9hZ;GkVM*-As@P*wp#Z-8X=|R{XQoW%&~W+CMY*>rlVDu&&<) z`7x#6b_t9-0?LjE`0U`i`bn`_93r3*RkRSIm1)z5PFPTdNIR}G$0yo4a_({=RAoUy zZ)*K%3gAXaJ0^URoyf8lTI85SCd~+u&VVTGwJW8j7$IO$aL)jF#Eq#X7f=y^nQNt} zzD#Lgih_&)J#-$5?vFWgDo~PyC32Xgex?i19OO0HdY2)7P*Q;j7=IJu$s`G@Wz^Vy zr!25X8B4V1GNW802PD(_0vQZb?R&@ot|dz~V_A6!l=>9)?vD!Phs3$wf?^C-zgEW zp7V)-=Cf{w+om+&vi#ewvq159d7JH_$DWq_K*>Qw;nV;=q_Yc3@S;irqYR^29oq4h zRj1K&GbP-Wxn7|*az=DOTd6XM<18RaX@AC&Yibk-rrOWZ zaRqIKryV0vi!?HSMaLgBq?QTmW=e;VIS(q%BIG0^1ZhPB%{5kg?4vnGXc+@bV4+>L zv;-(b9B5BU^)>o+mIumrpP6Ut(7(&{lOgxa%5hmy{r53ZhEjEjLhwm=$SLgYUn_B$qriI_# zl#;)a)O=ChFZzH$`}GIia^roz<0xpzfIIV=&+F`g)n)N`b(`;LFF+|h&9%S^1;xmu zat<|IJJzF$pEiUHRg+ng8cl0wS_7w!A6jC8Rkk#Qv6eJKb9h)GLoUix85G0G8s!MXy5)VTjHhQgDG5KqB)Otst1HOd|v_;sRpEw3K$DC@IJ0MxY8e zI^LosKxm06N(wTe_lz(W1^ilDE<5<5N;ncq!A=%ZKyE6iO>qYx);=agPCHpdf?<$# zWhPe$F_khIVOtj>1R4^~gMyM22MVG@%~7Jmwv9tcBxEAWszOu8>FQazcW|?Oyt*oX zZkE69Z2motma2ZfRXZm1Bqk^-c!^>z*pwC{y*p{L|L8Mk4R7>LcTJ= zR7f9j#wx0v{IcWy)NzhX&Qj_}*_88?AVv+aVr!_GdCXiBa?O~@hNm)fMYIEg_S&1W z?X}yG9naV%nW&rgw1EharZof95 z`gI(v7lFOsUk(%?f4Un$cNsSaK@02dfr16ernUezK^Fb@r3$qWDu6>SqJ< zofW?jLAM0Roj|`EnFI)21J|;%z<*u+Tlx|J2mDvV_uQ0sO}WBV`FpcGtBH-p@xwjM zwoXlCW+v<@6LNH-hKx;G20tYb6`c@j!54FF*N)FjdqP&Zonvx|9P`L{%O>YDtxK6? zc`dn(gmg0J3qr!7`#MDsNof;@UKbf>k`^qXWJ0PlFNG*U2@oV-3Keshc_4~mSht#n zbYq-r=y{FoXLjsFTusQlBjx(Tv{Ro$c!VYjT2@wjFd-m=Z6(O;Oa`2weV*B18q^Mt zb`?Ns+K@@QRs})T2xK5cPB8YuhLTGNS%!o{B9m{eYb7-)c@EnrOE{*4vLV?J(&s;X z=b!ghH`QMDbpMH2evuvT|2;ohyw2B)@2hS8{qoXP_G{4HkpQ0J?g0G06Tk?VuP*cN ztMlD5d{5~R4K8s2E;mlw!Pm=+;#IL;d}`M7eY2kTnezh$Y)G9yGYMgSKVn5kl}|+V zMQSp&AOo5BrKmE<#7zrSwBVen$wYExwAWw+cxbPYb2}Q*JRR-6*Uk%3LN}#61a;b^ zc81bkyHmEC77S|yi zSrCxVv}tA3DeY@eQXz%ZMTHR7s*4``sqM_r{f4*&kvtsc`i78E?EDL91**NiBLqBi zj-pu_$a&A?1|eV_QaTd|R4q}1jv-7dVdOfaS-+I55L5xzVge=@S93m~?a~=SLmPsO zbe}`rfADy~GF?a;hdFD{wXN8+R{NA7HMU1;s``OiKN#l$lcb(Hkzm?fr2J0S=AYVP zk0H-ANb_e`h(C?4{ z$GiJAfUbf1jtKCSdCL_rfc@e5U0`3i1OD550Q=qjvv#o_tG~x~9|TT#FrETXvzbC+$QT|C%QKZKZINbfny>{2tCQo#(e-!uRP85dAM zlX@*?+IBJ-5RA&Mxh5e*D@#_PE;RH!L&-&y6kuAnqoN^_9fKbC%(YL8eNiVW+>Vt2 z5{RmQP(yJ5+ zfkHceXeT$C$u6rF%#lQnPPot#n)6C+IZw*SoXYS=3>P%#XD5EhfZHJJvG7 z6XN_~jwyEj!;qPbvxc45r?!z!nZqNcKN?Y1I~K8dLnsk~id9HZeM*R>ngE}x)+VJ+ zOaqjdjfFDwh-#q)Z5rYr#T9|}uw}lJP0XD7UD{eo_H$4Y26YLfI7sF=iCJZdZI^}) zNLm$$Av4h66l7wJ?!&s)y;iu*?I#B4ej6zKCm~4gf${MoBmykpTmx;VG{92)mj;Me z=Y^&6?*M*jTmHMp+W-B>Y_gyx5}c4gJ0sv~_dUMaKe!n70|KD1wn0a1WGDM|X~5^% z)BT?p>+Ep<$v^M0Hf^N0^c?LV=Lknbi9KX8#9Twr`oh$ym|75$Tdyteq+fd6p*5G0n|;55IjtV6e`lq z*|L%)rnST!>NrDP9E=MISr0^`)sFt7SqlVacwY)wdQ2h4#3R7#`X+lCKqT=S(KodLv2MA ze&qN2{};#EJp*FjF<|y1v;3{G_)B0PSc*uAK%Eg#Zg!4<4*1&u-d6Q10sQ;GzrXL4 z2Mpvvt?<`MfB#*z+P_{%s=oV}MQnJb0Abm~$$sMq$WOA57XSM2ZL|vmLr!bQR4w_; zOfu$bJ%|!vjJn2xBL;w>*N!>b%ON0E3+lAj=@b%01M(2islC3Yd=Cof83zGF@S#D& zY%5syoYjI9R7}y%?GQ3gqY5LcE)o={B@Gd>2EjSZJOiEcA?->v&O}Vz9$DEc7 zLDrkWAt=5@K8q<+M~Fq}8pzb>vLGYH3X!4|pzJStQPd8GsQR4J7LFkgn2;)T62_#= zqHGyrLDHOD+U?G?DMHnCCTvW5d@ybo=6KSQ2~5o*>drwgwE5}co&l~e8k_&g;+yQG zuI=CdehmDN17S}=w;TfYL*`NiIktlgGOyE$u3Bfu9CHM=6c)uqi0FZkRng~=K>z_z?2k?v z1U0Xls}lh_X+Q=v#Mz)3z*2(=QKlPNAB_s1QbvHZ$Y5H+p{@_@?@dvKkn<#!>_~ZE zN{)x-f|a5Q)PMW`2Jk)@<8QZ7BqkC!^W#D6xqGC9TMTwjM^5%@p;W z0kXbHJDHLf$| zp4#gsTAGzwr>{BQS%O}5?4Wf}XviE2{@#@3O0z>4^)=BD;loW5;9`LE3F=WVL} zovr8>HuxV=`U^b}-gN`mgn(WG|HJ)k668CffcEQp0wI$-2y}~I3gB#map!}d3(%1q zfjgom0@jO~2>7H}XIK0G`XHODj0_FMM93?2yqr5%g{|3T!@aa_8umO#E#Y%zGa!>t zChQaqr(&*8+Ir-<0Wz|$(AIM(z(Q0t?X~Jnw8GSm32f`%Ip!(djUsm z`g2@3kP9B#N=)mfFu-%q0MRTz$=)~j|7ezPI&kmQ=&xg7cV7jBU9~^6+5qNqsGkq| zZ3jRH*3SjdewGOx0V1UV{(bwgZRX?!bn72;GjvXezI*^Ik7$?g%zpTT*#{pio;-Yz zqN=2Xlpz;mW}HJO#7r1z>clHW%|^zs6!H}vf7#3h?RA(@M3E3z4VXaZajBDj#`>KS zs)dk8=v)yMQ`q%F$sTHwuRONcabnJSIDnOOdG$Hnjx(_LA&A5fD-LMrUi3a1xgFz+3kR; z9n6G~x%jgRFmn-SSZ4&_B7+gC?y%|Ont=^fFEr|#R&CU(B2(wb;>rHo25kP+EPpis z_uE>H?n3w)V88BwzZ`H^tYO>x&gOsS*58YveZC^!KkkwMr9}jk5!JtnkO;&5EOZX| zfr70gpw1@Pf&6`_6kyn{i;)tF{;^lZN%rUb>Egre_~8SM0)m8_YSnzC(+vZlQi)=O z*w#*N(8(gAXfiG})D@P}zK#Wj+A)n$d028v10)zgji`Xg^&KI_Q$jvdQ_A0j!j}sA zQo#@k-qAF2Ey0)q&YA2BhIC=(E@S5((`iY2Zli(kDXKQ>Bu9X{M!-bJvXlT$R8&Mr zDYPZIx+IA?v5`TH4edY)2knI@HK-4nd@;Q&wF3vMh@c^h$brfnAFLX#B|=gHcv5Xv zOn?$Y4rngI$c2Y(Q^K@kV=Ys2495Ha`fzW#E$TG?tpWYNF+lUnVrTOg73!V{IN8^z z*W-!*r&(z2KM!m2Mf-ja(kigaa~xL^5mGF;bgE z&rI-HhZ?H7A(L9|Hq^L$P>{pU$F%b+#NCt%z_kPp3trLlN2~H83c9vOJ4&Q#O9t2+ zHMR{Z>+V6t`tB)daM^>hQer8fcKt$n{D&g=KH@i%SX%e;&F9Z+HlM3yA+iDm@A+!CpaHb?8Vpa2!PUaBKRc=^_bG=RJhs;d0nKDJz+N=fD=y;ymF$g8X7-59z*N%qbq4UF(P8BJHzV;l` zl8K0WV~)0>Xbn0-ULc^7QKM6V8mc@qEy7crnaFXM(q)Qq5zUc%GKcWSx~dT|4IMv_ zvgOfn9__WtTBzAB1KJIYPS6lFludP>t3Nuro+t=K-4AT31lm4|nJ6QSCVTNp z7}EO`RZ|7vRm4%ERSuDBh-Olc5~*4c$tYt8v5HRo zwby{Tz(`7hIx3`SGgsJg8&THKR%FbWj%4*9zbmEA9d#R^sw?6gK*3o`H>{N7Qai6h z2!4b_V)BzxK{P@TA@g>Ih-5@3#&v=0Gt{kteuj2F&XhSZ8F0wCoKkwjIx3)`)45t) zqzq1I&E9`S+n|&>w$!#fT6PmXV41;6o1C1|YKd_Iuw?*D>q6FM!%lFJi3-AyBkl;~ zSV6`DwB-w`+AMzX@V)_#kF%$XUmNiFd0j8=+Rpa_fbM|x^)xv!W>5EP-n*oK`#ZA0 zMG%7Dfe5fd`_A1=fXXHZ&V^Eeb5FfLw}Jt?C8+z)0$|;>4Qzn;+FwVTyvTz4_Ujy? zU@dRMZo3U6NcVf~^(b5y!@2eN?)ToA+po=U{H`*9aRvhF&MpvKgj~5ly&f z!Wofkb?RIsr6o0!j*fszv}GGJzM*A3$TbFaAT!qyRE5?$5mHLdn0CO7;K;T|M6Ms~ z_F&s1Qve{fk3D+AqHPvZ(%_M{d|IHW4GCdd12KaqLNKsa8Z=yzRix0#f`$-aT^~$V zL~71PYF(Ii5J4v&DU%TNB3Azy@OZyC$!eSbpUm=gXtVd1EKuMbFu!&c{~pXcB?A(0 z&!!y)0r(A_05(u=N(0Wqy8cqI<-0&XTttQcTmaJT=XYvkw0M!=WLW>1wdP^w?LMD#&pP++@7|x? z@O-bq59kTDDMFm}466k~GNY652BS9LV^5I6_-}6(pJv=@-%tBMIA7l-W-Q&wkmE9u zhp-x|ie%fbR+X@F9_A?ME7u2x{r6`v1Mfee>Pa4&PUKvU)2lYaR;?;-8C4@P1^Ut* zLg9Z4T0=x(7{0?y0hm)}#&2FR%@#)x*LJhmD{1b1Gh-zz*>mwiE72@{5lxjU(1S}a zf9Z2jVn6E$HnL?=`b#M$wC?vxrpD1>{`d?)d8KDERi1{=IMtRhsF@8ABH@AIrDl}p zl?E@)W2OJZ$vN?_$u?@W{@`@#`(v}I7I`n(Ca{;Nw*M=smPF`( z=(zPy-WYiV{nH#O%s`03xMH*4`zP&@A#8;!9~_&qk)qpuU4CePkZZw1ow)Ji!3hEV ziStQ<$v|DNU}-9sn3=(m26$c=k2Cm}du5g@2TH>aZ|VA>7(%L;T%ds(Q3|E+XF(s3 zd)#aCS1x;)V|_L=wu`ZKY%#iT=tKv|@R}AgU{mF*uCs%rD9#BUZ*h%OKy<_IBG-MS znH)Yc3bZR+TJKc`^1I&&4pCyC5;2oYdi)rdnQUQx8ce2}{eT6A%Aj<%73KfutkR*Z zL5U|-t%xG4>qD7!X3JkNrEGeHuFk~NHoRc=w?1BXq|KiCq2SM}+J$Edhr2JpWJ~q- zr-mn4{W>}uD;eGW{)9}l_;mc?K~JLu##F2mAM{&+0_jKDz;3v}wXL6(mF2H9uHDcu zeyAgdUJ?4U?`MS@^S6k=KZC}zz6U8yOU0Bc1zIam!o&SkiVzyb@!yQ;z}rLt|KZW2 zC`|E5q>0BxA-y!unZP0eVsm~cp3b#$h6#O{8M_PJO$3@tL``Tl6(P;M^kd$8Y<}M9 zsyjN2%#MBtB*p9(cqJ)I(G>x;Q~99?0*S3begAVhE&Uiu^qMjZz4?5$IEv+RbY7b3 z#0ZL+y-G{qhpW8cyR)t~B33=)tbeYMr|grYMVLJ^kIQsCK0la7oizwpBV9o46|4Y} z|7X7Q;}K2FS+d+0=i6{a)sR}4K#hmf4955I(6Vi<=2Mf*NQ9XKJEY2`LSl366_OXy zefx5u&f+#beuwV#fI}^CPWF_*)T<9qYfk83rTR>Re^bq0F+gE&$!R-^9{%FT+-xD$ z1N*z&KSNWQI2hY5DLnY0%DB8TEk)?Rul@btzxd)#pY<{^Im^!Fevl<~t&L${yN0x4 z+*an{AdU|0sn|rZ-v=s5Vz|ZiXCdXxEYb}8?mZLH)HJoZk3e%;WxDK*W9=k(0!p-G zZaDggoH_&V6+o**gP|rNk1&S9Nj;|a$6s`DNv>ioa=NDF&D)rNVy*Op#GEL-Vg<`l zj@K>UcnSgxd}ycSRfIwt#+nnlEvPQO5PjB@G%FqwlvH5^QN+Gk3Bp5HjO!O6qb-3r z-HY2aW*zO!YqnGjV6Wy1U&|cy<*)?gH|LklAG#U`!s_X%C&FO!Z|skk5$U+u!m4i+ z+RT*hMXdf601Matus%cr(=F#;dah5`>lY{nZY1^h=#u*V_-_3^^|~6)=CLIv;rboq z6NIR4pp1s!Z-zbslGcX756d$|O-(M_C&Zx&GbmNR9`OigU50-D9rB{&%{!yTjJfX# zW(H4b5Kb^kw!<5@3(=ngC;$bTVG6>NA!Y@>LgyLwRq`b)dr?FVT+#T?$0%S1D*brF#_b+S4&8~T>V z$JOqG?JkC@7+b7F!CcTZICAi;9Let<`~f>4rsm$q&2SMfEQp`^umTW>*W578DeqPK zT{L<16Oor#6W>Sc(f8b0n(e$rT$9xAFi(0XVG!$i#tMkQH!ySWUOUFV83~ut7aN6r zU3G>CTE%=GH6yY&D2)8*C&Og!kTKzFW%D&iOBL?&V{+G1a6Ljwqo?sI?q=hYkE*+6 zv_?DX_sEeBSdZv~@s`3E+Uqb&60uk}GY?iv0J$J%;zgo-;^?H0Cp*#DK2+S39);f@tYI9!;xkE$twJ8`)e zcys|3nDP&9>*lQuYVD8a_R!4Ysf`kvpxt%>yDDeXug9BAb0%s^vA5+y9fI{z5Gx7l zn4J##)ufC=ot#;ldp_YkX$2>%p00a&$_P|bi*Z==Jc=26AvP2CoLFStSUKA!-cYJ=-pFY$lpJgq-_?#r-hoocjH53Su1HYVdC&Jlz9JWPz=rufM(@!EIuw=V#2S zGk+=|UW|vyEnn1q2vVeMBw%`oOa9#QsFU7g&eAQ4JW4dn--G~rAozyb@I;`a`7vz6 zb|cVkM2^81&~^wxea>Gpd(~n2GDn!av@tIbICW0bhe_cbHQB67nJj2Z6*~?vVCNXw z`)Zwsni>AcW2~o+W`E<__{*oAM5%*Jmp+Ws!e@uS`DAoX(rV{cYXzb=%0P{u)zbJX zj8sx<8Vfx;K*si)>fVSNj+R4D)9(tC3q}K6l{5(YcJU}(U|sVr=leeo`8UkL@2Jo% zq&jCtf+_&+ZS^taZd!P+G)>9vh-0`9+|G0&VyqrMGpBO5(GdjxRy^`~r784=e_DcT z5ns1Xx%OFP;35>5Y>2M({2jUt+2K3zH$l`>l$^jZp7SH+SOLO@BLr?pzK>)_i{FG% z<)j8M?&J^hkv)m31D#I&1eQxLEtv(KiK0k`Gc_nR>ynkUlm)2K-3*nlbGB@>5L@Y6 z>bdAs{au20D~|vrIDqJ{(iS|^@~9R;mo2D;|4}P+@xQrLT#CqtE{dU>0>{Sbqy7fi z-I*(M(eg1|QEf%v`&DF-QqQ$u{lRhrdd!fVue(ZvugOJdds>MPS{kh?o$abu!A8cE z9cgc0DPxqEWKo0oaC<0vj1Z(MEBz3Eo;WDR6yz-TnY){-T=cjz!hwOwddJCv`qQRx zwt(J)J`cjB5mG&P#VM<#_9{x-4$u#?MOC5|Y!7#veG5xu`FW^N+fw0XH!Uex$F{1) zzl)N+THurrlEsS|l3H)0Ek&&n+sqi~Qpor;sk0l#q*68ln3qA-WFS3yL`987Izca9 zoA=-GqxBo6zLf!oZo>G3Zdg&WcY*=mHw^w)8PC<5++99Cdo4AX#_K zQU2i6(pvpa$CxiP<~e&YnLdQ)UOaqrT)4sLFt~(VN(Jr@o_ATJ4=650S`lFoTW@{f za*Bx_A)NOYYM2@=@MjPhURs6r^}O$Ae>}EX=dubexG@WM3(-y0Pqd&ve!7%G1}8F2 zWG$7PsOoVra)yqts;|Ifh`Ztyb1EaZOs$sCDIq9JtGVak z*=lWvG2GH6hHZk_g?+gCx5N}8d2s{qu)2qY0rePi*Gx{3Gtk-|8eIbTKfZ$oOt@_MDw4^}pU=P%waW<~MZ`jwh)FN%&!i8qqV+oB2WB`9K0`T}2rZ?tw8s&pg?`fL)QJ?6x zIv9=$MH=hjdM}&j$NkKFi(jodI4j^u3qT>7Yk#7F`kk(Kgg#yjq5qC_LK3V#VkH1q zjJ1`*O($C=y~x5uRz%;O_#%yMvt;uhxil zibO~MtN9o%iPxrtK_Wg*{GX;%Nz_*bggo~hR9u-7H*J-egp9}tMa210{%1&b2A>m6 zp#=InR#vS^a4|xheSnaO#c1Snv$V4TLs@#N-wO#Xp7N*$ajT@jLIg{9&&~c5GM6H1 zdt?vLeV4}@;sE&Ni03Iet+4j^3AZd-{m~ZoNPiW0HZ8Ne=})58m<;Zp|F7uW450fU z7hOhq7u1tBfWLLAc;f=@?WP8YG~UV`ks=3yb4kEiUX&up*ZUA(bFsn&UzVgaNYA1r z`a>Mi(m;~G_WS7j9u(*cl{^=ee8T3x!l22;?u_H$;@Y|8hY1s#2)LSw{-R zBHQ-iZ10YswUR(&zBe4Epy;;lW~wjt-aerjrTMC4uxwRb@>dEWU5B2D0n-DKvvC&j zacs)s!QG2?;Xs!aK#JqNk4>YJru4zIgxr7FYq*Z*Xa*c1{9Pst;K#?6CHz(qO}U~i z+P!x?%Gm{^2kI9xW~pMF>P&l8LKpa7#3B~n&5y8G5i1(au0nPEt<8k4B(68Vgk27l z4O};tG~el@s0IqVlEsjceeP0YPGr#(@g8E~Pe?nb{xC%Uz>iu{pznCspS#O|&e@v* zh7lmX-3Mdw;#iq@6v7Ya=N5V|o`q%<)OziH z>NWza{+6`oa?}fgd|{}ygy-fj2ap-rm)&4SdIhMQ2|A$&X(z zou3ybpr0S^g-;q92>t-PZ9si^%9w_)ByRq*>k&7r)bK&J2f+6oo@B+2GMS7;xP03= zfiZ;lCOwEe(Wfz^VVLMI3jrf=IQvtn4+AR$K;3x>#%MPmaAlM&vQT&;7%9oAUCF>Q z?}UY3FC}0wYy%RV4j4rdT{NhZaiAn7_w{1@$m7fZrD`_*V@$ktRc!vx=1{yo<^5Tc zpM`uQR^D_a`yiUd5*aFEF@tYLEuzkKpC*sB@p8w|+nolPghQ=DJNC*{J`)ZrCzl9* zRp-DO@^r;eS#%ds#cpV8*fmBJN%F|@cHA-GcHV!7)=8nlPP_d+{6}!FSM0Zm`tB|( z-J+@=UOhoxB$W!y(KjIkK89_BnW>LwW0KJZKYf}(_o7)=8mn+G_it~#^S^$S+VWU= zE?nuD1l&GMAVV*g!JMxWp!_W0=3!dYkeDJ$S)+Y&Hy@0vHLDH7GsUDcbl`W{N@5M1 z9P-HA^G=?Khv#R%Gl8hJ4O__M%fS3H^=Wj(p?UNJ4tSm&-LBNOQ!E-|oE*$vU}9Bo z08MiJ$W4@_fh`h-@yo@}gP9&HD3|3Mdi~^Eq5wi1NgvrJY>Bl{0NF#^DC@5lt!*`V zv)A!PV}yx5bOft6<(U3sAxa6Yq~387@V0WGPZG7}Cc&E+;bk@~M-d95FLW5rmfukN z=I1~WIyU#kB8y5_{$-k5Z8ZdeO!8Dy68u(buJjSX4#LDqAoCMDmE8MkgJSJJv(Ioq zXCS(^j70$jL-txfHT1fhT0P|bz#Y4f>jNE>3~Tb`#EXfYQ>3hQ^sqI3z(@de$;y4e zjMznGO1c?%AT2U;{NtaASKW--i1C_V?QAgkVY%4xN$x5JV0m}83732JcnH`F%*hDF zJ}>Nmg~;JBwt^uyX16)TyjF%2TO8;6ItCCb)LVM0t*?7Scz3m{tIt0L1}VLQK@Srg zDAEc8L8q>l$V`Wg=cldiPy6TgU89;>Iz#vda)fi^egboZ@EGR!qytX*Vx8%1SJ~AH z4XJUJJ$+8&vi!W#GwU}D**-urBV8=XcX-M%rD?bv73QMY^GR*Dq#c-w-OZvqPWvdY zO0m66%hJrJiR@k*c408n&i-I08HpeJ2uNF zHb>7`jmz~dMCin3IaMprT7kWZ%Oz=#RoUdX5Nk|Er`lh-*rtkAbu+iMouel=U*kSK z_qeyX1NSvL_wECti?EY*KakxILNGjJ1JF@18bpp3Y(pb1HEmusNicth_$Q41EOQjX z|K!K@C~(o=ny}Y_Xn&H?wv@bKOFH|CSnPNf*q9CQUy;Ie8R_3t!E^SK&VOWh^LTUg zR4M`7yZdDM%IYh|-vFy8%h(JE@EnH?HDsWu9uZfx0bimYI77Vc8aHp**B7@~C6B3H zZT2$V%nm-!Hx7Y(H0|}d-2{W2X3b$0l5Ds5zHgZDh0Bm4tMs3Va45B7c1E2b0*Xy3s$y)DOK*zUTBHgsZLK+a{C-)Hu!dC*zF1ND)of957Mka{-N#f)w>i4;eDo1W#JKoJ*7$)=7f^XLvtHFyncf7L4pfp@P*g6CBdB;nfNn*8&Mnii8G;qu^WKinnGw__l(6^y#rVeu`> zmOQNQijBEkCx7^x>l7MU;*T1>z9(qiG`9{KT|3vd9B3L!54h{I-~_Qg#i2e=w`vr z;FTl7n0??f1>Z_oiff1EQRpK3(Gh&~c*Ew6L^1#R^QO1d@<3d2IjL*kb^r>Z9+TaD zZaG76-UZnJgEZ|#!=5yPjt5wPZcPjTq`$u%xHmBezGHgDCiq^a;B7K!=&0K--dsYF z&E%3r<2hiMjPMTk^>n{)oZGQGKaq5X%b7TUy!2tw!sTMZ;~VE`ZV1DC$HMFAj!8Ls zGeg5f@$ey&NBg4cP-qDsdBkBuga1g+lE z_TJPr0Z(Z`fy}G^8*3z=$_;~tQPYmWlcC2&?}D!{9DsC0*AKP<7~5XntaXg&n{XBV z=d#Pb+P5|b#sW-;{rgM|jWc5e#a5(QsY>$h%nfh?%;JeLN(+6v^&VW&Hi5?>3jOcz zApTrYPb;T@6{aRPwWv?QJqajcw`a&3V4wE3K<_LYaoy^3)Yoxz=q8D1SKgHXH0W;^ zwOdahV|A5N5ZF`ec@<@Et+=vGf@9r8B~{{g z5f*lnhEF)=O7%|Gz#Po6KBc50#iS5MHQ9RH4Af_!8n~uFZRry&I+{VdFW#`w^*Zr} zHZ@2Q%$wbb`209!=!o4PyixP>kxR6yq~7NrU}z0hmBbwe?v-@hzogGHeBpY}bVdER z1CQ1bln21Q9z`{)dW|Km@V@jSyq&}wg9*r!B**zI`XfElTpM`ZE;iWZq;*nw`7Pd9 zBCXu>Gf$6pKc-V6iAdZ*$c0?xF)dB*#@Ru)5Us|R1-5k?BJK#=>9k*LbP)2g)^d`c z`hv90_z;vfnQUU&^Uh^Y?lrjycyL=VPVIaJ`{z>8ofw-$2T(DIiwaO#xh(CIja@=G zXTibsr-pZKyth_+5GNj&4|FSplB98hD~4PrDl7kpuvApXI3t$9=H#3@;gaNg%;83% z>4RxLY4=SLjA6*I{p`hn16EL%S_wdN(xaj+{#OcijLV?OP}_0u-j+2#yHC~WDlp!D zyM2q&xjvdua%#Ug0)?b|SI!YS{qi>kZ-k9B;vL+7eS7Keau>~Z@WUg#eKHA9#XMkv zeVKYc^q|q-$Qp-zX-|X~ms+MtZH7s=DiXo`4u$~pM^B$RAicNMB0A4eB@LFHI}>`Ry!<_m`bM zgUl#4*V`EMAKMHEt=EOJWnvE0a!VV@%oJNpAum-wm>s#kY2iK<;n41g9dKu|T#)Gj3fv95v%dS|ZD z?C3hFoF#$#hjp%VqmBC$c99~87qnG;r*I%0!8WCPzgW5fYfE4h3)Fn$>10NA;5D0< z7_+wjpOipb0%65MA#4iIi?nICHzt*wjY($+hi$(KpNfmgHKtslwuGgIL-*+0;z6+} zmF6Lrt%L$Uv8Ec%#Rewo7TS zbzbJ24C-Pj)6Waa1ZPb#d_d`p&mGKLJHEusbKjFfVFtrn?r(O19a0xo0R~YKQ_7uB-R?`tGSI3Lyg_~8BFIXol5DZ#Nq52b|Pbx>f<1y`mq``$^3(pDsM zPM71uOTBZogh%@>s>ux=jdTN3G?g+0KMYEgv{DAC_fZSpZUgFL1x-$PF{j70Q9M*1=D~y+P~D6ctCY;End2ib(rV) z)}#R$us^)*oF6`uGR>d=MCJ#e?zz@><mo?<@>8< z&dt(JzuIn(x~ioDjY;h<14&a1!cmny&q+!x!c0}|)AW0lG&$0w3Oj11eXGNEdSd~Y z=xgQzCis_mzt(q-QH*vmB3JA3c^oGG6g6Qi6R*8bg%BUps%#SE(+HKqh4#m$ts8AI z1BC8FBFwF`_`YKg8f7QL>tudsuhK>JD$VbeWe~(%hkHuCM3b-&R9B9>(m$} z7HZ&`PcA3RX?tmr0gk}1mu8CFXYf9RG?M++{yNciS{DBF157bLGkEnuv;CW39eHls z)aq^WYQPo1oEJ;xzsR1=?)N9NOd(FXNg9M0rd77yA7Kn)4L9$n5><=PSY>T*lESvB>x+QJ$ z+@^1LzHCD#B_SpXy!oG->iV%6tH-!nzbsAY&H)zQKJvve-5@}RwoFE__Uen+y%1#+|Of6#ARCZ6Vg) zNmoL634F9bG(zTUB3OSiNETrJt-Cjz@`aat9YUemj%DpK{Pz2nM>!zA&G zM4xd&|GOO6!twAT?#sP`B2$n5K2wCuBKlx!%qSD?9t)NGHYfcgIUG>mO1j)K2S4Xq z3SB`nA(zBPR)s&pZFByU6R2wjtTBT6qb#hdOZ?|<0DDE(ere7(m~yJRV{cTc&Ne7A zSz^2Dzgm*xQxd>FD`A^`pTBF_h&Jv|*yzI!eWbjl2${5x05#oA!wy0lAnVHmn=7Yc zo(S*<)RsV9EA0o@l46`|9}QmGxwFW}_C|>o@KZA29Cf7M7c{>%?Ds0-C|T;rBm8A! zjKq&tWRW#Sju62~jJv@bln-GgJR;Ij!9iBC6U>^R|My#ulstnbZ;i>|=ly=S!T$U9x_Q(Nwk zb)Y9{aN}A_^NN<~jXwp7&ffgf!yVdY2-Z5#F~EHB(zu;3MAy9)W9nmk_jyvmKa-I( zU&~@_`WjXjFbxZ(Q+}{hp;!Hefz&^xZh+Gs+PGrN>?Wo00 zV#X?(0#DC-vv5e0yc!I9cV(xl4#KmBYIP>bGujW>aF|uQ^CfAQr{Q8xM?}}Jq{Hfg z|88(ULOA4RUfgSj?bGmgH>gc#(LHx3TRGil#bT@I2kC}uauJz)L!XWq=XoheRv*r# zaX`_FcSJl$d!{t9oeUpFf;8{u@5rBLAFL{o0<_-WdJ74dyz_NWBv2GYgBV|T!`oWa z!zMdT`ntKl&Hl>+X~hk`w0BJqrkU=1sn4MR0?e;K(UhK)IH>Vyf%?hUX2vTdQXC4W zP;*Q98%W_(PY-!~{wh55`5sZ#(@rmSMSsa~vjIdLnS~W$Z^{t@BNf|7b9qe`2~(&8 zwi2osjxI!Vc7^+E`Qr@tjBeKsOCGC@Z+PVbJENEX(=kYDrf(6wbfV$-9vOv6x%$AR zB)qn3J<~uyT_ooJu>_WHQWKozEb_$xy$leSMn1$9fi9e=I%qqw?GvL}Wg5MaxylQK z9g!;xl+2LS2gZ#H&K>v93mOl14PsAf%F_M{h+v{wZlSDsNl_%}yb*0f0oi^ob7!WZ zv#&^YkAnKyfgQWK7+rAgsW`(EG60PDxJuU6>3H?wOfPOyC%5Of6cAy+^IC;W?!xGX z$I;%}bMQIC*HdRT&~eHmjw&9(@py6>qNzeEsDACOtc^W|`*DiB<#YTY^D|X2m7=Pf zTTm?|V(Yx_uNGf-la|mqkHGH1W%{AdDd?>yYeP63`$xc6 zoMdU5kU04Bdq#^3rnDbH8Lt2QLm{P`7+V&YCvjExTB?9qEYGWkhc4A;e`!-OJI$_i zVDI)SiJbST_2p@BCN5W_$?W=x_Qv`-E@{=N)|JeN-fQI@8HYofV3)Byx()d&-7TYz#{nq&hKj3sFj#$V}6S8#3&19d>lTnfe)(kqpzkN zOLw@}$VG1PxYP^d%VV*A%Adr>ct2DSv$ad{u^CX=pBqI3OPb1-8GkI&)$wTsuCt_4 zIe3e}p6{GthI#e`FJyorKTj=wtwzv5kq^gkn)QSQWuJc+we z?(KU$(~;9gfiTT?S-mD6{XqjdvjTBV(?uAxhVS@3p^6K9U>qm7PCcBA3^^_l=3gj! znCLpG7?{7%{R$6t%_QYiwAto$i*|g!--IyJSe#{f=s~Tx+xg_%uh)I8p8GPUc<_td zfE_P9=b9T8*6!u5?GsZ{@IEG+JU7W*7CQ zWdyD=z5)>z`6!50eQ`FQk~G%U&?FKJmvn5ubXyE9l6m_>GSJRUfv&-4>RYlKa8F!? z_Un`xB@^HBj6n4r9~Wy{#@HK)**T$iieRZm>-t+KZWoOUxf1=--w+dos?;3QQEU~4 z2@cK#F|(CLZGi|0=sV(j#IK^KlI&|0*MY|~LBP=*00|N4fbeQjG){SQglWC8CKz~7 zAO3Sz`^@2?J^*HqIEC)DA1TkpZD4%X`mYN^_9+O!wN=+4RhY=OGCG0!r>L`0=qCM9 zuj|C*7)E%!^1Mw4Jp#1gePR=ZJT~hVKXx2-PNR-MzS7h|ZL zT<3M?`$?zu<`y>(&{**R5BDIA4e)^JWuLR}>fuQsqt6iv$CqWJ4{)o~MvsZ&k+O7_ z-%%2)qgoPu(}!ywf7L@vUIL#(L8p*9{#yTxjynr(LHmZ^Q=&j7k01XS+|goSg1@-? zI1kk7@#ysyiAHFh&10hOTfpxEgPL|Txf1?+<%CDpu-6hXD^Khs&yY(u(rHZ?jjk9{ z-koctE$e8+Mr~G)wzwLBQgFkNP1N~k{GHcP-(lE{&i!|e>Q0xYcpkjR(i_d#v4 zcwn@|SMVW2fEO5;(1yH2HCZu*Yln;eQd?OV?t?(r=R&)34zDSoouz7pUkHIjZ@T9F zJTMWH-z1L)5CwrQosIYVI+@@fVK(YrUwH1DM>X;n9)_l!FkwASn~@khPyBczX*^rJ z1nCf(EQ@p9?RYg4N*4?=v{+}Jj1}_1nRZHTg=;XfX6LdgOjRi;m(_a^`m*a zIVgg0U_ZrlfCZ0M*Jk&rz`l@Rt`i8$cwqaJ)YRc0kBbSrOb>+T3Ba><{r7qb=+;SZ zi~?&iJ}&T&`O1!b|I)_eaA=mzFJtn?N25j>n>LHwRP&1@^O)e8suYLf7&CdN>k?hI z;gmt|=WIP5(*I zY6@yD=8JEldBm91Y|rBcK$BE34*bxtYKAWFE#tJl!vfDo+ggU5Wj61NdGLS>tIp*c z>kl3nrvpwfjqvI4x{lk<$K$@xh&e_BC5PkNd!HWsYSjV*r6xo$A4}J)SUa0c6A#@~ z6+Qqqux^i_h``!n-mR`<;sbDCDvOn@>q5;w&l}~NH7t$Ou+o@sU_Y$m2?`gmhkrrS zH}a>G!%T>NvirW2;2)2;mQ&jE@fUgJ_uA@5)H=foe(X34@Zx zg-Y>V_T0Hb6LGl)(^QJUUI|HZ6=`W$Fh!R;og0*&{CHkJi@3#)GL+?6yDc~8ABg^? zvf*W2M5J}KkYltAhBz6~bN|0UMH6tO(eb{9l_RQcR)pr4NVE+JE?7`RxoV2zkEZyp z`Hwq8Nkd8%WpXT|ZNQnE$=2_CNE}qVXAi)1ewoG_pu7Bku;spKT|ZZ7NJ$2%?>wCN=bzxB0l01O;qUq`0{A4-uL0jgum?*gG4N2T;>EFe*& z279d#Sj?EdsWsLRznO^pInwgYX}v91T~FJW?j#x0lf^r__V)>pr^(aZ#Pj7Gl{V56HPDo;1CpxO@bWB$;-SG4_(DPw1U+x) z_CuV}Xwf5nuEhLe_REV;Gh7C(Oz_|dBH`Ic%WU{%M@7B%373g78M3LO zevJQ4R2xRCJ;ZjX$CfpW*#yf)%{64|(9d1Luds*b2}*o^bSVpw&o}1- zjg;xVK9($_^1>3~s@Y5xn@I+uZDN{j9ys>@mQ$kV$8lVRehNn59mp9UQ$at?0x})Z8IhZs=lwMc zAxqQ@CLN09ayO)xBb*;k2fXpLbGN|#v;!^IQUjabK+>19K`V~M(5m&jhF0phBg{v@j@7%Sc?1B^?j#{^f8Uqf3ZI4Q}8bo%Kwd?v~gB$@EtRY^vZv! zuP04PUPaNw(anAeEs(?YT+BFN1kmej8@KDni6ntNl)nCw)HIIkLcgkrsj9BG(o^Gc zkapNGKbH9NQeHXw(Y*nW##^$x_x}T*1f^9PT_nfRD#S3p3$~Nd<#Vpvz}*PZtnF(K zZfd=AWXM@Vz9M-%oAQ2L^~`d36w@Af+ovFIg(c-8RAQ*Lh@niJq{>B}1SS9^*&-Wc4 zEPqbc=JT29c7C8na~e5>9QC=2X8kqFV_aYSAhTG58DZDqqCNBZ`;X?B_vVbfwO#~^ zzcm@TX6zJ7lMn%cw20Auii0Hp(iI{%;(o;gDfDgZ-K;lN6<6y*{nE3gyBytoohROa z`a0?W#JOt){%sT&A=+nRo&hm`F|_2^7Eg3M1g_ozSH0NEwQ~Lfp#OuvOtJp<|HWT& zM>%smxT#|E{rFBOiMdi?5T3mKdE8$CD8qcnxWyxy8akb>;VWHSMtUUZFze3B`WENj zm??v;yZufy=c!J{UpvLgo6t6k;{+Hg++;#SUUM%ZFE=(0#ohEFq=<>+X~)+T0k~$r zPMfx&Qh=GW*m$)SzTUbHp*g%c+k2LqdRme{d9KDaQIzUft7sssJCqS`cPZ&vb(CtW zV?l8_|49PmU`c?c&OO78k-35cdatjvS^}cqIT~)@<>C2lJR8$@qG2~W1mmiG9uT_K zG!FGW+TDOJa$YEC1mbE&`32ng&iJ{Gr@GLDJ^W-5oe;8zxaCLMHpI5&$2~1lf-Sn- z4~E_CFeqXlJX1#oJ?-G=N1NSBF3`<+grzCyyTSS)!~Be8*G>3ncRVx$v#J$zXorm2 zTK}UMI=N6pr$EYYQyJXDjJ_a$MFAqk@94Vg%f>wG4x=sGppjOD++M$vO zoHZ9w(P2EciFOY~zFTGX1E(=TlkhJfewVeTVs3vIPZn-jp}{!n%19VoTtmNnep-ZY z;gx${HYnhgkK&t8PT%oWl77Z0U~(1FmFkAE{2*qokYT>h<^qkFDOCE=g2_VgiYrF4 z-2!qD)N`2tCwbA*0p|AqeBQf7T`Q&grztxuuahFO*uZUWd?wMuDe_g!P;Mb!)A#-F zk>lTbcYV7I-N>`EJNpGED;<75|5uNoAQ}->GpBI*iE4kYul>}~Ga$Hz;EhaCcX7gt z&4IVf*v0jC97_UtO$ccXo7n{azxmaf_8G{k*wul+Uum&caA3dE_t($IGAC9DE@W#-?Wtv~ zMbxK0mZLO3x$NU~Dh;@{BA=~cy8@HHjtQNeWA{o0-G9CUUFT)!4{z4?Huf%7Alg*i zTMmK<#(`E7uSEf*Kui-M^y(#*eSf!;*DQUEqs+pMs&zl9iJY|@-`3Q8>1HCV#j@ zvD+od^T#{&;I>Jj*1}pTbWW5}bY9pJ1qi8j*0|vQ)r>&&2nK4;=VV|sM2O^msXVFA zVwiU_)O}4aub29?=19mgysZzvt7RaV3{>QMGLt7}Pp&g}#oTywuw+d7=zo0{a?(Q} z{Ep>%%rD8D4Ta|I6I^XgP5Us?JB%5zLbSzmmWxUC`zzdFR+(|Hy2(%6st`rsDMKwY zj2Wi2arT*znQ1xRXu8KQkiy#|w2XW7Co1wi^mi`wNHdzutGz7~xW zuI%|c#6Pr%Pea^23iX#(=xs*r2d-#c*mF;(GI)xt@bPpPV_r=~h?f6Sbb0?zqP|b> zQd!K4-nXCv9h13!u?;`8D=dNPO>0J-I#Wr~rCj+j3fBgBteOp^UhfpDi@Apx71mv3}q=Tzs{~&pS|pTA-p)S5BH0tUJ6ie2^iG}dU{hgXOCh6;Y4$2aATK#2Fbk+ zh0AfMVk1U3a`lDZ@RDe|Zn!Qor{QNWOJq%&WUQ`5&L~ax+ubD8UaWk;3pfrAdjk#% z#!ZvJ_E_wgz~Nge$C=9`_y5^UXxJT>^|XP$EHrsX%JqlOoJ+wlurGFH|7mpU`HRV8 z@Hq|66%CVP7#!Yi{grn#akiG(WdDprY;piiTQd_shC4{2)3WZmhI!PcuC7=PLm(C! zbAA&UysqqnXLI%*E8=hnzi=wbHdu8t*nMURK5wrTS4nWzI^pm?gw#cgxF727E=O{U z3blM#YSrl~=80pESiuA+YLrLrH7Rx3Z=Fv@SGVn5HpdqKR<`Ah5+^Q;3muv@psQ?H$+p&>YJKMO*f zbUj?)$`REn$I4s?89TsI3J2!p?DAvVFi3LQb;akQ`SD}&?pq2uu?~nZ3#(og zldpj1JoJm$ZaqxaK5jx-p7${Q?HdfMzT^?nB`q4b{Sn7e(_JkrE*!aPc0f6$3=3`k zKb+R@h{>P=^eq-vD6D}Rcrn!ljn%=G2+L4t?vJBFCi#3};~*+FH2pr+_C-m9Bdf)o zFEpkgQ%zmpW$(W$i4*nDU-7H|dqbC`JxPcyyF!vwy#PMc)U7k9#s*R=3<)pAEU5cv zx}cwXtRM%!^)CF^o+)GQ)>`=>_ksyzSo!xys!}YZS8wux`bk7!ou7E-UCcYAUyFO> zJ>7CFvZvwxEEVv4^26sd=XoCB+0j^LDwnYRNTaE7ly@PS{;c3y+!NRAg9H#7+X#qF zf9Y&O95E9oysoGj1vZoyy*XMyIpG8pKJvR#)t(hDzv~_9r<)KqW41R!y0}&z_kh6m z$>MmPSC~;QwQG$F^C9FhF`UqwHvkaL*QcCaOlw9+!3N#{>RP7tK*6O{oiu3tpLGxa z;|+Smny~|4r zZ{TTuJ=6*e)4#1Fald>^!Xj4WYu0@4^`S3vk3tZ3st@EH`5fnfQuNO8RUpoEj1`b| zTR)3sJ*7QL#5y*nC(F0Hhze-pR_UuC$jV6KkhQw06S$!uD0pc!(MYyGt$>XDydw$qrtF5HPY>u@mb;@Xm3s)+*7XsW zo!0HhHS+f)XM+~;z(tFb%(NhiTYs6c{PX@jWcsaz9IN(MAr@PKcTA^Y)}4 zp&vxUX-TkU#){=O5JWfY<|(_a;fb#nG31N+%r-R0h35S0=|n6Q-|6Oa>`^i?u0Ul` zI6}*HAUJV8`!Wa=E*s4l?w-2@J>0*QIU~U1HzZ%HMwV(@K_1 z%yw010A5ygPlCeM9q2(Jafgb()^(X&fj4aQ$KV*yh<)kIB5F}K zWk9lz*N|Ssd;MnKdRKZ}dcvy1A*>-d{R2G1c1i@uxT;bkm+$?Spa)#Gm59{tu zow8`D{XX^63P$^r!yot!Da2##TBgV&+y|#@jSX&?>`R^ekhZEAoS! zPTee#D^u6|D+%Lk@}$?;8fH)iJ*4@-_JSEs`(g0~)hzB@*jfI)1t;I-;`<{>!mMDg zs|K?Ro%gmJ$rk_q7h7l97F8RD>j`4$6r>wzkZy+VRFDSg20=h_W@v#IknU2tk&v80 zP*Omoq?K-@VSw4}W5=;S?Dc8=f@iJ!ey;00yLd)v)-Y5G>&3Wb)Z~AJGR0ENqM(Eh z_#4{jd)+!D(GD9+SP}y=On2R>gLrYpUm&Ydws;C#=60|VDt+ysWJ7Bg>#h}r*c9Fg zM{by$SmD)Z>>=soxdR<5DLF*C)@OOe9zWw-O`V6k&SGQ+`Fz4#3#r0=zanTw&FBoh zTBAg3_FT3UcUp6I-RrQkxK1YD#@Y!-7^s?}k!oLTA^dgjF}trP+KL}70DGdd`8MW4 z`R0Ek9bO9&lMK|s3)5%=<1-!XEPo~@AXw1z&!go?3@jtJrk`&#wlQ!M&bLrw5f!VM zq#Jtw&V9=H1#9ZZLtY3Vvc$UaD3BUiI58#3t*t=ktr6_?QdF z6>nPLp19d`wCt_JfBwi_UGK{e_jENw-pzB%z`(H44m;eq24!ehVv0C8XU&T`h;CO) z;2;sZ!pWxcFqvm-uK8B53SE=U#+=E!R(0GT663iYa}bn+!+1@S$(sXsGlU;2c_KqG zi^Ays0PF;Fq{TZtkm=@xQhoT{22vl;X@9lGT(UQLg{I<2{x6 z*6rE(!j#OX9zQL0pabh2C-#SQ@i#kBjCiXK=IpEvAkbUG*94D0S2w|0G>x;HBa#jk z<1*#{mA1Ll8Mz^BbJLSt$L8OE$u*(}co=Xeh@{1lm&Xv{_1dCq-7@@V+l19`0Cs{p zk8JCfTu7!8FPJ z6cuI_l-nT=z%cirm8c*v$6CO@pis&b0NW%Y$*@L$D*R%736>8_z5N>_B8`B5Q=w!Is^k5`E<@7j41JNn5(pZCqVstVgVZ zJkGy&I~=|2cx=yu5vuxFD%#k!=4evNF0`Y;j0|gWi!X`ro1Q^>68Xp8Wfbc*?6)*1 z!u;lW@e*QlU)Y>Zkmu^vAMrRRTorhTY2gQKK-aO055rCPho~w`Rur2fJu7EsUE>9$ zDbrCt4zqudL;@TN<7Xaep&_P_6pn+i=%#ge~`fZeE} za#HnuzDy|U)>8tMwZY%W?YnJ`Vg*e`Q#hu__>(B}TbyYvKOKe(Wzeg(W%FjOWYa42 zWbzWH$aqli%Y$X%av5iG#(>~X*q%Gx{&i>hZETKclb+Bbv=mZA=$_9 z;#rdKLGVg|pDug0ICbu7$Gc{vGwPch__m0~;DPsZXj;SPxtriO6}YGPqcEb&xh@Wy zrF-${JbZ9PqiGKK|#U9!@ zxW9Px#pNiZ;W!R{`>#InBTjr+(aoq5aZ$p;B=0j@FDa!x!o$rCPlJW1`12)ktnt5> z%jU&Ff3FfYd3*0+wQo_Z#CsE|aR>pcRp9udr7oraQL=nU$qg~Ot5zp+ba`LPnJ$=p zM&%j7E_(eab9eBNoF>`jwpyC^q5rPXKj8L+(YH=L<7E0ovZdR@&G)_a_Rmkwo}+T* z59v7?Y{ZbL1LxrSkBCvfPVPy2BB1Jm)IuJi&9796M0ZN#yAOmAHOILqpqmKq{69Qy zG201|bV~=%e+y@XcnT_S@cowDlNmVqsPIZZEi{$-+d`OUh1tx>73r=k9GyP^t?dn+ ze~+Yh3OKAO9T@Kvmv~Y~NwTL03{#^-rc98kFu+9 z{8xP)&!MZYE<9&eK@asZsApKUe6hTWc*zF@G^XlHOwU=1NAVg__w(WSGrLMlS&DM^ zjw~1x_nuH@IWs?|eF59KC5wyud+*innykCMkn%c#$EyY@&$|Kh&<~Wn?M=SvO=nzZ z^q?Gn#{Z6$Lu}eHtNtp`H>q;3-RLpAZU;2}nK@^lENxn&WZWB^q`Ajld#XXX7yltN zjhvSVX_*tG`99o`?ei!?3HNGs4dui}Bsz->70IiX)eEXCM{(Xzi6p(AwoZ;RDd$>P z@MY&`Npx6vP7I`sERAT4|347s{>kTb1dcncV?XHceRJCAxu4}_O4-*MRfgEQ0icXU zv>Ibrp@Jcu$nhe9a8LNnb_e+S3fs2m(Ct$0f+w{=Zc4Kp}(9~fYw##*%+`ZP@ zzpX?RNN`FlM;g9UbtA8NGQ>ih2{xeY|C{OiE+1Eb$&9%f{GhvxByFKGMl@_<`Qd5! zyKXDLvvmbllkR8~b8lgtWM~d2En|tb*&?N!794#7_-@6M16-^V0Xs!!usmbuRVI<+ z=nXyGJqFNPbnR&%K2ist4{g8G=y@pV6rw;1ZR$a?`xYC1^$r+4A@Oz(X0-=!-TPW1z(Zu<^qEKm=Fg ziaoNOh`~;kt1BfA$UQ%?GW*~isKnMDe?+zD1H&JfZ-1P8Lj1<9Q23T~no#t@M993WYdm!s~^EUT*5L-wsC{D?D&D{%Kh9MP%dO$>QvV8N+tr zx9Yv_YjRg@0m5J4P59<1{~@ZzSr2*ckIuAZEDxIx4#yNNIz6A7QWLEbyc}mW`nUwb zT%7-<7pZt$LkIhQ1>dt?%P_g2!w8T>8wK0e^jKJZM@_)B#VF{#B?h+0*tinQ0A+gd zWsvIUQMeqy4TfAmON_mJ>T$}tvpSN4$0ErO`isKrO^^n$PgUa=a7QFSS%uk0yIQRO z_~nGuYU{<;HK5cX6b;`>L+Odl2*jJVF!cg9CC8RRMiGC~aQ@!7Hu$YUhK?Q)GtRwd zB7T;kwn=j#ewEGUYZAsJSk_wiYR=PL?NjnlmJ; zwXZb!xU1QX2#_Cc`RxQzoGz8aelTdq)fy>Tf4VoTcJ%rG%czbkHxwS5qBntv{t=13 zR~3w3=p${#DRE67>q}_CQc|L8HPIC(dU;!TD%$nRt9cM7<$er+nIME>>R-4eT)ZtV z!nu>t*5;f}o2507YP~CzhCQ906J)au<(S@W_?jE4$daVc8()3ftHd{xeVlGbea&Qf zhH5gr^sfFVjOev8dtSOj9bwh!vxgddsgw6~XXfEK3TYjee35KX1~e+@3_}vkxpyj< z&W1{jdDDdDHv<Qiyi1pTF@E>gw;&IWvIf!pIKPCFG& zy@$8;yvHI>?8Blc)sbkHkDFPAd0f;k)QrbJ`t&dhI((07e=Ap@G*VBY@vvcC z9JYP2uXxdJW1*kwxgVe-N3wszX1h#$ZKUU#d;7ba{{UWBGD^a>*9FR9$a6G)Q~oFXaAg+8E~C0$tntC*E7rg8IDf{W zh(nsU@Hl$v%W!h!i;>?aqvV}OM3<&^OxhA#A@vEbYHIcbw?bfU^6LiLtRJh{K|V%{ z^(9mRKQ4TUE6PnapcW)-BTn(R<8X`eGSOR$51meRysroj=GR&%ouAd@erCoobod}1 z&HV+;ag{=dHN6>?@&;0GTOej`A(tzd6@g7Ap)=xb``-N%VXpM6pVC~S4#e0n?-Ad! zRxy?f)2e4lk8Y3!`VuiMjcXe>?pPD69O+%c>uSOsOq1Dz17}_X?b{- zoD`;r7z?qE)ffl=&SKZL{IiSfv}}=@4XO~zr$;+qM%(s70jJGA3f_gR*>PW*s8h27 z2Y*HJkachk_{Iwx%n?v0F8crLYufmLO++S?4#ZmAbJI9$C>>B%QB5}6Yj0wPb`U_N zQkh73ak<#^z`G*3^%PlN1{H6KCD1?jgBuBjrB8QmmhRi?YxpTJz^7vT>tK{pmDEt1OdYVO zTLP1>F^oAD#P)#Z{d z?RoyZvsNcPA|F^yWy9o5wO0JPkw>EJoZtr z`xkcvW9|6!JXlb!{vt*nI|Z3}rH^~(e$l+B@H*^4*x*b#MbH^AG=MVLU*&p`V0k*1 zBKczP9{)OV4XqZQfOU(b8ZIe*zwpisPf*2Ct~P|J`Drj~vF`lw0(imo0az?27=f1m zM~b_ux@J_#+8{VMgmodU9znrR+DoY=ZHHE2#R}N={~gPW<3+@)ZR>BWrtzuCzIw+J z_^6^#FnKl8F!m6%z1HJPQiW7~;R3;o*5rtMyO?rX4j z*jVWGRikU&6RQVp5By#JH_9B?Dp^uT-m24<`JcU>Neh#cn>)$dBG+VGaHa77oS;yc z_dx&E?BNY7sRaT{xAsh_OmFpNo8*>Tx+Zw?Z&a5De0&Py(!vOHd+9@kVG4@k@5 zr0~FsikuMcA7Nv#m0RS&%kTy^xC*Q2r$jSkE^4>kKk6L~B?e3~#w4i->%BcD#RCB+ zDS##wIC3aj+&g=85aG$7JnuXGC>=NGyBEz(7T+n4nd1aOa9r*1KM|+1M3aDp@jY)r zJA;)I%NdLeD4KHDlM!pMZhKDtm=%!^FAhj(Pb?pzWRssFj;Xunb6NBJ`T9w zo+b2oo70jqJ=tG*J3WtS(D!nl(!=c*y1b@Z5&vTyLG42nV!^>+k;Uz&b8>Rk_Lu{v zae@m^x_)q)wZzZB0)B>1sMX* zjt{Wd2E9P!$M9~9?qQ%<65P29`t>8Vk=tGUc`+wJ1eHgG?n1kmjQ`gjH`8|%=R#J! z+GoeX$XARfJZ!Bid27k?WBP#;2lG{va>&!v^b6Tmu$F+Pk%h zs5oLu44?g=i_G$>z^9S@T z>~O=pNdeusev)BP=;69wi{-CQxfJ<-JKax*`*T0mv0G^6vF_+f8E$7I-MS2!{}*l?9J#y+k?3v=eIv&kLa-#2pErP`N~W7l*3 zNh+`%Mn|*J^#_(Poayrrg06*U5=!;G9_iKQAe@>7E-B3UfmiX@E z@4HyQXC=aecp$A|##Or9tBZD{<%xdj2j9HM^Vt5iD~ln^-H}N9l5+L%F(jkVREo&+ z;dKELito7u7%H45gLa<7pu}&nP}=&#$=%zAP(ba*mH!6HPl6hSyL*36N79%Kzn|Ye zFJeK25p=(I=yTj9l?38(rT|$c`AakJkG`14kF@CMec5~zubN#k1;$03Dao!xZZ2`~ zlnP{>v1&ziL_v@0*L7)@o%_P$CBaMg)@m}^i5+^SpT4?yMW0x;cR5lgb#{vk-chSh zyeg6pKDI^gY@UX{>6o`SR-^s@ivYDdAvLvmBF~eoaXy zz3|mQ1gT^$Q33MdNAyR$I=}l_-5nQEfB3WBxRH$Y{TmPFfRIn@h$n{z)I@vd8oM5F zX^Z)jw{^d?>4GH(Th;H)J%#P#383~fwt`<>dI7nnBaP5X3ZT>O0WP(iaz1p|v;HOQ%r5HfG`C|UK&NQHR+w=Q1l0AF%C7KRCjo&+R(btASpIp) znQ3*1OH<}3fL8Sj_^M)^2f2eI`J;3qOML#o4c!o+m+;&toE;Gk{vJ8Ve2_>>c9Y!HY z{mpT)(`FmEOB7}Lekf)aJN}@Rjl`jIi)8uT%vHXmnNUV%_bN2$wT0Ozatm(HzqybZ zohSyu+sW$>|0P)%>xx*+Hea-iN-tQwua;sRqfJcl_7I4sY#V$ss@8v z=6KS$s+Kzz`XF_$=0LCNTKQC8t6LE-q|x(dK;3&p4{j+5+!P*Q56I+8MmdEqkBE!g zf}EkSKbLjwdowok?Vc9h`{ItbI&SwS1B(U)o3BsXNI^~%1crG%AEyYs;8bJh3_$a| zw&}gP2PB(Bd=u??YmFLi30w~oWMd|%viaOJu&F4B49L(dEeHy0AcSH`QjAoQq~wQn z4ddVrR@JR+r}3O_U@E*C*Z&+&5gjJXo{c8=ICcQ?=US5k`x3>zECCtz(b7n%}_`EBTCTgZzq0Af~@uE#|nTV?;Nvix797T=d>D_#f1D#OjF-c=1KvO+g5 z_#IJ8+gOBkBH$|o_FtL7M5`<&uDfm3P_iL-*|MIXN%$WN3>zky9Op$4iG&i~kPBzj z9nDn8{^cj-s{iOBeiu;$%q6CfzH_V>ERqX;bCUMadDLwj%m1au&vIpV4Sba+>LFI2 z>n;s|YBE8ym0OjOM*HGW<5vSxLa%bLN+m@G%i2PzT?^i)XzYXr5|jQ%s*>1+!@`;~ zLdBtgp$*{`9_!hlK+nkfVZ<_@AqW7wWvdk=jcaAiJ#z1n%b7(;oSA@ zwV>9kYm9uiH>aHifx95*CTwZh+ZbNil*_+=+z*zbCO7?E<-CU~dJZPBk)VUGdy!d=1;|UIPT)l|`u< zTh1iGk=g4Qw$Hl6FF3Ec06*J;f02`z3&Gi|**2pHeRLkJ1QOhI^5v~?_k5y*dJ457_Cf;lftx`F<0(X zb1+OE_I)v<#|5}4=0WEk*pUoD$CQ)RgzX`>vH+81WTj zPvFVC&X;i4Ol02s`F+K(7R0^qPKNxsh7Eq*!Gcgv-bmfxVJ8?e0yAB-hV=PHXGwcw z6E75iWlw%q-N$BX`8#0uKdSF!ap6{@Ve=7+i)3rtz_)8i=~3goj><`bwsm2g>A}4; z?8RoZ)azkIQ5Aj@C(_VY@>*Kc=rQ2btY_AfNwe=2DA=zRZ}#`S@(-P1cbOVkwWY~3 z%%Q)xL?nr0Uff(a8&9ee&mU(-en5A5k#-T2S|`YKF)o{=H9Vu-Sj3y@KIC5|6GbTZ zFVZ0B`ib=xY` zaKGLSU-zE41;Ndy=g6CYsDXbo=tVbSEZ>pW%=}X!d3v130tHR~xJ(xQl3A3pefL}L zZk3TZ8gs_X>EaHY5$VqC;?`NT$Q#0Cm%C z#cYuKmDsN;JPwJLx@}U`bdH|+F!=a#>uSMXzHO5FfNR~o09KTnFP%Z4&}rV&(&yh^ z7d|ppvq<;6oR#k8&#W0*CWxaFdmzA1JALBny8!#)Ac{ls-zbV0sbAzoIt^2ss@A*@ zNa5l(6SU1@-6#(49fID)sR|RGAc92Rmy{KM9|73i{}sF6h@4m=UxO7-Fgl8sK#1Sxu>0}5-KX%{%EXEr*Q#GFhzW%Tqh_XGjk#7BE z6dw}xE-q|h7C%#_Rh#=1PXF|CS~58}uaC^f1##BSSB#kjNax%LD`kQIw8OW4Py9NXB(R` z?j4x{4=@NEMl7~Ch`y(-M@RfV}93!kMiKE<@^%LLcv5d@{ zDdFOw?<(|okVbVrfAh(t7&D<(xvJNqd^GkASAG5$j{unPCih<()mcXT-7w5f^wM1S zt2vtkUodf@S#{pLjm1tun7F5Raw>ScE9$V|wu|uP-N&Z)HTJk97K2h^byQ@ea6C

4FtFC@p9!jp^%|yoXC0lj$EV_G{zF~>yi|;@m~5;%5Qx#H zv+3UoLCE6~&x83un?-gE!AMv;gHoBzpLdT5jFVYEa3U$|bEUpvOP2+g`WW}f?b0A^ z_BLXAYAE2+ejL6gl5d1qAUlcfD7+g)c4Kx5_IM@?sI7RO+I|f&Lm?_#D|;xLB;5fz z)d>LIL$#0$5hW6%(LCu@x??AG6Cz^Z#yBxoM)1u zS&0|74L>kQ*xl*L@Lu_sN|T`*l%2I+ z7;&{Qhjj^~qAy=q{@ErC;mvbHD)R9zj73OXFut`ZQG7B4@IubQhid}>^Y^`IJlDmM zVQY{@_mfiR_6c{;Hv#;1v3%1S>qOIU_9l-QsC&!$_n8sjIy+}Ren262gl9lUn~2X0 zx1K(Q$%~z3=C@}{t}kZcUA*lxnO6PFDU4LMmN>3k5ptOB6Uql4OuDrdveql+lk$m~ z1s-(Rc4Qc_V|*3bJiCO`Vh?W(=>@(%eE!1o?B_`*4i<0i$+COd#O_xRTK*#S^H=b> z-0r#@XGV}{QJ^7l-Inwkj4F^@V?(QBxU}Ih^V_o_KJa4EpeaiOXn~jI z3wY^(z+|5nkSUe2%y-krAhNl^)X>E2-SPg19{Ij?e_UH=Fdw}E&+{Fxg2VkVb^CuX z{kA>i=5oN*D)}j&2lQClmRL!cIdk-nqf7VZ2V(F0iAe7;@B8z*$Jvmfr}oGd3(_`A z`9`OiDwH#dpmoj7*pt(Rz_l;h97RJOi!Gcxh4pC62u>{agMKQ@o0YH6adzMS<1!4G zYKk;6R*aVS?`rlU-S8tbl)#>M_qba~B&U>cv!tl1qb73(`#nacwjw69vD2zDu|NGt zi0M&<%Fw#?3rRzY)el{{MlWq#&#ExQw7AfVE8`ljz!Bd$d_Ik!OZR*Jn!9?h1@JE0 z#j)cgzTkn4;Oy{~+dHZ08T_8HGWPxO(#15oQRZl?T8oP(LdciQYUHvuoh)&MM!o0z zXL71NX2=?&{2^S;KM@(SScmckfqmV|($_^~U&v2Sf~x!%;-byjneW6sojbHL1X(Zk zh`+S*?JAarRt%{l!sK&snZs9u{;)3}Yvh%3cxvI2CV98Zx;RpIuQX>L^R0E+m$Cq5 z8wC~~BK--qu}cR~W=9@#fC2UNEAV5aSebATg~qCyl%t;CXJbeGsmseCJz`2WID{?wiBXKgCrAUqrW~#KAgXNki7CC)qE? zt@ux7AG}1{vHUBT?f-3ftJ6GB_n+iEWy7Ujr<#oEbeUypU1TAo>?9$@1==gvho{|V z=lD1|-GqE(waEbEO$y*HPmu$YYXkHdxYt0KCByrVo_lQ+ih+yodb-nV56{Jr0_qm7 zzbUp@hJ&*|G5%MHMik7jVh{8lhbdfTIHJeZ>B%}i;^Xvmsi#ie`+PR#?^qhIjq9Y` zxP42LC~oV=%UgQt{cj0kPqi19ddNF_iRp>H=Q|c*Q8Qj!toF8{;Z-;}JhEG}vPk+H zHN9+(ciHZx8$M=o6rmrK7Z8u6Xna;{an|`+^249nMNT@wuKA%^jJ(f3Ewb@I86!p^ z>;qMQWWLGGvm=>pb8YR`LqVjQQ#RzvzE8R#P@OzW2dOWzfBG*4o(@Oa`xgx zw4yGPjeo!-gzual-=7MtA#lKqq%M;uh!#T0#mqcejDSBrP~eZ{2aLiZ>^|Sm zD$Qx`>#zQ~u5b6fXZ+rS*b!(nSS(kmjN@KGZqA7xoJjaoUZ0g74*KI6Jhs<+yL?;! z;O6%V;~(NBSbOR?8a2u~cll5tZ&Fa~`1GSOz_gBJHo-Re?M+Jc*T3M|R9wIIA~jcc zJly=xb$pq4$3mx1Rg#{uje=18@#Nar70x~H`gL13`j%cdI-VZ)y?Ydvbu|PXa>3%S z)F)ccYt0=X);2?yTYkioZL{$%4-m6zP@Ozk0{!@3@OeP;)OJSKw^6Dc7=n^9v@iy!phFjk1( zQ=buCgMPoi$2NixjVBwoQ|DHI5K5hrRb19Jzmr@F^4rbqw@fR^x{VEz!00%*pQe`p z#dDzOcUKHH$t1xl5fC-{2?DoeYIE9n38LKDp6kbBRdj$_vzEbI_}79*7a;YgnLtf! zAt`QLtV!D%vv`N687IFM?@Y}gG$d2B1bKHF z+dX_%m|&RDvMl0%!NtIb^}d~TQMm6?W3&z|QRnupRN$uvuJ+U7_LYh1;MRz@yiSce z_H~|A)(Nr3uIq*XSDxqm{0x4PighM{(c-tnTNj{kPy5LCk|*bVAu`})n@%AkYSV5#;(mpzmRaQoTex3zY%^Vl^3J8TF_^nqA+Fe+CXaLS#X#ks1T zd!l~|Seu3k^VK}VCXRG5i59b#jE(1=QvVU!(DL^`90$co62apBL-{uk(q+l|!0*b` z_d4Tz8%%_YZrnPl(Rdg$oD=}->v>M?a3sW9Uu9PWN0;Ew{g)}`74?@u(zpODMFrKK z0jOjiX;Du7)NW8aOzXv&S2ZJ)61!f5xah1ia^n(fJo9fb$*KaWUu`)*;Lm9H9y2*` z8=M1rcFTQ!%)u!aek#0=)@KKCJkk4m2^kcyB=IP)d~)lGN#uBjX#njg$T+l1_OXxA z{LY#<{RCW{>u83j+C9fa#&E>=naqwDfb87ow?_*?i6O@`?IuevpQ2WsdC*u9Z@3-bsR-E3vXlaPu7>nAm;WWukiN|r15Z?I=|fTK}MzMge`s(#JPwPGI% zg?tEd%D(BCJb_1BHsY+9J$X?G)%x+=`=%%MUCWoqPCz@^=ZF>DA1FS+%NcsW1wzv=;crjI_;3yv%%IzdYYc0wVkZy!8 zzn`s7U6nf`@?14fNBPVIu9g3=&C#?W75J4sahl+gy1L{cQ7`7n6KCK-)7+O4{TyXK zD2QovEd3@57-W_do(jAh`2Gd}agD>vVKy!9hL}n`(~Euvmj_K4+1){M(YrVECJ3V| z5vXyh?Z>Mg0g-q(^~#t zn7cWas{#!jk*MZh;x=O7G!Bco+Rz2(0fR8NW1gH&2PbO7E}k`@Upanv2+D9>UP!T(Xdn@tNE=GfmXZ zZ4O@OUMva!Yt~zobyGWD^&E|^nfrK<@xuc8UNy->H~;G0Lr=+gX0Z$J{2XzkEXs&i zv%NPf0I*r*llM{W^7_kmOo2rPa?~B1qd^7FOu#C5K>x$w)72Y=bmV z7_8xY@IS=+2puq(1@EuDA|sds#HS4iNuSqT#nbrP7x3T2?t2nfCX1mL_YzWT;i(E< zJNt2&2#S*~j@3DAe?@(h11b-UqE;4ktWcXBM{0cXN>Z_?N{I$&ON*gO1=xFO1zK8C z9?1Q1SCgT>r~hcozA@_Yi5dFV8v9T*1oFTJJhAGM?|mqO-R_F;KW!W`uIuX>JUMf( zpWvfL7w&fZmsS7;{9dNd-m2`kW~iSY*M*;@;F|1z&0p)5G676rnSWk=m%35+%O!bg zmO^ruBUiTMJ?-g8GtpKm2~}AfF8D{?KnvFt{|(;?4&@vZc>?7sovfrfj<=zJi!qJ~ z&i8(RIRLwg7?#v`pBAkWEuh?Tts=ya+U)J3tOdIS)+iVydc|H$5ddY((Dr|c>a5Z-Avy5$!KU_r)zZ4^b`=l{ptPE-;BK>W?e-b_pdXud}PZ}3v@w6$o; zy$~}=&f2GG6gIKKxH#^B6f{^h)8$aAzbG<1oGd?C#X@?8$JP-fj1j5#Ef&X95!I-E zUn$S^W*k5W=&lQCW&vPMKF6@5e9-G|F9D`FM1IxPqOXS+-UfRjy90PC3Ko7C!-DJg zw<hHp1y>WL-ON=6#FyED*YGOtr+EnwT=~5y?j@V!tiAG;M1f=6CrvS=RUG53sCzDY$MS-i<0xrra`v z=bym>jZdrE9%&B^HBGpXw70iGDXegD>`(!H^fOOD(fXnOArZN&@I^tzEOo)Pzk}FQL2P@~V(+bpppf+2@6b|OI>+~X6xQ@=o838ky zL2?E{QI&<8b7U+eP6eJ4Vvx9@rY{}k=SFasM|RzymZOmO5LtA1-0SA8(5_dyZHYEL z1@dtpF5oLoyj{W9O3K+g_RMbP;UXpquKmw!#a7(g1mPUFNmJ>n!6j&LRvq7pPISta zP(QT&WkakGM^EOSmv^{UGqWwO# zulcL_ySda7eNa&V>)P(=g(cLq0@x8&#Rk|*_?yT4XAlm<`X@tAs!;=K;%5ddrt0RL zJ@I+=+X=A63yVAhJbljmt~oEzVKCtWG&YayJ zD)!}4WNkQ;(F5C4OG&N|+pd50m2ZhTZ}s5;;=7CrFhWX>*_2{g+q6sYCqUjp5s(gk z5+3(fGAj&YM+IP4i8>xy!4Rflhu;5NL)y9ZXo)AD^<7Taw0c!z-Stl^4BaE}nNvZ^ zy(7r*Td%V*;hbhdj&3lCJEU1$0ww*sIf{$vcEwzE^LZ*tZXi-@=_lCWvC%aM5j@ko zu0w=o?!WvYf1KfH0Vp;ew(Ao$zo-lJasHi@dGA5ou_?9EG7Gm)p)FJ+6=c~nR_}Pz zww)ZOIu1)*Bb`X{_&r3crn#tMdoyMtm8rVo92Dk0lz0j77Hp9wK(%}9B`X1&@QYPm zBeX$xyGEzB^0p*gX3%uY=dV(UgEje~jvXal@t_vK&W#Fnh~>=B$*FU{G}KDIth?Lp5<-yD0X`=;$SQwTp#3|d@2m8q?Xn|NL;-gA;HU2 z13df(Sx{y$qq+(|LmmnEfH&pOFq?qDLg?Om>s+REKR!Fnhkj(`z zqS5=DC9Xj~rA|5br2h_AW!~}ApMDI5&wrO64+8m4_gSwehu?OlPETAVp7vnn5qvll%#6c)pHZIkuy zI_c8_ffYD;U;F3-^jUqi*#1LAoBS?6Az(Br{D^&~^j(YWpnF)0WlbKOsZu{J_=$+6od))T( zRO~AJqxHL75XN4S>_mz<$-Z4d-#@v8vDOCDF)WY$7m^}z(B!T`ta9vodf9Nq^I?q! zppkJ;pMq7~{w?a1aDHn5^}5*0kVvOT&6Fe!>#JC}{IXza1Lmxy=U)pfCnLdm7;(n# zT~Wjl=H=7tIw6M*Y=(Fg3I2{kW>=n!;#>ns3rCr=7pxJG%JHmUJmAVi01>I#rdCV~ z;*;`tQi?D%lVUNNi*a0dHb#Pg<%J5XQKoHJ1pZg_pLycZ@@D`Z(dCAc?IHm-8UvdQ zIiPJ5b8z?WEFucm!&MVYAJkhBFlxajIoI#~LwRaenThRUS>&dTu(P(=Nq@7%c*X0+ z%MVc*JupQtL4|(rsL*06P)#pEg>xZ149zEqk*VuJ)v4|(h9dWh| ztBZ6kCCe;wbn~g!H8<;P|K@{!>uWd0WzfjC6)1i_Yo*Q*MAJeMfXdG^aJ;+N!AU1T zC7=>I^h)p>ljErznNY<0zkJWovBlxTU#m6>y%e<;t!*!DlShU$;g;jSl7#_k?_nJl z_$#)uJyFbZ+naOOKSS^iJfnFbh*PM@%x2ox2;HKz(9Wlu4+&(`ip5t(#BphNEC0kf z@$gU4UJNn!${@59jeN$M{%@ddgru%;kr8R*b{aZ3WlCVbYI{l76bw13NPA#e^H}Jb z@FFOdM_gB}W>n9`sz6(!9QYVWLzMtltbp$P%&*So;E0VLyM}h#wW2UaEh-(I&mV;U z_~yv1H1AWVQqLJQ+nh}3%3h64v8QUhTh!JnH3-x|3ch0Hb2R=+7i6yAUh*N-UF@pT0g8dONcUxrO+2f)t+| zU&&p(rxovM021QE349cZi~$4q1{4WU*c*I2pb{tw6T5o>1%1Ni)J({D>zttDNgtHR ztjiCDn4G4)a0fKB+A#~fypCS0*=dl|99}+Gx{2Y#u%uyh}o)^(H)`7;C?lk z4Rvo(B@bjm5$R2wN+ikMlcE^(ofhtf;|D+OT$|`9T>1WD4+LRl`3J=VT|WS$u2gB&%HpStHvjFv$h~}Vf()}H8Z=-B zNM6VO1~}Yw$~h~vM*#E*;8ZVz9lkASmKulGcg(h!lXv4|?W@d7zix|q^P>Z&rBYqA zpRp$2QiQa{iNfV2&_uIMg8k66IcVSiGtO9uMzYkR_GgmdNLDc|zZ&U*1jm-aind|J zn)3EF8SRsrE%dVi@;kB8V?R%8MGk_!+Db#~RMfCr8D~8{63-dH4$Oqf!qtd^H!VJbgmx3%pwr%#mdRhU}pW z&7%hW_iOS>FBfG+He-chDuhtDk47dY1uk=Tz?6Ebj|fIQEuJ6>0ymZNQH&2F+C5*h z_g$pd!E3KiI49uoPDlq@8?---D`9R z9l|^;%a$!G9LIBbaOZvD>#p+wnnotE)7rhhiQDzqgxF3wZ3K=s30Uj>PzDiA=f_at zJ0TYzdQqmaMYy++7X1R09ThR1E893vDcD8PTEN63ZG!vo6^X(o$5LmC2Z1R#ZRA+1 zlCG8@TTfDe=Jw+}>Q!fOcbG7uTX;rv{q>v6>n;DvzX6-!b&H=q0E7R=GO0tdeIy%L^cQ4~mTuaB%cZR9I1m zXcE-U;h3EP*b597f2g^*&DpH8Tgj}9CUYBuOv$Nbt?`|ki^h{oRiyZgrOt=wBHn9O zI=eh)e)H3ik6mbQg^Q|Lr$Z4nt_`sE%pA;#RjwDmHpx;Y3?`~z(+MUoPspHdScRR3 z>ig$7b9rL#%RYYNl;&dL0ZFG1D=+KjBAKka$okxW(yvw@z7SWC@l*FoMCb8iZWJ-b zUHO=*9M55hL@=2E&fs}9991mxzdoCYY(S<^Py(4ZaB8_pTjgqJ+M@A+H2UP}y#J68 z{MezuzwXf~;4zU59;Rw`fLv;6(EWp7yqOnB`FRAoO6y zJ!3;3d7T~^4B&bWX26%l09YwNn;z^Ap5p0L!myr7dJf)bsHxQ08FceJ3}evzh|PCJ zM6elu#WNAFzs3r79OS%u6ZR&P1BGZ|H`)FyGTYnP{Nm-p)rq)}3I{Ter^spY2AaDO z*J(@KX*GlkFJqLkWlP7CU4a;a!ibUO)#4`Mhj%_Un!~ni1dO(^URGZKdK}ritGk{m5uq11}*lP285`j#EfdS zVy(sB>l|3Xa@0!Qq`4Cd+e+4%Q;9QAPWbY`VUPeM z7EB2Y5wx&$?JohDfA-`Rf{V+L_F7WW`?UrC>UFkqsa;H+!p8(lB^d0~i|WehO`tK@ zUY;S&Owx9`l-+ugOMf$lanH%+HGC__4iyr60wuc2%~kX1hvTC$o!((B)inR<1BzjK zlmH9m5HkngWayuj6(iSh!nU3Z3*&0Msz@0$bBK$e#xMWX#3^jEJ~#P<2swLOx>P?F zHo;mU;oK#aQAt$yR`;^2g9{rk1lH34H~_Rs2n^T3m5}Cy_b|$p#g&~*O>ru*E5`Ga zs5v+=pAf$xj4$=nY{TCi=S`^2pHG}u#?}ET^2~(;HXNMii_4s*0(t@hWwY^#14+w- zlA_j`wufiMYp-5A;jMlL#iV7q{DIMe%%Mn)mg=nXKd=9CEzP%ja#FWV7RnxbcqXQ8 zvi$hMJ+6`6XnZP*9F;&FYhk4XNrwaL8idSA7!zpiMjPuHTY{Ss)YI&j4ix*ps_&f? zo7uQ9aORZ3e$rb<{i^^SGdlc`d)XLnGkmq+miB^ROSTfof^qnTIWblz%zS-*<`iV4 zub6y)n4LslBksI?fvjGCKCayRTCjm~WHHtEm~AIrRC&Hr18heIn1Z5nd+1BRDTp!% z5(N|SKS&ZYEaAx56-`>qg%V7d_y|y7D0ERa4m+SyTA^Ng-z&v3@mV1#wVuv7`{h(t zq?N_H<-FL3IXQge^VX{udGQ0+_I9?A7u_Z>5FB(E(f@L#d7h^E9YrJH-N z-UItx^lk5)kZ_0HbmY3Q3G#Ef9H}gsL&7wOtE--AikrFn`HP5~$0gK@x(j@Nf~78R zRIS+o9H`)eRE*^~qxIg7!ecTxa3wTO$bklI@(+GB0t(G#WRDl&ijIPS$j*>O{1%(wTze(=%WH{kMNma-y*jmV^6DAtiQxspWqP7j`j*+BFie~c7vMtMrJ}$g0iOg3Dfhp2ufskmbMS)) zxa^ zV-Ae4PaJ0roZ$XgIOn2J<#(w z;57ki1przAsxd_QVp^hTR{uQcIX9;D<~ZN(<2UiV+sSg4J?*NVL^18Vma<=DLl`z) z|3^KY$F?5=l5h}Lxcnap9V<3DhjoMQUUHqA)stcwP`&3ceK>P)nco2wH{Qifu#%7C zL~Nx%Gd%IU9?N-&^`k>Pq7^3I(nsZ@^(PMG8TOxiUK@PLGk7*;{MI#BQDWoW=|Q03 zTeuQ3*iCg{j_93aENkLhB)MjTSW=xT`Lo5%fltX0vUCYh@A+J+NaF7O;6k`A@q2UV zT}$go@=m-w$gBTmXZ8&z9bi;MgtMOY`ali7vronix!%qAD~7}1F=JyDbZQAx^OEWf zf_J4*%X0V7^D6DfPspenrCEZU>&>XD&Dvdgk`(B4#>RENW=_vqEB>CJkL@%)a&YCC zT#b~yZC*o_VsqHa>-(!54dE6urRq=zLoajFvH92zhU$<9#2hE97fYZF~xQ~#sB6Ux z7Wby$8j7BU072_=0arQZmmxgh;aT$L`6x0-vDFj|yCO#&@ChvLQE$;j*loy${kNJ) z1^l^?M-WWyCRFi;I1<-|tr+ZPcXVBI3VGnA4;k5=*)(DX${8d!)pf zLXoPmcCey|c+Gp@c#WfgUPr?TZ|pU8Vgm9+h%s@Kh!?wG8G+aV7QE;jj3md$pNiqvGrsrb>nO_)}SFA`zXP={*ZJzgIHUN+_fQ#&QLg&hM13$pzX!3KVQU| z&uUZAZ98YSRn$mX_<9L$h>L*z+T_>>ZT;*Tn8MUUlg@{Oem(L8Oc?$%JN0M!#OZ6x z1?IXW(gKwLt9iBn{$eef<0}@h_||jL?*So z=N}B(`74x?IK~x86u&UzbXSuOKX&C<^38EJz3z|W+ybn{Eds3Cr1*U;uo^R-=p)=v=cxT(`99YGU*Xcnt!f+1m16= z^#sDCY(qgT-#b=>9lHaGNh^4S;4Lz_0OquVEz#PS3?3x`T5mW7X$V^o=gppd2HiAt zRLE_nJu%qtJw(l132vk(l$sOWARgv?bBQ z-gK}pa9!IO!buB$AjPf}LjzJ1W$Rgd+lkPcj%fByJ~&wsX`x-ENW9X<`76(l64RN( zWbBEy5b+Sz%yaM623r7U_>YEdCURsSlYSp8_+YwN`n9@ECC6WeUNq9EDQz8orLmkU zk71kkiXAib&E@}s1(kto+|)<&kOdapV_vPDuw`vagfZSMPtP zN)0X>bxA*m<$Qg1#;;rfTFU{HwSmvjOt-gO-lCtL6PI{`>#2cdzpwt^yeY0u%W5|h zLv14M_CriTM%v(#O|?p0-p1XxEQ85B?x_3TM>@aTZ%d%p_Z3OZ_09KQoBXoDgiAiH z_{|Gs5&(lp4d6YJ3#nE>Jp218a*O#j4j=UC8s|<=_|_7DQ``BycFr@PWT6N9Iy6}w zk9q^w%$h*ahY6_kFe{)2zi91ak>}h~;=9QJZ_geqla_&L?J`~+T$Lh@`_@q3Z>R2n zGzNh0qX2%8n+D0YqWkV^a`ZqZA8!UN+?G?|Rn}tl`PB?{agCGFXDoRlF_8cKP_mcA zE18!LoM&egK>lB;7~8F=&1f$0UsWeaf$0}1!HoaWbz%dI>bSKH*0$k;vGbO>sP&6f zOMFM*4A)=mb!>s}2$y&zE)kl`8Z4{MuH0v?;UY~m#7=mr{(HqqNcqFlaKP!O*B}c~ z*}WRVr;*$0gB`Ven_|8ztLp?jF@MCNsgUw^JN8!I?KGN8$HUx@hjd_ojqDfie>qIQ zqhU0lyg#WJazdQ=|CJo8{I|q|h^976M+qcFyNA}BJSiP0dZZCS0woCC|;n7Yyy7Ry=$0e0+ z-Y;%O%h9u=hSru%J}HA^qQp#Lj%0qwv@vpd&ABcoQN*5MLu}PfSj6>HdYYGWk;u-- z{gvjY8s_r$#T~|E-M5b`j}_^MLB~;*01pT7W??BB1~h8`fNS94@(Byd_OzjE>Zd6FGGfle~>+*))@Obmb9gDTu z4N-KS+s$W@R_+Oh{QPY*fjL;UlX=F{wm@R%F1~c+qsk@JH};ShlM475%Aj_c?#UtX z3#kggrX1N+Hke@gyY$|*WmBuVz=OEc67E6BUxsX^j#NFHCk@eZA*79TE z&Y(po*jsFb^eKV)7mngL&p_{uZ^9+s6C+bxph!0)$6$pj%R>WTeICeT;h+Xezy{{y zFNqVum)+mqMFZeg<}n1%)0c60CTwTV9$Up?DshYUvXfa%Ou>)}2M5V{RNk}uQ#;~w zk_MdQJDG$vy1J6SZf!gOwSU)hx4y)TD=v-9ILxgN@-H#+X|dgZwd_iO$nSQwU_?AU zJniFyp9p5YSreStHI`%+rbapr!5-EVlLB17#cWapaGR$Wm*Swq$xR}MJQzA~m?T%0 z@>5DtpNTIGLjMK$+s%DDR%Lmvp6;+A9#-~Z{c<(%`~IJKaF#9^BjB(!e3Ueihblnk zK1T_7Xjhs@P5&7_5d||%R7)e~a0R!p6C<Ce&ubu3Mwg!P1R#Y# zAn@v;7E}sOkgoe}c#a67_Hytd*J?gofn))Ft@wdyUd7y;uNOU75(}WrhYerN$6T{!nv%xJ}WY`)M!joYywO1ImT9{eVzhjVrT4bvHbe zM%A|Z39x9gqVpPmM2%7ddSiVuDQUrgs9{~Gl`a}r=~b%&fDw0yXMwwLH`3L7sd43KX^;<30eAT=LiI&=?U;0;rst7X(uxcq_`J; z1DB=BrBM(sO;G~`<1J7#y`FYo5}H3!X3tq zlWiY0W)_$<8_EWHT?Qh{dC2X|d`EDjuboR}siq=GEvRS8TQ;@ph zx0hLNyYm;f)*nh}{}vuAR6V=<-!n6ZFW1F3o78V63~KR&%6 zcA!h54Dv0m1=u#cw|Z|3yj2NYxXRu8i@$$aEjk%Cdt&>g3HU|pBjW#v>5m!%4fr{k z_@a=;tdKbL74u|o)M8+!9a^WOlhY;~@`(Q}f?Ekk#Om{g0py=7y)silW=$%jO6Mx$ zIRd26>SXy!qe$uvb@XaM@Mn`_I@8Q2M=^&jyEp5^Z^6(KP78Tc29!@%xk;!dU+rM= zNQ7nMq!>>&%X1_<7bP$Vq!ESv{OYto!}yT{HG!BX1ac?$gnpVn;sLoGZiOX_*lGFF zu&{CbVnE6hoasyZ!}WO;cue64%&v9~LgY_4q2j;yBlCZo+sQZLDhh0k;?^;Eexf`A z+|7f(wyLFw(H(?UoD@RV2m8A+w!f@I{-hDjF-^X8A^HN*`EV4C8>yQIz zB%Fp*Uj1ce4N*8ihb_w4H(S0Du}}7EKW4id+i2!nb!{aHZ=9zRPWxclmpPZQTB%Wc zsUWRY?!lKtbBEgl`BK zds6>Zv6%u4S~vaN@Nf6H7qf};nvmcaeE!Wl1x|pc|6$9cM6DaYNwYR#=ebv@tBk*T zMv%C#3Um5Kc!u)h6ot`DnLBCp++jA!E1SI8$1i=8c);Dgw&_J;^viA%;>AjV2L6mi z!~Z!YM2O1yK6kwt9-$BaNYCdaN8w4wWl_79vaBW{4Du0{u&Y|VS&U!N=NsqYB<+PJ zOLNl!MYtYE<}x`_HA0`ifC+(VKCj=HvLfWV{I0^%^I+~9ohkscWX;1$b|3jX2QT1{ zax;wBLo?Cft2H5?2}Va@*21NbraCj_wwU2eQoov#6y z!x=biqER}l{>Wlyko}irI9n?3J}{5(JRAtC%&`z6o}e_Xu#e6Ws8F}8W*!JaC!A;L zgepEHY8gw~vMTtEcK6d~Xz^52}p};qpF^23MHmI8HIGJl}SXc=?*fEmF zoK@IXJIsabAI+L6a2Ex-c$kKji%2ZfH9Y>}1;X}22671I=_T6D-gx@N3Gkx z3nfEYV>Ls4&xLl+#A0bV3NPYFkq-?(KHbH!j;3~j%0s+Z^3x|JAmlSZjSR&@bkjhS zN5~M-T85fh$>A;&fZAqt|D~O0`q+E^QhYi3P~tx<)8sHaz472S2XZi3%t`RAd@)}6Mn?@USFebc*GOZL8TzAQ5-eW*}=c=(=qb= z4QY%P;7&`EoRaZ%yM8xNWZhr+;Ml%_kUdJ{B%x$TG7$H`o6Yb^bC%8Z2~ZGZGF4=YWlU|Tr3f&ouHux zl>g+C@%Kp~6^~ARLl+b-o(6@qEt)0%{Y>drwNSAKW~o^N>7Yw9iak*;JlAWJLn8Nt zZNke#x{NZ4K=o$$hUY66H+dnx9zc;cLl%q4fkm(ZmpnWw5;$3h6N6Zhi0K$R zWhr>#MnBoajU1ZVj7go>^OKG#4d;Jge8<Zs?lvb692{qIBZ2jcPtLAozyJ}(@(eDsr@j3?k( z=M$xhWZ0-YQB@Vz2GCP_K?kH>bg7Z@JUihRQAZNMG;w5KRT4sMNR4B!gl{fdM(jQU zE;ogNWZhV$=QV^=rST^~4U;7JQBA@=;*Tu&ZVmpP99w3$x;ud^tPMe){}nYxrGTTq ztk#@|onjx_X`*t6F#Z4VHpC$Mw@7;{jXDGiCI%5u&8deUOP@199i7jdsULL{sI?&% zS%wNfhmV!Mt49-uh<#~9gS;cZJp;RNk_spL?D^N3{IH)oC`5AX>-sjF`?AnxAEORDlZp8C*cb<6ptDwV z#v-WMGRWc7LC{A|GFf|B@z6R(VP*B-&&j%BB+S5o)vyU5!)`|m8i_z~fY_A#@&JBn z5Wqx?D}@4J9N`f5AAZg;j|HHGnqDvY52}>q5lQK+e`WX$+<7x?v$GZa8gNSceAq(` zcm0#VJ)rUk&^^fozta#DTHQ@ZmQ37>$#a4%C@Yl?(&iC?@(gxRKxZN=i|I4i-ZN5wKHO}JG{Adsf z;fD{LoOEkn-tLhmV_-Vie+L|fiCJ2=;ed*FtnvRWAvf5uaLochZn+QK(B6Y5zp(}ip>u^HU1!4 zmV|&Gcu6vV+)>dgvJ}>_q_pYiXVGz};nPTGpe>p*E#aEf;D&hKZgy0nCo<#g2mi51 z`k#o#nFrOLleK)w(KFSNB+F2SezfBV0coY(h-3Ak*2pG5a&taGL@I%8LQ7lN+)}RX z_v@^+L8E_eeb#>E*r_>4dg^3rM8NW`&b|9n(6bilwL`h;9ME{27oV14;vUL%84r&@EL!vm2I-T`?kqGqmqWCE}iBIDOM+T&6bYTabA` z9Xjy!WoCg^W#;jgvm@OkOp|8QgfwW>Chn5n5k9g3l<}_eT1J`YS1z#4iW(g5vK2b zxnSY={f_<2*hzeBm_Q=9c-8miiu?yqgufB+RM>Pu25QB~rAe1y-LmxK#vyYn>|Qa} zx3!$+Qoq?f{ZuRhf97-zGjWE{0#CfU36VDE2;1Tl!Fph-d!1d(0QBGQ3#w^EBKhU) zexR6eioB4_xL!~jU`r7Bdq=vtuU;R~6xIj%_3(OkGb3m`-L2VYSUl4A3H`(#mxs2WGSfFjE2hpJ7-%+ zPgD@ux}bCr>Ca^lb3L(b=#Nk1HqxAF7jvt$km*IaIh&(PJO4WE$=ZqV9XL`mF_O$Y zWzXDzEG~H|BWwxywLS7#fM!tYcb=5%dKNgqXh#T~VjUUaKf{0Y?~>5?n7*?|e)#Vy zK?30fE%~#D^PS--DUD<*kTL*Q{HWUIuBQq=#5r8B=@&mFO%UJb@HRPfu1OcZyeYH^ z)>{3AKFpHJ0&+n?X{1hzxO4i1^9$Sv#Hxc~2f@-VzYcY}v;&ZBg2QW7FcL=( z28BYA9N5Q`w|N7?lF_*8riVZMhM}d<#b89p-4sgem(4fbaeE6JVhjE^uzBp-!#&)U z^><8>bqov^X1-Lp|Bh+dU4m-0k#Ik_U~_)Qd@p)&(%RefLneUAo!fzmn2zW8w6!X~ zw*1!;fGYZ&Y^4eE9AD2~)hK^GV4UC*_EQ$pS4;SL{sigY?OjV4RB>U+S~_Z98$w?Z z!OrMCS^K0Z=Bz<)xl*_;=I7@gwonpk5v$O*CI9Gwz2o74t9ZR%tLyA^AO;SAQDW<$ zDBSxnwe~x|l`4we4{%E*xRuEViHXC08yt(3fvV`X`qPjKbR5rsMf7CsRBe$U6zTb6 z5UuR3#6v&{gbSKd`Xj=$yG%=~KG5;3GC?Ve7j&nSMJO#v>JC)he$}lK1G{;7Tb*Li zvzPPw@C8Od_7%Q`GQtuJS|^`N+Od30yDwm57s!#Ah&)TKATun5lMrZzq1bE(jBg&& zY2VTVTw$LMqY_cay59~GrM@u2LL+$3%EKN}z)dxM=EW-FjLc^uh_^bYpn~bZ-hx6D(7HHNqE@ zzw8^r&D)19^KQkddRoIQtfi{mPo4+yQqxUkoWfex?#CTyvsF+L<3cRoob7krb`e%I zs7Xo)?%sK*cT{OUOeY%4R<0YAYy813tmAdjEk3KL1HRnRYg^)WxZemza5F8B+bvekrV{xWJHjn7VOrZ?6I0unM#9;=q zc_I#}$snH05*#-a5s|6!=FvO-+7C;SW}EC|cUR+ud_-&&Ime8meh-!!f^X$17 zrD$j-Cbg>87=w@V-{gmXBoW5ILdZd011Ued7tDT1|9amQZ$bU}QyEcWKvKr~*IXv> z<*?4qFaab2!d+|v>JqzmOXg?f-^&ff>-z-pW$tEpGo~=+(n7*s2oZExCm-0R9ApAF z5^Ti}*2QQe;4f_TX*eSbI=J5VC{Cgq*6XQ2gL)Gb~ zj3C0;wjYGY`Up_Rr7Kq0r#VepS`l3bHhz>)TA;4nA%R*!>eKlvZRG{m7N+` zQ?um;xaCnA3WEryFrUym8d4 zd4gMaT4=COvY1{9vyb&NC(MN0dM`Zq(09E_&ERGK#z%$e$Ca##moWQ_$wK-Uz|awH zJNv=?r|Scx73TvH2tyj0Tgnri1b(;S9<_dQU1S9w4uOO7_}-uMSmNI=#`YRSXi#1+ zF*Eygov^4lgmcj9Kh8t25F-!q;kmZH@(ivZnLE2o9zZB39S0iwn-Ceq*2z?cWs81^ z0AU=};USfKLAEkXfw{LVxy*+zMAt#toV0n>poZurS26B(TFXivjtktLTySfvH?C|6 z25VZt!L}L@9EpWZWRHk3;WstcW!B%ak)FY4$E_RJgW$G?=JADLRh&CE%JoQ{*B2WJZaVy&{>Q2Lk?|$ZeTG@- zPgy3LMKi>0$1^2^*u!@1JEz4K^i4=MOo9NeT?dx<<_RQ~?&J41F+&c@O3*B?!EL%; zLNy$9(JEsXm){!&-#V545?05UO8bjoxq3tkn}KPM#)?)9?`QkU?c;A#Vu(x}5fmlB z0jLndiLbP^0NTsPh;Df2`$ZTbc4+{I}XQ1JG|6PJaj8$y3Fg4m5ik? z(oD*uQPX^;(UjtA-&3@ko{+37^QoKXNY1=QoPW3D0-E+MdTqiXwvIZF_YXYOz>@9x zQPEFDP75AYmL~Lle9eHOaNdd|qDI50jft~$Z^hh8QX(Ql7PS8$V-6!$M)j*ypauDn*%dl7CRJ)MQa@Z9ar}wKBIt=>eAu71B0)ztc)w z3MIg4WbPK4cztk!G6Cn&Yt;V}2j^)2mU`DFrVwf3!2>@C>+&RMtVvbVW49p+9uo8U z4o=?A6-kQeB)`y21S<}F<3A?N4@nF;bf#nNuc4jF zbCCOCK|1|u^m6DF*aB7kaoy5bLP~<#-5?5GW_NTH1g~lm?BnXJHIa8I3^QZY9Dd_g z$(0JY@TxSs95V8deIuK*33&gir&Ivh2&kc`@V5Das5@Rf0tEZN$4F_wx1r5&Vmj?K zLyR|I`k&q{j{VGPND?y3$#Qh>h`|tZllnRccQgL^eB@-}LPM@{l z9gLdbt^5oPfVpI*TRNGAm7iI8@V|x}s0xUd;xMSJ@ZeFZWY_5U=W4DlhIVWskf#O^ z;!QxvZj4t%8$ORBkBuo0JiDnGv5$4Z4VoD|@-$pxA2pgovcN<13I!|734+o~v3G@d zT}9#Fs}cSo-$SaP=F2;oj@F4W_~xBFnJ{y#=gq@4rgjs&0NwTlw?0N3#4+_m$=(!2 z$WQzY^D$rn6LQmZbrZmTspIZ=sC7`ev+U^DNI2(Ottu7$Lma4-7FoF~vBf+Tj4JQb zvgfgCz+J+4ES#708)kOUjsq#dze`gZ1d}Qulj8Fn58ObWLAgyIdacCym6j*;z0ags zRnY~Y{PY_|go#K5OS%W3KVQ08AH>5YNodqytuQ)Cc z3>aT|0HP=QDBG4WtJ;5(ka+$F2a(OFcgcMTv@Id&)uLbM>UDw71vtbsAGFDW8sx5e4 zwLzC)Zk@NiRGam-O`FXygOv^w!&c5K{^A1rjZ+R~RHf@tHf9|2?Dm3>IX^gF+9(b2 zYR{>=M2qB2CO7O+ke^PSThx_S%tYppx{(15f*&@`tv7YD6pdZ=qp||p%?sDi{gxWM z34-%q9S#%2mK7)ueC-D94x`;e2JAiWm9pIa2;a_oU7foW|Gl%(f6v#_J8@h2Xl{m{ z;c`5hdSdQLdun^r-|h|4xOe+z({vGN0z*tu*Njh34{D^40)SWH?Q}-@Up^R+1}?M9 z+AsHuKHIC%PyAEOGuPb#M}cnvi1{WD8m~e6xIPbL^PN*|?57<1#PK5^+w+sW;y#IXOEG$OE<_fXUV{07%;(dr8qmjw?LL&S=WV#y)nuntB4TH z$2!I}P6b&N2^!Jeul*{uN(+RNp7QZ-WGh%aLqD{&J$rq6tpae9fGhku$8@fo>-ZAw z30x>&;3zL+ToD(NgSaQem)^N%UpCokz>XUB+-Ax{uqV)|7y?kC^DT_F9SRWU#9IK0 z1MHO`VRmQ|P>Q1>z`eneQ}Da~>C7`l@Dl-_PsSK+#lkUIeFa+IJ@vA`Tt*>#KUJ}V z|JJT+t-WF1&HubZ5S{RsUiM1w4DJuVFkth2yPdvVqy?UDqP1DG&V6|JJ>V`LGd;O+ zi%F;{6Haj6#28blZA|rAh;22VTMu7P>WwINd7{r`nvadji_T_|jrI}g0g@upM^pT6 zRtv&rWMoAjCo?x>1Ks%Wehk2Jo{`vSwt8xif=Bu)nfF*(K;3>?C2NmTUc0`~MGY=# ze88@O&pxhLx4z>M8S0@CA^Z|%LSztW_W^*D0Lsig;IH`0SFwtCW(kf6jNmn%M&Q3l zECVNj9VMK~XEc2^@;}{}H-o&RU?c>^NCQZf*J!2S7_P0!`)EIbYS{gByITq@zgecT zGBMA6`%jZ$`$CPUOZ{2hPZdzcQx$d$Hk1$Yj1`V}HDkzi+p_ z{Plj`m%aP)&e@9&+iq5SR#F59Q;f;|n|hM9nF{Z^~kN1Vvy+n5>np#X=$`4!z=;QniO z9RMXwpPAG>nl=eSE)W?J5RZ0+p+~AXa`529Cz+5t>?hX#9hjEZ(p>i{KVj^gUwds> z$x6@mZr>~UIUA?z5`sRz06xZ)}J0f?FS-%XB_M#lQtq}`eo4K7K zPw_5cwn`Tzl9khbma%m|65Nw2t$3H_iv-CIkE9)4r%?ShrRJ5y%Mm#NR_5`_!$>_L zi(Gm8^GKJ(bNs_BNFeTCs-!9m{kmPM;+DZkqx@KmEhPwIV<#xjlY%l|@`o0^bISh+WD*a| z0LOMHLJQ!HK?x5p=+T%XHoeFfgh(=SgI7ths~hWR?VaHI+aY)U#jPfG?0)EwhMz zUNnZ&fDm8@dqj?XB7l=D`q>H4kW;tJWbhE+-WRm6)bU?0MqB+U?i9SkjN-vzLUkgR z@2C)YDA1y8<3N5YpP$Fi-f}J%H;2PJBYuMXe+24_P#?}F7Th>2qhy=)HPRt%HW^M~ zV#T?BNlo_6dbc538;;eO3r|&Qj${m-1V9UMBt&Hu;Ho7#*xyJQNj%ZPt~h>2xtU1* zr=3duZm0`p28v#(JaDfCag-E*KMs#>uD2;gbzO$yTa3 znD;!V+H2ie3H62z!;+L0f9mBYIIkn0V)>L}I$&eBT+W4lT>dcM?BX;68$z z^BySwGyP{~8r;_EsfTtqN%%X(B2%Qhcd?;3QrTTk*&z%Hx8&-U%bujwM`uHRp0x#h z+vD`wK#y2;PgX**)5gcC9nj~p<5tGaFdPmY1m1FkAowX- zA0}cz;VNNy(~e}z?Q6il?yx=yz>VWcW#1s9em8G2A`5z$*^SQ%vk9<@YjmrlYNO@Z z(dIJcOBp6eS>J6?7{EM+H@{i1NJd7jP@(c4aj=Un6l3tV(AOw=WlfGYy=GhPxIT$b zI%2v>>bbH%899^=SZk5Mj&p3$j~=5RL#=6vuanT8v2OtZV|bR6Utc$^CWhIrv)n?F zj~jw6c^#sBW8HPx=hvC81vMeV~}Pw8G#F3qy=)BY)>BU9ZzpmT@CLo zT=!kzFe%T?kP<`#ZhnvrjhS}49}dOSL-+)Sj)1MK1tZVR(wioa@2$oGx_9!V>$~rI zxz@6nF9^0VgxXkOp329>py~+muD2z0>yger?t}1O`%!MdcG3&;Od65cJPOQYU41%T z+jP03z0l_6H(@@}xVE8?iNy5jL=e&v@F6x4m<9W&0wW-J0P+)Q)cf;4;%4Ce^ds=g z79^A#0C7#>J6VeHcW?Lk28{4bj5GGjrna>1wvsKP_GCPf70L2+3avuHk$dT_Aq4P% z(JJiCCchZq9*RkiM!NyA^p7Yd=GB>(b**&kqfhK5D3I(8uQ=??HJlj8NtuUkuraTM2HE~VGeND# zpY)18LKeWf7XT&4xiN~>jP6P^AF-UJWLiZp;c8Fxu<-hOD%MXAqkBSBSJ}s$)uv1e zlQ@IA!4Zf|Cw*Pa-vUI}j(!=wNq>=%u58JHf3g*yC089vfTIH!5+NUc+@SW7h9%5bO*nNaRt1=N`3TWBI{8V>M10aw*~ z9p~PA$JR2{=R1dMko-(6a!8pZt_T_EMw3f2Zzf?Bb2YdYVGZDUR=?t(A>OM7n|g^Hgl~YsJtczf;)|h2e`uwz!3x$0QQ0sRO}6% z!>gw75F~cHL2zg0b0k=-u`7OB7J99)>8!AVs2EKjYdlx1tO(jZ2>p&|_ki^{-YnzW zt@}Io(p=_pOJ=1eOQ@`%ciuQy4JI^dkh~^J9#pc#)XBMQpy)9Dg(^CdXyhh9aC4WO>FD5uO?OxqPtO z)U_Kblf4QBJD;u+av_5UC2bC$ezpkXjF_g?eJEf~QTI{q$tEM;}W-SouK*pU; z7s2e0z5N{QXCHMv$xexyJOd6srO!H&$YQMhtU0|qox*7NwgaX3NFkU62D$pwx>b4` z0Sq1vc$fnmW{)ck6$MkT63U{*&5cv9awl&xp8oO|E%|PDXLasR`JU&Aj=X<^iD(aE zF9d`EO2th5bioRI^Mf(~K|J z-{SJ-YMfZAg2I(`)h+5yQ^=sItl_|}^RLo-;Y-VS+xgCNm~gdTPOwRGOjS?A>M!}& zW}Rp4x{vt0=o4pW_^keeBJ#_efM^95X9>lMyOg zX^1$tm9)&P#7WA|h{!r8l9e|_$R=ga%yT&R_k8|>@6YGA`*H5aeO<5deEsND5Heu! zzI>G5NpX#rtd};ZQ0vJvUio!joq^6gism#rDi%}($N{#Stdd_Ip>uL5-6}*I81`a! z$s@o98Kx^lJMIE!hhg8oK7xN(rhz4O8^b|`5+50!!`9JnQ1h!ATC6#7!nM~(zWt!p zIMwpRQyKv41uo-R$>*I3uRIfVyDO;>9aF1-KM7Y zV#COq7$r%gL_DfVE_J{Nv8AycEp4?L&c}Bqh{IKVGvNLzEB2n&UBu)-@ra1;EtQJr zIkFf6Me~C&o6qSAUiVR^qRN}1#TXc{62-5)X8CA%b_hP=Oqv- zV1!&tFsC8l$ZD;7^ct;R04nLGw9Yv6J^~Gfz2wOM`Dt4dsYor}M0|kYUEYB$_E%F(B4uwvXVmMv{^-_`0EH2^qbO-JVGj zINx)fSMSOmOG>)eUL+s+`H{xB=0bVAM?dYW&J-ll$LTmNyzgj-y6XppZ0$vDDN@6& z;Tb3*v%P1Uk7nX?r7lO7X55({;)%nQkJCy}ee?T|PegD~BG*);+}kQM*pq6PioT!l zi=kn8j$BdS%0BUYah9sf%InZ*>hzhtP+u6C$>6Bmj&zE6q3-I^rtTTS!d+kL{r3TF zwc@0$)vBgrm5xkcPySu$h6KF`2`5*VjII>*L*n;J)`7@fdm+~jNa5p?1O2&-gSg*r z{-h6mATEIJQ6DhD6%$|5m4N_kk;RPvHsjz@hL>`oXhkq9ARWL;fOFylvi}1@B*!Yf zpy(A)#J3=tP+%Nj1Xib|C^%C|Y(@LfxnEA-SgH7d?~!MF*A#w^>&f1hxQD87qc7N* z`XVxUF`=wUj}5KoaD9?j**6Mzll)11+y_Kk#0+L<6i`lVi!@EoZDbdpdV9VCW-4eJ za+<_c3;-hmaIUM+RzRf=E~93gdkf>);oDLus8dWj7cig3Df;MJ3s)BpYmt z2uPcGU6G|a>|8+QE^8#E%+|~Kyb6#i3(GmwbqVbY*ZN+)Ks}@;19BTYCX?(5G{&|v zY^|P+OO4mLRdo*!>#wj5PK=#Y&T!$z-miIntR^R!X@x3vq0P^r)a<TwX*R{dIlQp?7f<|wn6p~x0Rg)LFfj847!-@PeCHr5ZRL|7Apho*F zH_kPL2vk=YeVEoVg*>hj33NxZPLq<)ieRAlxzyCqrIVz-1b|ET-lfc8fOkqHna(S3%@ zZor7afZB;wImpON)#OuI%Me~6*)g_WtW=49*Xjc>q#21%hMG26Nl?quLNCr3mg*w+ z@sykIrIUL*X?%|7-*(myb#ab8o)8b5xu_L>!Vhe|kybXM$_?1-KL#&A>H}svdxwO%~{W^MG zTDqEW_${*PhS0kk8+D_cQNeGE9q(MN?T(D?&0h;+<=*j#a;p<*t)k7_P;b09^ThP; zh1BQ@rF#-r{z`8>m?2YH#lcj+7mMkQvMyCQSe}3p4+FjiYV3`7DYJ9K6=-q=Qzs{gvcQn9)inBlB99}O^X#cP(pNhKZ;5)1(tRHjs8V%L4o6fV$F z`~#sB3X^fhW=rN~6Uq(Cb85z}NxUjsAdcxXB(NO9z>P z1kKbS*0XT^x%^@{aX7@3T`8f%^v97+q%e#f1B?4c(Bv5rzRtewhH5-xn%P<@DMmwE z7_BLM%a9JaZ~s;wCq3bAA|qVcYcL59u4bQRZH&@-H~;0-@`#1_gh@|F0+3-t)5oSU zEgv3}H4FdfnG|9JGO1b3?w5(N0Par89IcAm7=_vmeH2#&^rt=TY1|Er#ShRjB8UEQ!03N1WGck1DMpq!32L)qKlb)FXD(rJl z_C<8bx1N~9ZXA7zQ^nTNVX(88k6n(gGTQ@ufdD|+?odJQc(dMN*6(;HxzTSS7Sn42 z%hA-mU1WzIJYD~>=hUuD_jC=VMVpI@1wHlNQDjbnZv`}=+q#6jRwakUx3e=DcR97A zDX4_rds9=x-A*ev;oCf8xSVnNL#K}4V*cXe>|XpD@VzakrwEYi-VgQyj#$yDclUC} zm-S>XM@b_r@3d#yo!F>P!L1qn32Q;MuiSprkm)<~ZmCnn!#^K3*O+q5WC8V`7n&ueZZb>}#XXx?P0GW7eI zUKU>GkeA!{P2Gmpq)IRl%ULPWPprbriGT6w>S3a0t?o3{ zZqd20_Cv*KR2Q8FG?i(>=bU7hO{w=dK1es$dd9aL{y8Buhg7&Hft7$ep9Ok=am89V z7|~7#osov8BIokSF>kGj1`I$sd^r^N>G=0`&%2Pw8VzCU%McOs^Tj&Md%<{2S_}vY zJj1CHd!qT0865MvrMOw2$J@31QiXu{KV&jaf0J4x8G?@xZL7c=kb z7qfHwFNWve3W7A0o4`5JYW>SH)0kJU!a_IK{5!x=*SI}$(`L0)j{vEqB5nJV7(`h7 zc{iH*xA=Rn1dNW1`@*jGGezLH&#lLx)0W;Hmt}bZ-%HJ*FEO7bXE{Ve{~Q~ZN?-VD z&`$I6Amz$l=f=Umwkt+l*b|M&(|M~>cKjC~CYa$lz!s7&K7LXLJ!P6>25ew}6vg_0 z>XBVs?zZFuI*;Ey=LUo+N%6o-UU<`0cHH`LwGC#Kn#X5_lg(}*WfJBrZ-{M0oeVWLif7y^_`%+|E+pv?oi6#Q0$VZn|R$=@sa3!g6vC7}!o8!x*lD8YY z!(rwzFaLaS=^R$C!##V3tvD)pBc^IT)pqf5*5w}s+iJtnit?ICW&1tte^t*FbVs?! zJ_)`2A-oYc{=^cN8n?(I4Oun7)PC3Ns>8fYMd2quHgq_=I^dXucGI%08rsypSVn$f zT18+BIaeqOAA$%#AE>MxHkGM8or!A}zp-_N~T$jz&bBYnLDh)t(}D@L&u^9j8% zCqakyt5!OVM@^jUGFKwb!^S;fb2uXtuwoa~#6ODJM3HoXFv$Cv)af2%w~IT9FcxkV zsf1nLK6(OrEGHyo#30~23wN1c#Kiv)Ej6C-(aW=)EveCEpqz0TdQ=9*YvT2|0ksV} z@0jYD;d-1PrBN~f9ESrxVR$a;jr21dbJ^ow9J?1C7a+;NmM8}}v+_Q_gV+>_*eJB1 zWom30dor0Xn1Zwq0)KM{FFhsEXvZY2S`u`k-F5pPfI|G>Z*J76(@{YulbuPx3 z;hSaZT;#dR9GDZ_t%qy*|C?Oh{!(ZGg+EhxB-7S)%>PZ3>L55eV4TyMejw-&qdXE; z0Ig`p7;p@uimffd)ISMy=Qtx}Q_B!8yp);>F<2jSzjqR<^Tk@P+{pkXO*L@Z@2 z?oQS2&wtvA*s)t}TeYXIFXx`?bt$gmxYCSJsFdS4EzeL0AT=2W4 zvF2{Lwq4dLYB2DA$F9~c2dka`uN?)d8nT`^GfNQ-O@(9O6l)63fFBmpXX*e{(yS{2 zdL+m-0PZY>#Fnr`3|rkCzs>H@QL9one_hvmifdiJHZJ3;s(KbDpmwAj8$Ex|GlW+Z zjf*1^75!m3@Z%&C9@NPjIUv#~3JGKiR*UDL9)o|&?ImXpL72pJXW2QL?Zf+gt%$#V zgAdem|6yYPj`OAH1K~t{3~D@l+edyuRD^n2=8EKURG%^!JTie#iImO>9KJ9CtW$A` z$+3SQPpZdVe&aSaX?==pJAuPM>?wI4`;g5`+45AkCkr%@XmvBP?iu}n2f&2OciIi9 z1XiI(%Lk`T)w(9&?H5uc^c*8rBC#ehuvl9F_~9k*0BOJD218!+ z0bzZ*rYLu=rZ`SVN^H0t#wzT6@7_q^Bz!do78b^q();ZUe+M7 zzxKh*`*@|1Es@FJzh@`^us*{-FRRNcNna|lzQyuUiTFFb5DP6Dim2bTcexMc&HN`r zH=5f=ykpE(Q*fmHpeo{hTPhWFaS?l2Ush5Q>42=)#W}p`=EHaLzx= zw|~PZphwq>16mfMD|HV0k^+JAd!_%b}5jf{}1VsE&_{)1a zeCVI!dQ38}mm#t9f{-vw?()GU^_w7oEq{7*g4OPb{JZKR&*I67-YDew{={6Do?e9= z&@cj+k2yX71&c^F#0bOog@=&#!Z~XCj(BUG9TvlnaQ5{6q$|#|1*?(fe%CrC^1h${ zbe$ehJN0}N`#hr5+n>CzEA)Yu@td&>i$=~aLcSQvEGv*K%vIPm*4!Co%l@9yk zGHia@j|7OzmX)f`F(ke12(w>3F5!x<=QAp|dS%a)8Zg>$VZS;obsZrKm;z-&K!r>g zE%wy_ok>9QV^>r?)f zduWffbOYZfU`6}Q(`R=Mo!@AeGxneRP_ABC?fqgZFnE+Zv5}i6^6Z+{YQzAMG}nB= zv8yXTBctK*e;-~~3A0qleNJ!I%+~u^XXALBHd^RY_RJr`AMgPdEPa`Pq!?)Z#pM-BJ^SPjVAk0|vQ?ghuN(MgNQ;Qgyq$=XgUp-?(b|~RjN@QI#DKl1gewx>vn9(-fgC7x==0w^> z81A>~`buL8SMFA3w#eiVT8s32?aFpE@bJxQWrisxv}x+dQd?0m(9{Mq-4)2Wkg^V^ zM%!= zoJ3`*%;vxVc_?*|-xSJzgf@w-<|_a9^m7brTsH(GlWGSE#$2T`*XLs-?iUZ~o;k+J zUc1TULMxGwg7%W#u0I+(fJ8^OoUWA4;-9))1(p1KuxsDAVEa!wWnvXE3FH?t=kY}e z9qR9oew)dB?p8)40*%>6ri>BPNR1?b>lS9*pvP}$O$m|rYKZ*1 zRGQUbcP*vJH>B$ocTON||4he>b`?B{YVuDTU)+B6K}RcqyBMhH8(i8Ok5UD+V2rL$ zK0Vt#FMu2hQ63c7{IS!bl9X zW#m-^Y^f0ldDu)fHS&dKX!_I*sItR0*0{eIOho_3l4*?<{|Omg1x-$WZ*@bsgFg>5 zfQ`Yq&g<&#sHw4E(6AsdfdIIGt3Bf!w9?ghiQ}6{+sQw@QH2XJPHfdtGbMw5n{j?X zP&MY62-Z>ZT~(*QhFRbxg4LEl@sAAI-?^ZwY(5hWPYzp+p)9%nyoW10%sQE1KFg6b z*!7#$@}&E4roQ{xg)XRuy9D~N_0~sJs~`=wwX>C)2WmM<2!4g=#4w3tH;LoXv*@Pt zV9fXzHq@v2vzK8|FWFlX;{YH8fTqwyS77d@BpR5DC{~3k;d8RGfERJO#xtA?%ViHd zMPbyzMu+?naZg=;rTJlqKNb=dRGCg0-I_de#FnU;{+rJJ1Sy7x6A6MX%Nf&e7yEef z!*?bRq9~V^HmFpF@bZ4Rte+fz`h7|H*M_QqBssgt4Bv+=Pyfp~QIIZ9BXcYlch_v_ znm$dqi^8`870PM$=-I3_W&cu_ys-mR*RfV@X9K8nN-X$sDRvzQeAg%6nUP6G|7_&$S| zIE!531oSkY5?N|sCJvw&-?k*RF4_OL{c8s0w0@9aHQQeG!4BuT!%5MNptjeKxL{J% zGv7US)yw4=U&n@Z^ipf%YoX4nk*{FT@$D04*b#f`%+y%EAV9>0r|2@;#^(D7U`xpy zXASLQG9oJG___>igGU}X9D$w&H;s06%V38nZ)-=CXhry$b)vaY&YFVIz6C@w=7g<3VtARBv(Y>M!LP2){e^p$RWZcO^z|uG2u+t;ZlSqf{Vwm^@)EiO zvUW_`bH-j}^0km1NpSU`*#P>&EP$XHdxG^-bz)e8b^;6tV5A>-f7KgA!3EwLIF#!v+JcIJPLeA|@J%HJ(_Ufl2H`7m*`PzMt@U zvFO&YO|G+i+mw|g{~8uQlHHsK0%AyIO;J4JYx(VCJ-fYx<$I8R6x#Cz_fiTv{r7M( z`YRGe$?${Zwf@k};4J1Aqakf<$XFDHRg&Gye3&vj{{{E!A3+~lGUrfKI^(67P1JL2#ZGV()EIRMm8C%1pZ&}h;2_zRwi|j3x2{?H=CL_dN4&eIay43 zBEow2jKV)7V?iv7!{9}dC^dlq~3 z$^S-uWBLKJwc|!htt!|9?%t+ugKANc*5NS5KQ9rhWH4FFmgJ2%A+e_o{DTcUxDg@)VSgm-+c z1XY3`3H!fZO>w1qJ=nKUEP9y&@g4CAPe#*nw>MDtHquXiTTn^7qUg`i#iPBT;P0sB`Lk93#{=s1%J>GaV<+{w4bUK8Ehk4=#Iw-btp79;f z92A9QY4}O}eN!SjTh~7pO7ZymwuRNt9eb?%YLiAEqvov^X9UcQp>9Rf*L(=Wnqg6^ zG`ArxX|eLMuP<_>)9Kble?O#q@5qs>$i)&Q+3;q{HciwR8%bc=?q3hYn$sdrt$z{Y z&>xDit*2L7lw!toHrEcemOV$a`>nJNY%4OI0u350cB&}XH&QRJ-T7!X(13N7?>y`y zq@0;QG=sGF?-XbOikAPbzSLNJbZ6+IlloQBrpl&~m(}y1hZdId8CjP4rWue{wL|i$ocbYYgCH)2J2pb;fC<8eUKe6qKdGR-)E7#YMrIdjhmK zs}73uhD;YYSYQc`pp#u6cxcKt6r6$HHu57aX#UqTQ*yGo_S8Zc zevP3ouEBtI%O~#WJyHD@2T15snBOU7P>DOxTsuuk;6T0VcY#UhMuz$|&4aoYMlaVG zIAEt=8lM{ih*>d{k}qR)1NPANS~Lj>qu6bcz0dZMk_t~ZlpF7}W33T}>R1f0$?68& zU<6u4rVl?RpG#obhURdL{VO84?GJXh*IW5vI$H0yYo!t>rgl)t3oK%eADegNd8k2u zXCe#xYNTqIvM*f2fMEmVrA{wNV5Jb&ACXKceEI;R;|8xDltQzdgaGV;%+ghMh#;|u z?R~d~2A#4KPx7{R(!1tBW^5g=^*)d}Z2qD^yJmCH=t*tWYhY>I;?Ht)RmhFk#ri?q zdbTkv;}zzg`wRQeH)Yzx{s$u$R1du9?6;1Rw~cy~%rsiCO+MIKPc%4!6B6E%rqmtOEti+xJ5}?4*=^2xy(#EbowgGQ zS5;&{R$cuPki4Td>A$0e3RgZH|Bu2SC2rugLiN6gs(#&mE>A;Slt`*>9 z@{evqV++}8Hp6FCNTYq>=GQ-z*Q;BcBue4jA_4XV8_x-Rh7Y~sY5r$OuxuVA4F@A2 znq2nL0R~g3kxC_5geB}t0S~D7mxEwynkF%BkmZP4Nd_QkoIB;n5Cf#cfpm|sNY=m; zu_1!eubXKv``-90t2&jKNghPezjOa- z5Z%b16oHvx-|M}a7mj{aJ%1iCOVgdrB`;CDl~99^?my`T>^W+lO{ui2Gi*Me~3KK@Lo-kI(dq~ltD7% zVG?Ut6h^{*6ux}v6KBn6s092XMu@0$CGJF*9Wbn|A3%q?jndXw;yr6vNxj2w%^M9M`URKhP3#s2YOuWD_l7J9H<8`48!zZwS2BNg7GIg2*|Z_G{s$j|lS47f-!7lNrUKedGiIk9 zm(RSkfuT(S)KnpU@BxrEZG;Ghq2^txy-Kr&n1)ImW_O<7$>U9VS2f+m26v>ty>Gi( zfHJ89P(!{bP;I~aFws7e>FB-;#-3(xxVtcpk#x||d?DQ{^!PCf>xq@|qDwc7OZr$Cz)4{$O6gySk;`OnA? zXu@o9oL2XZr?vkVW2_MMHzwvaDdqOtH%#$s--T}>B`NcFB_pA=in4B|!^G~}lag}q z_6urV-CWt#?LBlpyXD`uTQ9qdd7NO?U-kka$^CPcX0mdk%-oH{T1E(Z--08YPgyJL2I+K>|O^Z67Z1n-kP7N zIs>Ub78*(%NC^T0Q0Egb(@S&_9y>g0>PYcpM!k;zaq7bU`+Z*hMU|`6=esFJUDVx} zO@pG^sy(Vh`j;l?KVEVT5o+=eZs$*_H5v_}r`a1NyEs$}M^zxtI=`#UyAw2E{=ssv zYRyQ1sf_O+;Ki@-_?4=oA^jqkGu1rXfdT>+Ut&vGXC{wVHg4A2U%BD<-s!;im_>Nh zRvuYb^B^noQcAZ`q`MQ%xYDft{WEPsFJV&eAe9s489F(jGZBkpBY(-Li5CLWVYP8e zXgaH6W-J4(AP>UWKY$cH5U@;oGCG;pUqb(Ab?pcgn|lE~(2@KEunj%P4Y{{9U315* z_XU3Uj{i)dmV`W>ag18|jOVSFWOZzm zo?KxfMonTaVyz@LeLvdr+U0Eb-IEYY1$wvyZhjB6he&49?>$2V|9n+pJ4JdN|G`s*} z6|h+q`3%wJQ}d4ioe98u!t)=Ue+S{&oG?Ws9hM4!<-B<%wJ$m@*!=Vqr#(f&z0S^v z*zRA%9+W#t&za&RXxgV9OAss4{`ZyyA@L00!-Ug6`hdXqi625GsH2oQ$oJ%zERFtq z+NtV4r?1Wf+g|PZ)<9V5?2wO);J@52I7$ zb+5FY-}G8$@~v|+47Zl_k8-F1N(r(3qMUl#Vg>?()vS&7x|%4qlj$uveZyOBQRR}9 zq1YVj#_rm|Ayhvz)-tTTdc8ol#i=WxAv_>{OA9ldCq388S!2ex%LKP@U&iVS8BbbEBr_T8-AR(2_)(8*y8(EJ5A(a}?I) z{E1+1*14|l{G&^`KLQDbqt%GQ+1rZ1*c-T45k2TM(#rrCGZ8UZEU-sC;x-t2vC@N- z1DTtO_Y7VQ0oPud&WS8GPTIg~;$(LuqF5`is2A$N2gzjfCzP6nT$ zx060wD@wfM7*acDJ){P8n*VHMvCw`AaL!nmN%=b$d4)dHb2*p72181)1~!wep})#Ta9|1 zZhj&zUU<)dk@da&Kca{;3=YHEReQ_e)q1zw;2x|T$(wO+qJ-A{JiT$6h|hZ|r&k8j z*Jy5R2%3;)vWeL`f+2e@-#|Lmy9D5u+w?IzwI}z;I+?4d!;^X0NLtxJiDlCwKgO;af%b;qVAZN4}Kt>-WF@at%a2~gP?($KRg!iRu z%p4S_Z*XihWI%$@47~J!H)*i$0=N!kNUwuG@v@FO%uK1Yo|`3a_)r@PnqwaJARU&hHrMNV_A2@+g&> z?&`upE-V8A)${sGjML)hPsO(B{H9;?6AFm;1^IcJ59N#6yhP2&X+;*2_%7dJfFhOBTR20$T|+3@-FAMv+{QfkYSf^nv8l5dlVzcLtQZ4e9-=Y2*rFEx*2 zH#LO~xxetOlQ6F}a3f|q@yE$62eXKRMJKpHF2H~m8&A{LY+Y9voGgi%-c&x&4N|G0 zvLWC{@@F^zhpe{WSzwMlRhMaGb{Tt?kGAXuTZ&`wJO`yDdAjspivlA>qW5*TDW1Fj zo*^9`91E{$$%f+uKaJZA`U1X`h6`m&WF9Dly(tCJ(XL zwm4$|c!>>wIsg8~%s`s0>h@vd2%p3Z5JY09{LGG1GN32+AGqNR;;>X0r7-OdFTZon z9`u?mj&g&96K97NF;m%VnP*0n?@pWdWy!0))x8m2wwnN^WAKRC%si>dk9wKNd=-G} z{`Lbk7^%Vnl&usM;=f9JOIbL6E9tb79K~)xJ6KbPsknd+hB4-*VhY9K(G%?kQlv^9 zM}T5m@!6Ma;nm-JQ|D^t3-?swNppa@cl_~E&m=-*sv@Hq0Eq6FqiEMEMt6sei z=w)VY+KH@bQ@txMThuV&`mk~|w#X>gtM-m_O}vr%ra$=79PfPSveACs;hb}@(k9kM zQNGAKx%FFC*5zTrb?%kH{A7ZJq%k|j85lD9tQ|@NVlfEG*U9MS?aFba z_j%ZVk}rpmq?=CnWRFtP6r(;lo=F52sOw?yAd>K{2aw}B&(aHDUp7FO`aWC+^q2wi z=-bWPL$3=cDJ7?O{uaH2hmkHA^1Ao;9*N$Tzw2(WRUP(Oq=%>Uz^gDZ?rzTA%O=k+ z?C^Mec;|nr0moEumNse62QwV~E}*D~zB|Hp$PuP6xrC8xYz}anzq$a$?uQ*Uv0;e} zn@IYZR->zVtebjZr3jB871q(hVHiuY>8fr30C0o${~G7MtAF--ODP=+zQ%>&iyZgw(0$}!54XzlF zr4pvj2uO6JTCM82IInsb7g(nT=_g__933zhx^xTAAZ0$iW<$j7Y61N_HepLqGb7)% z-(8fJfWIa_25-h5%WAv@1{6yFyJ?KIT3_#9F^+RbZJj2>fw2(7G(n6Vvc9P0$Au?s z4Spv-wm0FPZJ1o~oP?k&cO2D5-2p~Z{ELLZBr1(di+k+as^6_a?U{)N}>&4U2ss#<(7`<3Hl3(qHHC`_k!QV2rxf?omd+SAGq0gms|C_xM8S7+9 z=%;|V!i#yA=HH!+d60DJ@DS?$p4)-OrB??_&oW4pU2?#>pAq+cNS7612ywum=Q2Si zXbe42?+BOx3G7fVyO+Aj?AC089+g1cd51s9GtQkkc`8%E`gEh}8$k^uNDv8F2Cz&V z_-jlJ9O+g%NbmvgX}60+`GDKIgf*>!79y-bY~>F7^;-I^lCBG~_yc9wxH+{YZLP>l z4aF=~f*H@THD z-Ije%$Lv+=68JdZ+jAYQR8ki*b~E7dWeta{S8%|t#_&0vmd0mo@38D$op%rZyHzn| zcZ>d3C9F{|pcvekdI07hsz2nMI{tLo&(QYINh6zJ`aeC(`x!pGZ^xzLGMDn@x*xw< zDCujnHMn;5UYG;TxUw!2mc#1!3JH=uJXsU54JVdzY$R%8jR9UpY!A859v0dJ2MTN* zKy6?r)-aYIo1OWzWh#jY5L?osM}Fq&fny~hTW+9L_#q(n6R`ssn1gU@-lHgp;0p^w z0KoAT;AzuF^qC(lXcX)={Zb#iW{<-$ryBF>?tj@=UUNQRAg%$+TqO%7i5IGP-u{C% z=qYMTAr4EBEx~-Y;zN^hOHPb~4YapnroP&&Gck9CLWPbf;tJafJbRy)eLg{oVj^V!=`YhA zi0%yoV1{5?6_DL8oB+J~A5Q<}pK8w&>(!NnD{LqA0meWo6R^{kBnk?+BT*lKCNaFk zEu82Uyusxucs#6j3zYYGY|}OLANuk&SsCYdD0@*8N1<{pFX&RunQb$xLLqECe8c|A zip)MsaGtNeL4{bT+Kn$26PE8 z9YoJdY%TmdDVzQ;tn&eg?4eVcj}Ds%U4t~8krA;Kz)!ud1T-+hfHj3l8*s)aGkm9= zQvkZPoRz2$R}_Fp;IjbbF5yu(I4}X6e3VZZMf$*+zV70JkU65;)!A#7`MY-NSm}qb z-G3@U-z#7NJaCjWgxanyJ0a+=tefy*IblD12}~A0)`al-nFoc>(Wp3e*!06xj(rw= z{pNNlFT%q?dNzQ~tM|d?YqbdACo}B44pL%jdk&mJ6i3|2vxjx27HOsW{e7KZWs!tJd}j(k+0HU zd?Uz<0#sLU&#C~G!6GIZ0KJ^#0wnORVwv%rq;5UJ2#P3wX8)Xfrg(X_n8|9Fv-{N5 zz-v|-di|}((p@)lN(_&lS3F!aPJcC+J5{aq7ZPw>Eel?&(i*?jsei#=AgLIIxeI$a zK#YU%Lg3{S*3`#XG1l=@Cbl63GY|Tv1-qD)!(3UQ=Qzv$q-Z~E0q2@Z{3=Ue8a2O@ zbb5Vl@N`9l^aoNXm?ewd+kK_FZ1zIEJE8rLugP2c`0M5c92<-p6f!U2u3V1=bA&~e zlNBH34~vxD`xGJfYp_{Jv8_$%q1F?j=iTLOwmZ(x%OxhaUJ2B*kz>EzkM~(5$=W9K z{*^j-@OVn{=M&D~tSy%>8hlHtc4PoERzy@#>EXa!@dT3O4+ru+vwQw&<&z?dSg1(< zZHU%{n(rWf1f1oGna+R~pGsxpU@f197nTmHL4xlzQ-lz4XksTd>6+>tn5+ONBMV4z z+qzbO{Sl^c9EN5K`~3pm6RvQahV0cXr*GwqgCiZledT^dp!izwl_!*|g5!>_X-@Fp zW*ms`o3;a3nbN3^Mza- zuM7+J^_`Ds5!WSCFc*vPnwx#Z0KQ2Zfix-(0&53F@LW_n!r*D{eO)3o2d2$^%VHg_bAZHHZ6k2tkW0 zgw!#BkbO;w2B3+q28bZR`!e8sFl%Fr{grxgzSJDG zR$+FbS&!Ch2OZ9u4CDBReu1OlUBvn@){~W_H;pMxe<4Nwc_uWxv{Drta2s6mw4yZN z+HkX5A3QBQg-(164@yV4V>4Zw?6(Wz)UT>`+V1H8H>V;kt>AE)ns+v9H7TV_OIE^U zb>uHuU-Ccu^R^v79%;Qt%pL%uYwYx+(Iv>AnP0c|+9GOexWEcHIBPf5~ z^q9SkSxP4B%0QXb)3n#6On@H@r49@M*lKFGY5RKr*OOG`R&6YlN&^uNKS!z(`-e=K z@%t13NSB84oD)D0(~l_GS`Sbp4)yWkm;oOR1Or@6I}wq*awZl$n2Q=Wmb8X*YN56{ zlK|VH6s6hQ>zX45F?zm~J*{3C2#T=7!m+gD7~9&f_ly5b_<&yU@-qjRp{C~( zfS2a)EyKRhK{tK8u`d&W^?jd2qv&qT!2^jQ17WvjRub-_aQyX%oQ>j1Razr}<~S62 zYp#lQxKnoj0f{vpx+ZqC#0NN&Shb<1306zWYdF|f;Up z*%hDv4EDJ_<(O8_a|JeleFY)nGKhRtrX*lgoIyC*{Y{1sw@DLUkYP_uSl{7`TNYe~ zBlI!a_HvvGkWuE~Jnyn} zWBdl~-kG0kx4U6@?vGb`H?$rRJ?HZQ9=9E2nM za#3XjwQKB#W4=paQi17a_;5aZJT$ae7Nl>wEcq>VvlIt)rmQ!=l$ky+WS5q51=DS(|M^ z*2XfAE5lv>z=Gt(Z4c~vj^=Nq8+iD?e z(aJvV1&|hnf+3P1ZtRGh4H=0(e?@i@Nw5+gxl-CIa7a_qhPR}UPU+)H+~4ieI~SB#pa zq@bvpKyp4jpL6re-4~gU0BfTClpqvNLK*~lcOYn!W^m|iAGl7%hIWhQmXK(v`oiB| z6Y@QdOWw4sMBBtj$ctf9D&R5J_|te}t=PXMQ@0?KMk(uV)YfrEaNz!6%VHPQ_KRGK zP}%%#LLjQWJ%g9lk({&^D zC3z68l4&s&(#A)RXE9xG{es(R;|KYPBA6{lLG2EmU|$GV!HOe&61tOtGYV1gCTgP4 z?u#%mQyAceEw~fx?Y%pAbhDNd@IsTCJfRO-I89N zqof?TtV3C0{>PYmyi4v;LKX<*?8Yi-{NeIaWKo@af1Tq%=OJ3@!vnu7K2s{LixFeg zhmpf9>Jrk6YucFlBUITcXDx*L4aeG@&zjt45mg*c+o%iQhl>hc83B*cj3O1Lun3e>N_F8}w)!1^(($Y} zXmQPuH3AFM=Q_;q9ah#GYKnjKj^UH{tkrdU|0sfl4&)rHN07$<2JaT)?D+!c`wJ51 z&MUAgB;sfo+;z}ozK0I}o)_NoSXvop-Z)=}Ax%LxATC1Fo+X#}j&QB}6YJD6f@dj- zFj|aBN%Bp^F)l++Yxd}VA%vU_v9z*Z?hEu)Y2QZWpNXTJOm8ZtqzQKcNrNdEx~VIw zfe10M=Has)Y8Z|ds~80WwS$c|gymYU^xP~E>WRtX3FUn6<@v1no4n7fGqwn03j7)hDs2xFKpCQ9OdHc(EaW?enJ zElRJW-2W48Es1*$6fcvl{3J;KO46+PHhi2WG7g_V<>_JKzuL{CCKOi+<6181-sJ3i z9>i|t6up=US-zNd(?Ej!_w)Emr;2NiE#HD8f4b1UyZ1%k#2f9{C^I@Ea1LkZ{AM!y z&qIydinz5#%c%*UH#onlw7lViYcG(a;mguZhJL*#c*g&OOq&`%y?oa?2Pw*kRYBpp zTLnAkD%X8Tn8a$%w+IqMQ_B}5+B5a_fE9{9H+WDAlk)L?l@HJBE^aD1yT&&?YE33I zCt;mn{a7kfTTq>^GiIc;7`6J}HUc%A+J=WHpF|0nU_L5u`SO$MF%OwnLkWJ<%L^nG z1#UlPb^DEfN}!a>+%PBa#|dd~_kD#XNf5c5Mf$ndVRPpq&l2U4c&HrgzqHqZbyScl z4@iQHNFmq*2^+z?W!I*LHd$Z3Mh9UDg%=2Mp=95Cw2)vz@8PNAAR zw;vK(NmtQP5ux1>&#*?E|3ex%w5!v6FvXaYR%tCYotuIX+K6%ZF(6{_CoRh+TOhRK z7D9yJ1yvp-8~XFNuFposUt`Cl=oi4XB?)#++i#T+;qkcD!~v1%wqkBL#*A zXIY!!6b@&Q!o!Z>e61cfbEw&+cX?O-L2-MVH%@{>c3raEEkx-Vo>G+x7y7B7m`zI4 zlDxaf9hcP|`>mWBt4fD=`#$9h`&;}7whq2+=T>cbRnz&}?s|NY^kwxN)wH`~?@j7l zoen$Bp1VDvQogLK`|rT-)zLC8f}xa$HO`|BoQxKevyRpRm?2^P)thJWe7?B0Ke)G* z;6<#)<#EMuWB{6)2o#Z+)RU)ParpM}!;T8Bo+XD;42neM$?=DZ1?9M3xT(0W*;fc2 z?hs4`+PaNo+o9xJ1Hjpwj^OA2`^|4(dwVG=gWGwb#5^Jiv+K{1vn)|GZFyFAsEVAP`4j@`_z~p*}>D{|f!0{O}-Y$4| z1mPh3Uw&roRRr~+90jT}U1jcMX<2Goi1lO|zw$|T^t4iV;QrBKuyIi@%S z5QP+w;EXegW2y)p42JSj)j+|P(>%0*6{ZKMFTSdk4h zp^MaeD)S5YhV#T@CMP}aXr#h?WEonbTt20vTH4O}yPXYF2W-o!5*pc+oJW*(t@D;E z&r{n;b&)CqTCyjP>B36!>~E9>R^3QB`#D>G%`xqc?iYNaj?@kGsG-~s!&37aeWRhk z47;Fj?u(H(eT)MhPsko?nnhYLxDQHdqb>esk1n0JcmCjuFF8qMoqvH+VzrZbR7Fs#K?{v}kzYkvd z)6o|ol@tVUhdy<+?*U{CsNwUS15l_tuFJGe@DHroa602ZguZdJ*Lpa@CRChH#Scl`Fu$yjDB0woESQygkOCi(^}f5;uqT zMRv@Bvn7nIO;yY{fwtG@j38D(d=N)q+~h!E-Sn?wKEM&@AWhu-4~MqwRO<2q}nI z!@Zt<`e8n^Bt$9~Je4tlPvjiU=M0B&lxQJi)^f1R{A#m{M=7f1hz?NVZZU9fMttBi zI5PAkOtxslE{np;;Hg;q8MFN?$Nt}@^Dk+{zP)9bX3f^SYUE>NRKlWhhxeh0g7l8- zziiI%`N|po7~Q8gFJy&7;=k;Dt1X3K8aMFID7Kh?J1 zOeTe)hQs^Qe{-%qmt#1Uu`>tLM9=NTY|A>GIG=IeAE&hG*O=yvrR_lt?}I9RkIx7s z;F&{f@0V6r79I_K&VBpuMRBR@`FDUWHM9OWHL9Dee)=aKsp5hV_QRZ0ZM;zrF;w#u zau_y8FO@P9N1L=Nyc~UNKeX0HwC2o;x7~C3o-Z?B{PRXv7qWBa(l-yGtk;2MO8d*B zkNQq18_u8YUft*Otp2W?->Bc#YRCKaqA}Kwlfu;%&mLWQ5DrL+4BiWvP)VS$Iu%BF zgdmDioOcX&tZ_AJGY2H?IDKE9@3wQ(~jYTGs#IiMRZc&{o z7;uTiePFry$8fFZ@@@@}-)@0-t4PZ{>wfMa0E!%qX5cHg=Snk($c?fAN+6mxB@tPD zo0a(N7{;H|FH3tD4Ar3NIE45>k3aa}R%v#I7%Ze_r_@}BjePI2s*0RpUoP8_%GP*< zwt2Y`iO3{)^BUxr{C;IexRB4&&*qX3M2Q>}yOf$dy z>(Qcmw8%PaIq^%*DsOIB0KBH$14g$nPfZ#zX7ZTZ58{RGRv-2N=Q=xmc6Ft+o&BrW zgtZr6X7A{t)Kew9C?1qqUFq;)#|=fEwZ^&fhWIj}W8pd@zK_0#?8%awTy6+4F-r?H zQcT&m7B0fS=t8^fXhQ$^=MK}{_r;Xq&2E#KdxkT)RbdYcgh|~8Os|9$KYjW}=as4~ zzERrfW%v}Ms}TR!xb?Z)jeC#P>3^PuBW>Y#IN&+!!>t5J(&pOHc~L_?z?;a)%c|hn zYCX1C*TLT3is%;shs!F8ygCd21};G;73?p^1f#FWX3VI}^k- zuTs;oV0v?hb=(h%E+k4lVu+DuUrZ-TzolL|f-yE~3PDg5!%GE*D*f zYPK)a)C6qNJ6Dp;3{Jc!GF6o^i%}1hGCFx|vC~W!G_vKxs|{wvR9pU<%Oa=hDOOeW%eik@auCN_l=L3PZ7 zV|O2lQCfzFs=D;lHhIQkm6*cuSDoG&^1~#a$|B_;s9$!@!{8s@;Y<~R5sY2YXCLzD zmNcw0>^H5m8gFkunZs^&j!n%zFG|{Z>85q%+fm!`Om@_OnN@x`z2 z9)EQWlb=oRNQwr_3#^bC)0Lhll*gv2cRx)-Q+>i72#POgqs5qAs+l+avQV^t zq_1|sPVSO(jck3eNY&bGHYO>r=Ei_@T=x8P@zIzIG{2Sb^wY7<<@72jysE}G?Y)1o zet=J(okpkAzk3ra+3z|ZgmvD{8#0NCUeA&xQz#2F-0|r53=t*3+b%XH1T=u;M)Q5q zLFi|hPy^DnbD>Z9^WE6vs|9~!BLc4W@6Evy8{xidID#u^nXRzmviu@tf=mA3GvQ4h28W6MeMXw?{YUw+J)F2s_oYtlMmU~;|*WF$$#N9{09^gn9U#+ zg9zMPYpi|fx-D;kd0**pX@!g)icm(R3lX~5=eF8RIx!NL^cwmHv9@=v`R=Z)QY27i zGv+ZHTh2n;VzPTzC@XqL8D>%Id%3R>=@+P`-wR&;+6lB#{TRzvU7WK*bi<;JJvwBI zUEuia7LB6%D$Zu>M1OHECmE(>V1X@s>U*fI1b0!tU}8E|`gN&#_477%oD+jvQJw_f zE}4ME>)sIq>j__-_=tdJ1m~JdG3KgbIV4g+X0mX;((Cn{54w3G{p0Zqi;f0P7ANJ1 z$u7~AHDQE2QKTG$a{I1hVV*jTe|Sis*Y0wXmXu_tkFtQkrO#})u3-L*46Lqlja`oS ztM*^&4mDng5v8qV$t2pRxTd|@>d7CBrAntxMl3BAA>X$c%egjs@(K#dy=oFqU=tPt z)Rb+$P;?GsHsQeNCy+s;!L-g!D|d4I%dH}PsD0qe|)3N<-r zMRrxfUvaA=j(#UK%xDXj9hRVw!&Y0k zU~i4=Jmpiu?1J1z`})M~;%BD1Y2c0sK^>?W$?**$Y&&4E@)`poNT+z==RR!LEWne# zHMP3&7|A}sPY(0~8XL)BoHL59$a^kMz@EDsTjAp$Ge7Y;fH>JANG2f382FI&E<;ke zB=B69_=o~7^kpv;M?(zQvkx8G4EO;HKE-$<=yn?XM*x9$s;Zb;Pb7M*Tbd(gRwyTU zc%fYaXZK4Si1SsO{N`JlKdW0(0Dit`zT>)c`syd@vFvzXYW7`Zz{=6Bwr4n#I1fW?)UF^sd*@O$yl$Ri^_<$6PJnQk(R1w)<|$gKmznnGn4s z1PSPzQzNzpqn=%tEyQ*Eh5LZ<)9Z;g z{ZwaAErEIzZ)rkX@G$pJ*@-3WrhgfC=C{=Ul*4e{ci=twmW9N~vQgdPE;0NWsY*X_ zalt!*zJ%bIBz!G7+ZFZQGe)y;$*z>1HlY2<%F~Ar1^AYB9|hCnyBq6#zC<1jiM{dq zR6e0)p?mD|wV&LqM7ez9tK+Ezw1D3r!i)WFe6pCikjVLpPygPv)ART6nQ&k?Umw7C zq4TKX`*_X?zU#v_7x}6(EL2KWl*9H5`2LZtm;CMOZOwP)!-xCUazSAxSL<^UCvIMM zCEY*Rm0nxk`2pQ|O2g%oo{L`e{Enj^^?EWF-fuPfzRY&^H#Tl@N5M@%diwWAB7$f| z7ehArNKYf}?nBfH_SCR`+I`SXLjzp|$&UCNt~f{~kvVi6xQEs5>3A3$buEB~Gi&mOfwA z&ObfD3izr9q`4z|=P!;UcAML!VEvBQRwi#a#Q3WT?T_r^iw|Ri!;d*t31+wu@v1y0 zojP=Cp0252{|2B)H<|!r;mT5E&Uv#SjT^6=V&5LeYIOxLmW;^CxS^zuc5HbcG72?u zmH6bl_9s1Z9bIfAEPx?jxYE;o{T@80Q%NMw5r<`K%oTl5 z`5*pEQ|xEstITB|?x!$@cmeS4{2-S$hA9LsXxi8^b0nZFuo^O!;yZJKt4OyZPyUWrD)pi+2B}z8$tb zTVsEw*eLF50-A9JH}8!gWM7GEZ!ENfGk+P+F1w`a?UkYV+^n@{QO+!oX!6y0sN zE1-8<=PZSoJ#ZM-Cyw`U(V7!dI^dgSF~l)Mu(ke;U*|ymoPI!w`Obsep6UeLT;-ZX zVt9tPoCsKa76+!STgGojv0t#{i`S2c6KN`;15EOFE5S-Q^eVG|`W!eHGC zrzX$t3H=CS{*&*{3;6pUIA+w1j{B-3yjA{=X<-Txm4!mn>d!;(F+R(-Yz9~^C>jBOp81^c=jX)opATDIYmv(% zYfmGZ3u}{7+dTzUoH$3dK#O262xW|`Ktl6NSdDa^SLXO{d=Zq};+}UQ1lfQz$u;g9 z!OkS40MFjnQGydS_Upk3USRqXM%g8In%X}I%tgWRoGv&=7b)-~L@;Odb85RdpY`ca zp}u@NpmKiv!h5flkFqpfb(252+nkFiVv;$i-9_#M(?$?@)HLQB0lPVnBtH0bEuj|mPI1I+p9&xxye zhfU!mPW}QSf)o-0l9S-un=?{NqCmj#yR{n)m*=7EYT=}{-mqUMpfm>i+VLiPSL2PTegx0`^4`OCpUN z;k`5ZDMOT&YrFF1j$4&nT2-y|Rhxe<;Ih^piT$lkg5$%hr@B|4mf9Y5Hgee)vZ_m+co`1J4Su#e1c4aih`W87G|ax z_Mbdk81=;v4Kg|7M{_kr7N@nIIcm-_E(d+xtI9<^lI2k=_DSV1@0kVk3%p_R<10sw5) zHshT*sVf|0izdX`TJ=_k^ScjaP*TsU{|Jb34ASK8!~Iq%M-VN^X`r-?`Z+cn&un!r zcG6^WTa%At8Fm8OtCk$y!fhw%jrAcX>~t}q--nM65=S&Y#_hZJw7<^?agX1?`29=v zP856h*6#TGDqiKphi~A}s08JHzhG&j?C@^-{%<^`ILm#WnQAzNG9uBYpZBuhzje#Z zT>g@niERHuEWhhPfqcy}z_9bx1U)G_X5CU}%}$i?qZK596KbPRq-HTeP0PE&;L08L z_2YV_pvK#Bg804`Oz*qc8Ipn3)>JRTX1FF;8BFwl+4;0wy6wgNh)qAr_y1e-X2FKiX*(p64Ipz|~TP3#U+7lYY^mc4H6-c|9_R2_2Wv>NG zW`KJ`}podQp~^lRrb?IVUEA0Nx;>Ut{vHntbkwE3Wy zcP(bIUXI%VM5iR;NPO_}=e=;)O^Xl0a1;l-B}q2?F)S)%$iHnvuv+i1BsEeB_~4e`P;m zHF4;JK>x!N<8m2$k0Cw%=z_hxAa)VAsO%nR2#)F@siLPjNyDG#%XiJe3#LDx4Diu4 zAa{r;v~)W~0{ljL#!tKw)6@I*_;wesC-5c9!SZ_=tzNQw4jUz{-ss1WofP?r21qaf zPBwMWOs|e8W%Z431(!Bi36?X*g#VgREP}x7lW616R|~s=Q2q)BlKcOvU6A$kC5HzV zkix<_A|567{FS2g&#|6pgFPmkoMD6)5u0KAQNPipdr__Fs>TnWKk8?l&)4eKrS{_E zt`aeXM%WV5UjW80Ae6TRH+uE?A8*siE&i8tj)n!f=_t~JP%SP*qZ>z2aLqll|44r; zw=`a_7Q`<>*W;qC;C?NloA4ez=-ElGi9KE*-}jfR^Im%qUZA*fpsxeEkTKP7cIWG9 zi){HQ5i6|0;FrZ?)RG!qx%BI#Aq+Csvv5N)a;q+`nRBmmOLe3D!ag$`SbNBg&x^Oj zP?8>jgb^O1<{tNn$Jde`jJx-mvdJY%5rj zGBV@Lnq?}am$%jLTe|0I$bMX?Jovu&S=K~khV#eQ?Opwd#j6U-6;w`__G&VUK8X?q zdsnNTZGWHLT-$L!VDy$8LP)=H7-%QZIS6ZxjTH5uc7GHKH=i(LiekI-QXM4-$#lFZ z=oO-^=)#I9R-JOGB+2$)AufXMKb6iT^Q&A`$#UhFAOUL=%FGjMfp48IT}*ugZIUYl zM-zpK=eg@i6bMF3Nn1O51QgnB42{}F#b+wxnQPw% z#$D^u+(m!qE7_JIVm)5uNOoZe=?!1yr!Cm}!~4`JbAVPP`P*|Yoj za!dc<<|J(Xt-Oh6iR-CbT{b-|Udk0k2Hv|qkpI0}PCHYNZ^}D!eVBbTnt3&S!9E*7 z#%?b&#!tlB-h%`nn#txd;f>-$49@w7sQyy;**Bl{p4Fkzp5?kGC%q%14;>z|wu4o6 zGvdY2{Rm$8}eW{UQOg)GU^Wt_ADs!agEuOE@w>GtX z6s8q-V4-5DzZIFcCscdS7l647m1ar1-W!>1_~`nv-k$s10p37u0FZ1H==)X-w;Cp) z`5`)n!3&d?+Py;Reks6I5NV-UD09#=dkGYr*rTm@#a0xmY^|y?9OwQ&@m`O6MG>sf z*$}OV8kk1_76c24)Pwg$fC*2F{3n#q$wq6D4y@usa8?qcQ@qIP@UaC6knFkU6a?JS zL}k``$IrT7t-zffGKhO>SLFR;Sv~Up+X5W8@cb19Uf+L_6NiGg<^>wBSqvRqnL0$_ zsGs|qt~~GoVSh=piWgjtl6K}Q$FSUv+Z7r{G=BvI2|FC)4xT%Iv6{XXbmlti!W()s zpC}lUr|(DB2*@gK6F@3H1t*DevEX-SIAk-(A^L-Wz81&W)QwZ}1}O(unnX{!YO~_xkH%yqHC9 z;$A&N@X%f4(95RJRfpYA3cfZodE9+E;)c8kbw?R?Bb?K^UBO=7435#;j4Uqk)T-X5?Z`JNEO-`oZKX$3h;uaOL2#R3hRn3C<8P(*qC8TK!IEi$5jlnz*39Z-tu(E zdt@uB;2_t9qxzxtt1(&;7_8jaWb%>V-zxP%i=MRJR~)7mC+q%s(=l` zz%jB%hT`u{+*|+R!VgzsLa7~DNNp4@j>5lfCP?)_sPP`^o|JHPlg37|$Uht0oaTFj#2u=G-Qk<-g@Rh!$b zgJE_ZhcWB>7k7O-Z?^hO_x??bM)L@@-%|GIP1BG-#@*W|S*Ma^Vu?C-go zxA2gQMvE-J?_H?3-|4=m((7>f%Bkn1>eaLPP7UD(oVnWrib~!Y1sIzX%R!nrvxJY zeI`7F_;flWuII%E=lCaX;0^aTjCdH~|E5{sba3GiT@e=K778A{sBl#F|MVB0vm|dK6?dP>fg=fs!s)&sl&ZB_O;}A8`iz zN_s8sPUOPH==NsO5?%_h)`xMSa2&=CVFjQ687Tu6-@C|Ste-e?UyL0~B8V|~j8bo2 z8xEnpBS%VQc)8*WsK&x(^^r?Hatj*+B$3zhcu2Gya7+Sbaj9;f@L^ts z4RK=g*Bwk+jGhZlB8d#)RLDJ`91A}+&ldHj|3w0pzn4s&PXFH1fKDPVM`~lal^Lb7 z{U-yOljbfAja@s2hOw|nm#I877I7QE1RoK=O(@6lf))XKdsZ3y!qRx$48>xbb;}w- z)P+5u1CPHt=>noCoWRLUn!r;d=t7|?iNIZD#mUwgPfWS<%XH(iYy;FnH1)Ikk7sJ` zt16EQFGG}bN(>mth=VXjad3TxhQt>{sDcP^7o@K3`?Zj)6Qs6!g%2KjbL9oYK}2X8 z$+UKGgE9!j!5c>ZWa46c`>Isrh=WMc5u2A{)m#un$yQm3T-=@s3~EG>_d}w~g&j3l zZpZ0lr`pj?zFa4zH(tZK72^86Gt&2Z%tt>nkoVi;DXjtPT~^tQ$o@~a?0_&~Ac&Fj zPtaX{QSEKUVB7&&tRA?uv$`U&9AW91(Qj^tqRlX$e{^7`GZub&bDp0X-(9f7f}(F! z`Gqr8EuqZP+70W84BrG|cY1aSoh_3i`J>!IvjyO$R9!U3EklL$0b*@YX4;!Mlb?l? z@jH}x@NX;6x+u@oTfEBqHSM`@#ojzdO{%wXU+KVn*>I~%#ir`Zt>f`On=pm-mUgp= zrf+v;_`OJfn_0gZ-6fmknMz5+%Xv7~*CqPn-Bk|n4Bg$atBSMUgw615y1e7)=Y$x4 zh-k~L*;)t$5m-jJ-fBg~;?`WF2Ou#P6en9`xM?U^Z!}Cqa6we*f2R}NsxTzH!ksN{ zt9;8Mk5${O)8g6>j@d+RI zl(oxRDoK_V1syi+xY>X?DGPUaXBFou>gL*ff+UdINDiFopCZ4j0R{H2)L;wq903$S z%PQt;N$?a*rVJyP(pVADkd1VBR{FKPidL>`WKXqC(LsO4Jwb9Y#fOB+QO zXHByT$qBzDBN27bfr2%4>a{epSY-LAZ0`;YeRI?k{vX>2$FiQ1){c3x!1gM-CEjU6 zIl(R2maWKzYUdy5A3t|ymq}aE9b@GcBa2Ol-(KFj8exqh?Y!2R(@$DT6cy%gouOBY zYj2X071`#&O2zD<2Rg9FR{p}X-xoyp=shG4>8R9SYs9ax6D*iVwlY zA2V|lp}mqc+mPPv`nD4??Uj7MhZyLl-b1<%jz`RGRT{lm&l+9qslZ_V?jO8e_3h)` z+6twG_h0$K;B&U+-i}Ww^H=Y=AX}ZZ$!gk8jgQ_t{&T5!cWhC3798}7X)=hdT6a1X zymwf#bsNuO@%Lgc) zHr%w!V!8!%gG{9IL*f>56K8e zwH{0}#cyJXfxNzjp=@UhK&|4~egrhS&sF{J{@)AQ-`u&zuTX+uq#WP^L)YcHKwf4> zeLfM>@)lT6EwnFvj-6hw7^A4T9k~qaH}KI`{kiKW7zOUK4pHlz0#dlZQ8*(GR&0nZ zR0ez+oQfjfJ6a}SbEh-pncp7m@TdIeL|-7GU6#)6C1anmgB#6_hz^sL*4n&duMafg=#T&XY+oCT<<4dbMPIT$onyzl=4o9UE@igc)kyUhUqssnmA_~1 ztln%`O?YkMNpJ>^>~lAGTzLq;>F0jb*pu$0FKb(emXwAOK3@q6#-h-C{PNO?Mu=)0 zd9}bixMGhVfPnGOr~C%1A(r{3iUOWze^}j810u%+2W2d0%xb|txg=k~J#OyUz{H$^ z1GcMa-#;?meN`M`;(Amc3rmRe=LlqY2?jnnY5dsZ>L$VT1;uU?SyB@(vlG4ca*acD zj=gNy_AwfoJ7nBhp(&sxy&;Z5XEEt;mmZmans`_K4htCpyU1Kvq(a{&*I7&B+&#iM zX8DGS1pPhyJ^Kg4M0Zrx!Cw{GoJV@)O3M{X%o{yce1E$5P|XKHkM`O=tH+uqnBH+r zy^d|*{OgzV%V+-XuN~LNDV#ZS^R%n8x`J~%a1ImpEz>kCbqW$yWie-Mm^SPFTdawC zVQ$?KT!DZV=Vhy*ZQVOt$i?x!l=^>xaI-B$`|*i$K|z?Cf*>J)KO~Jq!yf@r6SQpA zDP~c2@U^JLou)rR%*Pow0HPacfad4dbxr@~0cxY|lO0F#^!v!deew*I!-Am+UEm%+ z&;;6L(vHx7{v?mx?v;G~4$OQ-0uEtq1K%Yg@|MGOSk0fKPk8fa&Dm%wfU&JnB0pUY zYD*rH=>s%F@Qx1-2cb%EkwJRmc2YcN+BI6p%v27dYSO(A!JKhbh>WGmp*1$zg+?LT zJf3-?77fk-s%+#gfW-p-?MBP-30`9SjjzTlSJ%tsR=Go=#RBJQ4KR2%gX*J@A(;F6 z@GVa%MKJ%u9^A3+u7BdCSqmjzfF?b_Hv|pB?mvzTj1aURf(!g-H~+hvSe_3zMi6_l zh~Gxu#&SHL@NX@NP)}TS(nqsW`U%vWuRPN$l%V^AZ?2Obk{snc%+9(G3+C8y4(?4< zWYhaDur;QN0iHfSjl1hy9c+SrIlYUPSO}kRuZUM{JP1z)M zs9Ts9EhhSt`oMBeCw4lcw>W{RC+?hLE_l94cC0UEeAJb*zu*+{zJzvv@lQRBZD4=* zJF8RHq2~5At$ft)C>=;|yXCbg@}vV*0-}t!`zZg3`j;hL6`OYYO7WYu7>JT~LSOMc z!9%Fn%dcqH%^in^d(lmX?&;#Xhi|_)a@~+v0Wh-PuMJ z?t7Jj6n-P~U1I9zR?7gh;9HWoo#i~UF?xGMIl#$;^<(7o>p$}sh1ZItgM?*ybU^RH zVFdX%`|=MpIQQ?;=!b`YuDOWO_hv!+10Wh7T>PMm13~PQY*SZ^y9$yjzGFwV)e|VN z0;`hhM!&M|n_h#HmZBj%MS;Sy=)y@=PY|fT^K@0GdcV-3`y$Jy`Qy~Wc8~wpzVncG z4Ee1;M?)$o{>zNX)_pVCT476@EmIHf@krO90vwQY1Jd`n${r^N&~9M5Jv1)>;0`?b zQ_2}3-X*>QFl!kT6?H-zpRwgf8>jV%ZXD@a-COZ8)6q z%(4g~q2j?sU8+}I(W49ZwBOiPzKzqeh$Nf?k$X{)s63G(s|kh1Jz}3}_zxip-U$Kb zFALdgJpGaeEkaK7C4#9v6T6`n`3LZ|D-q=qZ<0*S8xaH`3(rv>n5iRztmFg*6mq{e zP~s|B`&$I}&N4p5Ek4WG^c-q}_O0^b*3k`TSu?>+{fwf&rgO)$F2&MPXvPuRU*_nvQ1f z@+#3e+N(Z{GLPgP`C);ulMKWz*!^bf-rda7Ba{YG17VjiO88jJnx0UUF5_dB0=GGE{<{R=2w>A`QEejd3rvNorDWR%CLy4D#*kN|QJ2EjmgLG(s=fRBoW z_vAtZ6$mUg^Ek{Nu@({KiQncB`cc{qz}~Xev<6wqGZ_q4yd&V{ioN`nC=x%hYaS$` z43Z>4l}oEQD}@Asgp43^#$2ngC(`l;u-V_-Y@vI`*&&b2Lt4mPviHt7#d@!Gb6zR{ zWOH*H)quK-Ud|j{y$wR2P{7~1Qub+q4PoBA)5o~F4Bh^D0AeHe9w1?0#xlNk8yT0T zg)a97;!HF; z+FtX}OP$g&rVwBYB}+beyO67;{NvqM!|ET0-u}%cq8ZLz`VyE1#?xd;B1RhoIghE5 za)X3#kuPF15x0mrRLQu04mr`RgS{h~qR1c5iz+BwK7%-%*nf`WOq0VhisP=D)zY8r zdGjUygj_P4eW6=gz+gozcIB&{Lf%nl6i>s+) zU3ty%eo<7kzA*RxN---pJq-BwUJRclhK_e#N>kHU4A-2j4_6vC+zF|={~YFeBssae z&a{NQ@YBf5im!4Rl&C7nJNEM5Kz47o5iDM1l_o*Z58c~nx6iHUY5GCJmzNo@<=;Lj zsdpENcoxZh#IcrM$b+18)A7ee*Iu45*$iTC&-}OcnVSyS$hvAEMjZKn2rPU6LEce` zqDjJYANFKJ1Q9^u)qcuV#~|7seumar=xj=^WHTb$m&C|;W>j-t1}ird*LABAwO9_w zI}P6EgIyCri3i4S;jq{W{-7mD;mafu>xDFDQ|g6q6Bw>AkqkL{>gKJ96^rjOilY73 zx=U~MxCU9nMw1IJ*4_=|(8n>bP0~6$+UQR%7MOPYZ3;J7RZav*`Wa` z;o9Ghlu$mLRUrhqg~H>uoV}rv@Ur*%sO1Z-`)tak{T8;sNuZb3#*tAn8dyy}u#%nu zU4A~Jrat>!LV+XH@bwGk_wo*{gEIu(db;RKA)1Nz17KV43 zt!^Fv#M&*q6&3T7Yw1I&e*{&J#+T9Gl-$Vov*itvk72VF&Q&^C$U~JY#YKFKdzt8f zJbPF!F1z#02-fvP39j2agLu#xRbxBJ5!RLIAM#L)k39I_)CWly z$F^GAY*W~r&j!eKpCUKQ?Zldon(eM6`p3m}sMc3VFgUN?~4@r^s9+M(F z;$#T}3as|**QgG{1L$t2ul0`^Zk~1gFPD_4*{^MgNbx79;@RL%hmM=I8N-9S zGVYzq*d;FVNY=Vu;Z5`<=NBf1qL~`Jyqj|nhkG+#72MY3UEBzdsTPO!7OBWn$0XB* zo8Ep#9zoR*1sPW`i=2BX1Up(#9dQfIxMs<{y_j#0qfIw;qL1_y9^$yRTRNyz8};w&}3oT6l3z`)CzW| zC|Q{e6Z+{s3Or|bgO4B-MUP4V?ainIH^phHOUWKBys#VlM3)+{Mf9d@`{0LbleG_` zO}rgI!^d?>@c}Sz%RFK!G9vkMlJC+9Z}X`JoJHq6>ZtM1YxTT7viZuFyT_NY*5J_= zjhTFe)aiiuT?yK3VrG2KgP4yw|L+D+S|?fzUkHLHVxMzg8dE( zCi7vtY~_w0reEudd+OhTZPf1HhHUv#bd$3!!9pSO_MENj?!_U(ft{#F|D))vADaC7 zFnpdBqen{*0qIcb9HEqilz=o?w4zwR9!kOhX%S>9Qlf-}l0!v7Q25d%3`HpkX@PC; z-oIeKoM$IK_kCT5KToh;ydCROXZ{}dIe_QYa(v7=iA}D0nLqVMGIeX%cmG8&A7gdV zHPYuccDc+4UMceOBA3sbYU2~I+$Z3I;^)BxN2qT+F;98;imXI{BT32l<3w-J9bwvA z)h5!jUTduMpB&;+FWu^z`+*Zthf(+ZW>)Py5_ROOw!=a`rp`q@#HRDC4c^^G6m`NggNF6|JGV~s^%ZJo}LklS(26D}>>eq>GX{`+GpV(;LIBqC*m z=O|VD-_)5&1iW|ag@e-^T0Xs$ov>1`ycs3IMP^_K+qBCeRKf3B7B;3tzE21sbIT1C)J~^sEKvN#W!0qwvCstlzbc{3e}2&lDJ>RpllM&+HiHC@%Wy; zJ^GCq{-}3vlU!Zh`lwwS=drhj{qf}dQqU|!_S}JM5BGiMN=EJ*2C?25b9PiWV$S4< zjeN#2uUwTvLQXWJ2kgfq$P=6_|8bKiFf8e1c1g~VrK0ND_pV39bY#D*u|5ndH4_pm zvg%4&Ne9-46Z?N$I%Z}qvSSTuj`g9k>$oZBPV$7*)Xxpxx&imRx;>Vum*vD=;JE_T__c#CqWy zJ&=baxq$~7K4WdB7&XQamKlC%M@H0wP86Z*+fQdO$xRuC(D0VFjXD%orQ~_)&IZ-K z6_Gq{%mWxAUPw>%fb-baOYRql=Xfct`}!SQCJ~mE?XH~f^|mK6Xl=`>qyGK$4V(xAR%2jWqb-4|xS0?YtV2bSGO1i>4t zLJoZa1-f^-VI`Fzt+mpV?bCxT+t?<8T-01-`iZmD#5sw1fnw_02_bjR`c#``P3E5; zYTF`Kk&{o%uU$UD%czF!GG!2Vqjl57*Y>Syc1$uL0+oL1+k@gU_OuV->)#%N`mP^E zge{Md*oJbPgq_No4xPsQG}?%4aN#3UtEh}|ss0b6B*(X0NxB%$Dtl2k|k7r5~km7=Sv78 zhZ!GBw7KCKqfHHOJLn^d)2#nq>3?C9yL0+m@t1uE%+>1jttgqEcX*xpC#o7FcmeSa z`4YcstBM4?**Vdd&&=D4k2ZXL?Rknl!|I&9FF7)WkzdR!kRR$Q%kO-6?PIfc_4-ps zIm_~O$&Ns&mdb9KLOE74XB0Fxc06t=fUPr3nkz$y1Ch# zj3(qOaL4tGS`+1>1nWyP9(KMn?cNgj zSq}7VxtIC@x+4NG0(8xjJ5 zl`Q@+p&Y?m!<%2@dz8Dzd>xrb2#k}w9Hap;&J-2GP_p4!Qk_4Svu1n^ThNjCahcN} z;#{u^P#=$%UQH_SKFt7{^0464daLW|F%qLV4ZVBgIQ|)axZv(r*HLrmy&fs-(*aF_ z(u?#|x>(H4RK>wn#@4gCanFrQgO3v*e;=U`3jJ`Prc8QWJcjk>OiGEVd!?p)`H(~x z9@Z$y8w14*j`Z*r5}?x+|$b;k1khu~Yiej0W?i3VoJGHOgd z-b%gFtWnmVD)P(d)N7-Qj}^s4qIex<6nuC`ML9I|)^Z~0?W$xxDQuOkXgR1w zlbHUEBS;o-vIKNc);ML;e-yGy$300O+9I@xWl4=lS?5L^dFdv-)y85BWR1zgQsZTk z<(NNE@(~W)XkisU5T#xJ(*1JP<|@%j%v@x$yE)9m#K#<4*6pSbaW5H~`r6w+hHtHh0y&1bikDmpBVIfB9S zLgmTq8)E%^hPTDWL`dueEM`+Z-E%v%vcWqnrv?#xI}mzXO1&)yM_Xb>CtMM598n7` zUObZ0S+jM2yY;Orv_JT2Qrx=!fxhe9EFCrf^B$*3y(p5K{3kBVciDuBd1Qzhh%_Rw#^e2lY8}1lSh5v>T9uOPb15qn6iPtgOM>VV?>tAX#sOd9ZCBrdPls*r*u}i zxQSf+m%(0dHSqP}l_FKiYANF&idR6M?*mS$YoEWDY~g=>$WBM6<;kS2pD1O9%?hVZ z^8@VmqXRFkP-ghLO56BUb99k_6)LhJ@_{_0#1(eJ4SeF?@e5>zRTwzuQYhXO_9&71 zXVN+8m>GO0py7rzz7}$Hk@gOG&I}k70xO?n@Cy63#0cRC)T9b>M)uN#$PS9yCpADi zJBi;ERBtLC04oS1lwM zHou49#50iv1$vTXTbtDQC%4VP;065XeaBN@5m_*Uo$yc?ymreW8%kA=`1gBpFA%$C z=^99K7u|J!noUt_b9K!P&>3{IG^`H1I^k38vF`KugbYS4B9rpa99%@IDuM73gsPbm zs6zBP)2;&MsdYNMmR;@>u~d zEy-9y*qL=98BUMcXIPfYyKa3DAI#Y=4&XNGHy`r^o5cSH&;zMUtL6~Rtr{?@(+W(0g*^Sl=85?3p3cwd;Ey6Ow=}&$;S^%9^N1bEl3)%>8C6ij z=8AR5(+%Nm$Djx?KyAiaJ7;{|+Y5SJ-aZ|uUK0*!H-4aDsG_QQKZIgf~ zNw7L6Dg7A0TU=&f+vwMe8d|3L$IsdpAM`1#yhb|wia_&%Z{Pky|Dw}soG=vFu$0@b zcgctIKzy4-pHbmR90=tsXpX+{4bcrQVve!L>-OJEh}j*?xiy)mUi2 zQy*);Vd|R%rZ~KCd%nKP`H`4y)-~d_z8_5-G5i074Tf@r4pDBE9;r$_Du6{eYBmJ= zh7$fA`cIfG$UU=t628Sn^GYv=|Iu?|Qq22+PutHRRfVtT!e+~h-Zsua6`X8F=Z{+# z0n>e5l!EmI-g&RJ^GPd*?V{e6X)zx|?3x8~CN!Qr^m{bfDS_L(G8Xo5=5?IccypJ_ zKE?&*MoI}AN|NY{ls_w0_0cfMCyXS1hpiuqQ5~y9-Zysi>0C-|$%EavAEuMtkl%_8 zhb_6n><^}YyiAz=r=Kun!$C$}8|L9Fm4M4vx+>yAwUq6a2AH%uOZZF0{x^O;yP+r!{b zs+J>=MaO=VhEZe%k>4f6QCk+K^}A<^XsdOcTJZs36ag1INz(jS#c*)g)0^z+LJh*k z0KaDI2tqA*$XOz6Sm_ltB$*q~yz8z=0Y}E60+=CiscqSGg}zXDFK!1#+R7Qy5Qf9< zx3`&swC==u$ti341)Z%zC*Wz)OYBBK9^NDbjbl@sqvQd|NPp%Or z#L4G$JItigPvcz(slnV@y~r4@Te!$r2U_*C_?~;>1Vd$-$3+sq?SrkpUhq;S6U)~0 z#EP!3IznO4k-;W%;HFQCN;<}Q+jfYz37fKW+#h*aLtvE6`vXGdY*;JT;30d0-`60a zxIEJ3sY^#4d<0*6##2P1oQ)qLtR#LB<3%p!4B4o|rpE^HO=PDFLh76qf$>F)$iMq) zr<(h{&6?=f&!08+YH`^zUlKE6?ElfVN9=;E(vBfc)-V?ZpA`q8G$6jnU8S-kE3d)UT_O0LfKQtS84OHU_c%rmDA1=T{MIdPr6H zhhS@^1Y&TZaBsDX7+}-=a^Y^At{iPqL^?Fc_jbw!eP@jL*^DO>r?Q_PF=t+xkjYiu zzV>;%*rCvG#qZbXpu?RZxmo)wLgzT%Toq;jZQ^^Q%Ej&Dq zpctkxsj8!3PtX4>wm;J6m-9J{5aio*B?&kH6i$c7z$?xE%#0$(32m`ECxsCR79jNd zry$*)akpEbE4;m5Y@>eKbqnoFIz?okoz= zA+jPc=lEEQbl*rJzjFq>*xlzy&DpFD37F&H<>%wx?o!5zf_+}012mt$>8f2lI2)$h zVZBukY}cq~`zk>(Vy_TUwVECM9ccw7dnUK@nwEzo+6*&k6FVfi^x+P_TafS>yy%Xy|uQY8rmJ}^@6?FmCv*FYQn%3oLV_)670g= zC(ucfIMSNx(9&oAR$6>~sM{iO&bQVeecQ?;p zLT&f2QDgKQ*+&U6=kaToZfS}9XYfQaFsaAuwYTEAx)@WAJ{-Z6Ez?x6V*^~=#<;V~9TJ)W&7Ae9Qe~i9CKOV~*ZhV|S zRV=!hQFuUh(kB^ybsX+E=oy@z0B_|955X6qwe8vN<&o~^%O9-o?nlPxRZ8Cn$|yTz zqM)XIKZhq^-6aNT6~z3(rCo@+71LY^KSz@Ke0m zFbhe~&H(%_u`Fb5G!3=cy#n2Tp&;na<)S@U4{>)JN3^=g|m;3T`3UnE# z0MO%t0VuUm7Wfx~4bzJP;|wSG>Uk+vmp%>okU>O)T z!Uy1U1OF8=f*%jxd0k#$3Xb%mD5207<|ClWsVHn!J4&(a1<1H&8d90mqhRzyT*~Hi zsANoZ9;;dQ zpd5l6g8+)SzJ@OPnnwLzDmMbZn>qsBS)!{l_tmh0>(LTtyx2e5=)+3-p;Y1Rnp{`lc)m|DCg&0OcLXhd5Gqh3aRQ9cZyBlG4Q983bXo_ zn|0z9bi9AYeSKJ#>=y6J0{+7%@NgWX(~gIK$F%Xpjj^9Pp?)Dn{v`M0p`jip$yyDH zU5~45lZ5JjW|q*^CTte@al3}JlYY%Gswy;G!Kht`y@=2;j9NO4U!A3<$3mmRcq7$Q zGlA77eAM2i4J%+us6NsJEG03I-}p;h%I=aACA(# zTEPcJC37g2;DK@7}giBL^132m%L8 ze;DmU{4H9r5-E*Y70oDcL3kBpl@mPun?voTojSfALNUX0qZ@_^rUU{+Fri;$T$_QT z@r~3XOleSocpcQdnL+etzhV82M*)Oja!IOWhBU&s`#<*VcN|^I{>HL!qDd|@;YbgE z68@bw8=^S?%?&4_#XPR}uy`K_rR-!L1iG=Jqxs9+gEeCM%t1J6Air_Jxw zD_Z79m?ReeM0fw9DFy!XW{K5g&nm)RLGNzf_F-`IjgBLcXTYJ+Am2s zBYYnbm*o${@K&GP9Zy!19m}|4E$DL>*HdGNUxoO8KfiXL-5Fy(@}WCyom1JwH|Dzl z2srDMgy6F9Br9iuue@pF0+XQ%ua0F_fKUd<@4*I}JCJyD7=Y9#CSAn~esI*Ei2ke5 zLF?kptFCfq*(raS%0z255^=d^4#Z>kupYyymjcrgf3_O#e1_YWb{@4o3eJ1oB5N=% zEomG4&61hh_F>CvhBm)$f zbYQz>k6R!zD**%-JWHFc`HCz(g(K;}zH&o;@c;{DO0`GyYsFatej z(M>;#ewLL$T)WUNEdyr11zuBqN!H5T4}8>yr<=`UOQE0$DY}Vkb)H6}Gn9t(4m=oK z8m65^9!R)8#bR~;uZ8DauSR&U2mxMmy~eSEgH&Uoultxl;KBa8oNZLpvKWz8H2vY{ zVA3e;pPR8&m^JzQ*842bUn@Qm!ok#KLM{Zf6S$CdK4Xfw=LJG5hql`KxmU-+=zixz z?m{#ZXzjy(k}2deM=*4mr^2kuQqAV z?j`wV;!15>OJYuRi!} zt`&#mFllIig*C?h=;Sr@XD^K%nOJ(?J0_NB-kzkk1h^z5HIUUpeR@n=kB431B#c5D_?(h6@seg&}aF#S$jJSdYoDAXLBQTPNt0Id}((c5g;#XxF1kCpfpfrE?D$m)BP>8FqjQOuUm}(&Y>MF}~)s>wvguW7Y+aNUYN1^LL!V zEAV!Kz_bZX2n+&CH^p8o^1hS7E#NduOqrFS!!b<>!(#CbfDI378 z#4&oRFbGl|3G?R5+jZb3U7?3!h2oFVXVjOF9tvijj=Ob=iF3&W0|(@dH9A?*012xp zVNsyxqFqTgAY^>M)&ZiB!Z@rP*$st#r1~f4#iOvSpB^J%)S;VDDulDCa-SE^?cYbo zu0BHUa4!3Mfw>4`UnOKv(xECk@Q6J&h4AuNEXB*M`5Bqpqcr7jbHpXuvwZRVZy(t> zpZgi@@ zwOg18)ig70N3P}GBBJigg(Eh7jw1v7-;IC*?UMWEyTjrSzXsO|K7;yL1N6v|F)RBfiE!v37@o@H+<5&ZNyN*# zoL4gYzbB|nY87g5ErG-3(3VSOA_NdqJ$xoqValT42K!fOq= zPYNzvF1a`|GYdT&f>qwv13tZruP|YYtGPE0(>Z@3NpX-{NBE)%uoBvp!GRN{g0Kxu z!pJ)i3T7qWr~K1g62tZnL2I?g=4HfwJ|bZ8RlSM`B^IXHh0P{MP>&{<7aGJ(*=qe0 zoT}W{6xlqxU|6`xo&rC`R7HsW;NPVRGH%5wQ5d*RNoyaJs(#FJ`w-X|dJNRk={bx^ z{Q|v~8z&Di+@uc^1+}VL3tH6xU#8Isd4B}@Z5-|@r!s_NP!x6{J*}|0AH3*n>_xl1 zwjkF!!K$f|YeA_lzR0t#3Xp?ym*XzJuOqIafexT;^!LN0d;wLzAh9U<2`|hib$?&C) zemN>2kH65Y!Ci{IXaj#2cLhI%U1_%G4#J^7163!-=W&=lbq9eSpOgwcnb>1~CRg|Yv1yshAWXhnP)^)*%s*t2BnVgD)~xSRI1DN<)e zheY2eL* z?C;W!I}bm*abG!@tG;n0!S3DH^KqGfVx!&<`1#Y1YQ(y9Twl4Jg>v4Zl0Md0RHtub zdbdPH@;0<1UdVIVN9<;jIz*i1ho5mRJ^VMczSPAS4io9!9U~K*GPdPyNBj8MHPwwCrybva}P`*uu05 zBBNj`y)s^veC8)VkUb~r2tC18^)&3A-f|!s?S(4adh0T*?Xyw@rgL;W3g@9Ri^PkI zVYlQe=BD$<&w-uuH}%hb1${#Jmx$)Wgb@&nBa|TU{(!x4oga3~SAEv?40X&L30{Ms zzD=*&dedPH1vIiBPZqQTyIr5&9wy6!v_A~9{5~59V&rD>47I+$9|K3Ey~N!$mC;@{ zeZPI~EE3-r(QSzm8K6*TEi@1)jp2XGRV^}2>77QiYbjbknJ@bjjyDDqomH!Pli&oqHd!}pQaQMT zN{8D#x-W)9UD7bwquH}lg`|!B@$=#SF+K#CX&;UYzu7+G<4gMPXv$?blh5z`*+oJD zazwb0QpI>CUw3>xO&>ShrsozmbngZ2S@gh)=io<+UbgyEz17rWjrI=TkGx&P@;?TA zr#`1~l#QVqvUajl=6t6L3rtV3xlDb&F23}&(^rL?7o}a3ovHf3eayBz^oX-qhP}!| zA>5&jd_8C_a{c@Izty(0(JfS`w#_+puCSrFo4>ZsJRufBYwzAbZ`lBHPl6earF;6K z$+|v281p^Gu=(8=!tEx`X5ubzZXKZ&l3+T02{8+pw;3Dz~ifI74bnmoc}zLF~Q zedmTgWyvTzG^6|iLiU6|{FhLUXS{WKedM>RmL%?{I1 zD{z|~l;j3nBmp~`x1SDisXmv03GCh({V(hY{|H%3i1m}OGwQHQ>JS zs6v4+K$Xd%lpklCAMlf&FcWQ$1bWv}m`i08(_6>|1} zr%#ZbTvk#84u;)-7z%A`MNsqNh^$(aeXNp*`lIo)K;?U}P#_UT^<2S!&v&N_SGQ?3JEH5;0fx8|l*Dc(G@+S%x0W8mwpl*lp=< zRH)^EYFwT`w)FZzDq8i~CBq=Ji*xCNhtA^0g-uk?6Y8mw_mOpsBe1cLAfD}8XP}5A zcV{SPF#h6K1ASdi=)h76@d*n#7Iv;f^7v(OA{*0Yd+_(4AqU~-rQ+&X-3JY~3t!Ub z+rnv=qyKaNPMoGm@s+-?c@i%F-T|A;;LT3h#eM!!oe%#TRg4!AHnuE1P*yj6a7#aX z)`C5Y?L7GNSnm4hN2jLk|6*((b;*ntwLzM=H#AN}|v~D9Wu{QuqnRY|uHjAf0(fbKC zQ1KpJJf_Uh9>Q+H{G02Is@!_~>HJ>4|L8M(Pc+2SFV!O0w(*`ZH>lBGgDV<+bi)Ri z-v!`R1N$0d6+qHw@qaXFbuzm%AhQtiA}S4#i(89}#!i2)f0sazrWjeI-myENag(U_ zR{#N|(PX|J&x^Y{X=9`qm8=`W|6WaP%U6Y&z%2!P!dFmnR5vMRDMU={X?LFvVT7^z z8NK5M9yg?uU{8;Uo9KR)UY+!XJVj#Ac%Yem%X}wsC3wxua`z3PP*ytN{}!iC=hussF5&(P411 zeAZz2e8FQ#U_)&6@pIhW{~~633nqTl%PZTDX1P>7QLq}5ky1JLVa|LrTmj>!fb(;G zIjZvVkl=r#OS_ECU$@OIlDZ!aF(5I-@yh*>gf zBAB5lFkytl`oVH&e>^r^Lb!-_GOb67Ka0lXiCen zH#JZK31$I#O{!_?Mc$6#sf-Iujb(%czVZ!?KcNUk!1yb~0Y>goWxr$RZ~f-gugPG( zz<~)lU)TDvL=A^K5AjycE*O48tmO=))}X1;<=@c?K>S`ksP#?CeJd7w>KPU;f-zBp z8&T(*-U&N;TnOAe9}g~~jseTXKodp6CBt=U+|~o^+rLs|5CO{wr-41v)|DF}*{XdR zHzXx5FeM-)D6d$v-hfCJMc|7e*g<_W5eYA|%TzAno{xX~`h_?=bm4rO?S69IUgZ2v zpd|8!Jbm?32=ZGZFJd%Y7jWeX6D$y>wD^$l042!8oFp9(z-@ySPeeplhdw@!gC|^L zJ1rlbP&dV!KyjDbizVc<0t7fPT|%cVaDUtWyRB=C!3$$pFU-1fbh<&!)R~He{xQ^@ zRVJRr9kEl4y8_}7&G6vP{;qi67J;2GVkjjayZVFc`t;b6 zLr8>KJTnPV%;NIH+juvMm!;su7y`DNM}-;&sZoX!Mdoz@r#X`7@qrQ85Mx^sieW2_ z^@&>{=65$F`rqel-fC~y8M<(m3)1}Fwv$7@K=;@`LtR}e*o$00U49{2eCW!bOl`h~ z+1UNu{ZDLW4!qrR{7d=HF}d!EQN};~-muu$n_1p}S_;gw3RegG3K_6co+?}*S0{5p zl24)iOF{ctr7~yOJyzn3rQZnk%HLD2pjBKEe3)hQF4Y)WLa0qEsxgXq;D7tSIARtQ zw%ku^`^ZDj(K<-ILv?)&dwKJdNeD8Ed^ZM+HV<}tg?KJF)X^UQ8d&annK-fXpMMqR zB7#z)i0ZSV#r!Gshf2jye^oRg6J5iJI(TR>b+D!6dc$?`?_*+mjT0)@uU?#Kxp2MZ zFy&nkv_|mKQF6uNr69d|CZ;KF<|?t`sbAGh%gRg?z9*XwRv;KF3#*fGSD-WmISt%n z5XnF;q}rCb_aRVZ?{nm*==D_OT$nUT-w+2N*Sbf;0TxugZ=h&2qC%P+irmrAuorpC7 znm6p(#l<~`3pr1`mtEMqgS2Jtv-0*TC}Bhy5useA`QMT1*h4=`o@zk5t~kOjrT25C zb*S#kQ7r{QABw@|+ifE6bisKid;<=H_lJnDxVb#sp&o*JuteWaX36rud;8VaZs=ZI4vDa?07u z<_az8aoJ$=5c^xA2`@&y@ijyEbnhXwQggHIYJJDnn(mEVj^QZ|e=_y)Hy)(sa^c=a z+frK`eS59u@yFl3FGlZ#2lbUf%X0SnQNrjeQY-IRHloOpr_LL{Zq%3gsPdxz=@(1(($n|pUeO&kN9Scwa3(9v3smm&k$Iqyh06Vi zt)Sc6j5yK3l!)}wtYgZEmQ#p9Bhx1w0^!$k$aT6T^RCGn zaX_0DSUqeFLJJdwD+GSt1nf)CLm2`fYnG>ny|s5agD;A*(o7uaUkcp9mW_eMxZ&en zR#Q0Zak<0Rt>s$r*k~9#j=Ji|v{SKn?yx^_yg7uYy!`$&J_$p8`S&v}m|tPc0Ol3)OKsv7BT7kjIO`AJ zJyy!7XVdar^vVfXsZIJ>Zt@=0qxHRJ?jY9-`t&VWJRs1nFqo=6-xeAamlTrmb|EbQ zl%p=9rJMxtS+KWZ-}Jj;=so(m=NAp|Z@>O~nHWI{5%7aC>as)~*d8U7_}r_*4azD& zVHwE$?WTJ%n(qe;n%$E>7?;QxfL(}x_i$ZTMTr>n3ruL+!Fh;YrZr5n@A zg~1~-h7-}-HDlQ-GgA9vNLnVF-B9F>fYW!oMP`w*Y5F*z&-fs~n&wE9s8I1{hA0Yjx#E#}w<3@;#28L!&ab(Vo)6y`8dTZS919>`4+Uxx7U8SLP!kR3r{VK|~5 zhbUEoe7!QH%_CZznbSU8GU)blNl+5xepIzVf6blDDx_@A3yDqIzVnS8HsZD?)N&m1 zE=vZ>^uoX89ieMQbO|*8S+V_-^|S!4dx%z97ibjFi>Y|7H^et=acLt_L-7} zwLgabX*!cm|8N4*c43#X+2@+EM+E_gLUh>sE~o^hx~;%^@HAb~-F1{QeT_S_Gmy2~ zmyE^;P29`XuVORX3}UG2Z@gWhYrtk#K!pFNc+gKgt-kuSg`fzL#zb!6%Zs$?(qlatgLjN0B~AA zQ-5A+fu?vhsOYxHStMrl-PJWOR-Yh8K0*vWy+WX^{L1MVyHGx^<8#Li8vmjI zh8C$k$O60Rl@|4;J`pzt!9NV$*J|Bjl6+VUPss;gEZm^Abxho%@mn5PyaBa*2MBO3 zKyw!zWpGGs0y!Fj!bd!|M3HG%H6`HmmiBsw{d{LN@Z$&cX#2y+F8o^oyhxCCzIyV# zJr)t~Ip-u8`MUocbL5)|G|;TE4_dr2K`#GNFN|VNa8l$VSY%$#0R`oQ#Bqt96|Kp<=zWuqj=COi4&G1HWN59hj)CvZ1#zITP$ zu|A}wh2eZGBP@4OOQO*e&mzPtjQy$E>uPnF zcELYRr)K>u>)rZYf~lU{r8!_e$i>9T?R;&2QC5F{wAV;&p;|?2^2~~uf_QS&lLomq zi-#2-&+{K#_%5^6V#!`^-W3WrP(!fLLHh;ZO-UVxvI)#2ix`2BmN!iK`V-ON>!@=O zKA9f4^6!E+&^-nyu{F@QSH~z>-YT>L$kd?h|!am4wH*%$H$rwbtj=U`o{Ke z_jIYih(o?m59` z7Esu}Mc&?X1S1AyF0r;5@h6pGFtNc@G%!TFzboC4dlb4?svyvJcCD8$zWY_Do4J!4 z*c&~}1HM>%=lr+q_3tAAA zEB>)`mwg#?crvz?*iB#M40whHk$-e^cSCvjs0^J=SF2TlX(`aS3Z}{Vxu`?Obt(%c6 zuKS69kUKYz9QLjXOkDdrH+;4{Qr79ztY^dI))lF^#+JC~7HJbe%=(qa9PzR1%@)0f z@AT4G`H6vOC_0=eH|ivz6K#%S%;nc+$4*b%-KbFTeRiRg+nkF~6n6skF+Vmb6hO5HzE1(pdDuRR02Ufyz zmBuX^aRDShx2y?tE}HT3Bw&IhvkFVN-vNbVh}S{FK$0to?IHq6uUzPuCl(ak-`1E) zrEOW4uZNUdwsuuVFWc=LA-9@-Y73He6Ve&oHW-}rwBGW)U-OjzZr1OwWfM(uxy@z% zPdCM%tHrcpYIAVhn&++tfGD|}{aNSs=?=dK;z7tOMe>0mH$-*>1dKUpx-{`!YfB8!uuHDQ$42y1>%!@aG z`J#2tZxbS&Fei&rC!GRNDRt?fJO?klt;K0f@l#aq*pZ@dBQ# z0oGONv@$_Bi0wLi?97zR(Xn22oNAzPV{3zimiWd)^cqAKV@XTlp_@pWn8g05YSDHH zHZXgGhjOy-+;+Z=KpfcKl#Z`8dE0%kxgCk!dcwc9`k4Ivi|Iw=Ms)10L6sW&OdMPH zAal2Qg2v&PUxxlQh|U_aMdQ8iGS5-zEFh$ta<|FW5#`P9cQCE?#_Zl=SN7@=y709@ zTUQ}(IZ_eb0z2WyL!(CijOz&@Pd|4_&2fN49P-+>cXq-S3!!!W7g!fRzI)i+DLztiNraCR|4r3)?y_wK~~n3##fxHWZ7$e%yPj>((_^Z@)Z0tWig zcm{}E_9Yk4&t1M%O~28)72;2@y>dKe z6h#vhB+El)?E~L?MIw_I-uL(Z`lH&>vJ1x7M14tddj!1Ad=y+5~}T)I<=?EyFWIbGDSBZDRBgXc?o(ty9Xn62`k$|D~n%v9O7 zZ%;Z)$ctC|82wVtRR`?b(4FXB%)Vyl6p%JO}!%mg3X61ra18|_Um*rsVt(drJ}D@WYC{~O`q za51s-OEc0M!!~wp{R^a^Y3?W{#t-kObd=-ot&U0HH2WeMe~XjceVTlT8d0CjYCi8$ zQiZ*#FYHe{{#>Fo*r=*-FyTr~(kD!~C5uTr+H|@UKGt~I@SzKWM;8)Gl zi@}w*M|8;c_s+0hwc-QPCZAq=x1hQ+(_{*e+wyNf2>0mJkilt`V&MNMI`eR--ZzZD zXBNi3FQE*PJt9&nW2x+9k1!IsAt6jZuA38?&R%<@ZwmpBsuBesEj|gxd-@v7H46;cR~)GC5yy*+f&D#PW5P&gu9XzX9C8VBX3g=AGOkB&?oD4C2$Z71g$C?b3AO72yNAvCBuLC zf@peQBL-)~ z?^>&|<7yF8gDM?RhykC{)M^3wEze<$`o&0!tr|Y|L7Nt*kqO=R{F*OtgqIZ?kV+Od zI&{jqi?dLO;^`VgljLi+O=OUjBV1>CM9X=6{e4mydi$CfZJ+c=RH)PA7pfD_G9z1V$SxG`d&xdIez3>g}3Q~ zu&w8PX=i~qGv|hfq2}5373+9qU`C5~1zu?49pH}R`~#X+Of;9z_N$@&;|OS4rQ<73 zvJ(b^BjD4LAcEG`v3c|(BTkq6rF3_Mmb^RpZGU}r`vccn{F7xRLItzCt53tVKbp1> z@t>$Ylq*TFqkq5XZ2J8c=7EjfBOh78Hx!&q+Ni2mVBeT#!oZr}npK=azF@HCY9Jc< zQcPc#hIh`&6f~Ej3%wOmGk)8;f>Ml#5(_ZR`OR&mO6Tvww7U~1{PhnjfRztCz-74i zBX!3hr5#gKq>D>$XoJLz0VCXY3fQos`j@rdtj`wT_F8^B#JJvr!V3fL9r_yCk8tZH zb8Z)D8=c;9scK(lc*a4ps#N0O{#)_2cp@oqyf=vv^YCapFK9)U5HN~%J)Z5JGtQh0j8A2|bUtGArpqnuGc1nlNfH#tIujt;%{I>Zr*&}qUFvw5gm+Cm zn^obXveP2M4L3@LOc*Yv8Ba@a=BtACbBRzU@4RHLA|LP$>1G@^Ty@@3AI!}O)9R2Rl={Owa!s~_QX~~K`sI8^#r?J{JFY6RYRpWya7-{U`1HZt z|Bqzr%@ef!p1(xvTL+H9433dHbQ)z{@{W*~woit`C7SFWSrgsH& zpok^Vrv=1Njk>+alDmRJ39lm8MtI3W0M9{}MKScN7;J`eRR;b)<2~UVXpjWR9bFpp|?zzl0<9k1+0J#K#@$pPP*iFGcwuR)z+3Nu2u7S-goFlI`4I zLs0LQ2G*%dZRz^x8;py}1n>L%$Ym^DG>m4(n;h-j+l&f9qE~ZF50V=k-2idc33F=u*dnoIft*@?3(>jZ)ztC3J1e~5N58RK3-*0G8%@O&EmrT z1Od%Y#)UFRb)>uu3qbTmCg6nF$@%RykgHZ7@Y5-HZuo*NAaw^3|0Ll zJ(LTlK6=2JtgAx@H!@RR4JtU7ynU2fq{xd&`v%o;51Z8LZO9IREn446noy|qq-FUXq_#YeHqhGhMmV(i88k3e`QS+$fYvhN0hXCksO zWf+*Sa}xtO+p-kdtU%Vz;=$px!~Uut?Rfa(|KXMKb895ymm~A%X9NhZJX>}RlUqi=ODg_K}nD5V_#mg>E1~#O$pR7aBQp~x3Xj? zZuU+M3z*BL7cak)*I(EWgF_U9S%`?K(Lcolq=b!_QwqAdVOO&0e&`-@tBARU+k$la zh&MEL8N#<~`awIA*U&qv2^iA#uPAmpZI;ipf9uHZLcNBxKI2uPgKO;ca4kK>FS&n7 zo6>W)1xvxtZO#oEJ5_f6fnJMqmY}t0@fi3zcA$0qcYrwf+7`nm$Fg1iWlJ zi813s-#@2v@Vfj5(DGZl(H|-`crrKuHS+?0+589tk`tT$dZEdTH+J>8yPW!p*GSCO zu3oKZ&Kl*d+qUB8{6-5wPFBiX9?~#03sI7iq>pZ|w!LG`ybX}j%)nF($_^7Xq8+(a z4E-EgjnES6{(zR-Bu#0f^h&jEWpjF>=^b{zFU@n@M$c4PmO3sTAa{gu$ zyjN|Vd44z1`rn=^C6O%b1B?x?_%Mev*&c5yJ2qaSyI_`e%8aMgW+>9EWPHW^niFcp zPyskZ^2AB?Ntz#2wBI|G*ghsLU|_{i$7-bS?j#Uz%Culs!a4tf(EV)`)mSM{Zf*df zPm)Ml47g%VD=3`lG`KmTNNB4CjgvPXgHH^(?WC6=5H&=~*m^06pF>VfKze(M%aHHs zY0}wMi;vXB7@U8=nH)ziTX4`ml}G2{;mNB>s`Q=F%5X^4;|)X?x5fZBQmdpgp+^Z7 zI>)~l7mt>D@8#5>8pEswDBsUj#(>5VX#lgvN)WnnwqZeCqP(BrXF1o;hF$$|%90U( z$1FLlNfP^*@ztxVh39owOR~@B4UcA6%Am*@%pYWaeh;o^Ncacb)R!BQkUl!A=Q3LT z=OKWnijr%cu*+fIIN)T=kb5-U=y(m+haYg9KJtF?9G?W?Uw`}y6g-K(C>Hg3CEkst z1U(*X>J%eE7UNLOdhS6n8F@Iw@>lSOashXvplksC%HjXM`TLu=15M%l zhzrb71+R@+bv|zCUE%*%O`>HR2i$WY@kThAgynu0rF&c9H>$;_bl5LD_`6Dr27HXr z(cnF?(jYoG-u_(&9KG?35+tCL%xgBOJ^sR17H-;jo?J4;e~#Q89KPqI6%RS7vO=T$!f35Sj` zh$)>{C@wbk!Myy{T2lCk5=Q^U>9H^UCA5j?6BAKQ(bLw=ty1Rkk~^aQ;^YzzOe$Qh zyd<_PS#) zYecisukyfJ#kKsfbXwq)7Z3G~YeQ)>9in$q}Zk zC0-_7<`6LmxsZ8E3dEpJ+KRzCIgGhh;NO4Qg@cX(6+8>{%4wsG`!A?2IOp&rB|+xf zVE5Y5z-B?uT+#`nImJZ0Qa8w?IX(XAWr~0PEc`iY-gK424l{VC7-TTjkx!0({&GWm zmRC?MMok$`7Cu^lBQIW?Xu{A+%4drFxIq(BD`xXv*rX?U{cv#k?F9bIiCzgA*?&DW z&iTc$4j6My9eKeNaru*NY_3SEs(9{~Pd@53!;F!f>H;4hzdUcctvPGJWvNu8#^-#u z>YwKPIy`er^G116IrHG1>oD>hcVqKMd{>xSU%Dq?l|39sw!MHiv`BV7)wxGIilw-vcz^}ql!-FBT}Q> zo&SKh7wp%lzOp`t*&drhguKXq4W89#37&V=##BCTZYRpQr`+`F`zwkO-FB>`~Zy0xM$K~uf>xFvu7NTU4dL=5=*9a%^=f1e~<{wcrh}4SI9We$%^}m8He#$v`{BO-7gX$Vt2lM@oHQCZ#B^dlxg*!tI!Z9 zGcJj2k%!WGLBo4`HaTPOC137>%BV7uCk~DF36T>Mc1zRXcf8`U%s`DQpbH8e=)A`Z zKyZ-&KCvnu;b{J~dG=&pX7)^SnpF9}-n@S$$|P@fAn`z!1^QIrXP+!v!*A38C145X zR_TqQVkDd8WRe6VuJ4~{3HnaHdK#)%*<|(lQtp?xH>!oddFmuE{yl02=2>CL27p8O z2QX%@%R7wuBS`u3v4>`!3SYgnCS8r4SBbWu%4E^j^))S+t`?TaT&lq9*|Z}4kr;SA z;9tB1+2N+J$WA=p%?L-*Mb_>vzpuj8i$Rk*Wt^^^kMcgbU-{1v-LoFjJ~0?)ENo<) za8%UDil8XWys(b{eE*BA&S@66r=I6I9LXGTP%S@pS#Uv|}M4EJPJ%HOR%VjU59ZI4vnavGoH zly7%tUPaj{2~_)XwV#n<+@bO7lk3~J!nNw*+lORi^{m>%@5c`z$t{n69FgL47nZ`9 zhd{FfgD0+B*##3 zUDtE=K=NM-x8j9m#wJ50N10!i$x%*wQ_V_F1^rE1qIJi3UM#=c3G!Q{pToQKz#Pq` z796;aL;f0m*g%;BL=Q+{;aMcU*UOisaZ7@1LCP6tNGPQBu){y#Mh*j7&v{}r^nB@D z_ICYdI_ZE5=Xf_gczQ$W6k!tD%Lfz*@-snN7aBT&NjNMGA12tNCSsv-PC+IXu$$>=LYl-p*DgYM5%7TJSY@&$g>*0ox&@)~wta)Xu4g@h7eGa}z`J z-y)49)T4737#>B7<54&0R6}^#Da6c9njrd}14|n@zq~)FwoT)jkB@)f=BVZz@epfC z7hdk?S+nBAF@A>iV!18fYQ1W|p3c`4MepVQR35cw$W6@pzDUsa<;bHxILLcwz}G3r zubJASi;@%N^_Y1MyNrOHLK6;+5!$Rt({vtJ8MI<02!N<%X^AMR+)6 zxLSgRy=-1WQ=@p^bouoTjL135-XDJDF}s z7B%qGC;m9%2W7Gq3fmqTQ=Z%OZPS&l`y{`v`SBq=rKzD&SS$hPspGi@=!i%=?osHV z@}Uw)Fc&GP+gZ+KF5rqx!~TxfjYg7(eifharEaO0n0V^xm_IrKb4-PpLy z|I8LsI~o_JQI;B5a!#u}xhdyhNZboZGUaxlPGHswG!@sOt892E^wi%Qnt9<}jFzm1jfYZMp*{6N>AQ^o8=G57=vfg5^!7?y`tT3w}9Kcvo6-wI`6 z$oT~}r%&B}&Hj0!P@TPTPxf89-10#`h0|W zNimW7tHbl>`9l`hUf%nzu%Z&_d|#GT=@#V~J@hWS!<%1wdZ1DmiV+temdS3Z9q$4! z)XDk!zLre*jQazcK~1Ovt^3wlG&eC8~d-b&abU7drrktm&)=M(sox%_;T z_@JX!v$h2WRUHfpR^*`8U3iWW?D|g}a0EMTYCJpLk;OI2>P2oAFVEVZE;^IHN8qw^ zw-@dVDm72*z9Dl@z?hl8$`8Holip=Oc^Pim^SD#uJj(|5DSq|R6>ef)C}5qiNJd8S z9kb~*F_8n}32#69?gv>iRP|zI2tkqJzbcy*iZp z@VxiG=lcd~Amvx1LPSt06S3G6=7QQMO?zlujjuNMo#d4?Es|;brw5QLH!zLcGTdI^ z;Maem`gy&H-N%&*_kW%lVkr;kHlfbmnM#jvVK+OWaP^7`*x6PfD{AkWu?+~!$xNBl zX@L`z*{;NsSyhw^JR6q+h#g*n@AAXbJR%4I5+y8En_AofKDXn?uBr4oH(j8(v2Xu0fBwoTiy6CulR+WRKQWW_5#OZ#^@s0TebsTuy9_I3KCSzOVN7y2 z#OAb<{&{99;-IE@nIF?bY7pwjl}W8C5nD=VRgR6gyCgw;U>>A`MqbNfH~iP9&#_^jLC?IE=Dlwn5;6kW6Mt*`#0o=hmGXmzIkeTQtAEKy?AzPOs zIm+Ppy$w-5V3W(8n+7gnLW8$IO>b2;$r3iGqP{AIfL_HN(6a4+Ua7#T^eT4k%ym>* zYx6rQHGXoG=l@u9BdBVc;oyDoWo)bkqRz(h&)O8z!lO%m!cg;HQv>MkA;lr2&E3O@ zNXitVoCsMf(Jve#+ZTqk?SK9oSaYASAhE^-Fea`9sZx+9PAx+C?B?wz#CqHGmt|-| zV#!BdznW1Fr!2!b!9xwNXikqTIS)JVx4*3mt<_lgc3TJwJ0Mb$^^IoTgPmoJ!u4*z zU6^bOBhKRBc-H~%GD?6=Fr6K^1aa6?DBRVaUixGC&XW+j^2F#NJfJ$X{U#XFTZ7X%4Qg0X1Hlr&Sr3PEisuj zsp_aWT*@&R;)1%#GtLnhb3bz?J}m)tdW5WJ%d@jwlG{n-z*D5Z^1J(x1hBm*lRWHM7g5BQM=H?I{6jCpuwT_br-_HMLjLn8F3W}_8l0|w< zBtp-wkSCA3i|OHylxZ09qQYI`_m_@0RXTWmYvs_~eI@n;+IlLB_d#y0ZvOEjouJ0~ zd6qR4==7QUg*;Yniet;Q^l-fA?v|6?Uz>?LW(G#J-+vqL{d{9RuaK-U z95`r*=JI`ETNI?=>04>Ysaq^skm5c6FW&qk^BzA;6?g)6j+R1Gvs$pzR^v=t4;VLp zOb?hR*xlGuB@@2FVSuJcqaXsKCj z-aE9mssdc>cHt4f6D;Jf((+d`&uTQ30U4aXr+%;E(4A^@pb{;D-kfz$LDT1$DuD&U zH|#G8?*H@|IKQ%f$=nw?(_5?wsQZstGj39lf-7w-W49ah`^8L-_p6iB|8T_NJNg-V zA2wple!&a5pYVv9Tz^B=#y z;WssHU%PW-_qTp+EOJK)tEts2#~A?hzY^FUmg{pFt z*pGLlafiT7VUJZ6ckDEKf6Ao$9KpS%1#dQF8Z_A{*=LSf|502Oni{iGb@cpE!PFyX zl{+0}TYQ)~-DQAV-XXQZNqEMrV{iCukDc}JV|m=F)yZ~g1;^GZH*`XhN%a+#*Yp{* zCd0xef@t4RwTJ-YXU)}rGsrOOnsyz87b6UXKgX_d*Q>^T0tw+HUo2-T%(c_IM!s}H zer-Yq#lQVy#So&JaTEnW>?}H9T2NCk&gThdE+>H*)kz>6VaM^)mn@H3vngAx|`f{90Az}0e2mW0dD3sE4cPgF$>DRj=v6A^Y;8c1pwRQzz&1rBCmrz zaS{I_Psl#xX|(Rhxym{`)#)*Ypo1!lU4O#5R;TILgt4+hXEMW%MvJdHkr?o_Y7D&E zZ@MkK;q|q_61WZ_nl5}4iP6Kepe?8S?Q9>@cN8bxAiu3v10LD3lb1qWf1@&<0+$kx z;LnP}0j}%!o)7OW?EX}Cma{8Rfrc z^&|x+lEBpEKl+MR^8eKdPW{)GMf}LUuhlo)rk3!U7b)(2V>vfsl4R$7dv&KKaaqVa?-f79RD$lC!F zWhl|9{G_vi($gfKlcA!8Pmh5^oPu(oUv++N6E2n^8{hf1F|A0z>^#`okHKYR&$Nd< z0c0P3>8|(RTK7LS>j%G?(o96t-tH(pI3$?%lTgBulzv5TLs3<_D}k^#mB2xL&ULm( z{~^P`2mSQ|HrgwJpbMxVWHY}?s*n~s=!e>O$o{igTX{zkQ3dD>4@`z3YK32Hz=U;%B(;Agc2JyI;x!(}_*5g|8SUNrU$Q8#rA78e&R>Gn z)OlYEbmvs0a~aXKL#s&r2iB*c2zBbbnZBE8P8 zPCiijb>Id-`u=&&av=Y`-b#aoB`iibY zo1XmZR}Hu!0x<`RT$vnTuabHPvW~&@9Dfznc9-^Y2~izIpLgM*;b=0Va3V@Z0Or4B zV5>|jJp@~Vvl#yi*p7^45ZC(xMc$y1(qR&vyJ5@>pL>V+eTC#h;5>G{f5_(Wt;6y_ z@U!IgX2-OUPw1yDQ<^Xm%0O0d;~-*Sh<0VV(vwlJxHl13Mb>O!U~N*R7|mfev>U}D z4tN;?rIJvtX!k7-y(9cHDMwMnZ-=wpJ&S-l{ADde;>K1(F0%H*%8xNB zuUCiNgEH#iP(C&Hh+yVfT@=NoHsx$WT+YF&PSr2=1kL@$@*!j@_&5jg>v{9fZI8^l z9Zcwwz2I7YWXeI@0y4~O?|m6ccu175&^&&bJL3vkFj9SH^Ua6wGX5_`=PXrYl^Z!z zq5WP<%(-K$>0QQw)Yf#Q(gRBtevYoHe`WzqiJ6n-fG646BW$<2onjpD!+l zu$O7KnF)5ylU{ZnGkf`Q#eDrc_L6`-#&eeD5Q#B-HD4gF|Db^QRHES6P%iJ%Shud{ zp=$2x7bkUJ^wv%{uVT$;D>YI;h=LrF1Mgm-K;B+_z3K=_(N+z}g76poz!aQyQ-x{6 za_A%l!f%MuI+lP=fDxWTlz;sG82URa`TtsANB}V;yqf;B{3jZr@j~3qsu;~X&Uk^q zier_4999Ug-mqDsSo05@b`L33Db6B`L?-t$iLYz2j32)cCkj3QNls^S9}Us?+(9Ec zSM(Mr!U8@JJaKN2Y?}ZCdFT0&@nMWh(c1?uj^z4Z;fm5v0mk?3Fily1xj6XY=;`s5 z1`x)+rw|QqKhwDgr+aH~|2*k%s`B`Nu8!~tPA8pzn~VcFg;Z#sq%Rv4;%F&+<5x%gU1uz1foL%v-P=rA7RSm(`bS%%M|j0 z4R0hUHf{tQq@&Yq+N?w~^Ik2f0ki@(M$_ z1Z3Axn@O;0HZcFjJd^q(s;dvYI9lU&VN}?ROsh9N>sKdcYFOzeun8lmWq$%?yQC zoK$CByz;PcFZByI9d!*P_~7L6klbC_ai;I(6Jl`TjFUB}$YKM3DL+GV|1{YuWVD^N zdf0Rig|xW;T-Ar|Z~pXCgD@=Q6ddSA5n)=AJ($@ul7%XGWH{fvzcoTKWOwmK(SH%3;ay+D{ifVfiT zy%!_9e|j~%f5say-8BgN_;2%7@yXlI_IWoJADm!1c?{9U4va(e(~!#x1hgPRE|Q%1 z{c|k*n4vp7LoKRvAt7jq9^pL=d50y4(JjbBdraH>DoP~r9<1=e+^VS@ddh3{ye2EB zJzn(K!T5Rq94^S>Hns7{5{qNOFBs_oq2zPc+t(p#p3&Ac&yR37W7}I<#{0U}_T5{U zwD)*D_)S@1VuK=OgVt((L2&GKA?=V?w6T(VwK&(E0eSyoFF|7x@_wM`w#eTw#SL92 z^lqLpe@26!G&Wzky-{(G{T0EkX5#Yi65R_huJIZsaJq_R5&!J#tJSUJ-^kvK)k#CKseUpvC zmX{uJMs4YH%g8~|QvZs?faU*9YTXH^FBvIKYp&C#mCNaD<8k<*X4+1C9w{*MHAK0- z0%z1Wb)~b>RDg#ikY^V>IH{39|FhUZ5@}9Q*!d7e7uwurFMIv z7J6}tEWCv4s+Wu?W`Nyu`(eyK<_*#bR~qic>?VfG->C>YwOG_a-Ew7AZ$J?h)z=SJ z^-<2xzM`jY)CIM@dN>|S6zXQKRqy^C-J(k9UVR_FUE_N1Iep>W?y8Zni@DtNi)M=d zrkMl_+`+rCuU$jmvl@xb4QD3MPxMCgTY7>{=nil@r4vWKQXOM<=OG5+7bD7`=BqKe zf8QL6rCT#Z@pdy&&xrros(*2E6XV=2s75I_=;*?h7^6oIG%cK-F=5+x6K=2wvh<4# zFhds@1nZmipU89mfpTu4+M}#h^Oy}WBvS3m=$>j6%`1Qn-ed+iQ%Nk}((vi`*I z*Nd~S)Y+#Tci)|w{=WjW-e|Di?Fn3b-d&OTJn!jn{C#eL_5G~+(c5*FW0Vo|_w6=J zTZ-4==HJkN3;(qgixjeyT4jB*UA!QZm@`a!H=?I!pdUqVl&c^6Wta@DU1B&m!2(9W zYe}MEAoUB1j7Gf{qttLf-sCn8B$*FxXMh)w3=X`0gjXKQ-6ZEEGkD3Z)I&WjLl_0q zsI`Yyt$Iwh>(`*ipi~}XR!B2MQPRu-9;&+dDsKOlX5d+z|J%1KdNIfa7J?}k81L=- z{O%_XSfK@_XlDfQSAaaC*^lk!K{G%U*}CuXzqHSfXKaN@Xrt^sp>Of$p|3NDDe*2_ z3xWy$w%^A-$R6aMawdb7QSt1C|5ORcsQV4g+nvSG{-cC%ztbIi$W&!2LH^y95B&Rk zMvi=(Q%L8#`Tg7_`uS^O(FL8+E1C%?;}7>FsiHNWHBY-y2@w%rP-{0rL2>T?Wexh*4_HNMBMTrfc0n<&`Mhm4_xUnrpf}!mkHC`Ei zM5>&dfFe6ch3q>AEZ<@?A#bX)-w%;)mE;7Wj!oz&u?|rM7~__&GufJY1@j!IeyG+K#Dsn%`AVZd`+OyNdl322*Qh5g45fuw3W;y7iA6U) zvxM&Fh7-POPGGl!KRv0ZxxH6>OPTaDvB^9JFv$MdYlKMBVbr)Ay76TsB+zvMG1G`z za^X3Cs5XsN%8;Q<_1@_9hYNQ5T8}+jhF6__A#M6Pgkt3vi&g0kqni(g3wOtqWK}U* zk0)}6g)Qvkzew_}d)Z-pe~!pli4F&bo`tIR4<@nW$h9)al^NjBx{~DMNx;5^k01jL z2AP6bW8Z3hOm53iX4CB-TCO0%+*s^X&vDYTq;TU83{=r^CK z=$_V((2m6HH{sX6E5x8s5IhRoM$5cH@@^7L z_E(t(6eW=+nN}$biri3!YH9)2L4tZ%QU5^ICo(IT?_V1Fm!ULcf)RRK9;>z9Cg5~m z&oZ`)`qhj{Fo^Ml)KN~0BseaJIZYb{Ysx|^Syl=7O(a8`s-_$5Qt>Uq=B%3~l)iNa z(mFW1r}p5My%pUtv_X|KjI2s~&k##}?inO#J4Ac7$=dDYWrZc4b4@PG(NmEdnXYEE zolE4UD@}Spbo0l)X1O8@J|#+PoaLg|NJ!fOnMO=C88yu{4>vP1sBMlGug4;fN1K2B%y>XNcTG@6K>O=3Fl7X!0a5;*+gewe3q6`L4_6VRj_sSPrJ=rBF9!piO1V>B-XUHHwX z!@4p|(nilRSz(WlD7x@N$>|0rm`9VhAftpqX|Q6B%N5&9kDyl->hZ(BsTt%wbuLJ& z`s_t+JZeLX@t~2~$*_B3Q^V0_>260U)@r~B7m@b5eUbD9IWxlDjIoh7S!>Vj$f*s+T%ECqnt_9-{=*30)v zI=TR>;dy~omMmXD!Q&XeMtt{oyn_)Ez4;BwqXBH7$wJFnG2%=(DWSOy|o2 zWgy-`?bkEJnf$wq9q97cWEo#wI|dAyD87Co66=@uj`TdacxNT2vS?rU$i$uF_8tAN z{+;(aTBM_g8E^1%9l#9CM#@X}ex*lWXTvPa8l?AmVRETPQL_hLNn`czIxOjkn>YGG*kMW@T$5 zl>=!;DqD;7Q!4weFDhf?eNd%hz;kAy&LGzA0ckn+&Bo^PM21b)pXtrp%Oam_giJ24 z|4s?@Z?+yBVK7cHu<(?_cqJ(sYTcEI8!nKmNzw0p>*kcn3JSqaHXCNjoPe-MgTTWS z{w&%l1z_KdTI0*vyYztm;!KhttcfNg0u;oc4){}6M}>t62{d882xArcu$aA~nXMV5 z@sz`{Tu6ezOs|<5X9p?mupYw>D_ouct%=V-u|{xX)H01Y*C;A=K%dL9wU5H6J^73W zHW)ey;G5IN!7mvvEajDsVwh+EtO#ia{<6a3S^9)ubCMfdOfduw95|!o&b>Q!uLeUo#E7o;tz9MSzbBQ1gvhsesHET44dZMQ49>fYoRnnV6@GhG>^^pm(t z5w-Ul({IyO@DrIEwnHbxMKdq^a z+pq+_dXwJ7>P+A9p@ZzEFt%#H88p`6Rmnt?s2aFx!z zc|Hd7kw_l1W!f2^cJloh-v>(g==ZD?fwlGaxZRQV5@u#~NrYP(2z z;}o+Gu!C|{Ai9p)TZ4u;!@Y%>983$4Yx7)(<#jzMy91xmoRsNhQ6~7+AmXRE60p59 z9&xl3J@XXE3gAt8E?pERh@+(s3o`*rl&&%vi&>78-^izT(&&?X_j2mrprh*dq-BI9 zSpfZ6wQv=atyXV*xL|ec3}u_KFz=s&DawD%bkQB^<`S2)4}N1qU+8m*NPJ|4MId+= zgAxDG^;kf(22#RvN4pEtRJ2KD$VBEb$(=NUq{(6rEVK3Opn%FEMpf8g=d@)STV zYjK)o%vK}5GwkKMT66u~c|W~_1!c?@2N7Y^73!RviY4qlpAr?&;?2LvbpIb3wwG(I+j(4*WR^x(~gQl$l_>k*`tjL$Oo1;I~pB3TiA^!(51Hfnrw+fJcn*ws># zLgOkO5y7On0DtrW`*}^N$8K!D&*1U}7ynt_daaegutKm;K zn-Aq5a@JMNwGFQ;pX%XJCsAjz-rbl+7F?iC&DM|)2S_5TQX%r+^TGos%y{}~@I-n? zLK%EggO|I+1(kd*wf#R4n=eUbhGu?{6xrnHf%BtGod2MypS;i*qv@RDv;zC1Y1T}b zy!MhSf_8La`;<4-ew-3+Y0E%nQ9zu~;&h|ao5e^UzhhG~Ix{jK7R4}1oIoJ-Prp52 zI2-tomrkQ};#y4N_3!VpT0Cj-G(w$xI5P@92Josm`m`ptTrn_udWR83wntHj9g|Z0 zl@B!h&=VRl%7g|mbCCZ99h|~0qTtt-eQ>Mlgz_IG;30T6cvy@2N(N0+-@K#&ivtXo zxB`%Sak~Am`w0#Y2@vxdi&q1odal4{u05*njwqQi>6<$C28NKCZ4$O4b|lJlS%_>J zLvIPE(VZGWAonwIKblOC8M`q^!XUl;7unZXLG_(AnKlef7|QSy#Gk#o6@8B?J#v4O z5gZs-|1cD8$BU*1%KMX6Zg0R|ZC#*M^W40g3&CWMF(!bJ$n+ycFC}9)m$rKG%%d7t z&8O2pW++GSCfa?j;zIICruD&QpD%5-RzHMq9?_?$@twiP_&U*dG%TrRS?vP=?Y zgb;mv_7N+S*ryEQIK5ZCuD5%CzV$AFS6em!|czwQ5b* z>gVo;BYrWYzsBkQ&Bu409faQ-@J-Ym+2Xbj(%&Jn-8ADKuqp9WWb0T}9AyuVIA z%>Dh2=Z$p14AgxU6foc;iB61k6e_p@#pX`q0BXbps*8U&zYhYNr2l_I=aM+_LpjPbpe@mg{j6EKk6?26JqdS7jM{!Ty5PT95EDv9++-Q3S@bLyc^M^9hp*^z1@p=fJaNHDf=Um2%lglvyy zY&*q(!C_HXnn%!c6Puy>>1KxhREbaNYEdJykJF(kp+hv|rS4Okv+1@{Y3JtbN(t$q zaD{I4?$jHDzg}R=I2rLeHd6P4RIp_Fcsk!J*OBdiB%OIURPX=BpL1q0V;yUjF!pSb zEp28z6C%>$^@GBkuqx z$HpjCy$<|#&F&3AX|pr}O}1{OCu2p(+^4NQ+e?(k)>Rtna<1IR1>xB(4?L@!b5Q9N zXg4MlKs={1c#vNxT0a^cJKd?}>^WAiG#U;xHf0)tz7dp=30fpF`yo$Nh?>aqb!yCy zekTQRd%p$=K)Zzy{7MowX2();Ga2%#2h~$S4bd=$i9rV*nt@zNjue>r($_*)g%-lx zVPt>zttBJc4Zhm)z2lET%~w!Nz@Bd-0V4=mET8`O3qB)ADGkvy1M5qK@IGRU(XG@I)Sv)Mgq5CTUm? zUffG}0dHh2aZ~vo*m8=y>#BghHPk0CI5Fjam+Yfe1&b?4S<@OGlh!XpWwJ8jpiVQ_ z%YAhhsEUUc^Yg9F?}LvPp(5fT3a$E6C>!TBz-*WDQ+&71#mFXVEr!QYzer96R-BGP7;J*89qeuLt4S_XtL%Xqr-=&nUuBB`ndi^wo#{l6X4S{aLm2Jw|~Z;IJquR~52~+KO-vt2uGQ zICDI+0M+GaDafBZ%Uh%!Bm6S$8M~R%tB-qTy7TQu|CNmoLuzX;Z1!O02)jf~37BSI zdY!mj+kDnlZl`0EU)aIGw8~ASr-n@dfKs;+IiA14-}ZtC|~L2XrrjPyuwiuuBN2Sy}Tizu`b+ zanjIDmw0Lp_bgsO<5z`|CS^JVR1ljpeQ}`NYEvC(>)&-7`|-@1o|^Q&-7?sy@8YkY zEjDeW7^80!wiT;^I*7BeqM)n|@}^XmgphbzFGLv*Xd;DDZzS%@)il?x?&Ppwbn{)lr`ZdhX26}Od#Zg0Dy)Jmai zP66%>NopjHyW{%v1D<*Xv+Or!s&w7hH@>FSo`0RItx(nnT~2hL@X`CY`WT5_pX}s0 z7V)U)yEUl>FCEOzqpQpK%NMrxP?LcB7U%=#_0Iyo=|x2=ob_E;c65T=Ipe?|(9{+B z8!Jjq*8EzCJ7xL<%}+&6>!&~6o|!paw>gc})<;Qsyo*!SD{mDcPN=q+ZKzC)*F+2p z9jneT2fMO%&g6wC&CJ)A@MgYTJ1E9{Fnj`V_lkgGS_xMS(~#K~YNQjrKYzC2cSlBl zYe$%|r*zMmMStVJL`}FI(NBf(5zl8#^&t(%nA(>^AEDu17rkDa(Fpe+e$STtq((GO ztojZ##NEnUS8jIpV6OX}x(C&|^l8^yE~=H<*~13hvGRX^d-++PzU(_D60{(QXf3h! z0Tg}8UG~TGr)yMj!m13dUvMaljrM)XoSopm$IKr~dk$h=C$Six?Mn5XJ4)ug+Lh>b zzzf$$0pw*2H!-Mb3w9GF}9#&i7z!WPd_~;R;MjuR)n&D=qWM8yX#5*@<&@A^M;v$i?Qfx9Q^ zUwb4=vLG+~hFrAI6Jq~-H0Ccf%JuRDafa0)rJ3jRi~@8UI-#mc$eO^m3{VD&{l^`T z_ zvOjteMtp!3k?zo)(*Gz_z}(?q@FiyB%Jwbv1Opf~5<)5!O%Pf=%sz2Nj6bZ2t)E&?L-zLTY96XHrPf}XwR=y#*}RnPZt?y6U-J>P)<@)2 zdon0h=?u^jR?X}Z7t@jpLyvGrhTg($`qq66KeZ%oP1Lut6ZoQx+X&{9m{4*)zx^x) z+2KZHc-$8Ezu{{wJi*rJzfhw}y>--x?Ml7Z;c9`88YmWQc^$8L{Mus!kOns7_Q zXMeR|z9-@5<4CwMpyKr4CV**W6I%*dHrze!%(uYiBhwWZsv6c=f!qQ zYFO3v-*y*O8iV~p?D+w7c4{q}wbI|dbT2&dQP01P(3D@rm|wU^(}o+-S8ux9RT{tJ zZcv@)^<4Cx|CKz$2G^>9mm#0qrUz1!^2P=<{#9QuD~oG3t?>DM{$X+M?HZ>0G;4nO zd#n%}b-oNzIYW|QNfn|`TqebQ0bY%Jtm&?VS->{vBU0*^Rxq0cf~=7$fO&FDYcR!U zAC69@%K))CG2f%$tO)gg0TedIU+F!POIH4Faf=o3Y~$g^lk=hc>0jSgmjC`a^K0*2 zxZ&J=q$Vk!fSx9lIovlF&5j{iuC zNF-(A*{-^vV$2Gy5u{44#@=pfRSX@w^;7aWf789a^M7bfBFK4gbz$f*KC~@y0E6up zOj8X+Dj)32zzT1PZ6DE1%AC6{fI`Mz(F2uqPA>)g=H%P*zncNsizP2o=1#s3IE1D7U5c5$*jwJ z)fRk|FCXS)Yj1VQb(pgv#%#n6zJ-e~J{4-B{^FGXASG)fBozn>S*udL1o}q6S$X#O z3Uj<=haFn!PGqZzO{M{=0y|M1Z?&8K_lp?+h+iTBp<7@#*H0a*KaA#hsE#Fz!21Bl z@cIJ;T3GuASHz+V-dBFND41z}N@Jlln*&bQEL&m?iuG)mv4VQx$rNdD8uJD?t=&^C zIwQxH3YH}y+w@ifoX}ud##=DHiESXJlqSngwuv>gTm;vJ7}@~dgatD`h*F~Ii1B)SwYV¼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%0AIZvOXMBAT5CQJvX1`~F-DD7h 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 Pi;vruV1tzV%O}zkl@o=js1g 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

RduNInm-lS;YQ@y6f4Hp+ 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 av37giqg$gMK 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�g;|7z6_0E$>Qs@=BU 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�@fej$roa1&n(y#{zY)Rbuf^51@QtkA>mxe-H+U}q9%wb1W z0sn@ndA_+Hm||eM3@o)*MJw)M3Gli1^uLq7d7cKIU*U$5RS`-Lm^UAlft zv5ToX^WD&ob}|oh1ENkD8>X|Wf3w3v8JGTpdT0W&;F2r0AH9>y$WFEa7aX7BBw$&{ z!XSchw#9s_?k*J3O2on0&eff3K83_8Y%D!w`In9sKwp&dZW|7hOenAv?fbLjmBSh? zKvauQZ8OiAkHP8lj>FUH&5;I|3p;kQRyJ3Y#02g`cQiF+X^TY3WuTWn`Mc}yjsE+H zzpv`6m=n+*y1~Dy1vcFLN<<11v5uIYI}=igrQxp3?5 zE(mW7VKO{wh)4Z1X#?2)SWwf@pnN>&{wDN=71iPe!=NW4ax%rBEi8g&h;j@k+Tsf6YyHM%xJ*_?={* zfIG=MWt6~E&{4WIS1koG&Qw87V|B68i&2p6x)MuiJ7zCj?2FmtgJWeBp-A- z;Tw*CD2uCf10d9sH$6uDq<8aTxFY>_;1AcjjODzhQchgxAgs^*+giMtvWZ|ij={F; zb6h3zF>LtqS=b|4p! zv-OGa z5%EEbDg3m46JG6(%y&|&>=BsMP*3XiED6is35&5bkvsu0(l!{52keur@aw{wrtd@D zt4wwh$1z2astXy<%kKY2ICKkO=#YcmYjI>3{Y8qxgn3o@hV_yE0WFUn{S6f&^rTzggyVk-eJ@fyuIt%<;MIUvdA8?2i3Hb zv1tw2)`Y3Y77QwxV+Sq-gqNRcaqURUq<%WFv?7TqlP`WDCz6@t=89GTZ;0#^Z|6{rKbO~CLVGGRh4qB z8L2_SpHX*spEn-Gb!0@@&@@f9;qTlH@+@ZpMT7X{sqWPk(A_`g1-#Ei=7GzzM)r>^^yU9PU4b^e3iwLll}a0q}EDQbL1h-Eq=S;}-yfH+8K02OCz# zSSockLxB9Atn$rrsIQ*a&^^P!oY}BHo&zN#Uwn7j&lSR*M=LUUCh_w-^d^oD=ex4g zFi3zR>aZIS%{|Yw=PO+#1Y!bxJhVB&e6R{Ac3m$Ri;`L*BQBq`*lwK25xu4UO9PyUTj2!2U_=si_7_)zsk-Qog=&M%U z9^4!l4tR>+{e0SsBS|DYqDW^;BTkmRk%0A&c0cxrJbQ>}9bX}CA`Z;XGsDis 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 literal 0 HcmV?d00001 From 9b881df465513b2ded5a9e19dbdd5f910ff6c6c2 Mon Sep 17 00:00:00 2001 From: epCode Date: Thu, 6 Jan 2022 21:55:01 +0000 Subject: [PATCH 459/720] Temporarily remove glitchy Elytra crash-damage If you fly in certain directions with this damage system, you will die. also if you speed up too fast. --- mods/PLAYER/mcl_playerplus/init.lua | 6 ------ 1 file changed, 6 deletions(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 50fec2bd6..92af5c32f 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -173,12 +173,6 @@ minetest.register_globalstep(function(dtime) and (fly_node == "air" or fly_node == "ignore") if elytra.active then - if player_velocity.x < (player_velocity_old.x - 10) or player_velocity.x > (player_velocity_old.x + 10) and fly_node ~= "ignore" then - mcl_util.deal_damage(player, math.abs(player_velocity_old.x) * 0.2, {type = "fly_into_wall"}) - end - if player_velocity.z < (player_velocity_old.z - 10) or player_velocity.z > (player_velocity_old.z + 10) and fly_node ~= "ignore" then - mcl_util.deal_damage(player, math.abs(player_velocity_old.z) * 0.2, {type = "fly_into_wall"}) - end mcl_player.player_set_animation(player, "fly") if player_velocity.y < -1.5 then player:add_velocity({x=0, y=0.17, z=0}) From 1995055d0f2949bb766155360a76b658fd8a5ea0 Mon Sep 17 00:00:00 2001 From: Guy Liner Date: Sun, 16 Jan 2022 14:45:20 -0500 Subject: [PATCH 460/720] Removed lines about looking at Minecraft source code --- CONTRIBUTING.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a7383df79..612d8dc96 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -245,11 +245,6 @@ need to state their sources. These PRs also need Fleckenstein's approval before they are merged. You can use these sources: -* Minecraft code (Name the source file and line, however DONT post any -proprietary code). You can use -[MCP](https://minecraft.fandom.com/wiki/Programs_and_editors/Mod_Coder_Pack) -to decompile Minecraft or look at -[Minestorm](https://github.com/Minestom/Minestom) code. * Testing things inside of Minecraft (Attach screenshots / video footage of the results) * [Official Minecraft Wiki](https://minecraft.fandom.com/wiki/Minecraft_Wiki) From 4ae323f8f8e475780f845a2789ca30c01a186e72 Mon Sep 17 00:00:00 2001 From: Guy Liner Date: Sun, 16 Jan 2022 21:19:03 -0500 Subject: [PATCH 461/720] Added back line about Minestorm --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 612d8dc96..c2319ce5b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -247,6 +247,7 @@ You can use these sources: * Testing things inside of Minecraft (Attach screenshots / video footage of the results) +* Looking at [Minestorm](https://github.com/Minestom/Minestom) code. An open source Minecraft Server implementation * [Official Minecraft Wiki](https://minecraft.fandom.com/wiki/Minecraft_Wiki) (Include a link to the specific page you used) From 9792cb5391772bb7711b6380130f3b6740d4a3d1 Mon Sep 17 00:00:00 2001 From: Guy Liner Date: Tue, 18 Jan 2022 23:33:27 -0500 Subject: [PATCH 462/720] The project's name is Minestom, not Minestorm --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c2319ce5b..5cbd6bcfc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -247,7 +247,7 @@ You can use these sources: * Testing things inside of Minecraft (Attach screenshots / video footage of the results) -* Looking at [Minestorm](https://github.com/Minestom/Minestom) code. An open source Minecraft Server implementation +* Looking at [Minestom](https://github.com/Minestom/Minestom) code. An open source Minecraft Server implementation * [Official Minecraft Wiki](https://minecraft.fandom.com/wiki/Minecraft_Wiki) (Include a link to the specific page you used) From d2fa69d4ed0f613319c096aac042de6666e545d6 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 20 Jan 2022 10:01:59 +0100 Subject: [PATCH 463/720] obtimize glass detail images --- .../mcl_core/textures/default_glass_detail.png | Bin 4942 -> 120 bytes .../textures/mcl_core_glass_black_detail.png | Bin 4706 -> 113 bytes .../textures/mcl_core_glass_blue_detail.png | Bin 4710 -> 113 bytes .../textures/mcl_core_glass_brown_detail.png | Bin 4709 -> 113 bytes .../textures/mcl_core_glass_cyan_detail.png | Bin 4710 -> 113 bytes .../textures/mcl_core_glass_gray_detail.png | Bin 4703 -> 113 bytes .../textures/mcl_core_glass_green_detail.png | Bin 4708 -> 113 bytes .../mcl_core_glass_light_blue_detail.png | Bin 4708 -> 113 bytes .../textures/mcl_core_glass_lime_detail.png | Bin 4712 -> 113 bytes .../textures/mcl_core_glass_magenta_detail.png | Bin 4707 -> 113 bytes .../textures/mcl_core_glass_orange_detail.png | Bin 4712 -> 113 bytes .../textures/mcl_core_glass_pink_detail.png | Bin 4708 -> 113 bytes .../textures/mcl_core_glass_purple_detail.png | Bin 4710 -> 113 bytes .../textures/mcl_core_glass_red_detail.png | Bin 4706 -> 113 bytes .../textures/mcl_core_glass_silver_detail.png | Bin 4705 -> 113 bytes .../textures/mcl_core_glass_white_detail.png | Bin 4706 -> 113 bytes .../textures/mcl_core_glass_yellow_detail.png | Bin 4710 -> 113 bytes 17 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_core/textures/default_glass_detail.png b/mods/ITEMS/mcl_core/textures/default_glass_detail.png index 791309817e12424da6c346ac9e68cf0abb1ca2ba..6205f84a588ec196f612f886fef310a1baffb8a6 100644 GIT binary patch delta 102 zcmX@7Rxv>$fr*)cfgx$G_$MI66W|l#3Z(Df{{STa|Nrm0>L4qS#aI&L7tG-B>_!@p zBjxGh7{YNqIl-ZUnTL(%j6zpyCNeP>TA%Vs0jgr~boFyt=akR{07aZ1 Aa{vGU literal 4942 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 R+ypQvJUAk#JRolUe*soZUVH!m diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_black_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_black_detail.png index 48bcb54c4887c96985dc6dec6ac85ca5c32d7e6d..9dac71149d27312b7d3f18f8cba1eae27bf26b3d 100644 GIT binary patch delta 95 zcmaE)QaC{(l98E#fkD+aR|!b51^9%xN`isz;d!w@5vGzLzu>e9TdgO7coLp2jv*Y; q$q5Y1d}3^jd~B?YY(5QItPK1n3@d*XKI8?eVeoYIb6Mw<&;$V2{uM|7 literal 4706 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 literal 4709 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 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_gray_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_gray_detail.png index f7daeba1984614baa75a8e35ad9b4145351a8140..4dbc15680bbc0e19b57fdf1e740163d0990cf3bd 100644 GIT binary patch delta 95 zcmcbwQaC{(l98E#fkD+aR|!b51^9%x`hdY{sR)n+Q%R6taN2~e){|m^JPA)1#}JO_ q+SB_QJ2{_&jcKXT3_llStx@B4hu z_nk~OO5+!~I{P?75acR}7A1hsDVEF00lfP?d5u8Oghz$46jK6{Pcj&Bl}3w^Oa%sv zgqbxe2r_r}mZvv%kz6+1SSGH>kT`9;odGkuBPwnLbmicy9|=3_ey}^c);`o}Re0Ia z+OXI~^ zJL|}fx^7F@M ze~h2M76Jc}dUj{C-N~7|=IoYv-|XouO3%36=Gj@-5c}Z^?Ur4R$lR%?6~V`At~C3d z_g++#*}ow9@n&AJE2mh#!^?rpx={PTwc+^zK40Uqj-8i$GeJA2eET5}CQ;um z4{0vUAqF2b7(L`wsj){M9BFTd)$5Ec9j>;iX$3pkUsSa>c0R~XPiq~x-;_=3{(7*p ztH4Y#dwOWcjoPR{_I1gb z@aBW3vhudq9*bvH+IZD1Ch3cy8CC0ky19et*pzWpcFnxcC6Ha|>Z~ADauhWtwBk9* z=jUHHrZui?{nP7mxw8o`TXAP#Q)kJZz28g?jz{cr-Ks;K%qZTUHYl&_<6mzGi}c&O z_2Qy?0Z-kAoL+@RK7S~^f_u+Akd|({&kpPe9}Q4`O59>TitDI|5?5eUv(5l^1_XtK znGFbIzwFCD7>B+VFB<#Gb08XoeI-*I@;I_!X(ZEAR`U^ zW(FYx2M8?zBk)`!iiz_uy(wTUgc2RiH{=?%)^U_54bx&e5K4fm^mj@wlEg_zGb|LS zH9CVe3y}Rzq)DTCOV&HRSv=Np#x?@dM{(bYelxo@7(~Uz@kKbAYiUm+5|AzR`AQts zDEZb~1;*eqFb0bfMCT|dEEWb+crb%Wf$2dg%0lQEm!TK~CD9WmM2}(?C;(2?030?O zMcJ^5MNwfGlfpt+ObVjpaw$9(gQ4OgD5_**V<0{>YJe&c?bxm?P)Yy=E9fj#iKr++ z3?_i$GBFB*1YrP*jRi4O9HxrHwn8aUeiUxhAz(Q*Iz)}p40^TIVIiC!A(aTo3@ZHA zBGn=$6-W?}7i;vn=C=-+Mu#Pu5DT01AQsHvaDsR|HcaOR1-%VQ#*73|q6L!4SnXgIzR-vvCfq2)ajk%CX^CXXw916A3=wU5J(=Tv=#z+!!9%v(W^1Azefc1#;*CT#R^if6o^Vm;c|I& z3JZo&3c_R4DRerjVse7mbe?LMwo!BfSDEq=BNm|slY(i0fUMJy=31$o_iiuwnV5wq zm;oRe6b4g9=kQr{K9jcqrt@K#OdA=PX4%zmCJv$f4<{kkfHB7a$Q!nS;{}{nw9(^g zgfk0`zvF9UEq=!e0D8R0d+|F?*En78#lU+7kE?5(uJ>Z#y@JQp^?#$w`RxM_rU$=* z^1*~5O~CMVUw_~|0Coo7R& z+x+#Zdy^cuKMZ7Pq7&pZ?K_Is`E5>e^i-$MlG{f-wmtp*_mWHEn3u~FGTm;S$_cyP zz2e#l+x4j%52?DmYO~5qOT=eng-I^Q$t9srGn|+V<};pTQwy=OyQQ_G+3CW6LI>~O zJEx3ucrLoR?7)oa{SN(C59}wd2TuBHakYPFpfCGg@#(GdrSjFcs`FENcKHYFstlau zw)vOo$*GkdE<4R--0CIlbDjxQH5boGj`e6i7Ptn1>l+plHFrpgl+*5iD3MAd+-9eg zT>QLLL5_H_Wb*5^w<^BdzpdUWYK#4jy^(n@d)7Q|PGfTDkLK8a8vbIlZjFm=QF`r1 zM|%6vuETqvU)4P^*+XsYjG^sMvl1uz*>rb(dnPwAabRuRtlHO-3fG@XU$QpHCz-=O z#bazw{4M-$RaYA7S2sDl?CVW8AjeO>jsA0Ehv0hmrOvLCYM)oHp!0W)ZDBLpOTn|L zgCcg32x3G2kRwOKeg!Na7^0UE5HxYB<+6dQs=a{G(IklzJKlEjoH8$P%?AsjfGJoa zijZ;J(5Le@@| aMGOdv=yuI2m~@f?U?7P&UUWDzqxir6I@vM+ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_green_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_green_detail.png index fb54f942be2872a83811ec6a18cde6045b39d3f6..03b9943f12313f565f67774b41398285e5d969ce 100644 GIT binary patch delta 95 zcmaE&QaC{(l98E#fkD+aR|!b51^9%xrqvq*(azt;Qh*{%B|(0{X%n_uPl^TdBs^Ul tLpY+76BwBJ#Ml`5*jO3ad>XV^8Td^YR{kn{$O}}%;OXk;vd$@?2>^zP7uNs) literal 4708 zcmeHLdsGu=79T_&KCptIh$u1Wg0e{_k4Z=*ghwKY7=!>qDJql6Bn0vz2_&EbQmiOv zRZuD_Dryla;%mhhB4q{FN~uCo6a;OlLd#K9RCX0~Cjk*p`;X^r|0Cy2GP&RH{_efM zd%y2wvN<#)$ZoRBWB>r{1bnUt`ez;$+??3tNcuf7WFZH>4B2S|7bip46Uxw*Qm^=e}d) zv+k2MLv)FH@t|!#alvdT_kace(#~&?%&>prJYU$Y=gp~HBj#VL^66L+$n^>!s6E(W z7uLS$+`n4xbot1&;QZc>%atC@yDTmYJ&n3ie_|e|y`o68s7Au+tUPi8X^iHPoXU>3 z9-0@-Oe;KB%RB#SV)Y)o69NC)+8pXyl@{mqgU|D?C`aurTMq^7U=iB3rQGz(**H-5 z)wF(~7QE=pnCCFK%rQpMEZOp9FOagKpf9>d)Bc>liLt3$PvF9$<8I0pA_DFb9Ju*{prlDM*97>+csx!cm@W|rLQ~Fnd-l6K363KeTD-Ids*gtT3Jd zMK{iKaBSUdO$E9lZ0iWq;{tVHLr95c`xNPgpRdk9CzjPJMAI#6PtWK*WK&h=(S#d_ zx|d(zp&BgxRaE?D{)N7Kond>Q$>Lq>ehhaOG-mz8c=cmv>Kwk*_u_fWK6$80W+zxKL8PwzcBEunnV}@JIYrC}HOD~Wy2Yf&7HNF#y-o>87c!TV0e z`Di6lmWaD_gaZ4<#>eaR8WxFUFc^piDp9SKk;qIYlLS&o6bb=D5Ok?3J!~YXbnYgK zVGb^;L$q>@UanT*Oq{S-ovdf$@z^@aeKfk3t3s zgrTDzCJAJ6rN-=qiTx2$FPDB0>!aLEE9P>>CW5(-@_vMVU%MHMp@c#fSB)f_(i3pm zcvF0qM2*NLEb}cLqB0p&vXnq$QW*pqosJSX5IIX0EBVr*6>DhWmf zK~j(^C3_PXD8rjTV;~4YEWxsYXbg}crc)sp@-|aR5Y|$)RtaP6lq+EwO46ug<^_}B zEdNje8&4q)CvLWcDqy`7b713_%T>w756}p?5)IeGCN;@)8c1PyQ_0>8ItVhDA3!Tn ztqz++6DJuYQifA7wS|Qhg9!_p<`g3^dtkM&0<|ctS8F5GY6Tl_N&si_G>b+h5 zC(R;5WC*3eSf40j8i58%K>|!cK>~y@DX3HmOC|K-W{tAz)Ka|x)}sD0tWvBRY=F$w z;5^MzF8VkZLp*BI38at-WD0>ojUY2v5Sayedx2yY2;xa21(Qs>`hCSdq(5llV+M>l z1~9*28+N>4rxj`RxEj&SB;#NB8tKJf7y+Xm5AsR+j>|PJ*C#3PN#OD68kg&n6!;|Y z_;mf>5?hzW7=dt-${9NnTgqPr* ztfp+Sl^zY5$>mL)RS{snI6LNGq|J_A51O1WigmSW&HB5aHKKU?uG%C{XUE!m)t1>Yo6Dr_&cz8|=jHI~Bhn(LUc%@2zKFA>Qm8MPf-P5c z>pHIdyS2*p#&h3+?w;!sq4j^bzkGgV&dg`l&svU@=sG>7oysbj@9QxS>dC6x78@0t z-c@9Xez1GK`|d)IY4*AQow+im&}nLcG2go=47xr`M3i}}lU4>h-9GP;0fXfgf7k7M zgcC>CIV{Kt4fVHQ7@c$T+dMJe|4rCu?=rh~T`SpMZo71=)y{(fDT5C(o>qN9Wsslz z&FZkHIzG8^U= zzZ2}TyPG#i+Za2|$T_TDW?6mCuX|7X7l>QwXMXt?x7-J8Hhst6f4Y_3+0oS2UL$iE z8UlXk);4flZ|7mprq<%%AT9s_^8p)%92&wblQjI#bpSABhUu~Z_7pi|MjO3A$g_Dk zb=Gt$>lnV8iv%E<#<~aeLkjEd$7XkA nCUU)pTvkm;YRPQM=28H_almf>6{lJdqX7iG5bp7SxUByHR(a#1 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_light_blue_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_light_blue_detail.png index 5c7a34fcef1e9ea940f3d6d7d69073c034cdeaff..842441a2c6252409b1b5ed2517dc03a9094dbe0b 100644 GIT binary patch delta 95 zcmaE&QaC{(l98E#fkD+aR|!b51^9%xrp>$oL<(w}7*i*`j>R^*5RvMY5J*Gd7wR|P%jf=?7hb`lWrwEuX{_CIpYWM=N;cklh(`+X;0 zwuOcS+E_VR0RUhl3KE86_Zfx@XMugYJR1c8!1P&0WQ;BxOv9@+Dk&;Q@Vaz0f=BeI z6ae&{k9UWiyysyZFuJmNk%!*|ILex9UFgLC|DR4 zxbz(EbuF)^FF%^Jexu#p>f%9<&Sx`|N(u)%d`o-;CA*TfZ_Z>Z1pTjLw(Vb@cj#4h z*R39#w!L}j+360&e<^NWZs|5J_*&a}kCnH-=*+3f+y8Q@wMn|e5ih3x)P-N3re2-3 zt1e*R@xxuwcan3@PWwmCi`aF9^$!cz&3nhwJ~`HWCDrptJFU0lPwpG*8?rfHEOTV*9zNh9)M{jJ`aKlSSmL1IS1t@`Sa6FGt^ zfuGC4f~$cKT%X$w<3`S94-OqXe9Oe`NL^c_c{a8zoKS51W5mmNkV-)UVU+|S=@n{h zc>sX7K(7X&WJHITATm_RCk)h`Bj8b(PgubeQ^ab2BoPhD&>#^RA(2ozKFE4dO{S74WQBq}*+Z)f zNX0m=Q;gDH^%492g=aazufdYO$!)k3t5D z#Gw-&1`1@TLT&WI$o|Muhe|(?^-*pHjj^1`iD2#%xF1=+uia>jS&79wp$bYdq$d*c z35NJQSOuXl&-ln5ekNQOH>*Kh_w?{fHH)vR?3VD1K~X1 zP!XR%BT+s`Lgk=NiaGEJ%TQ&C{(~YCRUi>M(7+~@#h}pG92S>OWi#1a`Uj(EM5Dzf z(SS*%kZ2sE#?TfXRt!cgXqZzBz$nLR;rVM2P^Z#Fs#J15!H^Q(;AtFhy!TjBf>14H zk#3my@tOAnWn*t+OF)hqRd~E{YuEioMCd|40?Fk!a& z^gNujBE()8FwLRL&+hB&RR^OiclNt8(4g?Rx#sOzn_ad?Svtt#o#V`X2hEx;Ulz3m z1ixJqo@jUP{8~Xz_qv<)X4$K@RZ6?&97x(-lpD|-nGt1umXN#nc><13qrc#a@*1_@ zbT_uN*Ws=_T|CtH;1VphcqP2MviwW?Cl*hxmmk*lxZD0MYv26E?(>)rvYHCwR>W<% zw=XT`_ILALzbkdOwcGyMK6+K@Z0lY6V$QxW<|T)4l8mET8@+V)jav7OAmv!qBJKCR zcu7ptOt;+7P+z;RVsft@Es_v?--LZWnt89}pN9*N;g;l^e|yj`_3iDAgLScVHub*? z%*%Ybxg7c2r}#|XEx>YXL(mT=+xb1+ZJk}`WKJU^ zz|Vb}R>9mGMcCQYLb5ba2rz;9fF&Dcj$o3{)Ilq?05E-);W7dC?3;rLEp;MsfaQH_ zhZ#JZ=J+yGOyngJ`bKhEp=Ep1U3Y9UZD{hD-yqGjw;MjCc0ADB(4gLdyWIYhqt8jH q&g{6|o#)BA&zi!_mdu*@F92|QVjI7trDXtv0Ym{I!sC7kS^opi1@P4X diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_lime_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_lime_detail.png index 963933572563e7d08979c1c002c688f0b4aee0d9..8b80407d3ca5e6bb271cdb10912dd6e693ded83a 100644 GIT binary patch delta 95 zcmaE%QaC{(l98E#fkD+aR|!b51^9%x)}N6CBBnf+-#`(jk|4j}v@O1TaS?83{1OQWA7X$zR literal 4712 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 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_magenta_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_magenta_detail.png index 8a1ffeda806b54a1b77e5f1a5184ee45bacac7c4..cd2d234587336d898dc1968f608d8d13d6436708 100644 GIT binary patch delta 95 zcmaE?QaC{(l98E#fkD+aR|!b51^9%xZt}SSMDu3E%K=50N`m}?(poShs&%>-Ha6Ym&^~-~RUA-`VG^ zOg4uu3ADsH;vfjJ6b1>x!RIvnWi|!8JHH%8AZT)5R%Em`9La!HYNb?`iox1U6$WEE znG}L_ZBGlrj(53R_zy2{STIRww)tTKdFhGu@oQGLZhJJB#H)IfQZX5;&56sk>io}8 z%fjl?R<|W6+RyrIxd84NE{_DjMHPcGc?yw$hRhgY~eMf2utuAJBNI(qYgki3Hf zC))3IST_GVFEcmOe&?4v8$wK7XD_U_D#ojaY9%6jl zg|lZqf7wxEP87+jm%qFn)4S&c|4dhllTp?^-LA^ieW%X0{uPrilcXS6W+~|8mI58ZZE?&`}P&nY~ z*!@>t?D4+(t;1i%;j}#0Kfi8YnC$7z?}F3!|6rC}V0&P3@9$3QCCY)0hT!je`jZE4 z4!ZPP51Osc_4acv+5YozuvxZq%%COP?NG^`(9&gKS2)VR^hb*pb5Nz6h)9%TjHr{V z!0vz`FP=_?pedLZ7GsGr1sC6Y?jjzRNx1lBbP-vk;$um&pe!{Ok+mce%}PPp5feu zjBp4r4XT!@v@)dv)^j3aWtx_Y#{)n7u0FX+BzjM;(2S}8^dRXF6^TM5ljL&J*a(f* zKOK;a7WB6fnn-Ynkis#IGEI$Q{^^)P>oS%?g1(PerKwX5?MP4(mWs&%R0Fb7#-$7t zibCH<=p{&$$yJ6ZAoe(sO^=<$Ilt{!8DA6>1c|rjf zug}ksC{dY&WB5uF(-DM0LkLtl$|lex5(+^~!%za1K_k;BRE){MkTFz3g+_}gP)tt+ z$cZw*Lt&#*7L7(Dpcq9=pkY!Pfh|SBEmKNi(aB2B)#rgn>!qgft ziF!^7nMfV+=$C~9ngPNh`Z)yzh6vCLhp)yEtx_GSRHkzA`jTLMq+z^auaQLwl4$@U zQ$O*eGw+8aj@*rGfmE5n1;d815VIK=i!5fM;_>VnrBs`Ns4?F}&?)E!43ME4*xewd z$9Qx`5~kOQOr;PgR07pAlEUQBnH(y8KAFNHlkud{hDrKe{jOs#(*J1UWdMvh20+}1 z4ID4vv?9Gfu0}P}%lHqzM%UsW%mAn-l6;iD6LL++^-&6Z6nJ8~Cgl1k1wINqFz%hOHMLJ%;S^`$``oDh+BIRb|Dv}m z!;`GLF0JBq-2ME{1*6=U%}1o|Gm4W7@;CW6L}o3uIFH}t-Jf9QN%j1LEzGOad~vs~ zvE`iE^*--EA3eSz5ltBoJXl^n)9%HT7q`mGG#zeM-{lm|@phX{f1FdlJ#Jatny#XZ z=+3=!T=wp9v$Edu+Ab<)kFCXS-A-0f82yTUI5Cl>Ton~;d%MOh8zCR9T%h^-S6Ccf zKizdxXsECC+~`d|SLBQFzHh=l8D85}c)4uHQL}(;CSR5KrN8aWets_2lSz5@nMtY7 zn=SHe3!`-_isP%F_M+{_4nTh;b}mX8Y@#O&?&?pDnCd*~ZhLJ*T13RFwM|aN!@@$# z*8I1$4RKaFUa4}C(S_4KkM_04qRxjt@!5Gc?;d3OuiBvf$6L4^cbnVVFD5z;4MA5Q zshfDSZs&t%(<$QMKmkOD=0K)Q8GQ&?%vC|lH4rq_Mt@C$_7%+lMpLa&=~2Ktlf|f@6LOIsXMD+Up_! diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_orange_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_orange_detail.png index 4894833f1f20d23b89b273b462e9bee265ccf99f..930992769a3f188200b55cba43384d33fa10397c 100644 GIT binary patch delta 95 zcmaE%QaC{(l98E#fkD+aR|!b51^9%x-l#VQqOjlT)j$!Zk|4j}v@O1TaS?83{1OS^d7!&{i literal 4712 zcmeHLdsGu=79T`j8eY0U4~m4S1;o7Hk?;(UfB^&qMAS?slQ2LYCV@oIqKJynf}pO* zK>-m#S#_*Nr_e(&;v;D_&w*QfHCNpy%zkBcRyZ1Z! zvN~3wc#3DPB7#|J+JSdBMp*_tw^o`g)oV`&LUuK|V#i&OgZh;(=rD z-stOcw=|rr-}B)3t%}kJpRX3U?!J1nq)fxT^z&SQ*XWlzJ!N5D@;?&~cMfgZ^#>{WtauH(1#=B^jbK zQYrQhxZ0wXeI92H3-+D=T(pnVWG8k>di`=kF}8Hpzss*sf0=_r^O7<)xepB9u?=pAeI_rZz4cU{2N>{|Gog8pV=disVfA97_;ytXNe$gzM60@jE zz9nP%Bx}cg37p_bld41a#Cy*;>gch>F2L>3(ZBQttc_oFR!HK|#eFm5`li<+UOsJ= z;tQzdw0TYgmjfHj6TAzDk@H73H5WQBKA85OJI50D*QFi2m6lT2b1s5*JWZy&(p=<{ zcv$(Q_cU9X7a6xy(Q*2C$ASlsVx9~&BLPomsJ`AVx{<){UY)+w{kC5%&Mouyv+JQ% zzUckm%QNo`cFBIkE+pJ(Ka|s>c-8WF4ctf+HqKv`+4bU9LhJrzNv-|vF||dm?t3NG zJvYV7obZ?wPuI)PmvJ5rCj!>mUO6*=!S=I(r1JiaGorWsYp>-|VIXdDd(_{GW<8o# zC0KuV#mdNp-A&J{$|Bc2+4R#l+MF=OcUP}*3U<{~@+vIq?K|yr1{CB~zwRt?xto`` zYq@Q1a&Ep~kb6zZwXlb?2OZz!+I)Z3-QjuFJ=KP^hW@*aB?rK0xME-gl0*x6h)O|% zr78(ZGAPtwL?Fo5-=Kz(bX13zpmI#fCp1Veyo5e=r+VJaowhzUznnL0j!0QC6x`6<*Q(HOi^JIVs!gKU7+WGab5 zRw&5hJ+!)zEC4c^&>wne0Ii7~}J#Dg=}AOpjD1OqI&0RHBs4VGt#M4kB8Efv$uz z#%E=Ok^(3hOG;(Y8Em42!(f1H5R}MeAOMPvFzFOj!liLg6O#ALua8F1he7Glaw!v{q?ra7?*_yiUGvJ#y$lACJ#^xFIa=ZI+Z3~rOMzFj49!bo~HK3 z`;IJ1IHm;_tBf5#+VerMeB^Cp1Trv_3XeCnEe}RUf@t9^RB8$Y{6FV7^Bi z>b)HMgT-QUSZuBg1`N|!Tq1*pf+sphN$|v^fPaF@cVAlM1dKD3uTbe_Le#Zf)O=i*;KXtwW0~w$%h>y}g(F?9@^^ zoBHH)i`szSiWIpx^L5Lrmmh!p6zM)x1^q6+7m@y^ohg2^bucY%s=HZF_qXRW{@O1TaS?83{1OSAi7pMRL literal 4708 zcmeHLX;c$g7A`~(kwstx6&*uB0X0b_BxaGY2vGu}?4V*xrBW3NvXKN55jV6I;kbZX zH-mx#irV0A+aQVqY7feBX_OHJr4eCl*M@dMka-EHaHjuw&h$TWP9>H5zWd#KzkA<1 zscZ>Zw7}AQvN;4nmcju4Fz`8Ef0>zr_i0`I2n3DlN{xuogdtjzQl-ENDMr$)RAMAd zN8k{oYka;Z^i-Rhg`j_lfMz5#+tMBfN1ooWWX+2E+dfREc^~gcJSwVPhow!|taEwZ z|MB!4T5SD=LkFLny_=h~J8H64jl|g|w7X+^J=LkT%VhbezPzZiy632CCE=TJ9cPSmLK1g5w&q?i&g4D z)!WWWe&wB+X_nc0T^cG@CoV3c(H_64Ucq;`l-eu(Q59I+o6~o`A@|}oE^1#HQB?lT z&eVnNoyY@Iht@{B?u0oH%*W0R^h^5T>H1>0>u1N>g83G)S?0k{&%}E-`Widgx7a!I zZWxcQ?i4-H1-zOS8h=u_)7>i5_}?Z`7tsUNvg^)MTc+%HMcnLaMBLutK+*%JZJQUaxcYZr~;`iwK3*{HV8 zsSASK(-Q@-3kgba3EX{(?r3BCAE@4j7u0GwI$*bJ`eSm~<*VG-HoHR9ZB}(&+%?41 zcIJe+H+)Nsquew9K(CzKRGw)cS(@;)@l5oQ;)K$>2~#qgYXTW(6L5K5d6q-;aruju z3v7A1U-&ZFy$fgW%}q;j)221k3*K&J->*GH9Q%jt;@MK`+4-THw(+Fz;tLn=XC$q; z!ISk!Prp2ax;H}GiuGkHry{FnWkf|_XO4{TNWSmec_!H z6t(~S>xVf(>tAesd{Mn>f$ZwdTbzu26>v_jNrgi3>SjyVKgZfm?S0%w{Bo>S(X{>6 zf==gdn;x^(8@=ZByE-j-_ur5h)C^mpRE( zCB}JS{__VZz&AcQUZYX+Xf&->OVxT%6)Fjh&gF7xFoVWmPym9WUMbfgI*MHFtfv^@ z@W<4sico3@g`A}4L_~^Y4WCQ~>!eTl$&|stpXuf5K^1@=G##R((Wx*^CZi4YP-_G! zfMhVCKlM;YfK!APhN%_FDijl>U~-M~Pzo{n*E;-FqMdOXjXbEF`!~2A{gPY zP(Z){RJaJGaF}yg6fvCv<6JIl4uTJ4BSv}i6)G75+DXU|2}V=OC59M!!Fj$RLOz*6 z9f)eMgh&w$4jlO8g@im=_XQe3$gpq?qF0kXhY2&-9GJ=E!b~=s{sk0;snlQ+^_+B= z%HSAQ^ljmRVt}xSeog^_!47KS`Kd5OqfkXC6jDA}p8!ekX&7&k=Ri{e2sJ>g)KC22 z%+Et41K$R=fRr#Skw}KIt1Wkq-~d4kEfOf$S>k-fiQ zv_t7Uo0%Jz9*7*X^EX!}5fBzT#iSv9!?di(F%FXDQ)5khUm4fb)d_D40()14#oM%9 zPV#PPUiF~Tc;nJ7NARYJ1qpkyGXz&6QX?%ckTblx6*S@AdDpcFe5`b~dfyY0D5l2NB_kxn z*JgT5#;v2-BC_v?Q0xA6ZF_$%-f_%q{x*|c2j->pK3e;#Vwne<{$hqnq0fgb*;)(Z z^~(#sIs5!2+EkVgeUv;3OzgSNitE|goe(~5no)C8)s^J%@HgwOPc7&d?zOz1-OKzo z)=KAHs0cK!{L!Z)w`mzV?Xa~^PI=}-Xw2rSfc>W$_$|%18=EdkCinG0H#$_;y{FvE z2G6FZqM!x-5DRjG#;^%iAFzy71}srS&^SB&Wd!BsO$5d<8ey@O1TaS?83{1ORfS7kvN# literal 4710 zcmeHLdsGu=79T|AAy!d=R#C>FMHiDy-Vcbpl}LjKsDP+UCX+Bi9wY$*D!3LDMdcyZ z$GQqqAXQM?Er?Q96c86gd?8p?)T)TfBE|P2l>HJA@ofL`ob7+)oSDqr$M4?z`|kZt zzU&C_Upm=xrX>VHlZC$Cf#7?p;WD2H?hY>oQ3x9MDls@j8;HikDz#EdMB}hFL50J( zj*vo-?&t3P9@&o;Soyp;EZ(zaUP?_2av<%jhr{{v(M3gcXHIkFp|lhvqH4Y8l*`9| z9PEoPNY2!sEjrdw+I%Q$ne%R!nMay#Wn`;)^q)Uv#izyR9^epV(4c112M-H#WWpU2&p zzOTZk=iN=`l8Y@f5-ik}U1tV%yu{rVF8$5w-V?P=1BFGw_0;PbvXZA=A&gbm{e1LY zrTV(SJ+>Wk#JW)6aY|a9pLyDmBdI$%r`3{?@zdNX8)~Xb_1C`jPk)_1hk0N8K=6Iu z1y^^3zjoKGDHcid>0~xRue}fpRg7>+3O|W2G|K(E)%Pq|(a?%}dOl|GXY0deq!r~D`KA_h(F?`un zlN9qpo2!{yAbr+?mGzgRz0JQh4cOkbD3vo6UU@{7o$fnf))Qp+@?CqrE8g`iB`I7A z=LN=GwNK$k>^s)#w#t5^{zT-8=HrDYMH}~p9lsq`a;czIR6H-}gtX&!afL4C)xSEP zHEw+PWjV97S=zWJsH zy5gIKP3(96E@d~?#og^vRP@MuCasYR!|8KA?^}Rmb)V{hW^Xm1QjP`v0Q?rx9 zl2aCYI^<mM5l1I2 zwuD{P5-C5>d&w{acoUE!wOSRQN{x??r^GWTO0|qisDJI#flaQ4p$JP95!` z(fY&zkl}=W*FzHw_7Q3zu2IISG2AB(S7;qaLrAa@e^snH+E|VRqvFxH9GGfARN6-& zmkLDzBOV3{WQ1I0^a5mmWT_>jAISPBH-pAl&gevd`v~qw*6(XK8Urhli0`e$Vh!mD zy#*vge7;195fZ-f5#`b7TwKB>GZ7At%#>hEGAd@$$e5TZMcEvLj)L|uus#GORA{uQ z0>ceZKtdq^4nx9VOA!u6X3%K}nTY`$E{6_oJQkOMVl0fy!bU+XR}-Ks(df}x8K5Kp zii?UROdf|##@IMW31f)KTqYMI(@_SS&A}N62d5jMBp82*QY}ZpauRY>hEr7vnNeXN zobM4J6p-i?&V2`Vtyo zkznZf;hy(IWkYX6BM?m(RWNL9TRw^n1<{~!_|S>~zabSCi7I3`nD60+dM_t_XR%mp zKrN1=WDMi6$xJDiOXeYfaJH0(ViGovGMGb!kDzOmQf)k{#yw=9Qcw+OAY(P~0wa|R zjYW@G$4BA@o)9{XOrw+Oj9?mv&tmeK3}=MKM-UQqxL~Sbs^3@aO8p;BT#W{!wgKQb zBm>(E*sZ7|+tn~(@Bb!%paof*vjo1??)J6og9=DC6DI96 zm+Jj(y?w^pm3UhJDJ3j#rPxUO&+}iJM{AZ@Y~Z0_L|ta`gZij1p_S>aL7x;)v+^v`Q^*OhknU~MOlLchuGFN^AHU`6!peYqiMl7q?JwyN6LprF@V8fNDX z3inUGlhw~m4gXB%makl9T6xC($)UD2m_yMN_v~{!??GnUt9+0A&?0ERd;RCO^Rk%( z1JIQx>IOIa+gadjI#KMm)Ei!{B!^S diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_red_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_red_detail.png index db44333b236b889c978025fa5d52a1a98badb03d..587fbdbdd49fd444ee8e07ff6edb75ec25de881b 100644 GIT binary patch delta 95 zcmaE)QaC{(l98E#fkD+aR|!b51^9%x&NMa#BBhKsEI<*ak|4j}v@O1TaS?83{1OOgA7C!(0 literal 4706 zcmeHLd010d7Jn33L{y-|B8r57#VXlDHV9jS5HW~hM;v+Y{HDY(4+^@i=!d!G-$0sJk=wN+2Q7y4|rm^A3npLdj+ zJ5+xuI5IA9?SZb^`!h-zezWfJfYG61OJ;HQ%G9t2PEJ7qkDQJ?Jc*E%OSj$ZN-n-SfAF(QwS|(X%;y{+sp*nmiZ#xZ4k> z`Apvig%wmeH<#o=M@na7>#t-AZ4X$+6n6U+O}8zXGnMm=$Y=G27kk_*+&l!y)4HGl zGNUBs8;*QRnDZAB$rI10jr_QHX4SHU*p_|%QPIiT=B<4Plf-^ju}!kBgrju^&C4fU zPa89SCZ1!SzK=9UeR>*cwtKMt_+0DTt>;8hVnNgOoo8y1rZ8cfBn8 zu72IHrkMWAfub7bKX30iEUv)r6xN*aIeJR>0BcH2et9Sx9@?54vVpwpvyxWJoIVWdqGU9;Z*_uIUeb5?B~;WRbdGh8%yrYmuzJbwK~@XhZeS3%iSN zMm+NFb?moYRS*>RhT=6i5OYaY8+N$N?~_|$U{Sc^K>SJK1w2%xAj47>f{_ghHCP-F z6c}t!!)OMkBOsU@SMrI^>MsxpxRg&!^cPdbY5|sxN3PIdu`8nE&=nadS4s>HvI{iu z0DuD1!32XMQ>o<{_(U@<4?LU96e7XwqRZeDlf*Fufl7lBm}DlIN(wjN*>qx%9U)L7 zmGLCPc_R?ujZaM1>C`+5MX%SB^$fB~Bd5@~TrP!5r_kvn;6c*nD0Q%bq||zwAcir7 zm=@LGY8|dp5=@vdqRP_oi9|3?cw3)BEf$Z$E43pm06r)NSWTgksT75RGB!f13(p21 zBL)3#gfVEIb=i>b%E7NYT-Fb(SX6+>R8bV40W#xN1RG+IuM@MB2A4)+QmH5jLFrVIj46dV2m@nqxb!hlBBfRbD^bh@1;EKT zz+uo38coVzk(ii_N@8+Y2#L$3%Sd#XhOikdIu*u{F%SziI8Y^=IkqYjloUY07{;Kn zscaIA(3zkbmW+fTQiMc9r7Q-E!9ke_%?u?)dGk~n1q`MWSHNR=O_G!~OeXR{eJE}H=!h7+0b5-^PxDA9yT zqmtD#rbx5A34z0t5{YYpM~+GH zBbpC`<->2oOCS?B4-p7v+45j?IEfa{#-!#%AZ~aFO^20o46N@FLA|x(zcX1>CWFpm zA{-J|=1&Im~8;W4cox> z0(L9P=yo;2nTf_f@G~+Oe_#dxJ)Y!)_#LNfoURXI;DemU)iqAn2QlzL&g1I(ztLs) z?!bd7!LJ}aIL;Vu@lznkq7WAdVnhPL+rJ1PXm;tUQhsDZ$c)CNu?LCHR+HA-%8o?4 z2*W41)`U6EDM+b|x7pO~%furksWYrv@>hEr<855!OFUAoLVvZqeEquUyYTsgOC{-! z_r6*l+|j=Br}LHtDMeMXHn+XYwwA67Z;V?JZ~qVCx}e@PTLzu+k}F!@p#7}9;c830 z?Tvp2^*wxaO)9p2E$mD_G~MO7_4C_@4r)7mr<}+y_X_fz>HjGIa&c;6>gV^$^+|Vk zczN&G?mNZN_?t^Y%64b_Erv2q`6B;ot`f4GqgtL2<$ULyZ!S!&uJP0E?jj&bmz{jp z#l(a<&PrN$^KYdHF?3+j)HiwewtaoDq}q1gMyt)0VcCOsbAPR0%wW@=eqyyhWWcD% zwYU7slD&UE-SZ4>J5~YxM}BvHMt_rkTK}frWwDbyE!x{IHfF`fzRGLz*!xDbZSs$$ zgUrIzDTd(vs`-}Z&xSnQ*|r$8;|F^}GNaC-Wu3a; jzivY35sUp3i=+^A{QTs?#aAeg0SqJxj}{&aOUwT+_uT6n diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_silver_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_silver_detail.png index 8ff77440aa60fc1195c826381b8b67223208fe09..49d444b80fd94a61e405bf962e61cc29b540cc3b 100644 GIT binary patch delta 95 zcmaE;QaC{(l98E#fkD+aR|!b51^9%x&IE&qLp{fVB1|Pge!*!Iwpve$1@a_3T^vI= rqLULCnEAxm82Q*(8QFXqv{)JVO&C`GDtyQbRKwuu>gTe~DWM4f$e9?) literal 4705 zcmeHLc~leU79T|x5fFJ#pe!YhD2h&&$%HJj6NISH2q>rsOlBrwge)e31llS=tq5%u zL==UBib_SaT76oqwc_?3OY4T92-UhkRou0TAa4>7@x1=yIj{ebb0#x$zu*1cdw<{k zzLPI&#F1gP)-Kin0N9Gcg;CVq-gsGAP~RR;`%nNF`6x3cP8)^lXezZ*N~RJtZH9`V z5qeSz0Q#$4MRN&?4lCZ7Nd}^58-sG3+ikgiFZyobZEDF2%pKtcseIXLpKfZh0t?#>w zPb!4tpJ0HJlG{J39b#ZEFJkg?s8OZ*FA^JU6rq~Ny~gm z$17!RZ(b;J5@H)BHf&ipeaeC!Rp6Zvk+;Bk(wLIq)^qc3d57RW zD);h^&1-MHIIX&&!#-oQ`iHxRUkJM|OlbD)NxO4jmRHtwW_8TMglz$3teUl-H^zlF zns23dZ2Nfjl|{~nCAs`VUY#3GKbqp1`m5o7OOx%Qtql2sd{=Xp%C_#(w-?Ig`&>Ck zHf7AV`EAn=hU-X;vn98<=Sc(7;#rZmBE>A-uz``7T;@|$^x}#eTURTdoYUC#XlZ2G zGUgdyYhhmE{_MmCc8dxt*fQx0gVk5;${Nd;`H2^AdDAM{bx(6fjXe6XL)C?{ErIFh zvJJW2ycKxwKLc}^hiX4^um?B}JAzy6Q-xL)X5v-%rWeQB)8;);6?`8)!nK3X@n>CK zeE@D4ogOcxZH-d>;GqzMfFk!#D}V1K=0QvDx-85qj6YZ?Arf+%PO0HT5~%`h zI{kf>6IVBO--!uF5YDVPz3@^le_G+RpY}S7@6}c9$!I!Q)HFX4tF~?3b$e$ulG47d z>6gWV2Wt~*(jK0_H`DcB7mB!Tb;Ag)*Gk8_^UOpeX(kC+v|1Lbc%&)k6x+L?cB%hmg=< zYEq>ol?s}X6O|~_w0H50%h`H9QTp3hERN>CaJDOQ-@|{q{1mGHj{%$e3&={ z^QBA(VWU2f1i`7iP#%u+a4I7y(?o@1f|*LS9Hpj{l%q0&p;E|914h9GL1K{~2-Ewa zCW|-~)k-M`KX4AINYlTA#*lI%T8kRhWceUWn9Jj^5!eUjGWqX7^9i+v>O>o|3Pkz!4`IouLPk*Qd!V7-+R49~EFUhH$>H-L zM2fH=1ed@ND#h3kAHz|YgZscJ+%MZ8yGAM1>QFTiB%>;&s-YUlR1Iy4Ny@43=b}p{ zj5;x47Q})fm>t973OF1A8=1yr37AZfF;FnWxT@b)?92EcO?*v&A=?1u*Keb?7iza+ z3~pBgni*yM8$Sbc@i#`GsE31mkiNrm4a@aG3VaZFxVwhs`XB{92t3?f|2Mg;-yL`e z1@$XPM;&Jf1ilRbBUX_iA!1QT$lHGi0ANb~=lOo&Cj;G1Cr0l8$D5DIwUSmwItoKa zIaLRb^Io}d>paW#_q-4?JSyJJyg7S?N8UV3C)r~6c=Mn~W~Uk(Mdw3j^(00mkGpwd zX+V41r`L{|tz5X~TWPCv`I4gioY2!Tne%LZ1athKC0Vgy_H(`{_oU{twv%U@k6Qiu z#Q)EZ&N@88;-&ES1v_0GA6q=Wv~!21-OFx&cF6>Pua7yM*{9aV$Hp(aS)z-(UOZu9 z@g^_3ae1#C=P%qe-e!ZofLAh?Q|A;#m+_QK=g%I0`H0tYlv!0hT~m68CW$-c;F%*9 z2aTH)mve4+z61<jT^_ z=Tm1>3(4#-A;1A90G3>m(@R-KtHKv(0AS2NjMoTYbBQx$wA6|sLM?CGIN5W-R`9wb zWtt%p2F38|u@b&U>SAV|wZ;&f)d)b~Gx7!;m}fBDa2dCGAIi?c8#^uHC)WPa-06_B f-Qvs1o&_U-yL;^B+BBcgQ8a)kG*Y-XI4S$TKZ@!M diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_white_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_white_detail.png index baddd95eb50e521fff4980e00b182639fa1c9206..e7e0db92d08c9f7c14c0b0ec193609130bea2d33 100644 GIT binary patch delta 95 zcmaE)QaC{(l98E#fkD+aR|!b51^9%x{s)85ny)!P5vGzLzu>e9TdgO>0(laiE{-7_ r(a8x6%zR>OjC^dYjBGv)TC5EGCJZZo6+Ywzs$uYS^>bP0l+XkKV0;?$ literal 4706 zcmeHLX;c$g7A|ES1QlAq!G#b|Y%%*DN!St~+CdD6AgEL-l~6zylRyG4EGnY7p^b`- z-7pMltGMfo;tuMx%V}FdS_25Kh$}SXhBW;WK;caP@to;@d$ZlD8GVEWP@QWD?EN-dxqtRa?Am?7?#Z!JZp^UYuRF zzthT{ap1?@8Omewgo>g|6I_3OQn#T*%jtOLb#LmZH+psAHtUL#4GRwZ&YJ$nZc^Ls zr|w>!bF1I{dgDsPt69NI+*~FKmo5l?;o`y{*Xq*x_&s#PwFTaczbU!TBP zKRuq5JsM70N%O%$$v!iR4pYWC4}S{Pws2>*I9Z1m`IbDyOU_^7YL)_k#_qeW1d}JgE*zR686lit38Gtkj$)`x3`WxrfPMOEV=Gl!}c_H(*6aF z4W~2I4c4o69>2RUBc;-?_D)$tdwSTaCRUTo@4KCqs^jl(ALk!j68d*;+rgIdb^MGg zHSa0Ujy^qd{miZP6-T$ue|ysOaF58t3cW-Gb4RvSm!-Zj0 zQOoO|PYzmCl0>#5N30BN7(UF6Zg=E)w1eG=#4Y0@{AcHF_P93LhBA8E^h3mxhh{Eu zankk_#2@ZBx30(U#F*A5pSL?qe#x{md6$BoH>`B7o%ZX})?0Vl&l~FAQoAc#8auo@ zoj=$wUBM6bEZcD7thdjIfQk1PHmh@r(;fK{CP`5`{=6DV3yw9y+}+ z9gy@*=ubU#(O?fDNl=|SO^cwybX2AH9!McWKKX0Xw5gVKWC#gOMU?=m15qi1LWYUN zk)J%w5-2dG#^MFU9)#3m^3P%onwxpVlFq=10QXP4gV6oCTfhJ%7IOt^B+WcMk${Ic z$LGq_2qxoNZrLokoFSu82sD(!Ake8WgTP^K8?9ES^6=&f;LM(u_Qv`579||h z0YrwmFt~$hD8iI6LB(NYFuP7I*Bf9h8l(W3f^0woS+c=Ru}Jy# zV6-6#HS0vCQa}v}R9ZBJ#br>rbhaOv!X=aOq`rhn=2hLFu|Mg5H1W3p25bYsuh#~) z7qDBAK5bWhnwe$%3qO6e_zNQd>Y*TCr0aHQVzDR*D0uOc9|4lB3 z&j%h<1>S-T;5cIp`-e3I4O@wYghYx$Li+zAfS@UbOAC47)q&$LE{v+cyV{IcV=vzw z;U*ATyH^G~PhByuY>wULXTEeST#_)}rapJMXTcmhcg6e(2{u8mt!l1c7yTlf@o}Lf z$@#(gMFCBXiyKZ`t(dp^N4aTiY4VoBeBs6D%sGyy@cI1CM0*;Q_Fs-@O|@=GWA)|w zD*K;1_-~)IUXh7y-wE!=?HuRUZrfhFvqIP8JMvI&i5K5@BBM38W<$cbI z9IbNZmo7N=;uT`r{{!^9qIpKjhpUXl51TuaqegfRYc!p^m=+cFCj07y(jL)Pr#poo z=_?aP8UxDJGptVkEAYv7Q#|6iYgFK-lWXolcB{^Xe}A~1*VOpSUDH{GM|U@L?TPkk z!1&vR;B0Cuof#&87?2la$HExh!16auc$^M`Mto(yhC$m)#sZ_AUL+RUJ#us(O($C& zzpw+Cri%nY(d?_p$DW=n4=bDO)j7f0*C7JF6KkOc7Ubl#csOrA0MoK%*IR89ye~Yh jZ*|Epw_Q8gXVWmK`pBr|-GaCqfCdr?BLw?{6LbFn3bO0O diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_yellow_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_yellow_detail.png index 83eedf08ba3242e137825a002e6aed13fbe086fb..b3fc7c8933760046e65e536cd552c125bf75fcee 100644 GIT binary patch delta 95 zcmaE+QaC{(l98E#fkD+aR|!b51^9%xK7DEoM3=TiyaI|al?3?(r%l*uJt-E*lkjwL t4B?1QPGDf>6JulKV`F7x^J&mxW#BhqSoy2)Aumu3gQu&X%Q~loCIJ3{8I1q{ literal 4710 zcmeHLX;f3!7QToOKt-S;X!Q|-78Ea;Nr;4biV8wN1;pXz<|bSr1IdL1t*C$&p~&C> z@(`g`Q4yhv7DNjbSg2^N3Zf#^d8l>j!wIpzlYk2A^^a@4{v&JM+ld$oUO0leD9R$ zS^w^Fx5bHlg@J_{`_oQQ{e;)8vT0MNew%L;QYMS7h}eQ~TP$)l3CF_I0-a-E1&JS4 zx45^bWGQa_(}q)Xa~~~fIO2G*z`XAM%_^o%Lv(*Uhre5xvN6RyE_hjM(GQtRXZkFu z^5<_;)zIWk6X-`AA9TcPCs-xj+3?4e4#UOBy*$nx?`+%JiPlB!_=S}AG~<|A#~oc+ zg(Q;=7g}nc=iXRExg^^BRrr(`QuUYvU%&Nft$}lhv-b*cXB}8 za-|xin}j4~I@^QJ+i-|+)-)+b zLbkl$*0@JNIv||zwlxzSpJ)y5kM3wcf>#OWc0^Zn)J~}1xK+HOubCrQO$0 zBrC3uF4%MQ+JWS_O3m4;W!Il4wyy2r^oX7Ry{A%s^v&g?9@VP@Ch>l+zPT&gBl%48 zJNl!VhlkJobZJv%O~H~^$GV=Z>Uw)};o|&-QOABibhn~1CA_{mrOmT6z=rJ+)Z$gY z@8=aSb4zPOScL|*(gRrZR0p4PECSwlFg~MCfjyI+VHPT_tHF7UVNAxs0*DNr$3qn|7euTO zVJ=#k5-bo1a`)6K5i|}X$RbRN%lVY2^$ip=9(dN7sT8svLd5YYk-?#4Uxf-Ivs_p%G}vE@ zCow1el?1MklXaYkNRdeJDHJeH{*a$c865nPUalTg0q8;1B1$UVg+`Uh zs6#!}gntqs8BFMJJ=76kAE62{wIWf4V*W{(oNyRQAx1y?D-%`m`f|i56^qAY0ICL2 z>BB+>3W7sFdgvsO;xeV)3y3`oN#K%CVhzhpH=-|RXd=M)g`68ZphFF>J^Az(Uj86w4~O1V@& zpc9t@@IWy@SVY&SfI#m7YT@~+FoaO3A{2^vK1G)RS?8&5Z?gNq zqy*t=fJoML{9w=fAku-ifh7=+>xal>ecSR7bRdWtNy5bXK)`Qc2#rPLQVgu`!G`)^ z$Ny%sBuqAtl|u)Taxs`iqe);l5gmgW96DRf!00IE${fzFR!9g9qQbnTpi)o`Xdrzx zWGB6pGlruzv6xOL8iNkg88CwxLFe$;t~@5wnMUW)XcX#T!BpL<{!p`YZ)L3p~8}5qTxOpRJeVB(3ete%jL@;G7=jGe;Ofl+AO|#2dK(di8nHpo{{miiW+&RGo z|2h53gt3;le@^i1>0WjHgkgI0#(k15+tL-=@-qBeB33RKdz_Nt(YxG)$zZ;46J$22 zzwT~o?W{LB|EI^R`wz~DgNsoR~#1 zDYuI?kvF#6J8Um>G`GxpGjU;bq4n6U+I((t82gNk&_&8sBrKe3eYw_g4MMA^oTc7z zk1UF8wwjg^8tQF1Ju>6h{dppa_uH`X@7LZgIJG;s!X#jm(Uvlwr2ZRgp4BgAa_CRK zGTPiQ(Zd*S1Y9 zeJ>~&cQvn{wLZpN>$yuY$MD3DUiXW-7Nd6MGT>ArBSt3f*X z-8<;)eN~(1l*@VGY-%i;8|VkIA$y3#!P)PC#Z(y-rG}s}U+69asHoT$7)gX6*q?NF ztc?ZNzU6Qw3QV&Fe%=w>HuUShc5e2%QH{-B_KlLY6D|8{l#@zZ8XJ|_Cg(b Date: Thu, 20 Jan 2022 22:55:36 +0100 Subject: [PATCH 464/720] `walkover` fixes --- mods/CORE/walkover/init.lua | 38 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/mods/CORE/walkover/init.lua b/mods/CORE/walkover/init.lua index 4d712c308..eb9de4218 100644 --- a/mods/CORE/walkover/init.lua +++ b/mods/CORE/walkover/init.lua @@ -2,47 +2,45 @@ local get_connected_players = minetest.get_connected_players local get_node = minetest.get_node -local vector_add = vector.add +local vector = vector local ceil = math.ceil local pairs = pairs walkover = {} -walkover.registered_globals = {} - -function walkover.register_global(func) - table.insert(walkover.registered_globals, func) -end local on_walk = {} local registered_globals = {} +walkover.registered_globals = registered_globals + +function walkover.register_global(func) + table.insert(registered_globals, func) +end + minetest.register_on_mods_loaded(function() for name,def in pairs(minetest.registered_nodes) do if def.on_walk_over then on_walk[name] = def.on_walk_over end end - for _,func in ipairs(walkover.registered_globals) do --cache registered globals - table.insert(registered_globals, func) - end end) local timer = 0 minetest.register_globalstep(function(dtime) - timer = timer + 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 then - local nodeiamon = get_node(loc) - if nodeiamon then - if on_walk[nodeiamon.name] then - on_walk[nodeiamon.name](loc, nodeiamon, player) + for _, player in pairs(get_connected_players()) do + local ppos = player:get_pos() + ppos.y = ceil(ppos.y) + local npos = vector.add(ppos, vector.new(0, -1, 0)) + if npos then + local node = get_node(npos) + if node then + if on_walk[node.name] then + on_walk[node.name](npos, node, player) end for i = 1, #registered_globals do - registered_globals[i](loc, nodeiamon, player) + registered_globals[i](npos, node, player) end end end From ffa9d2d0fd7ba72a84d9a2f754ac7aa22b657779 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 8 Feb 2022 10:58:25 +0100 Subject: [PATCH 466/720] add basic chains and lantern model and API --- mods/ITEMS/mcl_lanterns/init.lua | 161 ++++++++++++++++++ mods/ITEMS/mcl_lanterns/mod.conf | 6 + .../models/mcl_lanterns_chain.obj | 24 +++ .../models/mcl_lanterns_lantern_floor.obj | 106 ++++++++++++ mods/ITEMS/mcl_lanterns/register.lua | 8 + .../textures/mcl_lanterns_chain.png | Bin 0 -> 224 bytes .../textures/mcl_lanterns_chain_inv.png | Bin 0 -> 217 bytes .../textures/mcl_lanterns_lantern.png | Bin 0 -> 8789 bytes .../textures/mcl_lanterns_lantern_inv.png | Bin 0 -> 5736 bytes 9 files changed, 305 insertions(+) create mode 100644 mods/ITEMS/mcl_lanterns/init.lua create mode 100644 mods/ITEMS/mcl_lanterns/mod.conf create mode 100644 mods/ITEMS/mcl_lanterns/models/mcl_lanterns_chain.obj create mode 100644 mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_floor.obj create mode 100644 mods/ITEMS/mcl_lanterns/register.lua create mode 100755 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain.png create mode 100755 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain_inv.png create mode 100755 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern.png create mode 100755 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern_inv.png diff --git a/mods/ITEMS/mcl_lanterns/init.lua b/mods/ITEMS/mcl_lanterns/init.lua new file mode 100644 index 000000000..d59bb558e --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/init.lua @@ -0,0 +1,161 @@ +local S = minetest.get_translator("mcl_lanterns") +local modpath = minetest.get_modpath("mcl_lanterns") + +mcl_lanterns = {} + + +function mcl_lanterns.register_lantern(name, def) + local itemstring_floor = "mcl_lanterns:"..name.."_floor" + local itemstring_ceiling = "mcl_lanterns:"..name.."_ceiling" + + minetest.register_node(itemstring_floor, { + description = def.description, + drawtype = "mesh", + mesh = "mcl_lanterns_lantern_floor.obj", + inventory_image = def.texture_inv, + wield_image = def.texture_inv, + tiles = {{ + name = def.texture, + animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} + }}, + use_texture_alpha = "clip", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + light_source = def.light_level, + groups = {choppy=2, dig_immediate=3, flammable=1, attached_node=1, torch=1}, + selection_box = { + type = "fixed", + fixed = { + {-0.1875, -0.5, -0.1875, 0.1875, -0.0625, 0.1875}, + {-0.125, -0.0625, -0.125, 0.125, 0.0625, 0.125}, + {-0.0625, -0.5, -0.0625, 0.0625, 0.1875, 0.0625}, + }, + }, + collision_box = { + type = "fixed", + fixed = { + {-0.1875, -0.5, -0.1875, 0.1875, -0.0625, 0.1875}, + {-0.125, -0.0625, -0.125, 0.125, 0.0625, 0.125}, + {-0.0625, -0.5, -0.0625, 0.0625, 0.1875, 0.0625}, + }, + }, + --sounds = default.node_sound_wood_defaults(), + on_place = function(itemstack, placer, pointed_thing) + local under = pointed_thing.under + local node = minetest.get_node(under) + local def = minetest.registered_nodes[node.name] + if def and def.on_rightclick and + not (placer and placer:is_player() and + placer:get_player_control().sneak) then + return def.on_rightclick(under, node, placer, itemstack, + pointed_thing) or itemstack + end + + local above = pointed_thing.above + local wdir = minetest.dir_to_wallmounted(vector.subtract(under, above)) + local fakestack = itemstack + if wdir == 0 then + fakestack:set_name(itemstring_ceiling) + elseif wdir == 1 then + fakestack:set_name(itemstring_floor) + end + + itemstack = minetest.item_place(fakestack, placer, pointed_thing, wdir) + itemstack:set_name(itemstring_floor) + + return itemstack + end, + --floodable = true, + --on_flood = on_flood, + on_rotate = false + }) + + minetest.register_node(itemstring_ceiling, { + drawtype = "mesh", + mesh = "mcl_lanterns_lantern_floor.obj", + tiles = {{ + name = def.texture, + animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} + }}, + use_texture_alpha = "clip", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + light_source = def.light_level, + groups = {dig_immediate=3, not_in_creative_inventory=1}, + drop = itemstring_floor, + selection_box = { + type = "wallmounted", + wall_top = {-1/8, -1/16, -5/16, 1/8, 1/2, 1/8}, + }, + --sounds = default.node_sound_wood_defaults(), + --floodable = true, + --on_flood = on_flood, + on_rotate = false + }) +end + +minetest.register_node("mcl_lanterns:chain", { + description = S("Chain"), + _doc_items_longdesc = S("Chains are metallic decoration blocks."), + inventory_image = "mcl_lanterns_chain_inv.png", + tiles = {"mcl_lanterns_chain.png"}, + drawtype = "mesh", + paramtype = "light", + paramtype2 = "facedir", + use_texture_alpha = "clip", + mesh = "mcl_lanterns_chain.obj", + is_ground_content = false, + sunlight_propagates = true, + collision_box = { + type = "fixed", + fixed = { + {-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625}, + } + }, + groups = {pickaxey = 1, deco_block = 1}, + on_place = function(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + + local p0 = pointed_thing.under + local p1 = pointed_thing.above + local param2 = 0 + + local placer_pos = placer:get_pos() + if placer_pos then + local dir = { + x = p1.x - placer_pos.x, + y = p1.y - placer_pos.y, + z = p1.z - placer_pos.z + } + param2 = minetest.dir_to_facedir(dir) + end + + if p0.y - 1 == p1.y then + param2 = 20 + elseif p0.x - 1 == p1.x then + param2 = 16 + elseif p0.x + 1 == p1.x then + param2 = 12 + elseif p0.z - 1 == p1.z then + param2 = 8 + elseif p0.z + 1 == p1.z then + param2 = 4 + end + + return minetest.item_place(itemstack, placer, pointed_thing, param2) + end, + _mcl_blast_resistance = 6, + _mcl_hardness = 5, +}) + +dofile(modpath.."/register.lua") \ No newline at end of file diff --git a/mods/ITEMS/mcl_lanterns/mod.conf b/mods/ITEMS/mcl_lanterns/mod.conf new file mode 100644 index 000000000..104722123 --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/mod.conf @@ -0,0 +1,6 @@ +name = mcl_lanterns +description = Add lanterns and chains to MineClone2 +depends = +optional_depends = +author = AFCMS +title = MineClone2 Lanterns \ No newline at end of file diff --git a/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_chain.obj b/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_chain.obj new file mode 100644 index 000000000..94a7b8971 --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_chain.obj @@ -0,0 +1,24 @@ +# Blender v3.0.1 OBJ File: 'chain.blend' +# www.blender.org +o Plane +v 0.066291 0.500000 0.066291 +v 0.066291 -0.500000 0.066291 +v -0.066291 0.500000 -0.066291 +v -0.066291 -0.500000 -0.066291 +v -0.066291 0.500000 0.066291 +v -0.066291 -0.500000 0.066291 +v 0.066291 0.500000 -0.066291 +v 0.066291 -0.500000 -0.066291 +vt -0.000000 1.000000 +vt 0.000000 -0.000000 +vt 0.187500 0.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.187500 -0.000000 +vt 0.375000 -0.000000 +vt 0.375000 1.000000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +s off +f 1/1/1 2/2/1 4/3/1 3/4/1 +f 5/5/2 6/6/2 8/7/2 7/8/2 diff --git a/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_floor.obj b/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_floor.obj new file mode 100644 index 000000000..a6125886a --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_floor.obj @@ -0,0 +1,106 @@ +# Blender v3.0.1 OBJ File: 'lantern.blend' +# www.blender.org +o Cube +v 0.187500 -0.062500 -0.187500 +v 0.187500 -0.500000 -0.187500 +v 0.187500 -0.062500 0.187500 +v 0.187500 -0.500000 0.187500 +v -0.187500 -0.062500 -0.187500 +v -0.187500 -0.500000 -0.187500 +v -0.187500 -0.062500 0.187500 +v -0.187500 -0.500000 0.187500 +v 0.125000 0.062500 -0.125000 +v 0.125000 -0.062500 -0.125000 +v 0.125000 0.062500 0.125000 +v 0.125000 -0.062500 0.125000 +v -0.125000 0.062500 -0.125000 +v -0.125000 -0.062500 -0.125000 +v -0.125000 0.062500 0.125000 +v -0.125000 -0.062500 0.125000 +v 0.066291 0.187500 0.066291 +v 0.066291 0.062500 0.066291 +v -0.066291 0.187500 -0.066291 +v -0.066291 0.062500 -0.066291 +v -0.066291 0.187500 0.066291 +v -0.066291 0.062500 0.066291 +v 0.066291 0.187500 -0.066291 +v 0.066291 0.062500 -0.066291 +vt 0.000000 0.062500 +vt 0.375000 0.062500 +vt 0.375000 0.437500 +vt 0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt -0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt 0.000000 0.437500 +vt 0.562500 0.125000 +vt 0.937500 0.125000 +vt 0.937500 0.250000 +vt 0.562500 0.250000 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt 0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt -0.000000 0.437500 +vt 0.062500 0.125000 +vt 0.312500 0.125000 +vt 0.312500 0.375000 +vt 0.062500 0.375000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.687500 0.937500 +vt 0.687500 0.812500 +vt 0.875000 0.812500 +vt 0.875000 0.937500 +vt 0.687500 0.937500 +vt 0.687500 0.812500 +vt 0.875000 0.812500 +vt 0.875000 0.937500 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +s off +f 1/1/1 5/2/1 7/3/1 3/4/1 +f 4/5/2 3/6/2 7/7/2 8/8/2 +f 8/9/3 7/10/3 5/11/3 6/12/3 +f 6/13/4 2/14/4 4/15/4 8/16/4 +f 2/17/5 1/18/5 3/19/5 4/20/5 +f 6/21/6 5/22/6 1/23/6 2/24/6 +f 9/25/1 13/26/1 15/27/1 11/28/1 +f 12/29/2 11/30/2 15/31/2 16/32/2 +f 16/33/3 15/34/3 13/35/3 14/36/3 +f 14/37/4 10/38/4 12/39/4 16/40/4 +f 10/41/5 9/42/5 11/43/5 12/44/5 +f 14/45/6 13/46/6 9/47/6 10/48/6 +f 17/49/7 18/50/7 20/51/7 19/52/7 +f 21/53/8 22/54/8 24/55/8 23/56/8 diff --git a/mods/ITEMS/mcl_lanterns/register.lua b/mods/ITEMS/mcl_lanterns/register.lua new file mode 100644 index 000000000..a2c513eb2 --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/register.lua @@ -0,0 +1,8 @@ +local S = minetest.get_translator("mcl_lanterns") + +mcl_lanterns.register_lantern("lantern", { + description = S("Lantern"), + texture = "mcl_lanterns_lantern.png", + texture_inv = "mcl_lanterns_lantern_inv.png", + light_level = 15, +}) \ No newline at end of file diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain.png new file mode 100755 index 0000000000000000000000000000000000000000..ee523c9226d618aa4cb6c31a11a3130f5a464495 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgf#7JeZ`siwX6RDnVXo-U3d7N_4% zGUPj8z`;CsMfd%Kv!?#9Z`yBgiL-NQ(21bXSGpaHIf)HT9WHCFV^&GM<6|f&@9>y# z#4LO5wye}A3Z4^Ob{THIc(3eH+BLPS)_dxYR3`m4Y&|vq(Db;UY@TJFH$qyTPX*e= N;OXk;vd$@?2>^Y{PSyYb literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain_inv.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain_inv.png new file mode 100755 index 0000000000000000000000000000000000000000..61a300fede1736bbafa7e07d7b106756b9c18edf GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgf#7JeZa;fbAk_CTRXPZ!4!i_^&o z3q%9L!v6L9JZAFwq2lZ7`#<;zm#nO86Pv-q&3}J?f6u~uF!R9o_xB~=-P?Qm$KT)O zY@2u$*mxc}s9clwX~|Ky7L$;WVDr=|C@Q*SCZ@s0AaqOnZ|K_d(}0#Rc)I$ztaD0e F0swHxMOpv= literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern.png new file mode 100755 index 0000000000000000000000000000000000000000..c9cc5b9958c962387a6ee72e277c225a5673fb7a GIT binary patch literal 8789 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern_inv.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern_inv.png new file mode 100755 index 0000000000000000000000000000000000000000..1e81819ba95fb37c446bc5b37278432023322031 GIT binary patch literal 5736 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 literal 0 HcmV?d00001 From 6572a8c908563ea62397394b7edd91846571d2d5 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 8 Feb 2022 22:56:20 +0100 Subject: [PATCH 467/720] add lanterns, crafts, placement mechanism, doc entries --- mods/ITEMS/mcl_lanterns/init.lua | 94 +++++++++++----- mods/ITEMS/mcl_lanterns/mod.conf | 2 +- .../models/mcl_lanterns_lantern_ceiling.obj | 104 ++++++++++++++++++ .../models/mcl_lanterns_lantern_floor.obj | 30 +++-- mods/ITEMS/mcl_lanterns/register.lua | 18 +++ .../textures/mcl_lanterns_chain.png | Bin 224 -> 205 bytes .../textures/mcl_lanterns_chain_inv.png | Bin 217 -> 202 bytes .../textures/mcl_lanterns_lantern.png | Bin 8789 -> 8614 bytes .../textures/mcl_lanterns_lantern_inv.png | Bin 5736 -> 5669 bytes .../textures/mcl_lanterns_soul_lantern.png | Bin 0 -> 8642 bytes .../mcl_lanterns_soul_lantern_inv.png | Bin 0 -> 5677 bytes 11 files changed, 205 insertions(+), 43 deletions(-) create mode 100644 mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_ceiling.obj mode change 100755 => 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain.png mode change 100755 => 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain_inv.png mode change 100755 => 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern.png mode change 100755 => 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern_inv.png create mode 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern.png create mode 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern_inv.png diff --git a/mods/ITEMS/mcl_lanterns/init.lua b/mods/ITEMS/mcl_lanterns/init.lua index d59bb558e..e6707b075 100644 --- a/mods/ITEMS/mcl_lanterns/init.lua +++ b/mods/ITEMS/mcl_lanterns/init.lua @@ -3,27 +3,39 @@ local modpath = minetest.get_modpath("mcl_lanterns") mcl_lanterns = {} +--[[ +TODO: +- add lantern specific sounds +- remove the hack arround walmounted nodes +]] function mcl_lanterns.register_lantern(name, def) local itemstring_floor = "mcl_lanterns:"..name.."_floor" local itemstring_ceiling = "mcl_lanterns:"..name.."_ceiling" + local sounds = mcl_sounds.node_sound_metal_defaults() + minetest.register_node(itemstring_floor, { description = def.description, + _doc_items_longdesc = def.longdesc, drawtype = "mesh", mesh = "mcl_lanterns_lantern_floor.obj", inventory_image = def.texture_inv, wield_image = def.texture_inv, - tiles = {{ + tiles = { + { name = def.texture, animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} - }}, + } + }, use_texture_alpha = "clip", paramtype = "light", paramtype2 = "wallmounted", + place_param2 = 1, + node_placement_prediction = "", sunlight_propagates = true, light_source = def.light_level, - groups = {choppy=2, dig_immediate=3, flammable=1, attached_node=1, torch=1}, + groups = {pickaxey = 1, attached_node = 1, deco_block = 1, lantern = 1}, selection_box = { type = "fixed", fixed = { @@ -40,19 +52,16 @@ function mcl_lanterns.register_lantern(name, def) {-0.0625, -0.5, -0.0625, 0.0625, 0.1875, 0.0625}, }, }, - --sounds = default.node_sound_wood_defaults(), + sounds = sounds, on_place = function(itemstack, placer, pointed_thing) - local under = pointed_thing.under - local node = minetest.get_node(under) - local def = minetest.registered_nodes[node.name] - if def and def.on_rightclick and - not (placer and placer:is_player() and - placer:get_player_control().sneak) then - return def.on_rightclick(under, node, placer, itemstack, - pointed_thing) or itemstack + local new_stack = mcl_util.call_on_rightclick(itemstack, placer, pointed_thing) + if new_stack then + return new_stack end + local under = pointed_thing.under local above = pointed_thing.above + local wdir = minetest.dir_to_wallmounted(vector.subtract(under, above)) local fakestack = itemstack if wdir == 0 then @@ -61,38 +70,61 @@ function mcl_lanterns.register_lantern(name, def) fakestack:set_name(itemstring_floor) end - itemstack = minetest.item_place(fakestack, placer, pointed_thing, wdir) + local success + itemstack, success = minetest.item_place(fakestack, placer, pointed_thing, wdir) itemstack:set_name(itemstring_floor) + if success then + minetest.sound_play(sounds.place, {pos = under, gain = 1}, true) + end + return itemstack end, - --floodable = true, - --on_flood = on_flood, - on_rotate = false + on_rotate = false, + _mcl_hardness = 3.5, + _mcl_blast_resistance = 3.5, }) minetest.register_node(itemstring_ceiling, { + description = def.description, + _doc_items_create_entry = false, drawtype = "mesh", - mesh = "mcl_lanterns_lantern_floor.obj", - tiles = {{ + mesh = "mcl_lanterns_lantern_ceiling.obj", + tiles = { + { name = def.texture, animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} - }}, + } + }, use_texture_alpha = "clip", paramtype = "light", paramtype2 = "wallmounted", + place_param2 = 0, + node_placement_prediction = "", sunlight_propagates = true, light_source = def.light_level, - groups = {dig_immediate=3, not_in_creative_inventory=1}, + groups = {pickaxey = 1, attached_node = 1, deco_block = 1, lantern = 1, not_in_creative_inventory = 1}, drop = itemstring_floor, selection_box = { - type = "wallmounted", - wall_top = {-1/8, -1/16, -5/16, 1/8, 1/2, 1/8}, + type = "fixed", + fixed = { + {-0.1875, 0, -0.1875, 0.1875, 0.4375, 0.1875}, + {-0.125, -0.125, -0.125, 0.125, 0, 0.125}, + {-0.0625, -0.5, -0.0625, 0.0625, -0.125, 0.0625}, + }, }, - --sounds = default.node_sound_wood_defaults(), - --floodable = true, - --on_flood = on_flood, - on_rotate = false + collision_box = { + type = "fixed", + fixed = { + {-0.1875, 0, -0.1875, 0.1875, 0.4375, 0.1875}, + {-0.125, -0.125, -0.125, 0.125, 0, 0.125}, + {-0.0625, -0.5, -0.0625, 0.0625, -0.125, 0.0625}, + }, + }, + sounds = sounds, + on_rotate = false, + _mcl_hardness = 3.5, + _mcl_blast_resistance = 3.5, }) end @@ -121,6 +153,7 @@ minetest.register_node("mcl_lanterns:chain", { } }, groups = {pickaxey = 1, deco_block = 1}, + sounds = mcl_sounds.node_sound_metal_defaults(), on_place = function(itemstack, placer, pointed_thing) if pointed_thing.type ~= "node" then return itemstack @@ -158,4 +191,13 @@ minetest.register_node("mcl_lanterns:chain", { _mcl_hardness = 5, }) +minetest.register_craft({ + output = "mcl_lanterns:chain", + recipe = { + {"mcl_core:iron_nugget"}, + {"mcl_core:iron_ingot"}, + {"mcl_core:iron_nugget"}, + }, +}) + dofile(modpath.."/register.lua") \ No newline at end of file diff --git a/mods/ITEMS/mcl_lanterns/mod.conf b/mods/ITEMS/mcl_lanterns/mod.conf index 104722123..746ffcb15 100644 --- a/mods/ITEMS/mcl_lanterns/mod.conf +++ b/mods/ITEMS/mcl_lanterns/mod.conf @@ -1,6 +1,6 @@ name = mcl_lanterns description = Add lanterns and chains to MineClone2 -depends = +depends = mcl_sounds optional_depends = author = AFCMS title = MineClone2 Lanterns \ No newline at end of file diff --git a/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_ceiling.obj b/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_ceiling.obj new file mode 100644 index 000000000..7079aa7cb --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_ceiling.obj @@ -0,0 +1,104 @@ +# Blender v3.0.1 OBJ File: 'lantern.blend' +# www.blender.org +o Lantern_Ceiling +v 0.187500 -0.000000 0.187500 +v 0.187500 0.437500 0.187500 +v 0.187500 0.000000 -0.187500 +v 0.187500 0.437500 -0.187500 +v -0.187500 -0.000000 0.187500 +v -0.187500 0.437500 0.187500 +v -0.187500 0.000000 -0.187500 +v -0.187500 0.437500 -0.187500 +v 0.125000 -0.125000 0.125000 +v 0.125000 -0.000000 0.125000 +v 0.125000 -0.125000 -0.125000 +v 0.125000 0.000000 -0.125000 +v -0.125000 -0.125000 0.125000 +v -0.125000 -0.000000 0.125000 +v -0.125000 -0.125000 -0.125000 +v -0.125000 0.000000 -0.125000 +v 0.066291 -0.500000 -0.066291 +v 0.066291 -0.125000 -0.066291 +v -0.066291 -0.500000 0.066291 +v -0.066291 -0.125000 0.066291 +v -0.066291 -0.500000 -0.066291 +v -0.066291 -0.125000 -0.066291 +v 0.066291 -0.500000 0.066291 +v 0.066291 -0.125000 0.066291 +vt 0.000000 0.062500 +vt 0.375000 0.062500 +vt 0.375000 0.437500 +vt 0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt -0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt 0.000000 0.437500 +vt 0.000000 0.062500 +vt 0.375000 0.062500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt 0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt -0.000000 0.437500 +vt 0.062500 0.125000 +vt 0.312500 0.125000 +vt 0.312500 0.375000 +vt 0.062500 0.375000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.687500 0.625000 +vt 0.687500 0.250000 +vt 0.875000 0.250000 +vt 0.875000 0.625000 +vt 0.687500 1.000000 +vt 0.687500 0.625000 +vt 0.875000 0.625000 +vt 0.875000 1.000000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.7071 -0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +s off +f 1/1/1 5/2/1 7/3/1 3/4/1 +f 4/5/2 3/6/2 7/7/2 8/8/2 +f 8/9/3 7/10/3 5/11/3 6/12/3 +f 6/13/4 2/14/4 4/5/4 8/8/4 +f 2/15/5 1/16/5 3/17/5 4/18/5 +f 6/19/6 5/20/6 1/21/6 2/22/6 +f 9/23/1 13/24/1 15/25/1 11/26/1 +f 12/27/2 11/28/2 15/29/2 16/30/2 +f 16/31/3 15/32/3 13/33/3 14/34/3 +f 14/35/4 10/36/4 12/37/4 16/38/4 +f 10/39/5 9/40/5 11/41/5 12/42/5 +f 14/43/6 13/44/6 9/45/6 10/46/6 +f 17/47/7 18/48/7 20/49/7 19/50/7 +f 21/51/8 22/52/8 24/53/8 23/54/8 diff --git a/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_floor.obj b/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_floor.obj index a6125886a..c90ece680 100644 --- a/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_floor.obj +++ b/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_floor.obj @@ -1,6 +1,6 @@ # Blender v3.0.1 OBJ File: 'lantern.blend' # www.blender.org -o Cube +o Lantern_Floor v 0.187500 -0.062500 -0.187500 v 0.187500 -0.500000 -0.187500 v 0.187500 -0.062500 0.187500 @@ -37,10 +37,8 @@ vt 0.375000 0.437500 vt 0.375000 0.875000 vt -0.000000 0.875000 vt 0.000000 0.437500 -vt 0.562500 0.125000 -vt 0.937500 0.125000 -vt 0.937500 0.250000 -vt 0.562500 0.250000 +vt 0.000000 0.062500 +vt 0.375000 0.062500 vt 0.375000 0.437500 vt 0.375000 0.875000 vt -0.000000 0.875000 @@ -93,14 +91,14 @@ s off f 1/1/1 5/2/1 7/3/1 3/4/1 f 4/5/2 3/6/2 7/7/2 8/8/2 f 8/9/3 7/10/3 5/11/3 6/12/3 -f 6/13/4 2/14/4 4/15/4 8/16/4 -f 2/17/5 1/18/5 3/19/5 4/20/5 -f 6/21/6 5/22/6 1/23/6 2/24/6 -f 9/25/1 13/26/1 15/27/1 11/28/1 -f 12/29/2 11/30/2 15/31/2 16/32/2 -f 16/33/3 15/34/3 13/35/3 14/36/3 -f 14/37/4 10/38/4 12/39/4 16/40/4 -f 10/41/5 9/42/5 11/43/5 12/44/5 -f 14/45/6 13/46/6 9/47/6 10/48/6 -f 17/49/7 18/50/7 20/51/7 19/52/7 -f 21/53/8 22/54/8 24/55/8 23/56/8 +f 6/13/4 2/14/4 4/5/4 8/8/4 +f 2/15/5 1/16/5 3/17/5 4/18/5 +f 6/19/6 5/20/6 1/21/6 2/22/6 +f 9/23/1 13/24/1 15/25/1 11/26/1 +f 12/27/2 11/28/2 15/29/2 16/30/2 +f 16/31/3 15/32/3 13/33/3 14/34/3 +f 14/35/4 10/36/4 12/37/4 16/38/4 +f 10/39/5 9/40/5 11/41/5 12/42/5 +f 14/43/6 13/44/6 9/45/6 10/46/6 +f 17/47/7 18/48/7 20/49/7 19/50/7 +f 21/51/8 22/52/8 24/53/8 23/54/8 diff --git a/mods/ITEMS/mcl_lanterns/register.lua b/mods/ITEMS/mcl_lanterns/register.lua index a2c513eb2..76d48f50d 100644 --- a/mods/ITEMS/mcl_lanterns/register.lua +++ b/mods/ITEMS/mcl_lanterns/register.lua @@ -2,7 +2,25 @@ local S = minetest.get_translator("mcl_lanterns") mcl_lanterns.register_lantern("lantern", { description = S("Lantern"), + longdesc = S("Lanterns are light sources which can be placed on the top or the bottom of most blocks."), texture = "mcl_lanterns_lantern.png", texture_inv = "mcl_lanterns_lantern_inv.png", light_level = 15, +}) + +mcl_lanterns.register_lantern("soul_lantern", { + description = S("Soul Lantern"), + longdesc = S("Lanterns are light sources which can be placed on the top or the bottom of most blocks."), + texture = "mcl_lanterns_soul_lantern.png", + texture_inv = "mcl_lanterns_soul_lantern_inv.png", + light_level = 10, +}) + +minetest.register_craft({ + output = "mcl_lanterns:lantern_floor", + recipe = { + {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, + {"mcl_core:iron_nugget", "mcl_torches:torch" , "mcl_core:iron_nugget"}, + {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, + }, }) \ No newline at end of file diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain.png old mode 100755 new mode 100644 index ee523c9226d618aa4cb6c31a11a3130f5a464495..01725114a6c7eba66c7abf561e57563b46171c7f GIT binary patch delta 149 zcmaFBc$RU3gcu7m0|Ud`yN`l^6k~CayA#8@b22X{I%t>h2l#}z0!5XTm34GjA5L~c#`Q(Xu+NBAe zE{-7FVdQ&MBb@0R5{+yZ`_I diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain_inv.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain_inv.png old mode 100755 new mode 100644 index 61a300fede1736bbafa7e07d7b106756b9c18edf..a8c89dab469bf26d5c6c0c06c3dab498bccad248 GIT binary patch delta 146 zcmcb~c#3g?gcu7m0|Ud`yN`l^6k~CayA#8@b22X{I%pU22l#}z0!5XTm34GgTe~DWM4fqiHM1 delta 161 zcmX@bc$0C0ga!v20|SHn=l_X7im^Dz-HBn{IhmJ04qKA9y9>jA5L~c#`Q(Xu+If+l zE{-7Dj7i?^F5L3hj~oDU zYCK&WLnJOIKZr4HWaP0(Ghyfy<>8rYoNi!HP-tLaBAE$f6d4(unRAhIQc8Nlj7je} z18tU`5z=4{x%?)naS1m|+PWy##4|76G2U? y<+WgEdeID3myb_Ed^<#ak4cpjpLb~CXJC5n>-PQeLm!|+7(8A5T-G@yGywqlF=bW& delta 428 zcmV;d0aN~_L)Ao(7zqdl0000OU;0y{D6tnII~E0cuG^ zK~zY`?UpZ3!$26uf9)E`D~dS741wjy47a%%1O~x(0Lz!)6YwR_sL2_!kW69bV1f`9 zXfVuFP;r5zDT1^#Tbt10ppUr|chCF0f9}aS0LGX^L;$eXGMmjDeh4qUlwZrBwN8{$ zgki{hK6e0It#uY%L=X|Q)=3e6fl`X;bn2`qxH|M>f72maeBC=3*;WxjsxS=*;E4!F z*HNqNz%qd`CdsGj0oZBDl*f6cLnCR30R2Eh2)owv?cMaFFr}Qj#)= z$jTtO`M#$lWk}yhzCLczq*Z~pte`GYZ8(3#4=%RX;;r3vULM~8IJvLr2dBYDi{PWa zAKV;o#QvUwPM>HrVgK^2h97kL@N}EmS~Wjd_%NC@e$e>AzxRXYf6)978bA0wJ^`#P Wd9>vG3V#3q002ovPDHK)LSTaYoy*(+ diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern_inv.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern_inv.png old mode 100755 new mode 100644 index 1e81819ba95fb37c446bc5b37278432023322031..8bdc8095fc5de299ae0cbc348ff585c0b16bb0e0 GIT binary patch delta 182 zcmaE%vs7n-1SbnK0|Ud`yN`l4DmsWxE*90OmkaO-aRmxK&A0s2X7zum&;LtR|6eUo zR#w*0(J?hO{r~^}-^%}rKox8yL4Lsue?VY9U*`j$2xF4By9?*Xn@isSId+~djv*Y^ zlM@`+o(9aCE30;iL0GfFNbAy{D6tUKJ~UxJg7o zR5;6HV4yY7(b4&@qoebmY|Y3tS-{lP6t89`LN56J{X1R@81ZT5}dBqtSKEH&7q1~46%tU*ElarId zeeY*xWG|q*h@cBDS1SBv(A8s3V31H_VA#EeLAU(@Gs)4&Afd*<@ZuK3=ZEibDq+DD x1D_whW8mGr1|wF8_JY;2Ps|JqpBM%|001+GLyO0j;pqSX002ovPDHLkV1f}Ccvk=b diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern.png new file mode 100644 index 0000000000000000000000000000000000000000..6e20058ea35d03bcdd7c225d2c372ee7be934f82 GIT binary patch literal 8642 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 literal 0 HcmV?d00001 From 9cc088c940dd36bb3885c7a4bfe14176826e2b22 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 8 Feb 2022 23:00:45 +0100 Subject: [PATCH 468/720] fix lantern light value to fit minetest limit --- mods/ITEMS/mcl_lanterns/register.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_lanterns/register.lua b/mods/ITEMS/mcl_lanterns/register.lua index 76d48f50d..efdd1ed98 100644 --- a/mods/ITEMS/mcl_lanterns/register.lua +++ b/mods/ITEMS/mcl_lanterns/register.lua @@ -5,7 +5,7 @@ mcl_lanterns.register_lantern("lantern", { longdesc = S("Lanterns are light sources which can be placed on the top or the bottom of most blocks."), texture = "mcl_lanterns_lantern.png", texture_inv = "mcl_lanterns_lantern_inv.png", - light_level = 15, + light_level = 14, }) mcl_lanterns.register_lantern("soul_lantern", { From e138d998efac2044d2b667fcf366a2831ff0df41 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 20 Jan 2022 22:55:36 +0100 Subject: [PATCH 470/720] `walkover` fixes --- mods/CORE/walkover/init.lua | 38 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/mods/CORE/walkover/init.lua b/mods/CORE/walkover/init.lua index 4d712c308..eb9de4218 100644 --- a/mods/CORE/walkover/init.lua +++ b/mods/CORE/walkover/init.lua @@ -2,47 +2,45 @@ local get_connected_players = minetest.get_connected_players local get_node = minetest.get_node -local vector_add = vector.add +local vector = vector local ceil = math.ceil local pairs = pairs walkover = {} -walkover.registered_globals = {} - -function walkover.register_global(func) - table.insert(walkover.registered_globals, func) -end local on_walk = {} local registered_globals = {} +walkover.registered_globals = registered_globals + +function walkover.register_global(func) + table.insert(registered_globals, func) +end + minetest.register_on_mods_loaded(function() for name,def in pairs(minetest.registered_nodes) do if def.on_walk_over then on_walk[name] = def.on_walk_over end end - for _,func in ipairs(walkover.registered_globals) do --cache registered globals - table.insert(registered_globals, func) - end end) local timer = 0 minetest.register_globalstep(function(dtime) - timer = timer + 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 then - local nodeiamon = get_node(loc) - if nodeiamon then - if on_walk[nodeiamon.name] then - on_walk[nodeiamon.name](loc, nodeiamon, player) + for _, player in pairs(get_connected_players()) do + local ppos = player:get_pos() + ppos.y = ceil(ppos.y) + local npos = vector.add(ppos, vector.new(0, -1, 0)) + if npos then + local node = get_node(npos) + if node then + if on_walk[node.name] then + on_walk[node.name](npos, node, player) end for i = 1, #registered_globals do - registered_globals[i](loc, nodeiamon, player) + registered_globals[i](npos, node, player) end end end From 7fbdd71081be124516e7a209084954fcd0fc0f83 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 20 Jan 2022 10:01:59 +0100 Subject: [PATCH 471/720] obtimize glass detail images --- .../mcl_core/textures/default_glass_detail.png | Bin 4942 -> 120 bytes .../textures/mcl_core_glass_black_detail.png | Bin 4706 -> 113 bytes .../textures/mcl_core_glass_blue_detail.png | Bin 4710 -> 113 bytes .../textures/mcl_core_glass_brown_detail.png | Bin 4709 -> 113 bytes .../textures/mcl_core_glass_cyan_detail.png | Bin 4710 -> 113 bytes .../textures/mcl_core_glass_gray_detail.png | Bin 4703 -> 113 bytes .../textures/mcl_core_glass_green_detail.png | Bin 4708 -> 113 bytes .../mcl_core_glass_light_blue_detail.png | Bin 4708 -> 113 bytes .../textures/mcl_core_glass_lime_detail.png | Bin 4712 -> 113 bytes .../textures/mcl_core_glass_magenta_detail.png | Bin 4707 -> 113 bytes .../textures/mcl_core_glass_orange_detail.png | Bin 4712 -> 113 bytes .../textures/mcl_core_glass_pink_detail.png | Bin 4708 -> 113 bytes .../textures/mcl_core_glass_purple_detail.png | Bin 4710 -> 113 bytes .../textures/mcl_core_glass_red_detail.png | Bin 4706 -> 113 bytes .../textures/mcl_core_glass_silver_detail.png | Bin 4705 -> 113 bytes .../textures/mcl_core_glass_white_detail.png | Bin 4706 -> 113 bytes .../textures/mcl_core_glass_yellow_detail.png | Bin 4710 -> 113 bytes 17 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_core/textures/default_glass_detail.png b/mods/ITEMS/mcl_core/textures/default_glass_detail.png index 791309817e12424da6c346ac9e68cf0abb1ca2ba..6205f84a588ec196f612f886fef310a1baffb8a6 100644 GIT binary patch delta 102 zcmX@7Rxv>$fr*)cfgx$G_$MI66W|l#3Z(Df{{STa|Nrm0>L4qS#aI&L7tG-B>_!@p zBjxGh7{YNqIl-ZUnTL(%j6zpyCNeP>TA%Vs0jgr~boFyt=akR{07aZ1 Aa{vGU literal 4942 zcmeHLX;f3!7QPIM3@VjDK`J3)i-jaNm&`KHsKJO>5QlPea}!dM+>itaK@hZ9tX4!& z5r_9gMII`ONToPXYoSsriqfKhpeRxYR9bxSN|ARGkm7p%<65u(%vyIi`+WO5dw*x2 zvvTexK}6_O3r7nGf~JOt1x13Vwf-_S0r%cJUBF<{s*8%zM4~AqrHT+sWjINbs>DgS zRw{-dZR_#q6{nuKSq-;*q%)sF&*_faSk~cBtDUaZCU&*E4%8JGS$b?zyK)cwyR&xR ztBd$<3fGx=$l8j!Yt<Gt%Ip2d+o3ivg~)@bu=By`9~%h$0U5kg%2B zw%_?%fND?1`DLOO|Ba#88g{UBnQQXuyL|sOxp=@0ZQ5stk7IY16hGk~RO^z5?s1LJ zKSo23$-fm|UzvE+1W|m@P-xokVLm(bN>^XOq?Qt^%vJY9igU$jA8&Q=&Fjn~qdRO& zCGaKsnjda=Hn6i9E*C01x=*g%KAl1#p0@iexAQA3~>GqK!6We0z)&$GTD`>^oOye>HASkR?mEC80d=*dAj))3!N{ zCo_#~V!X^)O|6%$ob3J(xkb8ux!TVtjc`AAI>I&6sp=A|W0TiFED=rr)IR4$*s&>} zZWk%L1-Gnyo8}AM()t?HoY(e0&cEir-qPnY>q~AK+=ZH^@2#=sLgB|tkF41cvi!y& z?rm4Mtv=bd`6UIajZIcp9SDi+a%#n94@KXin6BbQu`2&T+vv6C^Xw0AUs(Rt!r*Y><)@9es5*E83pWd7PvsQ97qNKiFdvaqm z*1r6O+lLv-$@RxDc#fILl=uZ4&mS6BI5tmhTzu-X1#$1N^Mj~4TeAFHZvEb9ma?vJ zL0?GYupN;s**ZC?GY;IA6sA4sU0=n!z^a?V-x%UJP4FdYSO?80>YWiP=J@&uPK5Hz zt*z4|&KDsC^Pj$)RI#9>s`~4zxhFb@!&)pW?(W4Lt!LfzEqLf0s;j#9((QPkKx2IW zSJ}G8TWvne)n^tCtlxFNswRRR_R4h2>5kk-Kh1v>$k|_ZaK3x$mwRP31&%#|U9F1r zRrJ*^=QFqeNb{=+*s%Zm2FsbxJOr=W51+An$=C(raw_b>JG2`_gSg^#>eE7yDv!wp;nvtl}>z3!1 zH#eRA*T@g6e~--i?vtDZmhaY=M0e|k;+|LM22=f_Pxxl{*jD!JDm^z9$%vZgbZ=e5 z&4Jsw^BwHK>UWfaRUX4%%)M#w%EBrlan%!>>P8KVF#Z*sgwqvX+ODJdz` z6i+IllF;Z}E|&%)Gz6gl1Vx>y(4bn1LOoYcG0G8yt1*>SsgV*2lAaS45=k0wG8y!f zUdJa_^7-TR3iX%@Ko6Q0Rnq8Gm?oFgCVHqf!O4JRETF&iP)C8yk`{@pi6j+<2PfkS z&D@C;B5d4WnWT~#(h*@aT!za5R1HR@zcFNJIA1XCp_f1+l`9QiK)Z`sfa3FcK?Ihh4=+5(o2(z7Cn7MZh-Y|Z!(uvzEo4zp1_z@s z7)&-r$YL`nT%3i8giJ2N_2f*T3RkE#r~gIFq6gNGMO-o#hT##F|JaBO4M`GVJgBfxa+5d2a*B8qWU@o1O_|E zg%_y8Q4OJrA_$o`SswsN?`bG+lGo^@gh|x^k*crwv6>G+C8Mp;B_NX;x=18L+44|q zbPzR~jE~9*{6@R5cvK<5!TKI6sMmJsUrZK8XL1k*i%DT3bT);7Gw2i!7Zp($2*zYE zIdlxeM$;H)R}*4Q3aY~WB_LCf4JaT(HY7KLl=BTqkE2uKalKA3LZ`qi3Y{AT!#pOP z=gD-35grVaX=4e~^sD-H#$L4l(ZtIDn6M21zfl|5Uchce8{e+RGy@U*oxicU_&bLn zk=_mRR{Fk^>z!P0rNCQ(-&NN;x!y{Fw*tSbuK$}{7JnXia0U1mlmd=3K~H)=gCL`9 zX<(orJTUO}w-5+&%S+Gm4!h*%RQJisDzcsb<{XZwbe~6hF5K|{;pZho;~@+n+pbO4_znMZ@8av?(9Hyn%UqJyrk&; z`~oht&@4 zc204rWA{)c)qU?7&e86V5<2p0;ewW(yQ(A9rr{oO?~zR}mkLern4G4vJRzAsWIlc5 zX-ds@Z!kblrv(K{Op758Gb#RUtImqrIo$Uu{OnCC`)p8 zVZwjhlj45Q?~h%y*~uuq?VGx!Mfn4nSKg2NC484vL!L2XINSI|Mo4FY$z(;={^e)R zJoJfh&a_I}QDZc1T2_4CsTQw}J9j$TY9&R(!_Zlo>bpOPxO#9loi11$6%3x8oiD(B zWMrhGxiz+ARwZZ{X(A(*L4FT!f$vn1k#JFH5R^0N{V>olSB9-nLy)D7{xX7!_Ra!E zGfg-@*sOc<413SH6=hk6foXPlkbl&a7A)=?W2?+Uhc7NV8Ii;ylCw2If`Xf%=hII` R+ypQvJUAk#JRolUe*soZUVH!m diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_black_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_black_detail.png index 48bcb54c4887c96985dc6dec6ac85ca5c32d7e6d..9dac71149d27312b7d3f18f8cba1eae27bf26b3d 100644 GIT binary patch delta 95 zcmaE)QaC{(l98E#fkD+aR|!b51^9%xN`isz;d!w@5vGzLzu>e9TdgO7coLp2jv*Y; q$q5Y1d}3^jd~B?YY(5QItPK1n3@d*XKI8?eVeoYIb6Mw<&;$V2{uM|7 literal 4706 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 literal 4709 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 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_gray_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_gray_detail.png index f7daeba1984614baa75a8e35ad9b4145351a8140..4dbc15680bbc0e19b57fdf1e740163d0990cf3bd 100644 GIT binary patch delta 95 zcmcbwQaC{(l98E#fkD+aR|!b51^9%x`hdY{sR)n+Q%R6taN2~e){|m^JPA)1#}JO_ q+SB_QJ2{_&jcKXT3_llStx@B4hu z_nk~OO5+!~I{P?75acR}7A1hsDVEF00lfP?d5u8Oghz$46jK6{Pcj&Bl}3w^Oa%sv zgqbxe2r_r}mZvv%kz6+1SSGH>kT`9;odGkuBPwnLbmicy9|=3_ey}^c);`o}Re0Ia z+OXI~^ zJL|}fx^7F@M ze~h2M76Jc}dUj{C-N~7|=IoYv-|XouO3%36=Gj@-5c}Z^?Ur4R$lR%?6~V`At~C3d z_g++#*}ow9@n&AJE2mh#!^?rpx={PTwc+^zK40Uqj-8i$GeJA2eET5}CQ;um z4{0vUAqF2b7(L`wsj){M9BFTd)$5Ec9j>;iX$3pkUsSa>c0R~XPiq~x-;_=3{(7*p ztH4Y#dwOWcjoPR{_I1gb z@aBW3vhudq9*bvH+IZD1Ch3cy8CC0ky19et*pzWpcFnxcC6Ha|>Z~ADauhWtwBk9* z=jUHHrZui?{nP7mxw8o`TXAP#Q)kJZz28g?jz{cr-Ks;K%qZTUHYl&_<6mzGi}c&O z_2Qy?0Z-kAoL+@RK7S~^f_u+Akd|({&kpPe9}Q4`O59>TitDI|5?5eUv(5l^1_XtK znGFbIzwFCD7>B+VFB<#Gb08XoeI-*I@;I_!X(ZEAR`U^ zW(FYx2M8?zBk)`!iiz_uy(wTUgc2RiH{=?%)^U_54bx&e5K4fm^mj@wlEg_zGb|LS zH9CVe3y}Rzq)DTCOV&HRSv=Np#x?@dM{(bYelxo@7(~Uz@kKbAYiUm+5|AzR`AQts zDEZb~1;*eqFb0bfMCT|dEEWb+crb%Wf$2dg%0lQEm!TK~CD9WmM2}(?C;(2?030?O zMcJ^5MNwfGlfpt+ObVjpaw$9(gQ4OgD5_**V<0{>YJe&c?bxm?P)Yy=E9fj#iKr++ z3?_i$GBFB*1YrP*jRi4O9HxrHwn8aUeiUxhAz(Q*Iz)}p40^TIVIiC!A(aTo3@ZHA zBGn=$6-W?}7i;vn=C=-+Mu#Pu5DT01AQsHvaDsR|HcaOR1-%VQ#*73|q6L!4SnXgIzR-vvCfq2)ajk%CX^CXXw916A3=wU5J(=Tv=#z+!!9%v(W^1Azefc1#;*CT#R^if6o^Vm;c|I& z3JZo&3c_R4DRerjVse7mbe?LMwo!BfSDEq=BNm|slY(i0fUMJy=31$o_iiuwnV5wq zm;oRe6b4g9=kQr{K9jcqrt@K#OdA=PX4%zmCJv$f4<{kkfHB7a$Q!nS;{}{nw9(^g zgfk0`zvF9UEq=!e0D8R0d+|F?*En78#lU+7kE?5(uJ>Z#y@JQp^?#$w`RxM_rU$=* z^1*~5O~CMVUw_~|0Coo7R& z+x+#Zdy^cuKMZ7Pq7&pZ?K_Is`E5>e^i-$MlG{f-wmtp*_mWHEn3u~FGTm;S$_cyP zz2e#l+x4j%52?DmYO~5qOT=eng-I^Q$t9srGn|+V<};pTQwy=OyQQ_G+3CW6LI>~O zJEx3ucrLoR?7)oa{SN(C59}wd2TuBHakYPFpfCGg@#(GdrSjFcs`FENcKHYFstlau zw)vOo$*GkdE<4R--0CIlbDjxQH5boGj`e6i7Ptn1>l+plHFrpgl+*5iD3MAd+-9eg zT>QLLL5_H_Wb*5^w<^BdzpdUWYK#4jy^(n@d)7Q|PGfTDkLK8a8vbIlZjFm=QF`r1 zM|%6vuETqvU)4P^*+XsYjG^sMvl1uz*>rb(dnPwAabRuRtlHO-3fG@XU$QpHCz-=O z#bazw{4M-$RaYA7S2sDl?CVW8AjeO>jsA0Ehv0hmrOvLCYM)oHp!0W)ZDBLpOTn|L zgCcg32x3G2kRwOKeg!Na7^0UE5HxYB<+6dQs=a{G(IklzJKlEjoH8$P%?AsjfGJoa zijZ;J(5Le@@| aMGOdv=yuI2m~@f?U?7P&UUWDzqxir6I@vM+ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_green_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_green_detail.png index fb54f942be2872a83811ec6a18cde6045b39d3f6..03b9943f12313f565f67774b41398285e5d969ce 100644 GIT binary patch delta 95 zcmaE&QaC{(l98E#fkD+aR|!b51^9%xrqvq*(azt;Qh*{%B|(0{X%n_uPl^TdBs^Ul tLpY+76BwBJ#Ml`5*jO3ad>XV^8Td^YR{kn{$O}}%;OXk;vd$@?2>^zP7uNs) literal 4708 zcmeHLdsGu=79T_&KCptIh$u1Wg0e{_k4Z=*ghwKY7=!>qDJql6Bn0vz2_&EbQmiOv zRZuD_Dryla;%mhhB4q{FN~uCo6a;OlLd#K9RCX0~Cjk*p`;X^r|0Cy2GP&RH{_efM zd%y2wvN<#)$ZoRBWB>r{1bnUt`ez;$+??3tNcuf7WFZH>4B2S|7bip46Uxw*Qm^=e}d) zv+k2MLv)FH@t|!#alvdT_kace(#~&?%&>prJYU$Y=gp~HBj#VL^66L+$n^>!s6E(W z7uLS$+`n4xbot1&;QZc>%atC@yDTmYJ&n3ie_|e|y`o68s7Au+tUPi8X^iHPoXU>3 z9-0@-Oe;KB%RB#SV)Y)o69NC)+8pXyl@{mqgU|D?C`aurTMq^7U=iB3rQGz(**H-5 z)wF(~7QE=pnCCFK%rQpMEZOp9FOagKpf9>d)Bc>liLt3$PvF9$<8I0pA_DFb9Ju*{prlDM*97>+csx!cm@W|rLQ~Fnd-l6K363KeTD-Ids*gtT3Jd zMK{iKaBSUdO$E9lZ0iWq;{tVHLr95c`xNPgpRdk9CzjPJMAI#6PtWK*WK&h=(S#d_ zx|d(zp&BgxRaE?D{)N7Kond>Q$>Lq>ehhaOG-mz8c=cmv>Kwk*_u_fWK6$80W+zxKL8PwzcBEunnV}@JIYrC}HOD~Wy2Yf&7HNF#y-o>87c!TV0e z`Di6lmWaD_gaZ4<#>eaR8WxFUFc^piDp9SKk;qIYlLS&o6bb=D5Ok?3J!~YXbnYgK zVGb^;L$q>@UanT*Oq{S-ovdf$@z^@aeKfk3t3s zgrTDzCJAJ6rN-=qiTx2$FPDB0>!aLEE9P>>CW5(-@_vMVU%MHMp@c#fSB)f_(i3pm zcvF0qM2*NLEb}cLqB0p&vXnq$QW*pqosJSX5IIX0EBVr*6>DhWmf zK~j(^C3_PXD8rjTV;~4YEWxsYXbg}crc)sp@-|aR5Y|$)RtaP6lq+EwO46ug<^_}B zEdNje8&4q)CvLWcDqy`7b713_%T>w756}p?5)IeGCN;@)8c1PyQ_0>8ItVhDA3!Tn ztqz++6DJuYQifA7wS|Qhg9!_p<`g3^dtkM&0<|ctS8F5GY6Tl_N&si_G>b+h5 zC(R;5WC*3eSf40j8i58%K>|!cK>~y@DX3HmOC|K-W{tAz)Ka|x)}sD0tWvBRY=F$w z;5^MzF8VkZLp*BI38at-WD0>ojUY2v5Sayedx2yY2;xa21(Qs>`hCSdq(5llV+M>l z1~9*28+N>4rxj`RxEj&SB;#NB8tKJf7y+Xm5AsR+j>|PJ*C#3PN#OD68kg&n6!;|Y z_;mf>5?hzW7=dt-${9NnTgqPr* ztfp+Sl^zY5$>mL)RS{snI6LNGq|J_A51O1WigmSW&HB5aHKKU?uG%C{XUE!m)t1>Yo6Dr_&cz8|=jHI~Bhn(LUc%@2zKFA>Qm8MPf-P5c z>pHIdyS2*p#&h3+?w;!sq4j^bzkGgV&dg`l&svU@=sG>7oysbj@9QxS>dC6x78@0t z-c@9Xez1GK`|d)IY4*AQow+im&}nLcG2go=47xr`M3i}}lU4>h-9GP;0fXfgf7k7M zgcC>CIV{Kt4fVHQ7@c$T+dMJe|4rCu?=rh~T`SpMZo71=)y{(fDT5C(o>qN9Wsslz z&FZkHIzG8^U= zzZ2}TyPG#i+Za2|$T_TDW?6mCuX|7X7l>QwXMXt?x7-J8Hhst6f4Y_3+0oS2UL$iE z8UlXk);4flZ|7mprq<%%AT9s_^8p)%92&wblQjI#bpSABhUu~Z_7pi|MjO3A$g_Dk zb=Gt$>lnV8iv%E<#<~aeLkjEd$7XkA nCUU)pTvkm;YRPQM=28H_almf>6{lJdqX7iG5bp7SxUByHR(a#1 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_light_blue_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_light_blue_detail.png index 5c7a34fcef1e9ea940f3d6d7d69073c034cdeaff..842441a2c6252409b1b5ed2517dc03a9094dbe0b 100644 GIT binary patch delta 95 zcmaE&QaC{(l98E#fkD+aR|!b51^9%xrp>$oL<(w}7*i*`j>R^*5RvMY5J*Gd7wR|P%jf=?7hb`lWrwEuX{_CIpYWM=N;cklh(`+X;0 zwuOcS+E_VR0RUhl3KE86_Zfx@XMugYJR1c8!1P&0WQ;BxOv9@+Dk&;Q@Vaz0f=BeI z6ae&{k9UWiyysyZFuJmNk%!*|ILex9UFgLC|DR4 zxbz(EbuF)^FF%^Jexu#p>f%9<&Sx`|N(u)%d`o-;CA*TfZ_Z>Z1pTjLw(Vb@cj#4h z*R39#w!L}j+360&e<^NWZs|5J_*&a}kCnH-=*+3f+y8Q@wMn|e5ih3x)P-N3re2-3 zt1e*R@xxuwcan3@PWwmCi`aF9^$!cz&3nhwJ~`HWCDrptJFU0lPwpG*8?rfHEOTV*9zNh9)M{jJ`aKlSSmL1IS1t@`Sa6FGt^ zfuGC4f~$cKT%X$w<3`S94-OqXe9Oe`NL^c_c{a8zoKS51W5mmNkV-)UVU+|S=@n{h zc>sX7K(7X&WJHITATm_RCk)h`Bj8b(PgubeQ^ab2BoPhD&>#^RA(2ozKFE4dO{S74WQBq}*+Z)f zNX0m=Q;gDH^%492g=aazufdYO$!)k3t5D z#Gw-&1`1@TLT&WI$o|Muhe|(?^-*pHjj^1`iD2#%xF1=+uia>jS&79wp$bYdq$d*c z35NJQSOuXl&-ln5ekNQOH>*Kh_w?{fHH)vR?3VD1K~X1 zP!XR%BT+s`Lgk=NiaGEJ%TQ&C{(~YCRUi>M(7+~@#h}pG92S>OWi#1a`Uj(EM5Dzf z(SS*%kZ2sE#?TfXRt!cgXqZzBz$nLR;rVM2P^Z#Fs#J15!H^Q(;AtFhy!TjBf>14H zk#3my@tOAnWn*t+OF)hqRd~E{YuEioMCd|40?Fk!a& z^gNujBE()8FwLRL&+hB&RR^OiclNt8(4g?Rx#sOzn_ad?Svtt#o#V`X2hEx;Ulz3m z1ixJqo@jUP{8~Xz_qv<)X4$K@RZ6?&97x(-lpD|-nGt1umXN#nc><13qrc#a@*1_@ zbT_uN*Ws=_T|CtH;1VphcqP2MviwW?Cl*hxmmk*lxZD0MYv26E?(>)rvYHCwR>W<% zw=XT`_ILALzbkdOwcGyMK6+K@Z0lY6V$QxW<|T)4l8mET8@+V)jav7OAmv!qBJKCR zcu7ptOt;+7P+z;RVsft@Es_v?--LZWnt89}pN9*N;g;l^e|yj`_3iDAgLScVHub*? z%*%Ybxg7c2r}#|XEx>YXL(mT=+xb1+ZJk}`WKJU^ zz|Vb}R>9mGMcCQYLb5ba2rz;9fF&Dcj$o3{)Ilq?05E-);W7dC?3;rLEp;MsfaQH_ zhZ#JZ=J+yGOyngJ`bKhEp=Ep1U3Y9UZD{hD-yqGjw;MjCc0ADB(4gLdyWIYhqt8jH q&g{6|o#)BA&zi!_mdu*@F92|QVjI7trDXtv0Ym{I!sC7kS^opi1@P4X diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_lime_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_lime_detail.png index 963933572563e7d08979c1c002c688f0b4aee0d9..8b80407d3ca5e6bb271cdb10912dd6e693ded83a 100644 GIT binary patch delta 95 zcmaE%QaC{(l98E#fkD+aR|!b51^9%x)}N6CBBnf+-#`(jk|4j}v@O1TaS?83{1OQWA7X$zR literal 4712 zcmeHLc~leU79Ui0P|yl3h=kxmrP=pL*ioVc5Rgq&CX-1RAq&Y60!mQ|l|@Bx0exr% zMa1>FP({QQtcqI|#aD{@#A=UA2b6)===OmfA%kSR%yZ3%4lf2O2 zxz-jA77zqk3j_Vbz_*S5ZDs;Ko!`EPA!tl@dPFoH2B#8KYNZrQLJ4@93MHUAObS7| zUph*BiXXdK1$38**R7nE-H=Qz&8_uuK656is*3K;xl_M2H=7#2%FB1crM<`A_oh~6 zuHREzRq>?e&eo!N?rUc|Y`@W5SghtwAiK%5DKQ#Yd*U{~Tn|l7-<(BVNH_*{$ zQ(s*=w=~t|vRh0)?)|8Inv>I-V&mX)d4hfQ>dM7pvrBc{HuLsd7Ew*DJ|Ph=?dp$L zMaAYEa(OfHae9lgBd@d4?`2xg^Q(=A?7Uh)CYa*u7nszc6hydNIcR!Rebcd6TQtQJ!>rc6pFZLC5R%vTu9O#U_7|d*s34 ztfg0NlTO$^u4tgzl&2UkEQGw?Bw8FClXdReqg>`V?d<97%J+&fJa0>rS3n`n=JDRPZ6~et7uq$h=CTMNQnsw#-tu$FqC0_-) zT`yTB+Au!4(ygm-@=sHr&5Dhv*;}1>dr9Tyy)}{hlE2nYa=+ZXcS|knIeAH3{mI(p zZ||QlCyV4YF>mk2zA8QHSKI!4ol(8=)a6LFXi;0z+XM29_`WrCycxbQ*D>SG#=Jh{ zE_Pe?kBlm(MHr>-Wy}E);m!9!3ICpu+Y|DdWAU`wcxONRd$1Y~7+8U5Q4k+d%E_=qDMraU zxeBZZ1bKMrR4|f=;sh}&!xRGItGY8p0wxg=@dGh1T09JGzAXpND7Us z9%2x~AJrggOod}g1woGqijWR`zpaEJ`fx8ZekRTuZRVnHuLpc(Jf+nGIV5$L8X(K|; z6^cSXdgv*TVRDth3y?j+633*U$QqHGUSlX{cp||4Bkl<6549VNft5(a_g5k*`t*eU z0-`=XU!p`X3EyzZ=F*s4o|sJ%qbN*bvba2wn9E|3Xi}~iL8MY9%4H3M5-Kz}tUypb z6aXh<0EZ28By2hdCD9o)8h~K%NU)g2BQe-w9*i(q9F)x&1`(phz*NFX!?V&uNdOd` zE{54s36I34!w8AVWY9@mF_lRYBMdGBMx-zUrWv3l2!D=JEr&rnF*z(lDJq4`pwJV} z_X!mWh;%ablO!|=#-+ePKn%hZDY{RJ2uzNK#+B*_r7}rC)Tczydm6@@;4#>gKuiNH z()1HQH1oc&Z18Sy1(Gm>ia;=oEgwb(gJ@taDlr5CeuF9`0anORu-`)i^+AsPMYHG( zE|1P;&`3N63-lYMvq@Z-O(pR_qj(Z25210GBhfWVDV_?eQ6Cwo6jTES$WRTz%|PYX zBdt>tP(4pnI*ml5gNcZsarjI&pU!iq()d&=kup>;MZeV_D)ylK4<{Z5gJH)2@EeqY z;{}{nl#j>N5NCQC|Hju)FaE{|0D3gYXYo5q*C<_|#lUA7k51PpU7y9kXBm%9*Z++! zi%$>7N(GNIu6=%!Ajl{O^YaT8`uTnMqX2^3iZY4>ffu}|G%gLVBu+NA%r}$n z3AXbO7-xUL*LGHRZ23ad4bNvXvB0pnDaI{X-#Hg7G_{v4c8W9hc|Eq_+BMJ%~8voqd|L1(<<3G**#Rr@vp3h)jC?AI0o;wEM&4kLKN#n)@@yAI>Us@tir8^?O!BVO&()x9w%A z(GRz{xNa$(Io`J5PrJz2(#ckvbj94V1*|LfVPqLsnH)KP^4$|NGhyn!1K()2Jt2sr z8zxT64Gs0NogSTgb8nHD=+n1g!uyr&C6_AK?=zdT&Ujy-lq6-VL40!Y!SR+FH*xri6!gt!#4I@m^SB z{jZ{aW=`CAo!3s~ys`Diy`OGvU4%GSP4F&0ng0MXU41ri`;ivG{kETfX+0xz7#M)A zK2`Ndt#f72()8DM@ zZOBet{t^Zd%@+FmL~xss{a&tHE_xfqi+9+>GrSATGGb3y-4w^ipO};VB=MdVA%=0% os3lj`%Q`vk(H^6n=6Mnb62jKcD)*dm1Tc^=AlUz)Z+zB&0e~>%G5`Po diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_magenta_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_magenta_detail.png index 8a1ffeda806b54a1b77e5f1a5184ee45bacac7c4..cd2d234587336d898dc1968f608d8d13d6436708 100644 GIT binary patch delta 95 zcmaE?QaC{(l98E#fkD+aR|!b51^9%xZt}SSMDu3E%K=50N`m}?(poShs&%>-Ha6Ym&^~-~RUA-`VG^ zOg4uu3ADsH;vfjJ6b1>x!RIvnWi|!8JHH%8AZT)5R%Em`9La!HYNb?`iox1U6$WEE znG}L_ZBGlrj(53R_zy2{STIRww)tTKdFhGu@oQGLZhJJB#H)IfQZX5;&56sk>io}8 z%fjl?R<|W6+RyrIxd84NE{_DjMHPcGc?yw$hRhgY~eMf2utuAJBNI(qYgki3Hf zC))3IST_GVFEcmOe&?4v8$wK7XD_U_D#ojaY9%6jl zg|lZqf7wxEP87+jm%qFn)4S&c|4dhllTp?^-LA^ieW%X0{uPrilcXS6W+~|8mI58ZZE?&`}P&nY~ z*!@>t?D4+(t;1i%;j}#0Kfi8YnC$7z?}F3!|6rC}V0&P3@9$3QCCY)0hT!je`jZE4 z4!ZPP51Osc_4acv+5YozuvxZq%%COP?NG^`(9&gKS2)VR^hb*pb5Nz6h)9%TjHr{V z!0vz`FP=_?pedLZ7GsGr1sC6Y?jjzRNx1lBbP-vk;$um&pe!{Ok+mce%}PPp5feu zjBp4r4XT!@v@)dv)^j3aWtx_Y#{)n7u0FX+BzjM;(2S}8^dRXF6^TM5ljL&J*a(f* zKOK;a7WB6fnn-Ynkis#IGEI$Q{^^)P>oS%?g1(PerKwX5?MP4(mWs&%R0Fb7#-$7t zibCH<=p{&$$yJ6ZAoe(sO^=<$Ilt{!8DA6>1c|rjf zug}ksC{dY&WB5uF(-DM0LkLtl$|lex5(+^~!%za1K_k;BRE){MkTFz3g+_}gP)tt+ z$cZw*Lt&#*7L7(Dpcq9=pkY!Pfh|SBEmKNi(aB2B)#rgn>!qgft ziF!^7nMfV+=$C~9ngPNh`Z)yzh6vCLhp)yEtx_GSRHkzA`jTLMq+z^auaQLwl4$@U zQ$O*eGw+8aj@*rGfmE5n1;d815VIK=i!5fM;_>VnrBs`Ns4?F}&?)E!43ME4*xewd z$9Qx`5~kOQOr;PgR07pAlEUQBnH(y8KAFNHlkud{hDrKe{jOs#(*J1UWdMvh20+}1 z4ID4vv?9Gfu0}P}%lHqzM%UsW%mAn-l6;iD6LL++^-&6Z6nJ8~Cgl1k1wINqFz%hOHMLJ%;S^`$``oDh+BIRb|Dv}m z!;`GLF0JBq-2ME{1*6=U%}1o|Gm4W7@;CW6L}o3uIFH}t-Jf9QN%j1LEzGOad~vs~ zvE`iE^*--EA3eSz5ltBoJXl^n)9%HT7q`mGG#zeM-{lm|@phX{f1FdlJ#Jatny#XZ z=+3=!T=wp9v$Edu+Ab<)kFCXS-A-0f82yTUI5Cl>Ton~;d%MOh8zCR9T%h^-S6Ccf zKizdxXsECC+~`d|SLBQFzHh=l8D85}c)4uHQL}(;CSR5KrN8aWets_2lSz5@nMtY7 zn=SHe3!`-_isP%F_M+{_4nTh;b}mX8Y@#O&?&?pDnCd*~ZhLJ*T13RFwM|aN!@@$# z*8I1$4RKaFUa4}C(S_4KkM_04qRxjt@!5Gc?;d3OuiBvf$6L4^cbnVVFD5z;4MA5Q zshfDSZs&t%(<$QMKmkOD=0K)Q8GQ&?%vC|lH4rq_Mt@C$_7%+lMpLa&=~2Ktlf|f@6LOIsXMD+Up_! diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_orange_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_orange_detail.png index 4894833f1f20d23b89b273b462e9bee265ccf99f..930992769a3f188200b55cba43384d33fa10397c 100644 GIT binary patch delta 95 zcmaE%QaC{(l98E#fkD+aR|!b51^9%x-l#VQqOjlT)j$!Zk|4j}v@O1TaS?83{1OS^d7!&{i literal 4712 zcmeHLdsGu=79T`j8eY0U4~m4S1;o7Hk?;(UfB^&qMAS?slQ2LYCV@oIqKJynf}pO* zK>-m#S#_*Nr_e(&;v;D_&w*QfHCNpy%zkBcRyZ1Z! zvN~3wc#3DPB7#|J+JSdBMp*_tw^o`g)oV`&LUuK|V#i&OgZh;(=rD z-stOcw=|rr-}B)3t%}kJpRX3U?!J1nq)fxT^z&SQ*XWlzJ!N5D@;?&~cMfgZ^#>{WtauH(1#=B^jbK zQYrQhxZ0wXeI92H3-+D=T(pnVWG8k>di`=kF}8Hpzss*sf0=_r^O7<)xepB9u?=pAeI_rZz4cU{2N>{|Gog8pV=disVfA97_;ytXNe$gzM60@jE zz9nP%Bx}cg37p_bld41a#Cy*;>gch>F2L>3(ZBQttc_oFR!HK|#eFm5`li<+UOsJ= z;tQzdw0TYgmjfHj6TAzDk@H73H5WQBKA85OJI50D*QFi2m6lT2b1s5*JWZy&(p=<{ zcv$(Q_cU9X7a6xy(Q*2C$ASlsVx9~&BLPomsJ`AVx{<){UY)+w{kC5%&Mouyv+JQ% zzUckm%QNo`cFBIkE+pJ(Ka|s>c-8WF4ctf+HqKv`+4bU9LhJrzNv-|vF||dm?t3NG zJvYV7obZ?wPuI)PmvJ5rCj!>mUO6*=!S=I(r1JiaGorWsYp>-|VIXdDd(_{GW<8o# zC0KuV#mdNp-A&J{$|Bc2+4R#l+MF=OcUP}*3U<{~@+vIq?K|yr1{CB~zwRt?xto`` zYq@Q1a&Ep~kb6zZwXlb?2OZz!+I)Z3-QjuFJ=KP^hW@*aB?rK0xME-gl0*x6h)O|% zr78(ZGAPtwL?Fo5-=Kz(bX13zpmI#fCp1Veyo5e=r+VJaowhzUznnL0j!0QC6x`6<*Q(HOi^JIVs!gKU7+WGab5 zRw&5hJ+!)zEC4c^&>wne0Ii7~}J#Dg=}AOpjD1OqI&0RHBs4VGt#M4kB8Efv$uz z#%E=Ok^(3hOG;(Y8Em42!(f1H5R}MeAOMPvFzFOj!liLg6O#ALua8F1he7Glaw!v{q?ra7?*_yiUGvJ#y$lACJ#^xFIa=ZI+Z3~rOMzFj49!bo~HK3 z`;IJ1IHm;_tBf5#+VerMeB^Cp1Trv_3XeCnEe}RUf@t9^RB8$Y{6FV7^Bi z>b)HMgT-QUSZuBg1`N|!Tq1*pf+sphN$|v^fPaF@cVAlM1dKD3uTbe_Le#Zf)O=i*;KXtwW0~w$%h>y}g(F?9@^^ zoBHH)i`szSiWIpx^L5Lrmmh!p6zM)x1^q6+7m@y^ohg2^bucY%s=HZF_qXRW{@O1TaS?83{1OSAi7pMRL literal 4708 zcmeHLX;c$g7A`~(kwstx6&*uB0X0b_BxaGY2vGu}?4V*xrBW3NvXKN55jV6I;kbZX zH-mx#irV0A+aQVqY7feBX_OHJr4eCl*M@dMka-EHaHjuw&h$TWP9>H5zWd#KzkA<1 zscZ>Zw7}AQvN;4nmcju4Fz`8Ef0>zr_i0`I2n3DlN{xuogdtjzQl-ENDMr$)RAMAd zN8k{oYka;Z^i-Rhg`j_lfMz5#+tMBfN1ooWWX+2E+dfREc^~gcJSwVPhow!|taEwZ z|MB!4T5SD=LkFLny_=h~J8H64jl|g|w7X+^J=LkT%VhbezPzZiy632CCE=TJ9cPSmLK1g5w&q?i&g4D z)!WWWe&wB+X_nc0T^cG@CoV3c(H_64Ucq;`l-eu(Q59I+o6~o`A@|}oE^1#HQB?lT z&eVnNoyY@Iht@{B?u0oH%*W0R^h^5T>H1>0>u1N>g83G)S?0k{&%}E-`Widgx7a!I zZWxcQ?i4-H1-zOS8h=u_)7>i5_}?Z`7tsUNvg^)MTc+%HMcnLaMBLutK+*%JZJQUaxcYZr~;`iwK3*{HV8 zsSASK(-Q@-3kgba3EX{(?r3BCAE@4j7u0GwI$*bJ`eSm~<*VG-HoHR9ZB}(&+%?41 zcIJe+H+)Nsquew9K(CzKRGw)cS(@;)@l5oQ;)K$>2~#qgYXTW(6L5K5d6q-;aruju z3v7A1U-&ZFy$fgW%}q;j)221k3*K&J->*GH9Q%jt;@MK`+4-THw(+Fz;tLn=XC$q; z!ISk!Prp2ax;H}GiuGkHry{FnWkf|_XO4{TNWSmec_!H z6t(~S>xVf(>tAesd{Mn>f$ZwdTbzu26>v_jNrgi3>SjyVKgZfm?S0%w{Bo>S(X{>6 zf==gdn;x^(8@=ZByE-j-_ur5h)C^mpRE( zCB}JS{__VZz&AcQUZYX+Xf&->OVxT%6)Fjh&gF7xFoVWmPym9WUMbfgI*MHFtfv^@ z@W<4sico3@g`A}4L_~^Y4WCQ~>!eTl$&|stpXuf5K^1@=G##R((Wx*^CZi4YP-_G! zfMhVCKlM;YfK!APhN%_FDijl>U~-M~Pzo{n*E;-FqMdOXjXbEF`!~2A{gPY zP(Z){RJaJGaF}yg6fvCv<6JIl4uTJ4BSv}i6)G75+DXU|2}V=OC59M!!Fj$RLOz*6 z9f)eMgh&w$4jlO8g@im=_XQe3$gpq?qF0kXhY2&-9GJ=E!b~=s{sk0;snlQ+^_+B= z%HSAQ^ljmRVt}xSeog^_!47KS`Kd5OqfkXC6jDA}p8!ekX&7&k=Ri{e2sJ>g)KC22 z%+Et41K$R=fRr#Skw}KIt1Wkq-~d4kEfOf$S>k-fiQ zv_t7Uo0%Jz9*7*X^EX!}5fBzT#iSv9!?di(F%FXDQ)5khUm4fb)d_D40()14#oM%9 zPV#PPUiF~Tc;nJ7NARYJ1qpkyGXz&6QX?%ckTblx6*S@AdDpcFe5`b~dfyY0D5l2NB_kxn z*JgT5#;v2-BC_v?Q0xA6ZF_$%-f_%q{x*|c2j->pK3e;#Vwne<{$hqnq0fgb*;)(Z z^~(#sIs5!2+EkVgeUv;3OzgSNitE|goe(~5no)C8)s^J%@HgwOPc7&d?zOz1-OKzo z)=KAHs0cK!{L!Z)w`mzV?Xa~^PI=}-Xw2rSfc>W$_$|%18=EdkCinG0H#$_;y{FvE z2G6FZqM!x-5DRjG#;^%iAFzy71}srS&^SB&Wd!BsO$5d<8ey@O1TaS?83{1ORfS7kvN# literal 4710 zcmeHLdsGu=79T|AAy!d=R#C>FMHiDy-Vcbpl}LjKsDP+UCX+Bi9wY$*D!3LDMdcyZ z$GQqqAXQM?Er?Q96c86gd?8p?)T)TfBE|P2l>HJA@ofL`ob7+)oSDqr$M4?z`|kZt zzU&C_Upm=xrX>VHlZC$Cf#7?p;WD2H?hY>oQ3x9MDls@j8;HikDz#EdMB}hFL50J( zj*vo-?&t3P9@&o;Soyp;EZ(zaUP?_2av<%jhr{{v(M3gcXHIkFp|lhvqH4Y8l*`9| z9PEoPNY2!sEjrdw+I%Q$ne%R!nMay#Wn`;)^q)Uv#izyR9^epV(4c112M-H#WWpU2&p zzOTZk=iN=`l8Y@f5-ik}U1tV%yu{rVF8$5w-V?P=1BFGw_0;PbvXZA=A&gbm{e1LY zrTV(SJ+>Wk#JW)6aY|a9pLyDmBdI$%r`3{?@zdNX8)~Xb_1C`jPk)_1hk0N8K=6Iu z1y^^3zjoKGDHcid>0~xRue}fpRg7>+3O|W2G|K(E)%Pq|(a?%}dOl|GXY0deq!r~D`KA_h(F?`un zlN9qpo2!{yAbr+?mGzgRz0JQh4cOkbD3vo6UU@{7o$fnf))Qp+@?CqrE8g`iB`I7A z=LN=GwNK$k>^s)#w#t5^{zT-8=HrDYMH}~p9lsq`a;czIR6H-}gtX&!afL4C)xSEP zHEw+PWjV97S=zWJsH zy5gIKP3(96E@d~?#og^vRP@MuCasYR!|8KA?^}Rmb)V{hW^Xm1QjP`v0Q?rx9 zl2aCYI^<mM5l1I2 zwuD{P5-C5>d&w{acoUE!wOSRQN{x??r^GWTO0|qisDJI#flaQ4p$JP95!` z(fY&zkl}=W*FzHw_7Q3zu2IISG2AB(S7;qaLrAa@e^snH+E|VRqvFxH9GGfARN6-& zmkLDzBOV3{WQ1I0^a5mmWT_>jAISPBH-pAl&gevd`v~qw*6(XK8Urhli0`e$Vh!mD zy#*vge7;195fZ-f5#`b7TwKB>GZ7At%#>hEGAd@$$e5TZMcEvLj)L|uus#GORA{uQ z0>ceZKtdq^4nx9VOA!u6X3%K}nTY`$E{6_oJQkOMVl0fy!bU+XR}-Ks(df}x8K5Kp zii?UROdf|##@IMW31f)KTqYMI(@_SS&A}N62d5jMBp82*QY}ZpauRY>hEr7vnNeXN zobM4J6p-i?&V2`Vtyo zkznZf;hy(IWkYX6BM?m(RWNL9TRw^n1<{~!_|S>~zabSCi7I3`nD60+dM_t_XR%mp zKrN1=WDMi6$xJDiOXeYfaJH0(ViGovGMGb!kDzOmQf)k{#yw=9Qcw+OAY(P~0wa|R zjYW@G$4BA@o)9{XOrw+Oj9?mv&tmeK3}=MKM-UQqxL~Sbs^3@aO8p;BT#W{!wgKQb zBm>(E*sZ7|+tn~(@Bb!%paof*vjo1??)J6og9=DC6DI96 zm+Jj(y?w^pm3UhJDJ3j#rPxUO&+}iJM{AZ@Y~Z0_L|ta`gZij1p_S>aL7x;)v+^v`Q^*OhknU~MOlLchuGFN^AHU`6!peYqiMl7q?JwyN6LprF@V8fNDX z3inUGlhw~m4gXB%makl9T6xC($)UD2m_yMN_v~{!??GnUt9+0A&?0ERd;RCO^Rk%( z1JIQx>IOIa+gadjI#KMm)Ei!{B!^S diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_red_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_red_detail.png index db44333b236b889c978025fa5d52a1a98badb03d..587fbdbdd49fd444ee8e07ff6edb75ec25de881b 100644 GIT binary patch delta 95 zcmaE)QaC{(l98E#fkD+aR|!b51^9%x&NMa#BBhKsEI<*ak|4j}v@O1TaS?83{1OOgA7C!(0 literal 4706 zcmeHLd010d7Jn33L{y-|B8r57#VXlDHV9jS5HW~hM;v+Y{HDY(4+^@i=!d!G-$0sJk=wN+2Q7y4|rm^A3npLdj+ zJ5+xuI5IA9?SZb^`!h-zezWfJfYG61OJ;HQ%G9t2PEJ7qkDQJ?Jc*E%OSj$ZN-n-SfAF(QwS|(X%;y{+sp*nmiZ#xZ4k> z`Apvig%wmeH<#o=M@na7>#t-AZ4X$+6n6U+O}8zXGnMm=$Y=G27kk_*+&l!y)4HGl zGNUBs8;*QRnDZAB$rI10jr_QHX4SHU*p_|%QPIiT=B<4Plf-^ju}!kBgrju^&C4fU zPa89SCZ1!SzK=9UeR>*cwtKMt_+0DTt>;8hVnNgOoo8y1rZ8cfBn8 zu72IHrkMWAfub7bKX30iEUv)r6xN*aIeJR>0BcH2et9Sx9@?54vVpwpvyxWJoIVWdqGU9;Z*_uIUeb5?B~;WRbdGh8%yrYmuzJbwK~@XhZeS3%iSN zMm+NFb?moYRS*>RhT=6i5OYaY8+N$N?~_|$U{Sc^K>SJK1w2%xAj47>f{_ghHCP-F z6c}t!!)OMkBOsU@SMrI^>MsxpxRg&!^cPdbY5|sxN3PIdu`8nE&=nadS4s>HvI{iu z0DuD1!32XMQ>o<{_(U@<4?LU96e7XwqRZeDlf*Fufl7lBm}DlIN(wjN*>qx%9U)L7 zmGLCPc_R?ujZaM1>C`+5MX%SB^$fB~Bd5@~TrP!5r_kvn;6c*nD0Q%bq||zwAcir7 zm=@LGY8|dp5=@vdqRP_oi9|3?cw3)BEf$Z$E43pm06r)NSWTgksT75RGB!f13(p21 zBL)3#gfVEIb=i>b%E7NYT-Fb(SX6+>R8bV40W#xN1RG+IuM@MB2A4)+QmH5jLFrVIj46dV2m@nqxb!hlBBfRbD^bh@1;EKT zz+uo38coVzk(ii_N@8+Y2#L$3%Sd#XhOikdIu*u{F%SziI8Y^=IkqYjloUY07{;Kn zscaIA(3zkbmW+fTQiMc9r7Q-E!9ke_%?u?)dGk~n1q`MWSHNR=O_G!~OeXR{eJE}H=!h7+0b5-^PxDA9yT zqmtD#rbx5A34z0t5{YYpM~+GH zBbpC`<->2oOCS?B4-p7v+45j?IEfa{#-!#%AZ~aFO^20o46N@FLA|x(zcX1>CWFpm zA{-J|=1&Im~8;W4cox> z0(L9P=yo;2nTf_f@G~+Oe_#dxJ)Y!)_#LNfoURXI;DemU)iqAn2QlzL&g1I(ztLs) z?!bd7!LJ}aIL;Vu@lznkq7WAdVnhPL+rJ1PXm;tUQhsDZ$c)CNu?LCHR+HA-%8o?4 z2*W41)`U6EDM+b|x7pO~%furksWYrv@>hEr<855!OFUAoLVvZqeEquUyYTsgOC{-! z_r6*l+|j=Br}LHtDMeMXHn+XYwwA67Z;V?JZ~qVCx}e@PTLzu+k}F!@p#7}9;c830 z?Tvp2^*wxaO)9p2E$mD_G~MO7_4C_@4r)7mr<}+y_X_fz>HjGIa&c;6>gV^$^+|Vk zczN&G?mNZN_?t^Y%64b_Erv2q`6B;ot`f4GqgtL2<$ULyZ!S!&uJP0E?jj&bmz{jp z#l(a<&PrN$^KYdHF?3+j)HiwewtaoDq}q1gMyt)0VcCOsbAPR0%wW@=eqyyhWWcD% zwYU7slD&UE-SZ4>J5~YxM}BvHMt_rkTK}frWwDbyE!x{IHfF`fzRGLz*!xDbZSs$$ zgUrIzDTd(vs`-}Z&xSnQ*|r$8;|F^}GNaC-Wu3a; jzivY35sUp3i=+^A{QTs?#aAeg0SqJxj}{&aOUwT+_uT6n diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_silver_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_silver_detail.png index 8ff77440aa60fc1195c826381b8b67223208fe09..49d444b80fd94a61e405bf962e61cc29b540cc3b 100644 GIT binary patch delta 95 zcmaE;QaC{(l98E#fkD+aR|!b51^9%x&IE&qLp{fVB1|Pge!*!Iwpve$1@a_3T^vI= rqLULCnEAxm82Q*(8QFXqv{)JVO&C`GDtyQbRKwuu>gTe~DWM4f$e9?) literal 4705 zcmeHLc~leU79T|x5fFJ#pe!YhD2h&&$%HJj6NISH2q>rsOlBrwge)e31llS=tq5%u zL==UBib_SaT76oqwc_?3OY4T92-UhkRou0TAa4>7@x1=yIj{ebb0#x$zu*1cdw<{k zzLPI&#F1gP)-Kin0N9Gcg;CVq-gsGAP~RR;`%nNF`6x3cP8)^lXezZ*N~RJtZH9`V z5qeSz0Q#$4MRN&?4lCZ7Nd}^58-sG3+ikgiFZyobZEDF2%pKtcseIXLpKfZh0t?#>w zPb!4tpJ0HJlG{J39b#ZEFJkg?s8OZ*FA^JU6rq~Ny~gm z$17!RZ(b;J5@H)BHf&ipeaeC!Rp6Zvk+;Bk(wLIq)^qc3d57RW zD);h^&1-MHIIX&&!#-oQ`iHxRUkJM|OlbD)NxO4jmRHtwW_8TMglz$3teUl-H^zlF zns23dZ2Nfjl|{~nCAs`VUY#3GKbqp1`m5o7OOx%Qtql2sd{=Xp%C_#(w-?Ig`&>Ck zHf7AV`EAn=hU-X;vn98<=Sc(7;#rZmBE>A-uz``7T;@|$^x}#eTURTdoYUC#XlZ2G zGUgdyYhhmE{_MmCc8dxt*fQx0gVk5;${Nd;`H2^AdDAM{bx(6fjXe6XL)C?{ErIFh zvJJW2ycKxwKLc}^hiX4^um?B}JAzy6Q-xL)X5v-%rWeQB)8;);6?`8)!nK3X@n>CK zeE@D4ogOcxZH-d>;GqzMfFk!#D}V1K=0QvDx-85qj6YZ?Arf+%PO0HT5~%`h zI{kf>6IVBO--!uF5YDVPz3@^le_G+RpY}S7@6}c9$!I!Q)HFX4tF~?3b$e$ulG47d z>6gWV2Wt~*(jK0_H`DcB7mB!Tb;Ag)*Gk8_^UOpeX(kC+v|1Lbc%&)k6x+L?cB%hmg=< zYEq>ol?s}X6O|~_w0H50%h`H9QTp3hERN>CaJDOQ-@|{q{1mGHj{%$e3&={ z^QBA(VWU2f1i`7iP#%u+a4I7y(?o@1f|*LS9Hpj{l%q0&p;E|914h9GL1K{~2-Ewa zCW|-~)k-M`KX4AINYlTA#*lI%T8kRhWceUWn9Jj^5!eUjGWqX7^9i+v>O>o|3Pkz!4`IouLPk*Qd!V7-+R49~EFUhH$>H-L zM2fH=1ed@ND#h3kAHz|YgZscJ+%MZ8yGAM1>QFTiB%>;&s-YUlR1Iy4Ny@43=b}p{ zj5;x47Q})fm>t973OF1A8=1yr37AZfF;FnWxT@b)?92EcO?*v&A=?1u*Keb?7iza+ z3~pBgni*yM8$Sbc@i#`GsE31mkiNrm4a@aG3VaZFxVwhs`XB{92t3?f|2Mg;-yL`e z1@$XPM;&Jf1ilRbBUX_iA!1QT$lHGi0ANb~=lOo&Cj;G1Cr0l8$D5DIwUSmwItoKa zIaLRb^Io}d>paW#_q-4?JSyJJyg7S?N8UV3C)r~6c=Mn~W~Uk(Mdw3j^(00mkGpwd zX+V41r`L{|tz5X~TWPCv`I4gioY2!Tne%LZ1athKC0Vgy_H(`{_oU{twv%U@k6Qiu z#Q)EZ&N@88;-&ES1v_0GA6q=Wv~!21-OFx&cF6>Pua7yM*{9aV$Hp(aS)z-(UOZu9 z@g^_3ae1#C=P%qe-e!ZofLAh?Q|A;#m+_QK=g%I0`H0tYlv!0hT~m68CW$-c;F%*9 z2aTH)mve4+z61<jT^_ z=Tm1>3(4#-A;1A90G3>m(@R-KtHKv(0AS2NjMoTYbBQx$wA6|sLM?CGIN5W-R`9wb zWtt%p2F38|u@b&U>SAV|wZ;&f)d)b~Gx7!;m}fBDa2dCGAIi?c8#^uHC)WPa-06_B f-Qvs1o&_U-yL;^B+BBcgQ8a)kG*Y-XI4S$TKZ@!M diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_white_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_white_detail.png index baddd95eb50e521fff4980e00b182639fa1c9206..e7e0db92d08c9f7c14c0b0ec193609130bea2d33 100644 GIT binary patch delta 95 zcmaE)QaC{(l98E#fkD+aR|!b51^9%x{s)85ny)!P5vGzLzu>e9TdgO>0(laiE{-7_ r(a8x6%zR>OjC^dYjBGv)TC5EGCJZZo6+Ywzs$uYS^>bP0l+XkKV0;?$ literal 4706 zcmeHLX;c$g7A|ES1QlAq!G#b|Y%%*DN!St~+CdD6AgEL-l~6zylRyG4EGnY7p^b`- z-7pMltGMfo;tuMx%V}FdS_25Kh$}SXhBW;WK;caP@to;@d$ZlD8GVEWP@QWD?EN-dxqtRa?Am?7?#Z!JZp^UYuRF zzthT{ap1?@8Omewgo>g|6I_3OQn#T*%jtOLb#LmZH+psAHtUL#4GRwZ&YJ$nZc^Ls zr|w>!bF1I{dgDsPt69NI+*~FKmo5l?;o`y{*Xq*x_&s#PwFTaczbU!TBP zKRuq5JsM70N%O%$$v!iR4pYWC4}S{Pws2>*I9Z1m`IbDyOU_^7YL)_k#_qeW1d}JgE*zR686lit38Gtkj$)`x3`WxrfPMOEV=Gl!}c_H(*6aF z4W~2I4c4o69>2RUBc;-?_D)$tdwSTaCRUTo@4KCqs^jl(ALk!j68d*;+rgIdb^MGg zHSa0Ujy^qd{miZP6-T$ue|ysOaF58t3cW-Gb4RvSm!-Zj0 zQOoO|PYzmCl0>#5N30BN7(UF6Zg=E)w1eG=#4Y0@{AcHF_P93LhBA8E^h3mxhh{Eu zankk_#2@ZBx30(U#F*A5pSL?qe#x{md6$BoH>`B7o%ZX})?0Vl&l~FAQoAc#8auo@ zoj=$wUBM6bEZcD7thdjIfQk1PHmh@r(;fK{CP`5`{=6DV3yw9y+}+ z9gy@*=ubU#(O?fDNl=|SO^cwybX2AH9!McWKKX0Xw5gVKWC#gOMU?=m15qi1LWYUN zk)J%w5-2dG#^MFU9)#3m^3P%onwxpVlFq=10QXP4gV6oCTfhJ%7IOt^B+WcMk${Ic z$LGq_2qxoNZrLokoFSu82sD(!Ake8WgTP^K8?9ES^6=&f;LM(u_Qv`579||h z0YrwmFt~$hD8iI6LB(NYFuP7I*Bf9h8l(W3f^0woS+c=Ru}Jy# zV6-6#HS0vCQa}v}R9ZBJ#br>rbhaOv!X=aOq`rhn=2hLFu|Mg5H1W3p25bYsuh#~) z7qDBAK5bWhnwe$%3qO6e_zNQd>Y*TCr0aHQVzDR*D0uOc9|4lB3 z&j%h<1>S-T;5cIp`-e3I4O@wYghYx$Li+zAfS@UbOAC47)q&$LE{v+cyV{IcV=vzw z;U*ATyH^G~PhByuY>wULXTEeST#_)}rapJMXTcmhcg6e(2{u8mt!l1c7yTlf@o}Lf z$@#(gMFCBXiyKZ`t(dp^N4aTiY4VoBeBs6D%sGyy@cI1CM0*;Q_Fs-@O|@=GWA)|w zD*K;1_-~)IUXh7y-wE!=?HuRUZrfhFvqIP8JMvI&i5K5@BBM38W<$cbI z9IbNZmo7N=;uT`r{{!^9qIpKjhpUXl51TuaqegfRYc!p^m=+cFCj07y(jL)Pr#poo z=_?aP8UxDJGptVkEAYv7Q#|6iYgFK-lWXolcB{^Xe}A~1*VOpSUDH{GM|U@L?TPkk z!1&vR;B0Cuof#&87?2la$HExh!16auc$^M`Mto(yhC$m)#sZ_AUL+RUJ#us(O($C& zzpw+Cri%nY(d?_p$DW=n4=bDO)j7f0*C7JF6KkOc7Ubl#csOrA0MoK%*IR89ye~Yh jZ*|Epw_Q8gXVWmK`pBr|-GaCqfCdr?BLw?{6LbFn3bO0O diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_yellow_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_yellow_detail.png index 83eedf08ba3242e137825a002e6aed13fbe086fb..b3fc7c8933760046e65e536cd552c125bf75fcee 100644 GIT binary patch delta 95 zcmaE+QaC{(l98E#fkD+aR|!b51^9%xK7DEoM3=TiyaI|al?3?(r%l*uJt-E*lkjwL t4B?1QPGDf>6JulKV`F7x^J&mxW#BhqSoy2)Aumu3gQu&X%Q~loCIJ3{8I1q{ literal 4710 zcmeHLX;f3!7QToOKt-S;X!Q|-78Ea;Nr;4biV8wN1;pXz<|bSr1IdL1t*C$&p~&C> z@(`g`Q4yhv7DNjbSg2^N3Zf#^d8l>j!wIpzlYk2A^^a@4{v&JM+ld$oUO0leD9R$ zS^w^Fx5bHlg@J_{`_oQQ{e;)8vT0MNew%L;QYMS7h}eQ~TP$)l3CF_I0-a-E1&JS4 zx45^bWGQa_(}q)Xa~~~fIO2G*z`XAM%_^o%Lv(*Uhre5xvN6RyE_hjM(GQtRXZkFu z^5<_;)zIWk6X-`AA9TcPCs-xj+3?4e4#UOBy*$nx?`+%JiPlB!_=S}AG~<|A#~oc+ zg(Q;=7g}nc=iXRExg^^BRrr(`QuUYvU%&Nft$}lhv-b*cXB}8 za-|xin}j4~I@^QJ+i-|+)-)+b zLbkl$*0@JNIv||zwlxzSpJ)y5kM3wcf>#OWc0^Zn)J~}1xK+HOubCrQO$0 zBrC3uF4%MQ+JWS_O3m4;W!Il4wyy2r^oX7Ry{A%s^v&g?9@VP@Ch>l+zPT&gBl%48 zJNl!VhlkJobZJv%O~H~^$GV=Z>Uw)};o|&-QOABibhn~1CA_{mrOmT6z=rJ+)Z$gY z@8=aSb4zPOScL|*(gRrZR0p4PECSwlFg~MCfjyI+VHPT_tHF7UVNAxs0*DNr$3qn|7euTO zVJ=#k5-bo1a`)6K5i|}X$RbRN%lVY2^$ip=9(dN7sT8svLd5YYk-?#4Uxf-Ivs_p%G}vE@ zCow1el?1MklXaYkNRdeJDHJeH{*a$c865nPUalTg0q8;1B1$UVg+`Uh zs6#!}gntqs8BFMJJ=76kAE62{wIWf4V*W{(oNyRQAx1y?D-%`m`f|i56^qAY0ICL2 z>BB+>3W7sFdgvsO;xeV)3y3`oN#K%CVhzhpH=-|RXd=M)g`68ZphFF>J^Az(Uj86w4~O1V@& zpc9t@@IWy@SVY&SfI#m7YT@~+FoaO3A{2^vK1G)RS?8&5Z?gNq zqy*t=fJoML{9w=fAku-ifh7=+>xal>ecSR7bRdWtNy5bXK)`Qc2#rPLQVgu`!G`)^ z$Ny%sBuqAtl|u)Taxs`iqe);l5gmgW96DRf!00IE${fzFR!9g9qQbnTpi)o`Xdrzx zWGB6pGlruzv6xOL8iNkg88CwxLFe$;t~@5wnMUW)XcX#T!BpL<{!p`YZ)L3p~8}5qTxOpRJeVB(3ete%jL@;G7=jGe;Ofl+AO|#2dK(di8nHpo{{miiW+&RGo z|2h53gt3;le@^i1>0WjHgkgI0#(k15+tL-=@-qBeB33RKdz_Nt(YxG)$zZ;46J$22 zzwT~o?W{LB|EI^R`wz~DgNsoR~#1 zDYuI?kvF#6J8Um>G`GxpGjU;bq4n6U+I((t82gNk&_&8sBrKe3eYw_g4MMA^oTc7z zk1UF8wwjg^8tQF1Ju>6h{dppa_uH`X@7LZgIJG;s!X#jm(Uvlwr2ZRgp4BgAa_CRK zGTPiQ(Zd*S1Y9 zeJ>~&cQvn{wLZpN>$yuY$MD3DUiXW-7Nd6MGT>ArBSt3f*X z-8<;)eN~(1l*@VGY-%i;8|VkIA$y3#!P)PC#Z(y-rG}s}U+69asHoT$7)gX6*q?NF ztc?ZNzU6Qw3QV&Fe%=w>HuUShc5e2%QH{-B_KlLY6D|8{l#@zZ8XJ|_Cg(b Date: Wed, 9 Feb 2022 18:19:46 +0100 Subject: [PATCH 472/720] attemp to fix lanterns placement --- mods/ITEMS/mcl_lanterns/init.lua | 53 ++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/mods/ITEMS/mcl_lanterns/init.lua b/mods/ITEMS/mcl_lanterns/init.lua index e6707b075..aee6981d0 100644 --- a/mods/ITEMS/mcl_lanterns/init.lua +++ b/mods/ITEMS/mcl_lanterns/init.lua @@ -9,6 +9,53 @@ TODO: - remove the hack arround walmounted nodes ]] +local function check_placement(node, wdir) + local nn = node.name + local def = minetest.registered_nodes[nn] + + if not def then + return false + else + if wdir == 0 then + if nn ~= "mcl_core:ice" and + nn ~= "mcl_nether:soul_sand" and + nn ~= "mcl_mobspawners:spawner" and + nn ~= "mcl_core:barrier" and + nn ~= "mcl_end:chorus_flower" and + nn ~= "mcl_end:chorus_flower_dead" and + (not def.groups.anvil) and + (not def.groups.wall) and + (not def.groups.glass) and + ((not def.groups.solid) or (not def.groups.opaque)) then + return false + else + return true + end + else --assuming wdir == 1 + if nn ~= "mcl_core:ice" and + nn ~= "mcl_nether:soul_sand" and + nn ~= "mcl_mobspawners:spawner" and + nn ~= "mcl_core:barrier" and + nn ~= "mcl_end:chorus_flower" and + nn ~= "mcl_end:chorus_flower_dead" and + nn ~= "mcl_end:end_rod" and + nn ~= "mcl_core:grass_path" and + (not def.groups.anvil) and + (not def.groups.wall) and + (not def.groups.glass) and + (not def.groups.fence) and + (not def.groups.fence_gate) and + (not def.groups.soil) and + (not def.groups.pane) and + ((not def.groups.solid) or (not def.groups.opaque)) then + return false + else + return true + end + end + end +end + function mcl_lanterns.register_lantern(name, def) local itemstring_floor = "mcl_lanterns:"..name.."_floor" local itemstring_ceiling = "mcl_lanterns:"..name.."_ceiling" @@ -61,9 +108,15 @@ function mcl_lanterns.register_lantern(name, def) local under = pointed_thing.under local above = pointed_thing.above + local node = minetest.get_node(under) local wdir = minetest.dir_to_wallmounted(vector.subtract(under, above)) local fakestack = itemstack + + if check_placement(node, wdir) == false then + return itemstack + end + if wdir == 0 then fakestack:set_name(itemstring_ceiling) elseif wdir == 1 then From 8817d51d64b8820be775de9eb8c491dc3a149f5e Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 9 Feb 2022 22:11:50 +0100 Subject: [PATCH 473/720] minecraft like lanterns placement limitations --- mods/ITEMS/mcl_lanterns/init.lua | 86 +++++++++++++++++++++----------- 1 file changed, 56 insertions(+), 30 deletions(-) diff --git a/mods/ITEMS/mcl_lanterns/init.lua b/mods/ITEMS/mcl_lanterns/init.lua index aee6981d0..d7a5312a4 100644 --- a/mods/ITEMS/mcl_lanterns/init.lua +++ b/mods/ITEMS/mcl_lanterns/init.lua @@ -9,6 +9,33 @@ TODO: - remove the hack arround walmounted nodes ]] +local allowed_non_solid_nodes_floor = { + "mcl_core:ice", + "mcl_nether:soul_sand", + "mcl_mobspawners:spawner", + "mcl_core:barrier", + "mcl_end:chorus_flower", + "mcl_end:chorus_flower_dead", + "mcl_end:end_rod", + "mcl_end:dragon_egg", + "mcl_portals:end_portal_frame_eye", +} + +local allowed_non_solid_groups_floor = {"anvil", "wall", "glass", "fence", "fence_gate", "pane"} + +local allowed_non_solid_nodes_ceiling = { + "mcl_core:ice", + "mcl_nether:soul_sand", + "mcl_mobspawners:spawner", + "mcl_core:barrier", + "mcl_end:chorus_flower", + "mcl_end:chorus_flower_dead", + "mcl_end:end_rod", + "mcl_core:grass_path", +} + +local allowed_non_solid_groups_ceiling = {"anvil", "wall", "glass", "fence", "fence_gate", "soil", "pane", "end_portal_frame"} + local function check_placement(node, wdir) local nn = node.name local def = minetest.registered_nodes[nn] @@ -16,41 +43,40 @@ local function check_placement(node, wdir) if not def then return false else + --wdir: + --0: ceiling + --1: floor if wdir == 0 then - if nn ~= "mcl_core:ice" and - nn ~= "mcl_nether:soul_sand" and - nn ~= "mcl_mobspawners:spawner" and - nn ~= "mcl_core:barrier" and - nn ~= "mcl_end:chorus_flower" and - nn ~= "mcl_end:chorus_flower_dead" and - (not def.groups.anvil) and - (not def.groups.wall) and - (not def.groups.glass) and - ((not def.groups.solid) or (not def.groups.opaque)) then - return false - else + if def.groups.solid or def.groups.opaque then return true + else + for _,i in ipairs(allowed_non_solid_nodes_ceiling) do + if nn == i then + return true + end + end + for _,j in ipairs(allowed_non_solid_groups_ceiling) do + if def.groups[j] then + return true + end + end + return false end else --assuming wdir == 1 - if nn ~= "mcl_core:ice" and - nn ~= "mcl_nether:soul_sand" and - nn ~= "mcl_mobspawners:spawner" and - nn ~= "mcl_core:barrier" and - nn ~= "mcl_end:chorus_flower" and - nn ~= "mcl_end:chorus_flower_dead" and - nn ~= "mcl_end:end_rod" and - nn ~= "mcl_core:grass_path" and - (not def.groups.anvil) and - (not def.groups.wall) and - (not def.groups.glass) and - (not def.groups.fence) and - (not def.groups.fence_gate) and - (not def.groups.soil) and - (not def.groups.pane) and - ((not def.groups.solid) or (not def.groups.opaque)) then - return false - else + if def.groups.solid or def.groups.opaque then return true + else + for _,i in ipairs(allowed_non_solid_nodes_floor) do + if nn == i then + return true + end + end + for _,j in ipairs(allowed_non_solid_groups_floor) do + if def.groups[j] then + return true + end + end + return false end end end From 749d4f1a4b4b41e401a1e7b9055680686149e8d4 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 9 Feb 2022 22:15:44 +0100 Subject: [PATCH 474/720] add lanterns translation template --- mods/ITEMS/mcl_lanterns/locale/template.txt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 mods/ITEMS/mcl_lanterns/locale/template.txt diff --git a/mods/ITEMS/mcl_lanterns/locale/template.txt b/mods/ITEMS/mcl_lanterns/locale/template.txt new file mode 100644 index 000000000..545118b54 --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/locale/template.txt @@ -0,0 +1,6 @@ +# textdomain: mcl_lanterns +Lantern= +Soul Lantern= +Lanterns are light sources which can be placed on the top or the bottom of most blocks.= +Chain= +Chains are metallic decoration blocks.= \ No newline at end of file From 23873f31f1c84fece9bf5b6c3264b5a7849c9d38 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 9 Feb 2022 22:19:24 +0100 Subject: [PATCH 475/720] add french translation of `mcl_lanterns` --- mods/ITEMS/mcl_lanterns/locale/mcl_lanterns.fr.tr | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 mods/ITEMS/mcl_lanterns/locale/mcl_lanterns.fr.tr diff --git a/mods/ITEMS/mcl_lanterns/locale/mcl_lanterns.fr.tr b/mods/ITEMS/mcl_lanterns/locale/mcl_lanterns.fr.tr new file mode 100644 index 000000000..b28822b75 --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/locale/mcl_lanterns.fr.tr @@ -0,0 +1,6 @@ +# textdomain: mcl_lanterns +Lantern=Lanterne +Soul Lantern=Lanterne des âmes +Lanterns are light sources which can be placed on the top or the bottom of most blocks.=Les lanternes sont des blocs lumineux qui peuvent être placés au dessus ou en dessous de la plupart des blocs. +Chain=Chaîne +Chains are metallic decoration blocks.=La chaîne est un bloc de décoration métalique. \ No newline at end of file From 2690094a95fc7de9c0ae10d8ae0c86f10bc49544 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 10 Feb 2022 11:45:08 +0100 Subject: [PATCH 476/720] allow placement of lanterns on chains --- mods/ITEMS/mcl_lanterns/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ITEMS/mcl_lanterns/init.lua b/mods/ITEMS/mcl_lanterns/init.lua index d7a5312a4..65faa5e8c 100644 --- a/mods/ITEMS/mcl_lanterns/init.lua +++ b/mods/ITEMS/mcl_lanterns/init.lua @@ -19,6 +19,7 @@ local allowed_non_solid_nodes_floor = { "mcl_end:end_rod", "mcl_end:dragon_egg", "mcl_portals:end_portal_frame_eye", + "mcl_lanterns:chain" } local allowed_non_solid_groups_floor = {"anvil", "wall", "glass", "fence", "fence_gate", "pane"} @@ -32,6 +33,7 @@ local allowed_non_solid_nodes_ceiling = { "mcl_end:chorus_flower_dead", "mcl_end:end_rod", "mcl_core:grass_path", + "mcl_lanterns:chain" } local allowed_non_solid_groups_ceiling = {"anvil", "wall", "glass", "fence", "fence_gate", "soil", "pane", "end_portal_frame"} From d898b02c8bfe192f1647533094a4dfcc85b756d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Sat, 12 Feb 2022 19:29:17 +0100 Subject: [PATCH 477/720] Fix #1922 --- mods/ITEMS/mcl_enchanting/engine.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index 97a176b97..095145775 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -14,10 +14,11 @@ end function mcl_enchanting.unload_enchantments(itemstack) local itemdef = itemstack:get_definition() - if itemdef.tool_capabilities then - itemstack:get_meta():set_tool_capabilities(nil) - end local meta = itemstack:get_meta() + if itemdef.tool_capabilities then + meta:set_tool_capabilities(nil) + meta:set_string("groupcaps_hash", "") + end if meta:get_string("name") == "" then meta:set_string("description", "") meta:set_string("groupcaps_hash", "") From a6c5c8a72a569bd3c04080bdd159e8c20e315890 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Sat, 12 Feb 2022 19:41:22 +0100 Subject: [PATCH 478/720] Call update_groupcaps from load_enchantments This avoids the need to call the function from on_enchant for unbreaking and efficiency. --- mods/ITEMS/mcl_enchanting/enchantments.lua | 9 +++++---- mods/ITEMS/mcl_enchanting/engine.lua | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index e876baf31..564d4b0d8 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -97,8 +97,9 @@ mcl_enchanting.enchantments.efficiency = { weight = 10, description = S("Increases mining speed."), curse = false, - on_enchant = function(itemstack, level) - mcl_enchanting.update_groupcaps(itemstack) + on_enchant = function() + -- Updating digging speed is handled by update_groupcaps which + -- is called from load_enchantments. end, requires_tool = false, treasure = false, @@ -671,8 +672,8 @@ mcl_enchanting.enchantments.unbreaking = { tool_capabilities.punch_attack_uses = tool_capabilities.punch_attack_uses * (1 + level) itemstack:get_meta():set_tool_capabilities(tool_capabilities) - -- Unbreaking for groupcaps is handled in this function. - mcl_enchanting.update_groupcaps(itemstack) + -- Updating digging durability is handled by update_groupcaps + -- which is called from load_enchantments. end, requires_tool = true, treasure = false, diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index 095145775..e47cf0650 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -34,6 +34,7 @@ function mcl_enchanting.load_enchantments(itemstack, enchantments) enchantment_def.on_enchant(itemstack, level) end end + mcl_enchanting.update_groupcaps(itemstack) end tt.reload_itemstack_description(itemstack) end From 4ca89cfcaee19fc2b816efc966d01827b26dc54b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Sat, 12 Feb 2022 20:08:03 +0100 Subject: [PATCH 479/720] Update groupcaps_hash function to minetest.sha1 --- mods/ITEMS/mcl_enchanting/groupcaps.lua | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/groupcaps.lua b/mods/ITEMS/mcl_enchanting/groupcaps.lua index a445b73f2..ec8d11d21 100644 --- a/mods/ITEMS/mcl_enchanting/groupcaps.lua +++ b/mods/ITEMS/mcl_enchanting/groupcaps.lua @@ -2,10 +2,7 @@ local groupcaps_cache = {} -- Compute a hash value. function compute_hash(value) - -- minetest.get_password_hash is quite fast, even if it uses a - -- cryptographic hashing function (SHA-1). It is written in C++ and it - -- is probably hard to write a faster hashing function in Lua. - return string.sub(minetest.get_password_hash("ryvnf", minetest.serialize(value)), 1, 8) + return string.sub(minetest.sha1(minetest.serialize(value)), 1, 8) end -- Get the groupcaps and hash for an enchanted tool. If this function is called From 2b820d7756ea1c735a4dec0912fc02b3ce4b4856 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 23 Nov 2021 01:13:40 +0100 Subject: [PATCH 480/720] `mcl_armor.register_set()` documentation --- mods/ITEMS/mcl_armor/API.md | 141 ++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 mods/ITEMS/mcl_armor/API.md diff --git a/mods/ITEMS/mcl_armor/API.md b/mods/ITEMS/mcl_armor/API.md new file mode 100644 index 000000000..a269edd81 --- /dev/null +++ b/mods/ITEMS/mcl_armor/API.md @@ -0,0 +1,141 @@ +# mcl_armor + +## `mcl_armor.register_set(def)` + +This function register a set of armor (head, torso, leggings, feets) using a definition table: + +```lua +mcl_armor.register_set({ + --name of the armor material (used for generating itemstrings) + name = "dummy_armor", + + --description of the armor material + --do NOT localize this string, it will be concatenated will each piece of armor's description and result will be automatically fetched from your mod's translation files + description = "Dummy Armor", + + --overide description of each armor piece + --do NOT localize this string + descriptions = { + head = "Cap", --default: "Helmet" + torso = "Tunic", --default: "Chestplate" + legs = "Pants", --default: "Leggings" + feet = "Shoes", --default: "Boots" + }, + + --this is used to calculate each armor piece durability with the minecraft algorithm + --head durability = durability * 0.6857 + 1 + --torso durability = durability * 1.0 + 1 + --legs durability = durability * 0.9375 + 1 + --feet durability = durability * 0.8125 + 1 + durability = 80, + + --this is used then you need to specify the durability of each piece of armor + --this field have the priority over the durability one + --if the durability of some pieces of armor isn't specified in this field, the durability field will be used insteed + durabilities = { + head = 200, + torso = 500, + legs = 400, + feet = 300, + }, + + --this define how good enchants you will get then enchanting one piece of the armor in an enchanting table + --if set to zero or nil, the armor will not be enchantable + enchantability = 15, + + --this define how much each piece of armor protect the player + --these points will be shown in the HUD (chestplate bar above the health bar) + points = { + head = 1, + torso = 3, + legs = 2, + feet = 1, + }, + + --this attribute reduce strong damage even more + --See https://minecraft.fandom.com/wiki/Armor#Armor_toughness for more explanations + --default: 0 + toughness = 2, + + --this field is used to specify some items groups that will be added to each piece of armor + --please note that some groups do NOT need to be added by hand, because they are already handeled by the register function: + --(armor, combat_armor, armor_, combat_armor_, mcl_armor_points, mcl_armor_toughness, mcl_armor_uses, enchantability) + groups = {op_armor = 1}, + + --specify textures that will be overlayed on the entity wearing the armor + --these fields have default values and its recommanded to keep the code clean by just using the default name for your textures + textures = { + head = "dummy_texture.png", --default: "_helmet_.png" + torso = "dummy_texture.png", --default: "_chestplate_.png" + legs = "dummy_texture.png", --default: "_leggings_.png" + feet = "dummy_texture.png", --default: "_boots_.png" + }, + --you can also define these fields as functions, that will be called each time the API function mcl_armor.update(obj) is called (every time you equip/unequip some armor piece, take damage, and more) + --note that the enchanting overlay will not appear unless you implement it in the function + --this allow to make armors where the textures change whitout needing to register many other armors with different textures + textures = { + head = function(obj, itemstack) + if mcl_enchanting.is_enchanted(itemstack) then + return "dummy_texture.png^"..mcl_enchanting.overlay + else + return "dummy_texture.png" + end + end, + }, + + --WARNING: 2d preview will be deprecated soon + --specify textures that will be shown in player inventory then you disabled the 3d player inventory preview + --its similar to how works the textures field + previews = { + head = "dummy_texture.png", --default: "_helmet__preview.png" + torso = "dummy_texture.png", --default: "_chestplate__preview.png" + legs = "dummy_texture.png", --default: "_leggings__preview.png" + feet = "dummy_texture.png", --default: "_boots__preview.png" + }, + + --inventory textures aren't definable using a table similar to textures or previews + --you are forced to use the default texture names which are: + --head: "_inv_helmet_.png + --torso: "_inv_chestplate_.png + --legs: "_inv_leggings_.png + --feet: "_inv_boots_.png + + --this callback table allow you to define functions that will be called each time an entity equip an armor piece or the mcl_armor.on_equip() function is called + --the functions accept two arguments: obj and itemstack + on_equip_callbacks = { + head = function(obj, itemstack) + --do stuff + end, + }, + + --this callback table allow you to define functions that will be called each time an entity unequip an armor piece or the mcl_armor.on_unequip() function is called + --the functions accept two arguments: obj and itemstack + on_unequip_callbacks = { + head = function(obj, itemstack) + --do stuff + end, + }, + + --this callback table allow you to define functions that will be called then an armor piece break + --the functions accept one arguments: obj + --the itemstack isn't sended due to how minetest handle items which have a zero durability + on_break_callbacks = { + head = function(obj) + --do stuff + end, + }, + + --this is used to generate automaticaly armor crafts based on each element type folowing the regular minecraft pattern + --if set to nil no craft will be added + craft_material = "mcl_mobitems:leather", + + --this is used to generate cooking crafts for each piece of armor + --if set to nil no craft will be added + cook_material = "mcl_core:gold_nugget", --cooking any piece of this armor will output a gold nugged + + --this is used for allowing each piece of the armor to be repaired by using an anvil with repair_material as aditionnal material + --it basicaly set the _repair_material item field of each piece of the armor + --if set to nil no repair material will be added + repair_material = "mcl_core:iron_ingot", +}) +``` \ No newline at end of file From 13f8fd457c2545a3e7b81ad742f48b375982eef6 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 30 Nov 2021 19:45:12 +0100 Subject: [PATCH 481/720] document manual armor creation --- mods/ITEMS/mcl_armor/API.md | 72 +++++++++++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_armor/API.md b/mods/ITEMS/mcl_armor/API.md index a269edd81..1b9f1a12c 100644 --- a/mods/ITEMS/mcl_armor/API.md +++ b/mods/ITEMS/mcl_armor/API.md @@ -1,8 +1,16 @@ # mcl_armor -## `mcl_armor.register_set(def)` +This mod implement the ability of creating armors. -This function register a set of armor (head, torso, leggings, feets) using a definition table: +Armors are basically items that a player can equip on four different slots on him (head, feet, torso and feet) to get advantages. + +These armors have also a texture which is visible to other players, inside inventory or in 3rd person view. + +## Creating an Armor Set + +The `mcl_armor.register_set()` function aims to simplificate the process of creating a full set of armor. + +This function register a four piece of armor (head, torso, leggings, feets) using a definition table: ```lua mcl_armor.register_set({ @@ -138,4 +146,64 @@ mcl_armor.register_set({ --if set to nil no repair material will be added repair_material = "mcl_core:iron_ingot", }) +``` + +## Creating an Armor Piece + +If you don't want to register a full set of armor, then you will need to manually register your own single item. + +```lua +minetest.register_tool("dummy_mod:random_armor", { + description = S("Random Armor"), + + --these two item fields are used for ingame documentation + --the mcl_armor.longdesc and mcl_armor.usage vars contains the basic usage and purpose of a piece of armor + --these vars may not be enough for that you want to do, so you may add some extra informations like that: + --_doc_items_longdesc = mcl_armor.longdesc.." "..S("Some extra informations.") + _doc_items_longdesc = mcl_armor.longdesc, + _doc_items_usagehelp = mcl_armor.usage, + + --this field is similar to any item definition in minetest + --it just set the image shown then the armor is dropped as an item or inside an inventory + inventory_image = "mcl_armor_inv_elytra.png", + + --this field is used by minetest internally and also by some helper functions + --in order for the tool to be shown is the right creative inventory tab, the right groups should be added + --mcl_armor_uses is required to give your armor a durability + --in that case, tha armor can be worn by 10 points before breaking + groups = {armor = 1, non_combat_armor = 1, armor_torso = 1, non_combat_torso = 1, mcl_armor_uses = 10}, + + --this table is used by minetest for seraching item specific sounds + --the _mcl_armor_equip and _mcl_armor_unequip are used by the armor implementation to play sounds on equip and unequip + --note that you don't need to provide any file extention + sounds = { + _mcl_armor_equip = "mcl_armor_equip_leather", + _mcl_armor_unequip = "mcl_armor_unequip_leather", + }, + + --these fields should be initialised like that in most cases + --mcl_armor.equip_on_use is a function that try to equip the piece of armor you have in hand inside the right armor slot if the slot is empty + on_place = mcl_armor.equip_on_use, + on_secondary_use = mcl_armor.equip_on_use, + + --this field define that the tool is ACTUALLY an armor piece and in which armor slot you can put it + --it should be set to "head", "torso", "legs" or "feet" + _mcl_armor_element = "torso", + + + --this field is used to provide the texture that will be overlayed on the object (player or mob) skin + --this field can be a texture name or a function that will be called each time the mcl_armor.update(obj) function is called + --see the mcl_armor.register_set() documentation for more explanations + _mcl_armor_texture = "mcl_armor_elytra.png" + + --callbacks + --see the mcl_armor.register_set() documentation for more explanations + + _on_equip = function(obj, itemstack) + end, + _on_unequip = function(obj, itemstack) + end, + _on_break = function(obj) + end, +}) ``` \ No newline at end of file From 5aa18d573e66c8869481f6fd315153dd9a0e409d Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 30 Nov 2021 23:46:41 +0100 Subject: [PATCH 482/720] document mcl_armor function (WIP) --- mods/ITEMS/mcl_armor/API.md | 99 +++++++++++++++++++++++++++++++++++-- 1 file changed, 96 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_armor/API.md b/mods/ITEMS/mcl_armor/API.md index 1b9f1a12c..c06fd8a3b 100644 --- a/mods/ITEMS/mcl_armor/API.md +++ b/mods/ITEMS/mcl_armor/API.md @@ -169,8 +169,9 @@ minetest.register_tool("dummy_mod:random_armor", { --this field is used by minetest internally and also by some helper functions --in order for the tool to be shown is the right creative inventory tab, the right groups should be added - --mcl_armor_uses is required to give your armor a durability - --in that case, tha armor can be worn by 10 points before breaking + --"mcl_armor_uses" is required to give your armor a durability + --in that case, the armor can be worn by 10 points before breaking + --if you want the armor to be enchantable, you should also add the "enchantability" group, with the highest number the better enchants you can apply groups = {armor = 1, non_combat_armor = 1, armor_torso = 1, non_combat_torso = 1, mcl_armor_uses = 10}, --this table is used by minetest for seraching item specific sounds @@ -206,4 +207,96 @@ minetest.register_tool("dummy_mod:random_armor", { _on_break = function(obj) end, }) -``` \ No newline at end of file +``` + +## Interacting with Armor of an Entity + +Mods may want to interact with armor of an entity. + +Most global functions not described here may not be stable or may be for internal use only. + +You can equip a piece of armor on an entity inside a mod by using `mcl_armor.equip()`. + +```lua +--itemstack: an itemstack containing the armor piece to equip +--obj: the entity you want to equip the armor on +--swap: boolean, force equiping the armor piece, even if the entity already have one of the same type +mcl_armor.equip(itemstack, obj, swap) +``` + +You can update the entity apparence by using `mcl_armor.update()`. + +This function put the armor overlay on the object's base texture. +If the object is player it will update his displayed armor points count in HUD. + +This function will work both on players and mobs. + +```lua +--obj: the entity you want the apparence to be updated +mcl_armor.update(obj) +``` + +## Handling Enchantments + +Armors can be enchanted in most cases. + +The enchanting part of MineClone2 is separated from the armor part, but closely linked. + +Existing armor enchantments in Minecraft improve most of the time how the armor protect the entity from damage. + +The `mcl_armor.register_protection_enchantment()` function aims to simplificate the creation of such enchants. + +```lua +mcl_armor.register_protection_enchantment({ + --this field is the id that will be used for registering enchanted book and store the enchant inside armor metadata. + --(his internal name) + id = "magic_protection", + + --visible name of the enchant + --this field is used as the name of registered enchanted book and inside armor tooltip + --translation should be added + name = S("Magic Protection"), + + --this field is used to know that the enchant currently do + --translation should be added + description = S("Reduces magic damage."), + + --how many levels can the enchant have + --ex: 4 => I, II, III, IV + --default: 4 + max_level = 4, + + --which enchants this enchant will not be compatible with + --each of these values is a enchant id + incompatible = {blast_protection = true, fire_protection = true, projectile_protection = true}, + + --how much will the enchant consume from the enchantability group of the armor item + --default: 5 + weight = 5, + + --false => the enchant can be obtained in an enchanting table + --true => the enchant isn't obtainable in the enchanting table + --is true, you will probably need to implement some ways to obtain it + --even it the field is named "treasure", it will be no way to find it + --default: false + treasure = false, + + --how much will damage be reduced + --see Minecraft Wiki for more informations + --https://minecraft.gamepedia.com/Armor#Damage_protection + --https://minecraft.gamepedia.com/Armor#Enchantments + factor = 1, + + --restrict damage to one type + --allow the enchant to only protect of one type of damage + damage_type = "magic", + + --restrict damage to one category + --allow to protect from many type of damage at once + --this is much less specific than damage_type and also much more customisable + --the "is_magic" flag is used in the "magic", "dragon_breath", "wither_skull" and "thorns" damage types + --you can checkout the mcl_damage source code for a list of availlable damage types and associated flags + --but be warned that mods can register additionnal damage types + damage_flag = "is_magic", +}) +``` From c59bea211df860497b46bc2e7bc820a31e897f2a Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 2 Dec 2021 16:13:39 +0100 Subject: [PATCH 483/720] fix some typos --- mods/ITEMS/mcl_armor/API.md | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/mods/ITEMS/mcl_armor/API.md b/mods/ITEMS/mcl_armor/API.md index c06fd8a3b..ede33ebb9 100644 --- a/mods/ITEMS/mcl_armor/API.md +++ b/mods/ITEMS/mcl_armor/API.md @@ -1,16 +1,12 @@ # mcl_armor -This mod implement the ability of creating armors. +This mod implements the ability of registering armors. -Armors are basically items that a player can equip on four different slots on him (head, feet, torso and feet) to get advantages. +## Registering an Armor Set -These armors have also a texture which is visible to other players, inside inventory or in 3rd person view. +The `mcl_armor.register_set()` function aims to simplify the process of registering a full set of armor. -## Creating an Armor Set - -The `mcl_armor.register_set()` function aims to simplificate the process of creating a full set of armor. - -This function register a four piece of armor (head, torso, leggings, feets) using a definition table: +This function register four pieces of armor (head, torso, leggings, feets) based on a definition table: ```lua mcl_armor.register_set({ @@ -18,7 +14,7 @@ mcl_armor.register_set({ name = "dummy_armor", --description of the armor material - --do NOT localize this string, it will be concatenated will each piece of armor's description and result will be automatically fetched from your mod's translation files + --do NOT translate this string, it will be concatenated will each piece of armor's description and result will be automatically fetched from your mod's translation files description = "Dummy Armor", --overide description of each armor piece @@ -91,7 +87,7 @@ mcl_armor.register_set({ end, }, - --WARNING: 2d preview will be deprecated soon + --WARNING: 2d preview is deprecated and will be removed soon --specify textures that will be shown in player inventory then you disabled the 3d player inventory preview --its similar to how works the textures field previews = { From da4952a125c281280aa88146ab7f0135c5c547fd Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 13 Dec 2021 15:37:51 +0100 Subject: [PATCH 484/720] wip mcl_damage documentation --- mods/CORE/mcl_damage/API.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 mods/CORE/mcl_damage/API.md diff --git a/mods/CORE/mcl_damage/API.md b/mods/CORE/mcl_damage/API.md new file mode 100644 index 000000000..9ffdcb9f4 --- /dev/null +++ b/mods/CORE/mcl_damage/API.md @@ -0,0 +1,15 @@ +# mcl_damage + +This mod is intended to overall minetest's native damage system, to provide a better integration between features that deals with entities' health. + +WARNING: Not using it inside your mods may cause strange bugs (using the native damage system may cause conflicts with this system). + +## Callbacks + +To modify the amount of damage made by something: + +```lua +--obj: an ObjectRef +mcl_damage.register_modifier(function(obj, damage, reason) +end, 0) +``` \ No newline at end of file From adf738854ae214f2c41e3199ccbbbe810df22ccd Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Wed, 26 Jan 2022 17:37:55 +0100 Subject: [PATCH 485/720] Fix mob-in-boat crash in Minetest 5.5-dev MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In Minetest 5.4.1, calling get_player_control() on a mob returned the empty string. Minetest commit 5eb45e1ea03c6104f007efec6dd9c351f310193d changed this, so now calling get_player_control() on a mob returns nil. As mcl_boats defines boats that can have a player or a mob as a driver, code like the following crashes with a changed get_player_control() API: local ctrl = driver:get_player_control() if ctrl.sneak then detach_object(driver, true) end Furthermore, once a world has crashed, joining it near a mob that is the driver of a boat with such control code immediately crashes again. When I reported this bug to Minetest, several Minetest core developers stated that they disliked the old API and proposed other return values for calling a mob's get_player_control() function – all different from the empty string. Since I have some doubts that this bug will be fixed in Minetest 5.5.0, boat code must take into account a nil return value. Minetest issue: https://github.com/minetest/minetest/issues/11989 --- 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 beff5fb52..72664b1df 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -267,7 +267,7 @@ function boat.on_step(self, dtime, moveresult) return end local yaw = self.object:get_yaw() - if ctrl.up then + if ctrl and ctrl.up then -- Forwards self._v = self._v + 0.1 * v_factor @@ -276,7 +276,7 @@ function boat.on_step(self, dtime, moveresult) self.object:set_animation({x=0, y=40}, paddling_speed, 0, true) self._animation = 1 end - elseif ctrl.down then + elseif ctrl and ctrl.down then -- Backwards self._v = self._v - 0.1 * v_factor From ad99746d99f9f4b6407ffb796127c255918f4992 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 17 Feb 2022 14:35:51 +0000 Subject: [PATCH 486/720] Add get_pointed_thing function --- mods/CORE/mcl_util/init.lua | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index d548f6cac..4fee9b3ba 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -571,3 +571,16 @@ function mcl_util.replace_mob(obj, mob) obj:set_yaw(rot) return obj end + +function mcl_util.get_pointed_thing(player) + local pos = vector.offset(player:get_pos(), 0, player:get_properties().eye_height, 0) + local look_dir = vector.multiply(player:get_look_dir(), 5) + local pos2 = vector.add(pos, look_dir) + local ray = minetest.raycast(pos, pos2, false, true) + + if ray then + for pointed_thing in ray do + return pointed_thing + end + end +end From 4707cd4526f01424a6f81680adcac19539b62212 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 17 Feb 2022 14:36:48 +0000 Subject: [PATCH 487/720] Correct bucket behavior --- mods/ITEMS/mcl_buckets/init.lua | 305 ++++++++++++++++++-------------- 1 file changed, 168 insertions(+), 137 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 931214b95..7f642b8b6 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -33,8 +33,10 @@ if mod_mcl_core then }) end -mcl_buckets = {} -mcl_buckets.liquids = {} +mcl_buckets = { + liquids = {}, + buckets = {}, +} -- Sound helper functions for placing and taking liquids local function sound_place(itemname, pos) @@ -147,6 +149,168 @@ local function get_bucket_drop(itemstack, user, take_bucket) end end +local function on_place_bucket(itemstack, user, pointed_thing, def) + -- Must be pointing to node + if pointed_thing.type ~= "node" then + return + end + -- Call on_rightclick if the pointed node defines it + local new_stack = mcl_util.call_on_rightclick(itemstack, user, pointed_thing) + if new_stack then + return new_stack + end + + local undernode = get_node(pointed_thing.under) + local abovenode = get_node(pointed_thing.above) + local buildable1 = minetest.registered_nodes[undernode.name] and minetest.registered_nodes[undernode.name].buildable_to + local buildable2 = minetest.registered_nodes[abovenode.name] and minetest.registered_nodes[abovenode.name].buildable_to + if not buildable1 and not buildable2 then return itemstack end --if both nodes aren't buildable_to, skip + + if buildable1 then + local result, take_bucket = get_extra_check(def.extra_check, pointed_thing.under, user) + if result then + local node_place = get_node_place(def.source_place, pointed_thing.under) + local pns = user:get_player_name() + + -- Check protection + if minetest.is_protected(pointed_thing.under, pns) then + minetest.record_protection_violation(pointed_thing.under, pns) + return itemstack + end + + -- Place liquid + place_liquid(pointed_thing.under, node_place) + + -- Update doc mod + if mod_doc and doc.entry_exists("nodes", node_place) then + doc.mark_entry_as_revealed(user:get_player_name(), "nodes", node_place) + end + end + return get_bucket_drop(itemstack, user, take_bucket) + elseif buildable2 then + local result, take_bucket = get_extra_check(def.extra_check, pointed_thing.above, user) + if result then + local node_place = get_node_place(def.source_place, pointed_thing.above) + local pns = user:get_player_name() + + -- Check protection + if minetest.is_protected(pointed_thing.above, pns) then + minetest.record_protection_violation(pointed_thing.above, pns) + return itemstack + end + + -- Place liquid + place_liquid(pointed_thing.above, node_place) + + -- Update doc mod + if mod_doc and doc.entry_exists("nodes", node_place) then + doc.mark_entry_as_revealed(user:get_player_name(), "nodes", node_place) + end + end + return get_bucket_drop(itemstack, user, take_bucket) + else + return itemstack + end +end + + +local function on_place_bucket_empty(itemstack, user, pointed_thing) + -- Must be pointing to node + if pointed_thing.type ~= "node" then + return itemstack + end + + -- Call on_rightclick if the pointed node defines it + local new_stack = mcl_util.call_on_rightclick(itemstack, user, pointed_thing) + if new_stack then + return new_stack + end + + local node = minetest.get_node(pointed_thing.under) + local nn = node.name + + local new_bucket + 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 + --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.bucketname}) + 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 + return itemstack +end + +controls.register_on_press(function(player, key) + if key ~= "RMB" then + return + end + + local wielded_item = player:get_wielded_item() + local itemname = wielded_item:get_name() + local pointed_thing = mcl_util.get_pointed_thing(player) + + if not pointed_thing then + return + end + + local def = mcl_buckets.buckets[itemname] + + if itemname == "mcl_buckets:bucket_empty" then + wielded_item = on_place_bucket_empty(wielded_item, player, pointed_thing) + elseif def then + wielded_item = on_place_bucket(wielded_item, player, pointed_thing, def) + end + + player:set_wielded_item(wielded_item) +end) + function mcl_buckets.register_liquid(def) for _,source in ipairs(def.source_take) do mcl_buckets.liquids[source] = { @@ -161,6 +325,8 @@ function mcl_buckets.register_liquid(def) end end + mcl_buckets.buckets[def.bucketname] = def + if def.bucketname == nil or def.bucketname == "" then error(string.format("[mcl_bucket] Invalid itemname then registering [%s]!", def.name)) end @@ -173,69 +339,6 @@ function mcl_buckets.register_liquid(def) 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 - -- Call on_rightclick if the pointed node defines it - local new_stack = mcl_util.call_on_rightclick(itemstack, user, pointed_thing) - if new_stack then - return new_stack - end - - local undernode = get_node(pointed_thing.under) - local abovenode = get_node(pointed_thing.above) - local buildable1 = minetest.registered_nodes[undernode.name] and minetest.registered_nodes[undernode.name].buildable_to - local buildable2 = minetest.registered_nodes[abovenode.name] and minetest.registered_nodes[abovenode.name].buildable_to - if not buildable1 and not buildable2 then return itemstack end --if both nodes aren't buildable_to, skip - - if buildable1 then - local result, take_bucket = get_extra_check(def.extra_check, pointed_thing.under, user) - if result then - local node_place = get_node_place(def.source_place, pointed_thing.under) - local pns = user:get_player_name() - - -- Check protection - if minetest.is_protected(pointed_thing.under, pns) then - minetest.record_protection_violation(pointed_thing.under, pns) - return itemstack - end - - -- Place liquid - place_liquid(pointed_thing.under, node_place) - - -- Update doc mod - if mod_doc and doc.entry_exists("nodes", node_place) then - doc.mark_entry_as_revealed(user:get_player_name(), "nodes", node_place) - end - end - return get_bucket_drop(itemstack, user, take_bucket) - elseif buildable2 then - local result, take_bucket = get_extra_check(def.extra_check, pointed_thing.above, user) - if result then - local node_place = get_node_place(def.source_place, pointed_thing.above) - local pns = user:get_player_name() - - -- Check protection - if minetest.is_protected(pointed_thing.above, pns) then - minetest.record_protection_violation(pointed_thing.above, pns) - return itemstack - end - - -- Place liquid - place_liquid(pointed_thing.above, node_place) - - -- Update doc mod - if mod_doc and doc.entry_exists("nodes", node_place) then - doc.mark_entry_as_revealed(user:get_player_name(), "nodes", node_place) - end - end - return get_bucket_drop(itemstack, user, take_bucket) - else - return itemstack - end - end, _on_dispense = function(stack, pos, droppos, dropnode, dropdir) local buildable = minetest.registered_nodes[dropnode.name].buildable_to or dropnode.name == "mcl_portals:portal" if not buildable then return stack end @@ -259,78 +362,6 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { --liquids_pointable = true, inventory_image = "bucket.png", stack_max = 16, - on_place = function(itemstack, user, pointed_thing) - -- Must be pointing to node - if pointed_thing.type ~= "node" then - return itemstack - end - - -- Call on_rightclick if the pointed node defines it - local new_stack = mcl_util.call_on_rightclick(itemstack, user, pointed_thing) - if new_stack then - return new_stack - end - - local node = minetest.get_node(pointed_thing.under) - local nn = node.name - - local new_bucket - 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 - --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.bucketname}) - 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 - return itemstack - end, _on_dispense = function(stack, pos, droppos, dropnode, dropdir) -- Fill empty bucket with liquid or drop bucket if no liquid local collect_liquid = false From 3cfcd1355f2c57215d8e76b862300d4238da4f85 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 17 Feb 2022 14:42:01 +0000 Subject: [PATCH 488/720] Add missing dependency --- mods/ITEMS/mcl_buckets/mod.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_buckets/mod.conf b/mods/ITEMS/mcl_buckets/mod.conf index 0d7b764b8..ba945b033 100644 --- a/mods/ITEMS/mcl_buckets/mod.conf +++ b/mods/ITEMS/mcl_buckets/mod.conf @@ -1,6 +1,6 @@ name = mcl_buckets author = Kahrl description = -depends = mcl_worlds, mcl_util +depends = mcl_worlds, mcl_util, controls optional_depends = mcl_core, mclx_core, doc From 8db28c133752cc379b584462a4614543ee1dcb12 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 17 Feb 2022 15:30:41 +0000 Subject: [PATCH 489/720] Update get_pointed_thing function --- mods/CORE/mcl_util/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index 4fee9b3ba..9be40a1e4 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -572,11 +572,11 @@ function mcl_util.replace_mob(obj, mob) return obj end -function mcl_util.get_pointed_thing(player) +function mcl_util.get_pointed_thing(player, liquid) local pos = vector.offset(player:get_pos(), 0, player:get_properties().eye_height, 0) local look_dir = vector.multiply(player:get_look_dir(), 5) local pos2 = vector.add(pos, look_dir) - local ray = minetest.raycast(pos, pos2, false, true) + local ray = minetest.raycast(pos, pos2, false, liquid) if ray then for pointed_thing in ray do From c40c05f5945162186ff0105455c2bd990d1480a9 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 17 Feb 2022 15:32:58 +0000 Subject: [PATCH 490/720] Exact MC behavior --- mods/ITEMS/mcl_buckets/init.lua | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 7f642b8b6..5d372ef1f 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -294,17 +294,21 @@ controls.register_on_press(function(player, key) local wielded_item = player:get_wielded_item() local itemname = wielded_item:get_name() - local pointed_thing = mcl_util.get_pointed_thing(player) - - if not pointed_thing then - return - end - local def = mcl_buckets.buckets[itemname] if itemname == "mcl_buckets:bucket_empty" then + local pointed_thing = mcl_util.get_pointed_thing(player, true) + + if not pointed_thing then + return + end wielded_item = on_place_bucket_empty(wielded_item, player, pointed_thing) elseif def then + local pointed_thing = mcl_util.get_pointed_thing(player, false) + + if not pointed_thing then + return + end wielded_item = on_place_bucket(wielded_item, player, pointed_thing, def) end From df8576e77cf8e00b59d2ac1839565471340c75e2 Mon Sep 17 00:00:00 2001 From: kabou Date: Wed, 16 Feb 2022 23:11:39 +0100 Subject: [PATCH 491/720] mcl_composters initial commit Implements a composter block with crafting recipe, and some more uncraftable blocks representing various stages of filling. Adds a list of items that can be used with the composter and the chances of these items adding a layer to the composter. Implements methods to add compostable items to the composter, to update the composter to various levels of compost and to harvest an item of bone meal when the composter is ready. Textures were taken from XSSheep/Nova_Wostra Pixel Perfection texture pack. --- mods/ITEMS/mcl_composters/init.lua | 339 ++++++++++++++++++ mods/ITEMS/mcl_composters/locale/template.txt | 7 + mods/ITEMS/mcl_composters/mod.conf | 5 + .../textures/mcl_composter_bottom.png | Bin 0 -> 395 bytes .../textures/mcl_composter_compost.png | Bin 0 -> 409 bytes .../textures/mcl_composter_ready.png | Bin 0 -> 582 bytes .../textures/mcl_composter_side.png | Bin 0 -> 267 bytes .../textures/mcl_composter_top.png | Bin 0 -> 397 bytes 8 files changed, 351 insertions(+) create mode 100644 mods/ITEMS/mcl_composters/init.lua create mode 100644 mods/ITEMS/mcl_composters/locale/template.txt create mode 100644 mods/ITEMS/mcl_composters/mod.conf create mode 100644 mods/ITEMS/mcl_composters/textures/mcl_composter_bottom.png create mode 100644 mods/ITEMS/mcl_composters/textures/mcl_composter_compost.png create mode 100644 mods/ITEMS/mcl_composters/textures/mcl_composter_ready.png create mode 100644 mods/ITEMS/mcl_composters/textures/mcl_composter_side.png create mode 100644 mods/ITEMS/mcl_composters/textures/mcl_composter_top.png diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua new file mode 100644 index 000000000..d77fd4e31 --- /dev/null +++ b/mods/ITEMS/mcl_composters/init.lua @@ -0,0 +1,339 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +-- +-- Composter mod, adds composters. +-- +-- Copyleft 2022 by kabou +-- GNU General Public Licence 3.0 +-- + +local composter_description = S( + "Composter" +) +local composter_longdesc = S( + "Composters can convert various organic items into bonemeal." +) +local composter_usagehelp = S( + "Use organic items on the composter to fill it with layers of compost. " .. + "Every time an item is put in the composter, there is a chance that the " .. + "composter adds another layer of compost. Some items have a bigger chance " .. + "of adding an extra layer than other items. After filling up with 7 layers " .. + "of compost, the composter is full and bone meal can be retrieved from it. " .. + "Taking out the bone meal empties the composter." +) + +minetest.register_craft({ + output = "mcl_composters:composter", + recipe = { + {"group:wood_slab", "", "group:wood_slab"}, + {"group:wood_slab", "", "group:wood_slab"}, + {"group:wood_slab", "group:wood_slab", "group:wood_slab"}, + } +}) + +local compostability = { + ["mcl_cake:cake"] = 100, + ["mcl_farming:pumpkin_pie"] = 100, + + ["mcl_farming:potato_item_baked"] = 85, + ["mcl_farming:bread"] = 85, + ["mcl_farming:cookie"] = 85, + ["mcl_farming:hay_block"] = 85, + -- mushroom cap block have 64 variants, wtf!? + ["mcl_mushrooms:brown_mushroom_block_cap_111111"] = 85, + ["mcl_mushrooms:red_mushroom_block_cap_111111"] = 85, + ["mcl_nether:nether_wart_block"] = 85, + ["mcl_mushroom:warped_wart_block"] = 85, + + ["mcl_core:apple"] = 65, + -- missing: azalea + ["mcl_farming:beetroot_item"] = 65, + -- missing: big dripleaf + ["mcl_farming:carrot_item"] = 65, + -- what's up with cocoa beans? + ["mcl_dye:brown"] = 65, + ["mcl_flowers:fern"] = 65, + ["mcl_flowers:double_fern"] = 65, + ["mcl_flowers:allium"] = 65, + ["mcl_flowers:azure_bluet"] = 65, + ["mcl_flowers:blue_orchid"] = 65, + ["mcl_flowers:dandelion"] = 65, + ["mcl_flowers:lilac"] = 65, + ["mcl_flowers:oxeye_daisy"] = 65, + ["mcl_flowers:poppy"] = 65, + ["mcl_flowers:tulip_orange"] = 65, + ["mcl_flowers:tulip_pink"] = 65, + ["mcl_flowers:tulip_red"] = 65, + ["mcl_flowers:tulip_white"] = 65, + ["mcl_flowers:peony"] = 65, + ["mcl_flowers:rose_bush"] = 65, + ["mcl_flowers:sunflower"] = 65, + ["mcl_flowers:waterlily"] = 65, + -- missing: melon block? + -- missing: moss block? + -- mushroom aliases below? + ["mcl_farming:mushroom_brown"] = 65, + ["mcl_mushrooms:mushroom_brown"] = 65, + ["mcl_farming:mushroom_red"] = 65, + ["mcl_mushrooms:mushroom_red"] = 65, + ["mcl_mushrooms:brown_mushroom_block_stem_full"] = 65, + ["mcl_mushrooms:red_mushroom_block_stem_full"] = 65, + -- nether wart + ["mcl_farming:potato_item"] = 65, + ["mcl_farming:pumpkin"] = 65, + ["mcl_farming:pumpkin_face_light"] = 65, + ["mcl_ocean:sea_pickle_"] = 65, + ["mcl_mushroom:shroomlight"] = 65, + -- missing: spore blossom + ["mcl_farming:wheat_item"] = 65, + ["mcl_mushroom:crimson_fungus"] = 65, + ["mcl_mushroom:warped_fungus"] = 65, + ["mcl_mushroom:crimson_roots"] = 65, + ["mcl_mushroom:warped_roots"] = 65, + + ["mcl_core:cactus"] = 50, + ["mcl_ocean:dried_kelp_block"] = 50, + -- missing: flowering azalea leaves + -- missing: glow lichen + ["mcl_farming:melon_item"] = 50, + ["mcl_mushroom:nether_sprouts"] = 50, + ["mcl_core:reeds"] = 50, + ["mcl_flowers:double_grass"] = 50, + ["mcl_core:vine"] = 50, + -- missing: weeping vines + ["mcl_mushroom:twisting_vines"] = 50, + + ["mcl_flowers:tallgrass"] = 30, + ["mcl_farming:beetroot_seeds"] = 30, + ["mcl_core:dirt_with_grass"] = 30, + ["mcl_core:tallgrass"] = 30, + ["mcl_ocean:dried_kelp"] = 30, + ["mcl_ocean:kelp"] = 30, + ["mcl_core:leaves"] = 30, + ["mcl_core:acacialeaves"] = 30, + ["mcl_core:birchleaves"] = 30, + ["mcl_core:darkleaves"] = 30, + ["mcl_core:jungleleaves"] = 30, + ["mcl_core:spruceleaves"] = 30, + -- + ["mcl_farming:melon_seeds"] = 30, + -- missing: moss carpet + ["mcl_farming:pumpkin_seeds"] = 30, + ["mcl_core:sapling"] = 30, + ["mcl_core:acaciasapling"] = 30, + ["mcl_core:birchsapling"] = 30, + ["mcl_core:darksapling"] = 30, + ["mcl_core:junglesapling"] = 30, + ["mcl_core:spruceapling"] = 30, + ["mcl_ocean:seagrass"] = 30, + -- missing: small dripleaf + ["mcl_sweet_berry:sweet_berry"] = 30, + ["mcl_farming:sweet_berry"] = 30, + ["mcl_farming:wheat_seeds"] = 30, + +} + +local function composter_add_item(pos, node, player, itemstack, pointed_thing) + -- + -- handle filling the composter when rightclicked + -- as an on_rightclick handles, it returns an itemstack + -- + if not player or player:get_player_control().sneak then + return itemstack + end + if not itemstack and itemstack:is_empty() then + return itemstack + end + local itemname = itemstack:get_name() + local chance = compostability[itemname] + if chance then + if not minetest.is_creative_enabled(player:get_player_name()) then + itemstack:take_item() + end + -- calculate leveling up chance + local rand = math.random(0,100) + if chance >= rand then + -- get current compost level + local node_defs = minetest.registered_nodes[node.name] + local level = node_defs["_compost_level"] + -- spawn green particles above new layer + mcl_dye.add_bone_meal_particle(vector.add(pos, {x=0, y=level/8, z=0})) + -- TODO: play some sounds + -- update composter block + if level < 7 then + level = level + 1 + else + level = "ready" + end + minetest.swap_node(pos, {name = "mcl_composters:composter_" .. level}) + -- a full composter becomes ready for harvest after one second + -- the block will get updated by the node timer callback set in node reg def + if level == 7 then + local timer = minetest.get_node_timer(pos) + timer:start(1) + end + end + end + return itemstack +end + +local function composter_ready(pos) + -- + -- update the composter block to ready for harvesting + -- this function is a callback on_timer. + -- the timer is set in function 'composter_fill' when composter level is 7 + -- returns false in order to cancel further activity of the timer + -- + minetest.swap_node(pos, {name = "mcl_composters:composter_ready"}) + -- maybe spawn particles again? + -- TODO: play some sounds + return false +end + +local function composter_harvest(pos, node, player, itemstack, pointed_thing) + -- + -- handle harvesting bone meal from a ready composter when rightclicked + -- + if not player or player:get_player_control().sneak then + return + end + -- reset composter to empty + minetest.swap_node(pos, {name="mcl_composters:composter"}) + -- spawn bone meal item (wtf dye?! is this how the make white cocoa) + minetest.add_item(pos, "mcl_dye:white") + -- TODO play some sounds + +end + +local function composter_get_nodeboxes(level) + -- + -- Convenience function because the composter nodeboxes are very similar + -- + local top_y_tbl = {[0]=-7, -5, -3, -1, 1, 3, 5, 7} + local top_y = top_y_tbl[level] / 16 + return { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall + { 0.375, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Right wall + {-0.375, -0.5, 0.375, 0.375, 0.5, 0.5}, -- Back wall + {-0.375, -0.5, -0.5, 0.375, 0.5, -0.375}, -- Front wall + {-0.5, -0.5, -0.5, 0.5, top_y, 0.5}, -- Bottom level + } + } +end + +local composter_wieldimg = minetest.inventorycube("mcl_composter_top.png", "mcl_composter_side.png", "mcl_composter_side.png") +-- +-- Register empty composter +-- This is the base model that is craftable and can be placed in an inventory +-- +minetest.register_node("mcl_composters:composter", { + description = composter_description, + _tt_help = S("Converts organic items into bonemeal"), + _doc_items_longdesc = composter_longdesc, + _doc_items_usagehelp = composter_usagehelp, + -- FIXME: mcl_composter_side.png is fugly. maybe somehow use minetest.inventorycube(img1, img2, img3) + -- eeeww, that is also ugly and weird + inventory_image = composter_wieldimg, + --inventory_image = "mcl_composter_side.png", + paramtype = "light", + drawtype = "nodebox", + node_box = composter_get_nodeboxes(0), + selection_box = {type = "regular"}, + tiles = { + "mcl_composter_bottom.png^mcl_composter_top.png", + "mcl_composter_bottom.png", + "mcl_composter_side.png" + }, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, + is_ground_content = false, + groups = { + handy=1, material_wood=1, deco_block=1, dirtifier=1, + flammable=2, fire_encouragement=3, fire_flammability=4, + }, + sounds = mcl_sounds.node_sound_wood_defaults(), + _mcl_hardness = 2, + _mcl_blast_resistance = 2, + _compost_level = 0, + on_rightclick = composter_add_item +}) + +-- +-- Template function for composters with compost +-- For each fill level a custom node is registered +-- +local function register_filled_composter(level) + local id = "mcl_composters:composter_"..level + minetest.register_node(id, { + description = S("Composter") .. " (" .. level .. "/7 " .. S("filled") .. ")", + _doc_items_create_entry = false, + paramtype = "light", + drawtype = "nodebox", + node_box = composter_get_nodeboxes(level), + selection_box = {type = "regular"}, + tiles = { + "mcl_composter_compost.png^mcl_composter_top.png", + "mcl_composter_bottom.png", + "mcl_composter_side.png" + }, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, + is_ground_content = false, + groups = { + handy=1, material_wood=1, deco_block=1, dirtifier=1, + not_in_creative_inventory=1, not_in_craft_guide=1, + flammable=2, fire_encouragement=3, fire_flammability=4, + comparator_signal=level + }, + sounds = mcl_sounds.node_sound_wood_defaults(), + drop = "mcl_composters:composter", + _mcl_hardness = 2, + _mcl_blast_resistance = 2, + _compost_level = level, + on_rightclick = composter_add_item, + on_timer = composter_ready + }) + + -- Add entry aliases for the Help + if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_composters:composter", "nodes", id) + end +end + +-- +-- Register filled composters (7 levels) +-- +for level = 1, 7 do + register_filled_composter(level) +end + +-- +-- Register composter ready to be harvested +-- +minetest.register_node("mcl_composters:composter_ready", { + description = S("Composter") .. "(" .. S("ready for harvest") .. ")", + _doc_items_create_entry = false, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, + paramtype = "light", + drawtype = "nodebox", + node_box = composter_get_nodeboxes(7), + selection_box = {type = "regular"}, + tiles = { + "mcl_composter_ready.png^mcl_composter_top.png", + "mcl_composter_bottom.png", + "mcl_composter_side.png" + }, + is_ground_content = false, + groups = { + handy=1, material_wood=1, deco_block=1, dirtifier=1, + not_in_creative_inventory=1, not_in_craft_guide=1, + flammable=2, fire_encouragement=3, fire_flammability=4, + comparator_signal=8 + }, + sounds = mcl_sounds.node_sound_wood_defaults(), + drop = "mcl_composters:composter", + _mcl_hardness = 2, + _mcl_blast_resistance = 2, + _compost_level = 7, + on_rightclick = composter_harvest +}) diff --git a/mods/ITEMS/mcl_composters/locale/template.txt b/mods/ITEMS/mcl_composters/locale/template.txt new file mode 100644 index 000000000..b882113c4 --- /dev/null +++ b/mods/ITEMS/mcl_composters/locale/template.txt @@ -0,0 +1,7 @@ +# textdomain: mcl_composters +Composter= +Composters can convert various organic items into bonemeal.= +Use organic items on the composter to fill it with layers of compost. Every time an item is put in the composter, there is a chance that the composter adds another layer of compost. Some items have a bigger chance of adding an extra layer than other items. After filling up with 7 layers of compost, the composter is full and bone meal can be retrieved from it. Taking out the bone meal empties the composter.= +filled= +ready for harvest= +Converts organic items into bonemeal= diff --git a/mods/ITEMS/mcl_composters/mod.conf b/mods/ITEMS/mcl_composters/mod.conf new file mode 100644 index 000000000..6ae5ff3e6 --- /dev/null +++ b/mods/ITEMS/mcl_composters/mod.conf @@ -0,0 +1,5 @@ +name = mcl_composters +author = kabou +description = composters +depends = mcl_core, mcl_sounds +optional_depends = doc diff --git a/mods/ITEMS/mcl_composters/textures/mcl_composter_bottom.png b/mods/ITEMS/mcl_composters/textures/mcl_composter_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..dc075789938b54b1f26881e9a101b71a6abc7fb0 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-J2SJWoN?~e7zPGL2~QWt5R22T!H#~14Fu*ytaH5- z6;qM&|6>0a)j1P)6lMx4FfI~rX$s(2_t@j*!k(KJc{97;eyu9AS*?3*_0xv<8?B5C zCii7k{Ejj@Fgtv{+`M|NNs7+h+g`^vuQd_T?^(aGy0ZCy&GD~iYi*?CAAfu(y1m@r zVBfK_&peM`d#rE^^6tIH%5dQL^$@*-GP@1jnWF#Ns(1zWbm*m7i9M8N2r%(zI;rVl zrk{Q>#C39v`GP|C;%^K4udYau|Ft7Ow!=+p+p||iYg$781uwnS@VafYONgc71hrFH zJM$)#Tw#4#ux{3urKJx`#9y##U*7SiJVpG8>gu_NmvFC4(K31}-+5&TUR?6wdj_z*z{nlW&kTOT=zEFP4JS92ZL=aMmxt+E_o_=A_br2;IJptq zi){ki3qllxI5YT!(Yf%TI?f?tv_y4@5CxFd4MG$Qegb$dR{30Y`BJIbn!y8J!pI#) z!Z}0$+$CYO#P-jR$>mf-6jOt4UhwrjR%t50nPr)hSVTcn>~2ye7B)75h~O?5q6jHuF`@y9g~X%` zff!e?u&_}?qPC)y;wp&lPa#2Uf8QhbjTB~mbcpI9B zPhX<7=5h5k%9Zq6830;Am~5$9tEW7qlnNnu(P-k>20;kljp)xwYaCl9=ly@xFRV?e Ue>i!}+5i9m07*qoM6N<$g7W$OLjV8( literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_composters/textures/mcl_composter_side.png b/mods/ITEMS/mcl_composters/textures/mcl_composter_side.png new file mode 100644 index 0000000000000000000000000000000000000000..e70c05858a23413c1572b95eb0eb79d0d78660f3 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYm6sN`*41#gG|mrktBCSw zP4<~t9y7TzWo>`ng60e$iqEN!1uAAt@^*J&=wOxg0CG4BJR*x37`TN&n2}-D90{Nx zdx@v7EBj-1W@bK4$&T5KK%oLp7sn8e>%M0K1rHgBxLiES*vxFQCxGS2QOE6U5^=IA z?ChOQLfc#R-+ON?zIW@zU)vu~IJWS7!_0K=n-5ywEqPpb^i5Iot4*uh4rttIYEd=T z&bFF8L5%Z#?xf@QBa-G_pWGRKcd2@l_Q|yhv;9+Fvd25A$_hPg+y=Cp!PC{xWt~$( F698xdT!;Vw literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_composters/textures/mcl_composter_top.png b/mods/ITEMS/mcl_composters/textures/mcl_composter_top.png new file mode 100644 index 0000000000000000000000000000000000000000..6fb9df7ee2f70e60bf6362ba509a8d3fd78342a3 GIT binary patch literal 397 zcmV;80doF{P)wOosYT3qKEF!)@g^6S zcfzx4D|xtok*n)Racw2HH&5c)O8Cx9q!t!U=m7xlpL4kcbNtfn3;6QyAyGJ)6gpYh zNWwP&U}%sAlT)zRX|af=8k!Wk5p~#`v+IY*MkTv`i2Ek=(MZGAoS#jVkmWyBCJlsc zJX(k Date: Thu, 17 Feb 2022 13:22:54 +0100 Subject: [PATCH 492/720] Fix composter item image. * Less is more (thanks AFCMS) --- mods/ITEMS/mcl_composters/init.lua | 5 ----- 1 file changed, 5 deletions(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index d77fd4e31..1fec4cf4a 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -223,7 +223,6 @@ local function composter_get_nodeboxes(level) } end -local composter_wieldimg = minetest.inventorycube("mcl_composter_top.png", "mcl_composter_side.png", "mcl_composter_side.png") -- -- Register empty composter -- This is the base model that is craftable and can be placed in an inventory @@ -233,10 +232,6 @@ minetest.register_node("mcl_composters:composter", { _tt_help = S("Converts organic items into bonemeal"), _doc_items_longdesc = composter_longdesc, _doc_items_usagehelp = composter_usagehelp, - -- FIXME: mcl_composter_side.png is fugly. maybe somehow use minetest.inventorycube(img1, img2, img3) - -- eeeww, that is also ugly and weird - inventory_image = composter_wieldimg, - --inventory_image = "mcl_composter_side.png", paramtype = "light", drawtype = "nodebox", node_box = composter_get_nodeboxes(0), From 64203c38a6dbac6433fe5160c0d2e0ae1ef61c95 Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 13:37:58 +0100 Subject: [PATCH 493/720] Update documentation. * Make a mention of the one second delay before composter readies. --- mods/ITEMS/mcl_composters/init.lua | 5 +++-- mods/ITEMS/mcl_composters/locale/template.txt | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 1fec4cf4a..0bb0dc969 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -18,8 +18,9 @@ local composter_usagehelp = S( "Every time an item is put in the composter, there is a chance that the " .. "composter adds another layer of compost. Some items have a bigger chance " .. "of adding an extra layer than other items. After filling up with 7 layers " .. - "of compost, the composter is full and bone meal can be retrieved from it. " .. - "Taking out the bone meal empties the composter." + "of compost, the composter is full. After a delay of approximately one " .. + "second the composter becomes ready and bone meal can be retrieved from it. " .. + "Right-clicking the composter takes out the bone meal empties the composter." ) minetest.register_craft({ diff --git a/mods/ITEMS/mcl_composters/locale/template.txt b/mods/ITEMS/mcl_composters/locale/template.txt index b882113c4..c5f9bb858 100644 --- a/mods/ITEMS/mcl_composters/locale/template.txt +++ b/mods/ITEMS/mcl_composters/locale/template.txt @@ -1,7 +1,7 @@ # textdomain: mcl_composters Composter= Composters can convert various organic items into bonemeal.= -Use organic items on the composter to fill it with layers of compost. Every time an item is put in the composter, there is a chance that the composter adds another layer of compost. Some items have a bigger chance of adding an extra layer than other items. After filling up with 7 layers of compost, the composter is full and bone meal can be retrieved from it. Taking out the bone meal empties the composter.= +Use organic items on the composter to fill it with layers of compost. Every time an item is put in the composter, there is a chance that the composter adds another layer of compost. Some items have a bigger chance of adding an extra layer than other items. After filling up with 7 layers of compost, the composter is full. After a delay of approximately one second the composter becomes ready and bone meal can be retrieved from it. Right-clicking the composter takes out the bone meal empties the composter."= filled= ready for harvest= Converts organic items into bonemeal= From 1f7697b6f5a36b63d88ae552141de0fc0e0298d2 Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 13:53:28 +0100 Subject: [PATCH 494/720] Typo fix. * it's a spruceSapling (thanks NO11) --- mods/ITEMS/mcl_composters/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 0bb0dc969..819869876 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -125,7 +125,7 @@ local compostability = { ["mcl_core:birchsapling"] = 30, ["mcl_core:darksapling"] = 30, ["mcl_core:junglesapling"] = 30, - ["mcl_core:spruceapling"] = 30, + ["mcl_core:sprucesapling"] = 30, ["mcl_ocean:seagrass"] = 30, -- missing: small dripleaf ["mcl_sweet_berry:sweet_berry"] = 30, From 8d79d1653174e02568a2980958341a62f8cd4baf Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 14:05:02 +0100 Subject: [PATCH 495/720] Update mod deps. * Add dpendency on mcl_dye for the bone meal particle spawner --- mods/ITEMS/mcl_composters/mod.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_composters/mod.conf b/mods/ITEMS/mcl_composters/mod.conf index 6ae5ff3e6..845a0d325 100644 --- a/mods/ITEMS/mcl_composters/mod.conf +++ b/mods/ITEMS/mcl_composters/mod.conf @@ -1,5 +1,5 @@ name = mcl_composters author = kabou description = composters -depends = mcl_core, mcl_sounds +depends = mcl_core, mcl_sounds, mcl_dye optional_depends = doc From 06274518bf467130ba5351faf51ef5cabf2ac363 Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 14:23:50 +0100 Subject: [PATCH 496/720] Add player object check. * Handle the case where a mob somehow "clicks" on a composter and we get an invalid player object passed. --- mods/ITEMS/mcl_composters/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 819869876..e36d66641 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -139,7 +139,7 @@ local function composter_add_item(pos, node, player, itemstack, pointed_thing) -- handle filling the composter when rightclicked -- as an on_rightclick handles, it returns an itemstack -- - if not player or player:get_player_control().sneak then + if not player or (player:get_player_control() and player:get_player_control().sneak) then return itemstack end if not itemstack and itemstack:is_empty() then From 3257014e007a91cf0ed7fb413a290188260e8e05 Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 14:37:37 +0100 Subject: [PATCH 497/720] Add missing melon block. * Add melon block to the compostabiles list. --- mods/ITEMS/mcl_composters/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index e36d66641..1accfe493 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -70,7 +70,7 @@ local compostability = { ["mcl_flowers:rose_bush"] = 65, ["mcl_flowers:sunflower"] = 65, ["mcl_flowers:waterlily"] = 65, - -- missing: melon block? + ["mcl_farming:melon"] = 65, -- missing: moss block? -- mushroom aliases below? ["mcl_farming:mushroom_brown"] = 65, From 64608f50f843ca9799b960cb3a73dcafe358bb26 Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 15:37:37 +0100 Subject: [PATCH 498/720] Update mod description and fix comment. * Make mod description more descriptive. * Minor comment tweak. --- mods/ITEMS/mcl_composters/init.lua | 2 +- mods/ITEMS/mcl_composters/mod.conf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 1accfe493..7d2a05823 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -136,7 +136,7 @@ local compostability = { local function composter_add_item(pos, node, player, itemstack, pointed_thing) -- - -- handle filling the composter when rightclicked + -- handles filling the composter when rightclicked -- as an on_rightclick handles, it returns an itemstack -- if not player or (player:get_player_control() and player:get_player_control().sneak) then diff --git a/mods/ITEMS/mcl_composters/mod.conf b/mods/ITEMS/mcl_composters/mod.conf index 845a0d325..86d729887 100644 --- a/mods/ITEMS/mcl_composters/mod.conf +++ b/mods/ITEMS/mcl_composters/mod.conf @@ -1,5 +1,5 @@ name = mcl_composters author = kabou -description = composters +description = Composters can convert various organic items into bonemeal. depends = mcl_core, mcl_sounds, mcl_dye optional_depends = doc From cea821b2fa8bdfc14dbad8d2cda152f473ef8431 Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 21:38:24 +0100 Subject: [PATCH 499/720] Comment fixes. * Improve comments, some typo fixes. --- mods/ITEMS/mcl_composters/init.lua | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 7d2a05823..8a900a155 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -136,8 +136,9 @@ local compostability = { local function composter_add_item(pos, node, player, itemstack, pointed_thing) -- - -- handles filling the composter when rightclicked - -- as an on_rightclick handles, it returns an itemstack + -- handler for filling the composter when rightclicked + -- + -- as an on_rightclick handler, it returns an itemstack -- if not player or (player:get_player_control() and player:get_player_control().sneak) then return itemstack @@ -181,8 +182,9 @@ end local function composter_ready(pos) -- -- update the composter block to ready for harvesting - -- this function is a callback on_timer. + -- this function is a node callback on_timer. -- the timer is set in function 'composter_fill' when composter level is 7 + -- -- returns false in order to cancel further activity of the timer -- minetest.swap_node(pos, {name = "mcl_composters:composter_ready"}) @@ -193,14 +195,14 @@ end local function composter_harvest(pos, node, player, itemstack, pointed_thing) -- - -- handle harvesting bone meal from a ready composter when rightclicked + -- handler for harvesting bone meal from a ready composter when rightclicked -- if not player or player:get_player_control().sneak then return end - -- reset composter to empty + -- reset ready type composter to empty type minetest.swap_node(pos, {name="mcl_composters:composter"}) - -- spawn bone meal item (wtf dye?! is this how the make white cocoa) + -- spawn bone meal item (wtf dye?! is this how they make white cocoa) minetest.add_item(pos, "mcl_dye:white") -- TODO play some sounds @@ -208,7 +210,7 @@ end local function composter_get_nodeboxes(level) -- - -- Convenience function because the composter nodeboxes are very similar + -- Convenience function to construct the nodeboxes for varying levels of compost -- local top_y_tbl = {[0]=-7, -5, -3, -1, 1, 3, 5, 7} local top_y = top_y_tbl[level] / 16 @@ -225,7 +227,7 @@ local function composter_get_nodeboxes(level) end -- --- Register empty composter +-- Register empty composter node -- This is the base model that is craftable and can be placed in an inventory -- minetest.register_node("mcl_composters:composter", { From ffc2c9409618e19a59f299497fb29e966841e1cf Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 21:52:11 +0100 Subject: [PATCH 500/720] Add help alias * Add help alias for the ready type composter --- mods/ITEMS/mcl_composters/init.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 8a900a155..2c95bc71e 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -335,3 +335,9 @@ minetest.register_node("mcl_composters:composter_ready", { _compost_level = 7, on_rightclick = composter_harvest }) + +-- Add entry aliases for the Help +if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_composters:composter", + "nodes", "mcl_composters:composter_ready" ) +end From f22baafaa6aea035e899d035df826c4e07310416 Mon Sep 17 00:00:00 2001 From: kabou Date: Fri, 18 Feb 2022 16:51:25 +0100 Subject: [PATCH 501/720] Add player object check. * Add one more check if player object is an actual player. --- mods/ITEMS/mcl_composters/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 2c95bc71e..5684c2c2b 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -197,7 +197,7 @@ local function composter_harvest(pos, node, player, itemstack, pointed_thing) -- -- handler for harvesting bone meal from a ready composter when rightclicked -- - if not player or player:get_player_control().sneak then + if not player or (player:get_player_control() and player:get_player_control().sneak) then return end -- reset ready type composter to empty type From 51ca60c09704b1b4708b8c67821e8185c7c9368c Mon Sep 17 00:00:00 2001 From: kabou Date: Sat, 19 Feb 2022 14:49:32 +0100 Subject: [PATCH 502/720] Change custom node attribute name. * Rename _compost_level to _mcl_compost_level --- mods/ITEMS/mcl_composters/init.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 5684c2c2b..abcc7fcb4 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -157,7 +157,7 @@ local function composter_add_item(pos, node, player, itemstack, pointed_thing) if chance >= rand then -- get current compost level local node_defs = minetest.registered_nodes[node.name] - local level = node_defs["_compost_level"] + local level = node_defs["_mcl_compost_level"] -- spawn green particles above new layer mcl_dye.add_bone_meal_particle(vector.add(pos, {x=0, y=level/8, z=0})) -- TODO: play some sounds @@ -253,7 +253,7 @@ minetest.register_node("mcl_composters:composter", { sounds = mcl_sounds.node_sound_wood_defaults(), _mcl_hardness = 2, _mcl_blast_resistance = 2, - _compost_level = 0, + _mcl_compost_level = 0, on_rightclick = composter_add_item }) @@ -287,7 +287,7 @@ local function register_filled_composter(level) drop = "mcl_composters:composter", _mcl_hardness = 2, _mcl_blast_resistance = 2, - _compost_level = level, + _mcl_compost_level = level, on_rightclick = composter_add_item, on_timer = composter_ready }) @@ -332,7 +332,7 @@ minetest.register_node("mcl_composters:composter_ready", { drop = "mcl_composters:composter", _mcl_hardness = 2, _mcl_blast_resistance = 2, - _compost_level = 7, + _mcl_compost_level = 7, on_rightclick = composter_harvest }) From 55009c257e253c49dacf017e4bd56bc36aca2e10 Mon Sep 17 00:00:00 2001 From: kabou Date: Sat, 19 Feb 2022 16:15:36 +0100 Subject: [PATCH 503/720] Use new vectors * Use vector.new instead of xyz table. --- mods/ITEMS/mcl_composters/init.lua | 2 +- mods/ITEMS/mcl_hoppers/init.lua | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index abcc7fcb4..7b6e9243b 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -159,7 +159,7 @@ local function composter_add_item(pos, node, player, itemstack, pointed_thing) local node_defs = minetest.registered_nodes[node.name] local level = node_defs["_mcl_compost_level"] -- spawn green particles above new layer - mcl_dye.add_bone_meal_particle(vector.add(pos, {x=0, y=level/8, z=0})) + mcl_dye.add_bone_meal_particle(vector.add(pos, vector.new(0, level/8, 0))) -- TODO: play some sounds -- update composter block if level < 7 then diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index 36a21ad95..8245a0b26 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -343,7 +343,7 @@ minetest.register_abm({ local abovenode = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}) if not minetest.registered_items[abovenode.name] then return end -- Don't bother checking item enties if node above is a container (should save some CPU) - if minetest.registered_items[abovenode.name].groups.container then + if minetest.get_item_group(abovenode.name, "container") then return end local meta = minetest.get_meta(pos) @@ -397,7 +397,7 @@ minetest.register_abm({ -- Suck an item from the container above into the hopper local upnode = minetest.get_node(uppos) if not minetest.registered_nodes[upnode.name] then return end - local g = minetest.registered_nodes[upnode.name].groups.container + local g = minetest.get_item_group(upnode.name, "container") local sucked = mcl_util.move_item_container(uppos, pos) -- Also suck in non-fuel items from furnace fuel slot @@ -442,7 +442,7 @@ minetest.register_abm({ -- Suck an item from the container above into the hopper local abovenode = minetest.get_node(above) if not minetest.registered_nodes[abovenode.name] then return end - local g = minetest.registered_nodes[abovenode.name].groups.container + local g = minetest.get_item_group(abovenode.name, "container") local sucked = mcl_util.move_item_container(above, pos) -- Also suck in non-fuel items from furnace fuel slot @@ -454,7 +454,7 @@ minetest.register_abm({ end -- Move an item from the hopper into the container to which the hopper points to - local g = minetest.registered_nodes[frontnode.name].groups.container + local g = minetest.get_item_group(frontnode.name, "container") if g == 2 or g == 3 or g == 5 or g == 6 then mcl_util.move_item_container(pos, front) elseif g == 4 then From f81980da51818610b95d39684e1395f14e875108 Mon Sep 17 00:00:00 2001 From: kabou Date: Sat, 19 Feb 2022 16:17:33 +0100 Subject: [PATCH 504/720] Fix hardness and blast resistance. * Use correct MC values for hardness and blast resistance. --- mods/ITEMS/mcl_composters/init.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 7b6e9243b..b63931ad7 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -251,8 +251,8 @@ minetest.register_node("mcl_composters:composter", { flammable=2, fire_encouragement=3, fire_flammability=4, }, sounds = mcl_sounds.node_sound_wood_defaults(), - _mcl_hardness = 2, - _mcl_blast_resistance = 2, + _mcl_hardness = 0.6, + _mcl_blast_resistance = 0.6, _mcl_compost_level = 0, on_rightclick = composter_add_item }) @@ -285,8 +285,8 @@ local function register_filled_composter(level) }, sounds = mcl_sounds.node_sound_wood_defaults(), drop = "mcl_composters:composter", - _mcl_hardness = 2, - _mcl_blast_resistance = 2, + _mcl_hardness = 0.6, + _mcl_blast_resistance = 0.6, _mcl_compost_level = level, on_rightclick = composter_add_item, on_timer = composter_ready @@ -330,8 +330,8 @@ minetest.register_node("mcl_composters:composter_ready", { }, sounds = mcl_sounds.node_sound_wood_defaults(), drop = "mcl_composters:composter", - _mcl_hardness = 2, - _mcl_blast_resistance = 2, + _mcl_hardness = 0.6, + _mcl_blast_resistance = 0.6, _mcl_compost_level = 7, on_rightclick = composter_harvest }) From 8d18ab8a7a007d35d601dccbe93dfada9c2e5deb Mon Sep 17 00:00:00 2001 From: kabou Date: Sat, 19 Feb 2022 16:55:24 +0100 Subject: [PATCH 505/720] Optimize texture files. * Texture files were optimized with 'optipng -o7 -zm9 -strip all' . --- .../textures/mcl_composter_bottom.png | Bin 395 -> 213 bytes .../textures/mcl_composter_compost.png | Bin 409 -> 184 bytes .../textures/mcl_composter_ready.png | Bin 582 -> 276 bytes .../textures/mcl_composter_side.png | Bin 267 -> 209 bytes .../textures/mcl_composter_top.png | Bin 397 -> 223 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_composters/textures/mcl_composter_bottom.png b/mods/ITEMS/mcl_composters/textures/mcl_composter_bottom.png index dc075789938b54b1f26881e9a101b71a6abc7fb0..cfed3a8a5c7fa7818d1cc06f534cc087fa8e1b91 100644 GIT binary patch delta 197 zcmV;$06PDR1JwbL7=Hu<0002(-QrRJ0016POjJc)OF?E(MQ>C_cv?t>V@!@|O_O-B**I>Qi|zG#c7HspE!L~$fM3{!0RS}L z9VAZ00YC#l^V5T?tu$mT-P=mXv#m4~FO09TdwGNZe8=_8eLNdqGg{XHZ~Q;di%W;zz(8vsx=NP@{JNH#BL(Nsl~ zTsNR`M|1X}k9F0kWFPvtZ(WE+Dz@h8a;$_^{!^vWfa`{{L{vE;kS5A%xo(hj)CK8q zuA20vb>Vau=mjg&xa@ai7vv?Yox`LHsbnh2nJ8n$dbJ$nu*jiF2Pv1MWwIPy{xNqa aRUZJLbDRHfYw#QZ0000ZKiFTVC>hD59(`=?h`_AByB^-Fpb_p&Ly+bm=levX0RfIP1W*Gk>p S<)uIi7(8A5T-G@yGywqImpVBB delta 395 zcmV;60d)Sj0ht4k7=H)`0000V^Z#K0000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Re2Ll5s7^(dUmH+?&CP_p=R5;7Eld*2YAQVN936>>b zi3g@k9n!Dp(EtB~4w*7Bq#XZht;L-+5&TUR?6wdj_z* zz{nlW&kTOT=zEFP4JS92ZL=aMmxt+E_o_=A_br2;IJptqi){ki3qllxI5YT!(Yf%T zI?f?tv_y4@5CxFd4MG$Qegb$dR{30Y`BJIbn!y8J!pI#)!Z}0$+$CYO#P-jR$>mf- z6j`<6G`Vs*0} zq+(-{qPkQY*Eu3@!>iN5xV)Y z2FHK1JP9=+V$Yt?hh}oe|&Z0(`z8Q`RVm7(Qm4S zKoc2Dg8YIR9G=}s19D0{T^vIsBzq5b3LY}35nwr(EV*7_(}4&6Pv&csO75^;Hz7tK zV2MXjr26ix?MgFCeb&|Wt@AjeKJRr=Ub*Wc-MqtccU=yxtvM#msl<7>T&%<6#Oi}@ zHB^P(?LV4!w=Z1fd#<=yzn{w8Suv|MH72o$umr_?V6O~g>2!LLa~|jb22WQ%mvv4F FO#p~BZcqRK delta 568 zcmV-80>}N70>%W88Gi-<001BJ|6u?C00v@9M??Vs0RI60puMM)00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-;t0|O})*GzRQ0005gNklJI4qyuNS+%hZ%- zrg>g(pj^plKF8gg57?zLC|h)QpxobbxE;M@8qD%b8)Ix@M{ zfn{n6Ln9n7PN4NqPEMW0v5f>$o;gpSBN^P2qgtzP1$Y~phfiOkwdQg4HOiIrTNwaa zL6~f*S~07qJfxHgA$ZYf;@Ad32;Yt9&q-?>TPElIf7LInO{sr4dCb}X0000S|zoLLZ^xL2VX)Z9k85Es{jiC002ovPDHLk FV1lhoJwE^d delta 209 zcmcb}*v&LSg;8;$s#5)e=8X89`d9`A2F4_BcNc~ZR#^`qhqJ&VvY3H^TNs2H8D`Cq z01C2~c>21sKW1lU=Hry?n9T?jD)4l14B@!$dnQoukb#KH#iNYP%qDvRSe_hp+|DKu zC!4~~-q|Fyy=DKs_r~ITw_g0U{qclj3(q&qO!vO|p!MAn*T;27-xM{!+O)dufX1Ds z7FA>IY^&K5#5mvQPC9-+B5B_B$(`YMm#Q~upIoaj+duUsd%TmXtkBcOZ9vNzJYD@< J);T3K0RVz4P6Yq} diff --git a/mods/ITEMS/mcl_composters/textures/mcl_composter_top.png b/mods/ITEMS/mcl_composters/textures/mcl_composter_top.png index 6fb9df7ee2f70e60bf6362ba509a8d3fd78342a3..fc6e202d3c90f2e7405c671392145fced2a74a3f 100644 GIT binary patch delta 207 zcmeBWzRx&8qMn7Bfq~)e-A6${N-n@B#5K;_F)hF~Kg6vf%A+;er!UiYW>L`O%9I7o z8EgCV8n0UK1FB>%3GxdD(jX9;@+tyIWqP_ehH%KT9(3eoaujg67=QN8ax=#RUJlHC z1&snNXQ#Go*vqDI?{e^F)7cZ1+2iLopZ`7Sy2snN72+;SkDV@)Jm|ktX5#shuYHCh zCd)LVbe2rwu#HWN7h7q;U~Bc}VM;-&wVc70T*uA-pLyysTsT+o5M;ZjtDnm{r-UW| D29!>d delta 382 zcmV-^0fGMC0gVHY7=H)`0000V^Z#K0000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Re2Ll5a6_$x^RsaA28c9S!R5;6pQ_D`nFc6%zT#JNS zT=>ZTM}MSW!WoGh7eIgnh+Ys1LLs<$Na0Y%Y#g`D#rAr=Gk>1d%4WS9@e99n0D$_d zgT|pa09XL1zXx#jrG<{Adtcgk_N9g4g=;I>KEF!)@g^6Scfzx4D|xtok*n)Racw2H zH&5c)O8Cx9q!t!U=m7xlpL4kcbNtfn3;6QyAyGJ)6gpYhNWwP&U}%sAlT)zRX|af= z8k!Wk5p~#`vv=!<$VMf*eu(=f^wCJe)|{VBm5}8>RVEFDZai9uDrW_>iJC3f4Hlhr zK|7pd)4nvJKima+L1r44{f_Q}z9ic*%({?DrjneAIwqU-YShD`hbA4QT#nVrdUW~6 c+?`ha1IdG&3+6y&UH||907*qoM6N<$f@RgH82|tP From 584a75df76649e4935248f1326d8efb432442aa4 Mon Sep 17 00:00:00 2001 From: kabou Date: Sun, 20 Feb 2022 17:36:23 +0100 Subject: [PATCH 506/720] Fix filling cauldrons with water. When using a bucket of water on a cauldron, this would not fill the cauldron as expected, but deposit a water source block on top of the cauldron instead. Applied patch from mineclone5 #38 (commit # 698c29733f06a7fcb7e755bf26ee46b33b00699b) from mineclone5 that fixes this problem. --- mods/ITEMS/mcl_buckets/init.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 5d372ef1f..d3cabc853 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -162,8 +162,11 @@ local function on_place_bucket(itemstack, user, pointed_thing, def) local undernode = get_node(pointed_thing.under) local abovenode = get_node(pointed_thing.above) - local buildable1 = minetest.registered_nodes[undernode.name] and minetest.registered_nodes[undernode.name].buildable_to - local buildable2 = minetest.registered_nodes[abovenode.name] and minetest.registered_nodes[abovenode.name].buildable_to + local name1, name2 = undernode.name, abovenode.name + local regnode1, regnode2 = minetest.registered_nodes[name1], minetest.registered_nodes[name2] + local buildable1 = regnode1 and (regnode1.buildable_to or regnode1.groups.cauldron == 1) + local buildable2 = regnode2 and (regnode2.buildable_to or regnode2.groups.cauldron == 1) + if not buildable1 and not buildable2 then return itemstack end --if both nodes aren't buildable_to, skip if buildable1 then From 315f251584fb55e6a76b3397f8b96f4d17476d47 Mon Sep 17 00:00:00 2001 From: kabou Date: Sun, 20 Feb 2022 17:49:24 +0100 Subject: [PATCH 507/720] Add local to speedup global function access. The minetest.registered_nodes function is called from multiple places. Define a local alias registered_nodes and substitute it in all calls. --- mods/ITEMS/mcl_buckets/init.lua | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index d3cabc853..506ce6476 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -22,6 +22,8 @@ local get_node = minetest.get_node local add_node = minetest.add_node local add_item = minetest.add_item +local registered_nodes = minetest.registered_nodes + if mod_mcl_core then minetest.register_craft({ @@ -40,21 +42,21 @@ mcl_buckets = { -- Sound helper functions for placing and taking liquids local function sound_place(itemname, pos) - local def = minetest.registered_nodes[itemname] + local def = registered_nodes[itemname] if def and def.sounds and def.sounds.place then minetest.sound_play(def.sounds.place, {gain=1.0, pos = pos, pitch = 1 + math.random(-10, 10)*0.005}, true) end end local function sound_take(itemname, pos) - local def = minetest.registered_nodes[itemname] + local def = 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 local function place_liquid(pos, itemstring) - local fullness = minetest.registered_nodes[itemstring].liquid_range + local fullness = registered_nodes[itemstring].liquid_range sound_place(itemstring, pos) minetest.add_node(pos, {name=itemstring, param2=fullness}) end @@ -163,7 +165,7 @@ local function on_place_bucket(itemstack, user, pointed_thing, def) local undernode = get_node(pointed_thing.under) local abovenode = get_node(pointed_thing.above) local name1, name2 = undernode.name, abovenode.name - local regnode1, regnode2 = minetest.registered_nodes[name1], minetest.registered_nodes[name2] + local regnode1, regnode2 = registered_nodes[name1], registered_nodes[name2] local buildable1 = regnode1 and (regnode1.buildable_to or regnode1.groups.cauldron == 1) local buildable2 = regnode2 and (regnode2.buildable_to or regnode2.groups.cauldron == 1) @@ -347,7 +349,7 @@ function mcl_buckets.register_liquid(def) stack_max = 1, groups = def.groups, _on_dispense = function(stack, pos, droppos, dropnode, dropdir) - local buildable = minetest.registered_nodes[dropnode.name].buildable_to or dropnode.name == "mcl_portals:portal" + local buildable = registered_nodes[dropnode.name].buildable_to or dropnode.name == "mcl_portals:portal" if not buildable then return stack end local result, take_bucket = get_extra_check(def.extra_check, droppos, nil) if result then -- Fail placement of liquid if result is false From 13baa68b677d1ed4e981ed9fea53c960585596ad Mon Sep 17 00:00:00 2001 From: kabou Date: Sun, 20 Feb 2022 17:58:17 +0100 Subject: [PATCH 508/720] Fixed missed alias uses and added set_node alias. Two instances of add_node and add_item still used the full minetest call, substitute the alias. Added a set_node alias for several minetest.set_node calls. --- mods/ITEMS/mcl_buckets/init.lua | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 506ce6476..1d37f2e0d 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -19,6 +19,7 @@ local string = string local raycast = minetest.raycast local get_node = minetest.get_node +local set_node = minetest.set_node local add_node = minetest.add_node local add_item = minetest.add_item @@ -58,7 +59,7 @@ end local function place_liquid(pos, itemstring) local fullness = registered_nodes[itemstring].liquid_range sound_place(itemstring, pos) - minetest.add_node(pos, {name=itemstring, param2=fullness}) + add_node(pos, {name=itemstring, param2=fullness}) end local function give_bucket(new_bucket, itemstack, user) @@ -272,14 +273,14 @@ local function on_place_bucket_empty(itemstack, user, pointed_thing) -- 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"}) + 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"}) + 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 @@ -384,13 +385,13 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { collect_liquid = true end if collect_liquid then - minetest.set_node(droppos, {name="air"}) + set_node(droppos, {name="air"}) -- Fill bucket with liquid stack = new_bucket else -- No liquid found: Drop empty bucket - minetest.add_item(droppos, stack) + add_item(droppos, stack) stack:take_item() end return stack From b3aed9d6b829547f74a466c73438f98176c2c533 Mon Sep 17 00:00:00 2001 From: kabou Date: Sun, 20 Feb 2022 18:06:04 +0100 Subject: [PATCH 509/720] Use proper get_item_group accessor. Instead of directly accessing the group table in node definitions, use the proper minetest.get_item_group accessor to test for "cauldron" group. Also adds local alias get_item_group for the global minetest call. --- mods/ITEMS/mcl_buckets/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 1d37f2e0d..3bbae5487 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -24,7 +24,7 @@ local add_node = minetest.add_node local add_item = minetest.add_item local registered_nodes = minetest.registered_nodes - +local get_item_group = minetest.get_item_group if mod_mcl_core then minetest.register_craft({ @@ -167,8 +167,8 @@ local function on_place_bucket(itemstack, user, pointed_thing, def) local abovenode = get_node(pointed_thing.above) local name1, name2 = undernode.name, abovenode.name local regnode1, regnode2 = registered_nodes[name1], registered_nodes[name2] - local buildable1 = regnode1 and (regnode1.buildable_to or regnode1.groups.cauldron == 1) - local buildable2 = regnode2 and (regnode2.buildable_to or regnode2.groups.cauldron == 1) + local buildable1 = regnode1 and (regnode1.buildable_to or get_item_group(name1, "cauldron") == 1) + local buildable2 = regnode2 and (regnode2.buildable_to or get_item_group(name2, "cauldron") == 1) if not buildable1 and not buildable2 then return itemstack end --if both nodes aren't buildable_to, skip From 88ce1e36629a51e3d8bd04a52fdb0e22b55c45d9 Mon Sep 17 00:00:00 2001 From: kabou Date: Sun, 20 Feb 2022 18:15:56 +0100 Subject: [PATCH 510/720] Remove redundant logic. The function on_place_bucket contains the following logic: if not a and not b then return x end if a then foo(a) elseif b then foo(b) else return x end The "if not a and not b then .." is removed because the case is handled by the else case later on. This will allow some further simplifications. --- mods/ITEMS/mcl_buckets/init.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 3bbae5487..ba2ece4f8 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -170,8 +170,6 @@ local function on_place_bucket(itemstack, user, pointed_thing, def) local buildable1 = regnode1 and (regnode1.buildable_to or get_item_group(name1, "cauldron") == 1) local buildable2 = regnode2 and (regnode2.buildable_to or get_item_group(name2, "cauldron") == 1) - if not buildable1 and not buildable2 then return itemstack end --if both nodes aren't buildable_to, skip - if buildable1 then local result, take_bucket = get_extra_check(def.extra_check, pointed_thing.under, user) if result then From d2261426c3457fcd7348eeae48c8d95bc920352c Mon Sep 17 00:00:00 2001 From: kabou Date: Sun, 20 Feb 2022 18:40:57 +0100 Subject: [PATCH 511/720] Remove redundant variables in on_place_bucket. The function on_place_bucket defined a couple of variables that were used only once or in a redundant check. After removal of the redundant check in a previous commit, all use-once variables can now be substituted with their assignment expressions. --- mods/ITEMS/mcl_buckets/init.lua | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index ba2ece4f8..663d1ca70 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -165,12 +165,8 @@ local function on_place_bucket(itemstack, user, pointed_thing, def) local undernode = get_node(pointed_thing.under) local abovenode = get_node(pointed_thing.above) - local name1, name2 = undernode.name, abovenode.name - local regnode1, regnode2 = registered_nodes[name1], registered_nodes[name2] - local buildable1 = regnode1 and (regnode1.buildable_to or get_item_group(name1, "cauldron") == 1) - local buildable2 = regnode2 and (regnode2.buildable_to or get_item_group(name2, "cauldron") == 1) - if buildable1 then + if registered_nodes[undernode.name].buildable_to or get_item_group(undernode.name, "cauldron") == 1 then local result, take_bucket = get_extra_check(def.extra_check, pointed_thing.under, user) if result then local node_place = get_node_place(def.source_place, pointed_thing.under) @@ -191,7 +187,7 @@ local function on_place_bucket(itemstack, user, pointed_thing, def) end end return get_bucket_drop(itemstack, user, take_bucket) - elseif buildable2 then + elseif registered_nodes[abovenode.name].buildable_to or get_item_group(abovenode.name, "cauldron") == 1 then local result, take_bucket = get_extra_check(def.extra_check, pointed_thing.above, user) if result then local node_place = get_node_place(def.source_place, pointed_thing.above) From 639bf936c586ab96910770e804d4b691cb498fe5 Mon Sep 17 00:00:00 2001 From: kabou Date: Sun, 20 Feb 2022 19:52:05 +0100 Subject: [PATCH 512/720] Use alias for minetest.* namespace function call. * Fix one missed minetest.get_node use in earlier commit. --- mods/ITEMS/mcl_buckets/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 663d1ca70..11e1d1c4d 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -226,7 +226,7 @@ local function on_place_bucket_empty(itemstack, user, pointed_thing) return new_stack end - local node = minetest.get_node(pointed_thing.under) + local node = get_node(pointed_thing.under) local nn = node.name local new_bucket From e54502edd65549cd6ab7765200228fb9416ef5c1 Mon Sep 17 00:00:00 2001 From: kabou Date: Sun, 20 Feb 2022 20:24:55 +0100 Subject: [PATCH 513/720] Add more local aliases for minetest.* namespace functions * Add locals for - minetest.is_creative_enabled - minetest.is_protected - minetest.record_protection_violation --- mods/ITEMS/mcl_buckets/init.lua | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 11e1d1c4d..e253a342a 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -25,6 +25,9 @@ local add_item = minetest.add_item local registered_nodes = minetest.registered_nodes local get_item_group = minetest.get_item_group +local is_creative_enabled = minetest.is_creative_enabled +local is_protected = minetest.is_protected +local record_protection_violation = minetest.record_protection_violation if mod_mcl_core then minetest.register_craft({ @@ -64,7 +67,7 @@ end local function give_bucket(new_bucket, itemstack, user) local inv = user:get_inventory() - if minetest.is_creative_enabled(user:get_player_name()) then + if is_creative_enabled(user:get_player_name()) then --TODO: is a full bucket added if inv doesn't contain one? return itemstack else @@ -131,7 +134,7 @@ end local function get_bucket_drop(itemstack, user, take_bucket) -- Handle bucket item and inventory stuff - if take_bucket and not minetest.is_creative_enabled(user:get_player_name()) then + if take_bucket and not 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") @@ -173,8 +176,8 @@ local function on_place_bucket(itemstack, user, pointed_thing, def) local pns = user:get_player_name() -- Check protection - if minetest.is_protected(pointed_thing.under, pns) then - minetest.record_protection_violation(pointed_thing.under, pns) + if is_protected(pointed_thing.under, pns) then + record_protection_violation(pointed_thing.under, pns) return itemstack end @@ -194,8 +197,8 @@ local function on_place_bucket(itemstack, user, pointed_thing, def) local pns = user:get_player_name() -- Check protection - if minetest.is_protected(pointed_thing.above, pns) then - minetest.record_protection_violation(pointed_thing.above, pns) + if is_protected(pointed_thing.above, pns) then + record_protection_violation(pointed_thing.above, pns) return itemstack end @@ -232,8 +235,8 @@ local function on_place_bucket_empty(itemstack, user, pointed_thing) local new_bucket 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()) + if is_protected(liquid_node.above, user:get_player_name()) then + record_protection_violation(liquid_node.above, user:get_player_name()) end local liquid_name = get_node(liquid_node.above).name if liquid_name then @@ -242,7 +245,7 @@ local function on_place_bucket_empty(itemstack, user, pointed_thing) --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 is_creative_enabled(user:get_player_name()) then if not false then new_bucket = ItemStack({name = liquid_def.bucketname}) if liquid_def.on_take then @@ -268,14 +271,14 @@ local function on_place_bucket_empty(itemstack, user, pointed_thing) if nn == "mcl_cauldrons:cauldron_3" then -- Take water out of full cauldron set_node(pointed_thing.under, {name="mcl_cauldrons:cauldron"}) - if not minetest.is_creative_enabled(user:get_player_name()) then + if not 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 set_node(pointed_thing.under, {name="mcl_cauldrons:cauldron"}) - if not minetest.is_creative_enabled(user:get_player_name()) then + if not 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) From af132cc523a29ece8ddff2c5f89bb4b825618f0b Mon Sep 17 00:00:00 2001 From: kabou Date: Mon, 21 Feb 2022 17:01:37 +0100 Subject: [PATCH 514/720] Reinstate nil check in on_place_bucket. * Oops, nil checks on registered_node[name] were erroneously optimized away, risking crashes. Reinstate those checks. --- mods/ITEMS/mcl_buckets/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index e253a342a..ff0b866da 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -169,7 +169,7 @@ local function on_place_bucket(itemstack, user, pointed_thing, def) local undernode = get_node(pointed_thing.under) local abovenode = get_node(pointed_thing.above) - if registered_nodes[undernode.name].buildable_to or get_item_group(undernode.name, "cauldron") == 1 then + if registered_nodes[undernode.name] and registered_nodes[undernode.name].buildable_to or get_item_group(undernode.name, "cauldron") == 1 then local result, take_bucket = get_extra_check(def.extra_check, pointed_thing.under, user) if result then local node_place = get_node_place(def.source_place, pointed_thing.under) @@ -190,7 +190,7 @@ local function on_place_bucket(itemstack, user, pointed_thing, def) end end return get_bucket_drop(itemstack, user, take_bucket) - elseif registered_nodes[abovenode.name].buildable_to or get_item_group(abovenode.name, "cauldron") == 1 then + elseif registered_nodes[abovenode.name] and registered_nodes[abovenode.name].buildable_to or get_item_group(abovenode.name, "cauldron") == 1 then local result, take_bucket = get_extra_check(def.extra_check, pointed_thing.above, user) if result then local node_place = get_node_place(def.source_place, pointed_thing.above) From a9357f7380367bc545b0e270b07933a04b284355 Mon Sep 17 00:00:00 2001 From: cora Date: Sat, 12 Feb 2022 23:44:21 +0100 Subject: [PATCH 515/720] Do not send redundant bone position and properties --- mods/PLAYER/mcl_playerplus/init.lua | 159 ++++++++++++++++++++++------ 1 file changed, 127 insertions(+), 32 deletions(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 92af5c32f..45ca3c0d5 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -120,6 +120,101 @@ end local node_stand, node_stand_below, node_head, node_feet +-- This following part is 2 wrapper functions for player:set_bones +-- and player:set_properties preventing them from being resent on +-- every globalstep when they have not changed. + +local function roundN(n, d) + if type(n) ~= "number" then return n end + local m = 10^d + return math.floor(n * m + 0.5) / m +end + +local function close_enough(a,b) + local rt=true + if type(a) == "table" and type(b) == "table" then + for k,v in pairs(a) do + if roundN(v,2) ~= roundN(b[k],2) then + rt=false + break + end + end + else + rt = roundN(a,2) == roundN(b,2) + end + return rt +end + + + +local function props_changed(props,oldprops) + local changed=false + local p={} + for k,v in pairs(props) do + if not close_enough(v,oldprops[k]) then + p[k]=v + changed=true + end + end + return changed,p +end + +--tests for roundN +local test_round1=15 +local test_round2=15.00199999999 +local test_round3=15.00111111 +local test_round4=15.00999999 + +assert(roundN(test_round1,2)==roundN(test_round1,2)) +assert(roundN(test_round1,2)==roundN(test_round2,2)) +assert(roundN(test_round1,2)==roundN(test_round3,2)) +assert(roundN(test_round1,2)~=roundN(test_round4,2)) + +-- tests for close_enough +local test_cb = {-0.35,0,-0.35,0.35,0.8,0.35} --collisionboxes +local test_cb_close = {-0.351213,0,-0.35,0.35,0.8,0.351212} +local test_cb_diff = {-0.35,0,-1.35,0.35,0.8,0.35} + +local test_eh = 1.65 --eye height +local test_eh_close = 1.65123123 +local test_eh_diff = 1.35 + +local test_nt = { r = 225, b = 225, a = 225, g = 225 } --nametag +local test_nt_diff = { r = 225, b = 225, a = 0, g = 225 } + +assert(close_enough(test_cb,test_cb_close)) +assert(not close_enough(test_cb,test_cb_diff)) +assert(close_enough(test_eh,test_eh_close)) +assert(not close_enough(test_eh,test_eh_diff)) +assert(not close_enough(test_nt,test_nt_diff)) --no floats involved here + +--tests for properties_changed +local test_properties_set1={collisionbox = {-0.35,0,-0.35,0.35,0.8,0.35}, eye_height = 0.65, nametag_color = { r = 225, b = 225, a = 225, g = 225 }} +local test_properties_set2={collisionbox = {-0.35,0,-0.35,0.35,0.8,0.35}, eye_height = 1.35, nametag_color = { r = 225, b = 225, a = 225, g = 225 }} + +local test_p1,_=props_changed(test_properties_set1,test_properties_set1) +local test_p2,_=props_changed(test_properties_set1,test_properties_set2) + +assert(not test_p1) +assert(test_p2) + +local function set_properties_conditional(player,props) + local changed,p=props_changed(props,player:get_properties()) + if changed then + player:set_properties(p) + end +end + +local function set_bone_position_conditional(player,b,p,r) --bone,position,rotation + local oldp,oldr=player:get_bone_position(b) + if vector.equals(vector.round(oldp),vector.round(p)) and vector.equals(vector.round(oldr),vector.round(r)) then + return + end + player:set_bone_position(b,p,r) +end + + + minetest.register_globalstep(function(dtime) time = time + dtime @@ -212,15 +307,15 @@ minetest.register_globalstep(function(dtime) end if wielded_def and wielded_def._mcl_toollike_wield then - player:set_bone_position("Wield_Item", vector.new(0,3.9,1.3), vector.new(90,0,0)) + set_bone_position_conditional(player,"Wield_Item", vector.new(0,3.9,1.3), vector.new(90,0,0)) elseif string.find(wielded:get_name(), "mcl_bows:bow") then - player:set_bone_position("Wield_Item", vector.new(.5,4.5,-1.6), vector.new(90,0,20)) + set_bone_position_conditional(player,"Wield_Item", vector.new(.5,4.5,-1.6), vector.new(90,0,20)) elseif string.find(wielded:get_name(), "mcl_bows:crossbow_loaded") then - player:set_bone_position("Wield_Item", vector.new(-1.5,5.7,1.8), vector.new(64,90,0)) + set_bone_position_conditional(player,"Wield_Item", vector.new(-1.5,5.7,1.8), vector.new(64,90,0)) elseif string.find(wielded:get_name(), "mcl_bows:crossbow") then - player:set_bone_position("Wield_Item", vector.new(-1.5,5.7,1.8), vector.new(90,90,0)) + set_bone_position_conditional(player,"Wield_Item", vector.new(-1.5,5.7,1.8), vector.new(90,90,0)) else - player:set_bone_position("Wield_Item", vector.new(-1.5,4.9,1.8), vector.new(135,0,90)) + set_bone_position_conditional(player,"Wield_Item", vector.new(-1.5,4.9,1.8), vector.new(135,0,90)) end player_velocity_old = player:get_velocity() or player:get_player_velocity() @@ -228,62 +323,62 @@ minetest.register_globalstep(function(dtime) -- controls right and left arms pitch when shooting a bow if string.find(wielded:get_name(), "mcl_bows:bow") and control.RMB then - player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch+90,-30,pitch * -1 * .35)) - player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3.5,5.785,0), vector.new(pitch+90,43,pitch * .35)) + set_bone_position_conditional(player,"Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch+90,-30,pitch * -1 * .35)) + set_bone_position_conditional(player,"Arm_Left_Pitch_Control", vector.new(3.5,5.785,0), vector.new(pitch+90,43,pitch * .35)) -- controls right and left arms pitch when holing a loaded crossbow elseif string.find(wielded:get_name(), "mcl_bows:crossbow_loaded") then - player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch+90,-30,pitch * -1 * .35)) - player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3.5,5.785,0), vector.new(pitch+90,43,pitch * .35)) + set_bone_position_conditional(player,"Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch+90,-30,pitch * -1 * .35)) + set_bone_position_conditional(player,"Arm_Left_Pitch_Control", vector.new(3.5,5.785,0), vector.new(pitch+90,43,pitch * .35)) -- controls right and left arms pitch when loading a crossbow elseif string.find(wielded:get_name(), "mcl_bows:crossbow_") then - player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(45,-20,25)) - player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3,5.785,0), vector.new(55,20,-45)) + set_bone_position_conditional(player,"Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(45,-20,25)) + set_bone_position_conditional(player,"Arm_Left_Pitch_Control", vector.new(3,5.785,0), vector.new(55,20,-45)) -- when punching elseif control.LMB and not parent then - player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch,0,0)) - player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3,5.785,0), vector.new(0,0,0)) + set_bone_position_conditional(player,"Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch,0,0)) + set_bone_position_conditional(player,"Arm_Left_Pitch_Control", vector.new(3,5.785,0), vector.new(0,0,0)) -- when holding an item. elseif wielded:get_name() ~= "" then - player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(20,0,0)) - player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3,5.785,0), vector.new(0,0,0)) + set_bone_position_conditional(player,"Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(20,0,0)) + set_bone_position_conditional(player,"Arm_Left_Pitch_Control", vector.new(3,5.785,0), vector.new(0,0,0)) -- resets arms pitch else - player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3,5.785,0), vector.new(0,0,0)) - player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(0,0,0)) + set_bone_position_conditional(player,"Arm_Left_Pitch_Control", vector.new(3,5.785,0), vector.new(0,0,0)) + set_bone_position_conditional(player,"Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(0,0,0)) end if elytra.active then -- set head pitch and yaw when flying - player:set_bone_position("Head_Control", vector.new(0,6.3,0), vector.new(pitch-degrees(dir_to_pitch(player_velocity)),player_vel_yaw - yaw,0)) + set_bone_position_conditional(player,"Head_Control", vector.new(0,6.3,0), vector.new(pitch-degrees(dir_to_pitch(player_velocity)),player_vel_yaw - yaw,0)) -- sets eye height, and nametag color accordingly - player:set_properties({collisionbox = {-0.35,0,-0.35,0.35,0.8,0.35}, eye_height = 0.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }}) + set_properties_conditional(player,{collisionbox = {-0.35,0,-0.35,0.35,0.8,0.35}, eye_height = 0.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }}) -- control body bone when flying - player:set_bone_position("Body_Control", vector.new(0,6.3,0), vector.new(degrees(dir_to_pitch(player_velocity)) - 90,-player_vel_yaw + yaw + 180,0)) + set_bone_position_conditional(player,"Body_Control", vector.new(0,6.3,0), vector.new(degrees(dir_to_pitch(player_velocity)) - 90,-player_vel_yaw + yaw + 180,0)) elseif parent then local parent_yaw = degrees(parent:get_yaw()) - player:set_properties({collisionbox = {-0.312,0,-0.312,0.312,1.8,0.312}, eye_height = 1.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }}) - player:set_bone_position("Head_Control", vector.new(0,6.3,0), vector.new(pitch, -limit_vel_yaw(yaw, parent_yaw) + parent_yaw, 0)) - player:set_bone_position("Body_Control", vector.new(0,6.3,0), vector.new(0,0,0)) + set_properties_conditional(player,{collisionbox = {-0.312,0,-0.312,0.312,1.8,0.312}, eye_height = 1.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }}) + set_bone_position_conditional(player,"Head_Control", vector.new(0,6.3,0), vector.new(pitch, -limit_vel_yaw(yaw, parent_yaw) + parent_yaw, 0)) + set_bone_position_conditional(player,"Body_Control", vector.new(0,6.3,0), vector.new(0,0,0)) elseif control.sneak then -- controls head pitch when sneaking - player:set_bone_position("Head_Control", vector.new(0,6.3,0), vector.new(pitch, player_vel_yaw - yaw, player_vel_yaw - yaw)) + set_bone_position_conditional(player,"Head_Control", vector.new(0,6.3,0), vector.new(pitch, player_vel_yaw - yaw, player_vel_yaw - yaw)) -- sets eye height, and nametag color accordingly - player:set_properties({collisionbox = {-0.312,0,-0.312,0.312,1.8,0.312}, eye_height = 1.35, nametag_color = { r = 225, b = 225, a = 0, g = 225 }}) + set_properties_conditional(player,{collisionbox = {-0.312,0,-0.312,0.312,1.8,0.312}, eye_height = 1.35, nametag_color = { r = 225, b = 225, a = 0, g = 225 }}) -- sneaking body conrols - player:set_bone_position("Body_Control", vector.new(0,6.3,0), vector.new(0, -player_vel_yaw + yaw, 0)) + set_bone_position_conditional(player,"Body_Control", vector.new(0,6.3,0), vector.new(0, -player_vel_yaw + yaw, 0)) elseif get_item_group(mcl_playerinfo[name].node_head, "water") ~= 0 and is_sprinting(name) == true then -- set head pitch and yaw when swimming - player:set_bone_position("Head_Control", vector.new(0,6.3,0), vector.new(pitch-degrees(dir_to_pitch(player_velocity)),player_vel_yaw - yaw,0)) + set_bone_position_conditional(player,"Head_Control", vector.new(0,6.3,0), vector.new(pitch-degrees(dir_to_pitch(player_velocity)),player_vel_yaw - yaw,0)) -- sets eye height, and nametag color accordingly - player:set_properties({collisionbox = {-0.312,0,-0.312,0.312,0.8,0.312}, eye_height = 0.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }}) + set_properties_conditional(player,{collisionbox = {-0.312,0,-0.312,0.312,0.8,0.312}, eye_height = 0.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }}) -- control body bone when swimming - player:set_bone_position("Body_Control", vector.new(0,6.3,0), vector.new(degrees(dir_to_pitch(player_velocity)) - 90,-player_vel_yaw + yaw + 180,0)) + set_bone_position_conditional(player,"Body_Control", vector.new(0,6.3,0), vector.new(degrees(dir_to_pitch(player_velocity)) - 90,-player_vel_yaw + yaw + 180,0)) else -- sets eye height, and nametag color accordingly - player:set_properties({collisionbox = {-0.312,0,-0.312,0.312,1.8,0.312}, eye_height = 1.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }}) + set_properties_conditional(player,{collisionbox = {-0.312,0,-0.312,0.312,1.8,0.312}, eye_height = 1.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }}) - player:set_bone_position("Head_Control", vector.new(0,6.3,0), vector.new(pitch, player_vel_yaw - yaw, 0)) - player:set_bone_position("Body_Control", vector.new(0,6.3,0), vector.new(0, -player_vel_yaw + yaw, 0)) + set_bone_position_conditional(player,"Head_Control", vector.new(0,6.3,0), vector.new(pitch, player_vel_yaw - yaw, 0)) + set_bone_position_conditional(player,"Body_Control", vector.new(0,6.3,0), vector.new(0, -player_vel_yaw + yaw, 0)) end -- Update jump status immediately since we need this info in real time. From 80fb59f9ac37b359c0b667af03e16d20d1645e0d Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 20 Jan 2022 09:22:17 +0100 Subject: [PATCH 516/720] add barrel --- mods/CORE/mcl_util/init.lua | 19 +++ mods/ITEMS/mcl_barrels/init.lua | 141 ++++++++++++++++++ .../mcl_barrels/locale/mcl_barrels.de.tr | 1 + .../mcl_barrels/locale/mcl_barrels.es.tr | 1 + .../mcl_barrels/locale/mcl_barrels.fr.tr | 1 + .../mcl_barrels/locale/mcl_barrels.pl.tr | 1 + .../mcl_barrels/locale/mcl_barrels.ru.tr | 1 + mods/ITEMS/mcl_barrels/locale/template.txt | 1 + mods/ITEMS/mcl_barrels/mod.conf | 3 + .../textures/mcl_barrels_barrel_bottom.png | Bin 0 -> 542 bytes .../textures/mcl_barrels_barrel_side.png | Bin 0 -> 499 bytes .../textures/mcl_barrels_barrel_top.png | Bin 0 -> 566 bytes .../textures/mcl_barrels_barrel_top_open.png | Bin 0 -> 421 bytes mods/ITEMS/mcl_chests/init.lua | 17 +-- mods/ITEMS/mcl_core/nodes_trees.lua | 1 - 15 files changed, 170 insertions(+), 17 deletions(-) create mode 100644 mods/ITEMS/mcl_barrels/init.lua create mode 100644 mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr create mode 100644 mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr create mode 100644 mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr create mode 100644 mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr create mode 100644 mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr create mode 100644 mods/ITEMS/mcl_barrels/locale/template.txt create mode 100644 mods/ITEMS/mcl_barrels/mod.conf create mode 100755 mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_bottom.png create mode 100755 mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_side.png create mode 100755 mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_top.png create mode 100755 mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_top_open.png diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index 9be40a1e4..a9e8e7319 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -357,6 +357,25 @@ function mcl_util.get_first_occupied_inventory_slot(inventory, listname) return mcl_util.get_eligible_transfer_item_slot(inventory, listname) end +function mcl_util.drop_items_container_get(listname) + return function(pos, oldnode, oldmetadata) + local meta = minetest.get_meta(pos) + local meta2 = meta:to_table() + if oldmetadata then + meta:from_table(oldmetadata) + end + local inv = meta:get_inventory() + for i = 1, inv:get_size(listname) do + local stack = inv:get_stack(listname, i) + if not stack:is_empty() then + local p = vector.add(pos, vector.new(math.random(0, 10)/10 - 0.5, 0, math.random(0, 10)/10 - 0.5)) + minetest.add_item(p, stack) + end + end + meta:from_table(meta2) + end +end + -- Returns true if item (itemstring or ItemStack) can be used as a furnace fuel. -- Returns false otherwise function mcl_util.is_fuel(item) diff --git a/mods/ITEMS/mcl_barrels/init.lua b/mods/ITEMS/mcl_barrels/init.lua new file mode 100644 index 000000000..cec2f46d0 --- /dev/null +++ b/mods/ITEMS/mcl_barrels/init.lua @@ -0,0 +1,141 @@ +local S = minetest.get_translator("mcl_barrels") +local F = minetest.formspec_escape +local C = minetest.colorize + +--TODO: add craft +--TODO: add french translation +--TODO: complete ingame help and tooltips +--TODO: fix barrel rotation placement + +local open_barrels = {} + +local drop_content = mcl_util.drop_items_container_get("main") + +local function on_blast(pos) + local node = minetest.get_node(pos) + drop_content(pos, node) + minetest.remove_node(pos) +end + +local function barrel_open(pos, node, clicker) + local name = minetest.get_meta(pos):get_string("name") + + if name == "" then + name = S("Barrel") + end + + local playername = clicker:get_player_name() + + minetest.show_formspec(playername, + "mcl_barrels:barrel_"..pos.x.."_"..pos.y.."_"..pos.z, + table.concat({ + "size[9,8.75]", + "label[0,0;"..F(C("#313131", name)).."]", + "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]", + mcl_formspec.get_itemslot_bg(0, 0.5, 9, 3), + "label[0,4.0;"..F(C("#313131", S("Inventory"))).."]", + "list[current_player;main;0,4.5;9,3;9]", + mcl_formspec.get_itemslot_bg(0, 4.5, 9, 3), + "list[current_player;main;0,7.74;9,1;]", + mcl_formspec.get_itemslot_bg(0, 7.74, 9, 1), + "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]", + "listring[current_player;main]", + }) + ) + + minetest.swap_node(pos, { name = "mcl_barrels:barrel_open", param2 = node.param2 }) + open_barrels[playername] = pos +end + +local function close_forms(pos) + local players = minetest.get_connected_players() + local formname = "mcl_barrels:barrel_"..pos.x.."_"..pos.y.."_"..pos.z + for p = 1, #players do + if vector.distance(players[p]:get_pos(), pos) <= 30 then + minetest.close_formspec(players[p]:get_player_name(), formname) + end + end +end + +local function update_after_close(pos) + local node = minetest.get_node_or_nil(pos) + if not node then return end + if node.name == "mcl_barrels:barrel_open" then + minetest.swap_node(pos, {name = "mcl_barrels:barrel_closed", param2 = node.param2}) + end +end + +local function close_barrel(player) + local name = player:get_player_name() + local open = open_barrels[name] + if open == nil then + return + end + + update_after_close(open) + + open_barrels[name] = nil +end + +minetest.register_node("mcl_barrels:barrel_closed", { + description = S("Barrel"), + --_tt_help = tt_help, + --_doc_items_longdesc = longdesc, + --_doc_items_usagehelp = usagehelp, + tiles = {"mcl_barrels_barrel_top.png", "mcl_barrels_barrel_bottom.png", "mcl_barrels_barrel_side.png"}, + paramtype = "light", + paramtype2 = "facedir", + --on_place = mcl_util.rotate_axis, + on_place = function(itemstack, placer, pointed_thing) + minetest.rotate_and_place(itemstack, placer, pointed_thing, minetest.is_creative_enabled(placer:get_player_name()), {}, false) + return itemstack + end, + stack_max = 64, + sounds = mcl_sounds.node_sound_wood_defaults(), + groups = {handy = 1, axey = 1, container = 2, material_wood = 1, flammable = -1, deco_block = 1}, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("main", 9*3) + end, + after_place_node = function(pos, placer, itemstack, pointed_thing) + minetest.get_meta(pos):set_string("name", itemstack:get_meta():get_string("name")) + end, + after_dig_node = drop_content, + on_blast = on_blast, + on_rightclick = barrel_open, + on_destruct = close_forms, + _mcl_blast_resistance = 2.5, + _mcl_hardness = 2.5, +}) + +minetest.register_node("mcl_barrels:barrel_open", { + description = S("Barrel Open"), + --_tt_help = tt_help, + --_doc_items_longdesc = longdesc, + --_doc_items_usagehelp = usagehelp, + _doc_items_create_entry = false, + tiles = {"mcl_barrels_barrel_top_open.png", "mcl_barrels_barrel_bottom.png", "mcl_barrels_barrel_side.png"}, + paramtype = "light", + paramtype2 = "facedir", + drop = "mcl_barrels:barrel_closed", + stack_max = 64, + sounds = mcl_sounds.node_sound_wood_defaults(), + groups = {handy = 1, axey = 1, container = 2, material_wood = 1, flammable = -1, deco_block = 1, not_in_creative_inventory = 1}, + after_dig_node = drop_content, + on_blast = on_blast, + on_rightclick = barrel_open, + on_destruct = close_forms, + _mcl_blast_resistance = 2.5, + _mcl_hardness = 2.5, +}) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname:find("mcl_barrels:") == 1 and fields.quit then + close_barrel(player) + end +end) + +minetest.register_on_leaveplayer(function(player) + close_barrel(player) +end) \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr new file mode 100644 index 000000000..9d12a17cd --- /dev/null +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr @@ -0,0 +1 @@ +# textdomain: mcl_barrels \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr new file mode 100644 index 000000000..9d12a17cd --- /dev/null +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr @@ -0,0 +1 @@ +# textdomain: mcl_barrels \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr new file mode 100644 index 000000000..9d12a17cd --- /dev/null +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr @@ -0,0 +1 @@ +# textdomain: mcl_barrels \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr new file mode 100644 index 000000000..9d12a17cd --- /dev/null +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr @@ -0,0 +1 @@ +# textdomain: mcl_barrels \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr new file mode 100644 index 000000000..9d12a17cd --- /dev/null +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr @@ -0,0 +1 @@ +# textdomain: mcl_barrels \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/template.txt b/mods/ITEMS/mcl_barrels/locale/template.txt new file mode 100644 index 000000000..9d12a17cd --- /dev/null +++ b/mods/ITEMS/mcl_barrels/locale/template.txt @@ -0,0 +1 @@ +# textdomain: mcl_barrels \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/mod.conf b/mods/ITEMS/mcl_barrels/mod.conf new file mode 100644 index 000000000..2b0088b79 --- /dev/null +++ b/mods/ITEMS/mcl_barrels/mod.conf @@ -0,0 +1,3 @@ +name = mcl_barrels +depends = mcl_util, mcl_formspec, mcl_sounds +author = AFCMS \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_bottom.png b/mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_bottom.png new file mode 100755 index 0000000000000000000000000000000000000000..9c5788061835706c6f4045a97ef519f3741ad999 GIT binary patch literal 542 zcmV+(0^$9MP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qRNAp5A0000XbVXQnLvm$dbZKvHAXI5>WdJfTF*7U;qFCU`a$lR5(v{l0Q$wFc8Jb#f@E&G&D_G3azNRFd#9o zFfg#NG4cIB07wX^}$@QE?LY4_>tYMrO< zbeKWYe)8t)=;{6jQPX@K?a;OxthGt-19h%PE=hWV8bYS?YQVv4Qs6+Bvl2QU4XTqA z0WvDfy6(~ticOu>WH?xkl%lgH#-TBxQKBIra|!-tyH!fl>HuVFg|W1j9w>;!YMnp< zVxd1Jnj=iFprG!nk65&UkmEn7tQ(p;Ce$~-HyH3|!EWexU*l0hbA$^3S~iSFa5prs z26*ATspgWm@B{~|5Xe|&LPvdpVoL>ALx_1R9#yk}%F8L|@@xtx!k gHG^YoB=$}F1C39vlPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jUA5 z5Ge)$lJ5xs00DDJL_t(I%gvKZZxb;Tg}+W`JRad8G^0qV3SvV+ND(aA^#A_=wyOmKD+t)@o}OgsuFa@qbkAe>Yh*UW-MFH{Gw)~ z4XeA3iITXmr>QGCUsG43SQamx85eD|;a{=TK3gmnj{sHG zGfOD}P)d!9x()zqEda*!4f1%2XC!OemSdzj5&5M$=W6zvwKg<$h2K4(t>gXd4a-(@ zecABi_nK{I`Sy9vuhkt*U9r}N?e=f4f!{q)%MvBalMdQ?<`?x~ALnJyi4FiC!n68$ zPA$bjn}TJldp!=hBZ3sx?glb#Jue}1&LfJ9GCw~FrlUvF6N0i7!@F*@!G%3i7Q^W2 z$S&*=#dzrdU=OCnp2_6Zu;=lUeED$2MjNJw-T(gcmg~1ud$n#N$ pREwy?iHOIDzH}$bQVez~Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jUA5 z5Go^KyJ(F700Fj1L_t(I%Y~E8Zqq;%g})|a&sgyg<4_7xMJ2YZV8fCPFTl(4AQ3y* zpte%l$ZnExH9t;M7LMIGb;a3?d}cgz&$;KGeE<6CQ7cKV6G~%=qY;I%T%2Z<#&*1M z9<3xTa-HyZx#HxxAX1>WEw?0B99=KN%N#+^@@9 zoU57X1W_6bfD~iGcFW?<@b0z7xIk$vVY}@vTI^RT#-Je7J476f@IDY{DY;I1FAr7G zK6qPfnhJ_NadlH-++V;xuEvzUTZb@0BalF|iN;9WT>yvzaQ^m1|6_ zoM$?nbmjk?Ujp#?Lq@7(PsX7fzkMLr2_jXJ>*a>UonZlF*(+A74V4X4Hgv|d)x^=L zlT#Y|)P-0Ga-EPmPx|(ZmryxRsCSL=(FkFj$NRw5P04Z<|2II-Oq}V2_4=NV=WlqQ zHT@sbecaCZpXQL70(Y)*K0-AbW|YuPggwCIK!T=@W7fo&!x$^>lFzu{b?9 z*w+8Bfk5rnr2CO)HA5Gj`^%W4)1&i;@!$U=F{)Zc6W&H-Nghz-Y;?L`_Wbv!z16dq zx9{#YSSZ$gu2N#{1*`tUb?xVVUVQJ=VxYKKtb6)n&e_k8|L*1%R8-M9xMu&)BALx? z1`AgleN^#^k-?B}^Mj>x9a99HoRq~}pa01!xZgfAcAAZLOlUOE%br6SrrvRCdVhCb zc>P*hYGc6L=PcV7l*+x@a6k6#J~PgVjRuZi6&J1A_W#|vHG$o&S~J5m_p}KJSv_C4 zOS)X(F~effDcprAiC$OzXB^vd&e=36Kh1H*g0_-*x*K&WOD8Rze`0~y@6uB)X=MTX zYuisSFjzge_nR51++t$)XR6y`(Jr0KZaQrxa;a8ZH_zF8WVv?@yV=xff0);(>;Q%# NgQu&X%Q~loCIAn3txf;{ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index ad5c781f7..aba91fe87 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -291,22 +291,7 @@ local function register_chest(basename, desc, longdesc, usagehelp, tt_help, tile end end - local function drop_items_chest(pos, oldnode, oldmetadata) - local meta = minetest.get_meta(pos) - local meta2 = meta:to_table() - if oldmetadata then - meta:from_table(oldmetadata) - end - local inv = meta:get_inventory() - for i=1,inv:get_size("main") do - local stack = inv:get_stack("main", i) - if not stack:is_empty() then - local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} - minetest.add_item(p, stack) - end - end - meta:from_table(meta2) - end + local drop_items_chest = mcl_util.drop_items_container_get("main") local function on_chest_blast(pos) local node = minetest.get_node(pos) diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua index a5ef7aa97..36ef28dc1 100644 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ b/mods/ITEMS/mcl_core/nodes_trees.lua @@ -16,7 +16,6 @@ local function register_tree_trunk(subname, description_trunk, description_bark, _doc_items_hidden = false, tiles = {tile_inner, tile_inner, tile_bark}, paramtype2 = "facedir", - on_place = mcl_util.rotate_axis, stack_max = 64, groups = {handy=1,axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, sounds = mcl_sounds.node_sound_wood_defaults(), From d41a83651464942a43b1df7fc701a31ba4b4125d Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 20 Jan 2022 09:40:15 +0100 Subject: [PATCH 517/720] add craft --- mods/ITEMS/mcl_barrels/init.lua | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_barrels/init.lua b/mods/ITEMS/mcl_barrels/init.lua index cec2f46d0..f634c5246 100644 --- a/mods/ITEMS/mcl_barrels/init.lua +++ b/mods/ITEMS/mcl_barrels/init.lua @@ -138,4 +138,14 @@ end) minetest.register_on_leaveplayer(function(player) close_barrel(player) -end) \ No newline at end of file +end) + +--Minecraft Java Edition craft +minetest.register_craft({ + output = "mcl_barrels:barrel_closed", + recipe = { + {"group:wood", "group:wood_slab", "group:wood"}, + {"group:wood", "", "group:wood"}, + {"group:wood", "group:wood_slab", "group:wood"}, + } +}) \ No newline at end of file From 34b445b04a540656ba8a10cf0789ecaaa9637fa9 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 20 Jan 2022 09:51:29 +0100 Subject: [PATCH 518/720] fixes --- mods/ITEMS/mcl_barrels/init.lua | 1 - mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr | 3 ++- mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr | 3 ++- mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr | 3 ++- mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr | 3 ++- mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr | 3 ++- mods/ITEMS/mcl_barrels/locale/template.txt | 3 ++- 7 files changed, 12 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_barrels/init.lua b/mods/ITEMS/mcl_barrels/init.lua index f634c5246..f918996dd 100644 --- a/mods/ITEMS/mcl_barrels/init.lua +++ b/mods/ITEMS/mcl_barrels/init.lua @@ -2,7 +2,6 @@ local S = minetest.get_translator("mcl_barrels") local F = minetest.formspec_escape local C = minetest.colorize ---TODO: add craft --TODO: add french translation --TODO: complete ingame help and tooltips --TODO: fix barrel rotation placement diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr index 9d12a17cd..aa73208a6 100644 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr @@ -1 +1,2 @@ -# textdomain: mcl_barrels \ No newline at end of file +# textdomain: mcl_barrels +Barrel= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr index 9d12a17cd..aa73208a6 100644 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr @@ -1 +1,2 @@ -# textdomain: mcl_barrels \ No newline at end of file +# textdomain: mcl_barrels +Barrel= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr index 9d12a17cd..7cad1e130 100644 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr @@ -1 +1,2 @@ -# textdomain: mcl_barrels \ No newline at end of file +# textdomain: mcl_barrels +Barrel=Tonneau \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr index 9d12a17cd..aa73208a6 100644 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr @@ -1 +1,2 @@ -# textdomain: mcl_barrels \ No newline at end of file +# textdomain: mcl_barrels +Barrel= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr index 9d12a17cd..aa73208a6 100644 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr @@ -1 +1,2 @@ -# textdomain: mcl_barrels \ No newline at end of file +# textdomain: mcl_barrels +Barrel= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/template.txt b/mods/ITEMS/mcl_barrels/locale/template.txt index 9d12a17cd..aa73208a6 100644 --- a/mods/ITEMS/mcl_barrels/locale/template.txt +++ b/mods/ITEMS/mcl_barrels/locale/template.txt @@ -1 +1,2 @@ -# textdomain: mcl_barrels \ No newline at end of file +# textdomain: mcl_barrels +Barrel= \ No newline at end of file From e3e06b4a4bc01410e31ad1c6c5b0731b9e75f865 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 Jan 2022 14:59:15 +0100 Subject: [PATCH 519/720] fix broken tree placement --- mods/ITEMS/mcl_core/nodes_trees.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua index 36ef28dc1..a5ef7aa97 100644 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ b/mods/ITEMS/mcl_core/nodes_trees.lua @@ -16,6 +16,7 @@ local function register_tree_trunk(subname, description_trunk, description_bark, _doc_items_hidden = false, tiles = {tile_inner, tile_inner, tile_bark}, paramtype2 = "facedir", + on_place = mcl_util.rotate_axis, stack_max = 64, groups = {handy=1,axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, sounds = mcl_sounds.node_sound_wood_defaults(), From b88060dbfbb3cab1a594e0637264e129f6fa02cb Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 6 Feb 2022 19:04:13 +0100 Subject: [PATCH 520/720] add doc description to barrels --- mods/ITEMS/mcl_barrels/init.lua | 10 ++++------ mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr | 4 +++- mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr | 4 +++- mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr | 4 +++- mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr | 4 +++- mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr | 4 +++- mods/ITEMS/mcl_barrels/locale/template.txt | 4 +++- 7 files changed, 22 insertions(+), 12 deletions(-) diff --git a/mods/ITEMS/mcl_barrels/init.lua b/mods/ITEMS/mcl_barrels/init.lua index f918996dd..ac54497de 100644 --- a/mods/ITEMS/mcl_barrels/init.lua +++ b/mods/ITEMS/mcl_barrels/init.lua @@ -78,9 +78,8 @@ end minetest.register_node("mcl_barrels:barrel_closed", { description = S("Barrel"), - --_tt_help = tt_help, - --_doc_items_longdesc = longdesc, - --_doc_items_usagehelp = usagehelp, + _doc_items_longdesc = S("Barrels are containers which provide 27 inventory slots."), + _doc_items_usagehelp = S("To access its inventory, rightclick it. When broken, the items will drop out."), tiles = {"mcl_barrels_barrel_top.png", "mcl_barrels_barrel_bottom.png", "mcl_barrels_barrel_side.png"}, paramtype = "light", paramtype2 = "facedir", @@ -110,9 +109,8 @@ minetest.register_node("mcl_barrels:barrel_closed", { minetest.register_node("mcl_barrels:barrel_open", { description = S("Barrel Open"), - --_tt_help = tt_help, - --_doc_items_longdesc = longdesc, - --_doc_items_usagehelp = usagehelp, + _doc_items_longdesc = S("Barrels are containers which provide 27 inventory slots."), + _doc_items_usagehelp = S("To access its inventory, rightclick it. When broken, the items will drop out."), _doc_items_create_entry = false, tiles = {"mcl_barrels_barrel_top_open.png", "mcl_barrels_barrel_bottom.png", "mcl_barrels_barrel_side.png"}, paramtype = "light", diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr index aa73208a6..2b85d7161 100644 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr @@ -1,2 +1,4 @@ # textdomain: mcl_barrels -Barrel= \ No newline at end of file +Barrel= +Barrels are containers which provide 27 inventory slots.= +To access its inventory, rightclick it. When broken, the items will drop out.= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr index aa73208a6..2b85d7161 100644 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr @@ -1,2 +1,4 @@ # textdomain: mcl_barrels -Barrel= \ No newline at end of file +Barrel= +Barrels are containers which provide 27 inventory slots.= +To access its inventory, rightclick it. When broken, the items will drop out.= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr index 7cad1e130..408a66c4d 100644 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr @@ -1,2 +1,4 @@ # textdomain: mcl_barrels -Barrel=Tonneau \ No newline at end of file +Barrel=Tonneau +Barrels are containers which provide 27 inventory slots.=Les tonneaux sont des conteneurs qui offrent 27 emplacements d'inventaire. +To access its inventory, rightclick it. When broken, the items will drop out.=Pour accéder à son inventaire, faites un clic droit dessus. Une fois cassés, les articles tomberont. \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr index aa73208a6..2b85d7161 100644 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr @@ -1,2 +1,4 @@ # textdomain: mcl_barrels -Barrel= \ No newline at end of file +Barrel= +Barrels are containers which provide 27 inventory slots.= +To access its inventory, rightclick it. When broken, the items will drop out.= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr index aa73208a6..2b85d7161 100644 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr @@ -1,2 +1,4 @@ # textdomain: mcl_barrels -Barrel= \ No newline at end of file +Barrel= +Barrels are containers which provide 27 inventory slots.= +To access its inventory, rightclick it. When broken, the items will drop out.= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/template.txt b/mods/ITEMS/mcl_barrels/locale/template.txt index aa73208a6..2b85d7161 100644 --- a/mods/ITEMS/mcl_barrels/locale/template.txt +++ b/mods/ITEMS/mcl_barrels/locale/template.txt @@ -1,2 +1,4 @@ # textdomain: mcl_barrels -Barrel= \ No newline at end of file +Barrel= +Barrels are containers which provide 27 inventory slots.= +To access its inventory, rightclick it. When broken, the items will drop out.= \ No newline at end of file From 0988637ea1f3bacde4c0ced53889fa4a5248cdc9 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 6 Feb 2022 22:55:09 +0100 Subject: [PATCH 521/720] add barrel tooltip help text --- mods/ITEMS/mcl_barrels/init.lua | 2 ++ mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr | 3 ++- mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr | 3 ++- mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr | 3 ++- mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr | 3 ++- mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr | 3 ++- mods/ITEMS/mcl_barrels/locale/template.txt | 3 ++- 7 files changed, 14 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_barrels/init.lua b/mods/ITEMS/mcl_barrels/init.lua index ac54497de..d30b4e0e0 100644 --- a/mods/ITEMS/mcl_barrels/init.lua +++ b/mods/ITEMS/mcl_barrels/init.lua @@ -78,6 +78,7 @@ end minetest.register_node("mcl_barrels:barrel_closed", { description = S("Barrel"), + _tt_help = S("27 inventory slots"), _doc_items_longdesc = S("Barrels are containers which provide 27 inventory slots."), _doc_items_usagehelp = S("To access its inventory, rightclick it. When broken, the items will drop out."), tiles = {"mcl_barrels_barrel_top.png", "mcl_barrels_barrel_bottom.png", "mcl_barrels_barrel_side.png"}, @@ -109,6 +110,7 @@ minetest.register_node("mcl_barrels:barrel_closed", { minetest.register_node("mcl_barrels:barrel_open", { description = S("Barrel Open"), + _tt_help = S("27 inventory slots"), _doc_items_longdesc = S("Barrels are containers which provide 27 inventory slots."), _doc_items_usagehelp = S("To access its inventory, rightclick it. When broken, the items will drop out."), _doc_items_create_entry = false, diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr index 2b85d7161..e1fa1b603 100644 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr @@ -1,4 +1,5 @@ # textdomain: mcl_barrels Barrel= Barrels are containers which provide 27 inventory slots.= -To access its inventory, rightclick it. When broken, the items will drop out.= \ No newline at end of file +To access its inventory, rightclick it. When broken, the items will drop out.= +27 inventory slots= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr index 2b85d7161..e1fa1b603 100644 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr @@ -1,4 +1,5 @@ # textdomain: mcl_barrels Barrel= Barrels are containers which provide 27 inventory slots.= -To access its inventory, rightclick it. When broken, the items will drop out.= \ No newline at end of file +To access its inventory, rightclick it. When broken, the items will drop out.= +27 inventory slots= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr index 408a66c4d..0e93d1ee5 100644 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr @@ -1,4 +1,5 @@ # textdomain: mcl_barrels Barrel=Tonneau Barrels are containers which provide 27 inventory slots.=Les tonneaux sont des conteneurs qui offrent 27 emplacements d'inventaire. -To access its inventory, rightclick it. When broken, the items will drop out.=Pour accéder à son inventaire, faites un clic droit dessus. Une fois cassés, les articles tomberont. \ No newline at end of file +To access its inventory, rightclick it. When broken, the items will drop out.=Pour accéder à son inventaire, faites un clic droit dessus. Une fois cassés, les articles tomberont. +27 inventory slots=27 emplacements d'inventaire \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr index 2b85d7161..e1fa1b603 100644 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr @@ -1,4 +1,5 @@ # textdomain: mcl_barrels Barrel= Barrels are containers which provide 27 inventory slots.= -To access its inventory, rightclick it. When broken, the items will drop out.= \ No newline at end of file +To access its inventory, rightclick it. When broken, the items will drop out.= +27 inventory slots= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr index 2b85d7161..e1fa1b603 100644 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr @@ -1,4 +1,5 @@ # textdomain: mcl_barrels Barrel= Barrels are containers which provide 27 inventory slots.= -To access its inventory, rightclick it. When broken, the items will drop out.= \ No newline at end of file +To access its inventory, rightclick it. When broken, the items will drop out.= +27 inventory slots= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/template.txt b/mods/ITEMS/mcl_barrels/locale/template.txt index 2b85d7161..e1fa1b603 100644 --- a/mods/ITEMS/mcl_barrels/locale/template.txt +++ b/mods/ITEMS/mcl_barrels/locale/template.txt @@ -1,4 +1,5 @@ # textdomain: mcl_barrels Barrel= Barrels are containers which provide 27 inventory slots.= -To access its inventory, rightclick it. When broken, the items will drop out.= \ No newline at end of file +To access its inventory, rightclick it. When broken, the items will drop out.= +27 inventory slots= \ No newline at end of file From 61e54ed617d23c6ac677afd352b774327ffe292c Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 7 Feb 2022 08:47:41 +0100 Subject: [PATCH 522/720] rename `mcl_util.drop_items_container_get` to `drop_items_from_meta_container` --- mods/CORE/mcl_util/init.lua | 2 +- mods/ITEMS/mcl_barrels/init.lua | 2 +- mods/ITEMS/mcl_chests/init.lua | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index a9e8e7319..12645bbfa 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -357,7 +357,7 @@ function mcl_util.get_first_occupied_inventory_slot(inventory, listname) return mcl_util.get_eligible_transfer_item_slot(inventory, listname) end -function mcl_util.drop_items_container_get(listname) +function mcl_util.drop_items_from_meta_container(listname) return function(pos, oldnode, oldmetadata) local meta = minetest.get_meta(pos) local meta2 = meta:to_table() diff --git a/mods/ITEMS/mcl_barrels/init.lua b/mods/ITEMS/mcl_barrels/init.lua index d30b4e0e0..6304108ab 100644 --- a/mods/ITEMS/mcl_barrels/init.lua +++ b/mods/ITEMS/mcl_barrels/init.lua @@ -8,7 +8,7 @@ local C = minetest.colorize local open_barrels = {} -local drop_content = mcl_util.drop_items_container_get("main") +local drop_content = mcl_util.drop_items_from_meta_container("main") local function on_blast(pos) local node = minetest.get_node(pos) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index aba91fe87..35712dfd1 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -291,7 +291,7 @@ local function register_chest(basename, desc, longdesc, usagehelp, tt_help, tile end end - local drop_items_chest = mcl_util.drop_items_container_get("main") + local drop_items_chest = mcl_util.drop_items_from_meta_container("main") local function on_chest_blast(pos) local node = minetest.get_node(pos) From c64d0e4558612fd19e539dfd2b9555060809045e Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 7 Feb 2022 09:33:00 +0100 Subject: [PATCH 523/720] simplify random dropping position code --- mods/CORE/mcl_util/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index 12645bbfa..03f6106f2 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -368,7 +368,7 @@ function mcl_util.drop_items_from_meta_container(listname) for i = 1, inv:get_size(listname) do local stack = inv:get_stack(listname, i) if not stack:is_empty() then - local p = vector.add(pos, vector.new(math.random(0, 10)/10 - 0.5, 0, math.random(0, 10)/10 - 0.5)) + local p = vector.add(pos, vector.new(math.random() - 0.5, 0, math.random(0, 10)/10 - 0.5)) minetest.add_item(p, stack) end end From 397c243e89be1931cd067ff52c902569f6bbbafa Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 7 Feb 2022 15:56:48 +0100 Subject: [PATCH 524/720] cleanup barrel TODO list --- mods/ITEMS/mcl_barrels/init.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/mods/ITEMS/mcl_barrels/init.lua b/mods/ITEMS/mcl_barrels/init.lua index 6304108ab..4734087bd 100644 --- a/mods/ITEMS/mcl_barrels/init.lua +++ b/mods/ITEMS/mcl_barrels/init.lua @@ -2,8 +2,6 @@ local S = minetest.get_translator("mcl_barrels") local F = minetest.formspec_escape local C = minetest.colorize ---TODO: add french translation ---TODO: complete ingame help and tooltips --TODO: fix barrel rotation placement local open_barrels = {} From 9112915dddea946130356dfc0cc9acb2e17ae513 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 7 Feb 2022 20:40:20 +0100 Subject: [PATCH 525/720] fix barrel top texture rotation --- mods/ITEMS/mcl_barrels/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_barrels/init.lua b/mods/ITEMS/mcl_barrels/init.lua index 4734087bd..964f23fde 100644 --- a/mods/ITEMS/mcl_barrels/init.lua +++ b/mods/ITEMS/mcl_barrels/init.lua @@ -79,7 +79,7 @@ minetest.register_node("mcl_barrels:barrel_closed", { _tt_help = S("27 inventory slots"), _doc_items_longdesc = S("Barrels are containers which provide 27 inventory slots."), _doc_items_usagehelp = S("To access its inventory, rightclick it. When broken, the items will drop out."), - tiles = {"mcl_barrels_barrel_top.png", "mcl_barrels_barrel_bottom.png", "mcl_barrels_barrel_side.png"}, + tiles = {"mcl_barrels_barrel_top.png^[transformR270", "mcl_barrels_barrel_bottom.png", "mcl_barrels_barrel_side.png"}, paramtype = "light", paramtype2 = "facedir", --on_place = mcl_util.rotate_axis, From a272322cb5ec77d6e856e2034f407ea1c1d73438 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 22 Feb 2022 17:55:52 +0100 Subject: [PATCH 526/720] move barrels to mcl_chests --- .../mcl_barrels/locale/mcl_barrels.de.tr | 5 --- .../mcl_barrels/locale/mcl_barrels.es.tr | 5 --- .../mcl_barrels/locale/mcl_barrels.fr.tr | 5 --- .../mcl_barrels/locale/mcl_barrels.pl.tr | 5 --- .../mcl_barrels/locale/mcl_barrels.ru.tr | 5 --- mods/ITEMS/mcl_barrels/locale/template.txt | 5 --- mods/ITEMS/mcl_barrels/mod.conf | 3 -- .../init.lua => mcl_chests/barrel.lua} | 30 ++++++++---------- mods/ITEMS/mcl_chests/init.lua | 2 ++ mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr | 2 ++ mods/ITEMS/mcl_chests/locale/template.txt | 2 ++ .../textures/mcl_chests_barrel_bottom.png} | Bin .../textures/mcl_chests_barrel_side.png} | Bin .../textures/mcl_chests_barrel_top.png} | Bin .../textures/mcl_chests_barrel_top_open.png} | Bin 15 files changed, 20 insertions(+), 49 deletions(-) delete mode 100644 mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr delete mode 100644 mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr delete mode 100644 mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr delete mode 100644 mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr delete mode 100644 mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr delete mode 100644 mods/ITEMS/mcl_barrels/locale/template.txt delete mode 100644 mods/ITEMS/mcl_barrels/mod.conf rename mods/ITEMS/{mcl_barrels/init.lua => mcl_chests/barrel.lua} (81%) rename mods/ITEMS/{mcl_barrels/textures/mcl_barrels_barrel_bottom.png => mcl_chests/textures/mcl_chests_barrel_bottom.png} (100%) rename mods/ITEMS/{mcl_barrels/textures/mcl_barrels_barrel_side.png => mcl_chests/textures/mcl_chests_barrel_side.png} (100%) rename mods/ITEMS/{mcl_barrels/textures/mcl_barrels_barrel_top.png => mcl_chests/textures/mcl_chests_barrel_top.png} (100%) rename mods/ITEMS/{mcl_barrels/textures/mcl_barrels_barrel_top_open.png => mcl_chests/textures/mcl_chests_barrel_top_open.png} (100%) diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr deleted file mode 100644 index e1fa1b603..000000000 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr +++ /dev/null @@ -1,5 +0,0 @@ -# textdomain: mcl_barrels -Barrel= -Barrels are containers which provide 27 inventory slots.= -To access its inventory, rightclick it. When broken, the items will drop out.= -27 inventory slots= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr deleted file mode 100644 index e1fa1b603..000000000 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr +++ /dev/null @@ -1,5 +0,0 @@ -# textdomain: mcl_barrels -Barrel= -Barrels are containers which provide 27 inventory slots.= -To access its inventory, rightclick it. When broken, the items will drop out.= -27 inventory slots= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr deleted file mode 100644 index 0e93d1ee5..000000000 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr +++ /dev/null @@ -1,5 +0,0 @@ -# textdomain: mcl_barrels -Barrel=Tonneau -Barrels are containers which provide 27 inventory slots.=Les tonneaux sont des conteneurs qui offrent 27 emplacements d'inventaire. -To access its inventory, rightclick it. When broken, the items will drop out.=Pour accéder à son inventaire, faites un clic droit dessus. Une fois cassés, les articles tomberont. -27 inventory slots=27 emplacements d'inventaire \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr deleted file mode 100644 index e1fa1b603..000000000 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr +++ /dev/null @@ -1,5 +0,0 @@ -# textdomain: mcl_barrels -Barrel= -Barrels are containers which provide 27 inventory slots.= -To access its inventory, rightclick it. When broken, the items will drop out.= -27 inventory slots= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr deleted file mode 100644 index e1fa1b603..000000000 --- a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr +++ /dev/null @@ -1,5 +0,0 @@ -# textdomain: mcl_barrels -Barrel= -Barrels are containers which provide 27 inventory slots.= -To access its inventory, rightclick it. When broken, the items will drop out.= -27 inventory slots= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/template.txt b/mods/ITEMS/mcl_barrels/locale/template.txt deleted file mode 100644 index e1fa1b603..000000000 --- a/mods/ITEMS/mcl_barrels/locale/template.txt +++ /dev/null @@ -1,5 +0,0 @@ -# textdomain: mcl_barrels -Barrel= -Barrels are containers which provide 27 inventory slots.= -To access its inventory, rightclick it. When broken, the items will drop out.= -27 inventory slots= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/mod.conf b/mods/ITEMS/mcl_barrels/mod.conf deleted file mode 100644 index 2b0088b79..000000000 --- a/mods/ITEMS/mcl_barrels/mod.conf +++ /dev/null @@ -1,3 +0,0 @@ -name = mcl_barrels -depends = mcl_util, mcl_formspec, mcl_sounds -author = AFCMS \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/init.lua b/mods/ITEMS/mcl_chests/barrel.lua similarity index 81% rename from mods/ITEMS/mcl_barrels/init.lua rename to mods/ITEMS/mcl_chests/barrel.lua index 964f23fde..bc6216578 100644 --- a/mods/ITEMS/mcl_barrels/init.lua +++ b/mods/ITEMS/mcl_chests/barrel.lua @@ -1,9 +1,7 @@ -local S = minetest.get_translator("mcl_barrels") +local S = minetest.get_translator("mcl_chests") local F = minetest.formspec_escape local C = minetest.colorize ---TODO: fix barrel rotation placement - local open_barrels = {} local drop_content = mcl_util.drop_items_from_meta_container("main") @@ -24,7 +22,7 @@ local function barrel_open(pos, node, clicker) local playername = clicker:get_player_name() minetest.show_formspec(playername, - "mcl_barrels:barrel_"..pos.x.."_"..pos.y.."_"..pos.z, + "mcl_chests:barrel_"..pos.x.."_"..pos.y.."_"..pos.z, table.concat({ "size[9,8.75]", "label[0,0;"..F(C("#313131", name)).."]", @@ -40,13 +38,13 @@ local function barrel_open(pos, node, clicker) }) ) - minetest.swap_node(pos, { name = "mcl_barrels:barrel_open", param2 = node.param2 }) + minetest.swap_node(pos, { name = "mcl_chests:barrel_open", param2 = node.param2 }) open_barrels[playername] = pos end local function close_forms(pos) local players = minetest.get_connected_players() - local formname = "mcl_barrels:barrel_"..pos.x.."_"..pos.y.."_"..pos.z + local formname = "mcl_chests:barrel_"..pos.x.."_"..pos.y.."_"..pos.z for p = 1, #players do if vector.distance(players[p]:get_pos(), pos) <= 30 then minetest.close_formspec(players[p]:get_player_name(), formname) @@ -57,8 +55,8 @@ end local function update_after_close(pos) local node = minetest.get_node_or_nil(pos) if not node then return end - if node.name == "mcl_barrels:barrel_open" then - minetest.swap_node(pos, {name = "mcl_barrels:barrel_closed", param2 = node.param2}) + if node.name == "mcl_chests:barrel_open" then + minetest.swap_node(pos, {name = "mcl_chests:barrel_closed", param2 = node.param2}) end end @@ -74,12 +72,12 @@ local function close_barrel(player) open_barrels[name] = nil end -minetest.register_node("mcl_barrels:barrel_closed", { +minetest.register_node("mcl_chests:barrel_closed", { description = S("Barrel"), _tt_help = S("27 inventory slots"), _doc_items_longdesc = S("Barrels are containers which provide 27 inventory slots."), _doc_items_usagehelp = S("To access its inventory, rightclick it. When broken, the items will drop out."), - tiles = {"mcl_barrels_barrel_top.png^[transformR270", "mcl_barrels_barrel_bottom.png", "mcl_barrels_barrel_side.png"}, + tiles = {"mcl_chests_barrel_top.png^[transformR270", "mcl_chests_barrel_bottom.png", "mcl_chests_barrel_side.png"}, paramtype = "light", paramtype2 = "facedir", --on_place = mcl_util.rotate_axis, @@ -106,16 +104,16 @@ minetest.register_node("mcl_barrels:barrel_closed", { _mcl_hardness = 2.5, }) -minetest.register_node("mcl_barrels:barrel_open", { +minetest.register_node("mcl_chests:barrel_open", { description = S("Barrel Open"), _tt_help = S("27 inventory slots"), _doc_items_longdesc = S("Barrels are containers which provide 27 inventory slots."), _doc_items_usagehelp = S("To access its inventory, rightclick it. When broken, the items will drop out."), _doc_items_create_entry = false, - tiles = {"mcl_barrels_barrel_top_open.png", "mcl_barrels_barrel_bottom.png", "mcl_barrels_barrel_side.png"}, + tiles = {"mcl_chests_barrel_top_open.png", "mcl_chests_barrel_bottom.png", "mcl_chests_barrel_side.png"}, paramtype = "light", paramtype2 = "facedir", - drop = "mcl_barrels:barrel_closed", + drop = "mcl_chests:barrel_closed", stack_max = 64, sounds = mcl_sounds.node_sound_wood_defaults(), groups = {handy = 1, axey = 1, container = 2, material_wood = 1, flammable = -1, deco_block = 1, not_in_creative_inventory = 1}, @@ -128,7 +126,7 @@ minetest.register_node("mcl_barrels:barrel_open", { }) minetest.register_on_player_receive_fields(function(player, formname, fields) - if formname:find("mcl_barrels:") == 1 and fields.quit then + if formname:find("mcl_chests:barrel") == 1 and fields.quit then close_barrel(player) end end) @@ -139,10 +137,10 @@ end) --Minecraft Java Edition craft minetest.register_craft({ - output = "mcl_barrels:barrel_closed", + output = "mcl_chests:barrel_closed", recipe = { {"group:wood", "group:wood_slab", "group:wood"}, {"group:wood", "", "group:wood"}, {"group:wood", "group:wood_slab", "group:wood"}, - } + }, }) \ No newline at end of file diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 35712dfd1..b4cadcef1 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -1419,3 +1419,5 @@ minetest.register_lbm({ minetest.get_meta(pos):set_string("formspec", "") end, }) + +dofile(minetest.get_modpath("mcl_chests").."/barrel.lua") \ No newline at end of file diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr index b84dac022..0956c8705 100644 --- a/mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr @@ -34,3 +34,5 @@ Can be combined to a large chest=Peut être combiné à un grand coffre 27 interdimensional inventory slots=27 emplacements d'inventaire interdimensionnels Put items inside, retrieve them from any ender chest=Mettez des objets à l'intérieur, récupérez-les dans n'importe quel coffre Emits a redstone signal when opened=Émet un signal redstone à l'ouverture +Barrel=Tonneau +Barrels are containers which provide 27 inventory slots.=Les tonneaux sont des conteneurs qui offrent 27 emplacements d'inventaire. diff --git a/mods/ITEMS/mcl_chests/locale/template.txt b/mods/ITEMS/mcl_chests/locale/template.txt index d680c24c9..fffeaaac7 100644 --- a/mods/ITEMS/mcl_chests/locale/template.txt +++ b/mods/ITEMS/mcl_chests/locale/template.txt @@ -34,3 +34,5 @@ Can be combined to a large chest= 27 interdimensional inventory slots= Put items inside, retrieve them from any ender chest= Emits a redstone signal when opened= +Barrel= +Barrels are containers which provide 27 inventory slots.= diff --git a/mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_bottom.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_bottom.png similarity index 100% rename from mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_bottom.png rename to mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_bottom.png diff --git a/mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_side.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_side.png similarity index 100% rename from mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_side.png rename to mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_side.png diff --git a/mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_top.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_top.png similarity index 100% rename from mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_top.png rename to mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_top.png diff --git a/mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_top_open.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_top_open.png similarity index 100% rename from mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_top_open.png rename to mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_top_open.png From 61f4c5b885db1562cf393f1c08312ba51ef726bf Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 22 Feb 2022 18:03:27 +0100 Subject: [PATCH 527/720] apply @kay27 fix to `mcl_util.drop_items_from_meta_container` --- mods/CORE/mcl_util/init.lua | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index 03f6106f2..0d1cb45dc 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -357,22 +357,29 @@ function mcl_util.get_first_occupied_inventory_slot(inventory, listname) return mcl_util.get_eligible_transfer_item_slot(inventory, listname) end +local function drop_item_stack(pos, stack) + if not stack or stack:is_empty() then return end + local drop_offset = vector.new(math.random() - 0.5, 0, math.random() - 0.5) + minetest.add_item(vector.add(pos, drop_offset), stack) +end + function mcl_util.drop_items_from_meta_container(listname) return function(pos, oldnode, oldmetadata) - local meta = minetest.get_meta(pos) - local meta2 = meta:to_table() - if oldmetadata then - meta:from_table(oldmetadata) - end - local inv = meta:get_inventory() - for i = 1, inv:get_size(listname) do - local stack = inv:get_stack(listname, i) - if not stack:is_empty() then - local p = vector.add(pos, vector.new(math.random() - 0.5, 0, math.random(0, 10)/10 - 0.5)) - minetest.add_item(p, stack) + if oldmetadata and oldmetadata.inventory then + -- process in after_dig_node callback + local main = oldmetadata.inventory.main + if not main then return end + for _, stack in pairs(main) do + drop_item_stack(pos, stack) end + else + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + for i = 1, inv:get_size("main") do + drop_item_stack(pos, inv:get_stack("main", i)) + end + meta:from_table() end - meta:from_table(meta2) end end From 360a1604ba959d3af2b641077116dd47821a12e0 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 22 Feb 2022 20:20:21 +0100 Subject: [PATCH 528/720] Revert "move barrels to mcl_chests" This reverts commit a272322cb5ec77d6e856e2034f407ea1c1d73438. --- .../barrel.lua => mcl_barrels/init.lua} | 30 ++++++++++-------- .../mcl_barrels/locale/mcl_barrels.de.tr | 5 +++ .../mcl_barrels/locale/mcl_barrels.es.tr | 5 +++ .../mcl_barrels/locale/mcl_barrels.fr.tr | 5 +++ .../mcl_barrels/locale/mcl_barrels.pl.tr | 5 +++ .../mcl_barrels/locale/mcl_barrels.ru.tr | 5 +++ mods/ITEMS/mcl_barrels/locale/template.txt | 5 +++ mods/ITEMS/mcl_barrels/mod.conf | 3 ++ .../textures/mcl_barrels_barrel_bottom.png} | Bin .../textures/mcl_barrels_barrel_side.png} | Bin .../textures/mcl_barrels_barrel_top.png} | Bin .../textures/mcl_barrels_barrel_top_open.png} | Bin mods/ITEMS/mcl_chests/init.lua | 2 -- mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr | 2 -- mods/ITEMS/mcl_chests/locale/template.txt | 2 -- 15 files changed, 49 insertions(+), 20 deletions(-) rename mods/ITEMS/{mcl_chests/barrel.lua => mcl_barrels/init.lua} (81%) create mode 100644 mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr create mode 100644 mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr create mode 100644 mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr create mode 100644 mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr create mode 100644 mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr create mode 100644 mods/ITEMS/mcl_barrels/locale/template.txt create mode 100644 mods/ITEMS/mcl_barrels/mod.conf rename mods/ITEMS/{mcl_chests/textures/mcl_chests_barrel_bottom.png => mcl_barrels/textures/mcl_barrels_barrel_bottom.png} (100%) rename mods/ITEMS/{mcl_chests/textures/mcl_chests_barrel_side.png => mcl_barrels/textures/mcl_barrels_barrel_side.png} (100%) rename mods/ITEMS/{mcl_chests/textures/mcl_chests_barrel_top.png => mcl_barrels/textures/mcl_barrels_barrel_top.png} (100%) rename mods/ITEMS/{mcl_chests/textures/mcl_chests_barrel_top_open.png => mcl_barrels/textures/mcl_barrels_barrel_top_open.png} (100%) diff --git a/mods/ITEMS/mcl_chests/barrel.lua b/mods/ITEMS/mcl_barrels/init.lua similarity index 81% rename from mods/ITEMS/mcl_chests/barrel.lua rename to mods/ITEMS/mcl_barrels/init.lua index bc6216578..964f23fde 100644 --- a/mods/ITEMS/mcl_chests/barrel.lua +++ b/mods/ITEMS/mcl_barrels/init.lua @@ -1,7 +1,9 @@ -local S = minetest.get_translator("mcl_chests") +local S = minetest.get_translator("mcl_barrels") local F = minetest.formspec_escape local C = minetest.colorize +--TODO: fix barrel rotation placement + local open_barrels = {} local drop_content = mcl_util.drop_items_from_meta_container("main") @@ -22,7 +24,7 @@ local function barrel_open(pos, node, clicker) local playername = clicker:get_player_name() minetest.show_formspec(playername, - "mcl_chests:barrel_"..pos.x.."_"..pos.y.."_"..pos.z, + "mcl_barrels:barrel_"..pos.x.."_"..pos.y.."_"..pos.z, table.concat({ "size[9,8.75]", "label[0,0;"..F(C("#313131", name)).."]", @@ -38,13 +40,13 @@ local function barrel_open(pos, node, clicker) }) ) - minetest.swap_node(pos, { name = "mcl_chests:barrel_open", param2 = node.param2 }) + minetest.swap_node(pos, { name = "mcl_barrels:barrel_open", param2 = node.param2 }) open_barrels[playername] = pos end local function close_forms(pos) local players = minetest.get_connected_players() - local formname = "mcl_chests:barrel_"..pos.x.."_"..pos.y.."_"..pos.z + local formname = "mcl_barrels:barrel_"..pos.x.."_"..pos.y.."_"..pos.z for p = 1, #players do if vector.distance(players[p]:get_pos(), pos) <= 30 then minetest.close_formspec(players[p]:get_player_name(), formname) @@ -55,8 +57,8 @@ end local function update_after_close(pos) local node = minetest.get_node_or_nil(pos) if not node then return end - if node.name == "mcl_chests:barrel_open" then - minetest.swap_node(pos, {name = "mcl_chests:barrel_closed", param2 = node.param2}) + if node.name == "mcl_barrels:barrel_open" then + minetest.swap_node(pos, {name = "mcl_barrels:barrel_closed", param2 = node.param2}) end end @@ -72,12 +74,12 @@ local function close_barrel(player) open_barrels[name] = nil end -minetest.register_node("mcl_chests:barrel_closed", { +minetest.register_node("mcl_barrels:barrel_closed", { description = S("Barrel"), _tt_help = S("27 inventory slots"), _doc_items_longdesc = S("Barrels are containers which provide 27 inventory slots."), _doc_items_usagehelp = S("To access its inventory, rightclick it. When broken, the items will drop out."), - tiles = {"mcl_chests_barrel_top.png^[transformR270", "mcl_chests_barrel_bottom.png", "mcl_chests_barrel_side.png"}, + tiles = {"mcl_barrels_barrel_top.png^[transformR270", "mcl_barrels_barrel_bottom.png", "mcl_barrels_barrel_side.png"}, paramtype = "light", paramtype2 = "facedir", --on_place = mcl_util.rotate_axis, @@ -104,16 +106,16 @@ minetest.register_node("mcl_chests:barrel_closed", { _mcl_hardness = 2.5, }) -minetest.register_node("mcl_chests:barrel_open", { +minetest.register_node("mcl_barrels:barrel_open", { description = S("Barrel Open"), _tt_help = S("27 inventory slots"), _doc_items_longdesc = S("Barrels are containers which provide 27 inventory slots."), _doc_items_usagehelp = S("To access its inventory, rightclick it. When broken, the items will drop out."), _doc_items_create_entry = false, - tiles = {"mcl_chests_barrel_top_open.png", "mcl_chests_barrel_bottom.png", "mcl_chests_barrel_side.png"}, + tiles = {"mcl_barrels_barrel_top_open.png", "mcl_barrels_barrel_bottom.png", "mcl_barrels_barrel_side.png"}, paramtype = "light", paramtype2 = "facedir", - drop = "mcl_chests:barrel_closed", + drop = "mcl_barrels:barrel_closed", stack_max = 64, sounds = mcl_sounds.node_sound_wood_defaults(), groups = {handy = 1, axey = 1, container = 2, material_wood = 1, flammable = -1, deco_block = 1, not_in_creative_inventory = 1}, @@ -126,7 +128,7 @@ minetest.register_node("mcl_chests:barrel_open", { }) minetest.register_on_player_receive_fields(function(player, formname, fields) - if formname:find("mcl_chests:barrel") == 1 and fields.quit then + if formname:find("mcl_barrels:") == 1 and fields.quit then close_barrel(player) end end) @@ -137,10 +139,10 @@ end) --Minecraft Java Edition craft minetest.register_craft({ - output = "mcl_chests:barrel_closed", + output = "mcl_barrels:barrel_closed", recipe = { {"group:wood", "group:wood_slab", "group:wood"}, {"group:wood", "", "group:wood"}, {"group:wood", "group:wood_slab", "group:wood"}, - }, + } }) \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr new file mode 100644 index 000000000..e1fa1b603 --- /dev/null +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.de.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_barrels +Barrel= +Barrels are containers which provide 27 inventory slots.= +To access its inventory, rightclick it. When broken, the items will drop out.= +27 inventory slots= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr new file mode 100644 index 000000000..e1fa1b603 --- /dev/null +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.es.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_barrels +Barrel= +Barrels are containers which provide 27 inventory slots.= +To access its inventory, rightclick it. When broken, the items will drop out.= +27 inventory slots= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr new file mode 100644 index 000000000..0e93d1ee5 --- /dev/null +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.fr.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_barrels +Barrel=Tonneau +Barrels are containers which provide 27 inventory slots.=Les tonneaux sont des conteneurs qui offrent 27 emplacements d'inventaire. +To access its inventory, rightclick it. When broken, the items will drop out.=Pour accéder à son inventaire, faites un clic droit dessus. Une fois cassés, les articles tomberont. +27 inventory slots=27 emplacements d'inventaire \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr new file mode 100644 index 000000000..e1fa1b603 --- /dev/null +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.pl.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_barrels +Barrel= +Barrels are containers which provide 27 inventory slots.= +To access its inventory, rightclick it. When broken, the items will drop out.= +27 inventory slots= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr new file mode 100644 index 000000000..e1fa1b603 --- /dev/null +++ b/mods/ITEMS/mcl_barrels/locale/mcl_barrels.ru.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_barrels +Barrel= +Barrels are containers which provide 27 inventory slots.= +To access its inventory, rightclick it. When broken, the items will drop out.= +27 inventory slots= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/locale/template.txt b/mods/ITEMS/mcl_barrels/locale/template.txt new file mode 100644 index 000000000..e1fa1b603 --- /dev/null +++ b/mods/ITEMS/mcl_barrels/locale/template.txt @@ -0,0 +1,5 @@ +# textdomain: mcl_barrels +Barrel= +Barrels are containers which provide 27 inventory slots.= +To access its inventory, rightclick it. When broken, the items will drop out.= +27 inventory slots= \ No newline at end of file diff --git a/mods/ITEMS/mcl_barrels/mod.conf b/mods/ITEMS/mcl_barrels/mod.conf new file mode 100644 index 000000000..2b0088b79 --- /dev/null +++ b/mods/ITEMS/mcl_barrels/mod.conf @@ -0,0 +1,3 @@ +name = mcl_barrels +depends = mcl_util, mcl_formspec, mcl_sounds +author = AFCMS \ No newline at end of file diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_bottom.png b/mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_bottom.png similarity index 100% rename from mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_bottom.png rename to mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_bottom.png diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_side.png b/mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_side.png similarity index 100% rename from mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_side.png rename to mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_side.png diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_top.png b/mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_top.png similarity index 100% rename from mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_top.png rename to mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_top.png diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_top_open.png b/mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_top_open.png similarity index 100% rename from mods/ITEMS/mcl_chests/textures/mcl_chests_barrel_top_open.png rename to mods/ITEMS/mcl_barrels/textures/mcl_barrels_barrel_top_open.png diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index b4cadcef1..35712dfd1 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -1419,5 +1419,3 @@ minetest.register_lbm({ minetest.get_meta(pos):set_string("formspec", "") end, }) - -dofile(minetest.get_modpath("mcl_chests").."/barrel.lua") \ No newline at end of file diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr index 0956c8705..b84dac022 100644 --- a/mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr @@ -34,5 +34,3 @@ Can be combined to a large chest=Peut être combiné à un grand coffre 27 interdimensional inventory slots=27 emplacements d'inventaire interdimensionnels Put items inside, retrieve them from any ender chest=Mettez des objets à l'intérieur, récupérez-les dans n'importe quel coffre Emits a redstone signal when opened=Émet un signal redstone à l'ouverture -Barrel=Tonneau -Barrels are containers which provide 27 inventory slots.=Les tonneaux sont des conteneurs qui offrent 27 emplacements d'inventaire. diff --git a/mods/ITEMS/mcl_chests/locale/template.txt b/mods/ITEMS/mcl_chests/locale/template.txt index fffeaaac7..d680c24c9 100644 --- a/mods/ITEMS/mcl_chests/locale/template.txt +++ b/mods/ITEMS/mcl_chests/locale/template.txt @@ -34,5 +34,3 @@ Can be combined to a large chest= 27 interdimensional inventory slots= Put items inside, retrieve them from any ender chest= Emits a redstone signal when opened= -Barrel= -Barrels are containers which provide 27 inventory slots.= From 84596b2ebb04d43a8771b5189c4ff56f48f925e3 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 22 Feb 2022 18:34:33 +0100 Subject: [PATCH 529/720] add @epCode logo --- menu/Logo.blend | Bin 1166214 -> 943778 bytes menu/icon.png | Bin 559706 -> 1595036 bytes menu/icon_small.png | Bin 429423 -> 853251 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/menu/Logo.blend b/menu/Logo.blend index 424aae4ea3387cafc3bfae93d45835e5cee366a5..08284ef67ad1f66dd16002860734eacd2df02ac8 100644 GIT binary patch literal 943778 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 japt@d@d& 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�HPCGw-dLQA&_~{{BP)w(G-0@S`33j8x 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»QJTsiP%tltTHS9n|%A)EZH`*lt{xmhLD63Ob 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
Z*#_-Y!jl31B=*A59l> zCv`|cT6#rUEOOIZpV`QR^^yi5br%D+Z%Hx<~sug2XIeWU# zzX#&%AG)&Q+FzK6IfJjM{A5jmlpFhlYX}(Q8&eArm@h!6tZE!Nkb>SBraY(-9S?RP zOsill%Ogz;V2rH7A1IoJFrHiIuq7Oy20V5kYSWO=VvOb2pw@6A zln14Ks`XeYeX^0ZV4R=3HObKnHmdDoZe~UGxn`w?$>_>jV`U(k8e}r?N>MOT5U;}V zjm}jey%V4O`z}WwLGzH<#%VQw)$Zp@&vW|=lk=~nxBv$41g!wZFV~soE>jA4{njA4 zX?5By_V%ZDZ)~&!k^+LI@yCB^1fa7)BsYfiZ-;3^yilEwq;C;^Sleb}oKT1`8{%Vt zXxdExIT?{ZgkL=V7Zq*jZX7+2z+vbe~9r%0I!g2E-=VqmAw`5t@cJIMvF~y_UbcUUwNq3z#oDlAzG1JIGZ=6uG?q` zQS)N)i73*+Cwc@ciUJm&3~w-5#&KXc_N&jINFGg=r2*pVnIbqP<0i?2P0z{G4_hZEvW~a745rR{HBtUJfn6Rvo=C@S4 z>F68$Fr2&?z9;9mV0f0StN+Xn*lM%pT<9-C#0Y;?DE&zCjf6<0rw2tf5dRUM>O?0p ziyF0#F_~*00M_nggR`dHXf%BngAk%}ST|L3H)lQ+dw=&#psLc8Wkfi3yv$L8KbAWc zZA)^Ft8gwbUk;0#&^pXd920E$Cxk?F)TF6L-*zO3Pw@BA-Vr&=Bwyd$mOY`puXKkb z;RLlig&`rnw|Z9#oCfAw0n*QZCr9HW)Va#ds?V7TopR$?mi(g3^`*0SLj+AXIe*W# zj7K&lzcs{DY7=uE!K?Nz!|QFZ87vZnxb@=i5_bx?EkFAx1BMIUb*BP@Mx?sq8W}X8 zm508mJUGl-rCL59U41FHY^N^qy-yCy4D9e>SVhL9UP?M?vBfV;(+v1%53NnEHfqQaX zzX{0chJ#ZFbU%Q*-RBo5`R3NZn)3gVb(TSGhV8bF5Zv7hr8pFK3lu9*q@>YOf%Svch)14;(Z(7_T<#gV2L0 znvd|l^oK54tp0I3qd?Y1!jGE)hy{H3OLD zV|C%u(nT~r%N@Nlu<9~rGZPH;(q-aYj1EF6n+x<57m;HyBMDhsonbAo4)hR{zM$1> z-d?@9sXma7R2}^%K@A(p&OU7zT-TJLD4QI;dYqZgZxI4V=aG*H&5TD{*U+S}jKyD30H6&=)kq3AI!b999!$ z5r@H5S0bOfz5x3YWaAP6YwA?#Y<+a&n*h1RYCYLQ{?IVHl)#8nQpEf=We&#QxL}KK zXzo^yp6+BWR`(VtqLXiBndyE@;tbJR$RBKGEEi>C`0MomvoB36r8CbQmNhDeioQyv z*i6t{KeaacN@;%0h6ETV!9U32NG9K%`cLnfmqN_9AoJ*=Lo57 z;E0>_0Z^A*lkur`30_+|imhcI09~+`89t+(f{MQG)!?;7_n#~`#0jQ)L5yVoa&*t` z3xW?s%iM9nJhF;`18whG`nd85t|mJM)Oc;?-jA3f3hblSb3r_cml^j6kOnVC=|nNy zTI|&trchyzPiVJbi+F!Gt(l?1`P#+^E~V>0OTzGFIkuB*7KIl*I49fmDkEx z{#Fuv)CN)p&-H=b?240ElZHz#e$%Hh_`AN)gn_uBh+pMwUdVPIl=IX${zZpN?y+>X+D=vc;Snp^<;F^`e|`B}=@c{CGrgakd33es_VoX=4lqp!KBapubX44|Qy znpp)p3)|zhA6^gbTfY3c5O*BaQ(_XOi2P z!m*TEXGeNk&~H$ntreFQjOw_S(&u~S&j#3R_zM5xC*M}#0ZLx&f}jSOlTyQE8w570 z3{a(3NX2$=w=v544~_LyC%KVd^5niV@BXXl`=&V=j1a$zZ^4F22)?XeqVb$R0yk;n zN3cs&@m_FAvN{7;Ar$VIn(GI+KZpq;#d(Sw{w^;(v)$B;VFq{zq+*Zv8Z03GI4Dbu zk4Owd9=LB3=Yi|0oIJny(wh7v)`P(fdX5Sx{War;248Ahv%pB`PtA9pM*7$HC5l^v4(f2}OaxQH>al?JX0F-@tq;SZv z1yya@m?7p}PVzPJE{rV`R53Y12s6FNOMPjmp#Ih9SkOQH_+%Etm`mugc16l1f$IC* zvA9xkD4o%x(@t32);d;?~P{cRt^{ckw25aVw-8J`KUSdnUZ@Qr!y5UWAY4i@{ z?jgEqi!pu`As?*SKI%f>|1#tuqSVb9GSIWav~{akM#jRi-OE0f`7k@nHs~1(LOB`3 zb^icYusaFh$akTc{h)>CdJR_lTzU9!-&QQ1Z>oqxBmcPa<9>8b^2V7(uU z$1EwtbLA$fgcju3554oX~8G3N#%U8*Lh6!Cg0eN<3&bRhYZ zzB7MSR*)%rWz0PP5HKWa!RaNqWj}(N56fkKm@NYV+F%Eox(FPDHGU=z%fhNl>1={< zjPzuNC2=I5J$}yupP`tC;4CpA;bgGd3*_Db*7@-MO0^W;6~-rnB?)+_8cy0HVSHv| zykO%8V(xfmIe9AR)UuM`k9U%%(BzzdII}=60`N8F=C^gPo*CrCANA)@S$Z>^yh@ds zFApZ&u{5V4$!!>lIOzwGH2ez<0K7?c*2?4cK| z?`mxwKYU)~KMLDms#??-qu3)C_#};(91n6bsj$iiesSk4CwZ;amkCzpyt!_&1NNf# z4GOM(`5x-V&>y`{(ldbc>k%*lPk=d904{U(S;l-QNGGZq2T`qGXR0CBDKlEZh}XQRJIZkoR`Elv z68P)tcQq!lUxIL6!HzPdMyk(Z15TENv;Vl z`eh(03i30k)bx{sV%J6PQ;!d#Wgx5_bLU19hCvOl8(ZgbhW*c%)v$)K&o@Ry5R1bV zlDKCmtWE=vJ{H@D_BkPx)Y*n~Yq!%fKDD2`U(QdZEzvN*#6^W5A@$9SSx*znRs|Zd zYztAxT}dinNYhN?a+jUu2*_qe`t}4|Gx8eYTV##Oq-g5A`Nd_x(1qDp|5P}a47x`? zTOYb&PJ3Uz^Xr40WUOw_O)lEymU7niLT9XLLuoKf56+ir5sHg2jpi6|9N zFkEEqKeIVK2xG$jeZ8bWO(qE}%^PEil^#E4(mV7tTz_Spog8^11(A7hyqdsFXMYb| z#gf@_jIW4lT4P&V{NwbGjQ1_aAwjf_+;=Ffccuq7l=a7&F`nBNocjP?8nkmWMvWVFNHx6|0j7 zeFh)cqN!DM9y;07JM=4g;Z4!_rfZf&L_R1xfkS&r0K^-iI*o5&|@y%{lf<4B2mdEm7vqeJ{m`%n6QiGNO651tV*UlC0H2Q*jG* zz&<3rOOOGll0Fg!Jlj+XC9x#sRq)#MVSqU*g2^EG<|&%Yz^+3f7O3hptTX%f41qeP zGUwgYpr-&52<1OwVP~!$D*Sd?r37U7kRbWxoC-T&;8g&wB#o&YYue)ek97(-j(u+C zdwAcv)iwaeHzt5#tA|{*ZB*zH*Y(*d(59q*HlleELU8N++a-5HO@1w=yT1q0Rk`oNzkh;Ns;T5zAPez**2C^<>y zDKK@e_u({`G0EsPpT|v&H~Un1*X$?fR)0TY5JM-AGtl$jY-Xc93z&=M@s(%F_nM*{jJ!yo~NcaznC)`Mq? zz~+7l{T3>wBTB@vOiy>aCT^Ap^=&d0;Vhp)1$quNVc3FY#?<1mOV=S)Qmar2C_JK< zYF5wc^3E)$66~hx8f}E>K=+p?4gkToWM()^Src+(JtYDmzNyA%gxyL)4Tgs?CkYve zZZIPbeQ16MfBgKg0Z`w$kdunXz4x-?@<4^Iz%3rp| z&a|~uiGX7TRm{RtEfDHT${k@hal36pxN5qJ$rV)fhYr+CT zI2t*FjEa~r&>!BAT^aH+0Pm(yu5G4N8c7_My;g`XL0zl@k3XleJOX}eNI-p!v5|k> z*xEmagz9g-!R#{bFo;BQ_groU!0Lx#LU~B}cZhglG@n(6?;EhL@=oGhywj|lhIKlm zq_!ca$ul25={_Tb=evD~AC+o@bn|b|a;4jt_l!q@FRu^61?0o~C3-D)`b4+F&30~0 zm;t079c`r)r(;Y`9Y5RnGp7f2ir@G{8-lt_BM3TGl*<-u>BX`<;YS~jhh8Byuqg(b zp+TBybZThdFrEHzGw^%UDMUG zVC0R6h{jOljY~j!+kM5amyiKXnY|PgNdH#)W4L08-1$a_HC2y3`nXHiQssnTex0i2 zt4~|2=j*=1iQs^0|5sDVkC2rAD}?_uVL#sfmn6OB; zeiLZGKY~$Qm=C>rbNA^AT_Aw?Gf zPa3LVhrgJefDq6w#&|X-ynImh`s@)Yhe0TGa6DFmUTiPoXT|n(8OQD>@ct7mCD#{! z1|NwQ)h+-PdDcKH!>Tn!7kcBhm&=K=UNB8zlC!$&9)QD!>`?e&O2xU^HD{E543uyl ztt}@J= zfmm#cuT`!)TT;ZEl6GMigAO3g?$U&HLL0R-8!4FPw;By&`A!!pg9Fs5P9?v=b9R6y z#XP_xzZ#8fF%zm zyEe7}X;@zwBFbxXYyLBGC+xwa${#xP8-A4V(i%wl=m%jLncQir16vzipeItWt-Qo3 zIB~@|cGC2|=s0Kf-Zi;S&pWLTJEe>uriTDKsjVD4&d4^rx zZxSLEdZaqI&~9yL)LGBBESCAqohBC$93dm*kGPigj1VJhDSc@4r82PW;`N3h%v7VP zs_&9OYcjHmG-AL7CrMA zf>XE=uYMdW(>{o>G2dDiS}xHPjZ!jyZY_;tQPiA0pXKnPm>?Jy5&8>p zHw$z|(Yx3l{kc*?x=*lMQy@>CP<&($DR0Mf?2bQu3WlCp#JCQ z&R~W4ICcZrw8^T>9{6Ph!MZ&!&vXe5__U$v{EdiNuTI0m)|A^TF#v4a^D@*jReox(08yU5}&LW$B1D257MNPr!4)$FVAte zMhuT=0!`R&l!49aAvbsYa<|z9h#(anO&FB|%+ZiR2_z6{nz;95K+^q0gQyu;48XuN z%(F3_-bq0Ft)X40_Gv2CKgWHCdm+xKo%GD-iyM?3AY@DtwZhIZYa2rDiRDK0#`clx zz!Sd!a=@lLu_Le;#N;8VXA63VRR$o6vIVk~rXp=;tt2&H?V|r(^Ogij!az1gV`k#bdYR!{|2Haodc+nrKkUAnG>1k1Du|9tP-E;M>;5!% zWp|!+fACRm=>K)x{MTaU@%+DH80Rvjdg3mNd0Wr-uw|k?{F!Is`#uJ%QGZ}38IIn- zqZv|YtezMU-*!}_kZ4IeCi*l#S~*}$cue*<;{Z7QJ0WEK1|}fz@jX1wH*_8z<|n#$gQ_Rge~K zeno6i)*H3<1ZqD3Ef=AMh<$|#BD4!!cy=+57f=#VX~^7Cwh&{&uFZ;e@rB8d#?rXe z*cy6b@55>eKcwwo6p)SGv~j@2ojH3~l2z@SCq02Fjud&G%}jsmrNX&>dgAeBk@G}v zbMJ7sQO=Kdjibt->4?xe3rq{wyEOdv<@(_Z=-+Gp#*tmmNR5rELW;8dF)Cr_QF&O? zTJt|=Q5UNtZUJx$r(Z8FhKXS2)2s(7 z;Drh#+OiIeR+mj7H2*<0WEYpk?a%yB&i=s#!^Sr7Egy0?F1i+5$+7+<0X63b*Ic$> zI%q5g%i-~Rc=2n*A~v@mc*9Cx4EM^;HRBM??bRvSHCC-J;gB;NPDh1DN~+Ak;qqQP zPi8up4sEpnTX`;*8G^LJ;*mw~R|BN=Dn|!H0&Nh^B7gHqL;F@JFl1V<2bfLXZ|xJZ zOvdUSzK3jAaDhysFE<2vWvX+@AE`x)zI|@Rx{`cIza}F@@u}9qyS4WhulfEVYb6>Q zk#y|Rg*+4R`DtyfOq|Z%YB{Rdy|L~xuxvhN2k|~XXbRoBdqL{d40%71JB-G_U-FNi zaH<+=(JnsJqV~_=k<$rqH&vn0M)!rPS1bPG@CSZ;plhT{LN#)%efL}}3?4~e@LFJP zsGRC}rZnza2W~)T`)=#)EXawigVPl15;!&RXP?1agpSGq>=qP04AzeF;-!JN=HJ)| z;0zm{9&CePd?ErAYyv8|`q(PG2UF+5gMroU#M z8U5?&*ZEwb!z~sNBhR{+Go#kda-hsi!dD+6evjP#C!GmuAHY@v73*~iN+9eih9g+P z4I3N7d(fY@9B{MB(f0|X!DJkM&2&Ka`vA@27{c8T4E8fpjFF$uOD57;d`Dl)l)U&U zv;n+4+lhJ1K~rY+eEf3Vu0m%!b)FAxZj(Cdvqw7pap%VoZT5h~>!HwT%|gzSNUDQr9?XCcUYU0*|(M|1`%pfOOZuDdXVcDca#&q!A&Hpv0?= zpny^;JnL}Za2&YJFi8N~uvHF6DQLOYaSHG33+TrvrSPx;-v)4By8HAcY@ZwuKMw9t zw>u;rzxDhfefC7YHz&K#YEbr$ly2ucy5mk`%!QsL!YU>4jW{&w!Tq8OI@%QMJxE75MWAp~XIG@Y zeKDu9aWM5-&Gmt&-b6x|I@eLd(?1JdKSjjqH{UqRr@33OP6w)2VlP@yI`c!`aR08{ zuMe6PM(&ee%`qxp&j=fBZ4paB0(qL=5uWj{u?+WpJCNCF+w7s=IO9B9{A3% zq`ScE+eKm$Ju^18Qb?WC8ii2gbG^JVpo%BmGlV|>?A?9SQHJj4;$uBMJ1P+aMG-~j zpV9^59|m$DlO$2@17}Jl%Ic);vz2WMCMi|$0_h zaCiCT5IfrteG7!9PO}fBq_rP_or8S!)MJP)P5`ETruKtG%R=z;)Lw5oTSSYQWG`Oi zY+ExuPpMG5w#&O;UWn^6uydx2D_I)O!N|7Q+R47^sTi{IO52@MbBjnCdWBN z5?Sdc(H|`#0Eg)~@5<~-PG`8*V%<5j;1hcpbCmH*>tRGk`4IT9-K5W>4I`Soha-?R z2OGlyd1DR^IcOZzz9a%_-K=_f%e!M6(Nplk=M1=?7UxAC0%|23sWD0FSjjC56nvd2LfYw+Ppg|MmQ1P%b;$VL)@@x40(0O8enU zaL{2!w)$h*x3v0Tg1`KQJbm+n(!Nf7>~{njl1@~8IB&zj_nyx-E%@W~U1BU|UJq93 z-yM{4ga`98GfRY}4YTRLQFa9`vq|Er!^<-PwVkrXYk<#7lOJkecg4W2Yfcy0qvt4n zn4Xca66l296gXb2avE~N`XWSCskCgek%;XB0E#fVU%6JfN<(VG?0H}RMXP3~_Fuh2wWu@D~v5GdWIjUbJ5{dl3V>11GX7fYrL{R-j>t~KKI;kg;&`wr#?}?nruSHX zNvJ7my7J|M%Bqkm2VKKZocgX<_~;!^$NzHRybJoTh02Yy4#~4cVJ9k8n?09N9DL`$ zf?*1M{goqaKGIiZ*8{IVTm2Kv4Q`M6M5Wk@_m?-5KSLe#q{mljGkcK1a!P?{P2?Yo z6adalW2bI%=dzc@)bJ+t3Sf%N**f;4&#f)`0pdFBx>}4p&8`?lux7Ec!^y>9E)aC2 z=&=h79suNeLjGkzY8rw(=gXav7>%UV^(7=*Y22!8rG{H=q6*rZ+$A{ll=a=m zr0D~So;N!Yf9pzV&PNA@7{!0W%Kf^i9T`5+WM4NZyOox|g-?E!6?|Zu+MOJ-SH5pSHIc3tK_L zjKI&4*o`xRpMBD>duoxo+%w%%6X<&=4&46V)&Bf|!m5E!pD_XGg!Bw}SM3KQpj<8N z@CIG&wRuqT8{85swuX<262BiVA`BxidX^}S9k!o1?8h-0pq$uQK^l-y^$xi5`)aJx zP5|u8uYBd}^Qsd9YWRf@eDw>fL`8YEMl9Rg6SyIDzi_%{++j-{GU(U) zl#*<&FJ9pogo@~&yl8GU)*HVR*@otbZqLT~?MFy5B7f#EoUnGG<-}!(MDE}e+gXfhvXkb#nkLD(eqzMorNWBXr|Av{>dGA}sLWS0TA{Zx`RFBR zl7v~h9ev_Cw0U%RdG$q)+T^DWzs+Bd|qIUlLBK$q@3r*y#8ZuH|&^I!025QQzRwEI4f8l+6OEEkXPX zq12z*p;lGi)vvhw6C@d^h?Ydv!wZvhDbK>sGTi;rDLcyb5(gh$nBedBa~KT}EcuzOaqjy!Ga6mblDre?<%U`1F)_M7EMVL*M4PeW znV$PAuKtS8vYblcRxROT&F-7eSEiOa&oZ^+?N4O{bPb1DS%m+|`u@Mo1NtWO+{OPD zn|s{)@Gnkc;T_M*=eZ5OE^`^i0WS{zZ8uhpaA(1SI&4xs2J0Mz@;{}HR6oI01C2(B zVf<5+81+mvgg}(XP<<}s%z`Y0492#>2G-SO)AeMM{1<73gY;+!apJvn5vuuE)|=`^ zp4Pdsnuf>N#X;V{I&O#mhaDz-Tu-QG$;jxc*YpPWtJXw-xdD@!@%N^M==^Nqdpx4w{$=)QHl4C+R8m{5<--wx*( zHVht~+ck8iZ%gyWU8Sap^x&q~xKgK$2z_cQEc^WfTatPidCu=w7eW~?&vsT}<(KIc z5~faNTji2i!MTM==KIT+{6@f1VCokzF=z<)5GqoP8dO%rB=n{q*g>bp{xh{j`gH)^ zEw@YHD|XU|mIEMQL1J|Y$H?HJwOJ%h`|fsF5vk_v9sBfquz(WYjbKz3;_K)TEsXei z0Ec{&2%feuPi(Qx@>+5k&>forqdWX|y=l`nFHXq-^J=&-6D>`pw=W)q=eWz?4AxV$rs{h5a9citKm1D0`k{^lbEyDSV>cd$r0d)^T;vcpuWgo+l36{F7$r z9Yf#DBg-m=Q)Da|P_KXG-wOa88ZsUv)Mc+6IQL8iU$b5w>udVxIPPj@^hmHkKZTD`iC3)wOsem5~I*bZ91EYN- z@;nmGp;S>1iiT?=;(+Pw4W$ZHEL}W>Rk*b;M(Af||6f(Cv&1s3HC@E8L2&~8EQq(; z1C9Z(gWPneh=DbWiND04w38Y&i1b0O?O(`t^5d^|;^Bd! zzTq2a315KL4$89lXpX7Ls<$pT)`Xr7|5-Qg5I&MqOU04VNcHY~Zx;Hcoi`9lTjP!8j3TG-=(g+JT z?Cp3e0-bBg_;^3_wP}fcCVV1gr+n;?mEr8EEEv4Q@14M!CQUomhn&|=rM(+6)cSSS z621N*K4_l-buHiwp4!x^4!H{7)tbj&KkkiFCa8^5+aZrH@qv5yBvF<`a?s`_0-8LR z$JO}N4$3Vn%0unaK#gA$$`){8HVx+YNxJTC7cp~F?sSITt{F z0%`Q>o)r~fSf)vv^JaT!Lb@!1`e$Jm7b}7&fP_tbaU~G@GlXlI_Gsdcf zRt?_Z1&O!!dv;rvXmG$fJ1QYSb=A`R-3Tj7S9;n3V>_&9ZySYV?KD9#<^A+Fh?AG4 z0pM7%i@=TOf>fW(m-yR1pBl8I)sx1+oUMrzz#oF*@cLNRiqe=;?WqHe`Vhz9O0hM< z$ygGWxgcK#cIWJ6>i7?z4Ktrw5zNCnYrL`q`IFz^$2V(HzV6Q0r?ZX)RP*G*g0Qzc zCRs?p$8pUUgH_To@e}v)X8$m~_z*$67kD`U8l4mz%;?L7$gPtK zX1+A-GhN9SQvuoyxF#MnLk&Z{Ad)QOigKC}2*#janaJaU$9PBCSiIT9C-`T`SidUL zoGN}%8J-rzP^b!Q`mz$2!C@J=1A_s%{jK%pbGi;jJ|9*EE#8?{^#iM78~xg#7d0q= zZkKrpp)(siF}EUODy;S68^m%a$*?h!dCR@?z9(yK)nOJmd#b+H4zFe3XnJH3+MTYn z1BDHoKlXYGVS@5Egqx-y&l#WDmjMfgUrZ|XtwcsTy1eYz#RqQ8AF0zbnqw_XKd zxf!+;3}bXrb{SUbPwGKk8xQn%p^_ixrZG- zBw?)_{u)$zM)SSi;$m`iVHr1O$_u3P*Swe0PIEaLT}Rv?Jn3+iF&{*&R*X z+Oqj1X+NUb!Vh^$_=#pFfz_#XlcVVFW5P9V$@4eWCQLs_6tExXMfO zBRT%(vHw`cfeBC`J73K!?mkbiqmwC|ll+^#? zFxdf@pe(fYzBP;guez`u=jc0%FI>i%o=<~@XFP>(Y%m~fko*p~-mnq+Pb_|{w`2gF zVQSr`h14e$!o^%Cr|z~Mh(Yy&rdJQk`cG#DM`v5sb=64!#cM!sn&QP1JcP0t`_R%_ z&3VHb5vTVAo=#rM_=a2Z+V{&@=e_>U(P^43w0*g(^&ttlY1g*y^-&IOUX=)3{%jn)2nreWXCff#R+5)VWo| z_Efy`w-?^$EG4!>?;J%Imd6M|F7miz%YB>YFO^D_;Zw3rd358qO~4H}`-<2$+S>28 zuwwYNnO*%J@PRRR-7Nn86V1j3T%zEbAFp%(B8d}XZ|C5#bcN3rM>+eD79E8@$HO%t z%YXmV#BrL~?F0Hv5mxx%xAMlj`OV5dG|*Q`T1%f_Vm~MNef{@Xif#u~xwC9x4R#-r z;T3_4wUYWtA$wO+ML~qpzeJ_fBR-!u9K#3Ptnbk9ufA;vRd8P-V=88k?B2yzScBwO zU>(zfr8<@<|IL zV;v^gaBm;RX@_xPI4DFbsc3sg;yh%ywP?cHA4YQQ>n^sI(81$|vdcqtw)n1!s~fB* zrc#CB*(X8ZQ?r|PR@{XJX4DC^7x(nz#aco!^Ht^YDVu?uMPXqGntWDBeBj5h4JJf; zfrynj?~6WxXK+4DO>Jhc`SURJgud8ZLCuU~#u$|I5fvl1b^O_FCKH{SwmfFpwc%Tp zYmYd-eVy@e+B(!5IVAQI;EQ)gVuBWuWw_9H2;9E;_q6v!_H`1pkh7h>?i~*oWjhGO zqwVRR^KC1CsyTJ{!_-EpXNo)j{A*vO8#v3zrjZ7f@#kbV^+}jvDZ6a7&V4iKd&y z6wu1s@tPj=66f*77})uz{va8kWB3+6UZpNJAc{4;$Ex>HqmonS_1LQWfx+lvnaig2oJ_Acy@yQkLjI(aNXE2Y}{KiKov%}KzMDJjYO ztk-|fd);+r#eQtg&MR6%S6Uf8?z!pwEN(q5=o_$u4|uH#yox9A&nzg>Oj78sg!<_w zatmo%q$ZDM|roE4*4Pm&M~DxSBk>tga-*D0X!!dH}C;927vSjbqoH^ z%3o@22mQWo#Mw2Y#av(KZ}bV$-F=O6x{LZG4R5G0cn-}3P<{c1$nU7*Og_D$!B6pbo zVNs8#&DlT{G$6PpBwU21W2lWNq7Fo=q`U>MSU3WTwTnTOI-#1`vVa@IN~BAEU3qDd zU9vEmt#)W)jmja%Q5!JJvXUAy`w9d0Uco%9{MuqUFGeR_q%;96hqq~jzpfQevo2)m z94->u^~8$)cqKUspkE{CfZ)C@j-82;%XV#ZU8wf*f5Y*z*#P%1C=vY3xwJ`gOo&jnYY*?IJ~SoAAk*Q90`Gg$ll7K3>dlp zdl$*HosJSU+!cwUv8M=wSAxx1+uu#cykSv5r|RnvXuXz1R>MbUgQ8agurx2}e(NP` z#D0LhoB&coyVuns)IKQ}6it2Xc-Nf^`u^q8lY{XWhYki7;D-u?ym$&PS|l$02oCR_ zBETIq`4@6gfLY49mKlJaL^@eNc>To*{{CR`3$fUDBC?0gAmP>vTlDBjxU2wd8uzzV z@E}OHZm9YqJAa-S#Ffla#fxV=9mYI}TNZj7^i<98J=6ImT9D?-asc@-feKBAF`T>e zdixy!-_o!A-h6J18tS0;TIvvPro0y0A;N%2&4INL}% z!j+mw-J>Yc$op$raW^|^>1EJpwS(UUVMOMRjjGr6QMAIBn9(bK^(w#Zink2fP{@PuQEZ@^P&Ge(sUzuOEf;} zJ8uxZsK{^AzvwwpU@_uwA9yGf8g@}A9K(TWjP?fC!&WAIKK?Z_WhG_XdM$FWYvn0O zuAgBm44D-=a1$L@5Xpx2N8tiq1t`b-eBK>{4n(?Z@jiVYj;(DBH+;gN$lqU#Yrugo zg|Mgl7M{F(ybCVR2NcJDKE+1FGy1gG&GNd-_+!+Oyky{xzF(5qOT>=sG#{6UJ6Ptx zGFaW*uaG|`d1Qb$RMv!P$l`szb+O1I&+XT_!Mn2!kxc3d_RVlJDOS~8<(%#heivk( z4s27!L>8~6l|R;(-vk!mCtX8r^m%-x3*s<;$J-?#iVmR?uq!Ma z{$Gms`Tr_j-t4?riK96AlVyW)yrk*G$K@}jNg*+^{*Y|>sR`YUWOc(Z zK6Rr)3}^kmkZT7n$xd-91yn^_t~hJg76m3paw20ZrRH2_)wU zBF^hn`@{g)tS=m3f1n1ua_{o=`#i$A!rW}-yjW39(?Q-(`2sD1u8%E{DD%4SP)f(X6#z(a#g?rdIe6o!Buk z)P+OX$|fsD;ZA4x6-92wx3cX{9yYSluE_8KA{xc|mgb|)rWXL8H~2UgHJvGIC9j)& zgqfB(J}x#rzT^Cxago|atn9$z8b+*Gna|BKnDvaR$oUly<@R%ud|W^>#$RSD-CW18 zfL<@ZUo74%c2R#iy5=_XsiP%$-eq~4)ERsIL{|l{NpSiRl(O*>PSqea^82$l>0q&F z>TC+ubi6yMT@GEKfF22?B&N=AvIDlf$G*=q4#s$?30o-M`6}nTXU0m*$u58!3b`K`OKaIwskc4#Q zCx5-LXDlUs7t|9*DT;`aID{2V zQ6=nyJ>HiRb|MAHlp6BCZ%R_3WS$Vtfr8Yn*FmCt;4lX^b&DwWTvVS;-+$1~sV&5Z4ZJ0&|ueyfP}ZTcqZ zz`U=NQ~g=VK)Ey(LByx{Qn?m;C!tKR|Fyt1=J4^L>17alzz@?YTtN0V$B6l*&VWpz z)DL$RN1pTR7-fPDK!3a-5!Kmg6LK2`I5MlP&kQVu8Bj4T1GtC9!hSW{XCHx-LuxMRNk}=5Nh|6sOsPW4uCwHXv;M|_2An%X%;VfJuO?v*Yk76|* z1k)@HvIQePUn5M4Q%k$R~3cpoVUMkoDLHO&cK)ld$V z-^(8TQY|14@F=wkYIZ8bt9VP@{D-Oych!=KN9(hYu(w6CShZJi$K*JSf4=+FV95uT^Q&9lXJKy!hsS zKh@KCy=*PWo9v9@%gatR#OipV+5+56ooFBim!M1hYz75~2MB}62de)Oj{g#s%PU4| zCuv72;q%6k5)N@bW-%v87tFn5a`x#NEC@D)zPR ztCL$UZJP#1d(1^RdY;45wJ;ndpHAC`l3Qd7TpeH+K^;ARgTOL*n#0@8MN&6c=G6e< z?f{b{Mh?OHY82orWVl`)Qws#wva(UG6p%9p&NBn9)QU(bEzBE4YEAbD8%T#WRNP0r z;rI8=Bj$NSk_rTXjlCDH0ObW47vyVxn&g?m_HFo2hiy-3ocS>$rA>h8L2UwU%^-E- zl*?}e7L3yuF4`SmDS!(N>xCvL{CnMtw zO=xpaCzWCxzf9uIQtx5b(dB%~ASmP7HJJd)*UAeK$WIP<5E;=!U7u!-_FmBbBxjG` zXumE^5^qK>k7aOtpUWrN6~4@g_>b@hHv&7WOMW=9*E>TCCY-h8C@0l;GcA^S-1(+@;-dY!no?_A!g9Y zC&Rv?!Ejc!W;vxx_*GpKG*tUJfr&07m?zpn%K6=-Hg#}r?lFyfIi2%YP~t3>t>#Wb zuod-*-6J{*)5YCa;8=yXFUd*h0AMk~UI+`Y@Zinay2`|-cynRI$NBS~haiL8 z%&^AnxneM;Zb^3%g%8+AP&!l_>V%~c^$g^M+x46P&>b_E__VNS&DBTXTWdl%qKl1X z%5qv4Ht!B_MdeIVcI|d#6AhJ^D2S{IOzg`};?CTiQ^i4O)XYR5By^11b>SIIY^*;! zB1cn>JjStfPD+8g_E$)Q*_qP%xiaAYA?qBY>k7PWe-PWY)fkO!+ji2VZOrDRO=H_h zW7|AUW7}$D+j_b8jyuNtzxVBoalY=o_F8k!^; zye0nfgsTGl52xeZ^LSaP`VLUjQhy_M+&vI{b=)g5sdgJ+ODnb+O}-%*8U8Wx4|!d4 zH9#zeKb(h<$C@`Fu{_nnX2kECJbr3p+K@|bZ&L&C=&*lT&_TYFu71D3ys<4_S6e+5 zfSb2_$pbp1K_YLjwY@&Wa=b#*ws}D6oz;@Jt&H-A6?o3n;GezI|9KQEfD~DTT2iWS zr{8EL(~KnOWr~P`TmsZo%2`4j4N0;c!`vJ@KEBR@bNynSeTOu;MLKZ@;ia2I6`~fr zpcu6NyRnr)(Gl=v!3#-h;Z7B41NOoD9Q@$9>3#5*6>6Jl5Ff3rxYV}Nb1ODWwYcaJ zilfFf_3L5QgL>hS3Wm_Ge5q~Sc^htgnrCUBWcs%9FfRV>vnG6S{7CM%4RHo1sP1SR z3CjA9B;8K>-%pAwXs)NC*I_n z+OrlIeE4haLVlic&dms}9y;PgXTPo|!4PoAUbOj*Ca~jIm*$K+aiUW0xRAch#8R?|TRoqp!qZQ*@}t zCL?}COL*q)a&$^rPA2{VdNmzAJdtV$M7siCx}13eL)o5F3L=D4syyQgmh5y0RKM^fVq;Q}v? z3r?>h8tDiO`Vo%G7w&aLL2f!{_z6Sz&6SDL=4HZEqHgQ1Rx}Qw7W#umvGsp=w&gch zemh<;LN%vQFHxa;^6T($?%(hQu6^QfKOBWdP=IHrVMd#R<1?PnsYj{Gk4(J>g5y}; zwv=!{ryUE{79-sEY_ken1z&f@R<#U15$v}Q#QoEt!iq8Zo*=8H)z(tkLy zCw%@sZTQxeGyW&lzmD$o%WrnQD-zZ9_NblGeW|Ij8eRvw;yAt!$gJ0z(|nHB-Z;u#Am~H57Zg9v7v~x}$h6wNKfhPD?d_4u%OqCPTPCuU z0Uwwn13!#R@ia>wGXY=4BD(F5J9<&rK1v6rnHdlf``LK?KsR|sKFw8La=BWy@rQMp zPMFQtdAU1Q>!fk+Y9qd6Ws84s!>&JW;C{*t2rm>IYLe&4@Fz9U>Mg?zkc zGY2CnxA{Ppuj>)?rq&OuA*0EW{|+{8ykwJNtbPl2PLaL3Ul3w`9&fQN{{8zq#(VYq zkE%EuQ29Uea(Awb@I{y~6HwSOOTbBe$K3`#1&t+Fq&9_r)d}qlPRPk-m?H%FD4n!) z^t=8g0=7^~$PwY#Co|(RsD_9YEe0nh@NqE}X|m4|1vpZo31%vTl3Ixc>gOwz*MXjR z71#IYD`1=I)3SL-xKx~C4Pg^t=_+u&Tvk5?cfztSGiZVY=BBTx@#;V&=Uq0$-AXVO zW9UmT_ji{n>jdX*0?jwCfOY=4rFE%Iqc^cD!FbdGH0U{*yO|tU@(~QtSN3Gi^LV3v zzgPzxITZEACS5lSDckFX`~eD+>RY!CTz1vde?;+7@9AfDacaclVCPVH&TSG9)=vYe z5{QI+b=$83m9jXRPq=aRJ6?an*RYtDjh?^_g3N1_3Q(I}86T)$qgyRM)^m5$#_k5p zy6_Hqrz!9$9Sa_S>$eO^#hsOdEF!7dWXcd%s6kxR&RpxJ$kgWUXo;K7hNhkgy=YF8 zNX1!E$df|?$wR=Gc;|k8K}LXv+Qhhoi6&5wB~f) z(xkE^m#$w@pDG(j5CJxbYi)9}R19$$TsVh#J6WQzq@HW|3Wen2&{n2(iQ5stt)x1LmM?)2}+ zSj!*af6S1Xo{7N|=+gy{3qM9}BoGU*WDrd+=DJ^ZR6mXtKe8U3!98OSYiA&y-rZg# z&8B?EB}r65!zH?h$WwjUkXfl(;uTvxHM=aQXlv~W20b&%bv3PitA-+3d1OzmZ;AKa+-PS&V1 zlzvQc*8$2mP!B`}II1=6P;R#Et71Wp@mF!l;Z_Mz2jL*}y0rj=q!O%|_khz-8_A*H zr!Z8yoj9=FcEt9wrpujsfp;XPO?#Ye!tU3stm=QscTB0 z$1x5|fnpCmmj=n%W+s#q{wNM1ei>t0Pl@`jM;iCr@e)a1Ry5Q# zuO<#(JXj7hE(#4{t?jJ+DWTyl7Sz=xLO!00jKFPR6Y8iBc;;vm;{`7XepHMGy$Y{N zB!g?O2f>ik`bC1p@s){Zq>tUtf>*Tc#g8#Q#9(4ydRMqjj;ycTB!~h@_k^`tIg(GA zHo^z^)=rH+!RL~v{IFU0Q5mvC6MgnSg{tlhdYt;CwX6o*CFBS!5P_Rq$?tF+l;uDH zr)%)U5Zx-=<n(oBA)TQ%cEJ@k-M5AcQH7A+QOu0K zj&AtzVtYl9GM^V@N)Qh|b^MVvqpN@SD=PPC0C=^TlvvW=EQUqlwuw`}*x;*c}zdDXcGF=EONE@-c z3h+eK035i-y+ZMN+wYhY1$WRdliziLR}WMKs^ww57EqR6>0C0>cd{Uj)|Y z`J1tW6NBAme!U=U3RmsWZgzPY^J7?>sI(+#EzSP5e`(CM)AcE^U--uLyZEqygCwRh5EY?jP?6~vnD*=8)%2b@vnoKY zn^VJstChMEZP<{K zM7;L^6SD9l&KJVz(Z479#EX;d1DU`~jpfl#sP9n_+fftf{I{i5gnN=dkGWN3n>!=| zW{J@w0qh7JEUvAf?aa-}d$P@%O?7^FFIp4HXjqBe`beq2IRKonp4xaS-bI%EIB2J~ zb*DK@kuKJ6F6ksngCK_#4bqKB=^O2umiPN+=A%>HuAo~6CdYp#vFj}g^gkG!c zwV>G?R$BaRWebZP@l@=%#l&6YuE~bMUgp`xgOpDKn1*;D(slTOUD6KGxL3Np%JV(; ziQ4`k$UiI-2`cj1;FSf)J}hMLK#lajt!5$w4LvfMB6l(S0$u;CSre)ytnFat7TwVn ztVmmg-sUv82GTCafeSutvV4G;Jkak3#R2^dqBRMp+NE?>MC)N#Ii-T-*F|<$pw+|0 zsr+UtADsT406!fXLm448JeHah*nwCdhgn$$U0+06*#a{rri0pKw#5?lO`qvD@lJ42 znLRYNn#K1Ot5qsP(WbdS+aLlesqODor`yt>-rjP~JjPUD?Ww}-TVMN>7ZRdFFN`PU z!4#^m{RlL%eI3Xh@D(V8<2lqtF#wn4g7`(HruvyokEVLW2uoss z0;4YY+c;K~TwPEZX)5sjTQZr6oT>Giy+k&Ot|*vx5~$osKNR-pNK>LW&B9}A#l<6tK`FX|Lk_pr?K6DLg zmcq718eH9!Y$Z%3CZqcSovF)SMMJ@!Lf1+iXUHvsx|c|qnv!Dl^1D5p+8%9U*xH=1 z&um5JZ!F%>4tgUseq-fit)rg3k>Ok?^?24cYLJj#DU}MN>7k}XHwc0B*5(e|;oIxX zyxLv2CG3Semx+lg>XmM&`uU?(f_X#=kSe6%G1*N>`-<3=P~U?Wx2z)v@FFhi?EVel z_F6u&nxCx+V_RfZasHtjvZv;tXR`VzlE5@iUe}I{`$tpX4*He52sX0Rmq$WRW1$v~ z`gc&-fAo|8HD#Yw{LhpPZoFO1&S{*;Yj#3?dzlVC5x!WPLhWcXM(^e|P4bOi%ckUt zp%+;gS%Q|_EeOLMiZz2?nYDG0DN zva`P2c|sJ z1jCWCr|O-1mc-W;Kohm|ZaCx+w6M+Aow{`h#|Uz(_6U!H|GkR_A4&gp&!0ufihC_W zUH?jAoN(ML`4QEa+zX~5pj;AsPLP5_0rC`|b9zyTgRV2M)Zh>kDvdS25@%*Nxn?-4 z8RS}UaIi;@rNOM8ncA4Zy`?sxcl!SpEO;zx2B*q)>hGH8MnvgF1hKQr)rqGAUe^*e z@4m*0G^(L-5}(aK3OVV2)|{ImY%I}0^W31HRtB*U<>rW9im;1z1=ovL#q17IunX>o zeFmO}b&rjUQQ!|>LDc8~76Oo++`DMZ_QE# z*MblgrCUh1htI{lQSWWepYFXjC#Fj4kk$4K-p?+)>*ry0lM7tjr5Ew@QWnpU824(V*l1Q*=k{ktt{CSH9X&Y^ zk%!<8F^OIR7>lUjTB#Da*y#H2DhM$85$*|^4#kMPORrOpdwy@KvSd~<>HgntG+$Vb zgs^NviKD!0D|BY(!voT=PHrtYYZ?OzAFxx~nN__zp=~xoPY@EU4*EB^QPc^1pa_QP zDQMFeP9Ct+3tBO-F)Z{cxf}TGfG+o^@0;_hy)b?S5*D5THmpHoedI^BG|W@W%nPJY z>;V$|F--ND1y4(5GwL(XU8T*{>47m1vu}E@nM>IBiF{U7@F?`PfmN#VzNoDi_{FF7 zIq3_^MOptw{qc&WqPe-&Y}#c{Z@3#wT`&P(9gdsA-NLwFelFgWcSsnmdKWIN=mc^v zmB3%ARuNYenZ^pn%-v+n|7Gu@7O+~ObPJkxDKa&L;92!kjI_S< z0q={OeQ6rfZk|i^1JODE8}Y7qZZD=E3c;8_B-k(cz`epOwIQz)=tcjsCcu-#HH9#y zBF6i!_Ii{bkQ^MizUal<4iF|nn(s*iz^75C@mXS3=mUe5(39WomrP%BR+&=(XEhMd zK$Uq*?#UuFp4z4u2J^9KO+h~2w63*d28&gPc-Z?W-!-i9x}d;o1a_;igkbKpk&%ke zwT24{X$&w=uE$hJEb0wa$#3s4P|8Pcs&Y*Ec&Qj#n7`s#vJxk3Ct5t;Y4bo0Gco|T zzmB3O`Q&z%YGE)ZM9u8!2zo>Hhl5SzM}QgcNQA{m;q$;S8_(o{dT)8Myp9Up==hcU zbMw)I)$!tLzUSWS+RIw9&v%DLT^*lpkC;yh7vA_7yX5fyuR!*H&F44W4M-rd_ex6d z&_5*jX}ZyqkZNhUqm6OZR$^WFQTzd1JQC+?5zS3szt^%P#3slUZQ`9yenpwu_%VkN zYMUws=om9(0k3a;5CPcKf;AyiZ5I!5Ou8u-ynmp%ptbD!Z6)5!cK7@_O+dgPqnIOW zJ6FapN8HIK7L4Vh;S*d1DZAo4uAgI4AL0NL0OPic?(fA1;N%NVFm!hp#+4+sxmWJ;J!2Z&+xMubD(0#I zflOOev?{r1K&Qxj5Q}c#bwpiI&W~qS16ew7F^urV4fJHnRS6!>8r~ZcG{_0lTc+mt zQCW}q5(;!*in3+1l>g+Svp0sf<$YpxOaI<&*$Wu(x{~MwJl+6R?ex?T=uvm;ja;&A%UnfBmM#(%gOIu(`iLGKTm$-%ZL&9*zRsf_chZ zNl{C&FmB0Nd6qdr$keWXJy%Ukcc4DZ?(n7huA>;Ssg-i9KNvd)c9l?gFdZ68Qr4Tu zOJyd9`@_01ny>2ZL0JV!zp;B8C;ryi_I;ceQ%tNKbOt=?m@~J2!`XW@r*>T$XAb-6 zrw@#h`lY81$*)+zJVy@>jE&(!`UnkJeMaiYY3%;zgudJCv~k`9I6#|7C>Hl1G{Abp zvhsOJalt>2W{DNuf7S*I_3yhsl&z8tGn^Ag1GH_?$d25fd`J&GLbKxMiOrvReTp^ZD=T4ru(hC#)V|INWb#c&qsyxTJj1!ge}o}HA~|^* zbow@D#829hIxWCS%w!v9_zCK3!#i4^Q z$IWh5HDbGRFq~hjpFSX(mDjC*7H*E&j;w7P44&g3OPwRBY`ls(V|lTp#nCrKR@}sr zy_ehFVX;K;lE*v8jy>uLNN5fWK#mT7XO7404rYt>CUnS4TrT$UxE-bvXh}@uijcc=p%K_-a|(i=p5W8W*+p3gcG+_W0;Wgd zWimu-x!9xKQ*#4yq(WI1_T)_`7~Hs8XeA25XqqIlioec3dUU2KAnNr0b`$jstAe{{Ae+7YGhA>H#9iE#!s%q}K zm%@g|x88%F!epo3zZLzf_7Lnm3XIa@rjq{Rbzc@U`{} zkY-B{UhWzLXl(0)nhB}GVCsY`6tGw@KrbEWP^tc-yAY3lz){OhTY`D6Dk%tWMn$wH z-qQ}uYyE-B%+-~3CUxwpK`kN?Q*L-hTvhL=TiN|`Y>Aa=S zZfgNg(3X<>@5cYH0{S-l-wJ4BIMG{w@kGV9lx&Wjao8kBKP#OY%8i^bl0OSA*Rl26 zpETo+y7*U~2cIzlI9K1-EZPnVBh9J4kSls&rw+0#LwJ_5zKV&WUr^Q%{9&Km0o3*` z`~P%S{IEwpE042Hn=6T%=7C))349Bl^Uw%%jttX0hDlqfyqsd%nqJC@)w8Fc@3Z7) z78znWok#6L-?wIDkHg9m>l3o}fRVHg=11*7%<_Fy4P0uhtG}b)WL{6pM7~D>)kKQc zqm(eJnf_9wtQge)PDk8sRi|00U9%P*ot5V$_Q8AwcTpu2pbh&C&KTK4{Mt=@7_+yICT0|;^$C z_U#)e^~`4ZBT9!Y)4vzk4$-E7p*Ie%koy2WQy5+z-79_Q$DOSj=Ttg~9elnW*x|jz zKc&56h1d2^HAZH|R_Mz|FI{$5q6&OX-=Z>DOcSD(;+xvF=jZ0UDfuUmEDvaE(b$T| z1Hz7bUZA8GrI+%tGe5Ac$<8Cb_##52FY88OgQP0}QhXL*TS7t4$r$rmD zbvrS24DVIHIMA=3S6Oxf^lb0%yX=rTM_?O+vREO)WTwr-S(Di4;rwoZS24FncW5-4 zyJ!8ZN{?A33Q8oghguUN@L6zK9-LGH9!#R`O*i!~ZtYuNOW9+A*Q8b5?i!;>-BZB1G;=4Jo`+rs0~s_{UA>I<;V=C91A=MG*+hIc zVUR29BZFG#+dgg>Xk)~tI}l{_}$ZDp7n z6{3fW@i8DAkC*k~veyzN#lf7ryalW_xS!71e;ryi5qp}~$boY;DRxr(2= zJmG3e?}&7P!KA70Xs;xT+O)yS3=iS-f%kagzYibDtUNvvh$3VX3bAxTpBGcMAgLK% zAvEdqFcR>32?wGkNHtBvYoFS!5W#O9)4l}{mIWKBtA6ry%tGX@<{CE7O#yUA@Cy5c zvljv-18EY(?87Lj!jP9|^<883g`_hMSJ zj9|`S6?Kxm><|UQ@+Xji1M||-j{qUkZ zrTPC!=94F{xtcFOig>82k|sh}i{3ZV+_H^n48QVyk-W~nr`SO3A}2>*#ru$y2CXrI znnF^;h=!(i8lHz0?_nkl*@AAs497&v{Q)=$p9C|MYWvmm7dW>Ls7 zw0x~Uk{*iMv+^(9zhF_PrR6$INrl@B|yXuC_Eu490?(co-2|w7@#%)mJUlHPgXZSO2ejoR; zI6y7NN-8cW6@gQq4#JcQ5@05y17q}h0h_I#CSfqjj)HTvCEQCuB#oS`qz%5|#?*nV8=JU2v4Ok`xd4hk0Isjvm-!@R;9q)Cm^Zn-z zPd+dF=B#~pu;{r54?4)&ArWHzoRpMn6(sdH0|Q?{%g)Mkk1K2|5yY?*%3a!F-T*u8 zv-N%eKo|=mx+I2jv$wtR4NsH$Lhu~IlPV6Y_giCa|5#_!g2Wgq%bD^(Ve+23LA+>^ zyxMZ56!O`0{fmu(zECs(&>cAXLRVAiokseb#Q59qC%*F>ho_&O#9p4sXE#+~50101 z0CodXAXSRAQ+->x7K9hRLO<7aP`{%HXm84AlW*kV`)zBZfQo#&I;H?t3EVV~wMdOh zGCNCYHtE!$1L53q|06(Y!IGTsMdHPdW-S_v+!HVehD!gX<|Nl62vD{G2k$*#gxbGz z$X&)co02tC75h0Lm^kmp-}%?CS}OlHhhz;DqYay?Q}#nqI!uL@ z*2=x)M_A)_K#2KEB4jt&D-Y0umZtmV^xFBE*Ms>(rq-7d; z7iVw8Hhnk#e3*9pN$`7QzKE3ahXk^Pe~ITeMh5NGNN%Qq-pGEmaSWJS_V8`W-Ak|^ ziy9^?(06w)XUo(4Zuv5<*M5a-Dbo0+N<&93 zDveNG)UTzzVL#H|%lpAk62E0!1Ab)=`WeSyGl{oHL|F2*$C$(%-sTT}^#bikO zmKX>Oq7`Sp115d49XjGkt3M*U=Wp=`WK@ZcNJOjxIUKydNQSwM^mq(BsdLiHHQHbB;R5xok$H{T;8LYyo zb@e-UUniQcJt(D??q>SEvWA(kw_f{r=k6b_lBtX$Sq9knK?v1(<#xsX^6kKi^?SzNOu2xu z0ag#apIKI0xFYR)bc?663q}FEyEiZ$xLRx@U@n!Qd_9t9oI#H?%=wf25}WuVQ8-)s zS++F$xYfNbF|5}<()%fMwhE>q9ZLvbbD+OktR&9Xy8rNwXh=wQ2?1aVe1=n>u?l6R z^(3P`DYkZcqddWzGs**F zw!Um`$ERbNq8a4w*Fyz=vls5#+~p|OXlHD_YLk|w}gsT`V*Ra+fvV0-U+oFpdtCGFKO20z*QVWUAwGYMcx!f$h zDVZTVO21&dSZoONN|)wudM!+K9Cq!J8V>+m!8|3Ci?NM(O|)w@j$C1|V01wW}K=I0|;^<3~m*ubb~O(XqxI95%P#b@cROO>^B7-<)xWbanPrh|L)Lkn`=iNeH&Q!hL_Vwa(wetaZhbXGwzAU zm;X+I@SOrBmEA~88VBQ#w0dGB2+m9lC@vOX0%^h8#=;ecl_r3BCwE{4(w^0Qve-Hf zI(=Wb6g?C!KGeF)y^A?}a^Al~4_-PgtrBS6*z?ZWgL%S*1N@<>lnU=m`IPsfMcvH5 zKm9r)tdfQEc}90vdK+R%mtjbwR`3C9hxM;v5c`P6nSJTMwFa%}kbpfVn62;dt};?X ziKJ!M4t?%9SYS?C@LygNSTZH_U6@$cEzd$#0DXVRa3$1oi272WV%Nb0RHx;8x|8l> zmang16%zKvbFUBS)njtr3klGQ<5H+bYoZ14as`Po1FV)MHmrXF2xTeFgyaJV@x2_X zgJPSY6+7YA7?)guyT9+_Ur#Df!g2pt6aSolLd{uCW;&087n|v+7(8WaZz^Yr1OZHi zCXYkGzud(|$d`5RQvy<^ZL;Mskk5ScQO!4JW!hKz zDQOu##Xx*(V=FTTV*sEFTir$K%cW&(q&&pS--5QV{4Q4YymnHxo*+uGV^4b&%+7n#6M*^M*t(yzIM9;hD-M?B`f6*5&)TX3BMeyB8 zVi7F2y8DcLMXCP%=hO?e4k%dDO>Xq>CzNA{1wK)*O7*eDI@l&xqrM$vxb*ZO0wA|4 z%BHSsCq_(kB#Hej#Bz)iPxSg6hc}Bwg>`h<$6tne+bPV&h; z9JFb#a8=a8idRXSSr{c4gPY?E;yM5mDM%TNxp%;oqR zSIEqLE$(~#&tGyCUxK=2*fk6hgY0uDVw0=zaYGr3zKFPpbyC+AB31Cs_Ee-0Dgo!& zi&LAysI7*{fY0ZK*vh0+s#xzY7#phRzn-6NMwxqSZ zHz#`P%n_^(6p~91D_UsK}&&i{;dBl?oUJpOHK0mY+h$TJT+YhQ|9U@A<-?SFnQONRg^!`_l=*HiBF z>h}cT$`Vd!+EqQf3x*zT-qzr)l||@t_z#_3%Y<{{*5Dr?&(Zp8U>91`;vPUmYA+7^ znH66pcX~;Z;zS(*yAmyE-dZ!MYz)hX*(=T5EQpc_il8_O( zE+_E>L@4U*ikbWin9wQfmHd{R$6X2*i+uIn4m_&(&?W@Xy`J`P(!Rj3%6zH1Qc^B9w)g4qX|+yU1O>_b!)S&$ekmPCV7*C`kLZ`YQsr zx4{R*vPZuvPDZd_zgF3@{L6~O&j3NQd7R~uMpL4WiJzziW>;k&1kpYcgA`h?+Yk{z z{V|>Ak5xUK)79qL9M!VemsjYa=_78y0@py`$pniIQ+J1_MAm{Vm zyEASwXU{GYjs!UE`g4>NczeNY@JC^`?)&fVLv7M7(ST)_LVu!$$V4VP!%C7!csB-r zmyfSAVwo)!p=!=-eubVm&nCw)9!aeaFEl{0gfhN{{l{Y*BL@X&nM0v@kDoS#aQcV@ zN(4n`E+1oGd=TapKtDEK6K#eEfv1*sd2=I#QxV-R($lL5&csic$m?&$4+ZpeCDb($ zrFE=}bRXm50e_Toi9`3PVNFu1uTZ|2xl}6!UY}3>nYNDoW*2mAW0rH@UI)^n6C5^$ z5GnT~JsE10d>otq5nRQFrNz1@RXxbeXf;u*u%ZqWcf}zF3od<5-vIMzdDh}X`14%q z(_ly0|M<1kuq_bIhtCd5%HoEHlZVmcSehmHrBbJq6K2lQMU61t}0;2 zRATlFDT;gRXB-2!G9q?d%v9Q%{jdqFSx10+vVq6xOu_|i(foP(%1@o8Te-_Rad|Cl z2qy@i{t7q>t5+X{`7V{n`@P{Jw0t9<(D`?~YM>QcR>CQpG}m^jWCLQK`Shs^;8%E= z`|j!`9+Ho)12V^gDK;FtXmmmKTRWHU1%EU}5kg6OdtK{olhr2$n>;{3TW_Fn!ympE zLPcSkd8ScER)gfHnZ5wygUk=i?T8SRK*^Rn!0El5V8fcOFi4OlJ2#cUCfLQ5aTAV# zIE`+M$_A=R52V5@mOk=xVS6!>CVvKd@{lJlKtiS)w-GjRzx8ZD%&~$41ss{aayPpL zQkfV33)AR}OYr##F~~(ps5bd37Ri%67^{yESrgB}N#%%3U>&300SP9%W++;HC%2zSpP#kj+=t zqanaTY8E^5lRj-S=^3fj+O@fkk@e!7(AdT)QG;p8H~IHb@{_eeTgKpvM#!=iAv_)BFRIZcI_A!IomswHH!GV$~Q9>3~ z&IEDizv?LLJyOajcO_PKw@;2r`G^&L8vPJ$19gkJEH~T{%-A@VxKG^TjP^QdHa?A@ zdPC+oDpT{Bqd-5!WUpZ+h|Ap`3bfRFXhI3ZuPC*^{hK%iqGn536W;osQ^=-JOYpA(%M3&n`^Qcvt&8t=4byMRRs2wLbE?}AKJ6aKaHIBXs^?o(0%mv#~Cb;tnXIP zauKX%P#nS@*QP7)k$@AbyoFfkFm5yDBoC>2z2^YZ2h%8GdIR$Crx&&ctl-YKuJc_` z+55@$Nf|dg%@)qSCL*@b2-vP8Kri|K`vRlXC9fjWoTCHSBfbp96 zSztCQECEUGDFX7EgM6INW}o)xxFt`GQPbufbRwZm3Bb=JB3%Vn712%I361SAh6Cyi zx^RAWX3*JegZZo{Z-<=Sc+xpw7Brd=$mjxRwo4gWFb)@N`@9$$jyU zzVr27PYk@7|B8VWiyubQ=S~YhZ&-?GUhn}A^!e7OT>fX|it|ZFwIS_`B!h~I)TpTH5KpfQ=(;QUzd>x&<3N!{?uge>#u*>95#;gN5E zkC4>n1{rJ+HaC>oODa^a^Qb%aUHHuWJ7y13BFc0ua8TZ}t zinV4oHt}AX9hNOOSw##mXZ)h>lHi9k9ntThU>kVMc`5Oz89OxgsneG!>%#)z93%;0 zmtR=Q%(ZY&8e#IJhNa8W4zDj;iXVdRdel8|eDQW~;@*xdtl9=ZK@)RS$x!p7c(I3R=qA=lh}UB>Jh+V{>`F6!SIe(CTkJ( zR~7-f7(L6j;@*D~Vu=B<6_6*?0|=}{T6tjFa{9lm?gGperpg7I;o_1TtJfaqoOK%R zveDmIozfalI!=_sCT)bJNRE!n_CJp=2SUqN$}W2l>i2;*>0|Hb7pt|pEPdX~FCjZT zm^_Azdjjaci?)v1i}aQQZA0=ZlR6%3b|n@Fg}IUR=o;Xdx-xnymIc;__cE4phLiD5rxlA* zKA_bV8}5BJR|+!=gI~Sa0Oytf#0(v&8Ka;j=l&ElHEHpAn*YM;gLMk24Hsh~w(9d> zIAys@4wxl71`*V(q<3prE%_F^6JES zC$f^1QnC$0aL&)vnX~lh8^^2|;bZa*<+wHvaA!l&T&M_19)@3E`PqQlp?(#Bk@3W{$#A{wQk@ zcm}cAqg~F2swE?MLfz4XdefmUh~n=|RPF2H!%9XZPc8dH|BgJs6%$qN!fG#?*xcW%?I9W&LWa*d*xBgOq#5!OMH6cl6lBJxOUGNyaL* zEeM&=jEsF0t8!EM=AqmmELoSkb@)%BMPDIm$Eq^1y@%%ke5% ztfPza==X)S-TZcufPDr%MlM1)eJaA{zdIei?=ksE87_lA{=H|>9d14ys#?2hA2e)K zQerQJ`L@Kdlt@z;MbAm<ljNmj!!6{9qED1l73ck0O`Fat73OpIy7o=)a~wGUb({ z8BX+YcJ+&!4pF7Q0vuZ3V<;L6%n)jqnJOqpkD41f!FFmq6XNGuQFav0_irb8qU=4b29nb(_V z#IynI#jFepafU5%G%1Ci&}+jA=sdi9U>w!WkME}znqWUay3Wr8UEcNM&sb7s@wjOF zzzu3z`WEJZPF0%|&%iy6EJb>)N03?b&T6Lv*!enB-Vm^@ZZtPJ*j4_f`c}$}_z7bV zP{TYENF=E+=-OM|)~v#aRjl#m+xlIYUQXW&`%i?9b$H%gM@C2$R^wq9CI44uYORk6 zM6xw4S<+DIgKQG;<=TDaK>}3%qI!pSbLyIrA4hJ-D0^y+Yvrz8$b2XZzvo7TNm%@e z$emH!KygIGV!6VkVac(e0sW^G5o4uapMQSIe!OB1F|C};t0`wLo2HvxjfgQ6#`Rqz zzxTr7LLa4_Q#_`G+U9?F|Bn5s_+1Q1MLl57Y>v!cIUmNB*|Yrvj$C@Shdc7!zT0y^ z{`;$?YOgZBNxQ_m9+#~n8WC`j>7|A`E*b`UozHoPjVQ>Rmomg{<1WRnK$sH*tx>k? zqjCxdK+W`28GwAF9#?_x5A6S#pOwX&!u((b1GRknHgsthn}?I7rT?WSj=LvjH-Ef! z0ZCy+rt}^OYrV7zwdb@|Eu3~`nanGER^LQm)LA(Dv{tn*z*$6go+p(@>9pZ&%=UEs z{Jr@QL%6&3>IX5c{p4GzC|k%@Hy(q25+YVy)z!Z+d~e6LGkSePo*&*h*gUJPoVPY8 z(YbMrIn>jvW;mf~0|Yf_ITp;DKc>)jWi}@d1$L3m(5fn|`9Qav@aLpvM3zb*4ZL_z z`CMH^DNIcv%U{$@aw;RBi@!^;5-h9ZY0f&@YMj!Z6BN0wb``*4+r<>^ek61_b8(Dd z_;rK;X#%!CCZmMCtD;%Xb&IZH^KgEGP&)xPSVCe%l0f?%>w$^jazL<_e|$pXS-FH^vDEd^UN2y83Q^gh}X-7ytGHHLE+c(_J5}Hx4JJWivWju7gFZmZJhy z`g8wZz2enY_P+%Sb&jhkW3scQ!P^zrZS8M0I^EC8uj9h-=!2EJ_N@0kr@LlXf;LVt z#6wvXq^Os&tTsrK1HP#+MhC^(^*62S=}cj+bUZBK)OL6(M@_#2 zsF7G`(y3fEj`gva$|pvcV(ILtN`J*qc=w1Z_VN$hIh%e>lyB(oqFSR(t%oU49JNNQ z6e-fAhmW?*Hsh(0pxtZUbn$>Ytyp(%h8LXnjO>Ixw!ev47TIJFw5S63r1iU*VRl=x zs;O@}H2O&0F}P({lk4|%l;T!20M3%c(oK<)%$K?cfak2R_BR%VM6`@X_!?z)YzuiQ z%qeUB1Z;E1LNW;eA9wqGIqV=@<<-3DTX*Fa-s`(E5Sxm^+{-5~iq;~ibPULajU8?^ zR%Gx4g(Hpb$SFlkAH5>%_C|cxHuHPNoLLp9=q*L-Q3;au?z2D;YYyiNNm{T*hIIHZ zW5eV%ov5t%^#3d8RYUj!HEGRul47nbV`4PCTi+{}r_@vfPuz-gRrYIB;=P`kN3ypB_$VVyR;KYVuwOh4?AJN6(7gmNsB z!TgcW)r^3Kl#&VBXIE)R%|FxSSAP)!3G3KFa9`Di(}BP9ddrd2tLwCxk^V;X(ql^W z43hOoU|n;2;&S1f092f8Uyi{fCmCt`i=QHK>E*G%HH6W@{_P)14Xx^-A03a|s?H5- zy+EHcIt|<8MK)&NJcnU=%=a|y9LFkH!P>jyeR1})lBmTTuwbeaKSqfite-TZy*HbO zIz5<)McRu;2P&!~F>GTSWGr`efFB`LFMsGKlrP%Kdns~}R%psyB5zvK-1 zr%=A_@p_jwa4&^EWE~({xn>yWPt#G7M zwY&x4m#rWCK*A~3TpAFEsU?H6f5L%ZOIy?aQt^QL#r)>!){K2XhA#sZqI}HZM=H1U z)80z#>-^mxq-*Kd(?2(sN_&=FIdM zLrkN-4H^O#dD$yzRvcB5XlipZrFM3=mu?#i?$-c*w!97(Qv;2FHMDKR60AED{-Y2im!=3# z?Vw*HT>cLkXX3FU&l zJkb6V5NaBx2g72+N)6@yKV*G{SCrA$^~})SB}n(sAl-trbk~5Sq;xX_qLg%lbazR| zfYL*^q|(ye@Uebht@nM`y8poQtaZ;lXYYOXULCc8n>~C}g5NKGWy9wA*wx?BlC!@l zp3;RX75}01!7nax)A-;N>%;2DYhD_kjep>6t)SMa0;w!|aA<3CC;Y%RN1&lc^277bmo%>C0aw(t zpw)2>2vL&-s@)rAjz6ANdkCU1F3&6`MpLFZ48l1*a8%Z^lgUdIN109qMqmY8o%^5iS;Q}>tkGPz9m`N=E!=`b8{`+NJT%HWR*04@xI zUIP4HF&?-xz%rQeGcjG6x}NL3b(7NQfYN{1i9bBHm-b}^5qGzS0)hJAi!+ej5%hgR&<&N->`R^=;rOLQsHzhqezDPdw66xA9W6{^j zIY?b3&(c8{;%R2IIRHzM&=P=3vmU|=%oBI_S!$E8E?JNiU4H1V36Pd5V(Zl4D#+Ps zlxiIhd@=GlP2;c7^;r`WR(Nf`dB;TnDelQ&GD-%l70L$8*4t6|Yq743F=da+@H46K zcmQcv4Fkj$!;TRow4p;$!ubk=P~4k9mg?D)KStjh7a<~Tt&@W=tctc{>PYlBo~;;Y zbB@{duz?v$_9(ZEWZukR;wUV?(n2RP8Knqo7Lf!Z@#$SGi}rGm$KwHMW5 zQSlz*rUaBKnOK6#q90hUR95r>4@Oc&xqMrjXSVz1HMeJ#M&;eA*JBnDcI3to8?r#s zu1(rI6mo5-XI?-EnzYw9?<67VrdNU9Zm$bVqSfNLLvQ^q{2Pc|H5hF$@YACfQ?elX zvw?cz07nmr81ePgf9GUX(#x!+zOr(Le&SA8;=dEyHkP3K1dpTz9M&DT~k$WaomtEWUxuakcS1Kbsg#=o238UkNgweO`_170$7?^BbV~N^qPV; zDI&->Ce~sNoM{Cg9nwOffd{KL_y#!=3m_g2%@7CF8%l|iykUXlkdS0L{b)slDmkN< zm5Yitb2<1vb{(bxLfr?wh1*vi7t|^&selU0=~GL`Lny^2Ys2~;U^_5Pmsk8Sb`5=u zXOo_vhN!|ImA)FW>OieW>Xc6ZFv1G65+DM?B8ckMgqMB}<<@(4zCt_S8g4!qgPUDh z2BE83lRAJ%^fZ7er-b0a@DR_(AV&B{y@Uh;?|y&n% ze>ifstDLRw{BRQ)HEUJz-y3Ps(=|a+Wa#^c=19+@rNgo6RPyjI3Fil`osY79qQ?hc z@iNpu4NZFU_lS>&e80a%o=%&>3Ql=USCzup=fm(xZsx&M%{68+nb!wA%71~9%m|#$ z!$T?>j)X=WH-*Yi{|LpuSP9!zS2Q5xex+Xy?FtTX&H(q8p53ROV?lZo}Sc%t|W} z97qzKn)D9Iu``$6Agn)U>G zc+=Q6qwvq1H}8Ih9K}`(Xv5SHOb0;hb3ha_ETJFIaPPspdBBZwL5Q-U;O)+yFE_F^~f6m#sJRR7Tm zF2*~-jHgDnn&B_~@5|?fRWhFg)GsAX!ZL7-6hM&SB*s5QI`&UB2do;%!^6nXtK=;$ zMR>tRUfQ~sv~02&lb}vVFRE3#W|;igek+&>kSY^M z4*y~8L9wvZhFgCOd>3#{r5lK;x(;pEnS$JE=ks{A{Vc694 zSVlqRgXTkphP<@VT!dviDR|mctnHIQW3OU|?L!yp|p{85Wcd(G82T_yKX#x=x0$IR5JpFsoxR{}v_Jej-PBG$1cMuXMlc@WOTJxCOnx3o`~$Ma zAC}>vQVoqW78M!4^Pu9))$r|0Ny1Vcx&KReTCAwJ~QrqQ1lfeR`U-khGaZ{GH zTIEJ_Ki>~k`ze%4mm?k;0B$(fo4}VCuR~j0w5xB~JmW}|=W44c9(B>|6IRr3!;U2) zs_$nL`s9Ox8esBr<(QTc*+d_Mx>_D>t64r-u!$#dl!xVsPI};?=tyt{_HOF;Af# z3@aGWsIE|t8$yC@V+GZrw+U~yQ{lebsU0+kcOA)ZhS){@pcZNmo1VwMC^jVc?=_4g3Bh46rETapuM|K?k+w72bZ4OnnJKj+$Rq=t?=qIT}u9K+NC7>dcj zKK!GZ#T$(euRJ3Yx(k5N1fn`S#Yj^D`#Cii|H}ox7 z%H9^rWwUxi3vTj)Oz<2nc{d$pL@GGmX}#6B+CWuV>ogx=smr97x%#u6K=G#+uPz4g z&Eq`>!DD&W&k=aDwF4I*ea(bpTE;9kC&g2GOsQlz7ADjZ*#{42rq29LIQBsxwz24M z_02S?pF~nG7Z{KP+&?9{p#vO>`xmUcQxNKAL3=xh<=s+`!P+LAR|GN|0PNw$L z?Xe*E0H>@62P0RjcqM<6d0Ev;07EPO@)u$m&_Bmj01JjOs~@!wo0mscb)kA7StX+c z9zjm%`}->jbzm;XsX6jP6jUxf91W=!j{X># zp>ib@_@WE1EDs(*nk@C_W>R>=7IP}_gp0yD{!Ys`Jr%+Tft)7>tt)OA!EY7O(e=x& z?ttE~NVCl-hce^y^m516u#3WVgrg@(Mrz9{T@HFYOSZ-$4_4MrI%k;mRk4ZfIX2?;5g z!!Gi+cjTbPo1{T_*ymI@uT$0Bq=l|JcPd@~LOQ~mu_?}{4mC4R6Xy%Q>ftiyW;Na~ z22oA*vlgjxfMb5uGj_1)BJU&*yr0ZH0^4!QJHT|7`q)-HULs4ePo4-q^g_#TawA z)&2?%Mpr3e(uPve#;)nmDPSJ5G_nAa6qFR1d3(fDrveby`5JVzEa;6as`6ovO^<%Y zY;3$+da`}{sX68yQyNu=m*PpL!8of((%NZ)LnT8$N#>yCUNyWKe-56kKKE*#_-YYqQ6G^ ziQRy$xHo&duJ^2O4=|m1;V*=^Gdf}8I@tpJ@PPI^40nNA7mqAos)e}e1(_XnoEHU4 zg@<|No@62$zK15#tMbP6F0x;K&YnBbyeVZM=AtQzk z>3vElHm?kmR*p4Ono?z-4y`q4g%KJmh^@>gvEDh<5LunfZtqB}QKgM0X!*7n z7@LN3%eO$8Kb|?zlkMUya1H3@2MgmP#1_JEV9tKKs9y|zu^KWdhDFoH>E764)beKQ zmkm|&m5g*aN}?B=-FJzQ9oPg8D7eEN4cq6DiL=(Z-M|9Z(aeu29*SK;s51%8u&diOzsiCd$LuW(AH0f>l$7H#JnPkez#w2c~ zl@L-P92O)9yqL-cOjKJ|>B_FWv>Y;7P154lu};cR#RkUs9Qjc&vd7*zqi29d?hC0}dP zR3d;kp**R|u!}R`CxKbd_w#ZN`U^1bCLdQd;A1zQ+?gyAcfp2zR(N21NK&}y2|@dJ z5iCTvx06i;#NV&IAhQQiV`6&+n&TBZ^{S5?a+EMALQXV8c^}O_rGsRRKhIrY^v6_p zKaL8*00=3}Rn<&tjOmaI$_FsXFmV+vW)Z1o0D-yXpD8!&<;L#v{uK=|xV?~Fa{@vo z-k&H3wNE)MrGpkL2SIVig%J<<>C%Z>c|tox^OWutdl<5k9FG80(*Jv|cnKDt8i#WQv<6+jdey&|-bNveHZWpI~IG z92);38lp<>SyEXuMOC&M6J&Muy$*=c1yr{0OF$~=@!{ci1o0Tl(e*>tMmSOb`1wJH zQ03gKeJenA>tYAd0?QpyERaku$Vv)r`($_?K@9ogi-iWl$m9z%p`)GhEXvO@p1qAv z86&ZmA)vk2R~RhYlMs_NE(X*q&TTZ)N-0;T(5*LoTbil?1S<-~9RlNN&hcoA)t{@! zYxWmCwRMMS$y0BAnmJPhos*gxOoob%-^$w5admfo4z~NGomF;7?D0FW0B1*?V!gzQ zPG&Dac2DH3O2`XB$FfUuy}#U6u&Ae5wsIaOH(d{s_6a`9viO~46Ge)gpL5Lk{5@oZ z(PicI6~;s#S0$F?2O*w$;95oCFg4!xNHPw>7{)p37l4r_OEwK-b~i9gi>-@UE;nmd zHL;h-Q;d3}{3(a+`hyOwFmul>(^;hKm@GTP#J9btxvKrY*#D#xbvcl>2UV-lf>NW0 zjcCb)q*%O><{9-BU#GETzC60*+_l8Je6|fpwdw*Z9LVRL|I)nx!nD7aqk;SBnLacV zD#=`s&t!(x<0N~MR!}ZoM31p@Zb>xBN3}RG%z8YXK;%m@K;wGHT>-gz5+(ZI^+b}r z2a>5y_)vH_z{NtW4a%EMi&9)qLcsGi)exBj!lVMV&l)d=XPC$f@kIEO1FyC@?x1bA zjF;QA3WHq_mwiE6zR_wfzp@<1`J$@V3M}urqPNA7%#YgAmR>!MOWsVsNf95BW=Z`2 za_RpIZom28;C6(;b&P4w!BY{%=9f(zesOnv2g$d0>A=P8=F`PssXi0CIg56jdxBe1 z2l+=gtb1ON>fa9tz`5RPIpLG1R<1fx)z6HKsK)%NVhl4h{62CNod)E6@(%)o?37V# zO@k~ge9(d(x2j)Mv%j?E6Weg{hX^(KXZ_Zx&W$AjSM>Li=lVR&3ImxeJsr+hn?5{C z4Pbtl(k~C7c4LSY3SJ$tq6n-C%JMOD!5enCzcRjxc4d6I=Y=lZFNnaAE`(3 z9;=_ffLGbyB*E7_w+)lxnei8IFbs=m^f4PJ>QW@e2x;c2%)n(YZCrkK`99jp2NItP( z0zU0s^I0&XA}2C^d0$uPbH|wG8LD~inV%3I0nVDtw?xOwq5B8XE!^wU>EBi zO^!%eoL^6E<4DL~K};V1*p9L}Vr@HZmu!E9c~FTI#a;r{V=M7yw)x10up zJ_GWIIoPT2sX&a?&zW6;D|fhujHxe5ZY8v6Twk>q#U&Objk`uSJg4hcqy3zSXBWt- z%N4LeEillXW#Q7ln??fN#^#XSA6Q$ln4}K)qRC{$X-gj7IpejWk7@+@%oLpf##6*N z`S$3}4Eq(tBs~2i2JMuje0J)NNUv5afw6{|F+S>iaW}|7mkCO>?oLu)5dlN9BBBPy z`vfmyZ+;zJ8%m@_V?-O)gcEXE#viHcEiq7bJFhaM5QWmOD-Nlw&Zhp|(JyaLh(l7^ z5SiJ5&t_IRH^Ru46u@*W$ZfwnsX?Vxk#G9IFNP$e&ut(xrM$D{Dx&uy%no=$F3V4v z^X@&`FV#XRky3^$oI7y~{^`_yj~lv_SmuaQnPR#r$%l8UDXl|+T(#giOkodvrN+k2 z!N_Fy28Tn^ZZEXH#D9{s(DYgH#IN;rQDb6K(G3HhhuBDD+nCtQS?}(T*TBkbiKyFG z#(?&P>ojvfiN2(TB*-SWe((s;(HE5C0_a6EL<=`Otise<364^x_zQkq3B2;_RmY4T zoc95>&;@>V1f1>l7q|(#db;HrKvX5Uu0bC}U9_0*_idn6x^O9dOtx4@`|0hZZKZ!0 zFJeqVMnGZD13M9*a4TR&^u4UCjUiFU)Qz3Qr`C3R1pr*iINeo0J14@W#0@3rQ+Kl& zZ;_$aiIOrV;Lp=qIUp`+tgI|1mRe$MQ&dzwL{AZgxGZ;iI}?lmE3{?uzgX1-7yK-y3IbUuUf{dXjof?9bZUm55XRmM}2rBqdzLj?C5 z*w|=Esy;4D5RZS?91$j;Rv)~xPR@?yzo+t%$Nl5Hesv*M&oFqfZGWb}?qaXjh4J8j zsn^b*R->nvKKk+~e8fd%u9KXG5j>66_qsFQ1x^v5GprSej24u}F+63NobEh0K4<3c z+#K8&X=74q7u90Mvtx67KrXE?|hbW`$>4cAqA zUrN}(zW=hp!yAsR2v(k_*ly(>?Q&dXzY|N3`5#)oXQKaT`MQ7gk9SBN8uvL0TF5vo*@Qs>nk*cU*#@)sajvBEYO zBSxt;)8G4rVWeqTfLUo%#++21p;%#0KcqAtsfVoq)9*-hR(n)O)0la4n&bl^tw#<> znHb71OU_J8lf`q5ZjJj65BSZ+Cj<>dWILOoG!%5E(S+RMlbr>vBZi%9*cQ64R|x}Y z4h~KIe@j4V-r=Q_K_eW;1pwJrZ)(F8e2_}{LM7eG)+3p-GN@Zp;rBB)zr4!w<9hLy8C`^h8fr2L?YocQ4WGiMUcey)VY!K6@!P~(9I%M|=0#$hHIh)9 z$Kq>zB@QoVb9 z^#Pun%(w$SX4R#r#TDk4T zhYivC6hIM!rgi-|=M-wNgLIqI8HypLu;Sbnb6lSQ1yK9aY{_|roB@U6oMc27JMH^o zYC5F$t1IS0$pM88Fpc4`_7>+v!d>hbh5tLwE<=R@f^f@u<idS1)9! za_zeZ!|bU1`yMKz<2n^6-U3(z zcefyln)a`!-iw*tUUj{2>dk19uom}F){3{W{&i^t2>J%MIa|Sw#Cc)w|=)Kgf;7$ZK_)Hn`S{H{aIt z4*ofvw-P)#zi~(asaVSe;mC1VqNLX=dtI(Vq~HW zA`y=86M36>wrZ<=S%woEA=Me>zYb|w*v!`>Uu7icO*jXDJAJ{)EHGWmtyC*LrUL0+ z;+p7q!*}7JCnfteY^J9otI;XU!fCBPG@wpv+4n8DN|b%YuFrx!9UKlk$s~YbJxY0{ zXCX>;YpfDJ8Q#l%S$~k-i={fseKRL(wPNP};?#YV9I`FjbWAuS6BdY#wVK>5U$MFS z$>EoDj#2W9LU%h6K3}1bVG7SOml(tb95<#d!e1Q>+CWdle*!pI<{sx)Y~={-VvW$L zk4kXHX8*K~!KFl$hFg$h&f1p)iRV|cSXrI|v`x$zUYUJj0KFxTk za03z%P6r@W3k4fc8H-${o^_n&sGsG^>ac|#Hdf^S@9E4g!nU5i&X@?8nEg(#$ zh0@#=GfUo>fR`J}lU^896sKYDhw(^&=ObJ;eDI>rV>=LMZoq8HsJR#>^y8XbqD7fh z7Sp~Y5vc>waRGDKkja_ZnQ}8ft4>K&v>1cnjJ&9j?<& zVvtEld;Yw;9LCONrm55!^>v;{2a>89R-^g*(QR+NfbUcLjR1~6?Qh{NZ~izM&Gr7h zU+!+KfOF~PZ<9D|VU7xv{u-0`VCo>CLSmKotMgJBa}=-;sngb#I>i1dqfa({6toV# za1%kDq7kA=WRdx@k)OnNRs&;u^|EuhrIVX2R@P3oz41*eA!@{kMvN=7vR{Ry%%!pS< zH<9#V(*mLj7R_54&&5Xnq5Oc6qo|CGW~|kcivz`%bOBq?BR_ySr#AZ{`^vA3C5M;5 zPMe&Wtm{(A=;SsiIC1W`?08VB6mc#wS-zADWsoC#>&k8(YjFd zPOeasTB{GDnY%1A20!Wj^II;8bj!gHbtuo_354ihI+B^< zUKLkgFG|3O3VtHKNq-wPMB25XWAGDN^x2!el$`sNG}^4GYeF%NDW%`@8oZtpi!@)J zM+nW#BJd;%gQ1~)!+q~?_ithGl|tmeM~ zVV{`O2wRux4vl4*-)w_vpKy$xL?#&+?S9FK_5Tiu&!PF*7Gt$j%B;PIWb=DGjT>Yh z8Dw7^(pu_Qek*<=3%JkQh7q z@#FYRfzn9;O5b>|$;bLqM~$XlJMS*c0dwab!lqQt@3y~>^|#!$;%PO+znV(brj+!V2`H&r!-KM+wgt1^lL_b(_I4TPhb{Bo8K9iRZQ-(BO{y?+p9 zBeKeeLQ=paX-zxZd_85VK;9w(W+zV?BU@L=kJIpwkt8qGjr+R%ITqYF?_(FAzuv|0 z4Gt>5#>cNZf1Gsmt24$L>ZDKM#2kE){EU}!T-T4RI*R-#`^X^#yLt`^wH|A>`epRe zIoV|IF0S`xhQj^Sax=}^2GPG##4|AP%^4?_v7a!CAD96Dp|0&1j-#l%*9o~-* zUCOj=G7ByP7e@oWn$!3;FJ{Rvx9Lk|rsMe9noBv1V5st+;1_rxRV*41@sspJHQVf= zl@K*co;Lw8T}H$?73;V3Is7$xDAe+BYcVaq2N>m2#C)|vXWsh!^6QWv}q zX+UUsa!zIj?URG{r?e_Q{dZ!!oGOKg|9DkeVS9Kz?B8mC{Osc%0db@-rzgxEZcoDupes+4sSTAVQFz9^Dmp?s z*n^WyejVM1>$u}nBI%mhrl|r^P3QS@Unmb#YcF}&cU}~^0rEU0=O0>Z27%I=^-`6z z-!K8HViC_&H=Y&drNS1N0AlD8-fO6{giK5btIv^US0tJtFe~|Jm?`e5!%*EEls+x4 zUhlbs8T3+;3Nx@JRz=Yc(S*#R?qe_S6EjIjq#{+9W;@FguIx2>GQmNNJ$@F(S49Ee z!A;uWc*hQ-8L!_w8v~h!ppHdddqX@&XG;+IW5+T)VqZJlkr{_4kPY zz$gy&a0~Q@|~V9 zERl1tp>53u%9FBP*2EXRmnWw?*WmOSOHlu_#c}5b6WhPe=j-Nn+wDy?4izHniW)dAv0@3=A z9sL;eI1>+p9x zgGLyEp;o?5QUOsuVO{?0pTZ96YM;&-C&?ON?j}F*kEn};sTMZ+=2tR`saNz!2a;tc z1*(`kxjf}yw_h{pQnKJ^K6Z5bDrEcM?Zrnf_g~6c=bA^q5{dQ*+g2_&&B|O;F za#PuKVC>omVM-zI_+uX|-!RmP(JNJC+;3b7#1 z5`z_Y7G52iR??iQna#uJ&ip6smO=j{L6d3G^+S)#FjR{yPx z=G^4xiP6y3wRXRFQ)(4wxQJ(6gk!VkAo49ZV9R;#ThOl&G}^DV%t&CoJ+TXgbox-l zhLawuVd`rN)ODm8Xi$NwfemyxDV&)n{>|=7=;k-Oj45raq`jZm{O>KooEnIT+SK-{ zK30;r!&gb&v{Szs@x!Omz=d~!gdaB5{5hhnMM1bJo0CYU?_i1KTl%5FS}fkoyC{+* zf!`TuMROg3I%ssRDB^C|!n;;~D0Psyes&zt+{8@8kVepdfql`8Gt%Ct`ZbId$r}dh zGkRB297mEo^@d+x!x5Qu^Dm~Ol2RU_QHDxXND-hnP~N?jc%KaMKv?M#mhrqSN!eOy z5KuE^akCbTQrf6b{!a^8+9Ab>Ttb6<->6M)df(Kp?MY9j`$Y$7W#>?^JTg$`HJlqT zGw1uAciqNQsu>m}&?#4v>ui6u>kAhtH-ARsLB!RuR%NJH3y-LW;jzwtqi_35ycvY| zvIC6aU*h;j-I(d4L;jDCzSU3n*0{Ni8@T{_r$$&#at6<&hLa!S$J&s|I@fFo9`Nya zRP7=iex31kPYf!5XBdd1A(UPwNF?H!vW-kS6qXOpqLDl;Fh#9xti$I5r!0LNu$=j# zY=I>#$2q(<$5Oz?(fq*=F*}Dpp?-qz5*nlw808X@k;6I9kQ-dYypIGmzCq%CWt+&X zC|3ilu4;&I(`$OV`9>Abg0Q)2m~wjFf>ynDNlDXT;`_ypQrPOIi@KYSC9K5-QHet; zus(ALH;dv*3ZvD|FA$;JBntSRelv--(w}FwTzPEz?vD%b$^xl{n@({E099FMcjW_{&ViS!8@ZAJ=d4dW8(B)GAc7gsu z7fCZ<`EZ-lsj~Rl{m|SOxiq+rCKdiAK$<85(-qa7noae7in5-W;Az4uv+60ZszBZ4Oomm zOt;y#rT#YQ3QxzpGB^D#Wr_Bus#NOn(x}-WzB!}qo*46V?vLgBMp0&xF@7yKkBCrp z0tLm0Z~WhMy@VoQ5q#=iXfeu7DNfQsW{-^~Ske1Zd}J3Gdv$ki>jQhxAPOJN?;>Ak*dt33+7q)$&bDkeJb7<^Vh-6TX9+ucXnMu8w0-@OfS z<@ns>z`Ml7{Z~T!KRmS-KhHurHy$^c*As@*Cl_g1SYk)|;r|j`Sto3%oV7@&cpkr} zuQr@ZT^$t!aLrRQC9U6sisqxvYaYz2692RmjNUf9CMi+Mm4BSH5LvxPCO=^I7Zh-_rUknF%YO}1r zsiJkbH)uYzZbpCJP){xRPmhI+P%Z@yem1tMYLzTRx+%W1%q`i3_sl-@Ll&wpvC z8inc`*Zxf_n3k>#SlZN! zJmP);bn`##+O;Tk6t8tTL;uCF5*!f(e4xuQ4L`_j6}Bdv^!H56mHGiQ8TyJ+v z$?aIUZ|8hdQBUH`zIVf@RhlRHrOj6Z48~Cd6|a~Av1`*P4IQ&pg5JDIg&iTW%l{Gc zl>YS2;ZFwu^xJlQ*x#x?#r*nS>YU^8t#lvh#I&@CHGdChyfvs|S^?P7>zD$Ht(d;y z+SQ)+pLKy2WS(E3z*RnSKRVHFecDDEHdqA{5)tG_GX=^>pOWm$&maMFb;Pgd6p_|I zt!dnOA-bvkWl8I6ktOR+B~Xr}c+H7(K`~)L=(9t|PeRC-pcE{bJ;(C7TwMM6f1^;W zi*#{JKXJ5&_zrWXv3Yr??XTf`!Tu=m`>CacjZWV60CS6|y{#LmB={^8U#3GI3ncK&36ixepXi8fO@qFUX!yeBf z%rUu%BG9#Yfq|l1t)>GPU4wU=<1onUs+NPzLF4gH;|w&5*Z(l_Q1-_X?|dh6#=EN2 z0i@^Jq;W)^XAb+AP)#+l z>Spj&PS~=IaCxj(FZB^Odp00~6M-E*%8QN*rA|Qo_>8R$3-otmP>2yGpUjJ>PWHml zBL#tC$aE*T13ef`HHZx=6~x-Hd=99w>Cr<>EVBYKAXRAouc3hgG!{%d5**a1E4uT?;0f)TCMD`^?6y z9S{7##=ks8akUA)EOa>#oeuLlye~T;u3cooG|BI&{)mH#vNp{L0lkVaP_FvgG%y$Y z#FmS`=U<({?79-pTlOfr_`7$9 z+sRAdcR)<#1RMP_n*9b<@lsHA5<0-JmRpXRu6J!dYW~BHj`jCQ*$|~SC#&^xKj@8U zajAY)y36#T`0608$1t|7-pHbISm1iPS^AMI7_M5O#fhBiZ*kLR>Y2r34icS~E&~qO zT$?9sP&yDa zX-Ls0yn09?P$5IIg$Soz6jb5#9b$2Y{fRWG!f{;|{AXW{pz>pzHHYJP&LZQh`z6SQ z^YJ5}p!j}kj;Z98^LNAV%BughHouhW-~P=nW=zvhDo&R}OZp#UhvG~|^-dkMCurvO z&&HnKb})*$F3x+sP}cz|0g!Ori%!Q(>=%?RhdMXrgiGTC<(;(Ti#~k)^)@fIT(PU^ z2d0mkfOb&7D$sM8xO~b4R?Kh9M1`a{`VgpDT23Kv(q~mfrd)5*I(NY@;+aAAo>A~P zaWj(A)H`f7oVYNP%|mm6LCEJjv&Ksh@${zf9O|u(^#>79!X#{KhzXx&{=ClTO&mv% z&MHcVs)coKltn+3OS?2e)vEvns$lq@Xg7ae4r4Pcw|FGUu_c{KhH~k$rO@Do2`?fk zfKv*^ppg_rS5p=##ojI#PfOnhA0wp&!MM*VP25o|Nkni*b0V8GNZZeTe0{gd z)Hk=5nj7~z8PhRrb!gQ|hPDpwD~X#4bY1qK=+8^x@v80eED!(A%1Sxw50k9%4GY4)NLk$QqgmH|L@_I2rDZRe`L=RC3Hxj08;?U_At%#9wD6n) zJbZcchhMztAG+8Lckhs)9lA)ljPBC*R!KXZ{S+4UN;u=m_rde(t{A%`(}9;NaQ%#K z%{5f&;p#bmB+sA$sx#G1D#hw}=#a`Kzr_gYpq7>fQ6*VlTS5|Xj&;<>3UbFLPvr2| zGSVm;NZhBw9n}*md4QOTF+b7?EbGHucR%|dJT0$Xql;Gh(w zG&40Sy25`)3tt~F!-C_f4vl9cQ&%Vn-F1wmS==Ytt5PQN=()^eEr}u~AsA{CWpq~7 z2nLkJ$k+zv!N0q-?@@heMU_@R?;=VSzChhKabJeMTmfsBxT4wa;Z!=K)}5xCPjNLf zX3=J-UeR4YgWAD$G{5>h-r)Lha&Mk_`6TYiBZc%senZg{)ox0)1_?2Vc8-YxM@Nzo zh(>8lQs8jtb|bdAB#dsp+McKq_5F1Jh5gZM@o#rWa3cf#Edh|A3O?UWFFAyHoqdJ* zOu|+bb&bWK{*a7*{y-ZWeF`(d+Vo7nwS*Nf;P*!Evr!Qoc(R`R*BR0{rM(Mc@+=T; zdMw3RZ^V29k$j6ld(1nS_XBH4m3HSjha8k#%6Kx>>U+gMvF?V6|DrlWhoM_ZiG*BA z&!tAS0P>qRz*fA2)RPi!oP+Tuh^9>f5)6^J@5YWV071Oly^>MLQ+>jj5W*vsR9TID zGQ_(J5h4B!%JcPpKXOk9w!t_lZ~Go4os;>!bO*#DpsqC!x-L~eC&(>RpHfc*4-5=_Cp|NR zkLK|FV>5yo235R;`~T4El^4ci0~Y@-i158nZw^Y1$Ugq@>hAtDlKAP<$Zh{xcN97_ zj@1GK#p~HQV<$=2GL>CEX1(&h>hF?NFxh+XoG-(h_BBExwI)I&xXz*+F7SP&2{R2+ zYjM3?3|dq4YWzMFlaimJl>93+5>{IEtol>VXJMaXEHK3F2vWsgLMUOKxPwAuqW*^!g!==7wA=v@R^>2~tRC z!+r;N7Y%%-HUgXb2k1DtAG=bc`BQm?>LYi|t*zUJBJ5g;vdK$A5MgweAP0T`ZKtXg zeQot8j`VRA4&+CH@pIBaQK~_K3GY1@9*|pFK)Cal1yeH%(YMP(s2oOorQP||*0-Sz zo9`YIvb-<3&O|9|4{92$zGiD*D3Ia2;c^g9bT0jBmhQ3Qq%v+@s$I9&_82-I>Dj186X z60vEWIFHU{9r}osIiP77TB>2}7#c#PUq~MmjiG4^#2<;-cA2BfLUs1|BmbD}t$j$k zVXMi5l^yhWte5AOs_ zEb3mO5mkGZ2=%=a-3Hy49q-n_M7wYOABA_bJ+L}4 zP72MwmjDnqx?ge$eUnHj>mWJaa_BRb*)IS50_0)nK`?PnpoLHHN=BVg47LVSpTR$% z*IdSeQO34%vyumpq<9KNz@T6FBxN;TOve1XLQnd`&XImS!N#3H-7e{XCB?{`Ef!$T+a zDL&u)_}zDU7bm{(>=S??hxfnOI?J{w<96#$&<)bkB_-WCv~+iOh#(*!NDSR2Ej7}e z(lsF6T~g91-Su$qcYEK@am*)}H~(v$Ypvh%JSIH``G~D*R)X&r)BIpzURGN@g&1~I zpK8ZAFZf*!gX_2EZ88n^`Z}>&u?fa`-4Ott{%`8U^m3D`9?^GgNr1Y zS%FlXIf>1?$(=86??qNY*J=;@za>@{mlfH;E2$KfjY$7yR9&$-#)4Ssk!#DZjh3P> z2$o-^}; zSToZxoh92aG5*y=a`cw$tnyT-pPcEK_+W$+!Su^rGEa1^s9UfUa4}Le4T%fS_j@Ab zUtDaGF0~M?fy_UkAM4GjdVEP+oQWIOAgT!;DJ|x8Mqp^FKySy38}MuBq0!I1Pe@oG z>mme~yj6qyxQy|&^b+`p-TP*|rWS(;6=V`6n;|DS&tg&#GSwIgi z{(JRVp$$Em8bqwMLM+w^0w<)(fz>HdSlp-V$||ta*mH?4a>}0lJrYGz=?HVR-{zvSWP>o$|UDjB zC4l;ufdQ*xMmT22v&=+59Cbj82X9S}vEp*w?f_ffscy6;qW6|qIwDyL>vvv=pZcQd z82CE6lQs@afMt&KnuZ6JMo%K(y%E*1of$cqiB{YWw@DBTy9@qfK^_5?WToH5)Y&U8 z_>+xp|MTPCjX-OvXWc2!+89&r$`ED8svmO1l0eda!wF%i&OYJ0AGzYWX5#XSn|!D! zG)sr$nR^a-5$EpB`&kS=-6p-b%Nczn&Ol|@m?W1OLC5dcT(`{OV53Asxd;R92VRnt zSHE|1pA74=4hV+)mX@C(`Kh9ESqV_SIJy3|{K0AeWGrk>a6||_n$xl4rd$$RjrS&% zq@RKFT_@7;Bt(40#%HV$RNlWj1MMBL1)k!mav*<=&WeDlat>ipaqkzP9Szy053~Lv z8(r9ofBycA5iU&d_7)|dZ#TzR>k zqXv92_|wqW->~+}a5gk8U;I7)ryw!K%H34C;}PM-g>WxoK#>7)P;}~Cf>N=wui@08qBv@64Fs!CpKjpDBudLb+Ed6nUqCKS8gBX( zjA(evjCbN2rC$~v(e9{yY#jEq!odh&pQHMvQY5`)SAbaD08MmaI-)-zMY_4xTMv96U;nBMma=(?&WXpL|3H3uRqGy9 z+##Z65H=7F>%>n5X#}RLXe`#G;r6^`6c_?seItww?DdRgLE!g1z9d7V*B{=(qV%z< zlUY{Y3cV8jDnSHmxfpBeFi5O0;#uq!l2d7d(N@4e;SaL7mk$sEYmMFx_Urz}4e~i$ zv&i3TNZIc-rUydv6^A}C;Q}n=a2PWYPx}l%vItWL53P^1tM-O!)@KcrxWX>qZi2VCxR@(H;Jj^pOoGsrUoex?dJ1suI|BP?z|@bLCZJE?Pk; z8_CDb4&{v?YOkh~w}V9x50%yUW2pR5HxGa?{`;Fw*I|PPK?@WXN>BYDKC$K;W-+l3Z})$V6`T)WNF5 zUyP1(E{DSz^+HC1oK?}u1Wh>M^Dl|u~`_Fn;Er=;oh`4M+R zYa8A5zb9n_-o zrs$8xlwDxhAuBH+!Tqy5kdBjry|)9JN8AT{8=bL$4UE4zlVAY(C#OkK-CMU6iGU}o z@>B=7;VXDaOWzXs#05_j`x%zR42-Fx<#?RzOJRUxd!e9d98Z8=dB(LoR}M=1maS zI4AOH&!cZD3DK|`oU5Jx2HaSzc{vA*bILBM0P2CQ) zSJ_7iVeOeESYq(1B_U*7gd_aj*_rlE<1hSR6;^j6*Z^lPu`@;{KmsMCQYZU;IPZ6Xn zChWRaqn#UB6-PK!pXO${%(a&gNbHtmI)kwQQ|Il}bPY^IxKI*R-d#9>5ZU61doui| zbSnxpFgziL|J>aYm%WxOt?#)UL`M0f(*c)u4Q&x2TSH!gs@5)zO{TuFU($OSN!|ny=|yaBL5+~U)V*JU^f-n}boN<uJRS_|ow0`yI`52ZBYot^)gtUMd;{f?NCJu1MO`ZYwc3iJea||A@0EP+0 z5H_>%z1B>WNwb^O4R%TEKLMt_s*+zmAE$riI<;O**aVDLGnMPDb9XKQZ8&g=tts-L z#8LYL_)cY)#AS!L7oO(wtk?Le)a&eH%p#qtF805K7~^_@>o(^5xiAvK(>~>wqQdp* zaRdi=8gPtt{YSd12797X7im%csA(gh^L^VNjMHikR(cj21)b53b6zdtdR?@?1m}-0 zx>jF8(LNoQ>!I(BzhusU11mPvfbE4GrayEbYIlFEr;I!!B*b<0st7yUYDdu8W~Fu#fdJVj zhSZFe-HLxP-f2DIHi+x(#?1|84=$blTFqGj&Wg!va0lD$O>_7tl({PX$}!jl)&-4N z#o<43v(Ol2jCyNB{?>D8+-C)YTo_fOh$n4@-GqXoT+VCnQsab-#Z}MjrI6bFJ!2 z!4Wo{CY5cS1uoQf=DSZ|(I4at#p6(^?s&jrI3B%|ii3^-OI_?KmZDt`ad49HFSb=< zR^9xP2*z0$0KouD2^17m>E1*0;156ynSfm4U1*X3mC;|Yac@hC*GU!TWOY=;ScE*- ze=@^WxR^5krZh^z_p48b5XMY)jOA=L?4>x>MHHrIb=@ikzWoS@$l7+dV^obw4A1gU z|8|YLXYm|>q@P~D2V{%yUj*l#$Y^dk#kX!&4V6(vS?j6*7SqR1#azwaU-x<1kflWK zCH=w=Fb`;rY^Fe;UtA;R?FpUT1A6BxUL&h06b|c9rRt^(@55Ej{9IY$tFg<#5!A8_ zJ0kf?s&<~fC3S@3o}-0t<8b|EWC)K=UOjH^;J5)?gClPPm$?nn4_7yL?>^^{P9g`1 z3Hs{200p>>%X1J+w1oF0s5Y1gf4ob6qakHsBWw}U7grgv^!lB+9)drz>FM(_AN4SIuj0QTj1BmfRlaucfIfnR)j=>lA>s`5f+r*zoA>pCDeS@@C$) z$NJJx&7>gJn!+z^{1!pDM@1VI z@A}Q8x+`^cEZI1Q*@(dIdrpMQ1vkQoGure%j07>XG4eU;!Y&Ody&4reS_X~W`Ny_s z2AsDW+&d4dN>z6qCY-OkVEzc_ZhXYf6{1!^iKB|-KO7DW9%4)C zQ@X=Cz(Nw~A(;Ij>Vt$zJS{QcS(zeN`0Whkyr;|jpK86Fe%a2qN!+usM_-;q)ssZ% zK8j*W&9b}A64%L9898?~j~r+P3sp@2uivr1!yyjfIkjPb*kieIx6m%--%x{9*nZuD z1ZB@?&YC_Y)7pBlRM?h)ejm~_^8VzSc|D3R@|rn*+6Z+yYAw@8ZV)SVAr{??Jpl9f zEm0BiIB$R@o8p{76@v;m8!XDeJ)0ECYDQIuuK46m`{_%)EoHJhA2|pF>nSOS2@vc1ljTy?HxkpW{|HM0izis$fQc#Bn8Gh zUV2o5TmW^_v^+T*s~)FU9N;%vMu{rD5@Lgf)Z{OSP#8!q<}~YxyutU{Q;?ZzFpJ_6 zy={obthOV^jq2?vsSu)Xq_@Ngicz8JF6xBh1qz_#>)f4~i-KTp)u-!=BO%NFn5?iV zKE+0|XV}jQ-fE8tReWg?d|VuN?v8Jm>UIIte(suxpP>HxxlyEQ1@Z{qOza$JjC?;q zt_nOsb<`a{ci)^f#~-cwo1EiGm(6xizDMq$`uLfHV@!C*;4swAIyp^rW~9>)BqOSCVuC+QI{{&>E!9wZHCM;0BCEnASt%HAXgT>p8pJ7`1ATeZ+kr zt>upR{Qf7hd^liN4n&3#-sJCj$xeicumijngoRMWZl+l`Hhe zt-JLF4LhzHeFByKhHEgkACIH00bwLK(X6-yHsOK2_nPS8$`Sn8?Q-DE!VsRsB_x5|tM9G#v$)oMy$^2h3sd=3?gwuHnHBbFBa0Vv>tz7sRnz^dq+ zlpBI&a>7XvWfz`1KI$fnRA^==2378!(29n_-GVd638`9Tq+H3R>+j-CFw7kXz}Jz-6_ka3eG_oOZ@4 zP()@IGPIOdBsL?_Y1Z1aA72Gz$?&n&K3i@J+BM*YdbV4IHO8ONsIv9o*chdQ$6aL_GERYTsDe34bfpw;;=*9ux6?9Jc1F|*Z_M`%oOyP<)q66flE#Oj^%K{p} zBm|p|2<@o$cbK@TJClKe2r_NX2YR+rc|>@{ul%;Mh8Z&ZGY8bH{39PtdRvfDCm}9b z1Cb9h8KEqb*=6fs_G6hxH=?Admro_UC?!u`S2#t|6k0g`$H@M2aj&aYxLK_$?%hr$IjFzW~|d^Lk8 z{NL37IJr!&;sX@Pjrr(X%}q>=fQ;c$M^H3pEK_35@p8{^uQsm5ph{ zvimCtN&jF>eooM7S+H$u^V>rCgD=Amc2B1R*GPY1FM?>US+%;!4 z9tx`4?9)ztU^75{;;wJ)c!Wx{ry7k%$YnC5D#mQT#i%th?UqH2KEu&W>#e)Y2$YB$ zyf+-i?$-9+D50QHI2 z=$!#9H9ytQ**POMK80f@?$NUM?Bvw-;G4Mt6iCcUUiBvDQ|Rd{kc97{#s;4hQ`4@7 zBw@2M*crXVdc7NYr<}k)fz#MUL7VgByWzqT%>|d{=^(lg_d<9HBnGnt)VN>KL@+}! zS}KHf3u}oKr83ZH)^h?=gkvXlzAiD2Gei2SsR3<{BDhKWMWO0F`US%uVA86@9MZv( z&1q}e#ZY!u?qTa8R>nhpDm~$_;KIB11tyT?iS0+3RUWwRMmKZH8(?CZ3V%EoWc1P$ z{MG0s<`A;BHZW5JY3HofY(U-fx*EPxhsdz)NWmlISq-6&9D*ON5ykMew}oKLYnGy# zdLxP>gvEoP#95l(#GYXt+QlAdMOC@kTl@X4Prq$9V(CcWl$Y z#sz4~r7?@S<8apzpFG)sz9ua-erN&}cbP&&P48PFCy4nNXUu@IwBk4u@Q4)_ilYYO z+)*NXdHVZ=yhTDY#={V9>;=r^7;1nT0F-_xZkK9LQA+AAFBl#aaOD3j0y1umN(+DX zex)=!v@EHp0_v4L@=d_Eg{z6;0okfS>aY!H=nwVFxIDr3gK7Qskf?e}H= zOKff@m%K6LNc4gXCv~f(0c3H^rAmJLXVZ%Fd3u`>fQ+wA$L^tbPJ|K3Pi)L1a`N6T zoU2)taOQYN(a-khB0cjSqtP80MwA7vOdN0lQMiT4YdM>{YuP0gxcb9}vZR?rqnOWp zdE}-%gxCU@NC(h!^w*!Lu*V-KY^#fm`pwU9|ia{46d?kDB(EzXGy>#{@DAPNVH zN;$~*h|}~p@XY}(1xUlh-CShp&kedHl$nXsK7A5_mJdxtQHx0u2Eae_P!#W`Mqfp& zGF@Uyws-MEA$Urvto#fZ2z=0Zznf|U6KDXq%*Lcz_`h*}(cp=elAVs0DubN-MAO1l z|HS5Rg|&B8TXz)-8>{Fn^+R1`KjbeJhPKxYUtPoGz6K)VO9wC(IfbWX@p(KMaza#z zD=c=?{Dsa?C1uzRs94WLJgM?w<~I0CV?~9F?x!l4`;e zN|wCicITI8M$U}lC-gZfQZa#I!`J^*ym7_T#DDE0y-II^Z|g074#X^Cq(<(`;I6F$ z&FGvZ-e*bc96QVS)-v!pX|>m{!evmtd+^8@mrvGkBQc|vE~WXBmDtkvN|;De-g|htZUp-_FQQVzU{7Cyp$vN zoLd;zJiJtwyiqDt_^ZUflWWc;^&uNVK>X7wce5p04eobxP!yIKzsR#T?224N%EU1g zWd$#FlqZVk!p6M3@Z&kv?eoG-%X6j$H>CJ3P;6n$Su$t?eR5;Rw~*}F61xA6e$KzT6OY)RPQE$L zPkZZHGq$@PS>FE(pkC36`f7VaEgGbIcdP!xSz6ruT&K>8$YkTGUc$F^H5Q-PR#OMK zn5G|^z7~VzjS=5I^Vs+Yz?zuWgrH>fX(Eu3_s>)D>Pyaz|Kz^_Tl#?_19>|oF61-nWShZelTFh(+^60hg{_kwrcN4 zF0Z(0Ju-hTcO0jxPHP->e=XF@Dg&GQle|l#-+zH;Tm&qZ&s4_a;r2a$?kA2D*ERD1v$4 z{iWuaJU@p-Q1nUA%Jl83=)?QHpxLu~Zk$<%ap_@dvDTBWEn1w;WnYU+sd%rmwJmKk z-fL^$i{^&vA7DH|D^VL(l?;lS-^}e5=RJ*6zs7J&t+EUOjdN2o2l^Ejtgi;Dsl5$B zQix@s$4(j`FH;gym+QXwd13_e(y{5Ycm^XKcRF+gq7Ri0i0&YUsO36!H3{~kdlUYe@g}7e4p*x#e~mjs|EsSi>6ByirxZssyVv>IZH_NU z*ahu)BG*{qNrwSp5ASpQ1Q`CgV|9=Fmh>iIN&KN^6-P_8A)pduxF2E!yys1+nX$5c zK=XG=U?7l-t{xYCX&)I0>Jizkb$6bt)xVuD6BQ3}MXGdG|HpzVwcgzS*w$12@+!o( z=ho*23v71I?63fbH9qZ0H-nCR;5&DBn@jW$8_({W8Pu!gyQ8j~zIii=)>K%45@0b_Y-Y{GIo=ZPeKd{6!&^c3~TkA{o###`MnRu*6p-1)#=&@z>+pV)euR9nM7P z<1R^M-H`q*e^xgyweBU$gtAd5o#1DCYgSSOLD6*9Kj3LA!wx`?(oZxxq+;gW6y_ZzP5uiBL1Z+=Ev3LG zKJ)?p1i3UjqBCj8X5OgXSm4cj{Np*2Zai<+GhF`XdJ=X3W?oOs>l6`(YSr(YfVZ{v zmpl_|c777Cd-gOBS^tny_JL2fR6Cd{pl&Gm!?Aau=hW=KN4$E0wA+WGuVcc$7EkJ< zJnV#aqZ#$q{=~7jP0oxh(z+gc?J?S{$$ROaa(2*&bE{wwc=oQqy(dk#{=k`%4Y$?e zDe21w!U8Jt{D=GjoH@4SX84>B7NlwyXhli!@N`ni8uzi%mJiUvD6KO&1x}SnMsV9M zz8Ad77pwHsOZ~gz55v1pwizaWJ3nNoGRm2TP@5g2#BN8*rBh9iy5MIAb)Rh*-cL8Y z@}X^bJNhtiVyCNWeWfk(Lawc6S9m8?xM;Y0S2`Xksg0 z4@+e;Q5&2fij8>@43TbdG=RI9gCwm-z?W**l};!Of3Io-nM3wyG{>=WfAlC zUjqME9jx0GD*s3coS51H)te_%(W>nwz69G9qcYEgZuM>&Dl_8>o07E&qs* zu3DSc23WG}fa$)r5!gu7ip+VgBhPY~wEp za;Wo$SbzKvK?ajs9u-g$dVyYDaJ@|98tpX`Fq<~0@cQH{ik}K$pCauc>Q_}lJZ|=K zSwnx>E)q?T2Xz#Cm5ULj<@xt;!}>8H8Ld22lnKG@5^Uuv(PP0|ryY44`#2{vPd8uL z2F3>SYH_QZmj}WID+=7!Eh`7pqA?+JpN2j}*~hcI4!uLPJ;pK7%J?RELBYCybp(kTdAMl*mG+`kn; zGb+2D`S@zc-?fOLHZiZfZa#!~6Ft2HfP-zZPWu6GhN6pj0MaZrkA@&9A}iy*1SD0{JIyG*&yGD$jf(-(b1Fx z+zA8YZmK>1Q>2rPH`%T-AGhXOi6N2UAzVP1<345Tzg7$x!uMLtiovIOC_fQ(ki!e5T5v=O5NG z17F)nnQ@NSkrBHc1|$A*MJcnn7d`K5q!-%W^dBMUc#6Ipzzxnd>yI#`(cw6hv#Fha zzyR3iIXc+*_Ep$MEZ&@(kb5po`jEwvc8J*3%b5UB{vJ)wYevWhjF9groZ*kzqqhHI2@Ycfw-V-t*U~O(%fbvpt zbp8^sC%8}RjkZ@e>u|4OhAVCfq;e9kSNPr1{QC!3>FmB9Mzio_j93*#YoZ6EWdSOO z1ce2r2v&+t?|!BTiKVIF(7`V+Z4mFr{Jdsep8TnEZsbnBwNo)>V=8;djTN#tPt4o4)%l}=+36)cA_2r6@M*=*U!jbWvx2N{oN#aJO7P9Z=KdWsY>?wt-RDOEvOSsiFw7mBX9=+$I0<>r_0~9y2-h@U7m3o)%2SV}{=MINt zK=`=22%Gg}pVdQo|9}_%dJ6crEvh>awCl)=Q(S)C0yO)%iPiK>a>_{)xcQaDzoF1D z)ACP$7a(57a-{-`lXsrz1o~yFOtAwlW=<}7p*!k38D2S!rPKxoW>2-d7&+_tYnzqs z_D}MPSaM0%^aeD7L#-wPDtUatkhjg+4e%RU7yOdDVY*wBL}HjOcMubtbkfh2__RKs z`eUF`nvVxgqw__Q+%!S zVBQP6ebPDf)u-O3IXZrEc$mim{=H-U5_l%3vIuO6N4Q_Ap}}K%GQCcaNX_o@Yfpkdmxf0L;W)=}&+=_ylSPY`2XP3*z#< zWUsK|+L6-lmhuR!;rmj^+W!(0KSt4Zsb*UYFDs;N3Ess!?(o#hm6H8CkkE_*rI1S- zT${)Hlag`8>A5ki)MKDj<$|EsN8D^_0-9OzuBoNA*}V}S^Kt9Vi%t|q+)@Wn@=RLZ zR3q$Jf-u+Z9ojJMWQh@VEZ^}V2!<2sku0Rg<&kVq3uf%Tt-H*+M=sV4Yf|)&NcIy| z+$r-P=;i-ML)4cu=kMjWcem^RywII~r2;Jd-)2q4^t1n;|GY?lxrH=q^VRL~tVP#!pHNAs=E5Kn^%i6C*lk=X@#)Ob>EAl3iDQ+tSI)mTMjAb_P z@)6xu#-i>0uLr_HnYzfFUslE>snEyVY81O|G(lyKSYUG^oC7q~OLy^LiA3j>-V3c} zD+8tW=4_FMHyjGRTgCg1{NTMgF6pCm{AMx?D&GHRFb7KEVI~BNCNTfKY#Jow4zqx= zmob(L(QAz|%3gpzIwoNzu+a5MP;*<(v{h-RXe$8=<{yn$xoLN9n2}(mKP3Ml%;i!J zgcAc-i~On@Lme|}oJ(k_w14*(W{}O`7PP$SYR45$I{JYmja|h=)d}Db2fN z-anY;>)sE@4&K$`_N=t~N0|oR2Coip&QiA&a0v=g3aAx+7T_2wW&*s=lQ(HnVL|~! zTFa{2MwKbMt@*}&wn%Q{6P}YqiCpHYbMVH2IYDp57^X4*6Yhrm#-B<#eYXQBvJE@b zhk1|+OB-W5WKGuBO+)kQO1weU(m7pkp%y==hqfZuNZm>CRj_))D}<1vADi_ctIT%a z&hO|_t5K_Uzx-Ur&eRlS6T;bAxFt=;DknMqtqZVDl9)5k1u%cwah(Oy1!6+eQ~ucqN-Pro_>m-T-FQObm< zSQr{PZh-#QHcl4!Sq&3El3AhJOdHg!8=-^^KQ#ojNMGG8oe~mZC=(jAtXPIbr<~u* ze3g)g7Jm=#WW_$2#A?Eo&*IA&7-kez@^Z-s_=RD0nUz z+<}6&sBtfdhW1M)r=D3+3ih2aY8gkeW~i&M>g%*kgS>RACcZ38GX>1icNh)Cec%9` ztJVG#0S`*FhxHypYO7By&t$0hb#x+-04PN=;0 z+_zX~E+|Mmp(RN)GE-D}M$KMU$;s|{zmzh!{Z(#<-Z#9*nN`kFe>7zA6~?XreeLN9 z)dNW$;Qx&T2{2|7IOfB{hjC(+<7`&12 z12S1=2^5K0!Pu>*rA-+`eL2K$9<`g|oQH*g#{H{1+TxRZ-Lg8Whl$&Z12-7<$ILP; zgy&*SCnV#dRH69oVC9lD0&!QU#+H5Vg)c4oTwXB(LTH6?)vYv;tgH7qJBCkwS%X!BgU3We6r)#}} zPf71jH0Mv!?kF_{5cSaS3aOcwo{A(=_fJM}jQzVZ;9!NrAc>si%%T&dj-0W%8(`h+ z7hg2UKUN9pIFeRgA`<8w-8af1;i7QQDIzx_4uenmTg72?Iyo98wXWf z9m|9j=?cEOIWbMV09?QI%!VBK#+sqafXqXo z;%3&Ay==XadFzStQkLy+)tF^33B;;j9aT?j`CBVGE}K(+bptp0Z<%UIdDl4><*)z= zR`0We?D~hYG=P4%$E>fiXHam24!Jf1&T&C2lSO z4|X`2I+Ia4mzxt#-2LtwrO#`YzprFleM|d&{3mwW%*UnN>#(oW>OIn_2X08<{;#Nw zVd>umV+nRNqC4MAf-)hgIY{Rxyu5`|$oXxYuPJr24WqRPgMK#n#%yj zjPd=Kr$qLn5p=Gc6ABTa<w?nV_w7b{KscfdYcZa1j3dADImQ85Q@ZqP zCem}noh={Bu8<3LYhe#7Hf*n|{xDaVs-y7a>8zjHukn=-Vt_*sGe}%rNj6>x*zqN0 zEs&_>QD&;e?VYx`A6hNcbWBz@b%S{>$8lJN+GN#((HdyB(Ie#8r+S0u1 zgkM1c`<0cIr5%2QkNMtGKJQP_-MDPQ?leg9NrdfFs;CeSMl?)MQSbbSkeH z=|U7Jn&6``QuyXyx+^*a)$8(-s<6}2)%I?3$W6+;rdt5|WzH-;Kq;TH_^bto7H_Xn zuDrk!2%y;?Z`-gNm?c{GzCaPtTa z`=Bk<-l<+Na#&&i6@+k0i1~|H!?psTEsb`bW7sO&|DaxSYE*9RmcTypYEn*CxQ~Wf z>@03MmSail>^PJ%G@~>fW)t$}@*OnhGRg=6E>_NbBR9pOeYeV(x{^+aK|WgegJl^J zw52~N;B-!m9?+Tb`<8FvM0z*Z* z@E8H5{DXeIy4pfUX0ONOls_xCf#I!ihI*w9!HWcg=+V_4PV?g|$>}{#)W-p_L ztiV6cCp-OSDgAwOUD+1T=8cGzb@S(}3#7c%O_x6*h^W9J184GOc%TMJ?|WAnJ2#_> zetUy|NQ#q;jrEHoS&7=`4R}B@PNs8c_7HxzHDSZ=Hd*pw?gYGI&8t2ml&;^RsYvsZ zP5Lh#f5j!L^zUj+P{?xc1@VhHbC@}p=WQ3j!t~w%WpTp2HgFc=%IA>b@mhvJGwV-197cCYC__ESKANk&goG^ysY%F;3S4YWN`dw-z8aiCKd z9>b+#ie}G~&t)7DVh{de3;%~u>~SHRa+)aQ6U_BO=V@x(=e3^2rxXjAxU941Mo!P) zl-h;T9zWrd)x2+K|3&5xK?`p6^F)X$EH_lQSW(o^lvwuu8r2+n*k!VCn;}Rs5_^?8 zA_3>A&lbWWu6iEBqU)*1r%d@KnLNxl#^M>&{Y1Wl0v?U_RJmULtT3Quo<1JT#vByW zXx6am)pg|--<+f9_pDwUse)6Kft$0KeW|O7UuZnlIrzM1di^CE>A}jU#g}m7$w9cM zD6l4GIvSCUckM4mH7@XXEt?Jm@!28P8%5yzo$T;ki`Q>l#mJ$>whNVP6f-w&h1CFH zvlugf2Tdp2c7%!(VdN7zfC;`&10XvkL{VoT+|6#EktGA&Po8_-SHWIZ>m@$Z?ty>1 zIGCD+dP9$)Xv%_Isq)5Sqb&9m-%S3R+Uo6G;0q|8d@uhlf~fb0DPKF|Wf%D24}+>G zB{1I8ZjfK|mHub5By16zu{|uQMusCGd0|JnXfL-4OeU zl179|uz1DuO@z75M92Xp{qEg$;e)l{xO(&9_mN8mpeQ7+MdcI15k=eYX}HYajS+K(p2F z@-SJ}N4za#0C91)__O?O@yXnyu)5i+_qdLw88;6tSZy<>!4Z8MVx3*Kd|$>LJQ57Q zrohDO&*9?G#5_Y)V@I$p{suYLaVR~5Jrg_{J|W#UwL~dfo5mlx?Qkj_T;y$`A$4?a zE|0OfXWQXJpQz-HSYt0Pg@~#ox5z`k?8Me)S8894W0Tm5(xiKmbJh%1i|qbbRu8*W zA1bes=+k6;Yd?KC?yl2!{CP}%e8?@*4TU4vb-T3oo61g+iB6(jH=?9S7KEQeh3sBd z4+YL6Mss*UhF>kjT>@}EXK)KZKK|5(l{8~tj&$(lei2D8NU#UqVl?b39JN*&SL?Ir z_$^W}TM&CpXMQRCQ>CWETd^v(Z+14PpKrJi`U=`OZhmADR@&NnGVA{zHdWSj=gNPy zU;iJ2wblLJRo_|GZ|=XUvc=p}Dwdc#pO07{-0G8`#!@SU;@lW3_%q_aE%2oEx;-Yd z*(^1e_i_{yq$?omr6LHK{7bfeGYJRD76-J)D1JpddR2cu1S9!h(f?py3x10hMZK+W zk1v9Ebcqlul5|5$!%1M@s60t43)%Oio4+e608r2nsS;T}Gh(;(AR_YWN9nUDs1n>C zZ7*$kM zX0Ag=(u@C~Noa}ElN}7CO}#3cjbVw`B0-!TmrFy-tPmej zm2h73b*ZKfZoF9`_rVH0(Pf(y2F4*gl!Zahjz)&2UgRa}|DvA^dfjLu9pq9)AOP5- zYUyx5=+Q-zAa>q>&PC)V!lR(8&h#vJ8()iR8`DCQU%e>m*Df(Le{8rGD+jB>ZLO7I z%O3J^U1FKUCsy{q{Cfl9EGJPn~d&$h%F@Gf|~*d1a_ zMp1HVmk3$&8V&O*F<2pr(iIf!05g#0Ngpl)}rdQ7e(YdGM@?A(5@#=H0QK zW_qnsU__q-E&#n&%_l4%GR7R#fbqkxG!Ot zuQx1jSj$B^pz;-!gFb)NRj$JRi}WNHQU&?^Nf(C&ao8PNQ5wM_# zwoh+Fy{dowE;zph|2nxm*!Z=Sfl6J9n(5FnFlc7ON6GOn&|87>=Rbscx7+-Coa%^s z(LV_|C?FV9hoF5$)B;Pk+3ym!#XH}v(!ykbL@Xgd#A z??$h1UMf8bnvn%Y+H7u+Tf=v~knOxdAJPF@RGX4gY-NkU=OtmxUj{XX1_1{iZpeOp zs&XGlslPKnUc~am7zM`=Y?NH#lCd4O{HcnP$L|M`njv=Ra?covp&q17-5p4yWFIVX zHz8gg7xdl>tw%Y?U?sT3<9s6ZvyCUSO_eZb41U}GT0yL$i;W0x@M&3F_Y1vj zfR_g+e_%V!b0a3Sia(A|7v$N?NeOcB@O&VKdBx#2V>$5-ee&!pQN%=0BC7Ifs4-sa=y%O|y&oQ&k z3n(*B-fG6^4)f>Iyr?suKSRAy79=pa5|dzh*3_7I7HNMxk@BU%D}`&y8QBVXfnSE7 z`QKhAiJ9W(m7Pyw|2(2R9d{ok<7|@bJmP2G_{zr$3eY2yEX}^nEH@pz2!0!u@Qy)8 zG@=W)GjQa|^6?Iz7F%|kb=WUU;a>)XEIUOF*;_wC%q;#c8n9BXgdOo)9ZZZTncl}C zDY4W^+%%#H@F7p;?#AjuwACbavAx z)2}ri$h~tiWvonW*WOZS-MEs!TN4$|e^7BBdemoM{xTXGHOI>>oLu=|g3U6|i7&>g?goIhtYz;Wncd+{;hkQiAj zeF$($$btg)SEGo3hc@x}I?X2XgXcq%E0SISZyE+G0lj7nE~(i|pJ*GJPCAPq`H{&E zS1WEBi&ESQk-*@;-gdK`UHcvR0D2_t?}73TKu1w{3M2JJdWii`?QJymA(kZNG4JVn zPFpMtL>l7GvT5(PHxcCAz5WUd%u^C3LNosZo!tSdS=s{m+H)R0J7b5Xyb!wI9N ztjH4cDQWlnOYsem3(TgYKn$E&Z0o4s#8iXYS-mHpk#g&08)C--_Ktp5_16WUPLAmS zwN19)Q(5FD8N8G4Wa|!h3k(|KDTagJvF%k4f9%i9B^1ofFV;*}=Ntn^%A0@8#E)Gq zM4bzts#j4WDwevs5g@&EBPe@8>Pl}H$7~3O&3y{Wkhns6%Y^BpXWT;wM>#?JOU3l~ zt@8hH_d99rx@W`uN5&KbaxbrE(rjjg2lX2uqp z_gjhp#)itS83z7_j9vCxl)p;S8)`ZH$10l`c*-RlgbX(!e1UhMlT9>@lVOY4@l|I4 zc^}@Gyt1GGwQMes&$fhjgRDTKLk)qWE1d=TP6R~77ZJ$!PhN`mxwU0_c24vFEA*}< zu!Jo~Uc%9bl-AMWJe0<(#{nxs`ov&w|>sfxa?jJowQ z#cd^NYKy2ad8OMqsQMwS1L+smamv@#qcoD8)B26a0imqZEFp(#57a&zX@ zbOR3hHiR0v}V`@QVY&x?ZY#CGQ~5`m`W@P|FB3VB`Ag@ z>QlWuPm3QyL2xE8O=gqxbqoe??=n`{>U!F-B!t@jais(4{Jc?bj0`ceXS9s%4Ggit zp+@N2d3($fPSlSa(-QvOoIB<`bKnE33+_}UKeb+8wjH)^#^*5s%Evm&_#Q+Ly}s5Z zjwwUGD4{Xw)#Yne%^2v}p3!NghI`C}0yRRlO*I?)%5XYXxKbAG& zJE@|@W}I7AI~}APY<^ORl{>Afz}c?*YU*1ITz7^@B3^Rd8y=XaU>1ZiNiRH{qoQJfUrfNb`p zR{?1=K8C`VD}{`F%#2XBAP>>dn}_VetyFtC zKgVwKnKk8Jk*xBSptyn%Pn%U$Dq4EYX!miR;TrC2n)`)BlKf^AR_LD0$B%9)uwwXEqVck;eRy3z4OHnG zkoSa#7%QKI$A-}8gniJ>XBkz4Va*sa&U}d-qp)sWC$L!K#r&51W(^rZq+f~^4+mgZ z^}U4HFAUy>qB|;)mBX9jqZ;i%mxfW=5R7h1de|L55-edyo~XfB;fZKA%SjX7e0CAX z?=&es9DKq|Y-%L2{yu2Csx|TXS#FfuXo(H_zoy9l@G$>LHS5(bo!r!zWScIDufRQJ z<{cj_JwWz3MmLo!_7f5(K*`eQUIsB(SMOY4g)MWUhrlZ2pAv!|LflkHGow}tf&NX4 zfu;bcR1F7cl|OWWuK1Me#}zw3a5m&dMh}-PcI998DS498=ttAy1IviPqxamX9xbhd z&cL0?yIXG#NJu+QGl1ueha{A$RE5fgxLPHqzs`vn*^byBv%5U0^B9BtLyc=Lm#3)e zs$-qtSu6nc#YU1nLtguSqRgr+<0wWK%F6d{SWW`xE}_Gw&su^RvCpWjk>G2sL>%o$ zh;+ptu8ffDf!+&)Gq2yn5<@p^JEOqu(r~A3ds7tdUz(Mwq15`e1X|X~L`VMH=1j;5 zZGk6kR{%`EFyS8Vc=I~!=vwN(y5eY46>1-f;6arJ->rUKRHOZSWoCYQJ3rXGF*isG7f?zk!K9KF?#-ZWG-I%QZESQ z+wX>wy?U|&0SU5EU&ZiKjkAFXAOPj`g3ndiH(QcmX6iTT zJLJ7x5+NjKeu`y51oc9egC?LR(dYXQMEO%k5CN3?i?m)LP_}^VI8E*=AQs!t^c;D< zN@v_xF=@IqHWqCOGx& zhKv`<26q|zamB2E8scy@37$PptW@nPJ7AzA03g`v+WrKroMt|Xr*avV;i*z@!jU27 zjd+0A#qJvjRE<0+lmKM_Ie6KLdR^7 zX|5h6-U(5PHCx{y>x;L^wW@kh=q5F;pN3kHN37zc6 zBR)P(uAbN7nToj^J`%vyuRfX5y!xHV2^32)T&(zZ5U3B#$F(WXq-!Y)kP5>2G=Gza zA54DrWt(tTXCvUA{ThiNtOpDmx1izDVG#s*%X5uJzi)O1hUPXpD*z5ZXy*%y|agJgkc5qN?k*6r6QLN(T#d^%tf_9XY@<4w4M z?9tXq^6{c3J{-N?ED9w3*1bDEHiZwpV(NfbA1E~UwT<9TyQNFML~X7BAX!?l0g`qD zRBmiSQx3^@=Q!qjbLF7t^AaP+s_&Tj=*i4SOm0}VgpGVuf4L+8lGr&|V#9y(*&`Nj zRD#iLj9*OTulw5PPGY*zZce8fZa!@IJ(xbDH2t>wpo=DL=eCK?XKb2oiF; ze0rt8DNnAa^`}w@{h)&PWL0yJubRiK@#vWw^K91uVzRKl2>PwGjrLtMwK{*yM2Iz5wcfVQ!4c54rqX)QS|4~MQ^C(aT|H@Agz0X|J0RLvo2Mpq3# z&na-Xl;zbYYK)$g>1-P0e-xQ((Q}GswY;wXdEC7uh7X8%Dj5#aIp8D?sE8Q9;>o8a zMz1U8zHBs^ABeI1oKqlNhWW;Dy#@!^X}OOxi)|lw#z+h_|7GBYhb}EHE&EDUQsQ&l zuk0;^SX8>nja_Wj=4umJNp&)o!XRgAOxEa0H&rN$SJ=nsa78u>yNFWFvej0(osq_e%UK_Bh;@*QTB&@Bg|Xg*yC z@E=e`r_2i)6_{?klNIpXf+rGNy~ia068m+3siFYaKii$QWa5D%eHF{EzBt1&1^1XK zTBl(s@9ZYA1Ea4$8A8YaZGJiIkp1L|keCu_x%}nbbMjOu>e%{Us=l8)2{tGV6sK7E zcvQS^#LTpgn-z}>cT8{3%zlJC9#&~6RQ-=z#-v&faA)q!QE)vRdJ>Sm*s1grvyy4^ zRKE87DbeCk+&1J%FixN8WZ5I5EjEu#_yhC54Oz)z0_zZ(GtonQBtk=W+`b?k7^OuT z7@>x-Iq~{sPNoOL=y0#pYlmF!)jHAklEc;j90VXa&NB3?*U4*YJ>DXhuYm1YC7h@@ z4Tr82S^Pi6yh-5?S(QgN5QDl2*VnEEoe`O#?CNioISq&>Ct@#Pt9TpmgX-ltl;B7NhE{Ra$=!*XoZBybg0O%~>dBjbiRR3(@C=8wK1WO>_ba3l3K~VAx3E z9*(?Sl$BA9wSkH>g@+QKcD2d|j{z&L1h8DXrT zFS2$?JN!|K_M&EfRKwzi+3_d z-I~PX47iL$2FLWK_MDij|FE>SsU$8U?6w7MPo9QIzYuP8D&Bk409?@Njv4HOZUA1g zeo|hX;D>8x${MuaI1;A*bma^`sIKx6HwSj!bi?jkNZ}oH^7X|;??2>@QH=9-m<*Wc zCQKMD&IftM=vvSps(G8a+nz#?VgY}WX--WgQ)t;fu^4sJJu!m6q_ZNa`o* zV$w>w|M`5EhTB&+XqYxWA&E40@LwnLOB(c~53)#pbdI3hT^3{gWWVPAkU{fg@IE%;$| z$!SMoqvno001M`u%MQt6pKs(u_?Zrb{`>hz&*_pdVp>44hZKqw+W)nh(=-rV?4Vz<#Wbf z#^0Jh48AEMA7UO&FWw8n*0kF}1(>B5DCMdu^M?$fa$$OUR9VFpM>wyTr&VQP4aH!E zEe72o1v9JDgh$^gr`w)>GhHW}gqtlf%_JtdJ$)|XcuwE|$-VA_pW^P#F7{&QjJO*d z>xwrIL)mH(4L;;NDgiseuhB9s2)(m;*Od8KN#MSUXr1VsFljU%*^njp+6437j(C@P5Ak z*cua$q;IRp4AflIy%U3bJl1oCinMtb`QeQ*%`X3ZuVu2Y`&Y7D(Z6OoDqQmWBf}Hp z*(${48kKfKw+gFo?DAHKqeh655Xi81)Ndk{+UG22|F)CTSVWAES)E zbv*fa^JynT&h-5EWQV8Kv9AyOcJN=l6nXxz{6o$C9{0Mr>xwx`LdV(Om`23^H4g0^ zs_%xk9@>${ICl7O%m_=D9$GeC9VQHR7hI^sb)RH92g(d`f5IdZ(gkj8S4J%$Lx06gGk{rmRbo2xp62oUlq=#Op5HSU5IqGuLuM*k^g2h_Z z;*+}P@ejpX$*f>SLs_IF@inX0yraR9-O#6oybriY4PK8ITuQ> z_`^{Dyb}%rJ&Mwn{Rve|C2{Y#_QaTM?^R}1$)FFVE$GZ)pF58TR3*`3E&cY^?ED1K zW|&ZxN5EN3UmGbe1ApnS9O$je_%YBi#9E$WMI541{SydtuBNPYfu0Qp)gmv;@lFOo z&R&)8UM(KjMf24D6A8vE?8ZH&)I_};JxIF)ZZLaD?uMC;1z3c(P!ki-N@z1DriLZz z=Br&9EovBLv;O%dzY^Hwwq{XJ{Dv0wyOB9OKJaam?n;*0KepQ9T2;CV#`P^CkxDHT zi;NL-o+6y4@nr#N_1(%Ubo-|>j|%i2!PSR@Lusx?if_)4#JxkCSBCaJTgtE=EA0!7 zWZ8*mAHyM=8I#(qnc&4^nSpNOBFxPH6>dE>#tCpH&Cc zWrq%KR7NYhX;QUc(GuR@iyL;=Poiv*h^Fj%l;0B#7`vy_h*4AX2 zP}APH`ipAD^>;{GUxhzA-~a8YURu0XZGIC*L?s`4S!d_>*7Y_d__)rAxS36lapdRF zzWCDdyl!5NY7_UC31;1I%zHor@{`Jb;=R#i$X;xCL8v5aRpn|Z*NjA9N+10yP;t0> zb#0N2(ScS8PCYS@%aQ z#=kl$zySTiwohyStz0c0?m#r7(m##elc*GyBO5AEd^Zk~JB`5~QON<>4dP1*Zsdp5 zyTcoH?!edKc!SR#)I*2Q%Tk185*Giqo{Lsje?4P-YnmW+ zJNa8EC`+qZ?)sqBtm&mKiw~qj^W%zvj+&jOv?)1Z9F@Cl1#jg3Qog^0CA_#dI6w}2 za(Cpgg|rw(a7W*7mSbY!0y3RJ00zm44CZ;;Y%H}gm6Gvb$ip7J;DAQEmz3#6?7u%J zHN?@_!&qxS?XN(BF~)`#Qlm%+mn~sOvZGy!+TTF)!FK z`(xZ|;w3_h6feoM1dHJ*oRLdQg^; ziU?TUe1>xS8GB5uer1WbTU?Bg?MVEy9y=qWQXdkaiI#-Kmyz0C5eqG3>)Y14L8Ys_ z-|Oa6p3x=vofP;Sm~VxC_CeoV!Ix?6Dn8MKQDdxQbnKm4Bn}n ziqi)osaa9O{L*J5ZI@h@URp2aQP&Uempi5=#DB4+{U1VUNz)C3nEA?jiOms>~Cx&DaUr4o<}go{*cWv0N8cP%asoNv)Kh9 zB9+Q?&ramhF~gpz>~BaA6P0322_J#!e2TiFX}-7}`1E=#U8D{yuog3eTd8?3p7d z`E-yP57~|juM>yQyBl>75gFF;eEY*?l*d$f6Tv*2@;Qsk%h;Sx7_?BShCgMp!QqAm z7ZM2}zE265Heq9q_-TD{$@Y<;(#j`K4wBW)FJB0qMhIVtK9Yy!J$R!@fqonK`(R{9 zU&i*RTz%l(O;{r-z+Q3U+2w;}lJ!Z;sfcQW{1(YoJ9U1V-ZF-L-NdX{lHp`K5(HLV z?_sjjs%dp!AXBSFI^j>w+8YUIQ`Q*78`54_ zG(fMy{NiV{Hep{CBdxFZbW*@;{LZQdX= zks?boRbGX46poT$6#fY=N@t%Or-N{A`-nw+r9;k`KFp9^7}uFgviV3(#?@q@tbH$rbl*h zCwRhF5t@Qmx$i$FwrM|1Q9F0DZ3kv&`k+gD$`K_u+zL%1)IQ{pRda1xdfNe*8$Z5XpK(iC@yQ zY&Jy<+?p|}!Z^Txs`1AQGrx7L(u_KbU8@E2%bXe;)vy3;4^U?nq$Bp#z;At3cdBK` zrJD_VC`2SltqJ^XG18UUG|@pqz$H8QitP^v2z2(_P}|2)!k-^}HHX_ZBi9{hk-&!z^Ff8>)#f3-tp zw4a(h$t2(7Ik%T_8wn_nE2&}7@r*(03(A+v!sDsk-p8%Nz!FJI&~@G+Kg(>oU67Mf~h;W_(cR zfnB2n+=VxaROU&bLyZPRNgVuE56Whb{hzRQQD&bA+kTW4HK!kwpDCae{EC%7o$pMj z`9gFd-`7P9eN*=^gwFt)ZQ4FAjzej&Ru?ejYX(A$@R?C;R^ekLe_$*-nhDN#-)dnS z#NRnNt;^HBAUmxFH{P0;d?W+{s>hWpq$wSk6Ug<`%I*2DMa9DIKkVZ_F`(J_IDHL4 zzP~MDdf|D}%>I$CC!38aY|3BkPFD&YdZ%6hx^{M&X}x~8TWF*+$vG|}^=6|%DX>2K zAtNKZIY^UacOCa8xV=nxV1@2`d$3=aDgLC8i0q0X7|7>udMlpH0wD4_n+tK)Z+$Or zei*8;-7rrznX88o3$qw^4cfWkGu-fIUtU2i(rZ1AaYj=^(H;AE1zNDZdE?(6vDabv9xX@KZ? zk)8c;^=Tw5pO&j^MiH9QbfbeUSzdEX=Szpu!&^1->^5rv~`pmQU*x!f}A?+=nk?qr$xMTkEU%r~T}9Gg+p64F-<7vpQN|Z4LC@sLq(aRgAQ}s3 zpGpYX8DT?_1j^Bm&t*s65bswa43fl0zXtekur_Q03OdmYW5}+6MOD(u-q>G{!XuTz z=oqgC(W|g?iOs5appxwm@)FcDmZqfOfG~fds>*BV?5wyq$`{UJFz0W*j8wd)oQqtV z?YYJeA``J=gv4|J=4$4xrkwOWy04w6(xx}(*ctp_fqfPfX8bACj{YJnq%EVE7zEJ( zArfZRC?9pFyqez)Vi``La`Sk^+IDDfAT@-Q?o?H zRf7zu$~9K3AO3zGBuQLZbOXGEhY$bj{4@Ix$uVk4w3+Jr&L>skow*3n=b4tp9foVM zBOdR;n@Kp5xtM9**Ji8!&$jiUoq5=!4M)e18ECIQAp1)PrTl~=_>}vPdP4CCOK6io z7Q;UR<*M!#`|j&^st;f4grwsePOFtNibp-wfCYvaf0%96j{#`{KlmH(Jh$f@Z@vYT z?I-?t5+9bOEFD2xkaET52{Rp*96^TQM!S5^3IAK;*YAuQIO{yTiU`bjjn3_d!2}!e=@^ zccJ=fX=;a{GzoRri%ADMK8@};N8^x5@^s;jAAIplWWVrQA9h${5_%wVtmRVI`JBiUl!qe6Q?|6LvQO<^Jk>SNWt`v zssRbdA_8S*&T)_(CNy{JF0$7cjxPbQ4|uYzL2l%Ts-ymP?e(V!*?(J9|4GnOA8y0} z$*YU>QrU6*-BDi5MiSfbHqVk6dWo!JGPLvrGx}yf7UoH^r^khG=0K!g$tmA6UPvSx z7=K$id{;+m6+2aJeJ&90#R-CPu_E4mogd3`Ac;uf?dUG7%R`br$igF{2fjNwWhKg= zKHB58tv=vP808z!W4Z`5v&K8pzS(-D9?SgM;Ozll{-SzJ4w-+Q=+1TqnyAP7s3O#U z^C_*P#KAweBsUB`O9vB-%Mn8M9stPJ$No5aIzrQ8Ly&B9{#dn*cs6<8En=H&_LpOK zrSKada@!E@mBEWv5hs_8_4vjx>QY9tI?%*`wxi+H{P(Vm`SNTLE|Q?|U8+CX-e!>+ z9UX|Va@^g>kG+o(<3{UVFe$7fF7S1+K7x2Sk}HPzNL^@$nU`l)Qvjn-I5M&*k9N)Z zYW+MIA!1`a4iFn_=R`iJ$4MuUO~(j&7aAvt9>^?SjQGrD2rskB{r)MB2`qo1!Mep| z0mL5uR2%lCg4;SsYpb{ZARJb?TfRYzW^>&|P=$S;{US^YBS>ex0~Hb~GX=s}(Cb3A zh-M>YjJivQRR|`*C$9%DE#dQX!h)5degU4{z93@XxMG>mMZgI5t~poO3SFMPS+bG6{W7WBY3uy*xpv(}P$i~h zbI*$5?MJAwUQmITj1y5;NfXLbvVcB~JS1d}|7 zHClDZP|c45L_Q&v^*S<+gCwL2v_j!xCk*ohr1dk_nwbq`^o% zL8=$6n9e=~Qo5$IivH<9U=H=*YG_xmGu$AJ!tUpaKk3~AClgpEUnz|RTzskhaEbYp zm*?f$Ao;RZZ!WwULA;qOMa}w=Esp#+#R+c@?`&zU?!=k;NlJnFM)#0tL6ZZawtz?SvlP!q7(SKn*!DrePA%>bwQZNLB zJt8eUjUGB|GdSXAI7Jc=_j-(YYvZq<}+>0%=^altGI zA)78ww)&}nU=5!MC3he|;;4&8^UXvqeDz9^XCY#&NW;FvAIAIgHk zOGF+)-BfVcL;1nEfgf>1v;I*S)YO1ogJia?P6C`QhUT(ey=|2>Tmc=GU~s8tDBuiN8JNDWmcxy-2UF30<2X1&>!xl&L!8@%3$4wN443V{Q)X=-3 zgE|`$xZf3OJMfIV`GPN|-^2atNvG69T3IixZJglsRWbpy7XZ#}LHAR@0H6|ZI6;q) z)~MSvi{je0v&GMSY^RIrKr3meq(I?4*$ zwO|~P-!76tD#Zudbv8~=i0|XCw=Y~20M6oc6V_rZhss$D`o&LV+XF!xF*MG>oTJwi z$-ze?n zkggYseXZlg?P}bT@dbFGSkgF~@WQDmb_NCHAMd<{OMDI=dl!9M@g(rfzQ9tL5`=c7 z>P?~vhy(&HWL01wS)gaeX!6bIdE3WuZjpl0TwS(ioNpkRVHh<+LO9E!S<-?nvlaxA2Z&rC3;#;rpbh$Q(YK>L>b0KE0FY|gubG_u)q4bE4F`j7@qGCY;^f30EDuyBdpGP~$lu046j4_%Ke&;{;M zw6|aB!(5L13-wK8M?UbR#ZxWCu5CQkf&#Xw7u_t zG@PO@!@tU)zZ$f^0_aQr^K0k9g_;W9X9fX|GG>=IFMC!Dxw6?^9RqV$@sGsB2OMC` z4H6tcQ{^;#6|~!!99?ocQs2!$<0z$QBEk|JJY}#fTHV1gpx?IAWWmT zNadH@OproKTV={jjmBCJBzfBz4WU{&ODosakHXPr6hS=C)C**#1qC2NqcIF=-05#a z9b{ok^2a?G(zD#kx%o5btQ%g`CF0_71?~x=_VcF(!BasVj~5L5>$ySyYVDDzK+^wz zH}BKLf07eOO@b^`TGY*a4eS&dU0Q1}fn~~>M+yh0_#k<%rgTech{?60*@9*1J#gK! z5}p6pXH4E1k`dI|n*Nt6E6Cpbb!OO;(=q3z_C}kpU^@pMJj+_T4?`d{X*ea+p@epo zLBBKZHNt`%kX99SuXm}zJzjg}zHUg@h()(`A zf*xiLXvlI#Q39l+xTemopxBJ=SnfziPmuo&d}QupU@(s_3lCxt9qB^zu93(N2|KVs z2Br)se;BsDoST9$9qJ;31Vlb}k#Nj$0-l+Q_*!zvsLZ?m7_$>;q{siTco%ACQsE>_vs1k@$bLu~ zcVYQ7u%Lf)-1zZEDlI=Q#QNXX`FG7mCZG34*2Xu@u_%K!YMo!~_P^cC4K+E*tOP@l z?H`7qN6k$PL`0`9slXe$%Ds3@Kn__r0Om0=MYP~NWf zWYxNIX6^5Q+d&HtV`>4cuGtdFgP|2;Vt(O=S0SYvo=M2%?`+IiZ1Kc}=t{lPvT`@M zk@c%O5-?*WNZFFKSmOi3$B7=DY^dEv?iM%#QOk!qP#3cL<3Z}BpmOXPiZMW=k6q{z zMOdDHCYT8gcmJ>1BSwuX#6Ku^Dj`lzrApRZh5^W>5J&mVakWgg@UWgIiOI z7i;H4d&Rw$*2F&2j3Ycp!DlHXjEpRZWsUeq)1D_Ae?$13>Bg59g6;)La?@EjO%M73 zpE&WtAsK%G*s**hbxUq8cTq%)OvoMQan)aOqH3{7CAv%3Ff6gsBySQmto}-5aHm$a z1E|k^Ab>ZSshi^FzUwkHN7*5rk{UC@JJnyMlLWu%sTu)7qV_G&@pzN@%B9hWg@);y zgy^DKx4D`gkSE=>NfID4A6r8j5avgr$FS|^pByWG>(~2FbGcPQ#*KKqxq`uripgf7 z#pY4pkPa&Y76@jTe{{XA3OdW>LZFe8e%SgOB`u2>Wwp-~aO|Ys&eqw-C zkZZv|hc)msQGru4Fu>KL?j?h){5>)cDc;cX6ilBne6M@HyAROf*c$jrKW>MRi22^l z=Vx24-&;cMQE=Up-?Cot5oR2nZK;3}zl}E;+@19_Q#Bob0e;D_n%r-DC|W&Jm&kx# z-M%Qx+>K0d2i~zu1XD@C)f6lN=SIsKl0t6bLc1v!&)|mUs?8KBP>4)(K6$3ClSIDK zeu*hQrMykA|LbpwIp=QbZjsCm9LslY{5J+%D$cus2e|HFW;G5vNpNWl018rX>LK_( zbElLySrrRBJu{A9=MF2-ysDezc@3qfTS~X`WD4olDhy&A(G2>09qNK=QmH6SGw=1C zJN#bp)~&}GwuT{9X#<#^Z6}yY4Kzy^E+4r!LvFJU!d3WPEAe|o0l@c;oO$d_;0C=nXy+c4+vy1xa`n#QBU2H@G5fXV=;`+5vr0f0nvg6Emx+IQSQG z8dSRSWsMCe>+)5l9Q~KV5`%&?aGxH9O$RxQRsD-0?K?IMc9T2 zm(BR%;q9PN+4%dbzny{4zFiYX^QxOGVm>>$K{sXrr;U;kAKGwa!D5)F)AMHNyCIck zicFF|QHW?`ECBkyF1%B;AJ62aPX@XQ`P9gFJagAARJevyRd(K}4dtGpi-cpH)kxk_ za4D|Drcr1?0B*J-l%Tx<^wkRrIF3hvOxxVak%Lh>6p3Gr(_=s~EV&}X-_r+NVu8&o zaeN-+uG_3JpBlg3T&@YP-q0q33x?(pI{9Bw)OIL1QLBn~f9W%8gEJxls11Vc4V07p zsJ@7i9f1m3o}ufp z%)bksN`3sSJuUHPW@%u|82h%EjH{WFxx?zl;sMDv`>7?zY49gRmD+}aKdze}jC%1} z7hqU82KBLKqDD39U)Podhy+4x&J0}FPt6y(faABC>DN$dXKQMBJb|gSc_4(l&urx_ zA)cPB-M^$M^C?-;*YgZkunfz{giMt>#<9F|T9Zm740+UB)^q%l&-6R#e}xIY;7il~ z6Va~VRerBX5TQD=HDL$rR6+iOQ?t#Lgt~I?&fAh6CP9XM5qZQi2)Z4n>cGVMSkc3( z`>S6~iYN6ho*+eNFkWQ@Ri97`S=|6kmiU%J71rdS!>H!@odfCn2!LtB`1IW~)|!VC zsz0vuheizpUo1x-ySgC!g>@{r7@)v1l*dS#N9)6P=F;BXITDs!Vd=k;XQc4ip6=@1@eRTx-Ac?=tPONFx6C!4tX{H+@GR1@ zC)VIBI6pG7=&K0BV$5&c=`EwAo(wVj8tOj_T%L!TAT)5>tXl;4rI`Q{BwwI25cky& z!zC}ZoSAji_mkhf_O)|VeQlX8oN53m@#`T>=*z6<_9#J8*o6Je{n4tVS}8ulHy<_3 zw?Z@tTI#H!XR`q49^nDuzr_hx>{q7ypX{j5w0J(}2Aa(g8lrIR?V5+^g|1^^;3;7! zX@gcu)(Z5$C&_dT{vr5b^fs7{f1I8v7EDXX)RM>iR`n%>4Ynfjxu6^R=$B>=b)Qz$q%!PNyh`Q`?rcG&r?%oMbKP_&;o{yEqAamJtR}g@;1O!nPG!FVjh2Fu^eom=` zS7TUO3da0uB9$;5(Z2)_N_I` z=3)7LU?Z7z%G*QPwy1`JbS@4XAi!t?k4-vJxt}Q}l*S35V;w^Rki#t89#dmRqVcW$ zlGsCGBHG&&mZx){OoeI_E&MAD+BnAKsD?JlilnEP7JFmPloy5WT1h!LdsczjW}c9> zJ0)32KIoTYlzEAQ*{If`1^`6l-u{KCJq}>GrCJX0qfzdxyDUzq-!qJ!3A=r0tW(gi z@Y>piy1v~qb5LoLT)8dT%8A1~P7dpZ-e^@yMxnu9$3-9Hi$9J@(raI+oHkhD;d;40)Q4byvcpmmz}Apn^vgmez$$$; z<;x=4!X*E^%H2?=f+XB9LMvoRmSi|BkKbZS?Ac~H3NRm3L}&eCX+*p*K<)gD@m}k( zWD#@BXpK^g%n;q(fgXP2{WG8SJqD$r&FErBHMt4vP!4joCi-mG|ot3I?6vLs!|(KS&SC zl%3SeDiq;-W)aM=)_)B1n^yx;v)?fT0t^lv#gLDKt>I>GB!?CpK#NDED*=OFM)#o*2L z4uphd_r8JR!- zrQ&t!|1`6w#ySK|8vg4nhqMU-0j*5~9pOS0!C?x)MiRa4_K%#4KjJedZlfrU6_5P; zEO)%y7C-*Ny0;R|@g3smAo3s0<}U{@%?+S7@D=>B_FEcck8IN9BrVPC+SRKx2 zuqmDY8(k9ocPy`Wcw^2ZYScF=dwj?YQTs&OQ8j~FEJBUiwK+=r)e)6QLlSWRF{Gw~Vb zgTpwe3IrCv-(xu66G&rA&1i9&msi=VA)l;94y{;Ie3x{f6=|Hw=N-#FYFJG5(NY|F zgQ_($B#^K0Mrrb5ka2dMZpBjz1$tFde%<;CEz<`~-C>5J z>0`drmMKgJDWyx=LzY4b;I$%Yjfh;^d11}4%t&& z8$YKu{_p<71P8va*Vy>gqmNslt2sI#DYwj%TxiO0k(MWt;~(=Nw|N#zW>WLZlX9M< z1xf_lgU{#u0HG8VY)o`!7KuEfjc~Odo{NeEs7b{uS`WWeo=~U$-M6j}ZBbUHt^qIZ z`6a}-&IZXwkeL;Fbb>dall-@Ai?j{6U53hL_5m-43&18ZhG6NuBetz%@!IP04R5#Et_YbjcGYvNf)W}Qdh_oWwTL;O7v7ouRF zmv32ZIE7iz#AlRejustnu+dOZ2X1LO0zWPJV6)dtpoabay$R6~q0uUlJCrqBcP}Zafxe%vWVa7IBYs6-ud3GzDgt9oVwQe(c@1p&X)?V6 zyvf^q+EItEbA+5YA$yng7THihY#Tng;FDB|Uj0S>6j8@(mL_;VYY_*~yiHFgiJNuX zk1om4jZn&oxkf2g5*j04iOY0YMTdn5Th* zTbxYaT`@326{v(|s>J2&S7T0C7vugPU0)RyRU5E7!O-2^okL3xAl(g8L#L#4&47S( z*GEdLNK40n(j5v&w+NEb;o)5V>py3$efwVRwf26W4)ptESmyVsr)1p}D^?z$8icY5 zU#(f+4U9TsSn0hjI1KQ;ee^Dyffc5wj0}9O?)^x0SO)t-n#dg;H>i>#%l($z*5+Y3 zX%}I1;+)%Jiz7mDQYy z0ReBP+F6WKv6231k(&TAh3MAE!JJbI8Y>e_ZNx`zfh^7#^`Je4LGXTvTkb;NQ@ukn zUu01CF7rt~+;!k$!XF`Q=?**(`zJw#@ddfogNhyHv%Gi|MTME(CrD#HD2H01v)2nb zz`;)mo2XCHqaZl**c`CN<;n&E=gpwPOSCmmhfx&IV7rf!Hv-;ZK;bK68}y8v z&)g=s#hX{DQ4WQxj>A1yK>Qc}+)~0>yX;d?4lg>I97nH&6=f>>A_;ja4!d9ApGN18 zb`H9&XW8_Bhqw(+4fyP@4L~0??J4Us!=>S*o{g95g|3f#ml(%Q$1y?>oDW$ zNbBI%2&qV;sA z4M)pwBrdN7z=WszV%DUklkdT4nQ?y_LxY>FGQw%3tO z_GDgjt0awhUgesb9&p)&Uo&rQb6;EwqtN8|pY8o?Vtj;eKU|P^T!xJS7U#zuxN}uT z|20o3dfV=^MLYHJG{1IWfE+iB<>ezbn*~9?_E@rkGPovt_QP+fwG-40QYtYGZ!^P7 zVwJpquV}E{y%K3yD~%(i(FlrX|Hy)Fm^=K**`^F84`fy31jsx@d2A3aaNjF>4WcfO zu`t6IL$scQfeX(;fgwa#l%hQa93gH-sm* zuIPEU8JRYv{hDlFxthGURt7Fa{)iShIWN#q?BG0JLg>)dWW=9>K#Zzj9%2X}-;Up@ z+iVVi_?y*%4oT+qvODFOzh(D}2itFHS&gpafdKVfGr#{Di4yNjuumT1V7S0y z_0XGV+6sOI3=5;pCB9Y*;)}hIdAJ41R$}a^G>Q@+rI!81L{jV8FYF{Y z1ybFDa8mvK{%0sF1fV**W#+Q43_vz#Yh(xI2{Z==d-7Y=F~?L-BxY2@cAGay!_4(a z_L=NzY993+-h+x`^Z_lR+lvh2C-HVid>gClLO-9-k317}7BvtvnkC>JhCZ%y0?gy; zqwO^`liDqIfOSCC*dWTbJtpOgxI(3+8Pb$5SSBkG6z}XZQC{A}a$pC>+ms5b^rME` z80=mQHx*1m2Zk|G($UYm3j zsc(_U!b5mue_%aP<#V611DNvSw3D?-2I{CYa?IoVE&u{BVnh-2OD`RP(^_O+%^Lt~ z94UVEXM-q#+C#dg^yqH`)p)hn)GtNNIX3z7Uc4oLTdKn~NRG2A`ES9Ivc5EIx&Y_l z<4wV>Y_0~*{_+WsXSwMG5od#>BCza{g?iuZjyC>Pn*e7?U3K&?f?eA+bQfQ#5kfBk zqvJOkeG?zF1FR9e6kQx&k*zyJUDb#1k_EbnTK9iOb^xopa1tDn9Im6VtdhX&5$h>a zPqg~OMRiKHkmM>@l9y;N#DO@5GJh=AmpaA=t8! zsP9{Vz0hIu{2v_4Raq9dxJ{w^;=7B)F;49~`D>f>Wdg^~DdUXZpTmpoXh=`y>W)l~ zT${GpK)HDq5xAAk-&Ltpw=Uaq_5KpdM9jaDr7^;MN9xS`Nr*NVel4N`8Y2Iu3Gj8< z)NNv@Z<3jn#>$*9a#zJ9Ly~CXMMAf z$_%kKeV_z)z2z-+?mn4si>K!FV#BC%_X0> zrYBDY*-Dby-++z$ZP4oLT3c_~a+k+wmYw?OHu$y$t2NEVq!wu+--8$0v=Hkfh0=gf z1%c;v6q;Fd((j|3)AvO~G=G8lKA0@X-P}QJ6k!wSD+-qg}oX z$V6PxyA|&RN3}N|%$qgFt|GTn@<*TcnD*S0@+QHwE0S7!qe{)fNfb-}K~RCdw1sf? zZ9TAAP244YPdULaI9^O76>+6|MJ%;wN&XZT!b)~N%0E}X+LhS`_mdEssV2v3Sa0x( z^qBCM;XaDlAcNgj05#-dakAvR6u50OpX_xXTd)1YW} z+g&^ICelR><#P_Np^hO3VXtL~T*eo~mtD(nyoU@OGv(ob*m;zE!3cpN;yIg0xlBe{ z2Yx3bXeSv*F8KYa-u`(s4@#>0F=g#Pc;bR9InZt?MhzBs%L~4<(}*F;L<&LFVK|DX z2w8_nLy`A8`nUzEl2TnooR|7Z2ET2#s>|aEHcvE0xx^Ysof9g%SyBd|MC-9SSk6Wc zap4ZN1^fIP?p`e&@0W2OqJmGbj$`3XJ+&K*@ZF7W4IF&r91@hzapNI#rJ%6?($DtCa6pw9B@5Sh&lUe)(ZO zG}1($crNDU=KNuQK=)-x3xVj*bcBIyek?wZWo|2x>p%x6l0| zmUF{kq2D5FWZBDJ&h~Tx*^m~N9&6?xQ=xv8oeIp3DEpSyZS3OpB}#Zr^Eep84)!C3 z<3fP=G)fSB0cn2co$v4JlB ziz*sbi@i}{)ehy|_($H+T1VH2KjRlirC4{(Y%w~q?0ffHCjtQNiWs_tua8NZyMh~6 z8-#hdJ_Qk77GR5$VpdUjS{G9UApXsVQq9i69Q$x(&9D)rPc@=?=ND+Mx#+rj6dXz9 zwAhm2AcX`hCNynw1d$_;FQ=FP8I2=%u3J3Lgam4@W%U97bTJAGrcsScYUZ~w1p885 zVld|?8?5~}`mXux@-4Q)*Hgsp%HR-VX9sYJY-Rd4RU>_y8_x+^K-Bo-AZ+29H#G?ugYps_f+Ee&iS@log;AALw2mp?SHn@eoXDjSlokAn%l$PzAVk-!>jQj0J6UupGS9_Yd;$D* zG5L&De^qw1gXK#9A6|ey5s4W0yi)2YXL870IL6<@K+Z~1zFEL0Oj8=ccuTqsb!yNQ zbx=os%wcdiS!>=4?N#5gV-ok!!f@K0Ih{5o9N(ELvaLo}rk0vhHJYc)?HBt9tEGGj zquw{-OTHIOxuQI=C;uX4K0EYSV)`Tr7hw6k{s(Fm@@nl=!N&+TbWt=-V#aFf$%0MM z89@y3Q?8vL{R$C$O|>_9VOq@$aa+b{+q^Ti*E6;E>9Bpjzt=L@oScrliSF*J3m*YU zU2o=}RYtb2Yv|)q`j1cEypB}RbmO1E_gTiNhf8tzUMbsWA~!>)0275%(?9-sIE@j1 z{2CY&cGY{(n)o}R)ReCN4lkgQUpT=Trg7RO3GWRt`L5$ptp1K@&>uD0G`eYQ&7jYY z)v^o3bSN}sre{QG05IMU1vC-m3za)j8&HlC1Oz=K>=!RL*Ij&YRBrsADDd;r)6ma< zQ~=a}Lt*=!WmcRMUi%O-{#CDR3+I=ES`?={-6^_^#c9YP~=<_LRy-#-X! zsw%F56l2##cm0piMX$1ifr8P3UGH#UINT)ms7hXe+YJB%FRe+ljO-Gp%Ma!YsS!Hi z`0GXTa+AKqItka}eIt}fu5j@11{i9_$;Ts?1rDO!5nA9|2Z%4x@sY@XTOD3PHLVOu zqt2*|O0w{%utF^Y=Skmt1rL#W;&4j;I9uo!g!6M+*yE$K=bs2tnN~)xT4lYfb?t9P zsN~geFsz*@+#!MJnN)%=sqn(QJNPY4&$qs%Pe8LRETFaa#M(riWl@_AWG_25j5TD$ zRZQOz^xDA8s5dV&snm&b*+|;xR%E}3t}GEs&r+a$CLI6$7zP+#3RfG9d>lXau!4jX z%dC#0`)0Q%)qxc`x#}x)@+`hV-ofrU3Kz2s)n%y^T}o8R;pq(GE-|_9_1;U2S!8F< z!ZLeA@diJ!oGe+6lRju*Z@@mwLFdfy7W??cJONc?{Ni5`>lo{fBpW(?VM5ry(r3=a z71*_%&1Pz6b9OQ%&o%uhrbL-0hDF-%Ul;6&;)NG~0Sr^DG{MkJstVx0Ndf0^ckT+Z z5p?JO?C>-=`Y(E4y8~05R4dnYKJKG8;a6XuzJBN^GNZI-ZN7k!Z_I@WcWg)nb+KUX`wsXR+7N)@GK7?U4%Zk<)8Uz z^AbO3DipSz7QS|2d*{4TPW6w!=&Xo68_ZW8j2-%_GVZQ^Lu7?^Y!rUi^*s?7qIXLa z!oH|AHnc1V_h`NtKSB8au;Vp@Ix^_gC0PYEG-U;iZ6Al>$X49MrwKb>5yo?unw&X6+Ie4p==kNAyQ5ucC!#sG={~SM4X!73Be{p_zTd|ZLG~tdxYZSPa2=w*!X1RDK zB}3YS@SR1g>d|!#_e$d`*2_StGi{z zPs)dusrtQ4$<*si&jRcsVaQ7avVax>*RU8*K@FcuX(9 z!ZTj*)XT+hc9Xsq%9c=OTQNWVs%rmaUkSpXkZzL9rNI`@3xoN8qB~5+IKC3dg2p@) zwIUEke@Ry>_q+dVoc|x<&r8SDk#37Ios2JHq;}}x z9PR%Rpe8CmbEVkYgf~w$0Msqd3l~Wl%r&bd6^p3pEM}h8iV5 z!?3enaI5GZJLjXzr&$ zNG1rYX{NFZG&lQ`O>6O|A#xcI_Sb+d69)M;{W46B#Toqb;2TI_^lk;GF-A^l4^dz# z@$C|E?;W9W3iNu{n<)m*doZ*@&(SKgFf62iaXslVK0MKz{X*Vw zShfFWCIlwAnJFNmo}5=0h*C*>8?GfJrB&X{lhLn}^`rlr!th(?0gUz}oFKX#(N-1} zWIp8)Q<=Q6{cCc>b#SLALu~)I$+i9_xKoaHQv}doh@k-kYFGge5uHf}$w?Qe=a37j zV}SpO(+!r#-&aeWidRVJy z^mTpC+t^O%EAp}%Z$b;DH866;40R%ncXWeynH8M?#&%#f4;CJ+-T`wOwd-xJP!ab+$INz=|49(7)3UClB+&P$H`HRT1m& zeDj}VGcqJ~x_p|(zcnUPbW;Z({&mMaR|~0k+p>I^zF0Q3Odst~``cf{Jyr<7}!^)H4 zLj3efz|;8}5Mmn?)G3u4w3f6-0*ClJ1p#`>u^U1^&!|#6KV0i0{^MMWslyPNkr9c} z&q6qK^)sj9tX^6G8jE{l^YQz#vIJHh8LNK8w38rdRzxj;TTSmA;PKpkGy@KD7EVgV zAJvMSS_p}N9hx7 zUjP#ND$rJiqQljDKB84IJImaaVRGBvkJ(@mnF?j#T@lMjJ$p;oY~823^d! zlx}c;x2Gi1!`RUFVcbeRgP!7i4!ZPU_zLk9GQFPQSIG0iq~jTt3V_zC%_L+2L0z`1J)H+q(qzmgErL zyzm4VCRV}t7_^Mdq+X=iSp0WWRldSA2s%;HOj(fsRChfuU2?b&2_!=wCI5i(Wj@trH|D)knLC{*| zv*!SuZhO;v0mbd+yTPb){#6tL^u8>zH|aBaV)8%fxfPMcu?irEBViNTNcYsP)dH9u z_YyZ^3*;=?R7)hBqd^@|+8Oq9+K`)mNa&AULhsk3JvWy!xC$;oGL(y zQt+%>0+1}bnK}L$QI@vZ`><;qc*CiWub(>aGtmfBWpZwRGK>VVywedHSyzg_`sT{F zVscOU3d!V%Tq3%WfB&@xckg<@Xxssn?XPhGIIVQ&nvYBMeg{n?AcOU*9aZ zUOrR_q}EdsSh|7*b$o9)U#f3CsMxMiEWKmG^yuy}*#l&4wMqBLT;@7c1H zKImXbWW%2i#a&VB>K`K<-$Abh{4-cmsRi?rn4vY-3w?&6RB#a?75+t;uvczXqsnk& zI|^a^9Szy?glQr6qbb>VxR?+Il%8_LUJ~mw)g2}ojTBZK*&pf?DWp-JG7U8OGZhBz zrX55w`mwuG0uM)X!dOpUw zCh-I$zZIMa`u5LX)D1Sk_g5(mW?+_8iGl#SvlAs-Ny5NyJh@Eb=@HIXmjEi}pJ1h* zD)0PBgqi!#74qq??zdjr{EDWhpO2lEC;Ej&b%e${H$QHAnN6pGF|EeKhr0I>sspOD zCpoZrEf^a6Zuh;OYyEI9QLpqz`I@&L_Jrz$MHJjr9{|^;SglA7d^2qP*(_oPiz+Y4 z0rKojc{v-}#H?aZnY_Nsj+9Gg4BqdEm(_wN4~&!_t>)iYDb-2Zqv3yz9**#pJp?+O z_+GGjIlAD4Py{-)b~{ahFUm^4bb_Svj9Wm`#=3)6;`F-jwJIt!UX<`B5=EIN6698T&w2_~ z^shF|x_WaGEw-#ZdL5o=mWZ8Vl;(8|Ew+#ErM(%!%HSgdnm97^BiM)PG`myT158`o zL`o&emB9E^s*alJv19H~ANezGfdjoq31XGjyP`-W3vQ~*>FF^GilcxJ!l$O-@hj4}W z6VQB=*aKj-iPgi%b(2rINIH=B>%d7SQLFZpSz-{*q>Xufz-wMfF0joB5{7WXA+u zcr46gG(p>czDHqwnOiwQ4y`1+gAI2~gA`3l!W96onj;$XZfEKcqv5MVM^ox3(i2Qy z3@=4*(GaX$1MHK0KjchhR5wru7{ca2uZ#^Ag;c&I9?`QYC$H0)=NdAd?fPjS@mvz4 zsJ8EK>1jF1-9Lar&x!x^tBLEEEL6WXQ0>Z=e7LHQ)(pKbEURqA-RsM5a4lZ$?{LO^ zQ1Mt+mx^gF7F%(`nO`N+;{X(4FOgA1A!hf2#L|eEfJ6x>M{(UKrBD`KTE5}xvvm}N zfDxY9y%k|BA(yLDbz$N~Mc+F?!qt@)mY;MbzP&luQU>Py3>rtfS2&Qqr(FCx`r4nP zeu(tdpKz3HW#I`xmgV`-k>qUppLCvY>XnSN10x@~RRhm%RQF!Cocz!G}rZq7);Rmnz zkBy`tg_>^D37yU7U*KXvhg=JUKRha3-5pXr&BBZIJ*VxciD;zQ8InUjpV}wkHS038|eS4 zwh+^qKuEjay!Z|jq`_}=Nr~QMl^oK{`cS6w2PwL=LDS+M&m zoo%x~4-e6WdSHEL0KyD?uWrEdPZp}R8@~ycGxx$&XGrBm%1=_p8%b-B@5&boOdl7o zf(McpUs^glaRMhNQY{hj1z*hp&BB12;GSe#i{@~)eYUvm5SHDVu7Sw%ElX->7GRkT z!@iYDgCXvE0t>KKdAF)zX@beh{p|;Mrpvn=xbX+OJlXh{Dpeif6oi56FuWTzSRdJZQr}z&rKMd}Fb#6A?_G48Y=yi~c!hSP{{UW=X zdD!+2N!A~h+cnN{!^m*P%^>epsJS&nXlSNGk8vyYHJ9LAg?>{J9>lH-YNDl?LqAu; zgrzTkbQ=K-i~O@(vb>NWr<__C*DWa|a{-2~&4rGe8hxak@`AeMeZU1O3rkG)HakB# za6%)qpeXF4;d5Bl5Gkq~8?uqV=P?MNlYXf(g?j=0w{c`iFOapIlBQL>wVlDx-t_M? zJD}u$@v0YpB4hyY@7LEd5#RU=o5pimrf8d{c=Ozg9qtIeh1w?XEFaobju`&n*3K}$ z1q_L(@5R0W9yZebK~?>o!};qakbuxT8VoGSp*R4#;x2%XA`_jQ6NG}9ZwgSKN5o8HOKe~4>_zLzM8MpPe(6?g}GS!Qj* zFl1LzlFzPRv`Dk=j7aWbqVB3rH{|mwNEi&|EK_}L5VdIY{aa!IuYue|CR0XrCi+M- zZxpLKX9?EG-+gp00E}ERwW~32q35YEDeq1AZ^@c-$SbbuSZ}T3uf$s8$Newi@z=t> za$W{!ruXJh;b-zf4Yu^Rk)ocKLy&$PvPQlq0;QqQ79oR{VUt}zP8CC#Fu)Eij+k-t z4$P0VWTeb>h8b$b7kn=Dhvvz=4IW^ac%?6!KSJ zrXB2*D@IsxSsd*Xgw}%p-YcAZ#s2CHaqaqMyJ2;W6OMQ8|A+Eg(d+O!?8q^)OBZVe zAGN;P=|c_=jE2C{h=PqOOkL9rnHcp&ps!%U-U{Oe(EzzJLRc+>nqb##-09mi62S)z z!8vyOHs!TGn?Cnyv&kcj0;`oD?)ZBF17a6AaJSCVb~1!zE+CT((@^z*_NC_VU*9;^ z<}l`n&HG#2z@@@b9eMuKg*SCTr@MgX+C!Y@zOXwYQ!hCwNPLZDF8h~=*i@hu3e1v-Sw-)WtlJ<3SQ&U>ySC8YDNX}^%_gnz{FOIVL#R*vF5U|HkxX4;r;P`nhsEs(=H2U{7}DPQ`OCy@$ukv+ zhSPd}eX&-CbtLv!qZ|36BpRQJXjao_0E`3aEU{@THEgQXp@ z^x=kPpy?%hTO`8pCNdn#Cg#ZL^*$`YI{wf*p&V2E>j5#5Y{0ZeRzA92>Q`{l6!#| zOPI>v?z7OpNq!`+PnStBKr*|{;%B~LFrH1<(4tBpnro%5W6|rYs(H*Q97=DxQ*~2& zi8~3!SHYH-uS6J5`&E{lTpWzm?8o`U811>k zf)0_74!3S=KsY}yt+OOT(2?~X)cT}GZcggT$k}d{|9hv z&v6Jy&3NeCsY5wDouA`Fr|5Voz}fq^k%Tbz4!LAr{n>3Ev+c%viVTpZ+HYy2IzqVb zp&e5hB6YorZIp*dq(tMoUi8lb*ou}Vq==Y=_?0aDQ5^Eygd z6bjHieYys=>n4>uLK~oEELmsD?2Bxtxm;h{u^PoD0Bp zviymN?iv8WIqj&>6Ycq8z!yQ8N{q#Zb(vzR+W&BuXmh{OC*ob8u{WzbXLwoS-aBx* z<%>aC%<_m}92x!IE|LJ#ZZG-BU3Tl(hedzguw%-0C-C6KH$2=G4)s?UDaKXU6&3n0K?Z}&x5VVEY*i`Hq{ z*7fH8qCYu{(F?MB6I@fR6#nDTi$6ho=#`s!v8E8O(4GX4}DlT7*EQ)Gr( z(6bce80b~&N^A!N!_vrKA&qXxw}J0tD^StLBocs?hOCek=2X8BPj9Cv&Ch(<`$#k9 zbBdB-RxS8lgG#9B2IV`Fm&t?abxUYP<>{VD0DzgN1`S6GMo1yFX$}&RuTi6to=$x2 zKitec#5DnxUsmg7mo&B^t&b_R=lqF67k14uNL@Zqh=w{ko!t_yzdP% z0sY?|)xBBk(O);J9a#)v-PG~#|8+b~XrO8A?W*o(^;S+!zHq!7s2^T>Gem z(08zw^zgwRX*hv6zh*DFxCukf?kHO#xffq#Nm{M0jK{#Q_>bK2(NE&CN7g3b)?9SX z3}Adw8ed9i!3-|&Bd-IZ*+#V#mjtw=ey7EM<(h)6?&29l!_hd0F6e?@v(uFmrJ2Hh zG^AcIO>iP^7#Wuv%rNTEh0_=vVkm~uS}*y{4-xXQBPxW(KJK68Ep4Du&j>H^RFL)d zZ1|oVE&kQgto0EOoWYeV!~`i*4jnzh&=l1X#^XGcG;zqAye}16#5oJZyr!xs5NXzn z{;&R2KMAOqHmj%yWR6a}#1uT`K6^X)3gf%b_|<=die<%fA0fN87Kj8yXqu9uv)(jE z?3s{Pv6O)rP@=&irR}$0BU78yCzi;4dHT9;76Nd6 zNWwG)7?bhf2zj-I#q>FPoOSwAM)|_KH&}e0XPNZ{8Bgy3!UvDZGkHe?_j&2HRo!4Re&D` z-3SfKvi$40dxZ6zt_IRw`aq6FaK+3PUgM%AtS!`SyFz{~Mc_55uV12RfQ7kVF_1izL z9dz^B`>h1k_*BC3(m#-~$g&S5AmbNWJa3tTek%JHfn>zI4N!D?UHN`19TXBXtMH4+ z8nQPUyh5;YsGV~O_)xBU`HA4Y5#P`ca^j3Q zZk{7(sYS1P-2sWVB=IQKCid5FiJzXsDLt%!m4_M2>QDM8j_WQ3X+9J7TVcvX$)gkS5n@ z5tp)5GoIr{${H~C>F+YykN1#Yj{IbB7Ylk^HrP-jJ`2KOydo!9*;1Z_N)!UP;Wa?F zG|fG|EU`4ilGUNYQclU%ldmo2mr0F{ONwNdhQADiJAhvy4_EXa(00~-yLr%fx&4)) zc)%=gZET{&S>Xv7_JiS!%@L3;rKZ7RE760$-wW76AzU%NcBcyYBZ7_NjEP41wngc| zbl)D0;z|A_5l5%INHi^WPs+7{_{u%RQ_z= zyN2-`^6Yo%;EW*26?7d-+E)D{?bpe)B7;4s<6P#Sdx3zm`JQ^r1g^A4qZcx=>+{uvekQQE`dbK z1>G{!ODESEt4x>?jU7`rIqzesI&i>Lftq+QNS>-GEvNQbE;EaZ zmMrjL{6&Ak=qr@C%=-BMwR_NoK)e#K!{+dxQF87_2jViU;bsaat$Pl&BS*HPve~kP z3jHxE1Pny_VIWZe@lgTFTRe@!o60o~^1w6B_GTQqts2!r@jcZI0IcJOA7MzH15gQz zoeSZ&YdZV8k#EsBF24lxSqYl3fd`=Xp$;Hx>d2TzC1k`G|Hp`zhqowPJ>z@YN zYTD@;^y!3{gs*qmZ2)h!qn*OB-s^GA`zX zSSs;>L9usUUGSO!kO?hB9lux(GxaVn8tjvK+8I8OdFFPW#C?xYxKZ0w%aEzlj7aqP zf#M?Ke}9q&_92c%30*$aSs@Cb?SrM7{oYk9eMEZITS6rAxo1y zU0nGx`br7|GCYjGahpM>a_gP9MvxDN5^sF|O**s{mi>`Gf3fXS$>MDvTNjqJqxjr5 zl6tBh_aQVPo$HJe=$VqX)0=BNK9iJP&rIuM)bLIzb%SR@rKdy#k&*IlxW~j^TAABEyuXI#9v2js=z( z`c^59SC9LY>Qc|q3R9-Oux7|}2CvJ`bDMbD`sL6s=?#p_rlTa(*DFkajJr#>yYkL; z!Q9oYY{j_Cw2nWV2h-vcLk2@?_4NpurB#1e;{|`Z4pvmfxAB zOgaZbZdu$Y?NH%0;ly)N^;9jMTaV9XS48 zgYSmjKF-E0^246<@PSk$F1$D(keloszl+?IWFskE`|P9hj>#6Y-il+9BFjSY_X&!@ zi0AkHO6H6;uh>pu413>{v>L1SiscVH_x)grma_6Z?=qwghQy~+h8 zLFDn6`yR*=Hvpe-sva$O93K~)4J`mTdmqmG6qONB4tX>K?HpLpfrSk$h&A*3np(6% zi+?@Gpqi3GNvM&(11>aP%LUw#t0SjtL+emdDBleDYO3`LDR`t#GwfU`MC$y091hQ| z0mE=usPNwCSK;G2f`1|=+9Ji^8sxJ}qEXAY*oVirr=_oDgRA$Ohw9hEBWOkF{-5~P z4GZ8VuykEGQz!iSx+^Q?sw)hQmansZBVPDcMy0VtBx%U>n<*idY?`&gsqPmekJyb) zz9DpTgqc~7MkPoku3oMlXl;+?CB84TK*q`pXH|3oquU)|yrNPfGabI*WokhauRWp{ z-jcFlFZKqwbcR&d?vD?DH%GN}M0(Z)nvTTQB1rT=%1vyF2;x7c8yI#dlzB79CN_sfMlLy~%v3q)Iw^t9cgR%A1t6A?W>n^touRcmNH>8DuGoL2F6P zbr|{3@nCezRUcB{Dvgc1$yrIrLuk9Z9s8y|QiaPPP#r0-P5*1Tppu#I?>E3-AE$|Y zi=;&+TVJ!jJw^dEgB|=-nNe|dGJ9>P{4rQ82jUJiq?}?biPfnlB2oUG2hteA(3YIQUZA%9wF0U;t}hvlRtJc=NzswZpNA}Ha#1P{w!bnFJBW2#}+1yKHO=c z+~kMd)&@7RAw)O*NO8vR)gq(!9BeCla&jkov#{n7Lh>u~r=KKFppIfU0U`OE;t?TX zgw6D?S7AKFMqf1oJMqN0EftZcSQ zF1XDvYY}T(Oj|YIU02QI+`#o|t@c`E=3*HASuO!EZLTT{ZDB3*f=G9WXo-%_ro)Ek zm46}r-Rdbpu+-^T{l_{G!y?aLZrCjbLnpCSx?p}bvI!qcFUm)i3iH{~&D10qb!83y z`;Z?m_h^U+g~Pf9h1;Cdi(ALP(4US*5pn6UdICT7oc{OkD!o`BetU?VS;u`c*qnOM z;Y@N7gqo$aOzjo;kLN}M*z=v1kJUW172?3;u~Lr628N|nnW4FV^7LX`v@9F*!>d<0 zWbdFT@o5NUh>sRK{BV$=a1yGF5XnH3dqg~C;cuG^483E%7N2cI*4 ztsYm;Q^-4w?-FAE$iHWpgU@`9J}a)}Sn}gJJ=Cyju((EPD^zoLMnr*httvq8QcBg5 z>sKGcQkK^Bh`uZqou!dIk; zr()kPPgUGM)cBIh-WT-8H~pqV^)@Bf#q*o46qE1oawrZ(|@DGxjq?9rXf7h3bH~iQ&WZ{lhi)Jc>90oI;)_#+NjO8;O-KvNpQCi zoQ4kz5Ind$fdIiFNCP22aChk72`<5<3GN!)wQ+YF=5GF)nW}SrE>6{{{l0rYdo8Pr zrhgsQ**c$t|AVe8s|^e*S*@&S`}}pMv`wOY37-F~tt-WL@$*hJ#5f?M=C}qAESI8b zEx9^%4?q8`&s6n4a(y|ftndkMHIrdPgo75gK`Zbhj_m|LztuOWa=c-Qy6u@I-o#!# z{^~L4t!xj4{(vDI{OS9^-aPUPXJ|u)XPDhuD>Nn#^zF$wojULxE?EhArts_b9Oie= zDXw@-dZ95K^!$B7VbJ7;_eXZYL!%(!CX?wZ1#}AGIq!n?aB%RVL_sehxqW%P_TvGC zC^ecRZLvD457KjoMid!!8m;yN=$H0hOR9d%sFC>Z8(k&UZ^cTZoA2P}Fa@x*-1gZ-;&) z>h~szn#Ide&c?_NgqQXB^4s8oCR~G~Dpx;4@0hl=m{DDyhmFAl-VdPvSL`Uj2?aqf zYRHG=v_@4;YG;_C=8ZZYw7_XzKW^z>v1R?RL40IMz=LKM4rbF1dYIr?L*Z%GkxL_n zq>l3~C}(t zbI|<>X^KriiH*J>4vQB85cYpGfX1+N_Ll2rXB6!)py<_ck#E{JM)Y%mA{Ks;+W~GRmc}-}<8$LT{ssLzaoR38-h{``0C zBa?|q0~ULO0prTH6n4(bDqcZtt+~qgCp(zRZkK-sH|2U%WMe&a9+i^6EC7xFrycI( zXUBEq#Et>n=hK@J2#A{uj2Kky3x|*=sd&znrJPv6yXI@bj5{r{x?c^@`xtgeeUwgp z%EywEy}?dWczTSPMyRVlaTVwDbGpCfB|8*Wai3g@Vt?MiifJ_*G+d=@ZleYJ_{ zfcW=fkYI$pM{za|%gi~Rnz=I&po$fC`PT~{OYzyf$Ds|H{*RkAD*P(y8<3{*z=VNX z0eq55A`lEZh<);-Wl0H|7U+}x92Vn@S*<9Y)l01ni!|jZLqJ4+#ezJ|zALJWfn4^1 zxQOUY0A0V{`NBuG=m;G}mjR_=lJbZFt3FV4zu&RbL>>uX z+ZILh78pt@WWBq4$QsgjPS9KFyR>&fy=E)pN)Q4X-!F-&F*q{7KF*q~& zm!MGr4Y6tYIkj7NDS~QZkqe_!i){=cKXJT6K1;YT6`)#YS@vDl^|*(Ad@$x4m+&^v z7{2&d`qpzjF#+)AUuHb7i_G_Lx_Z~pbgxww>`0QC4oE_4=0(oBNV*Q|J2^WXnO||= z9guFd)+Y6ocfmN7qd&wd6OU8oE_M0#Rr}?Q85D0_I_Tkh(M3sQ=73f-u@d=H5?iOK zUogMoD@{@I+?adry1_us!{jF5Nt+%sjnlAuAyCDPzCrc(E?)u zkrPfIk;w1OV>-E z)pVroA-Y6$`{bkEXw?cdTn2+DzoFOb~+UrQf2F`4?Z%R$C{fM z1Z7-&5RX-ZzbiKcUK7ThdhmL=3R}ts2C?~N@FL;oVL@m;ZOJprC%2l3rBE-4580aR zTul|*dG8oJbI$jF-))cwJlxXK-t4S=gE~ETw+Y?v-aZ=feNt)+%T83w7SpM}-FXsn z`FWH*6YrhBeYCFzg3kz3%i`S}7i0i*6YBNwA}s_s5j9`(BmEL>Qo-ZL?&$tFX7x*o z^&r2%6g?ata#uZ+YQf20AY$DpLTJjHz0r*?$w6EZ?K*<-!MlKI8=aoUoo%+tpcy?W z>Tr_Lh5w8ajhL;*$nDYX*pc7Y{xy-G@cOxd_rDNi9W{0U-lWPSdF|`<f^S0#Xvy*rw$nwpx*g0@fk|Sc z%m{V$3>8qb>hbNBapl5wWW)$C8oOwZ!j!U}2OWd*faANo&?>!mSN#P@=_a)a%+Qyp zHkFdu4X$}FCG3p)qT~B>si>U5E`?(lMqolAAdC(}u)9qt-{p@{fjPgdRUMUX;3^dp zvtt3i*U;Gm4baI4@(_(lgF||dUi6tkOVjF>fwr!JT|xME^<)A_Ju3Zvxl3Adh>%L! zB$l($+>E!ImsM>hb6woy8v#B{hp)hZpePI@%iM4m3ZwT8jf3o@qgy(> zwr3(QD-0xp>18eh(XcT zN11LxtRaow&|8tx0)`q>*<(+4NAakSzZSq}KnvN=3Mua*%~zsCz&DSL zkyweO6^AkRmo*&d%T?{$Vq-b-&AZgAp_hY)Wr&R{hc>{}g^XVZ&3i+LgZrbd3reh( zlrd zNnVpw%Y>mI24du~a&ksxv{y_LPHBZr-&6sjF%=Gtz3UOIy}fF{X})*;@1(ANJ6aoq z`0F0E&p`@bz2CWVR2B|dGn*#24X;RrhR*D2!>>bfX1K;i<*4@RVZu#RuCTt*d(6{c z2ix_f+mczof|Qe8J-$a6KG!-L^M;h}lW6k@7c_F}UTV`IQUOkwYVq+51HyoAk#6U1 z)?SZf_c@@Y;;z~*s;ioJ2qk`|lZX%{1zR)k6zOIX!z#qcDFsQVi<9|Dv=MMoc0zLq zxHrCmdw|I2%PvJsG2c~&Ik?F(l7Aq$Jukm4HDL@P{$Tw$5G}-7O7Q$tema>c64@Rx zcNr3N#?M%%9%fzH7C`YT={#!WZNK^!@CgF0#q*uIW8Eo2waJp}K898#1b&GaVe>9I zG4J^*o=Qf~^m=#Sd#`AqYojC#=V*3ht}v*NQRdvqvE{tz4wf0N7vi$JQfGe`;8OSlcxa8DzWtI4`i z`Lofzl~;hVS(^0z@^{ZDR7S!I5)oimDZ)G>d8Wc6@bKqUrau)rwUw#r0VhuV^ul^U zFmAn#!A#utCH^oz-ZvPJXF9ky}1@!QYWcOP1G3FoY0EJWA==k+$rT{cJP zaEiy(#ZcEKJ>un z!rYFGDMWz%Q-a{8!qZ6F!K<$imTUZ~v@5Q28Bqq5?M zR3ECeSs2W9kAbmUQWmg#taIS4Elmgr<|T{*5@y3_SH(F7Vd16S5cnpn%b3=E>`Z7$kFk)-G88eOiNJH=vKY)^dPyquTp?~{^!RvjioLR zmlY!Q5nXAo|B1*!hlzdTK?h$iK-dDC+GB%x@BZLqs!2{5zleM;D+R~$_V@qm`qA6a zu&~|sHmWdo(Kpr;LxD!{2icf z)JSyl^{RWKyx#Ar5DNXFm6oJyk1lKuN;@#7JP|4QHOIGlquS#X!%mh$1Ie}|)XDtY zK5P`>I1^*uZHe!G7g$wY?n{=hug75nqg?ivJ;9IV)@rkP!aK0!+9822?N1WF9#)g@ z`hkhUz312hYLXR@#YgcI6I0)Z+kbzDbVU4jCl~{wub5E!ZK_lTo5b00z~^ne*mpBl zenaIz-^BEByL%@KutA#Aooy{#RO5}qv3jIqPLEgltEH0(veZ#_hLd`%<&hi}*q%DL zsbSjk5R2KRIN|$@=W=e<6#eJs^fS!rA<7EjbRfHk)%1E%nK@8`{K*hJwvi{fhhr*H z#7~EzyL}L0;0pcigZ<=qjFG5YM|E~*L1`)uuN>fkYN0mzN#*_f+7>{z8&aZQgocJz zn=jJSZS2fOZx!H2o_kz~npmQjmOYX68vG46E6D zZ4vahjd5-!zYF#)m2yL>0tYgn_u-9>x zv4hDmf!j%UdbH@};Ya@nE|f0s59?v~xj$6U?k<{J_NJdHia)#FhkWa^aaA`G1Pg4_ ze6poTxqUoscPz<$-UU4O!uX@ercWQf6#lpq$}JfYsmh)4)r$uC8;iWh1KobO^>*ds z=@#pig|dGoVE4IiIg>aFkUA3nTW;RzQ#3~lEg{hQIADcdOonojJ zc&F^Me^v0_O(o*ZZzdJ%>oed<&?8V1Ra|s&NCG{REW6wjz&-o!hODyuAxblloy}li z6gt9^G=zs>m`ig4lgfK>HNPoqI-S}Nlli${r2f4!DWH5v)Yxh!w8i2B?>xi6a7xs9 zb^oxFWhQH%VLgHvcS;^C>-acA6wS^hogcw?0X{~0EP@x!xMvQfDsXp@7Kj3~P%gCX zh5btnh&iniER0Ng9RpE)4CLipvA%L&pIOUwm6ec|#m+WY|4tC=u0ptT5wt@3?~#-% zPHvlFw1_j?l&rmEo#ed#+}ot|WQOtdG7)b%7q9g2>dT`e?aIgNE%z|mXs+=%wScm^ zpZ@p8AdELV-K+WXMAHYeY9-r|&IuwI0t^)~5&q{Tc<0(7_AeRrkpQ(<68&y5tgJrw-82 zk~}R1Owugn0vg?n&lG4lDTfrGTA!T?tC2>oe0<%Qih+5^!WT#n$kr2+?IqOX){l5#Ur2TU%3XG;mQnWUKvd(-a#^1e*120M5d*?^H zE3f>iF(wmS8I{eAmyV)y8t3J=e8pKFyNr3kmnvb(;68vbSX?LRJO%IRXChuf7SJVQ zi|BQy_&UXKJ1&x|tVvR-l+IrOwCz)KAl(kWc|)@@)SIvrT{IjEtx^mZy+59F6|PLk z$3I^WR7{nYY~-4Q(f-K#(DE42O=iISK{{bHdsq@y@&H}MdUo_K)QFpo_9XgRBCyC? z_=4VcC~cU%`*D4_n&zn9ej%!Ih9>QcBTl1-ji;nbiFB|aGoFuCMqVPJwwsmD=keac z^cuW}@S3)v<{6=8VFvXkImYioY?4fp@&e0-bGBZ?6I%7KdARZf)VD7hrL|T`7tB;n zt@#xVSV>kP*f_Gwe7yL5TR(LZ`az>?>>9-U(5eJd1&W*DFceMJjwfL78k7O z5Fg?QsrnyB|2{x_FAmM$fy5U_UXmmqxNP_#&W{a4SaQ9p#S$R^d-{AKWF!?7P2bqL5zQa@0W#XDTeNY$l^ zjO8`+VBh3D);VJNm_MSlVl{|7)J+F=-_I5T+%uhc$<3t902) zPR=m36KGZm?S|FRxWuwtJe?VW4Mv6U;P@AuRHr)%^s5N>2_$-nwE@uFf( z-8#HaT|gMlOxR4L;qjOBTS1e|zR2-l`!TtQ85=zK;{2)>*Nch&BA^q{b&r@iT=K!1 zW$v_p3;5^kJ`HxPT$zysvU|g4!Whvx zLR30(bahf5?$>Y6Y3^Y6ZkRRD-Vpq~XgK~ibX#uZg>5b^u%*=C8= zH1vY}HRz0NxDYU<#MC^y38OM_Cg5rGt|1&@CwgJ{)%6s|uKV)FzHPTlRkeg=IX`8f zr-#}>Af%Xp?osZM4RAmk9)Oh(@!I}?_4&rHe)(kE@@YRav$+DbHHhe|NEu3Vr72D-w=T3pmH#O zOrCFGw)=FORf_+Xqfchqir}P4d5wanVAYP-v>e|fb_c4msrUk$q1ek!U@5KnWh}0= z+97Y5x;Ux_lMIk__?e@7Y#96C=OP&|l-=bcQ8%GV&80083fpYBvJj}u_SPB!S|`d4 zOhfnwa}rtuhlgDnv3Pt_{w&s`ewnGW z6yUW(f63pQz-JCdX*8VCTQ^vH925V^{`20uXCIS9PaIbLoRmiiUVl6aHtxY_#5iNp zu#~?^HU~Md8HKrz13u)bOT*Ia{bxN_MjF48>bZsA`I~|W{#Mz1#D3ZKow~<2n;qlr}39R98`qI_Gu5ipBb zMCifHu)l+>X)lh{7VeW&`u| z^67uexwQ6fU*W3v)X@7cADxcqa6;LMDP$CH41O1#37o*AF4*BZ@>zE{&MJ?AI%MdWp|I>0uI8*>kiQW=zOADIF@oVx*?^(Y~ort zdDU0eA$fz__muSG8=}yqRvEB;A`lU1?3cz?1rM7`9z50f%iU?`(lbL~y zXHk{`D_G4m=naPQmc1Kj@aDzj%zCT|)~CdT>$ksW4xYc0Y9g)b{D=~n%xMSgsmA*c zMt>kpN-^a88$luXGMNnHjRt5IM5Tr~!SI;)NmAJ+DX~g>1Ss(%J^3eID{`RURu5To z@VtNSiY?b`>GnUU3gviJd(taTF7eXbI9>J_iv-yIPXm{I-Lvm~1tXx;fBxw4zh^`w zvb&NRReorlz&o+NTqwaHt$$)d;QKk@K6nFZ$vQSrSPOXj0^g=M;M*fR!Ha-7>ab9D ze2-+P%XI?owXE}PN#tWAEtuIL+^NA^<~)*RPceq*1qu2A_JXMV)faVh_%}(nO!r{+ z#p{+*&0Bt3)kngwT(gxsc+KRyKY=?3jy|lF-)45vwNI+P#?q-^+HP4ig_kjJ zaIBLRAtMZ#tTc)%H0aTI06vB?QcI*P`%lM;DnRw~0p0}mv~?_ccN1s~HsO}^w0WxL zYZO#iGZLWY;uF?XgN)FX!=<3_tpYkb+coLoZ*nJvZqb^O*F=i}aMoYcu|Vt>dE0!a z;m@}pg*G#WlM)=5>~(EXh+bFZ`8^@~U z0mGyhIt@eJZ&`q$8O@ufJS!Y@3>h$LeaDo3#GT7qdqVadrL=n+N?pw?w#huhpExGU z*e;4kub~89C9`rM==AB&Q?5;HFS`rr*c#^#Sf+RsCuC_>Is+vQ8oH|_NG0#E0!06~ zhCk?P?@mz^{UYx~moObPa*g{&V<3NY7r;^teqqw(nM?GLVP93VL4ocuX* z{_dLdgyAu>b;4AZ1tO@V$AlU>3Yy9Ha14Ro13A7!hV6DO>wsCR5-FXVtA>R$LuhS`kXO z=0WGd+5ElAax2`ow)Kk-HNU1-Z5iDo9(EY0O)jo+HKx7}AQWEjbD6OrGKHw$B`^A< z)74|r4})RLSZ#ZEQhenp8sO|1ac@$$Nn4sFIyVom7X7h*or7*Rt7b+B2go{O(^5lm z^X-iF6|SBQ1X83qYEXwRj5OfC59T;k>HqJ(8woM$=4ki?s8S~u8N>M z$J&!3fbK5r*zhv$9Z|;_3V>5+ngUM1etBM5+SubS_vtqSxaMNPuypV= zxhrP{__?--7ksgI0=bvqdDEhPjQV6(G0qK&%kJDiaZ$>f8R7_dXx z`~P1pj9hWvX~*|Z(kr#Y+urS5gK%vuu_sYA#wQin)t-|jz``SQv2{C~bs8R0CE)+8 z96h@6zt=YXwL60@OTAEa2fTEkH6x(6b*UyjZ#Y0AX+u1**qhwcAZv}SPc_^qlJ;3v zb%1l1lVmZ#Rj7E3TyIeJ*a(Sjq0UqsvYGcJeI5ZfsG|9zvxI3MckVV zJKl^$W;5+qg8PsYduN!bZw862KCc?`EBXT>Q#vWIFPg(b5n1x7tZF-)us;9?S=>EJ z1ycT9Z?v?MNn1VT!iO|&!)?y^&w&K-Y+dJ2wP8XHed@S^bwHV*eE#mbl{QFcVX^^u zQL$Dvk9rk%cQuduFz>JJ1i14~C(Xyw874skYuNXeMvF1^UF^V@rv6H@2+7$>rCFhA z#eND-vTJh~Vta8&39|2$ss5p7|6|K*G|Jiven+Ia6V`W~KoP4NMuDjtD}A4WRw#S|udnprl&cKGijMC4 z8opUyy|W!xweKMTXopcAGw#rw-_L5CNc!<`A3mO(1aG=ZJkxhiNJZgZl>NXah^N>d z24RCco2kWbM7VVwHRg*tNtBP;vUwtg5fCj!bgpI5&1X`u8BNC0;L|;RH_)T)b~55;jeekjg!Lx z8J4RhJwmX+m0P=<%!hh~QYs_|>w)Bt{V#bNQp=c(O5cJQRvDvK!yhD=cSqH&XA++r z#5&5mt=!}r6^c0GctyED$B`sH(mEiXo}7izM4cNo+b6^xgVxm37 zkMttdmeUA4#A(f$hRcLS8;{|oH@zhaNtlaOseiI0ZMNG~^ItyIL!$mQoURI5^vRAv ziTy|fQa-vP&ErOM$?lUUppXpMxMB_z9l2>0A4x0OCTSur24&?|zvEfL+4;1}*cz(@ z6TTu5r(-!~7=(r4{m#duUngzbyVhrNHJoE9Z^>;Mx7!GKhjmVNlXIoQ8cFxW7*%wd z&kBl`Vwh z>*=_GR3MUUGdI072Hp?elIrOQ8`_ULNBp*xlNFI((j@9@iI-_kd=Y8x8_z|hlTP&$ znfABF1SLd#4im9=6M@MUkzo;vm88>0jPS<)WZ0pZ%cpl?qhlRY@EtkU%$07Rq$d1x zl=JMf)FwomW2IjVBK_WcaI5|9xV49G71uAYL@I!4x#aEY{Tk&J)9R5et{|w%9o>%_ zX5|*=K1Ng@pn%bo9leDM;ctXt_BfX*rBfvlMVIYwD0;Bb=t1|34s$TehMS%zvux4b zgpJYko5KfEiobg}pzpjPWQYkBluvut`%Q5BsnLmDgmly56O#uMb$?H7kh1wZG;o=Q zdk#4V38^x4V|0?S6KjCd_?jz&4s#p&6*&~&zQLDsLCvc}=s!}VK7~pN`)s%N zy}<-#qSrX@IGq*!3GLftaC6_i10G*k{Va;*yL&?UAYr54Ge{q|xAqEHUsno$EP4#P z)Xn-fm{O7Imvp`K9P6@$l@UvMTzTggYOpqe=SCED}>CK+g?hnvdbe#=%V zzgu#~>#V%%I7hy@x~h7{#iK}Th7Zp=#Th0^FVp=cN2Z~$VjT)C-*vwe4AX^- z7)GXF3>eG|vB`yD^XYexxQv3wyg@KL1pu5rp+T!sTV-JXa&cc>E->FRNd+vAqHE%% z;`32jEsRu-hReP-!V`(=IN7)eo+nqCcnhs45ifIsWt$#P=KzfsM>G&31?Hd!su`-T zqzBGT*!$DFVu@pdSae6_pOvaV0eZD)Tx0|2OaKL`G%bOoq|CUh-<|yRVZFcbX#m==YKaY{Z=o)P^T`v z{KhXkg?xT?)7Z?hrX)maZ6vK$y%xb2TC3S7hVeGyPm_wVQ;Z3V^_!3VUhWu0c*s)O zV)!&Y>UyG-&rEs)Yelmq3p5}C1!|fS7A?iflQ^q!sJ=uHrqe783j`ZI1p}7xT=HWo zV8Tjbloe7l+c40y$p)lh+*qCr~SWIjmd8TIG zJi>(XKib*va?tWr$_mG9Wlkrh<)5#alKm8Ly|hAksobP5s*lj_)E=>$h};Hk+h{Rb zN~unXOmDyW_$+l?mTcmMa`89)6{!W>_Zc6cReRj-PoQrj&O)uJPxvQCJp+Fp^bwdd z(&DiIk*=tF44UHVW8}c7K4Md%61!L12^?dDUJ#}MR*(Oj^pv@NFw;vAsLY8|ijsk>gCV1X z;MG9%yE|8upv}iaN6BB5e=Vo;4Icd~_wMW$N5LYQ{2x=^6#d?RW;fKnN!MEZLbdv- zH71QT1e-{9*!{qme$9rbU7u31Dlwr8qPxs_g`0^qjuUIuNM=A zh8<+6ULX^1R!~&1{24o;TrAI8cwh-9u4Lvwvc^EpFicWT*xltTRo%!6o%JwnZZ*C< z5J6dpZT!P|63JDX21SY<`@QA#a6q|T*b}8~kNrhW@%?!}+wkX(IhLr|{$tHQYhEmX z^Or1X(?A%p!E6qmR*CHaVYfo@YkJR*(Y)(Bz<%LLT~*rwVt8axd1&Kk4E4B#8_9Ki zhI+}-ZNZ9qqT-0z+6S6mBLrREFA>5E`L$agc4s56D1Fmk(-))Aa2;J0Ws(>JUz1NG z{q!#PA!O*65w3jfqDsEqKJqPCm8pX7B-`XsO1JlL_Hu8&b!Z`$D?FX~WvD_c_N0qF zr|{}`{;O5JK%oLg=tjMVR=flh%=BJpJ8Ye>bXO8&VazLMi(PFlwDT>+2plkzt56mK zbmXGqfBMpBV$}x4`AefHCmtdJOf}qDj_u^c$x6$F?*q-0-DSShqEK|-5y^|;6=LBe zu-1Ye-6qiWD~$5@1EaA=Cujn(3?K+KCQTqn4#*RvUfXPJf||xKNdbzq!A1kql#+}7 zsU-XlhFAC^9T~7Le||{Vg388hy)w0)&9#TMk-nt*QS^nPY?=#CV`=+UzDl$p;VIm^ z6#|%m;c18e@mvMWJpJ#r#-VxFFFP`Y|5OhG{ygQqDdg3h*L4m#V;|W}n84Atpx*}{ z>L!Ee?ag6pk-1S?yBU_U*JG;ORqo|MUxlJL`7QQ0bt!oRS#iK36dleG%UX8UQfI~N z6eKFyIf_y^a6!O?T!oqFaV6bgb|C%6kIB~bM-le`RHWjd-*Bv3KyUC=z z{=TDFQm0SpHK{)3X6cu&i#y-S5zbs2P+AP*qDY9NFI@Q(!R2iS_=2HRF$Zajf|st~oU zWy@}ueH_Ks6YF_%L_AmXh8fv_rFCk&(H6bAP zTqLKc4c6rd;qH=(;?L7lMm%8Lz9*>;oTD*vE@l^%>=Uym@SWU88jz2}qiqzwjm<8G zX^6^1D4^3^dmZQ^?MW?|@KM>ih0%}SxuUkGi|{eE@d6-f*X7jVA#-nwJ)3p7)r96; zcr?s0X2p>kGn;NSktR*lZBhrxpqT( z65lk}y0D~5qJ14?H+{0aO45O~E7FC+lr4$nVT$Gb5FO{EFEduc1nd_;rhdygY#Fw^ zO$VONc~vZ0&|HyAnK#z#fbWZnb1bRn{E z&iyI$(Ml0nO+p*(#BhPY=m1s zu^}4MZ0gWZ?4g++qir&jG3}#(>eTz_yak}BRYhuDIm{UJn-+m@*dASBK{q;v`!HZU z5(Up1S9P}^E83U0qj5X7{qK>9CucD2_|D$<86;_ZKEglFMgw@#M1idj^}+T9OT2Q* z&pzHxwL3m+IAr&;o zDsmTE=O2cnc#zOk{H++%?bI48`aTTTS2n>19fYN_ilr}Y#qjmFMmzu5eG~i){QY9E z&fOJrD8p{7UR{B^FW>zMn^}CwK5o>2b!qOTUYu7`o?(s)T*TpohkSiIBl#iF_6=^~ zKGO{N&lvX)Xcd`+JXJA&-B`(`W)Eu)UyvI#mjSnz<2k1F94{r0)sKtV&88?(rd-99NWU>>flK1ytc8u%voY^CEV6g=7(?pP^gf|a1~2tDy(QI zlB0FY+xwk!X>(F3u(8-J#20iER#J_Y%0Rk|jc~XN1N0(Y_ZoRvxQPRE({450R>Mqk zvTX#esn?m#Ke(X4FZ@Lt{T)foCO%oYV~r^8UZ3^og`SNIcl$NmP6^ZgR5Y>q=fpH^ z{hS;lF<@dB$09puByc=L*uG4!syis!(kL7XyLh?@@g{rp|2HDsmbJ0&o;O%}JE;5< z2W5Lzhi_mYEW7IsVt5U;i5!{oV1hgj#C~YKU^KPzDmTVx;4qK6Yyy`uGqT8xu6(Ig z2o)B^UASwAHiP7U$4=J8-`B&1hayvSu{!>Abm)J-Q?-|z218Ow#eRJS*qmB`OtYSn z3ZNASLFhPqeFS6O+ZW(q>s>lN+pa_RNRX$OgibJjh1+i&;Qb)?EJ$}4>o?RWZ)f|5 z%wvO8PJXiR%uuX2lHOf}ZGqIyU~`D1?nTaMgO`OcjJ5)ev1h!;v_;lnRA$<^gKdAE z>eQiTZ9Gd~gV`LcMnG|YSN=TyPT(xXTVD@s$x`LX5_knylgNJ~7NR=OOH6=TgXTZ~=da1ilY2(ZOJBWp7G^XCH{=RDg}FLvNW~ z=TRta-#BQYH-u-iv`|fjbDRw#?8QbzOtCWf=4iFRrXW{N;<2|%n`}$4Q8q=Haqt_& zD>(`vQ%$R_oEO6KFG!xO3t)y^qHAAA}9jOI;+U;T=OKakLL3`>qiIgj{+bHApy z^z4;3L2e_q@NPu#=T_pfxHwMowm12#Z%31&|IvyJkc*ZX`(3=)HQVO$R)&fn$Fk=Y{jw|YB ztrr=|fSp~P&z1ie3Xkyna9#sxY~sgE`>vQzpvvAF1`V|2jOw>lL3RSsB2fswf2I6+ zU(O@5d(PqKoxztD@RVt%@m^>VYVSTRg1CuUm55L_*L&V-gLC?Ht8C7K(NXc>B zne(Q2D!N^veqyRjY03N%THY}#*2#Uct<^a(lOl9ia%at(H%r79`8@@9RI9nBCPrAL zH~}R(AV%$1n1iZ(>NP5_tNuJIXn9R(UP7MG){fR1MbQ5~t=b-fqNlk0!FR7m`7qY! ze72ZSmmy!MZ3_+^xTrP5rdXoSFP?0AWlQ_;`JnoSUZd7n&2+eSd~) z7XqOokt`SNK8qtyOI(GI(Jwi8n%VEHGALZ+&YL?!z#~ra?E|!tZ{@C8?ZK|ry#*sO ztHdg@BVe(@ahpd8(6>SgY@#h6)BPHYknJBp%`Y9I6+(^_JV$zKf;@vh{kk+Zc^a8a zp{Vt-A5}EbTqKBIJEa{=WC5%J>=&<-fjO8t|M(#f_0Q;>f#08^9k9>zcF=tRn8?zwIeA4&>!6`JpIW29?yLJ+Z@=w z$48a`8g&dDi#1-M5(cR0<`~m`N+B!xvit=$^Z58+JTpMJ8Z|mpw)`AbJzCSgH1LyA z8SwCMY4ygnT6@jkB|5GvkeLYp-J6PEnlZNtv;A}W`7(SIJno}kcgYN)+f9f*zFDMZ z8YdYSW@Dn2J@=z*Uq>DD87rVgVb(_fdn|RM_W6EQc9q{O3m+EkoFjWFgHRbBAf)wSlPj<8f%Jm$P2NyaV6;&f_leR0*um<)Gvr%-KD@xZ`jb7V6~@4NTS`D+M+hv zp!Ih29zx6*cZger`j+==PG(S$m!Y}Z{RUs0l9Uks4U;BdtF&*Hi=w!jzM_p$|RGCISY`N-lU2lj{t$s_PhxxL3%0r5@ zP*Q{@xeJz?{PAO~d|K!W!;O>4`zt0Ipv_5Cp20W9y)c0~v~GF_GmbD%9TLcxTJ~_L&3|c*#MPyH9Hl7oB1{ zd=b^B>=|7gMVDsrmpqvL()tOnq2(_YJVqRt+Dmu=G8p?`RGsx(lwbR`C+P0(5DDqd zp;KBqh89T)r5Q>yL!^>~q_c@OJFWmRu*R|F<*GTUMa4C7t zqZ^2AFl2-MV`4?9(>&Sv_a~?SInSntW7NRO+x%_fpfO036EE33IronG84Zv53$}98 zwCZ9nFUT!Q1GP zX#DCm)BcdP33(il`GpQ@Ivf6Eh?I6h*7grKwUr=HVJ`(PG;t2)3UCNyj@3r>dn+qt z{q;Q&wvG@;wh!=45G>458NYaWX%Zaq^7#1=CmY?BhBLqxn^UbMH(~g-e6-6)@CmXs zWtNB!ng{fyt~#lIiHqgs1`ivTg?HKtQ+ z3$L-sUZfC>+SQ7P_JLQLO>iK>5n@ub-321^`wfLo4{Tm&?v>JmE|9#8??mi5t7fv& z1@r$a4Cnsrr>r#;Y68Z^JFE)P0b6o}J{cfc zS*-c8F|r?uuu;l#nB}M|t4`yn-DF>2YEM?@hii9DR}Y5ydT!&$Z8epKONg>i*ZLul)Fp!#v|}X3sis>e2D9Y zXf4z_b(>Ej3S#kio#?e9+T6{JN~KLk;aIvdDh{=MUc)I=2?1=A6^WgF)#m}OJkn?z zCCuBoP%uK7UN&6?88b_iThLvLTUJq?mT#g6$#>$KYo z=3sz5fO~{u%*>_d$Oft-maGt~uxY(WqY_&3IdsLl4E3pnaIPgeknun7(bBY;2m#G6 zZb7+a`>q0WOfmvtAb<`Z=$-yQ%W{!gtfnd0L9+**K*;JA`zMf^QUx|e{o}V(QS+ux zG6AO7a?A9qAe`jqCz78HDhS`efy7!wR3U25UM)dg@;iQeTEXtEd!;Gdl%-HQCS?|S zADzz8^TK7+csi83l>WFo3}k*6tsjYdhHKYjNjQz82jKl%Kw)iX+gjFt?}7nuVbj#@ zPcpvi3k?H7fo?#Ppw8!6V4+WN1KIPQ^AJc+)|Kv#vOL+D1@KlA;<%-C^=RD<5o5gT z4bmZmZj)oM2G!T#nO^As7E@K&pCm}A#qv5n0p{UvG&Y)dFEfZ%wpjYGpTtAIxnj3u zQ~R(A(6frGepT;T6ZwP$qPkGja-?b}nv3OTF;M6B+=vf?$AgFX-N)VUw&>yb+jv*# zS)(`-h65Kr{OZ+qnQexD{S-{TTw>3SDhe7Q{+JzYtq3X;mR;7RV4FU>eotk0>n(@1 z=`9&*ITh{L=G{-}Ab7ud5Y~6DAZ;Vc;e`p2SaA1`LvyW1!_+&yn97SRlM)np(C?)oSX$ug{8$T{Fcm3OViQ4s)PM(Q-d z+!1#z+R5psjFm?(4;|&8FWL~-Y7dWH9=3+{t@}>zR18#ypQ#ueZbGM=e`o%^3)ta@C0i;IQcgCDZ|p2%kdeL-UDg%6I?{!W~3U zbWLv_LXI%2rZ;_PkV4(f#A5nLCJV-JckdfX%aHze#l$j3=JU1l&XS(kLkH- zqKU7iFEA61=LOE;Ex=MC2ht(Y(s}K7)lsv?=)8zA0cMj{9|WVKzGBsbm1oes_`~qv z0!#|!8o!>7z7a3Rf{{Rj+Hl!P%sA!C>OxbIpq>pliC8QVZ%AAP0B?q?`ivZ7cR~_%IggmU=U{!)HcE`{MQ5S zkJX_!nYZub@(S#)f|8JO`!8kEK~rT%{yVN;P{h9pEaN)cV_+E`CoY^B9g*jxXdC8? z1<*NB0zWaA;GM-+SL&lsgF=>cMCrbZx*vT=+gA*g;4QXR{LancPCIG4)Z zh?LE-V#e`7doQ}<#XD;9p)jZzSgA7hn-z=AieBXqi^ve zoagoLVmYt8AEcvZddS$NN;CgXyoQRSTBeCwLeRYFsSj03$Xi=WV+@+(>O@C|-L&x} zd=R=s`CvOF@*(OsxPwr1g=LekHdJ#7R;>FILQbVq)b)W1lJ#Z}4KMw3Ezh9RnyDSG z=rN}hCov2=@An`j-0T*V1C*~SM4MfNDiyaqXwQo1WTu@V#I~H)M z(&q1xD$dqqoRg|#QPdk7^+kC9XZCUobxihKu6O0C?1vLM)Syk6B^R`67~rs87i_*8w|K6LD22`IuVPfD5i?+6_IpYaH8!Cqe$+=lyB| zZv2N6p~?I1Yj=>l#500*k{9I6YT(`+t=lM;$U<+-XEF22rPO}Mkt}fxL~UKL_;7v` zG?(nnWr8k3p)mKBQZR~S>F@O0h*YEEU#<(qGTy1EsSt}x%`~eMZlv+S5$@Wu-_MID z9R87I)lX=CTk6jEUVmDORsVZyDL3ZsEG=PB7_Tg=^22>}yyoCiG~#sEwD(H}LAiB| zEf1saHYPx^FJRwOwe5>oLi-u!5__JsFWi|wLJ9kD!(v4b)B4#04 zx4vNe+nzmxo#e=2ZDRES+mw_qOa#BGv|WGL5fTF_P01B0%bs)jucMOV;Ft zU-^nb0buJcT9O?!M20q=rx;qFtj99&6 zIVpJ}PY4yxw8xW_2I;E(oYcz2KAWP^GR5mKI`Wc z&ORS}KZpZ9iFj1KZ)|PUJ=&cBXA@|*rJpybIIGikTKDa~mX3~3IolTJQ4-)p6iRHYJ%f$w=yzIACPAu@TOvMNKOGpe| z!q^;YX%TGk@|Rn_uWKnO5^5+GCt|Nrj5H@=PJ=!$lteTs{FjdwGK7Gn$7TxcQ|cUKWvs5Byh{?7S%peFk$n| z|Aduf>3E{7(e#>pocPaH6KmGOtt!b^H&};T@68}#=}YVEf^?@<@aGEMiGzaeEh;nr zpnpQF{xar}G-V1P-Tb=;nhTES&s2c*(+Qj!AT0)68NOF1)KUtA>e$(g@QH#-d7fu# z1d@PR{*e$l_h7aFn)z4}GWr*?2c-SA?-#zlSE+!f4B+&Mm4!0zOrhgsS$8H-l09CM zFiwuddx6@$bkLfY{EfL$m+CG!zXNlI(6ioeiu|B&!+=v6@M6XOQxAvJL|0u#ps_-+ zB$k`)GKmJw;!8&i5`5OrVA4g%AFfLyG+-uG*|bC|0Ni|I?@kC|^{j@6Y7ilRXM+$58r6f1*bc+z17b1ZN*Y#JwJ8Vk zX>LS{4Mk$M@fX=_h;xA74 zKRU`6UqIG<&06r`+y4gS|7Sb+Nblli0)prA9EnUn8>59PKbD7@lX36ZQodAou5am% zL*qmW*sJWEn2OsQ;euCX=orT8v=p|fRNw#d|2i|A`Qdl<(m@Po^FYH8K#dj0^@ksf zkrEB7+B=|=7CGObA$X?%@GtB&W)1yEe5kA1x?f!YHY+_*q(ns;?U%8DWnyjcZ4CEc z%0%p@aP+QQtlfWLxR4+5h^#$vJsQO~&7rSY+{i!3yHaaBblOy|bJsVxP^lVS=3#Dq ze|Y?pR~7H(tMqKf3VK53k{*&2zDY|>08l2w@rNp7tF=Kx2=Ka;MUKG~N_Ym-8md~g zaeDk}%>LDwGE!BrtM<}!j6Yk-4>nY9@G?mq)4i^g9p`y`Ck>?8{FyQb*Y{1A4?z>C z0`Mi1{9sm8wq-YR0D+v@t{bEVsjdyrc-%GF>0d8{gFS-S$-x5K)T1aI>8O;Z_mR5rDy%B>HQ8*NW4zb7%!%Q_1 z#8f0W_6(~S9@mnqSg8Ks&`5ldeK*pAaxr@XeB`bTS#O|&N1;+^=h|1QX*!W5M1K)8 zDM9Tl^58#S)aF`=cp;(YoaOVBe2EBc&jGYf;&AmxwBdPjxnm_^ev2#TCYuC1vu5y< z`zXou5kX^HDVZ7*-%(H0ohz+8guZkBK)X-&b1u-la(@Tpx0b{Z$93YNrYiz8+YDl7 z?WE*9VyuMy+`^jY>tcaMq3QIhm53(fGSO{%(SaUYJ5$!Mx-@O(pj6=k|8l-agglvO zZMoJH5)d+MX`^a;ej*fMWN03`88Ueq5j7ZH0{L=A$qL{BYyshmgbK-&saFny>%-C8 zUV;gKb?7+pC8`T4Gf6+a|9bvT5T=P|4|0#c{}_aJbZ#DY^ak-3S?%*1CV%^8oEffj zMx_iEGT_J3cYc^n_Wf%N6feN7qI6oxL~N4-N~=u%yd~KUl3VoP-|sM`205No1u% zY4#P8uKPxDNqC%6N&{Elc~^}A+`CuUtc+yWk3yQl{gYDQkh?X8NQLPiQRK>Y1)b~+C%G8P!^OPxZ~}sY1oi0K0Ixuss}|&K(Xj9ZhJ=eNRXdC8_D!t~IfH+A&`nOy4jO^VFX3_N5lD$_j_#?*tdB z_)@}4xhiv#b!$>oFn#p!-!%>^h_yJDAqYE~u%hiG6nZC?H!#nyAw3UQmM}}k0g;Hvy zji-1NvPLKGn=Co6&Q%;u#>LQJv-T&n!XG@upd6Kpw%Hyo4u#$@yh66GT*+Ana`ZaA zW~dm>L7F>KUI4xAL!ZK$xy~ZfkRzl_HzAw_uRLb(V;S&963zj2^ntxVDd+>TA7!5j z+T;^Z5&RZt!q#N0P~l@MCPKcSrf)0+2w<_1q}`T)juZ*ZoHZuBB{ef zMX$Y-HlG2|ZcTlL{*kHKo#I5s%B~2G_rc-^TeyD?~>**!17|jzwn0E69SnA(ZiQgVVbXu(h+`sFl8THe6L?^Id335R!pWL z7L`t0>I^v}H9l0iu!dW4ul?q3fP4~k7zB=`_gms>}^CA5!wTagJV}=+eMnh!RxuNu#3P zJ>G3uGYBmolR zuK~0l`k4!uT}rlqzLK#O9;`mny`>!dw%uy?My1@peFaUDJLjCAz+K!kgro9}UTd<^ zQ9A!73oE2IqJzmQw1gr59Y7VE`A=I!fX>X%W*o#Khb8g0?-*8$W>KQIYQw4xynF^j zfOW^Hw@+ahl6Dyj`WncHFvuGM*jTy@75a6p-2sMJCEbR2G=e%j^@&^uPVs~ z?j9>t7QPmbhmiM3rokKMF2(LewQzs#wG81wbGju!Rt6Plf~DAUe`bKf%qFOqB7EWm zLCo)FQyTI!Ug4T`BywgQEErI(7?)BsKaD!5NJNu5t!1Yvd`~x7Qbrwb>Qusn)f2Lq zabEn~63<7!48t@DMf@-kdms)MdFO^h50Iw(InOK`=^G+Z^$cWZ+mE#QY6v6{X{Iax z4mTf7pCE4-&^r_6WNPGHtA_<=v(rk@#4fhbUqazgggq@4i6)uJ3X@fZz!n?|@NMe3 zs3q!dZ9Jia$jPT;(|=N^M|o-cD+#~>(Q*&*$vy$+bkom8ffZ`xv{M zPE(u@Bw(dzGO&^;G;j!EfF7=sHQpW!Q@inC52oX$7)kpQloZH_6q}& zNotVZ;fH${=;VO{*dRI8wuMg9i*I{L<=p!UGMn@O9 z?Uw~Ixvk>MIYoF*G0Hkt*SbDZ8$(B2vTJ;u&T6*QXxlU=m1GM;s?=%2$CAQ$kb6W*Lf`%(ghj9~4*Zh7$Sw}Y%F@%`^v#DvM za(Io$%YRxTmCKIgVpBYZn&H8k_pLhox<|@8I8i>Yb14iIx>xqCnKBCq&{jvI$5cs{gN~kh zsKr=BQ9&g;{9Ag~7HZ*xPm&tamC4Z!s%fk2I^TK#D}%<>DW$U^xOXpf>VVcdZ3)@? z2bm#h2vWLhhGG4U`B4Co5%P!)pjXnX1A&)$Ej5luh88FyUvUymvXO1fGwrD{G~cDWGsMVh zAu)6wq(%}o&W9_3pJa5SthJwS*LR(D8E{ZYWH;M7L}B7U5?QhC9}8QOuOWQnboI!@ z`0|O+qdD@TY5aE{WT@{p$+Jfx0(;iKEITo-IF@d!3zkB;yi2(gm=yD?efWs*bZyfC&g9jE8ScaVYBpsN@&x@UaS2Re8 zYB3enG}&eQ1CpU(Ls6j^juDu7t&O^r9N`t_il9TWWzLb=zoeom?C*Rd{xOyhN|{kd zcQ^dm|N^xe4bi%UQ_A*euX3yLcafGNsao>XI1k& z(*LdMhj8!^fKoCw$ZONlF=S|MqqLrZ-`Izo=<8N$Fo`urEH|S5&G6kJ; zXZTWLzLA|1pKJczNKMqxy*C@W4r}m6H1F1!{C?VX=~nsQ8PnnL?LL6_p8B}CG?*N% zyA$<1bb>4VIi0ks=_1Dr&R%r^kRk*z}ur7QkKFJI;K-E!e?B1j8?_15gh$Gy=u) z+eV~(_bKG5OO{PkMY#a9YZQW!y!(3`xc?N=GrgfwP85xyTKWVBb={sBr0P^+*mH2K z&N?BNo~jFV18rs?R80)_YV@^a(Zt>$`zCAg+j)&|6EXERn7nUmNvA=2XZ{9&>+gDK z!vV2xL-JOZJWx-}kGaGswoa${#ve<1ApRP!4h__+#LI)c=Cx#Yq@d2cHYh|dVeHV< zcW8ZI3n+Y4LfjXkUQs)@y;Xv>D=y-e4D2Tw!o|M*m*R|VwsXMa0G!!k)&T!_2$Myy zZT!9^eUGI7u^cLmEcl6sjNWj&)OgVkL&$-3v418p#Is*FOL68dcw|H0Y82!xpyJeH z%{a?^kc*50LfDOl$~wt8=V~tnB|6m&cvh~O%?`=tw zjGC|o^)GQRqxlCcPElo)1Q&%x^ju|*PWLBNi{RtkHi@p6!QyieI@hOlP7$!wXc@Y; zMKKU32lP|6fPL$4=B3H}o! zqxeHWJCY-h00F_1ZXrD~XIGWnTu6?oCoKl8FSh(bW6fJVc=jj{Ac z_XfX_M@Cf`O$6qr=-s4@7BEpz?!d%dOiaH{mbPsy2}(?K%gL1Y!gnTIE~Uo+F8f;4 z$CmXlqo9Yf>jqM7_P1GoT&)62-DzFB_6EkpB1*hs7>pB&1#AR0M}%u^D(^L!$@=bP zS4n=Hx)Ok&Nc~rfbH|DcWqB1t5XEy58^#1be;krl0XrzZ1dw>e>dX@p#tz%&Iao(V zHI;)=dfzC_y|?P%A1~0{h%eVvsvBQ;3!CEoo#1q}Qt_e}&qjbfngZghWnT?`4v0(mspB&pNFti_! zC<+TF13drrO9^Dsm{8o~AnPg3o5#1AFQ{2^`t$;(NJ`1Vu9~ko2TgXF^aHFyrRYl) zz8v_DtLLUYm?s1Fg0DDfAHJF zY|4#C4LwNeW~~@IdF+a#U*|@hZx*T~meyMCGOO2zw;-STIma@^ynDkV9KFC&N-ROq zGd=`Otc!)m;C8r-MGeZhOK$ZwAmN|6A8T#WXex6Ez7M%Nz$5zFTntZi`mtORT_fGp z81Q;#@4sDa8BaNEO5t7JiGEM^T_cj@>rgDBqO?Drrn3{?`$P4Fim95zpM<@;kS$3K zX-@YE__J{gdVI2Ssd)Ir##%D9UmT2VCVtaG$RBSC2OQzY49E&gnkSK2dJ13D6Y3L7 z8h@?_Hl%^LDG#6@`3;-G2D1mwRi+KfwPqkDabVC|-*;g7ry>bWu|iO2nHIxX1ccJ2n?r zM2M+G9U#7VlQRy?Gm^11N0dRs@j>|LF_*8QrP3o~3e%Z7P^{KzT<5Nk3$OrFsm!A@ zp%}rSb4;vP1>ihW3x81Z%HdV*8;R@-D=KOC+T0h?vrupkZGJ+rrNey4?|1qC+6Kh- z$8SemeGqMR{(oRcIqfcowElNnBQzIXcfa_5@%d#v=&WBS^|cfPB-oJu$nB%BF~ylg z#2g%Q&F@oMi4QJkj=Vl`jJM)AzntOPNUj6=-3SpswP(tF$*G?bau^Ii6h8|f4lSM{ z&KK+Z;v6{3BVIud36S}tb^qCxp{>i3I=9Ikma_dZ z-J&I`fFCaICY|%QK?<;MgsHJBbpgaR&}FOdPk`-zmHN-$o>b-o*_w`(uOAFphOs4|xs745rI~#x&aj0gWHL3)VDWvls(t~&N6s(5K#|1Oh205N*wF_79h{S=mQJtlp3)aN&qmbk1-ZH8*XevVb(8Dw1eG{$^QzeO&Q2ZJ5QZCcdHUN zgRtWeBvb@PQ*WaOzXnlU9Gvivqg4y8k-Oq_bQ4h|SYVOzKdLTV0yP$LGGSZ00CEw=)LCLhvtQ67(jDUuZ)s|HN>^@+FiOao zNe30QAlXBesB)U~YINDfXu2TC8c2-G2y!1S5Fx1O01@UW5p(JA?&m`tAoxAhZHXfhJ zX92b`%L=USSfA(EA0+V$+t;#M=GLdRPLn_8(GJMIqLz}du!ivby2xNDVjCr7v;i5h z@0BOB-xhlsj*U~FKAbV_+s>cAc7lAyf39kk^Lgj8d-4f`yQV{?4Q-KGRPHm1!5INh z=sXd`nF=pzBr(oYh^b)fr@-=gpF~ciQA~JNt-Fkh1!=Iw+U+Y`aP(E>kLu34b3={H zeK@#!xp^jz7nEvH*TG*CrFrN!wGCt3ZB^Zlb#Qy7>l-A?-$*@mo7UXzGk4Fb zRutyeIO!M)iOBCYNA;S-0Jk`0<1m8~Sev*1Cv&fZ0OCdIBm42d(_49$0#3cU3VuH2 zRJ+*_@tG5tORndZQDPWJq(nj(jd`>B6PjP(p_88|vbgc{7iEx0q!uz5$T~ulkT&~G z3LUEH!e_<%qOe{+iZXGj?5G|v%yZ1-m%Zll*w?G9;Bvgp`9sp4eC#k3;ohrh9Aa+s zfscOie7M3ceqgtqd68nV-`6+@kZbe`+2e)Wb#$Gz3*oX<^Z*+XmD=Bbx(Ph9Sq zVIcP-7aIT#`1;2HQhGPv!>vBQA|&*Zr+z+7u@}VKJb&_0xbU&m&q1G3`Nt>cl$jg3 zVk@XT{z732;#A6|6WV`bWPUFd2GYw+AxM%(C_VDkK-{aIRol_1L}H~$N5AwVk^dpy zW9;7VBF&&o<`=*YAt34Saby&mun{gV*mQ5&M#FLtrOeV;6Eh|J>!xCbXY z`O(rDU?CLxY;shBHoBv77cw*|xB*u~@k!gI0QoH@y8_aQK?}aYX$3G(l|9rUqSDVv zH3F!M&?$qEyf*5pGGNsvYXJ0B>kQbrw@d?IUn{Z-$*67}@rk0UB|Jx>+1Fbt&?FvK zJo|%=lu-kYbg}C|5oG$m)@Fk%>UUZ>GN_gP|8SiK!zqTtKgqY!FuF!Y5$YNc*f@s zBCS5)JKCTjaVY04Eo)-j-rsjGc^`5~FwJY_mnl9aD7loOAX$r;7k5k4V}7-R3Vhd-m5FH#HD^wD>x( zr!oq6UA&n?v=hxc>1f`d76b{uk<;33z4njiDC(v7Yo#1Khc)Hy#trdjBxV zg(j~T`#Cc$po+q~Vj2@d&Zxa%r{bPelkr3`KPP zxz!b?Ufw6_2?Mz+%!#AP@L~ufr$F1Y2T2tQrOyDCaxuMtJymwIfI2GPK|d;m^mRgj zaM#!1e9|)ImtJ&WPE+EcEtW?7Bl)%4kG4-(#wk{sds`%G-(AoAt%_)H56Y(k59{x> ze}gQ>ut+$a`<=D$PuQ<{&P)?~IG(p9LF1d|o_Rc>7pbqr*gz74zuMOCTtEc8@70h$ z*tgW8LBkUywt9%yPrgQjMc&Dw*3tr^gFr==ZJB|)H@`@{554QWtxz7kCMnsQG8NGg znaq6*!4B*vj?b8Rz>U$m%MCGt4*!E#1Q9~x+4PRAu-{k8|ff6adznh30!SOWXRoXZ5@W84CA62;AW=TBXe8L3UbX5chcQH2cf0K%;_ zH!Srnl8rc9#ZUv;*1HYolugp|`gZ71-Zd~;~DJ}%Jx{f^-Vu$uz7)`c5rU(J@b_$C8fxq|E zj?n%|Ci$2p0=sqRtc|pf%I2S~tfZ6fo3}8)xc3$xWu*;Le-MiNoOua&Y_L%cgjw`)a*)6e$ z^@mb>Ocj}I*Sp3@TIK+s7qAeT)>)Fa&mF_CiUeLlqeJsILMNKY=CxJYwmB(NABWIf zM4(zc=u`UnBGBD8A3i_Bq1_O>Bx?FARkYHJ)i!IfnF&N<1Cyx*U1^Uy&5i-|jiKX0 zut6>UHX-yX@;s4Y%+oh$ES%B0Qq)p}WK~}p!b_cxKPc_velOC-(qYqNG?ijS34fEe zc-l^_wP87mk{-&8{g&)hS37t&Wb4B7jO=>Jn`0ChhI`+ht$3m#6tfcD1V6uXu|UDY zotP$Oct(?IyA0qz5Awa0X0iI^5AjYzJR>ba^E|g%pF>J z%K0`tvW*#*;#uZc7FIG&zV!G;rM`$dS^$Ewu35Y9%A(MLaq|6D`Fs>~Neh+23RS+4 zEkgO!7sK*r>o@R5d1X)6_rkC)bZ<)J$ejQkkXMh8Ck2eUzmd)w<_auK zHB%`OpS;75`WP}q&tHI212y}dFvSf!KMYv@2sUis!#`L-Rj?vRS2~obb=_W61Ck?lov zvJ}M!oafElf=-fu?gm5H1f?mTNV}!_cOpB{+6%9aUL0~iI~CSZ!_7uKmXC{7>baN8 zd96d;$Zo9fof8}E*@(yH+bYWg7qiDxh*q=n)cemrynkz{N}FWOR>WZ3cQ*c!uTFw) zkNIkaQUdKjLxy)i%(w#(Fw|-)jP{}_X9rL$u8YYY0n|L`mcgXH>)opM^-|pK=nLmqlS6`@WV!M9v1bIV2^orOMnYa8$rWqVTDTp4xhAs(a{t7$ z$|3|sRi{J~UxaQl-#v<*N&5jU7hdhE!QR>`gAwK0z&jsKyGjoQX2v3F4SW7oxYwsL zY^3mZaDj6V3Vh?R3Qfx8qQe~z8E8ZP1zQ&VBPCk;xu8(u>P`J9V2xW@fHbqu!i$)2 zkET$LhZZuob4*9mqXh4-m(YU+y)u4O*+X9n>)8X|Es_C0rPa(}j@o$I&L~B&08^huU$FcFe8A-mBn^m6OkAEl^1LV3znj_Ij$DYM#W^ z7srF1))ur1{$VpTFG6$y9Gr7E1E6Vr>tW3^@4%Fcc40;sJ2>Hlmop^89f`J9CIe;S zeT&xx&gyyTZNNb`XxO~(v*w=rp870k8AP_$XV*!xw1{hWt(eHJwW$KlT&t!1_<a-9onQd%1jnz(l3D{T3u=eo_TSvGVc2AI_g^|7nbcQ`+j~eF#VK6&I9&tRt z)ok}n^TZw`x20+YL?S`lsJEJ%mVdx2$Y&)77!BoU7t5>>G?Vez3=5T22Hf=)0TZ9j4DMO ze{nvs&1lKWQJhpGC|1jdoKLTYgVXGIfFxK_*2m;8uU7W5XJVQn<#mCWU8@hAc zu1D-Zpua}J5|qy|MpIN^4LQ!3XM084I)!JyhzCJAW_$`ey2Nx z14Y?5xb|PGR{$B0OR%>xj!GZsR^FKlthRP7mtI$|$#nTv1+;o{o=E#{(IFHf8F~AxkKfP+ z`(J2UO}g|M$VaCk?`@zI7Qn*@;Gz3EbJQXmG^HskcKF9z5G$O_#e-t-$sD^E?80C0 zJVC=+!rRdu4j@P{RtMjjSt~hXqVDbUSxhau+cv zMsXseOYcYL`;cqbe32GR+2QzYMdfG5qb;JwnpRHB4oqz2Nxj+9(lvI)?C(9eCqa-L zHayjseW&V`@q~Q+4SH~Ra_&Su#LkG}MhuOnEPSvYs3N7R)T*VH=(YFz-0DI#V?WFc zu+b6MaS}$*)_RwKC@wS<+}US^OZlPvh8ei5NjN+22h*aS5=8{Rq3k^UN0ET!lI7&O zAs4!Krs^wdK20P7oQ>1U9(me?YW%yODpizjs9%qjHB!GW9P2C-{(TL04m=iQbsD-m zedpg16(#@EY_JSYyS6$WkI--Z?HvRhPoouG1{b)$8oq^~duE})oyy$TqlmN{Juf(< zLhm8uHv^8e7nA?YH}VMbjoL+hfTH6ymDu{16m)DJh_5s>cf`B+BA#m#;^!z?w~$vY zuc_w{WDmV84oA;-I*=M=8m{hK36wU-uMoM18mmWmux6oW0!VmM(G z4wH)qKLw63r41Y?3B#qp$%HmU;G)IW0c{injpYfT9t0{FC~~hI;_S=H<>&mRXH6@A znEYM37Q0>voM`?$PtK>I_1U}H=vYQ^7D2@tknU~kOYyRg&XX}VKn9UshL!K~e#7y| zdsY@B8TP+&AvFV)^0b&fvUNQh-i|`KPcj1vP~kLB{kl++VxUjNh!KW!zcdbTZA+F6 z#4H*v3sdJLMFa+o>B1M5#1h8@)oLNAH~LTg;&7|ibb||ReSW-+WJYeU@NsxswZT=G z#bvfh4>7L1@=MVsg5GNt5@g;P;MxNb|U{O zgUr7?avT^UuOlav94VUdk z(zN6{BkrF+UG}%6NaReE_ehyZUv-TChrXODK`HdzTzY4s{;G|V=3vXXEx5cnf_bU( zyZO(w>b+9h1q~aNOexVUx@?R`-aQ|(tR zW55|^K`qJ&Wjwfzt&MJELEu&Y-8VNq?eMIM#4+%DPb`k+c8UM1oc%FY z`-e)~UmuW&6z|bLzJDS(m1ox0dmgJhFMmJHuiu#l@4G!ezkePe0(>zSZC*Jc%G;4D z&zjJ5+4XwrGMoulz9nYG_ZYPoOzg2?<;`5Jc!y{NU1%2?0;dOGutbGQC@=$5Gmg8a zW7CG-T3B)e*<%REeke4>jkGXH)^~}cIR#>?|56JV$XqBsnH*qd|Fue^_^&z288|uDZj72P%K_+;~ot*^?`O!~N|{44)z4T!`0rZO4%} z!w@fV3OQQ5lfICgcRlhuVYsaRrcW#yV2{+?1{Mod=>pKCWyRWF6+ zlU>I(_K%jO?k7F9*kVg<1aj3|kh+RhqTu@v%`B8w!}_kmGCZiF(j@Ab-heOy9&L+R zlT?}u-a$D3(|nS{PVcDzDrJg$0y2e`WU_kTZTa+@xftUKPG8445JbCV=Yra9n%16j zb~Z*(6C2>7`xgU}rac{mS=FT*QSDVFpb|pbI@L)Tjxz~oID?H4ctDcq{6cm^={?^J z9+rlM)e(^R2W=mt{!Nok-G|N9x3_`xQ;~l;5pEY9J|-&BX))H%Z%qVjNc)gCM~!er z4Bpr>viAa}nVT?rA95=6(O^IPOaYku>cA)sgIm5mxtv3+B*JuChsGNk6)l!L=qlW6 za8~zMLia9%!~!`7S`+nvM~`3bsJMT+d~*E&KPd1W7X{Xz`06r&9(Z?TK zRObHFsUXYwo~LgsMrIT@T&svJ6tO?#r|yFhO>&tnW>PMkY8B!U@eoG}pPL@1hotL& zup>^?8o5@X+d6}mKHwSkNma3Y%6EUGZS{j+``+2Fy?CDvf*Upn@N72cnhkV89LG?^Or;|b7janHxA{nHa_UV+M z&$V&7`Y3`fo=e?KQepL-$lX8}(9)P_VE|!MR}HB`YcGRalrsLxjZ>;e2JjnvH=Mlu zo{c0V)EfSS|Ee)xVgCaPq7{>Y6Xn5EJi+{pn}Z7rL_rXPXn_#?HU!ifD6Gp!$!A5h z{;FEh>mdI1_vE$$(0EZZ9r$4ma`6QP#-j5thjAqiymtED;|I*u>#7735T9q6G%dW+ zNll@YpBOcVtAQOf@W@c`E}+XJ1kJDQvAdH%P94hzgtRhPke$ z`Hz-tC?YYJ@U$hh_fv&=eQUnR1kjF%i#jNgAoKWv?R7i@t+b)d~ z|Cp+b5@moM=*;y_%C~cR*r)EI^2Sve!W;eg8qFfm-!&Hci-4i(^+!REA}ZxK?(v@B zj1avHso|kef6F8DYZKo8$JJYSMcF{#{u9iQ(jXnuB|}OxiZs%lgLDW;H#1-WlG5GM z4N5b_OLwCJBQ=zOAkuKTzgXXO@1HQwTJt>noU`|5o3%KkC!*QC_|`xpbX)Ac=T5q> z*F2-)-wq~5(egJ@4YWfhDW5hiF_S6MipZ1(wJ%^MuiYo!1Ni5++)|uno=TC~71^^YF1D^yHa749o|KR(^_H~jL6AYp?Y3YI^cfHn4HSX^tJ3wu~jg#5|| z-Sp7A$bq4C%zeO*0p6tpKGi<11cP4r8%?TF60x?Z@Sg)%^khVN13eC7NIVWzf-Irs zG53(+R>=uL9eiQ<6gj%+4VG(eld}^Q9{m;v(|m2;8s)>uGU1^G#ZhtYtns~x8hj(Q zr`Uz^NVmkU3kjBoeu~2F`dy1$Dj%#zilQOT@C+rb1ELG>^vu<4sVpBv}$%5-&ZS_6bWJNlq*)a zy!!V5YJW}%<*(4z>g*(WfS^KtYRula16IluNMU(Q z?vOUpy$d!O5%C7DZ0OTRze7Ps@oib+m&pJZ`;w!p+p)S3T@_mfWsX4ERJgT*7b) zHnG?Bkzjil;sS`HEpiwL9{;+D{4Mbrg)Ew!RI2sn;}p@jHbcG{w~hfc%1S3eOw{3I zW7G$qfZ`5BY;Dq;ip$AgZ>>zXf@ch6_U9+=K5yPLy^$%+S)5UA7wHN{wwHXof4;lM zAlIdrYi%U?8&|}5y<@^jxo1~qa<1pMJ&C2A7MS@My!YHtmPdxjMo4g z8nEq5Iiw~Ge|+jKTd57rJnQ%Yrw0WKoHr0S3RC#3$-QGZrV`1(?NEsGL4*#$eZeNZ z{HYO=(MR>V2r>DBO8V9~Ab%*Km#znu^38w8?->3Qn#7zf$nAI3H=QQ&_~mrGu4p=s zNB;l9T3hELZptm^f-l98X*`wl>Hx_rI5TfZFvMI__#2EW`_(BG z76QYSz&0``6sUKf^EQKsm_58s$SaZ68R&MjYKlWK8l6_HaYgd$zt{T)7LqsS$e$`s|{#P`pS-sigG4+M%IH5fkhSi;9 zBjU95#%5vyBa^@<{R1?+vX&`4g{XN=50UG=J8Jw7o~PZjTndpQhja|_&Q8Cuu>JjD z;0qJzD`zX_(?^mNzaNBCr??S@LZ7=IiQV}ouiv#M}--*o2&I)b-b>4@9WZV>>N)-6o<|F96*O9d9_n$}K=IRF=rOq&&bYvpwYx zN_=+Y!2|6`7ZoL^X`obB37K2kEqIMeKE8rt0PPupU10l!XW#iD*q{tndoN7<1k<(} zB0)0qIoz;Y`K2R|>BsjC2Hr{pnjgJCc#}JRLfI#Q_A0EoYzX(Zl1o|~7>Q)A8^M21 zggVh7JvK6+*EdI_;tzdZrRw;bEg1ewp*ocbJ2^n559AY|4{Blb;=fVnRcnqRxgOnR z`ta_@Bm|b=`|Yl`J&b6aF!g03<1w=_T%I3}5!Anr+(586rIbhryR1u2`&&gfAHyay z2xI;8=c~m8hfaK_wmtF|2U=_HuJQ?2e{IFvk;%p=5_@G4R0ul5>@@il=r1iMw>6G? zK6(SfPNL;=#JxzgM~$Imq}B7!#otGaN5vgwKK>#<{*n?o zK7O=B1ZR8-;vkOn5skvSZyF~y)p7ocB+qkP4<+HBR!%0>uI5ioo{?IGgyUQ!>aP#% zn`Gj#@Nkh2O0nUTUo$B-v@Gbh7(@l^mjU8O0&~H`hH)v?&kvt=vwA((Jef=(L_PQp z)Br(N``)3@;XjV}57ngiBJ_|NP`jJ^Pc`Y^kqGffLl5yxs+^8^)zXhkS28vQhu-$y zieWzr6LGT=z=nSWyP%dtq5WF$JL5}sf2NjJnHOKcf;gybkp4~~uA{Ka*mHDP3&r>g z*f-l;p*37hPj!1n*b=1#CHKtBINRhXcPxs1A|Tg?$WxbCX8N*M3qr^~8Q{hn2$d%0 z6MxN?=}wmao*dLWs~r(5&hkfa?*LN)MjPEkwX){(AMb9QA1v(#hI@9njN z+9KhfR_$}99fm2((`~xbm7f-Rq<#y9)FfEJ=>4DiYyX2@zTK)lfqCfJC658AalQ>5 z0n?0(%Qw`>(H&Y+g;T@$M35Mb+*Qv&TH=UXC0rNz|eG;W#XatI99UtACaM(@2KMjcP_bIavXzKs@b^W zkFUjcFS{+VYZ|GbZ@3mGYzc#(1Vda{rm10Z96iVT8d9v z7J#-nmQH!O;OnUY10bF-tm8%_Z`9O3{Vmie^ z;-sE1aU_7$|H`yR%ApBUZbhe5h|@rks1{I?j-Y zE^sLD1pS2pPHl{yrNm>D@5Or$u|>;l3jE@Pnb~TJkD}b)7SKX$$5|NibE!E_1Pup^ z#{Xic%BxaxJWx-pHo~0>;$&c-H_EwU00c!iN)=Ox1ah2-k_^~Y89w)GV@MCA^9UFG zTy8gr>q5x-?{i|B;ng{io#AV=>oA!bARSJ<)bILmfqbj+B{4z87?;RiMiRjvB!cH? z%}rd_n$ZtK(3tJ<%HolX$(bt)uyiPU`F+gh>gHT>KdFGYEK=6yEI%JyFZuhBtpD~+ z=o#~A=&V7L!;d{|AjK=?;~%T)vE4j9Yn$y2Kk$EN?{^IOXnA(P$(?k2k{jHFhw=^56)WxC8}EImwA$hG_|gAE!i0j* z_v&xvn653BPry>VMWbwdgAWP@bTvhom)``bS@sRuN%PNjHja?(GSvyz)!ufJm96A{dKblFbY{U+1!DT+o;FJ*aRd%lS_-!@hCg-sRb@+frt|fUexxSILf0!DKS`lIjO2NCKN426|=}y3Ihi{p4J=QL-+>ixUe3 z{wC4{7)cU}o|)P;fMdk9VANx}=eno7>8B#fS&Zn8!>6L>K$~#`)2rwmZi{4;+wG#x zf4-lG6bd5`O#id`FOExLW^Y-aXEFvtR1|KHgZ^x+TsRpCsEPsM*Sv5u39_KgAyMZ6 ziP*8YBV+!gjiOitQ{$7E5`N#1Y~f+Rw3CByl15`fPdg70`HzS2RZ#8ecX9!$}2qH6Yy>pRu|^lJF*d&Yz$n*{eqhG1lblzQL00 znvZ!!jj@Y3_#>Ln01U42L32N0sep-0w(pNsCbWLNeC=-J;a-uo$wXjZ{lhL5R79&u zKh?)z2o8}FR42H+RAU+8(Rrd?8yafp&}x$-@Ae}r&fnVCPQ#nH`0%a*b6tle<-tAtBoii4Ty|uF z5gD5~h!F&JAZ|J>yuJL`0&OF5@{W2yhh05^2G`AC^MRE=Lrgqxa%2Y?h%p#Y5{+`@ zJ(bOkpC|Cs-T04PPM|fC>4?_&+T)6v9n!}ZV$OIYvYpq|d?=&hq%1g7S+<}R_*)7V8U|uI347WOR=<>PMA0ej zYP>x&Z!$%dc$l|sLq*8a*JXxI(MQ7Z5?tYuqn-UtK%4B43)Tb&HAmX2=p8t|P8Z0) zgmLk84k1H3^B172YBh5r_@!`=1^Ir|(z|0Rj_*`@@Zz10zm#QWWS}n%&G&v8cs&CD z=^kqxAMxHPAH!ht-CAAXhG-+>DzsUXivwE1zb*BzX}-J+*QGCW+&>rHdn*0vta)Pc z24Hyw9ZNN5O!}PbnQk1DkTp+Rqlv{4Z{WnIs#_zTDTYJ(tc>;yylrlGD=$!s)|OJM zA4)_psOyx@9Li#xphBnC)c+e$eV8 zrQr;gG=qgxS&B{cbXXjjlK4>htPDn^%E7&<(0!4CSL1Sc>5oFSeZ`ybbs z6I^&c{uEX82o%D^{o}1k1F@h^@~h7*zc~^9s$({KV(k$X+>~8^^jQsFg36_ehM@0I zO+|_Bi$5Im9-S`+-ZBj+xxC+3rOcTtJ@Nvuq5e$VZtG%n-Tg%H#~x)2Z);3;>PbQZqdag(pVc7Mg%7e;u~9UTigT8t<4m{+OfA(9&9VYRm%)8qk=+ z>*h#?uO`x);D|N~1Yp#e3LeAM%uRa-t02%u!bfmR$fJ<)-` zGkIy&4nO*7ovFaVJ}pXlhcp44xkMMAU~C9os80t?y%20hxV_E8sKKu7k6=^?ki0b> zZ0Nvl4{2$_Z-*eunqb=Z9oHN-JFr8&;&5_!`h;2?}8{uAcht9Z-e=DElrJk z_9z_DvYdoM2VNQD_gr?iA}A8R5iUZpfJYj=U|-?KLVz8e!2XxS4lEBhDcel^sJ|vG z?&2JTMAqt=NPLFpB2xp7rbsCc_U4%Z7KE}FyNPUd5Q4K#9u)l1X1SuhuS&?yYxd44 z`D0MhD4*pUtLy%2*{)fVraQl80kzU`#)}SA-<7W@*Eesd)`dcew|_eWVl|CbKC>sq zUOtl(QS;?vpU7_+t_P&VNtdL;;J)J((rp#-XbSyYG{VW|soapOoV{3GxYjVRxe12U zo|pm8IjxXElME2@v;yC&PbZ3^0@1Ks`xgbODhDVggg{Q45cs&V?L+C$Z?B{st zCE=hC*#@sC*5!SwIu24rT6`AcV{2HR_WrLGlNA%T|)@>MFOtJf{M(7zP{Y5_l&GyTlTr z2ATu!F)`zxwLltf1}FwXjdaR74g=aDA#F~c|32jniIWr&MW<>fuudS>e%z!+plNfh zHe?95{jo+2kg5&F1<=L?u>vrUP5{rJ0H=Lq$V!FGcqn)QTy4t@eiCL!Tc>sG{uF$w zy@l@tJ>=F(l1b<3VQHmu+)~{J^O=+ycGy&fa|1G;1M>|`(_@L|T+U97z8}$0s|7Wo zGp3EM%K887_{bG&gvO48#ChNgTIr+%ow-nn&(uY4zqD7%KW>7Vy8QYU1G4#b#y{&v zJXmCH^c~svGiTf#eW26WE<%wlc`1(Nhbag;q|&_Pw7)2(;B@kA*~f{?AjC)- zNhRt}zBaw6Q~Xtg;l=w-DF5#W;#Stdl7wv5aDV{%=0QT0ko2k1CnI#vDvqBK7_hTZ zh<^dxexWW_E87LVH3gQSV^i7HU(%NAgjIjhs8ZnL4rHfqu z$(B?>N#!3$y>5pB_Z z2ydO0oiqpAlN=Ez0h9jZig_V7a*`y791(t*k!&QvgqwrcT;-SR?sX@{z}umjmh5OE zGWEYhu5f?~xz9S;RxzGDtq)DqQGDqw8E?qrVMcx+F@7kk1N`{oJ?e)QjBaKVC8Z^@8(A(Ynq;_Ncm%F--3h{D z!b+ts^>$9@;D(~6I{>0vbo0g#95 z=S4Aeb{BOb=An9d-V=c)>=CpR%;#UjhVKDQW z*Hx-j-|8I{IjDNJOkOnA9;NDl^uBe;)lS$81co0L0LDH8WpIVRoHTS0Hu(J_xHrKI zoj$j(qimVT6Kn^{dXhKdKRWF@ubjoQEyjJ@xuHskK}6>gHnfo#xw0#~+$=Y|8&y(L zmBM2QIVrna)*ojU7e0FZn8j!@i(8ogNp$|cwYR2K?cz!ic2j@`rzt~d+Yuvr?qO$h68~`1*h)S zq+1{D!yTtnGggU0&qh~#nei=tNMOc)uMvE4MURY!xYUMzBY<`9FXgg87AN=?EbcQs zBy6*(tnWsAnT>nRyn&S_aAxfpSR>VmxFSL}Z-2N}Dd$;lNdBr6-ur37 z(e!u{QJ7BDr(dW4q`LA|RFJ25j4bA_U!O=lm|3bYgamN%YFYM>Q@XqKq-Bg2&WPJU7{;pNIlb;)yV>EX>ERhXbd}spX$5X1_ncy#TNwc_>lk_JL9-$qh z#ZF*qx5-w&m&`J#gCB26Z!%so5i{}&e{2BZNf48a{hQMTnhZU}aHYtloHg=+#sh@j z!2M+7WDbQ#tclX>`SaR1=9$e;=9C^K%msYK^;UG?HI4om^6Z1c%+sGao( zTo-^@_0k(XL^`hnm@6N4Kq92TfJEg0T;o3O0f5~ltvb?T>~{?ADYym^wZ`L@9%0hT zu!>i+o?a?Fu2qutA&AQ>M=~n&oAl3;v$d_ShjFX4`}FEz`5TpMx4%2jGD1P>4gAF=21%yD^)x9~e}F){4cX|H=kCOXFr5W=OuWt_&}OPc)j;<2M$o??ea6z|Az1#LIql!k6vP!+^;i z)kla4)>Fco$_k(I=f8}DR%;ZJITj^~v#2M9u1b3YIRs>)c>SGAk}MI?=KXo-pE|Vs z3aIwcwKRhC&WN=kJ2c{wDi6RRCh_6bTckl%F^)tPG3|xueh2{}wPG6&Q0%KmvZ|e- zbgBfVR5xZL##Nb+MMpfuHXzUN-^JG{eSJGu+i^Y~%y6-8O5fx;1%ykPu%gh&-u1bC zYnR(2#r&~{6YY`2>{vNsuc2sM5S@{-HZMy!b|+Svu8Glb!1ZFrR4QJN-~INKz~TBk z4|P}2Uc0vT;Pvpg>qf9nv2|NBvBYTis>Rw5UsnwA8bjiC&fii1T*VTogKho=)}idV z9x4CV{R-r$N#(J>9PW?}p`%*0cwHI;r?Qi*e8=>h0yZK!o{ew5p7Z)2PNVu^sDq3| z_i)#`44%EMeYy$0hL~9c7sjdST`AmR$_NA{vMGP%EqZpvWVes_ z%nt3J;HH1}qncCgjpLS8&I;2J@`dRz-T1{`Xw2%g5t7L@`BU=zZhoSTBfvgLZw!l( z%g);~CtMvrdlsnILz~-)uEMGD%6;|>@xH^A9=pxNz0ohbUY49VL zvQ((FsAnt)S+e?XbueRbHiJ^-{ToYKzr#xABz&ok1uN$dB6>Dt2!z{(^*mW-Mt&z zWNOTv^}?l9%ouPIaA`jb)*4EZA=JOnop1I@MWo~G*+85*s8lJ9Il{#8FE|Ih9`r?6 z0UIE7nI5{MUwu8lPwBe`;5K7foZiWWMROMQe=s>=9s@j#wA>rd-FRwKejsuA zlvT+5EgC$#YtA8%yR0aIs}R||m*|B0(yATvR4vJom$j8UEvHp~LdsU?u{ZPP1m^3n zL@CfW13!izcrxC;;_+ZfFODCa|G-6%)pWq;`bNPFp{LYkvHxm6`+QZY5zPhZcA1{s z>ud`@3jaNN1o@3Qvb?Aa6CPUQeLR|j=9kRLU@6S_UO1wvU>KB7&m2>~(fawxRln@M zsbUc2umY71a&Ds2x-zbRN#e#y94VVLL64HP7@U5=imFzR(oLKlKO_QJ`i9x9;+#)q zT2FLg%*{o(=$yTO&ZlFS3H(J)!$rul^Z&iZI(fK_-Of9K;`}nls^O`qIe-{{Ng=?m zg$a9h!(4ry$fma-<@7#LU-rA8&YWVxcX`>6r_qJB4S}m-3uFov*&H&`OuYf~mHh>g zXlf;2iMG4y)W!@*_Ifw>I4Q$Q8ll{KOmXj@o_%ydN+}1!yG29HXv$Ush1JR)6j&8-6ETZq${VyuHO ze3Dw0K=W9Thdyi0bcn2WzAUGIo3EUN)MT$at*lYX8*gplKn`E>Pdi|;Un7ftf|b2i zl-!@P&rj6+Nwhx81}cZhcH2cU#LI9@De72~v3fiTU>PKceHvLtG;Yh%VzzxEqkm_R z!Q!KxYZ%C#PH@+B;%x$wK@$h7mJK~a+cRiV`}O6z z#WQu)^^*gg=XJZ|k-~MUi^*`(oQ=UfAF3)n_|8RBI(dSfEK|Be$G29hvEniBS;$;E zwG4tNXjbV!zbTib4B%q?oOx2xFtnBlip^8;`Et}Lrh9sMSFm>k@OeR0lHgk|dW+UKMkhH9_} zJ#pLGmdoE(f`>R67Vu6tUBwF`w8j+Y!uel|q>_^R^_C^)I05zoVl5Hx$sMD|N=S?c zg&E_k11H9JFDgp$M0dLFg4_gly6DIYorm{Mtu`;nx$6a^aVvH%S=s4o7u#$F1w?mv ziinz~RG4Vs^mYib*|SUM4g%R|8U#z$%%cv~3`qdL9gDUtZ5FcieGx6O>*!V$3C3A( z&}(06>o?|&vn8rF{F`GJmIKQbH%Xhrn6dBt?cY=L+36L%)lN|pDJ-*JeAVs_^W^^s zng6Y7aFF*|Z!WfRZ@Zk-rE(yej9L$esi*;m`6gPK2@ZeD3l@32O<7vB9-8NlHXC1Bo_d(NxH(4;$RUKs>m1v zScX39v@r+k*N(g<(m1LhAs`Y5rc>P?_dA!vj+M{(A*pxC`0$}hwc3^;+4jH&e*uYA zp#Kc(f#*yhLB=~~sG8n#;U2CXztkhvM$7Yig573OCF)Os!XmfuoPN%Xm1 z*$d=X&$yT<)~;gd^2dW;`$FZ0G{oD(PrdJa9NZCtUc7@SSIY|@4-pl09=30wPqrN$ z_;}TLQ$+xeSmz~k!UH>9=PzZ5$Ho@}!F}i6;%b0|SW-|~_+3uy-FqA0U>$(LR0;6zjE@l#x`Es=WzT5S4z~GUKf` z>ASR2RC7BriTzS+@VvN>RlL!Puine2{kWj9{SX#2243T-IyuL^Z#&GoAz^hCWTHBN zoP>Ly0BHKi1MyPGbWm(K#8-ImWNrk}1G{v)0=b`Ak;ewHELTHu`O0cYm$Vq9w*BE2 zDF=m~mG#?~aiMrstM-503zPtKsubXl z@S#O3)x;k((fLPv=+uat>%)-L!=~?l?$jg25MUyZ@o$f6(fO@o4!K-|xQL8Om05j_ zbm!ztg4M_bGInGFOa147?_p$9XKh5-SESvZ#WCR4qMO2CBG0O@4s!rMRw;G24N_ke zQE$>o6>_dYMY`-j^%Iz24U)u2U`w|>U@h*aLK5u`Zo*>dm5H8hQ$+HmKoMS%R`2z+ zLu2^t$gLwsoZMQoTEBPLYphP0aqaY54YgLf*o2|-;xw%t$l)V5ENj9y-Y{wuX4vx+ zKW-@V0q;4;;sHU7UcBBjU5DcYD`DT$(F^En0$gi2@bs0d(s_|q;snP=wR*cL4hrE& zcFG^@NZmouA2OX{K_4zg(;=WhObM}no=CtW|DRS*aZx|5B(0brhfmj7-NAyR@|%8W z(=J^W8`0P{xA*5=t~q=&am;atMjV~F(LR9a>|h3geyOP2g`G7bL_qWkO88ZvWlZFIvV`9zpF)flAIU@BVJU-&35O>~ zpFUW9AEmTd&EXLXhzl8b#Us9MwJ&oN^pT+ zeeX>7?An{U%@yZg8f5~lS*~7l_~#ui)t?Xrjf?0UYc+r_q6B12;e_Lra!Rxqv0-=a zZSIjbBH-%|nB6|KgM!V{Khc&p{+xYl{*~0Wg-J1yds;$Mdio^}Qa3ts+xS1JRCqGG ze>%?efVIL4D-8zTWxVo)$n`xRMS?Rb>!yT*K0dU31oIGk!s$rb$U{f?ZDk1_KZ)h% zAV3;z6(raTk_G7YV-`~H38?)CJ=gV+8>{u!1V8nY7drxhGkOtd>yliThvPb>$(8cU zjKAlf4ATo`NpQ=#iQK`XzVeDO-gEql5uS(i<3VV=bNmzAx z`GT6m7WPl|@c6gJna9}?O_C9MNDkqgj}QLm_>Qs-_M2Q*mYnJ9%_Ul@*iSJ&-fD+^ zIyh>GqPGn^*yg=5I`YY8pz6oEo%_dBuulVm3vWR$I@{|pw6>HxRGp`gXj|0N5q~&+ zUOfR#A==$f#W;Z}W86!d*7CA(EPSRrngoX{{9bKqZHDmX1MUt`E=l@A*XYcniwHL% zpksg+#*afL|DKd(rHXuId0dys#?E=j|Y=9fL>=yw0DJ;3OUTaTsOK@q1 z^_@}CSFHjY3L$Pai`e25uyVtdJ}xqtVTUGIW%C9tMMLv-adNu*-~~+GTu@Zz%?)TabpX@S7b5$7y7CB_(S0<)3z7h(;W^Ppm6(935GoX1sfIS zM>ZS`n>tYHoJb>rMgK0t{c3LoeNZg)&M5INmrT6sI~OE$R*el7Sv>?WtK(8YMKP#Q zrz40R^bj-@yTEAv{F3&Fw34)wJEP4Xd*6|Q--G6MI0`q+J zT%dNVe-rX3YK%C>Zrs{j%HUXv1eGw@Qn$R z%}`RhY{yo1OUuSA+nwiC1xdueJF@Tp_mwHn*#^oW*>Gkd#jD#<)9|}Ihrwl}L;ejk z46C8W)be1Zfqi%-cIpNIom3r6Xkf-LmQNwH2A68YP|2>7ciAKwX{9^tW5t95*S%nG zoEzIR1K5C;2~8U{EEZY#AXySX2w}shRQ?BElYH_#E}p!Os|F~_2?W2nZldxuAFEx$ zLmu}Oyo5-6H=jgdnzoE2CQ*_Lt&tI^LS7tpopgNEdIIg*Ch=3GZt=nH#Sn6u<<*DkHtz~y<60d|J?RPtYGUb=3Lh1{bCT5#; zWl6|?L(pM#-0yg2IHw9wUTi^E;$T+_f-cfH-l9YmT59E7@)V)OHDLWA`DxZ`o)@)+vgScP~8LPYRr97D(bS+wE> zU>^+|<5CqD_d|w@J0zaidGjRJ|0b1IY7yssr;qYeh|G9|yxntM5@j87-Kfd(Oz?>RGw?h->Z zJ?Qm`_k8)zU%+aQjuEmRuj=CRKyvPmZT9*X?lUo~cx5$?1z*edUx`~AY8qhFge$X? zg)PX5sXl}1#O+n+L0XS8QJ4q!3IBD~L3M~nbyC5f> z{W+d z2eyKC)&;8!ADS?OxTXc;KS@qYm&m?^$%1^a4Hj^k3X+=6HBW2)5RcLLqR9+hu%eXF~ zXu8AL1iIi5AcyNVa?>M;KSq0a$4N*ePOJ<9noZ$ds69NR@eU4QA{N5n{@P1Y+fchN z{GfYGm;2@8=h{5KDK5~DdL(Zcis7hvWP)Dda|+~JZ;NMb#I)^}4i#v}MPApW{dCuS z8{!J&jXSZ9YHi;9eJ5*uwNx+fZQFyWdjTj6<=jSye5UBh$mm=Rpvr#i#r89(M{@GV z2m|hci=4Gpuj^Y9?&(r2lM%j~Nr;~n)@330sL)`wTuNEGzyD`?orxydH2Qjv;FOE@`^S72*_JnR^exTdQkiMCffu}-$N%!w%IY_9YB-*E05JITtr}Pj}kpR zzrFGiHMruZ0iJSvYEPtHc^$8i_(Xdq^Lw0I3F$ub^ipK3ai8Z=jMZq^uFS_eN$8- zsyHVi|HlvYJHF6ILS3l{(xz+VilcgQqhI;X*6PUOhGDBT`JN1!*Zi_KTgr#ZCph&D zrIIHH;a@4n23!1yuot-B46c4s@ZJ=yG>CZ%Cq&qB$>D@Ghjqq;&(!=^8=j~wS$Gq4 z36ek+8G}yhvU}1H9~z~BL*!iufvG;35%l8@6=v<77Xcu&E9DV}-R)q$B zNM|eqroz(B(4{Aod?;bUKPZq34>0fenIRx{E(r(~Ni>~00=bXQ^Mm)sQd`h~uLU2{ zX}aH?n~?n7JN1j8E#23kN#98~r2l1yR1}V9%C8E`b7(qr@Cjt@3&YJ2+C-8O*#Oda zSFeBK**k8#Ho_+dnPAC=bV$>I?~Wg|Jzz?cWInbils$O>f|Nqk^hxnHiS6euId2@= z;et6(EKw2DMXKbeE9gtC5D_S2P(u#4wZYH1PIhR$OY&ijBJ!i+q>T(rWKU0rw6=e8 z2IpfdhlpDT?V+X*Udd`}5ym2v>OPf&#f4Z|t@mNz+yWv8QdqPFV5#?D9DyMGw;opa zkW%+e*}A*Onz(%1Rpq3bQD`fOETF(m4n?wwG3XRWAz7j$33>tHPe9>MbmK;VirR4P zOdJ|^N~Z$Onc02z47v7dpL?sSAlb?>oXNAWbLj~$3v<;ak)Ybn1-&EpN@T_a=*wBt z&_ky^J#m2jDTn%E@*!QKiS$Li{;642jz@GCT4?A$W?$G?t6+__(gxC0_-boqH_$;jygbteBr z-&Js`Cl@_3kztq#F<~oEgj^0LB=KM5w|(3Cih9)KZ|9E@1y4TdTWk5#@O!DX*6#UB zn|~tPaq*^`cLSFi{HKT0&tz9Zk4b;ol|5=M5TE<-U7Oxn;Y}pqSn&HMhw>|Wq4$RO zdh@3pX_`(V*v!PLt}Wfeb(||<0Z~{)23n>0ig|!vmL;g-z~X`2miTkRIpOHC+5D04 zs7s;^oVeytuoT#RuJwx*!PC7B4rd>Ek}w^vqLk89^FlwdIqd0|oG3o^B--3Ry&6AH zU?W|ckAr7$09x0T_*aJrvUC zYk)Ub=2KR*;P?=v=5_soGpDEhJ`|C;+W$|K7g$gRVST(~!v-Q+4F4f)X$>BVnwLC) zHYmK!3?r71r;fkw$rkiGmP>a(&F;Y6G=B9M1Jj`zdycBk)tLhth|ee|NbWj67vy%S zTDUf=LpG!VRu#4!lz>7-@8PPB-s}c-Uas=T6gY8?{TwL8HR|Y`m-ZDd0;_BsI{BOQ z1&fQd@9V1ri;1dZ!ASJCgemox@5cWeZ8|B}U7ZM`+Stwcq11}@VVtJl~;((8`xt3bjXwc)@& z;NH)}#_P%|q}*jxuN4Uo;(T^gdbP;GuQr?wPX&Qf?Ap$*UppRhPH(X>RnAAj0vhdV z-rPSjO5Xv?>rld|Gk>x%*TzH$Vq*NzMH6!F<-_p}Dm=LG)B`g1-*TRm6_h&tndC!Y zrzDYbg)Z?$?~Hs$u8N6SQ}hCWhR<}%9PTkZ@ZuRF;^%-Vq9E*3HtwB3%CoIEq~D|z zwt<3bAJS05`=WZ^228IhfC2S#N3N%u>dv_uyzjhxZ$EW+mukwwK;SXqNnzYEg$b*1 z!5)T$ke{N+-Lc@68?eMw48kfOEwg6>uV3;JFIr?AcP9tq^qtAD13K808;EQx&b2NX zhR#yfMqF6(&SWIXF0|vYeKa1wjPw6%L^o-@9Kw^gI=CWz@uQ2wR1zOE^lf4JGl0qB zHn{@A^1fvwA&UjCKjOpssWD|hLi0=dNdA3U>7)51@CT7J&T#(qGqjf{vr)uNSKyZ_ zP^dw`>OIwQf?pZ~kRNN*K_Fp@5QKd;cg-2snIbyXeKIoGNX(-8L;=V38h@lD2}IX- z*;uFvd5vmoFlBz`^jzE-RCfhq0ayEE@zSLHyfKT(P=-7AGL_?C6zVq>(t5by?WX6PNbtg@wH-m zH&N7J|MoTa3*Ice!GxC=I6}fXL@bB>=kLLc8+GT)Tn*;WzMf0rha*&GDosI_{(ECP zM<0nr-@hwGx#QD^uA6TR3@B&A7~~G|a8$*j^xE6#M;s~l&OQ=SWi6NftdYcnB>k}n zNv0VpFjLgj`cXjs2gYGgpGp3^I3|t@E#38AV*<2_>?C#^N47SG19xnWI~@vnnzfuu zhhX>!AqLxL(?Y#RbWOk~r*{;#MhOCne`*1A%L-bvzx~lfaRp@QcEqK$G{d%g$luE; zfe2~e0_d3k7d}yj11+p)IxYCXdZLh)MpLAZDzX|-L^J4t!Snj0geNLeUOFEPvF_=) zPRZR1C~ElE`t`7xZ}q(U)xNgVNz#w1BF)>^r!`*`HTUF~v!6AL=W)t^j)?p4{tF7? zU^#NTEi#rjJD_he)RkdKefq4;iPa`ljj>JyR~yoH8OelpU}J=fTnmwpIV$NAHe`zZ z1t=Qo0>vAnEyGo&66##=3ZD?PY2voW3(LYE?R0FJab+V`M;%kDhifQ+IzB}{Pyz-u zUf!4Z$lLIVYDjzL2cLX2YgO@S@c-iKEW@Gt5Gd=ee7@RU(u*UUFW8PFEe+ zQb1pI@V>^PtXLka#FnzVa~S^o#}NW5U^KVqO!^bEPv^!|`S5k0q0J(Da_~#^P7Y_oz|gt1XXYPNG5k_B0(uNLbYnHPZB(nF(;k34+~Rr+z@=ECt1=QgJCm5QTLI98-h9wdksa z-%@zn;yWPxSm3&?$?h}qI2_UvIbch^M$klvLJ4VAO)?XbsT(a|L4$~p#E>r5-bD#O zk~$y`vQ;1w2q*+R__x5e^(pH3ug*TbzRv-joBn(cCm(VOz}!}A@AFtQ9q_8d9UeKw ztp;zrF$n7uc1Nj=u>9NA;Wf;SsGPw4rp=u-(WTShhM%_BOFsMAOCo|>Hqa^l&sU!O zz>L2%U+bSoc9}pph+3!E(64&1fN7~K!&;<+*!~C&I|FMv!hmuPJe={oI@uNLN!1D~ z2QtV?@`ziiDJO{3bd7Y>`a<+Tp_5rz>$Wickms=HSK%N3ONuOc>HpIHHa&LwdL_C zE+E6H2rv4B9oK*|m9sdW`fF&71FIr$5`s#Xop52K6xw}gPLG85+L#LAE}cK2CYjgF zO~fXa$ufQF37*FSb|maQ@ z>QcY=h9R`=b+f5ED)e+!3fs40hOCk?Pr=7};a}+GZNIzJo?$(&JR&DOSRSO#M{Y;B z^ay)Kva%`(p&YrS#MoxLgr0!~az+DIby32$DH+KqqtW04sb@KCpr1D5)vaDK92_V@ zfcn8E+bl5r%D#VZ?Xm5ysSST}laBukIcF>70&M4Pn)#XuAH;&LL;{)cUri(Ij|)^s z&^4I`8S6CIp7ARHf>|w}{??+FfC%5E1PONq%(;6j`DRisF`Cpo>`N5WxmW3y547?9 zV;uI$!C>pdOO&)Z{}jU3J)LLLjm}0WRv*rHQ%w!N6CyvUo$I~Zy~_@f>2PiDpKo4eWm>bkv}OETn;D@YkOJLU z^kdr_X2G%wqY@y#f15Bk8LZ~`A>qd4O%Xk@UI3bkheFhWBz_^#@D09|tbnH7CqITv z>AEi&pc9&%PuuJ$T@Sh`Ow9bwo5f_PXp{c4qs71U#KK?nI&UC_P`A;)fxYC zX)dXA-)*3RHc=wuL|mF{C%izOJr(ki#02+~1X4L3YvlRbd7GDA#Pevvg3{~IOp?s$ zyY-*6HeJ_CpRy>Jlp8`Mo6%NF-Y`pbO}+Sc2AbZL>6`NK_}7Y7`m)(q}ckQD!_wa9p>(fZI8$sd$dj5VYto?s8+Z=^=GoA*iPNkTn^ z;T&I-glJ1Eyyu0EezChh~nEn`Slu`qNf` z2v$vgAo(XzX@F7lSMuT1cy*Tr!>-J4Ndu$Gdv&KA9&~ID=fh~<4j86DjJaZYASH#= z?U#upE$lfE3o)Uk%r)cH7}RMRPrJ>bNl5D6I3U|8tKN3(S1dz#5K25(Ir$fTxf@b7 z6UHnsMeEQD%-DRpfO*>YP;46vxH?1LuQx_ui@DiwxSsoUzQYhMPv$#H6v-Y28e* zw07n4YnkGS1Q%Pp1`U8;JToUKV?m8TAcW2h`RtoD!oX(6vttDJNhwJS$gt42S`Im2pV&^3LEK9EG0BZAC>Wmz~>j2} z+`svWt+O=kS5-2~FLKi!n6gVj7$M(fE{CiMsR$f97z z!lHSy^(IMFQ}A;@z|hpv&&Yo^x$$Ykp!9i-=K@i5rBk6Ux$xszUhh%kQ8btXGa6HQ z-{-rm5vb2~@RrP)fXjOc3>$ARk?>H{%^XfyuzAA05y-P9MH5uySAxI+ztd9t8Ib!A=o+sT)%ntNiBpZWNV%{h$$KTigraT0z!iEu{X# z5IJ63RD2?HUe=Xcw#q%MGr~={%dsy14@FGd)M!o39KrM91*k`Vb`n_k`kX5U5^V04 z`uGAaP4V|xO{8ETibH=AZ`;1Yk~@`T>xo>l1AMnhw?=ne&x0luDwYf&wxRPb!3s_> z#)hPIAd|iIhq^jFcJ-i>MVb~1`S)zYlm9BnN)kCB;VETC4a7$iU{fY3y|^}^=8ttt6r^KqbpswrLG3R zKprKpu9Fx+-d{#6YfW}ZLwbr;apE|9oQfrt_{Y^7-QM?)$Y|o4seaRZDOl6T)Pp(B z9`qT8_s21m%1&Xf%<5;u2U>>Rye~Sq5ga93Ha~-o9rNK-KwizVwXBa4=%90FunI$U@p>YyYztmk8sjxZB#*g~rx@33v9NFD|F9bE?E;0?0fqJZk7L-6Vo z>p|`~n8XYA5nT!%nb}JmS6=Qjc$|Av+-_@5-d6mcrj4mTc5wBi8a-v;LJBONUYR;k zAwNc*5bCTi%i)_^@mZ7ez?ZuaL4DXp&5uX~5l_zU$MCj&3QJ@GruxpFie>uTL!7q@ zF&Woe2<@)ONyS}7x@Tv)hN-!rtp0nz*J~QRfU%Z8+Y+w)W!L2%#7#c4jV&0V@2!Hg z?AcCm?9-aDN-Wu|5&2vhxU5{Yw}$J?Q7DExMJe36!W*Z*sE)=-{sY9povJ&|c;A`Y zkJ4K0;Ni08wR{6mRI)13bbfYv;rCR^K$r@90y~}PZ}LteLRvebaDYmOmq00~TRiL) zYGHJF`_o$Vu!itK=kUm(x~%IDp#f9eXb}s0+VO#UPw?tr=_>R`AF_=Of>X;adT#80M_ENUr6xf_wE%SH@1iV zSraY4l3WQJVfr;z?14+b`pPnCypGf`8y|92b2T%rCEL`}`C+&10# zs-a;x^6wEj^B4;EN;2_)8s6WF@D8E*=c-Y; zYFspQt@L5HBTw!6>uszHbfIS+jcItJZhjk2C~lG4vU+-rjMj2L5ao!xcLcDa{iu~C zrHE!JM;nWQ_~Yq!SNia(togg-c3Dl(n$P#z(_-e}$=k5E%hhp8djt_Ht`QZpLgeCA zy;$xS5(ZRSg1DM3 zpdu@Xrgyg`l^w^kpTGz`a~toA#9DBJXLJYko%PMmtrqZBx9n7MoRRl5s%q!npAS2d zB(Fe6{8$o89;UE)`tL@tCo7ZXnRymz(X^Ig(}z*(iJKi4>qiww+H_JzD2sMWO2n7w zi?YJ}XI;e%itDTf&SD}2tYejyvO=?IC1tOG*~ATrJGpIk?Vng}&}RSAEw0uDDDam^ z((HTQ@8^EOy;@D=ZldF=A2hjtop<_Wl3)vRGI!gN=n}fb(pQH)%wfj_%`h79&kgTj zMsbh}qF*8U7C>#o42J43U$3V%H7#d!f5Q-r=q=e2pv<~rpNgRHi{2ywX)d9hKM@k&K;W+U!+XAC6EN~r)H`8BnvF~~`AzGD%9=QNCja+7z{s#p2+Z||^+G%w zyeaJkuRwA)6}pBUe>&136CSeT)lmVtK7Pos(TbzEaXA@dj3EB^bQ+%~hrXWqQ9l9i zVA29nY16=skt$(OqC*~Fv!s~31SbqR zm}se^g(EiTc=Mms<#?r|exyEBX%Yh3xp&#zDs^ z#;MUCNm-eqv-H!B*_(C`^;L>hU#51S)nuQQpk0XVpihuF=hC_Aod`u6?dwua18<+? z+_&7GtNN1Y*A#7V1yQdM-?vD+LSF!9dU%RV)g(ZULEo(A!ANOWiC{?U@ z9N;-wKEbfNFFH(I<%Hbp?0AVZPDlDhv*A>%`ROCuhTLaEs0P-Bky5M_uYn#-3t5uz zyoG*G2WzZfwO`9$YR0`2{eifSe9UcL55~PbAuwveJX`2O@;L7-54(8J-?e?iPd*C& zZwm9@*2lvLCLqy5a{n`tkVCR`*{8Oj#oyfOs7Ciq__hc#HJ?q%(;4`0cQLkX4>ng2F7`(oC5KEv9G^~zvjH7gEjxGG+jvG9c=e%i%-TWR_|P>U#VdZbg5^^H7rk~}c5Dw=EZ zkegq<`@rg~DD=S6e5 zN;N$!W&Y-VRRU0$?B)Pi#VtE|oWln^pmsPk?kIc~m+^U$df7;$e&fwgYx}+i^w@yQDQqY~Gc$GERX; zR~_3o0|=gWKybFr;DQ!#j5Vyi-)M0w``Lm-n{&w&Hk|zqD`D=yn&d~zavAmsKba3n z35$-kD6542l$iVoz&Dmxip1juwfbF!xsPvw@rB=3^Q>Q#XbkU5k=s%FEc$UrR9y4C zLY)r(Df)eh1b(JJ_;2$*KHa3qJ99gg4W0Oew_%X^xMb&gv{_jgT_R zbuv~dysR3#_m^IHGVA2;#)~6asjh2z!`vo8l1u;=`wxUCSUAy^-T`_!9@2?#Anwsv z6){_;=8%WO>bP#$gSPaGBeZu_ORO%Su|bP1>fCT%PZFE!*c(sW#u~-vt-=CiJFIftthf&`X#2m1uj`BX^68U&~SW*sqs{LCPD__VwGL zI}3TY#Q+4);_)0!KFnzXn~4X{C4(t zNBW6l6eb`|_d{exOOB@Fy*&*CfWEZz)@Vunck$#H?@NL*wh~~~QHOj{tv$}V$qDQ` z1fup-gpJU`vwk^9c4j5qetiudy<3tPr4+EeWS+tq7V5C{`JvUk8_44(1j@$IUuVF0 z_fztXjWxYtr;E6x1v^q(cH&rLScpx6yRbkLJ!TEQ#!CArnWN;XjqO;NCF_mJ6Ev>I?-^RnpE)*51nU4St4CrmD($Dprp)m3Cxk@*%5b zQ}=6_j=;Rn=P3TRxh-y}Pm)#&)!Okw&iN6V+YrN$7s}*8Yf}@jxPYxIk|?A5?aSM5 z`W;7~)YMeG|2+I6^l>aT&VMVF&-G`6NP?qKxge1`c<)?z@pC_PL)cVHN*%Lwzcu{! zGGtWYUA~sG!Vt$~uU2$u2ytgujz^{5ci;^VBhKgCvMH^n1G>9zrr+(!!3vhZ`vbO_=(Vf{GxZXW4n;Tq?rbIE>(%(==S{xNK6iM9A4vLK=nbhvbVB;fdGG z&7k;;P`a26x~d%raj>b&?h7n~mirptkP7gCocxen+Cw&6C^c5x4+r{2kx?|ZRMH4_ z3Uta*+&Wl19%b&R1~6B7mRq0+4Y9Co+8Zh{=^%swAZQ8Rb`%h6AxN)BE{_mz1MhhZ ze)rN!D{B=1gatnuqlzs0cEn9{jk0b6TKYlf8mu@Pq87PS!*9Hc(BHsWyilYUb1LB! z!u$N%ELv;gAA!%)>!~n?H`Svdy*08=M&qW>1hA^(=i1xIf8;wibHD~Wc7S8U%0#Y0 z->c!T==0e>N-)0GV&I{C>z|*aST3x@1yVStL(@86*^$=J)pG*QhF@s_z6z3HJbhO4 z`18naPVnoO%=Pb$uah1X&BZtCMt<5hCZ+H_H1aBpUQeYxO5f-h+bFrEA0|4S`S8RL z1$$@6B89fn>T|x%8jb2HcbAK2&MaAd9ni5$BNt5v4}?}&^3VXfZCD9^gafjMe*!-5 zSFCe)9t4`(kc_{`nZ;51k1K%I54GFQ?Sz#JB&tubbMIlM@5W4zQi`KQ`{(3EyXm#0 zPaK~>rk+dEs)>Pp_b!WonJG*4(9Z0=CN7$y8%A0k>rqsYruHS_{T;S+ORV#^ouRVq z*pL>LtXa$N#rSXRE2|>9h4Y!47+BRdfq9?uXR(020{T0TjllVs7o32Ml1ZEZ6b=u@ zL#L@4YCzacKp={~4*vAZwdi0Q(u_B?%5|$k!r#8orSQm2`|rJVx`Rlg^t>av{q}3~ zk=C6hKkHi>^C4}{;Qvim9AEr-6bHihk$o*AIYl$?+da+B<6p1&PN8la15$3U$+t9c zjMCFUn@OFrVfR!((wY4Zt>ms4;|2SQ8BdA$_#@+?^(fve`+xnrp!lTtIKA0)1etE`roX&0&Qobs;jB%@y2 z8vd4!E6M-71!U_T3JPPT?g!e=PT~kw-+;XUlXg`V8;U4~oVdUElt)vb>ZA!e9c>^Nrw9Rq;R6;4Qv@CXOt&-y9n3mmLTklmd)0I4Mcw zVAQu?=v<-;j5VukNDC|lgg3+R${T9P?80XcZg+(J3(D>b3P(v9g=C9|&l6-C$8RL0 zP`Adrnk&he0qWc@F+hn4P=I(Sj6I+$;JG0H;QT9u$|OPyT&`N=mH;Ir0+fL@EH`GW zvbk8g4Z0&fRDjqRVfqc^RqO0z4JbG%CO0SW>nofKI{&^iYz>G)DCl_{Skzs%9C`nP zeG_`Z$CGs=3!Gv0-}di7dkp(c>O$uF@e(fv^w&3p9+V%Ch$La}8n)(t1=R`~(^jPe zQMoDRQ9)1<_9q`v@7m%v3Q51mpnV_7Jrm`Gi?>y2%h40tabb_=s}Y3rVyYy2|Jm^v zKr9St{Dunn?4)O|%5Qhx+%AQ72G*U3>~KRj${0?pa}riY;`XS$^H#DM%rN` zhA2;A&x38zP6~rL?2${Rf#Z+du1-aYlo*TCPUN-sfn#G1oG8l=og_#ZcK96hcX~vv~ zdxlO33ZOwFvB1!Xg2Ei{qh`y4$*>7O9~62h-!u;(C{sGEjcD)Rk$LH27JR+&vY1h) zDx|G=@iiut3VhdjAMJ;k>9xRW$0`1pY_WHQH)@$CTF+3^VbsgGC>t7R`h_mu-1$c= zChZJl{TWNDWkGh?Q?@D`%Z?=*TDeeo6L1%VyA;e4tfhl5>!9v?=)Xzm(^b0bbZ>kz z_C|LQEgJ0%=hAfw+wRM-*h{kEnqmKXkoeFwrv+%=2v#u4tqJNE!(vb2uz39sql(0 zCd-}<=MJMIW8%S}0bhbIe#1n?uYZ5cp66A;Eb(PX#Q`-otQc)x{&x`UL&eMiO|R=I z^m#w&18}8&rBjDsD^&gdfwttxJdNKaG?UB1hO8!%%onA?HUSRkF)JHqP^UZbxt1A1 z5)Io?)+7YiVeM`{=?KMWPOx}Tcr{T5dyv_``1emiMHxzRaTmk=#zVR+*J6zMAL!$R zFVxA1X&Ghr8S{-*es)J_d~1|4=^GD@r$Lf8_Z{Zhg(U|XM%C5W&i31{aGaB0a>1{j z+d|8C-dM8G*QA7V0ADZkaV^mx{YF9c%&E_phMFjwdd&u#;W0uUBTrEWxgc%-L>Ty= z_6(5-E+QUAA}|XfV(m^*+t)t`9s_9sc3DA_U(#2-;#c+cGr(-$ zZrHESww4mZFfv~^A9C|b*=@TH`=;{E{dFh~^GPK=OdPTG#cuKeGSB$c=d5pH3Lb{G zn8RRLLD=#RUHUTl7>CZ&g|`;rme|o46Z(E3acxmvQEruJ9o0J~{Q8eicoyuI94#EL zF3Lm!>TebI?G+!u1!p$;NZ%yNz1R9oB{{C<9u?hI)sk=ZE5h~Kvey^=B%{CL&~bjk zvXU2%wf79msNkE1LrQRJ41o~XE4|6jZ)M|uzE4$t=h@A`NzvWqIN)d!B5&}SE2XRA1paHa z-;)}a9e?SEd8a6i;maPXQPn;S64+^x6=49^XLer+##sVK2w(sFx6oy?L@ma(s{jEI z1Kx@N1#o#t6F4I1tgF_wU3+Id#kE2ux~{n}fO?BF#2slBLB|3fLf;YyaO#af+%=9B zgjAhmXgI7-(Eh9&|Jtb<*4oE?f-dXDKLJU z6TCb~W;|xSd8Mi0x(lvy~q|J6i%XE6BwT3S1>`0Q|y?PPS1VdoM3Dp_M2D|brLC5iU~g~4KR zy$dUv_!VdV5M1qmMVk$r2}TDC-p_0BLfc~q5;3n)l(+BKXDI&Ny#Lp7W?X}XRD6NX zqVo0Uuq}oXqSPa3FnNtO+iyXFF!Oe)co?)+Hq0=hAz)ySFAxsC6@Q*_i;QlLFuJ)1 z+kcVK<1-)`;~(yc;X!6WYMJnK6(N9CQ03o>H5FB6FyhZR@@J2Xm^F@hP!x=)-D%)r zGfseLX$RiEpYXyE_b&Fb#uwUWV1Cg7yjv(wba=AF_Bg>53sfCPz;*^}0z2N>;GmQr z^Af;ezqHk~KS(S)F-^1&(hh9>*owem$HVt&sUhs|KAY*nMjK=)Kyg8i4==k{2L94s z_kF;IkAaY#V|t#nmk#US(x`JI7lZ*c4%T=l2~t1Lp+0(-UwjZb`sU{@VEXgyIA(;% z(vU0`>4P80)(O7?|69cebn8k@ZgLf6obtbacZ}>Q>pxQoQ|qY?d3^^u#RD)S&lBFh zs(>gS4D0mNt#t>uVkNLu|pE`c?sfdU}uk%U{d`H_u!8$tfma)XMf`=N+smJ27JH)O>Lr42dSfi!a z6=xEzRYT^#O>qNeXuHHP>)vHxCH0s)TWtR_DunM;$K{eq^^HGc&&+Alg(Ma->DT}S zp3h5afqJ!+CJS#p79F5R+8aF)5r1!~BsV^ca#)c)h+zMsdr9INa~6G#{bZ4|OaBbF zvzJjOII->%qW~2QOGHmyOKJ~>Z?vSlLIlB?rI`xTRFWmRzLSi+ zOh+tPn)&Bn(+wLnoIBoNk{-I{%PYLW%dyiO^C8oV^X5cy72FP3PJ=|$!~+%ePub&Y zlWFeyI#(+nVUOl^FUO(T+X6$ZkcLhKs?_Swgn@0hJuHYr?`8asgR)0jNbIqE|4w=`RlehoO@KfK!;A4hNzNDXD3HXSf zixL-vF*r?I1%_lFC?|l~Y6(806uj-lQ~kD`)1TJFzy(*|h_Sq19Xyzof~iMn1yPjV z_?Q59Stq${-qE-XIhiAi&0q@G)Uw;^wI#`4kO^RSYGDi*c^WKS-w*a{&|e+O9JxTP z1jIf=*?~~*K74{BC=Sz)PuU7RaB}1!8hEiC;05xF<&>_hs}9DErEObH;e4#%^&7j- z!QiuR4;thhA)6Zf`}2NSZiM%Nu`3;`0NtlDYh8Xv;&g@L^!U7Vpf!l#_LH8DF2xjT;|C~AB( zxP`YJ1$5|kvr{8^$`^Oj(}mx!tJ`G!%+c%2cyqq}_=-VxsdwQab|l-!+|Jy~VDbcg zrE~Op1t;(=_o&&oHkXk9Z>VEM@Nvxi%6370S=r&teT$~dK0_ZDO%!U=fYQ?glyH@K z3Wd*u-Ys?M>8SCm+Wu_035r>63QtSO3t^c@T-F;Ur;a3bYHWhoKwtWa?m$;cer3T} z{VZou66E3>9voi~%`6@roS^qM?9}1=?9+C`xlIyExd_;B!eQ8wd5s-&! zt9TkASfA8C?hd-2{>AQrx$5-EfnVOw4RNov*{ld^0V(W`eX=2b!?!8X=#Lo>)C)A? z2HwBy~-*zH2#J0xsQ6C3-nW%opV86re zCn{?(pD6`B<7vbQ&ggP>>?9q*9Yx>4yUbxD7Z7~QmqYbF&AOk z=z39j5DTo_BTLadUT%lm3A=uHU+f2dBRp1L4WdP33QMWIS97k8gXAW*#e(a*vq;?r zYR@e0_}JgueLK3wwp2D1?EMA^8#o-JQ*^dyFa#&HlzN)%T1k3d(U zd&9crnuJQLeJ@ZN)(lEuqYV#WlR>k`OIh(hnjKHK1kp#lYr%e*hcO%Cew9bgDxmqs zt6Ah5;4d4i2^ki^WKB^P(`2iftXJQr1z;}pxlZA6NNuOw#KFL&&!4;Bj-AwhEIP+h z{-UM@2aVU!VgJz8ptg_Ne30XvBD$xqKJV7MVDeOxx>O33G;_zGH1V*$;3`A z_Lt^w1U>&n8y>Tl83n7i42=E6T9#QB{MhDRY=dOx0>RbNWYab}(-H#*Y><6fzeadb zHfK0rfic8YTrKM*d(Ck*b@SRRSFo2`Td#Kb{OO#jF%=mb8FviWnHt;uI10I zpQaN{9qb>OPPC3?JKxiZ7u`sD!9p`Rt3xZSCFtOe({e?*5N@lTMqe87V5M5Cfj|uf z-Dnae^oJn#K%Z$jc^;$$6X+v8iRVClaEgE9#)_XSI2Ht{jyg$pO8x5Yp9<5 zO=!N#vuGf|)CU5d_|++_X~7Vlnka5VAn7KTBeL-tzx+S!u+P~}Qt%?F0ev`k^((fB znlqSatp-T_p<@c?+u5@Wqzru#X!@Dvtds07kn@`K4Fc~JD2=Edb(c`uKQk$w{l_d! z%@{F!8<#O7@#f=EFbJcKewqLBz<>HBMIely`&=@k!NqqIktWq6EYSE=HsT=mM#-Gf z-}xMEDZ{rjRx?Ur(!UbHD;tutK(ApG8ue2u{N3Ini!SuKsp6HNiSK9p+}G{u4CDPw z?y%UqWF~>$VP>#%!p`4h4sEU6%uD3fo#L%MFX*()^y@1OInPcGp+qHtDe*+&@#;~& zUjy%_pOThin1eGLGn7F`ouU6=X^;*6#76-;g8D#0FU|2WKX0qh!g+^0+b{q-3Ky(k z&sT-G73(552s^vi1k+`8{**6~9$^707|?CfN^4K9iG>1i=JIlA)66%J>;B`i{KoVo z;}ms{Q_o}05mvMW;jB$;!upQ+pqN?Qva8Zy*!K5;PoDk4?W)`isp^Ipb*b0RAQ`K8 z&;%M?`2Bv;vzL8CkdFr*!^D^(Ar-eRJrc98!|Qo|Ic339bymBCzF5!2!e@EdFUs?T z)Hhpqjl;`v*AnLZgj})|CjucY`8EjJr(i2lYysEw(BkJGsL?S_9dke9%u9E!R1=}V zZEu00<-glXYgT9AQGi{lN18m$bP#M-Q5(;YePkhRb{z6rv6z^mOHxZ)85{VRxh!kL zD+i5uL#0aZ>a~JDmuKvi@8Km&6cqddpP^*t%&3|e;z+5L?c4L3@Y(nXdJ95|Bo$yM z>XC};-1iWTKI?`z7TQrIsYQ<-9Qf$+qZP%la+w(%hqLp3WbzrXO2C>kdt#7(nPH&5 zuc2SiZ|d+|w|vS-dVFB@?{HGsZDnbPwVTPs;?3&dOS-nkdkdxWc7+2%$p2fmFh0qD zm`6IE2u&^^0-d}Za%k*}4DwWCCUq+kaz_FUQgNo-)z~d^CAF7x#)bva>+W1LZ8k%N za_bW>0a3f1d0+eka$l@i;ne5_Gy}z(Pr>wP3ssV4G8n_|{G!T;X0F%PjtFoT^Dr+g zu{qoiyT^u9<-{6QQ$T%yIqpFcCd%j_#HAmu->|nseA`&OI`vcr*_vnwK7-9SV2`Rr z`SCo<7>oeYak&hBAD=B>h(U8AqBiCim1fa_4XwxBWYVmu}PxD>x;G>(?XNs<(r_AQ)D_@>(z7S{~ zAED+Y-9h5BIy>w4A*AvGO#z?7ZQBH1i$F@474r&Ua2ZQQdLrR6f4Dl=52{?qnNC`H zc7t(>;W2Ab$v>-(<38-g1aVqrm;@(4?b6;IuR8@p}5*^qBGf`lw$;?-u61xIZ6D zrkWUK6y8*?RCmG$CXEFH%WS?^;{pmcNi54SVb3^KWX*P8S|}#85bY6l@6a$5>*0vE zUX+Gkj<8^#=h^0|{$p0gX?*q7-B27K=Zq1NIQ2Yj!boUX|40Y^b1tNl;}oLSN_*L}ddfL9(eyU}bY`nMC;*!&LM%Y~OzqB>e+*w@D^#j+w zw7s_#6|fL>rHR{Mcp6{}Iyo=)22c16d=wqxw%)nto)M$|xB z!ApwNa-r~aG?aZ7+BQGp*^W>a0yA;ymf}%H!imnfA?=KqdrfiSH(P@YC0!1ynZ=8I zQvfR3M)@On**TxWkPF8b(lobf(2KllGfgl+CbqTNJo$O#L`gWpvzcm`s-{*LbS%{T z&GM2<8Fc{4@i^IZc%h0p{Rlr1|BKL(9MCUJjQI;G^(gUY^KG1^W1kSJ)|Vd`ow;h~ zn0Hc5t>`Gsl)G-%7yAn}K;oa;Kij|157Eyt?C5$m*&|*De{dFc6>jor4g8AjUU{48 zhr1~gj5I}iU|hMR!lC8f8EA%8E)9mms_kAse}*aH;FhCXA%xhysD49s8cEnF1XW{E zRS+(%@LmNSW;Y};9C|R>SE1_JD28#q!btd3ShZUQnd_2ek-l5MHpie8dh}&SV7t8c zCD*Lt;hP2$tsxtmw8fZqVeiY0(4EIhH4NZWJ=@X+V`4&3Uv4JN)SkN?f)iMr+$9BW z1Yv^QZ8@&m$tPt37A$N{Z1I?i>+(pSlG=NTd5Ry3WLKeWU7^s0LC=AZOPE*QA@;Vd zPx%6ohD_^#O=sJ&rf@9iJ>?f^U`4WP<3%-J*5#7Iv_>I(j3r{A>WDp(^P!vPX53LG zi0c#SqbgL&z4wIJ+Fa)YiNze5HSeFNl>)%hOv%|R6*Na}c$0JFu-PmpYU9!RxUJw1 z$58O2pPjeF?Z1EKs(B;{gp%}yDlU_SDkR$4+7MC&Ob!k%Q3$6_AqP~2sOUu@7O}qy zBjMz&gsSH9+wJDyVWE0^Z_T#5qn3k}RhLR3r{<)1_It(pCsB6n3+#RYXe-h7M2DFZ5?&Fsr2d>W(tcbeomk4`=)zUSq)T+(fD!q6* zvST#j^WcP%FHsk7tL`%!?kg6XopgO(gq@HQi_|^Cr~}Nq4@XwM@$z>Kp8QV0t<>|Z zk9G#sg&30j^~xn8^S9}^S5kk-gTC^a4@b`S$kdGXlJsMC2k+Hba@BNvuIwhiDM8!Y z+wP*aZoxIW?QtN_q}VR{;4l-;^nr;u$}|X$k5rz-t*|G1Vx#u$0$M8Que7W4$iDTv z|6-6WLe4z&B_a4`UxUccI5QB*Jm34nQSJc+LA2AYf^qoJN;$g=wTG8tH6gbS82-b1 zuo4kKFc9FS@lxT+t3E-nCb9^k3DPntoL~|KR+)_;>zJwFKSl|X9wxhBYvH4%?!^7p zrPgU!ZTkUft%!9`LE2p#LEG`Ue^zGbS9YrAV-3>?jf6cxLf15Tv6_VDBqWj9#GniMfk;OFT2MP_v@L)6(fkO&V>X8%7r zo!s)Rp(ZFe)gG{wic*Dz_GfNMDbS3Ux$H^iX3UtP@%(0#MAXtMl6$h&b0VT=b~pee zTa?V%1l<@d8m={JtBo8VJHLUtZGuVvnF+Sg+el#yXy;PJg4U>d7A+yM^!jU|LAf0p zidhmT{eRjMg3^o*R`1@tbI5sYMs3bE(lvj*RyB@dZdo~t85o^@uXZ5e7n}A#cbyTq z(^cLiCz^D$NU&42xUpn=ZV|V)r?hkYZP$G#+!>F9#0Yo#uc9cR9IvL@zLF^7dp>~l z&kl%n5~W6hTk?lQ?VFM%7xrdF)#$`nMEA7{B~b-|C26kxfrUW5t#dYidQE{2d)R@E z70*F++v|1$tlkPf}pxgC9jgu-89}{CRfsR=WN9P9#^i&Bm7pgQwG= z{NgdrAPEU+(+AAo%`Sg|C-3dEOtCcLEo$iE8cL!*lj9K+f8xHq(CA|9jl8(tQjq10 zuBrGJ8gLNnZL-Q5!NfWFZo`B_J5uLQemH1cwUwwj;2`{+uyT%nIwJa9BwX+_?yjkR z9lH1mw|pTb95UuuW`RE>+aSn{0KzwI_KzT!PO7^@F8!ad(g4qsW~u1m#H?9o zRmPkAQk~m_AiZ>M-($K%v9{f83n@F;#BgXbCGfD27IK^U&UmVBcX8+P$obUd28wJi zINp7J6Z7B4(<+Wxtem@WB5*w^HPUiiCCbFKrMKz4;3Lrw;|@u^*_N3o-%_0_T^=*; zKLx(s!b^Z8hx(7<4e2(9)9`)3?12tFsEV6^lIM-bHCYxY+S?*&06JH6L5v|jki|R( z1Q(7_J2B(coiKIDnda%%Ze5W4=~Zj3k@OHEGjjIF3Q=g``qga3yWd0YtqD=^)vF## zB^LcQU1`|*QSGp%fr4GPDSnoZK_nt{V$p#nf&Tp$6jv=w8S(*xCOZ>oA-C}!p5&L( zFg${OYyJYb>ylzy4u%@@=Vy23Dqe%b5sy+%3urcktP%v7CRbQbO2F~wUPS#9!&^dd zfo1eK$ZUwB6RDVBPaQt^;QOTA%Tp2WWqD{TGm|`Ij=VyH4YYTs!+th*7EJBPw&imUR9({Lv(;*^HQO`#p|1j^9Q`dMMs=ketw#BW z($W1d4v)Ls4to)UCw_=RX3Sdj)0Ed`vejct!IMQn*>kMG*&W!;FqG*hE{u+>xnrljk4K=pS0)-x*@Z4>d%$Q1}WSdOE>;U z=Mw{;k&_hwovD;z2dLs~?qCaLOv{HsTR(aM2E6zv$XLThCeE;AZ>B8S**tu0Xbv$u zoZI(7Pr<4t`jWH1{sy`8#;=p{#p?1))f24E2V@Z*G&*^vHj-R~^ zCcr3Rh6;lOA=X|Eza)NyM|gck8+cS~$zYRejaee~>CIS@+=BR+D?Xb?3BHdMiJ_y` z=p;5Q!RF=wE-x02ff~PLq!AeJ;GG-+C9__24LbiV36Mw|9vs;l5BtN1LRL>uUrN2 zoyJZd0KTwG;Bmw?pj!eo!Zw6-Hz~>l+m=g!+Y7$C_Ju^Nqze4Cz^ma^V}5i^{&&@0 zxuNPNL#n8?>FWfv>$f+25*Xr>%@#5M$1P5845`;qeo8iKiaW*Vfbf(XPO#~I{;I)R z*x;RMpRXfQ^5bi8!0=@np47f{>3ifu)wfV@z@M#!8$Q>xm9j^G)czi1GMd#s*^k3)0u1`h9PrP=tn!Kv0@Su|E6(R z3v$7~zw&z$vHF&LW}kypuZs7qULg0&Mlg6m>c6-pURLE9n}(#$ zo1OFu-GaT+w`cj4>ycmPB;KBJymZWB@DCsqNw8yN){d%ms_(BJU$6$-uF(D4utJ(W zHsgcd>~K#+GbV_M_R}zOPW25qGyXe-(L*}-xKfY6RQUEnhOtaDgVkAUSagu}?V#b?4Am5DRG z;9K?eE;(T@+^rsxr1K9t2q^eEoyF`!X*%vVy2Z_wzq?f0Qy?^uT`jyaw-+Y`3T=Bb zcmoP*)7~_M5d}}-wLj}gSaUJ!5IPYK=ru5QzNlPE$ncgZ7i-6NX=9wsY?<)aS5X)!~=nT3Op)_@_pK!hKH8$)?s;2qFy0W z(x_w4?9?J+6L+Weqwn{|L;_G!kIJGeUvV+!p@gpE37*eJpH?=HpU7-p@YOL#t_{lLsSTDb5uKXFtpEh~Ov?eoMd2v{Tq52g^#-s7iFl1#ph=3FE z)(iZAFa#v-={)?tFdudb@qYX>>GtG}c&fIPSuw^_DK^6%b6cE|^l2mi2g~jB`l~^^ zalSra-O1Q|Y(5A!Yy7@#85Y)kr?$#3O>SfOigg*?KGaR+YKZa9E8zg^z#Lyvc@LOnLE|mSX}Gqe6dOO8E8i&c0&{L2qX%QY3MM#(!IaDCz@w{U0NINP@%GgklLbU6$Rb(3)lfh zT(n5)5Wlu?iHB)y%|#7}lDgHVO+#OwzxmZ&^U5m(3zPVJKNYLi$^pgwn-rz%;=)H~ z4&_wJfr(hitUx{ss{GL_7x*ZP9d=m?7xACDkp+bmp1++F+HfqReh3XMSy`r{+orF@1pVQq&*8E+GMAHymx#bD}bGi_f|95%D`;UDT zoH6Ba?$$^tNQa7Uj}x;;_J~+40$!Kb=T)2Rl)Q7w48R%Ly|9ml>xjM$*)am{DaKU- zPPNs_U~Y9rhbYz03__mi=GHL2Cy?94?LOc5#NW79GTn6x##+#_M&Kz?|D1v3AT6xw z;JLC>FO3K5jfR`PXiKb{tr8;b;SyvOa-bvW8)C-`&R0_6x%;>Cf;)t z8(#+&On#*_RkV8{poIJ~WUj#B(mtcOFePWrZhs|g9qTNtF|Vn)gyZbcbY~!d({1L= zC!!R0iwgHLu7|$(OsU8cw89_c0exc6;3IDjnMYkRDq(w3i}iW()Yw2ei#N%x^XmZ9*+Z3Ck<578g}`(zl`p!3ibmA~ zQNiEVCTa)MYjUiT0V_t|PKqnKI|C!SMAx*0Uw*T-4(l@3s(cBOT|3&p!Y2G#9VYDe z#6liOXuK3f6INRRw2a3zTD{gVeevpLj14o37axzPSy5|GYSzQ>vtOQlMQ|zKSWYE9 zth^R3+rIC61Q@?NqkCLN7~g-8z&mb9lmr$`d;&j!HxozdzHTL zf6HjvY@p7V(W)~b3(ddKnO+VLi)rTWfqP#lN@F-o=JONq!MU7#47q-ER8$?PM}>R? z5v-;EQ)}27d{b_6i!u0#7Qa8*izx;Ct5yns)We^`6!-ZbNG6N65UoH7ij8J=ADrmN zn|&c_X7!^~>>3{p42V%S95gd1;Zc7>j{H)3`fQ^WRiQ!jJ?OOS$dwLx+~6Ho3kgtd z>`e#P6VyeVCEa6th-G;yf5zO(aHCPPv?-us&1+GXs$l!g$%NtgtB?}D-4Oq*KN;Ol zK+dJ!?PjA)i;wOyKz#vYJBp~)Kpu1$Q#PFVLd5OIzEwONpH(hLjd=P;Fhy4=3x}d0 zb9mZfklDdz4NVUn5XTXlT2dZFG476?K(msBDB)Cq zNA`$;MXd=Evn2G{X<^*rs2DF_@Yq+-^~bJ^JiMScRIXqNbyD5b~UAeQl8?~Oq0 z%4jH3N2dcR4SpvC#cm~zNUJ(gB54(GF{Hd+6sARTrbkTpFD`X~rtbUZ@{V1M(~Sko zMmovAw2>kYpN1P@s_%x;#7xW(vndEV&`A@9$je2_rT#y6G>}D zC-)$e=5k0_r>z24imS%RHL|~s4&tE`_a+<}TMg}L_NPc5W$@%sWcNa0*Q#o5eA&?T zG&~KDb*lGK9=wFJO*mZaUT(mZf|zR&vl(3#2@$e|&YjH+4#tmfo(zy1T_v(;&s_+N ze!f&(T>+3BrIN}9rO_LEBa+M?+Y?%U>}9DxQe}5Nu<5@L%Rj!s+F#-$=5XEj#WM}p zyn!>0!?w-s?*3Sj&tRIXGid=8io(?^-+wbXV--7Ze4N&5yYEUzIXvW z7v?!=K{@js93=L;Lo94ulgbA2 z+}pcM!C9bbk-kv4q3_2#?3)HPt4U_i9PfghcaazlrD?_JE4EnSbCXa4ttQ!Dqz{#` zjN>)V@F4WWuX{CkJMYqJ&_mwTzQECh89PE8>s2FSHS2x(Jz}pjU;6;@b!fVKtpR-D z5#fR6%cb}xI$2WVTy6SbAu7ZfiMIu1A#dgxRFZw%R&I%PDli|2dPSc3uKfd7U3l{@ z$O{*^LSi?CwKxj(Vk9Xq#_ykm&4tkCqJp`Yp4;P$`cUcMM09kTlX^vj)VMkZ+Dhod zf1_w#?_UCEzUKjh4@vrnR>iF2SMM0t_VH0jz4P>79&De^+X1{SvUG`;0wH+=;(1|ITI(SMpn5Na>#!8KLze$l2uqW_Q-sch@&d;Z?C0gS`X05Zims>EUdC?68D}qBPz zPeAkNi8QueE-g&tQK2ap`?RCf`*wBzhfDwQMS-u=sE7q{#mahN#J0fIhHU&*2 zsc`8pZw=QkfY%sxbyiscnF#!ivqck?@Q*kyi-=w|8kuoYA{_ZNO$TXeA;4bNPXIE- z_8PUk01X=#_9CA`J%1k;v{Q<`P5DG|sqWt^7DHNGfbUvXvk8b-MqkNQ`4>|;N zfz#kRCjCnc4-3FKsi_^!f4WSIRKRE+wa?AE;xzH2Eo2VjlM`FSv&UpZ61Z_Ly+H zSd--XyPR)S%{Frr3BrmXvJ*BZIQ|34X9RDsr~~>vk@Q?}b9k8UmBwQa>Zl{Gm0|ps zRm8C7t$B}IrmYXTYZS*qlq_AhZ1=S~hr2@0U5&$gkwlRA$7O!-Pwznij1A|}z(3d$ z16@`;;HSCAZxY1kc3pY|XrWcC#~eFR$Rtj;FPUlFD1rY1=sEnEsFL)tx59*>@_ws~ z%HgqIp+9)Lss7P(KFCq$NZX?KQ;4MuKx4pK(Z(@VDFyOSlHk*IJu>R-qjk9M{ZTZv zG*h=V>VjFcnTMK$?N2QElY@UR6OFKpvF3iQ+@-s|8CVFxq}3H@N+$Phl)9QLN8{@~9M>hM?=(i)So=Zsc|c`Rd}bY z$6aejrIPUFEv;Gl6`qdBt9hw4#bDu@gfUOGk=EXJ{feXi41sf}3`T=a@3b!rc77I` zC)>ottckZ6ncj)p7PU~0_~Wa_%Y9+0?=iM4!3)sq8YO_%vi&Qmjp#(;ba28oon*z) zHg3;3N3&47ha&nA^v`2@(5$c1By7_WcdyF^b!$z|j1{gr#L*3F@AZ{lmJ<$DV2MpS zPeX+#poK9LpZzp-_5PAn^L`U?=PAZ9DID{p*&!=#zAuG)t82AliVZF!e}ilvM~heN z)kUv=!=I)OBQ~WyM#~ol#PK$6a<=IKr+!YKV!_Ho&)Q2V@P9*kbfpvV%sKuM&(L9J zo~&f4s_joTqC{^wENh*(l9@VXNQho4Y{xgwPzaa!;6^9Vi7aEB*~Y)!C{yfh++#4o zd_U1<@_FTG+B@sY`M7KP0VB+P<&}HHS12mYa(f4B9Gv$SBeZMg%iIT!&J9u1;dCfP64N9QgZM-$I6?3%Q%}E_Xan_4rX*)V4Rznrf1f_|8tx4&+ zc;FWK&wdv|d)NN0ssP8tI_5ekD&<@L8H)PNurlMA3Mqo#s1WHoJm&@z(P@~?8zLSb zRj-uYngVYOf3N7dOxX_*{A4s?k2jvLKx8t+Ap$zPFp>aRp&J0GeMn4S;6unCE489& zMvZf~a`<9FbqH~}C~0T5@U1w&5}i2zbRm@WGaJBqqtXSfp7|^!5W7XIW=$PtzL1@S zB7UHF1I4HW_W>71KSg#APPvVu;Ry_5?#e|nNw6}$9CQGfnaZK>*zw@&I$x~mUY64L z^P{0{okhBV-V9}wp;0L&OoOCbf9!o`q-N$uoQC4LQx?B_30UGPcsAEV!OCrAz*fzH zKfm6K5Szqf#5@f-pbt_55^_(a)sfZ8J0Yr1sx);*6q9(kNkwYl%9iMFkWpp;=Xr=e zwDiJSpk9`TFLLQXe8@nBP-_$1a3M1bw6@XlLUIPGv_YGMTY^-?GwopfZO`q>;&|E? z$x_20huy5Nr}2~SnP{{l@lOx8t|@uqE=ub&@{S2LAs4sZg3_{K38DJ|*BJH=Bj2qO z1vjn#=HsS(&m=KuIG$!wz^TmwuLtF=kRjs{(_k7`+Y`s1UHUI<+CXRHPq!#};yf;o#ZM%yUis{I?96r-RS zN0dLKY(4-X+$?+Ezh4f?>l3FI$+9zQ2m&fEfayTv9oz?T2WR#^!1&^+O9>Ui4ZGg`pdCz1jp|5tb zHlVVbo~P^^=3bN$tfQ$`0}HsV5dB#DpN_nNvL{Wmy`_oHk~Qi74j262_jF2M5RB#R z(q`R7vP#};bcP*_2a0ls=*s`^snwGK{=zWFZCF45W8!)*9_66sQQD8@!L!kvUlVI} z2eTOgF;=T3;XeWy$Dvt%FgAlSw9_Ug_PU9tAmOCV_Y2fbh;JrZ5H5+Yc#4>1_8=&G zz4n2?D=$IGam=c515?1?8@i7HPv{-ReOD?(CQ0Z}pCaLRt(vQP1A`ZMC~P{&j}f`L zx1;6}bIs_}mO>zsO+#_2Yok44a)iY?58<=tchXBbF-e2couwU2`@*3v`NII9gQhkNyPA>(CH!Go>5)b6&`$!#XRLp<13N3MlIZ+_uh>bL!$} zK%c#U84;-br2G{tw5k>RDyDv1oCd2NKks=HJOr=oBDEpuWx-kpX-GmUf0u%-WrR3} zk1n%rUNE!>n8`j^qBxfM>mkU1>w+@zDan?uqzsHc{@eznYwvrP`1zco9cwh?K8FC# zdJz~xVAC$_=0v4QZDOB9#PpKRY*uvsstVwc`Qhz%?52u@Q9*pE$ibZB_|_zr0Eeuj zpJoMe>#ellN6xHgrb%V{L&zfaS2qw}vIA`-xBl{>cLNZqWDx0Z8uiBu9N%0*p1Eeh zY#+WMFttJKAu~v~Zi(q-xaAN?CDxP6><^+U;iqMrbRxpaZA#)Xvb`ibxSvW&=4y$0 zYi?QrHLUY zd*D(41;{>Q`8C?Piz^KZObgR3R0ZTA`p8 z4VAg_SOSTJITMTnBxeiSeMbk4FYWdA&6$tr3NGDITFq$Z4~!s( zQrQh&(1XpKxU#3}^)H;;aimrms#D~~*tq9D!`lWwI?%K2b>8ZLKBhtg=V{M0nb5Z! zZA@!ll09~GyJVX?-Ru>m8L*tQ`LAoUFu6c)lDaw*NBIE$UsTkQq& zBL2xAN5tG%QIp7R@wA8e@k@ij4%h3Z)>hVv(w?$R!11yo(LC}+0QGtAY56UchnHhb z7}0U^)9WRY;|n`-Jtn)`mM_4Bi>9tUMgmf?G&$6VLuoJBe*T4!90JtM%jT3bSHck? zNqgW_@rNm(Z5h$CwpHDzDTp__%#8zrY6n6;^qaCOeOMtU78FuW{5+?Hc6XQB(M8SQ z>~Nv|qR0WAI#d2R(#lzdK6-{fzPpm26Sf#efB$t!>+k0CoRp#w*Topvmo)yxiy{5=SM@zNoiI zzUAQS?blJ-eD%ivd_(9dC`qgKZ`o?U65a1ECVVWA>Iv46g?lZu85*oSSyJp2p@!ba z;<)^RwIZs3OJTE9Ss3pJiy9+F+4GR!kdgry-Xh}(M9<9nUG&8ZUu4l*x4gB40DLky=)`%yc$wC_QL~0lLvy3~<}^9557^hmXwF4$dbyP#321 zTaAn6C7P4At~sWfYWW77 z_Qe1|%S8c?FTKYRy}s#*a+vKu_*XBfZ_qAeo*gTX9iOfO_cv6$7e^7|+bv)pdUSa6 z(;YanyrCtlFjcx-v!c;wfzxoVVTG#?4#Xxu&$|dtup+i!EdL zA;?QzyVIa6!|ge(hU@=E6Fczpia&aOwG8amI4$!g$tvfjEp2Wv_9GuEvnAxNY6x@? z_uV?swV`9=LejyjkKs(iMF5{nLE~uj|6KEis8?ASTdRs7(_XLE5ug7QpBg7lIazue z!O!H};=IZGOU@%kCr~`~(xpU-Qs_ih`$ZCLj8HVX6gTsa0+%=CCS6)(iV0~h`6(hy z%GKiIt}DW`Akk}44~#M^`U-PI4O@Q219a@VEF0;-`3#B1HLU0`FXTzsE)-(;M-Kmknml$ocG)6qO zY`;5tef%_kCLAX2VG`Jc4+@FSKcQBAF;#}PM`aiJiBvlJ5!XmowJ`yk7TV^rq?QEy zuP6vPbSWt=0^q3}0D&o;A+Iv%$Ho7QsiU?{lp_uXN`=6ZLup?StFd<9M+?)&`d#ID z&yBzCi|sG7u#e3ld#p)9qCkaJPdsv761pJ?ea1>g2m)$;vr z)`#_B0jSxr_g^?jF#;gz?pnP&Z>p_qfdR`0V#C2W=Uem_D#UE&;mSHG!Yhl_U-k8D z_Uv3&0oPcT`JWpHooKk0smHs~nE+KE)oHjcpIhVtCIv`!{X1Bw^5H0Pa-j} zSNxeozj2PY80pSitPhk>21+mn1i<9R&tNB?{^Ijg%Vgt!0K&&N^8p&B>pjH_RZ7nHv@MP)j0+ZNIw;Wt)yDuS~)zR}P9~*QFCPzDIvx z%s$r+p|D~2`&Jln0TZqJOFboyK7WOksv_(c7K1KKwp%}jM+crYeIaU%m&4Q0=o8nn zrljewCZzkuIaPv)h^2<_oY~eSu)*d03rPQ+CAB9bk7o7}KeK#TTYO%KTP9Z9Vij+; z2V!-S=ML=tWo{7SkvF2{)d?EaslSutIi@k*c!8Ab9Iye|Djx@;1^EtmJis34Ud4oylFbLgBd( zM!LtGn0iajtX30+FPgtjr}@JbJEZe1zxd#6{c1NIDCOF(vpL)Cd9<_u1}Ut9WpN&R zYmNe~Ai27&Kf)+YiZJ*vJSbzqJ~XJrZ_kS1GfGf-0ecaNxWB6WYE6eC`+0ha#rM5U zMR2=-#8TNm;^8C52B|ly7&}-JQ7WjX_^0SY{ML_88gzKA5nZ3m;o|M1X5(Iboj>!y z!puqMf~dRDo75td>A%0MODn^Ep^O@GhsgaG9DPSByqpawMt7ibs_dmbIP9|K3;E8h_qj0A1;RH+I^r}IxQH3AXp|?6ew0oO zt)v*)x2(ku-Tk1NDrHrwp7aK<#n@{5i4Iz84o}%7yPoDAtun7cq#W(DjuzdLa7J?S zu6|lK241Dzjx78TJ)%pjW(%1j0vx3nUfvpFCd{l0zjU&za{Gr35SKP(J!8B6eJ4B4 zw32YuSp zPy=kZkveXeOdH6&C6kRG5DMSOR(IuDg@M7y9|Eiz`UgU4W#k7=MTrAYmQO&g3CCM<;8*@n{Z216pg1^tCvMp)dxbmS zuzgvzam%avEsUNSYazVu!Qa-}hmG>PN7^tcHIBjG!qNM8IJL&OJ z2?3P)-(o=fm$?Q&+4>8wm1TpRYEF1Xa{5_mvO4%3O@C-eB;7Qz_sBi zfywo)4dHt$f`-)WO}!h_1GWCUur)xhUFBXxi2qTisk2x{F6G_9p>;9LiOt(B={zrf zw5CGm>Ql90cw>5iTmFHqZIpgjoIg9rwe^!W@^fX| z(v|#on^-~}r&ybvohp?>q58xLL?WJr+Ygkg+~X)8C-`G*36OGx2zbnE z&4LrK7=U7QZ=vhwceuTE^eP!0f`7=7gZ+`3hxM*1%+v5zBC^jcVw~G!*o#?Xd zr??Dgfpj8iU31QmB8=}hl5tAhA_^4TUpx(@{}+%eC>}YqaES~t@8ZAO|KM-weDj2V zzuZ`B9A@hFig(A;t1pkcRnmR0mdDVppTJ}`++y(EWm&!w0x#C?Rd&BFnCq?BXOsl- zxGDt|GR1D+%El#>2Db0@*RG~6-vBp##g0re}X;^&g8i?I<+yJXzAoV%lPrsjlCi&}CiT?8sl70(pbrL`QbtUY@@^To(x#$wZU2V9V zRjY<9FeFOwTq!Zgj}=4cD;*e)8`%0!{IrUP!~8YTp`i2&n@HbQYe9wVapX8UmR3X(fB32GKriGmM6p%RBg_nau8q(b~2m$(f zy~YdFCV0w#eiN{bwIaZyObiei_l>7P)#V-Y1qxd_JE2>$)>`&RYur4j{*etC>CEDi zEBvYrH$bBaDm>_f3(O}B@GXj>KsOaP%pCezb@S{lgw{hz!faGlbgyK-Q`qQj;fZ7A z4DIuJF#yGf0#h4+!YkikVfn%u*6$#IcYrYQL5b>}g*6CV9W2;*h))Y}iiNJ4^^AXJ zCKu5|&((dz#|ZE84~+_Q4F~8lu&3Ssyf`WH3zQO^{`@V*ps7H2ZDEYb;u zGumfeX(E46b|;qCOZR##2OB~(WLym<4C@oSbQ9Ab2kZlhw!IHKGU!wX1+&$EYy6o! zAAaD~X^e`r7dsTG#6tC&{>L3?K|?oy-cBMM)S(ELaG7aqLXa2~Mvk|f4;zGDxsc#&_VeMk6Zmi ztr~YE7_w(_j*`?oba~L>MPsjO{`d9jNC;ItG}@3Q!8o#ti?LG6#Z>nb&nq1Kp(}F= zu2X7iSMoxYD7#Bo8OEXFt0>Hs-d%A=mV zUUPP|dmrVi&a~&h56!XcQ@A%+`Cj(CpJp&L1z$ed79oe<| z{x3v&DELij_}o9834yv?*^F#C3UvHeYs!%ciI^sP!q^HGm_T!pin%9f?fmJ{`hLMH zOaQfa-&?^772DXG=sEza7Z)~el}5M3iwG(uy5ralajG2rD|YsXvnubV_vojBH#Am& zTfv{0JvB3O#hgTvqLIRmbieHmxnVC zatXX6GdS?&G}b+NSW)_g8mf4P`dmxoD6;Nb24J=)aPC{6%JAy1gimGhME1Y`S=O)+ z_y{K9*2QV2MaZSwm-I6+9&MF~+atW?{8}2wuaoXXZzvMCAj-hN^u@b#N+45OT_=J4 zLh_7cfxuM54)ZeLCWk1LW2Wf5csLR9Rn)W~E zmmDM3{nEvLZ{Wuu`9cM6tVVwaN->sRLnxY@BuHF&mF!#LzOAPfo4OO!rYz-wi_$Xi zJjA{V?p$jA?~@o|Rna%UCkazWeEb5v;1`ZaZWFx+-yo@mZkknwVsSQC<51mYNLYl( zbHiZupyCK%AQqPd&BHK-v=7}?fwy*wTo^xv4}qi`^&leXXVhmc;onxeUgs20jsF{@ z@aECw`xxWfUWHhbVNB;*N0UHY+`2C!eBV1s!gVLi1b(bhXQO$Sz(UiIJb^JhFz_z` z+vFxGVl3dZ7IG*cis$z>oEJ+rcI|uE~uS_VVNJ&hnAoBkIZwmBsc+WopWwFZbYj zUWLFNgwnMKekp#x*}0Omq#h2gb*m61EE`N^9U0Da0Hx!L=bgf|$%NqpdLqIyUQl9c zuD8X4spliOjz3xTjmd>gc~^Jg?9eMs_`&SsZ2{xMgkI3k?<3x#*e*-(DF@xABZTyy zr(bVIZ2^4AB6~h}BxXy?BzufS*v%ZOlDnk=I;2vecH02W$AN-o@`gnkKArpNOY&kNEd9$;I`S ztzia(JGjsVEHox9kmpZE zX}KU!JzGfvU+BkIo!;4On4P(8NF*Vj8xlX0(R_%BF_j9eey8Rrk&&c&8Fdsk7bQ%@6PIox6{S$sP`;C`k#~OmeclFAGkKlddMuAebR!F8A!H|iXj>Q{gi1X zJfEBIXFXSZ&46od6$NA+{O-lpzc{VXjxHeJi>w0QR0eLifpa5jI^9|sm&?JJ-vC0;Xtot_6yS&q1`2tgNsH;q(4P9KU1)x=FbCiOPu z)Jt|VD;|^WAAy}wkJBbgCIat_qGGJ0-3t)H_uj4&G4B)bSloVVTviC7;{V(p;?@&$vua;<=b+;4<3BUZH(j-H={4Uqpw zKQ?&^hLed3D_<_PIwQ^ny$o=h;Xe60W2wi-PVgx>B>V#k8i@}xu+d{MQ$$CFfyEm< zIF(ETY}-QRtb+|U2nk*IL`^@l+Fr4w0Pq!%MTEACB`;I}W7JbTWVX39N+5@{UlsWP zZ4RpHb!LD+9-UZbjB)WlT%|yk9#hFn&O}eTuWHQJfn}g14j| zC8GCR79#LJXHX%zGDE>E-3#3 zs(H0ek1)C#fq+tXA_7x zAMhs{L{U#yPj{7(2f0R+@JUY5!UTe*Cr1Ecz9WY+C(FG&&`?#yG#$tru({mLv)t?a zE4x?m{K;Dh%)5FoGj`W*@B|&xY^|(3Y(3iV45g{u#dyvmOBcmmLsuDWZq0I^_0PXW zcQ;mF!g^kMkYe0+RB*bIz-y{Omxbz<6{+o;lqVd;M@Z1)=?9qR>g#h^M{)VuN+10L)#}_ z3fIV6yruSq)xDipHM1fpyKq*X8<2?W<>&ulqQ)&H9dFI$k(4bQhPJ&LRg@#xy%4vTl?yIP(?IVm1$`sdz)j;$nzt`fB)(AM<|m%mte7D3ne! zb~FOvRhFmsHZoQb5JDrvBm%S{uqVrtst_EibRKj!Y0$pB-&*&SIY+9~x|L)tk1pxE1}0H}+`y-?CUq zImEGJ;ajX)2|yLSPHPdD&M)JrOD1z+j>kIrgwI>m7SVOJKM%*em6C*SUV3z*d1*Vw zKd>J^oDyuh!HOQz?$K4hM$z(p0Ys4y6Tgi8QvWqXL)TyI>kXfWnBZHVw4#e#J;rvq z?Qc1jSFYDaTW!gp|As>j@c!ig=StljSoauu1z!1MB-*_|&@v)D>jN+tsl2C=krN4! z%_mI6QZa(soQ1V1Q5*9VucdvnL=C+!E)j`>1n7S^n|V_#c@*hUG-f8YHn{qqLrW zr$nJ|iTN*@(FySqO2kxy%H)T<1U%Ge1=0S?eF5E0f^`BEYlmLVm@x3R9dv5=)m$nu zqGNxfQr&^iZ0u^^+XB$k&y0@Xv3!N`g$zmy!?Q(3kZmAjW}^Ukfb4*eGArEQ$lk4n^N%^w8Dkr#&&B9jCzr1_utPy!>&wS6G*rM@r12JPBp z6XpRCOvvaHiQ2|@2<^Ng%mWxZ7=`ZpDs$i?6*y;4s?UNC!%oK03w9|I1|zPMyb~mH zc+168_krU66L3M3igG$v$MOon9^?Uk<#)w>J3_k$|2kYk-(T6R%R2UfYK1(r7Ylo* zIT85ZLI!CaPTLfA>^AKAwLWSBrFh295>!mt1%_3*Cy<~mHM`$|} zPf_7$Zd&w$F|sul@F;Br16N$t&Pe++h8)GQH|Bqw)Pux|e6nb%`irZMreT2jJM?)|AMdcF`M8k4c{n(&Xy35 za06VR;R{Ws?N;V2BG9g?A(vC;RCCYo%Kd&b--Vk;ruBI7DMvqG>l>@Zq|kDfy?t7! zZKps(u7MJzL~w!ByH2hyv9^)-DIxQ=86vOha+kDd=-RbjxK`QW=Rzwv7SGx>2y`bU z+U1^c9760cGhODnmO86-6=yqN%jX#O&l%rpLXOoBWhCaxS04+{?9BSi0i+4~Z&gY! z-@Y$2%F?EV<(N9*W8|qWyS_r4nY{Vv%`7%IC%vi(2tCpkp+WF(IbDLAh8X72b6mn+ zTA|6zAF35xTDieI2iVU#3r@JKc- zV2k09)|(&`t9*ULY{l~~^#I4Owj2M5GST+~)+zrAmg%czfbT(Vc$Q-YTp3jV1)JbtbmvU(@fuifs5eAC8 zj$8n~m&=q5m5zeTq4$HP%8liX<+l6qTj9(p?4bPswb~saz~jiDABT^di@2P<`RP#3Cu-5Uam&~0vEX!|D%w0(>Vfkt|N-^orOU@~lzFZl`x} zrMhl)vx{CWN3F~xa|F>zy#v~fcxF-wSa?+0%w5z#II1;BM;rydp^z)t#;68^LHal zNa%~J2CQM9C?ADG=f+?|wb`QBBT{-_D4oI=(nP#M@IBsZameX?oH(rp`5cViM9}WPTzZ;Qo)zB(-bPMGg#NXpp_qU}LFl7<4%r6Tw>3oWtOi{}F>qng*$ zomhbuLwu;2(On}lq&9IaXM?<oDEg8{lQ^J#{emv7|f2cYM_okmPY%|08->ve}RHiwC7zdk)Bb zG@-}KVeJIYWlp$7J5zG3DkJ1iGWJFbalL$MG6aai0*Ci}gKolGIF~-rT&A8{zvy-V9DpYaR%J5T)N{Qe|wH!2^bTSj1?s3*Z!fmRHy`xPEg=&vjoVDnOm{EzVB%SP*nCDg zZ&jRYx*By{e8pd8g|P3`8)5~RQ}AI9b6+&(2oClBtLmK#PjYv#D~k#DlDGf+TRs@y z7>%PP>fUdkMG3fny<5sX1%KsCS%w6XTPR@`&Tu!fsnULX=-wDyYi0}QIagT#cy%!q zgI(So8?4*Gda_UIeVw|zm~=~{{;E&0JLPP0VS+yyt3}drK)ToBJ-{R{{Yp!8kT5Sb z@sXuEM%H@V6q_q+QH9|#U554@pEV(M=21?ljOylG(yY+IbRLfLyzn>mYc11wsmFiK z7u$=0MCv^}It?LV=LOd~)EMXQZ@+S*wls#%BR{(RU;{MiPvzkOa&P+owYFti!oV7T zAb(B~u1R*JPVuhiQY|2sS#_~f=KDtAO#~snuMJNql(rAQPW`wPZ6op+<-ZIcxZ zElCWUIQ|O2JChNhflrX~VY09PXJCGoFFU91k(AR7%A;1Ng4|SDSQN2M6K^AC@?EYI z)s9h&aC$UaV7zFv=*BqyFlt+lEWeQWC+=@?lntMautBd#ztIC}@?y|WYbp1O^f!L0`>6jmN2C!xQ%uc*SoZ9u~aG z>;;}h@Gj_~u)Y`8LZa+C+QP&hk?OgL!7%BLTRr>+)$^ti?|UzysIgYkG}s7xZy^d8t|WOb|?BcFD*0Nl}D>y2>Hb9Tk4OKjdgJ1g$wWs zT2oom0njz1je_d9MnhhB$F*Jh$7t=}v+mD6gP)}3K1)K1gZ82=F>m_$OnkF?V};cp zDlUa|hf-m3_#1h~U)n9B@u7ZQEeR{OC%rR0|_we{}m}0<)p!>P3 zg2xiya1!WrFz3Ye3QSvM^#D z|CziwUz&OP&xs1bt{j_SvrR7Xe-8!#O7lhE3~Lg6_O_yB3XQ+%-PRguYTR^8SPbA~ z1T{qeADP%$b*E0r@=kwMw-%$p5(dzb$ov8gC*Ah9_(sY?O!_fNbup*3RIQw<_q{*4f(y$>;2mpr=otq zYabKPX{&aK6*fYt2pUKB@(vdMiFI&jFYwI4SHPwxt56On3NG?oN{`CySaiC!iDd|~ zdWq!QsDjtH?Ey<#z$57LoYdM6VetJ?8T6-b_C-Q zPo+Bt)tS4cw)RphsA=&8%>BLjv|buCKg0Vs0c@ z=9Rx+UOZOY?11|B`V7X*TaBAf9R#W^o|Y*gjZ7%r4;y0p{X=&_VhkovJKe6OBp|L_i^ zKC)Mq$|&~qVB%e*#|UM)W1`}`3M|w*6@KY){q_7veqBIfWt|NA=oed!^zDorwT8*b z3iozHuCFbU{?Q@H)Sb$~Zq^b*fY9i-01x5c>qhjfB<2idb0Z8y_N0;t_wJ0c1gy&a zkz8jSD2)9Wk!xkevaue)BK4?IIEc3IS8mjq>YU!88BXkmDEGd8*s~Pi0$Q0m z5AU~g5$cM{&PoLRc@d*7yGj#T6`K3s!O)$JEbGB)HKkW5>MOnYNYz&hMOBjTixqcv zoxeg6XWx;+FVIhlm$}k71G1^<`p_I8nC>eWm2Cw^%Y1CZUrMPIakkZslre*}u}!07 zA4UuLhDuaEQC|3XklBa)&4!%2InmwQ)H&=vzm>x~H{5ax5a-_rFyuwSo~)y>Qv1cV zoN2SsSd0^Z0hHyt^!9lBPcA(~U4Z3X@`CL**30zMI|wvG4REAwSgt8txg06d&Z%DL z7s^)>lBTzpt^chvhBnvul_+7Pe9XVf@E=KfEc1;Pf7uRt0wKW= z%4=c?@J-wJ9wc7+RqEk)AEYgl(hxf|n>sF$o?CT3F!9n$RT7|k(HvQlw%9JoTDAD= z>NU$btNK0;_vB+HM6d9h#CrCCH^0|UqTRU7aqn7zTEz19L#h=bV?ZapM#ywioTdIS zCr0K4{isptvotbIIKFqb&nwosjtEuPbr*~8^+m6Pvo-EeY}T9;xPXt(y0;%mw!h7s z?ecEU%;AlfAp`lYbR67aI(rU*c<|pDN-Ttxpw_tg(Xm$TlT^lkpDf-yWmZ8ZIN#Xt zp{yL0B!Vp3GWdWjE$j(RYCv1!5A0k5X`H{_8*W+25GKks8~x_4a1>^6B&cdY7=`4+ zvkTOnHfF?F#HKMGzPs3QF5Myc{A>`F7Y2VNV6xdhIiELIjY1M%rx1 z<7cw04yDL9tb%mVIj12*3ATQc;y=1uR)q=xtkn??3kEZ!m z@DoyXB=80NxXl-g5_7~mlRY2`pwpPchQP2G5X_Gao`Lo# zU$649)nhJw8l#W@HMepOK`&04&&eN&QS7*v=M>WMxca?Iw8-xv)?n4^}UTFeh zkf`LF`r0R7F(dwezd=0XQx_j|q^GKF-bqK4540I6bl`1YU2vM^_bXxZPaJ76O%1D6 z%)Kdy1@a|;8!ECl80FAuPEk&6IY8d&mE@ogd!{~cM*$ur;N%x#mE-Z;1crDNmIL3u z-Maq;e|UYyNC6@pG1(E>3?|(K+dY(h804EYF&|Db9=THDgN4%sv=`5ar>X$wlC+FN(%QDfzl&+$ zzEA&vJzW#hXP;8>rYv)_-4jeyTGRf!pWHepO7MzdN(*@;4<9dUyV(@=!VP!%NK2s& z!`rP-E~4n4)IUL`-W5V2HdB^Mm&}<2K|+WqGEaFPg8;?~pWAelc$`rKjQ7NJhI|L) zb-k%2%;TgCrLqhw;$NV-q)PclA6_9~w*215YJa+gV@_0ox}?wD7Vjqaoa=fxayd7^ zjZof(dyq-yq8a+Ca;zMnhR}{O{S}yGC%BG}9=MsM%dXFmsZ#VwlRU#6xb5u zTW)hX6g=#9&M-6C8eoIEH$3U~E-QFyb)wYfDb_2fRB=VJUhab0sowP+T|h;4)~Vbc zzTp4YZkUG9ft$}uirVMh4s-x&N%DN2L?1_zu=n15FJeqNf0T6YUX~$kf?rP47uE&( z+RhI|#t$D|SpeyjZ*9RzQw{1r2obkptD7EI%A$3Hd(7Kp%5J^Yt*#5j(N;sG)Bf~my1SoGCb=0s z4DWAsd50-h6*LDVlE@^bAHZxDJ}koa6hMndbrO-Y;j61$8kOA)T*-Fp#+^9Z6~IMt zYawc*94A&A0YR6(U~SKT@|04%3%qpdYt@S+VfA)ACE?%EE%-YCsPX1jFDSI3(P#DL zSWQs#EauYXje~ZOBInCO$o=ZEf)W18XMag)H-9KrfhYS{d{@0vAtN+ zlNzjq-QlyVOS=!??;~A5A5hbg-A8!&|BA@%cZ~@XwT>j}BNKG1HMKx$(>=8sDd@F+2&Xq479v_IGdH?=fK`23!>(07xT08DQ81Mutgd5sP zFS0_JF#r>F7utk?R*du?YU5e@N$D?EUR?%T486}$>;*$uIe63+G-`?3s4bZ0n&uKx zktc_SkHxzR88@{_^mWWsu9oPX5aa19>(BvrV!R43)wB(KQNBz?q_=IZm=(CJb&FLD z%RcT%VNZ8ce2=0V;STht+^j=TcQY=yr;3HaZmlqp{(hLq7EiS)!q#xm~dxBVJbiaT`z?*lzyQkCCljls1KoM;2zQE%NX+YRkcIG%g?7^e_N}p&-L<;e&b#$Ti%V)KGKuy@A zt3L>nSeL?x+4pX_^xS_rDx%lY^(0jQ=6)^9%m%bdmdU{Lgpi$cpEAjGB}-ZvPB2ll z{qA2_9Nm!U^P^{GQq=sp$V~h+pPbA*%|yEf`+;7tX)wE0CROjV@!a_+p8bCFXfH5! z3`ucv?0nEmeUR;r3-%&?9tnnznPI|LJSu7z;)sEQ?&wB=YAN=^zstYxa~#i;UcNu|VAScjNBB z2&^Td;W3I%?A0yT6x4Vj^|+OH2&eTOK~(6(t`^cm=+K+?Lph3Eak2t)L6JFURVYR| z&RLo8@pqfPj{?DutDKC`K$)mXjoje3pHs7E+uMqf|4<+w!#+a4N6~J|p4@wi4l}jc zbk-t#ky9ZnUPxP^4UxrAFSVcv36gCRiBz&)+3f$ug6YKTykmn<_Y-IRwJK+00OPuq zd$1sG_IQG9UrxiDA)d_NVI`Q=;@ZL(#5L3Yy~=}?WDD*-)^#$Y+?X5xe1=3SF6Qypbp8~PLZh1!VR zKl;eM)mbq^6Q8A z8+BmgFsT^=BD6eS z0Q8F*`U7gY5cP+JOxRHC8as3{uq?UQQ9xjPxMe`{J~vy0e9LF;kBZ3Lz-chxUPp_7niJkfx>+5c4Vrc$5n7M)K%4PMVIqV_QV zqn&4UxFBh}qrz(Yxg6cpoOMAy86EzCcAyTeE=ET%+~3;+I|nKwp-)fahYk2q*-l6U zfGN)wT-22S_iZ{Q=}PAd2J)VT+TGCZpY!Di*;~2vWJ)|7Xf8Wks$#Ex$ZAU`{v3q+ zVEmipfFx_&tzNMM{Y++{Q5kP#aUbYK)&c?Jc{3X0bO^{Xu~*!&$$xNZj*kdzBE_f& zDAb_z*F!2U&wXf+gQ)S|a@ea7mTkc#kB^mApQf7&e_c8d-oxGosi_%uPd{4BWy~7S zBS?O=PV<@z7qXF9st_GVSg;)D_tXyI9h8IZC9uAejQ^!r^rt0P&->v@&zBsRU8!Y)62O`RwVzNgg;eP_okHg9uzl2CN2IlPT-mPAGNF>Gj8np5D{V4g+4rEwcv=+v=p3_YC4rodTtcx;ZMpA zrOOqwnW+~OyK;AV?R7XSgqk_Vqy+yT3X8^FPz`kI`xdkG+f`7f z1T7li(?SVGj}8Di$n%9ueb6&~n$}3wh&a-1oPypFo{4TF<+u3lT%<18i-ernFc$6a zK(yc|EP+{DEDQx@yFMZl1vVPWnSyii6%Q{(R&S4}rpnd?McXTn=zn$9>?5IfrlR?5quyURy5$I>HWBj`_i?5P1t?o$KGbd>8rFMc}k zb;W(Pmqa?mQ&?hCu|)BRdXw`ciyE{GyU$<6i+(GS12q=ARLuOj(C_$D^>Fb}i~%M6 z4gFB~)YrvlR0N3A!vdX}a`p5W0ti9gl%X0XVG4PJU%loGd^2;uC3YDaegzk`#KQE$ zg22d<1cpKxE;`%Dv-NF?qzE)^b~kc3kT1}LKpe+S9qQt}H=wU~x2cG9g)UIo_sBhw zlqC;I5d>kDpDfF{1uMxK;UEt1f`(FhHGt68ZOb_0rI@n%9G`!<)eMN_tx)4R440zgT-QV~tp==fJg)C3 z^@rn($R?)Of_B2huyx6ON$WA_bqOylsn;<8{zQ5fSxZM87@v#>C?(gw2t5BH+!<^@ zvItHN0e{)Db|wLI6EPD;@8|`Pg0j3tzxnHyuyn; zy1g|x65LGM!79P3^K9ru{Vwc8tf8?Fh(}ewR9;9Q^{E8xr}zk(n|$ATtkLS?H~QD7 zC48(oZms0(81uWXYK|FK&*!;Z4PRB+MfVj-{;r?c32-kfN4EKlK(ey~`qy`5`F50F zTfHwYrd+>!QFd(Wn62+gR(fM{s6nmQf`P=z%B?;Cf|M= z$D;oHiP%%jSPnHooqBmr{Ma{R{rJ#4VHTB}6&sy4um7LWL|Q&11RApLMtP_{PgGtUSa zLWj6aRcJW*oZU;XuJyiZ8E4#NO=i52UhcY^n+Dnv7*>ULocMcNDSy1crI>KQhUEKj zSbrhrDXouWQh&Sgqf$n{_CU3NmzE2ezSfe)#A}kb7ObQ+Ms05LEN>RDf4{#AVx7h= z7CsCrmoak#orRZbV0Jov9+*MT9;A}Z=ejxv>E_3nAUyZs`1l%L)@y{~NfMaZXp?4v zLA4e%RFxXP2%MD!bAlKPh?sEO%oo1~hnO&kXz)p_$&tg7V{fpFe1b@Pj?XXxx{BF> zK2>EX3@zy}U^meiWl`CzF)fb<3J#wGg zk9K<*SAE&Z0TzP?f%~t|eP`I-AW_$0fTdB*KfrSr!5E~ds0OaBOw>LERiuJpva*46 z3CbjcBwd(BB+nGX7;u?@Af<6T46coKnOrJm?Th)C)eYPXh9$Hgu>MBm_m{nV@h8v6!+ z)9hA~3sJd4Sp$-2y>!jMIDh(4Fav%VkkYIHt?$}}!yi-X_%r?qVVd?;dxMJ6Gv_zAfjW zz3S$yEnV^K_&~iy6M{eE?v}{a(-Oat-nX>3?Y}FPjf~cFl^&fR7j&(Hxnoa}6TUsR z5r{Y8@_s&kd(d<|5k|m>C=7`{Zlv8^=%lkCw{{hB zft%hRV&={W-&;go_jP*MVHZwCAM5DmcT#)dS5^h=C_U=VwDVPNROa`zits#ey^Ew` zB2QO(qqj^ZULU0N8P1)+`&z_0UqOs_Ap4T}VHN2#JMA-S(-7i^kK{!!1OG)>nNp&s zZBDaN5w5E^?qg3B(G?Agxg;m`dyaz}+`+cze?APSR_LpxmmBl%o=4aYQoXaUXA5O& z3n!TT^^xM{<=|@vX#)gt$1KGA9F+!{RMiVSPO#$dm;PW4(z-g;m>sN%u;vvZ6a1ZT zbJLalM=qpb`>)@)jO*-&rg@PrzZ0Qjf^xPt+gDi@*^jx8n&qxP{o{B>bEJOZ^Z!p> z<@qxT{6`tubL9=a>+X%o4&y8w#-!XkyEn#c6xBNNkp{0~gCXJxgKaUwGnz)%?P5o7G$iSjnr#R@H)NVy zL^EY}`?*g!7p|92CH;}OnU@Z{XE%=;_%Pg+ zCIw|}UzC~z=`1gs!ag`f2NHg->5S8ac%@UbECP$RE$_~7!XW$1Ws7$7E*|30B2mh* zf>1;yRZYRtpiG@$3jxpfXUXADUd;r$%erV(fqCo+(}zYsjF3|fyY7qOrFe5?<1$C! z2O*!5Mk;Z|m_6~h(2Iz6SqIir76-cDdG}%xw5ky}ke+E-a!C?Z$6oHpHe{sBmr8>x zO)Yq_V6f(mAzxd`KIGf-%eWdw(yv!&f9rFJB^r=x2HO#k^N~;U$QXFA!$gl7p_fW29bXACM{^^ zmF0657KSW>rQrmfAJb&|6D}sw@q#GmNhL$lV>Bkj`;7;0