diff --git a/mods/.farming_old/README.md b/mods/.farming_old/README.md new file mode 100644 index 00000000..ec4143e1 --- /dev/null +++ b/mods/.farming_old/README.md @@ -0,0 +1,276 @@ +Farming Redo mod for Minetest +============================= + +Information +----------- + +This mod replaces the default `farming` mod with a fully compatible API that allows +players to grow crops even when they are not nearby. It also includes many new foods +and crops which can be planted directly onto tilled soil without seeds. Crops that do +require seeds like wheat and cotton are found when digging in long grasses, and will +require player to stay nearby until they germinate before growing normally. + +![screenshot.png](screenshot.png) + +Tech information +---------------- + +Crops grow by adding your new plant to the {growing = 1} group and numbering the stages from _1 to as many stages as you like, but the underscore MUST be used only once in the node name to separate plant from stage number e.g. + +* "farming:cotton_1" through to "farming:cotton_8" +* "farming:wheat_1" through to "farming:wheat_8" +* "farming:cucumber_1" through to "farming:cucumber_4" + +https://forum.minetest.net/viewtopic.php?id=9019 + +Farming Redo also works with Bonemeal mod for quick growing crops and saplings which can +be found at https://notabug.org/TenPlus1/bonemeal + +#### Optional dependences: + +* default +* mcl_core, mcl_sounds, mcl_farming, mcl_stairs +* stairs +* lucky_block (adds 47 lucky blocks) +* toolranks + +#### Configuration + +`farming.conf` is used to load custom settings for each crop and can be found in either the +farming mod folder or the world folder. Also `minetest.conf` contains a setting for crop growth speed. + + +| Configuration | type | default | file | Notes | +| -------------------- | ----- | ------- | ------------ | ----------------------------------------- | +| farming_stage_length | float | 160.0 | minetest.conf | Contains a value used for speed of crop growth in seconds | +| farming.min_light | int | 12 | farming.conf | default minimum light levels crops need to grow | +| farming.max_light | int | 15 | farming.conf | default maximum light levels crops need to grow | +| farming_use_utensils | bool | True | farming.conf | When True uses utensils in craft recipes | +| farming.carrot | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.potato | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.tomato | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.cucumber | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.corn | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.coffee | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.melon | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.pumpkin | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.cocoa | bool | true | farming.conf | true to enable crop/food or false to disable | +| farming.raspberry | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.blueberry | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.rhubarb | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.beans | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.grapes | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.barley | bool | true | farming.conf | true to enable crop/food, false to disable | +| farming.chili | float | 0.003 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.hemp | float | 0.003 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.garlic | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.onion | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.pepper | float | 0.002 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.pineapple | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.peas | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.beetroot | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.mint | float | 0.005 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.cabbage | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.blackberry | float | 0.002 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.lettuce | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.soy | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.vanilla | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.artichoke | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.parsley | float | 0.002 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.sunflower | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.grains | bool | true | farming.conf | true to enable crop/food or false to disable | +| farming.rice | bool | true | farming.conf | true to enable crop/food or false to disable | +| farming.asparagus | float | 0.002 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.eggplant | float | 0.002 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.spinach | float | 0.002 | farming.conf | rarety value to enable crop/food in-game, false to disable | +| farming.strawberry | float | 0.002 | farming.conf | rarety value to enable crop/food in-game, false to disable | + +#### Nodes and food + +This farming mod provides a large selection of craftable food and items: + +| Node name | Description name | +| ----------------------- | --------------------- | +| farming:salt | Salt | +| farming:salt_crystal | Salt Crystal | +| farming:chili_powder | Chili Powder | +| farming:rose_water | Rose Water | +| farming:glass_water | Glass of Water | +| farming:sugar | Sugar | +| farming:sugar_cube | Sugar Cube | +| farming:caramel | Caramel | +| farming:turkish_delight | Turkish Delight | +| farming:garlic_bread | Garlic Bread | +| farming:donut | Donut | +| farming:donut_chocolate | Chocolate Donut | +| farming:donut_apple | Apple Donut | +| farming:porridge | Porridge | +| farming:jaffa_cake | Jaffa Cake | +| farming:apple_pie | Apple Pie | +| farming:cactus_juice | Cactus Juice | +| farming:pasta | Pasta | +| farming:mac_and_cheese | Mac & Cheese | +| farming:spaghetti | Spaghetti | +| farming:bibimbap | Bibimbap | +| farming:burger | Burger | +| farming:salad | Salad | +| farming:smoothie_berry | Triple Berry Smoothie | +| farming:spanish_potatoes | Spanish Potatoes | +| farming:potato_omelet | Potato omelet | +| farming:paella | Paella | +| farming:flan | Vanilla Flan | +| farming:cheese_vegan | Vegan Cheese | +| farming:onigiri | Onigiri | +| farming:gyoza | Gyoza | +| farming:mochi | Mochi | +| farming:beetroot_soup | Beetroot Soup | +| farming:muffin_blueberry | Blueberry Muffin | +| farming:blueberry_pie | Blueberry Pie | +| farming:carrot_juice | Carrot Juice | +| farming:carrot_gold | Golden Carrot (revives) | +| farming:chili_bowl | Bowl or Chili | +| farming:cocoa_beans | Cocoa Beans | +| farming:cookie | Chocolate Cookie | +| farming:chocolate_dark | Bar of Dark Chocolate | +| farming:chocolate_block | Chocolate Block | +| farming:coffee_cup | Cup of Coffee | +| farming:corn_cob | Corn on the Cob | +| farming:popcorn | Popcorn | +| farming:cornstarch | Cornstarch | +| farming:ethanol | Bottle of Ethanol (fuel) | +| farming:string | String | +| farming:garlic_braid | Garlic Braid | +| farming:garlic_clove | Garlic Clove | +| farming:hemp_oil | Hemp Oil | +| farming:hemp_fibre | Hemp Fibre | +| farming:hemp_block | Hemp Block | +| farming:hemp_rope | Hemp Rope | +| farming:mint_tea | Mint Tea | +| farming:onion_soup | Onion Soup | +| farming:pea_soup | Pea Soup | +| farming:pepper_ground | Ground Pepper | +| farming:pineapple_ring | Pineapple Ring | +| farming:pineapple_juice | Pineapple Juice | +| farming:baked_potato | Baked Potato | +| farming:potato_salad | Cucumber & Potato Salad | +| farming:jackolantern | Jack 'O Lantern | +| farming:scarecrow_bottom | Scarecrow Bottom | +| farming:pumpkin_dough | Pumpkin Dough | +| farming:pumpkin_bread | Pumpkin Bread | +| farming:smoothie_raspberry | Raspberry Smoothie | +| farming:rhubarb_pie | Rhybarb Pie | +| farming:rice_flour | Rice Flour | +| farming:rice_bread | Rice Bread | +| farming:flour_multigrain | Multigrain Rice | +| farming:bread_multigrain | Multigrain Bread | +| farming:soy_sauce | Soy Sauce | +| farming:soy_milk | Soy Milk | +| farming:tofu | Tofu | +| farming:tofu_cooked | Cooked Tofu | +| farming:sunflower_seeds_toasted | Toasted Sunflower Seeds | +| farming:sunflower_oil | Sunflower Oil | +| farming:sunflower_bread | Sunflower Bread | +| farming:tomato_soup | Tomato Soup | +| farming:vanilla_extract | Vanilla Extract | +| farming:flour | Flour | +| farming:bread | Bread | +| farming:straw | Straw Block | +| farming:bread_slice | Bread Slice | +| farming:toast | Toast | +| farming:toast_sandwich | Toast Sandwich | + +#### Item and Tools + +| node name | Description | +| ----------------------- | --------------------- | +| farming:trellis | Trellis (for growing grapes) | +| farming:beanpole | Bean Pole (for growing beans) | +| farming:scythe_mithril | Mithril Scythe (Use to harvest and replant crops) | +| farming:hoe_bomb | Hoe Bomb (use or throw on grassy areas to hoe land) | +| farming:hoe_wood | Wooden Hoe | +| farming:hoe_stone | Stone Hoe | +| farming:hoe_steel | Steel Hoe | +| farming:hoe_bronze | Bronze Hoe | +| farming:hoe_mese | Mese Hoe | +| farming:hoe_diamond | Diamond Hoe | +| farming:bowl | Wooden Bowl | +| farming:saucepan | Saucepan | +| farming:pot | Cooking Pot | +| farming:baking_tray | Baking Tray | +| farming:skillet | Skillet | +| farming:mortar_pestle | Mortar and Pestle | +| farming:cutting_board | Cutting Board | +| farming:juicer | Juicer | +| farming:mixing_bowl | Glass Mixing Bowl | +| moreores:hoe_silver | Silver Hoe | +| moreores:hoe_mithril | Mitril Hoe | + +#### Nodes and Aliasing + +This mod is also a direct replacement for the older Farming Plus mod and will replace all +of it's nodes and items with one's found within Farming Redo. + +#### ABM + +The ABM checks every 5 minutes to make sure crops in `group:growing` that were planted +on an older map are enabled and growing properly. + +### Changelog: + +- 1.49 - Added {eatable=1} groups to food items with the value giving HP when eaten, improved mineclone support, separated foods from crop files., hoes can deal damage. +- 1.48 - added 'farming_use_utensils' setting to enable/disable utensils in recipes, added mayonnaise (thx felfa), added gingerbread man, Added MineClone2 compatibility +- 1.47 - Now blueberries can make blue dye, tweak soil types to work better with older 0.4.x clients and add spanish translation (thx mckaygerhard), add trellis setting to registered_crops and fix pea and soy crop names (thx nixnoxus), add strawberries if ethereal mod not active, added asparagus; spinach; eggplant (thx Atlante for new textures), Sugar Cube +- 1.46 - Added min/max default light settings, added lettuce and blackberries with food items (thanks OgelGames), added soya, vanilla and sunflowers (thanks Felfa), added tofu, added salt crystals (thanks gorlock) +- 1.45 - Dirt and Hoes are more in line with default by using dry/wet/base, added cactus juice, added pasta, spaghetti, cabbage, korean bibimbap, code tidy +options, onion soup added (thanks edcrypt), Added apple pie, added wild cotton to savanna +- 1.44 - Added 'farming_stage_length' in mod settings for speed of crop growth, also thanks to TheDarkTiger for translation updates +- 1.43 - Scythe works on use instead of right-click, added seed=1 groups to actual seeds and seed=2 group for plantable food items. +- 1.42 - Soil needs water to be present within 3 blocks horizontally and 1 below to make wet soil, Jack 'o Lanterns now check protection, add chocolate block. +- 1.41 - Each crop has it's own spawn rate (can be changed in farming.conf) +- 1.40 - Added Mithril Scythe to quick harvest and replant crops on right-click. Added Hoe's for MoreOres with Toolrank support. +- 1.39 - Added Rice, Rye and Oats thanks to Ademants Grains mod. Added Jaffa Cake and multigrain bread. +- 1.38 - Pumpkin grows into block, use chopping board to cut into 4x slices, same with melon block, 2x2 slices makes a block, cocoa pods are no longer walkable +- 1.37 - Added custom 'growth_check(pos, nodename) function for crop nodes to use (check cocoa.lua for example) +- 1.36 - Added Beetroot, Beetroot Soup (6x beetroot, 1x bowl), fix register_plant() issue, add new recipes +- 1.35 - Deprecated bronze/mese/diamond hoe's, added hoe bomb and deprecated hoe's as lucky block prizes +- 1.34 - Added scarecrow Base (5x sticks in a cross shape) +- 1.33 - Added cooking utensils (wooden bowl, saucepan, cooking pot, baking tray, skillet, cutting board, mortar & pestle, juicer, glass mixing bowl) for easier food crafts. +- 1.32 - Added Pea plant (textures by Andrey01) - also added Wooden Bowl and Pea Soup crafts +- 1.31 - Added Pineapple which can be found growing in savannah areas (place pineapple in crafting to obtain 5x rings to eat and a top for re-planting), also Salt which is made from cooking a bucket of water, added food groups so it's more compatible with Ruben's food mods. +- 1.30 - Added Garlic, Pepper and Onions thanks to Grizzly Adam for sharing textures +- 1.29 - Updating functions so requires Minetest 0.4.16 and above to run +- 1.28 - Added chili peppers and bowl of chili, optimized code and fixed a few bugs, added porridge +- 1.27 - Added meshoptions to api and wheat plants, added farming.rarity setting to spawn more/less crops on map, have separate cotton/string items (4x cotton = 1x wool, 2x cotton = 2x string) +- 1.26 - Added support for [toolranks] mod when using hoe's +- 1.25 - Added check for farming.conf setting file to disable specific crops globally (inside mod folder) or world specific (inside world folder) +- 1.24 - Added Hemp which can be crafted into fibre, paper, string, rope and oil. +- 1.23 - Huge code tweak and tidy done and added barley seeds to be found in dry grass, barley can make flour for bread also. +- 1.22 - Added grape bushes at high climates which can be cultivated into grape vines using trellis (9 sticks). +- 1.21 - Added auto-refill code for planting crops (thanks crabman77), also fixed a few bugs +- 1.20b - Tidied code, made api compatible with new 0.4.13 changes and changed to soil texture overlays +- 1.20 - NEW growing routine added that allows crops to grow while player is away doing other things (thanks prestidigitator) +- 1.14 - Added Green Beans from Crops mod (thanks sofar), little bushels in the wild but need to be grown using beanpoles crafted with 4 sticks (2 either side) +- 1.13 - Fixed seed double-placement glitch. Mapgen now uses 0.4.12+ for plant generation +- 1.12 - Player cannot place seeds in protected area, also growing speeds changed to match defaults +- 1.11 - Added Straw Bale, streamlined growing abm a little, fixed melon rotation bug with screwdriver +- 1.10 - Added Blueberry Bush and Blueberry Muffins, also Pumpkin/Melon easier to pick up, added check for unloaded map +- 1.09 - Corn now uses single nodes instead of 1 ontop of the other, Ethanol recipe is more expensive (requires 5 corn) and some code cleanup. +- 1.08 - Added Farming Plus compatibility, plus can be removed and no more missing nodes +- 1.07 - Added Rhubarb and Rhubarb Pie +- 1.06 - register_hoe and register_plant added for compatibility with default farming mod, although any plants registered will use farming redo to grow +- 1.05 - Added Raspberry Bushels and Raspberry Smoothie +- 1.04 - Added Donuts... normal, chocolate and apple... and a few code cleanups and now compatible with jungletree's from MoreTrees mod +- 1.03 - Bug fixes and more compatibility as drop-in replacement for built-in farming mod +- 1.02 - Added farming.mod string to help other mods identify which farming mod is running, if it returns "redo" then you're using this one, "" empty is built-in mod +- 1.01 - Crafting coffee or ethanol returns empty bucket/bottle, also Cocoa spawns a little rarer +- 1.0 - Added Cocoa which randomly grows on jungle tree's, pods give cocoa beans which can be used to farm more pods on a jungle trunk or make Cookies which have been added (or other treats) +- 0.9 - Added Pumpkin, Jack 'O Lantern, Pumpkin Slice and Sugar (a huge thanks to painterly.net for allowing me to use their textures) +- 0.8 - Added Watermelon and Melon Slice +- 0.7 - Added Coffee, Coffee Beans, Drinking Cup, Cold and Hot Cup of Coffee +- 0.6 - Added Corn, Corn on the Cob... Also reworked Abm +- 0.5 - Added Carrot, Cucumber, Potato (and Baked Potato), Tomato +- 0.4 - Checks for Protection, also performance changes +- 0.3 - Added Diamond and Mese hoe +- 0.2 - Fixed check for wet soil +- 0.1 - Fixed growing bug +- 0.0 - Initial release diff --git a/mods/.farming_old/alt_textures/ethereal_banana_leaf_32px.png b/mods/.farming_old/alt_textures/ethereal_banana_leaf_32px.png new file mode 100644 index 00000000..5800cbfc Binary files /dev/null and b/mods/.farming_old/alt_textures/ethereal_banana_leaf_32px.png differ diff --git a/mods/.farming_old/alt_textures/ethereal_strawberry.png b/mods/.farming_old/alt_textures/ethereal_strawberry.png new file mode 100644 index 00000000..5b43e6bc Binary files /dev/null and b/mods/.farming_old/alt_textures/ethereal_strawberry.png differ diff --git a/mods/.farming_old/alt_textures/ethereal_strawberry_1.png b/mods/.farming_old/alt_textures/ethereal_strawberry_1.png new file mode 100644 index 00000000..3fa21edc Binary files /dev/null and b/mods/.farming_old/alt_textures/ethereal_strawberry_1.png differ diff --git a/mods/.farming_old/alt_textures/ethereal_strawberry_2.png b/mods/.farming_old/alt_textures/ethereal_strawberry_2.png new file mode 100644 index 00000000..751115e9 Binary files /dev/null and b/mods/.farming_old/alt_textures/ethereal_strawberry_2.png differ diff --git a/mods/.farming_old/alt_textures/ethereal_strawberry_3.png b/mods/.farming_old/alt_textures/ethereal_strawberry_3.png new file mode 100644 index 00000000..8b7a7b8c Binary files /dev/null and b/mods/.farming_old/alt_textures/ethereal_strawberry_3.png differ diff --git a/mods/.farming_old/alt_textures/ethereal_strawberry_4.png b/mods/.farming_old/alt_textures/ethereal_strawberry_4.png new file mode 100644 index 00000000..dcf00175 Binary files /dev/null and b/mods/.farming_old/alt_textures/ethereal_strawberry_4.png differ diff --git a/mods/.farming_old/alt_textures/ethereal_strawberry_5.png b/mods/.farming_old/alt_textures/ethereal_strawberry_5.png new file mode 100644 index 00000000..a2decaae Binary files /dev/null and b/mods/.farming_old/alt_textures/ethereal_strawberry_5.png differ diff --git a/mods/.farming_old/alt_textures/ethereal_strawberry_6.png b/mods/.farming_old/alt_textures/ethereal_strawberry_6.png new file mode 100644 index 00000000..a4d0d603 Binary files /dev/null and b/mods/.farming_old/alt_textures/ethereal_strawberry_6.png differ diff --git a/mods/.farming_old/alt_textures/ethereal_strawberry_7.png b/mods/.farming_old/alt_textures/ethereal_strawberry_7.png new file mode 100644 index 00000000..ace223cd Binary files /dev/null and b/mods/.farming_old/alt_textures/ethereal_strawberry_7.png differ diff --git a/mods/.farming_old/alt_textures/ethereal_strawberry_8.png b/mods/.farming_old/alt_textures/ethereal_strawberry_8.png new file mode 100644 index 00000000..6d7280b6 Binary files /dev/null and b/mods/.farming_old/alt_textures/ethereal_strawberry_8.png differ diff --git a/mods/.farming_old/alt_textures/farming_burger_32px.png b/mods/.farming_old/alt_textures/farming_burger_32px.png new file mode 100644 index 00000000..43ab6d49 Binary files /dev/null and b/mods/.farming_old/alt_textures/farming_burger_32px.png differ diff --git a/mods/.farming_old/alt_textures/farming_mayo_32px.png b/mods/.farming_old/alt_textures/farming_mayo_32px.png new file mode 100644 index 00000000..c8e773b9 Binary files /dev/null and b/mods/.farming_old/alt_textures/farming_mayo_32px.png differ diff --git a/mods/.farming_old/alt_textures/farming_paella_32px.png b/mods/.farming_old/alt_textures/farming_paella_32px.png new file mode 100644 index 00000000..1362ac74 Binary files /dev/null and b/mods/.farming_old/alt_textures/farming_paella_32px.png differ diff --git a/mods/.farming_old/alt_textures/farming_popcorn_32px.png b/mods/.farming_old/alt_textures/farming_popcorn_32px.png new file mode 100644 index 00000000..846399e3 Binary files /dev/null and b/mods/.farming_old/alt_textures/farming_popcorn_32px.png differ diff --git a/mods/.farming_old/alt_textures/farming_potato_omelet_32px.png b/mods/.farming_old/alt_textures/farming_potato_omelet_32px.png new file mode 100644 index 00000000..abdacada Binary files /dev/null and b/mods/.farming_old/alt_textures/farming_potato_omelet_32px.png differ diff --git a/mods/.farming_old/alt_textures/farming_potato_salad_32px.png b/mods/.farming_old/alt_textures/farming_potato_salad_32px.png new file mode 100644 index 00000000..0028c91e Binary files /dev/null and b/mods/.farming_old/alt_textures/farming_potato_salad_32px.png differ diff --git a/mods/.farming_old/alt_textures/farming_spaghetti_24px.png b/mods/.farming_old/alt_textures/farming_spaghetti_24px.png new file mode 100644 index 00000000..a401281b Binary files /dev/null and b/mods/.farming_old/alt_textures/farming_spaghetti_24px.png differ diff --git a/mods/.farming_old/alt_textures/farming_spanish_potatoes_32px.png b/mods/.farming_old/alt_textures/farming_spanish_potatoes_32px.png new file mode 100644 index 00000000..198b50e4 Binary files /dev/null and b/mods/.farming_old/alt_textures/farming_spanish_potatoes_32px.png differ diff --git a/mods/.farming_old/alt_textures/farming_sunflower_32px.png b/mods/.farming_old/alt_textures/farming_sunflower_32px.png new file mode 100644 index 00000000..06b9387d Binary files /dev/null and b/mods/.farming_old/alt_textures/farming_sunflower_32px.png differ diff --git a/mods/.farming_old/alt_textures/farming_sunflower_bread_32px.png b/mods/.farming_old/alt_textures/farming_sunflower_bread_32px.png new file mode 100644 index 00000000..112e8c63 Binary files /dev/null and b/mods/.farming_old/alt_textures/farming_sunflower_bread_32px.png differ diff --git a/mods/.farming_old/alt_textures/farming_vanilla_flan_32px.png b/mods/.farming_old/alt_textures/farming_vanilla_flan_32px.png new file mode 100644 index 00000000..c8b9ff06 Binary files /dev/null and b/mods/.farming_old/alt_textures/farming_vanilla_flan_32px.png differ diff --git a/mods/.farming_old/api.txt b/mods/.farming_old/api.txt new file mode 100644 index 00000000..19481f44 --- /dev/null +++ b/mods/.farming_old/api.txt @@ -0,0 +1,93 @@ +Farming API +----------- + +The farming API allows you to easily register plants and hoes. + +`farming.register_hoe(name, hoe definition)` + * Register a new hoe, see [#hoe definition] + +`farming.register_plant(name, Plant definition)` + * Register a new growing plant, see [#Plant definition] + +`farming.registered_plants[name] = definition` + * Table of registered plants, indexed by plant name + 'crop' holds name of growing crop node minus _step-number at end + 'seed' has name of seed required to plant crop + 'minlight' min light level needed to grow + 'maxlight' max light level needed to grow + 'steps' number of steps crop has in growth cycle + 'trellis' name of trellis node (e.g. "farming:trellis"), default: nil + +### Hoe Definition + + { + description = "My Hoe", -- Description for tooltip + inventory_image = "unknown_item.png", -- Image to be used as wield- and inventory image + max_uses = 30, -- Uses until destroyed + material = "", -- Material for recipes + recipe = { -- Craft recipe, if material isn't used + {"air", "air", "air"}, + {"", "group:stick"}, + {"", "group:stick"}, + } + } + +### Plant definition + + { + description = "My Plant", -- Description of seed item + inventory_image = "unknown_item.png", -- Image to be used as seed's wield- and inventory image + steps = 8, -- How many steps the plant has to grow, until it can be harvested + -- ^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber) + minlight = 13, -- Minimum light to grow + maxlight = minetest.LIGHT_MAX -- Maximum light to grow + can_grow = function(pos) -- Called every growth tick to check if plant can grow returning True if needs are met (optional, defaults to checking for wet soil below plant). + } + +Note: Any crops registered with the above function will use the new growing routines, also if crops are manually added with the {growing=1} group they will also grow. + +### Crop functions + +If a mod registers nodes to be used as crops using the {growing=1} group then an additional function can be used for custom growth checks instead of the standard 'are we above wet soil'. + +growth_check = function(pos, [node_name]) [DEPRECATED for above can_grow function] + -- check surrounding for jungle tree + if minetest.find_node_near(pos, 1, {"default:jungletree"}) then + return true -- place next growth stage + end + return false -- condition not met, skip next growth stage until next check +end, + +### Scythe items that will not drop + +This is a function to add items to a list that scythes will not drop, e.g. farming:trellis or farming:beanpole. + +farming.add_to_scythe_not_drops(item_name) + +### Start timer function + +A handy function that starts a crops timer with a randomly selected time set by using +stage_length setting. This is mostly used for special functions or 3rd party mods. + +farming.start_seed_timer(pos) + + +Node Sounds +----------- + +Farming Redo will detect wether the Default mod or MineClone/VoxeLibre mod is active and +store whichever sound set is available inside the following to save any other farming +mods from having to detect it themselves: + +farming.node_sound_defaults() +farming.node_sound_stone_defaults() +farming.node_sound_dirt_defaults() +farming.node_sound_sand_defaults() +farming.node_sound_gravel_defaults() +farming.node_sound_wood_defaults() +farming.node_sound_leaves_defaults() +farming.node_sound_ice_defaults() +farming.node_sound_metal_defaults() +farming.node_sound_water_defaults() +farming.node_sound_snow_defaults() +farming.node_sound_glass_defaults() diff --git a/mods/.farming_old/compatibility.lua b/mods/.farming_old/compatibility.lua new file mode 100644 index 00000000..6895326e --- /dev/null +++ b/mods/.farming_old/compatibility.lua @@ -0,0 +1,171 @@ + +local S = minetest.get_translator("farming") + +--= Helpers + +local eth = minetest.get_modpath("ethereal") +local alias = function(orig, new) + minetest.register_alias(orig, new) +end + +--= Add {eatable} group to default food items if found + +farming.add_eatable("default:apple", 2) +farming.add_eatable("default:blueberries", 1) +farming.add_eatable("flowers:mushroom_brown", 1) +farming.add_eatable("flowers:mushroom_red", -5) + +--= Aliases + +-- Banana + +if eth then + alias("farming_plus:banana_sapling", "ethereal:banana_tree_sapling") + alias("farming_plus:banana_leaves", "ethereal:bananaleaves") + alias("farming_plus:banana", "ethereal:banana") +else + minetest.register_node(":ethereal:banana", { + description = S("Banana"), + drawtype = "torchlike", + tiles = {"farming_banana_single.png"}, + inventory_image = "farming_banana_single.png", + wield_image = "farming_banana_single.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.2, -0.5, -0.2, 0.2, 0.2, 0.2} + }, + groups = { + food_banana = 1, fleshy = 3, dig_immediate = 3 + }, + is_ground_content = false, + on_use = minetest.item_eat(2), + sounds = farming.node_sound_leaves_defaults() + }) + + farming.add_eatable("ethereal:banana", 2) + + minetest.register_node(":ethereal:bananaleaves", { + description = S("Banana Leaves"), + tiles = {"ethereal_banana_leaf.png"}, + inventory_image = "ethereal_banana_leaf.png", + wield_image = "ethereal_banana_leaf.png", + paramtype = "light", + waving = 1, + groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() + }) + + alias("farming_plus:banana_sapling", "default:sapling") + alias("farming_plus:banana_leaves", "ethereal:bananaleaves") + alias("farming_plus:banana", "ethereal:banana") +end + +-- Carrot + +alias("farming_plus:carrot_seed", "farming:carrot") +alias("farming_plus:carrot_1", "farming:carrot_1") +alias("farming_plus:carrot_2", "farming:carrot_4") +alias("farming_plus:carrot_3", "farming:carrot_6") +alias("farming_plus:carrot", "farming:carrot_8") +alias("farming_plus:carrot_item", "farming:carrot") + +-- Cocoa + +alias("farming_plus:cocoa_sapling", "farming:cocoa_beans") +alias("farming_plus:cocoa_leaves", "default:leaves") +alias("farming_plus:cocoa", "default:apple") +alias("farming_plus:cocoa_bean", "farming:cocoa_beans") + +-- Orange + +alias("farming_plus:orange_1", "farming:tomato_1") +alias("farming_plus:orange_2", "farming:tomato_4") +alias("farming_plus:orange_3", "farming:tomato_6") + +if eth then + alias("farming_plus:orange_item", "ethereal:orange") + alias("farming_plus:orange", "ethereal:orange") + alias("farming_plus:orange_seed", "ethereal:orange_tree_sapling") +else + minetest.register_node(":ethereal:orange", { + description = S("Orange"), + drawtype = "plantlike", + tiles = {"farming_orange.png"}, + inventory_image = "farming_orange.png", + wield_image = "farming_orange.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.2, -0.3, -0.2, 0.2, 0.2, 0.2} + }, + groups = { + food_orange = 1, fleshy = 3, dig_immediate = 3, flammable = 2 + }, + is_ground_content = false, + on_use = minetest.item_eat(4), + sounds = farming.node_sound_leaves_defaults() + }) + + farming.add_eatable("ethereal:orange", 4) + + alias("farming_plus:orange_item", "ethereal:orange") + alias("farming_plus:orange", "ethereal:orange") + alias("farming_plus:orange_seed", "default:sapling") +end + +-- Potato + +alias("farming_plus:potato_item", "farming:potato") +alias("farming_plus:potato_1", "farming:potato_1") +alias("farming_plus:potato_2", "farming:potato_2") +alias("farming_plus:potato", "farming:potato_3") +alias("farming_plus:potato_seed", "farming:potato") + +-- Pumpkin + +alias("farming:pumpkin_seed", "farming:pumpkin_slice") +alias("farming:pumpkin_face", "farming:jackolantern") +alias("farming:pumpkin_face_light", "farming:jackolantern_on") +alias("farming:big_pumpkin", "farming:jackolantern") +alias("farming:big_pumpkin_side", "air") +alias("farming:big_pumpkin_top", "air") +alias("farming:big_pumpkin_corner", "air") +alias("farming:scarecrow", "farming:jackolantern") +alias("farming:scarecrow_light", "farming:jackolantern_on") +alias("farming:pumpkin_flour", "farming:pumpkin_dough") + +-- Rhubarb + +alias("farming_plus:rhubarb_seed", "farming:rhubarb") +alias("farming_plus:rhubarb_1", "farming:rhubarb_1") +alias("farming_plus:rhubarb_2", "farming:rhubarb_2") +alias("farming_plus:rhubarb", "farming:rhubarb_3") +alias("farming_plus:rhubarb_item", "farming:rhubarb") + +-- Strawberry + +alias("farming_plus:strawberry_item", "ethereal:strawberry") +alias("farming_plus:strawberry_seed", "ethereal:strawberry") +alias("farming_plus:strawberry_1", "ethereal:strawberry_1") +alias("farming_plus:strawberry_2", "ethereal:strawberry_3") +alias("farming_plus:strawberry_3", "ethereal:strawberry_5") +alias("farming_plus:strawberry", "ethereal:strawberry_7") + +-- Tomato + +alias("farming_plus:tomato_seed", "farming:tomato") +alias("farming_plus:tomato_item", "farming:tomato") +alias("farming_plus:tomato_1", "farming:tomato_2") +alias("farming_plus:tomato_2", "farming:tomato_4") +alias("farming_plus:tomato_3", "farming:tomato_6") +alias("farming_plus:tomato", "farming:tomato_8") + +-- Weeds + +alias("farming:weed", "default:grass_2") diff --git a/mods/.farming_old/crops/artichoke.lua b/mods/.farming_old/crops/artichoke.lua new file mode 100644 index 00000000..43e8d9dc --- /dev/null +++ b/mods/.farming_old/crops/artichoke.lua @@ -0,0 +1,84 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:artichoke", { + description = S("Artichoke"), + inventory_image = "farming_artichoke.png", + groups = {compostability = 48, seed = 2, food_artichoke = 1}, + on_use = minetest.item_eat(4), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:artichoke_1") + end +}) + +farming.add_eatable("farming:artichoke", 4) + +-- crop definition + +local def = { + description = S("Artichoke") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_artichoke_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:artichoke_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_artichoke_2.png"} +minetest.register_node("farming:artichoke_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_artichoke_3.png"} +minetest.register_node("farming:artichoke_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_artichoke_4.png"} +minetest.register_node("farming:artichoke_4", table.copy(def)) + +-- stage 5 (final) + +def.tiles = {"farming_artichoke_5.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:artichoke 2"}, rarity = 1}, + {items = {"farming:artichoke"}, rarity = 2} + } +} +minetest.register_node("farming:artichoke_5", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:artichoke"] = { + crop = "farming:artichoke", + seed = "farming:artichoke", + minlight = 13, + maxlight = 15, + steps = 5 +} + +-- mapgen +farming.register_decoration("artichoke",5) diff --git a/mods/.farming_old/crops/asparagus.lua b/mods/.farming_old/crops/asparagus.lua new file mode 100644 index 00000000..6f31f00d --- /dev/null +++ b/mods/.farming_old/crops/asparagus.lua @@ -0,0 +1,91 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:asparagus", { + description = S("Asparagus"), + inventory_image = "farming_asparagus.png", + groups = {compostability = 48, seed = 2, food_asparagus = 1}, + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:asparagus_1") + end +}) + +farming.add_eatable("farming:asparagus", 1) + +-- crop definition + +local def = { + description = S("Asparagus") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_asparagus_1.png"}, + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 3, + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:asparagus_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_asparagus_2.png"} +minetest.register_node("farming:asparagus_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_asparagus_3.png"} +minetest.register_node("farming:asparagus_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_asparagus_4.png"} +def.drop = { + items = { + {items = {"farming:asparagus"}, rarity = 2} + } +} +minetest.register_node("farming:asparagus_4", table.copy(def)) + +-- stage 5 (final) + +def.tiles = {"farming_asparagus_5.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:asparagus"}, rarity = 1}, + {items = {"farming:asparagus 2"}, rarity = 2} + } +} +minetest.register_node("farming:asparagus_5", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:asparagus"] = { + crop = "farming:asparagus", + seed = "farming:asparagus", + minlight = 7, + maxlight = farming.max_light, + steps = 5 +} + +-- mapgen +farming.register_decoration("asparagus",5) diff --git a/mods/.farming_old/crops/barley.lua b/mods/.farming_old/crops/barley.lua new file mode 100644 index 00000000..ca654565 --- /dev/null +++ b/mods/.farming_old/crops/barley.lua @@ -0,0 +1,135 @@ + +local S = minetest.get_translator("farming") + +-- seed + +minetest.register_node("farming:seed_barley", { + description = S("Barley Seed"), + tiles = {"farming_barley_seed.png"}, + inventory_image = "farming_barley_seed.png", + wield_image = "farming_barley_seed.png", + drawtype = "signlike", + groups = { + handy = 1, compostability = 48, seed = 1, snappy = 3, attached_node = 1, + growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + next_plant = "farming:barley_1", + selection_box = farming.select, + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_barley") + end, + + on_timer = function(pos, elapsed) + minetest.set_node(pos, {name = "farming:barley_1", param2 = 3}) + end +}) + +-- item + +minetest.register_craftitem("farming:barley", { + description = S("Barley"), + inventory_image = "farming_barley.png", + groups = {food_barley = 1, flammable = 2, compostability = 65} +}) + +-- crop definition + +local def = { + description = S("Barley") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_barley_1.png"}, + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 3, + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:barley_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_barley_2.png"} +minetest.register_node("farming:barley_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_barley_3.png"} +minetest.register_node("farming:barley_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_barley_4.png"} +minetest.register_node("farming:barley_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_barley_5.png"} +minetest.register_node("farming:barley_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_barley_6.png"} +def.drop = { + items = { + {items = {"farming:barley"}, rarity = 2}, + {items = {"farming:seed_barley"}, rarity = 2} + } +} +minetest.register_node("farming:barley_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"farming_barley_7.png"} +def.drop = { + items = { + {items = {"farming:barley"}, rarity = 2}, + {items = {"farming:seed_barley"}, rarity = 1} + } +} +minetest.register_node("farming:barley_7", table.copy(def)) + +-- stage 8 (final) + +def.tiles = {"farming_barley_8.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:barley"}, rarity = 1}, + {items = {"farming:barley"}, rarity = 3}, + {items = {"farming:seed_barley"}, rarity = 1}, + {items = {"farming:seed_barley"}, rarity = 3} + } +} +minetest.register_node("farming:barley_8", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:barley"] = { + crop = "farming:barley", + seed = "farming:seed_barley", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 8 +} diff --git a/mods/.farming_old/crops/beans.lua b/mods/.farming_old/crops/beans.lua new file mode 100644 index 00000000..78a1513b --- /dev/null +++ b/mods/.farming_old/crops/beans.lua @@ -0,0 +1,237 @@ + +-- All textures by (C) Auke Kok CC-BY-SA-3.0 + +local S = minetest.get_translator("farming") +local a = farming.recipe_items + +-- place beans helper + +local function place_beans(itemstack, placer, pointed_thing, plantname) + + local pt = pointed_thing + + -- check if pointing at a node + if not pt or pt.type ~= "node" then return end + + local under = minetest.get_node(pt.under) + + -- return if any of the nodes are not registered + if not minetest.registered_nodes[under.name] then return end + + -- am I right-clicking on something that has a custom on_place set? + -- thanks to Krock for helping with this issue :) + local def = minetest.registered_nodes[under.name] + + if placer and itemstack and def and def.on_rightclick then + return def.on_rightclick(pt.under, under, placer, itemstack, pt) + end + + -- is player planting crop? + local name = placer and placer:get_player_name() or "" + + -- check for protection + if minetest.is_protected(pt.under, name) then return end + + -- check if pointing at bean pole + if under.name ~= "farming:beanpole" then return end + + -- add the node and remove 1 item from the itemstack + minetest.set_node(pt.under, {name = plantname}) + + minetest.sound_play("default_place_node", {pos = pt.under, gain = 1.0}, true) + + if placer or not farming.is_creative(placer:get_player_name()) then + + itemstack:take_item() + + -- check for refill + if itemstack:get_count() == 0 then + + minetest.after(0.20, + farming.refill_plant, placer, "farming:beans", placer:get_wield_index()) + end + end + + return itemstack +end + +-- item/seed + +minetest.register_craftitem("farming:beans", { + description = S("Green Beans"), + inventory_image = "farming_beans.png", + groups = {compostability = 48, seed = 2, food_beans = 1}, + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + return place_beans(itemstack, placer, pointed_thing, "farming:beanpole_1") + end +}) + +farming.add_eatable("farming:beans", 1) + +-- beanpole + +minetest.register_node("farming:beanpole", { + description = S("Bean Pole (place on soil before planting beans)"), + drawtype = "plantlike", + tiles = {"farming_beanpole.png"}, + inventory_image = "farming_beanpole.png", + visual_scale = 1.90, + paramtype = "light", + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = "farming:beanpole", + selection_box = farming.select, + groups = {handy = 1, snappy = 3, flammable = 2, attached_node = 1}, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults(), + + on_place = function(itemstack, placer, pointed_thing) + + local pt = pointed_thing + + -- check if pointing at a node + if not pt or pt.type ~= "node" then return end + + local under = minetest.get_node(pt.under) + + -- return if any of the nodes are not registered + if not minetest.registered_nodes[under.name] then return end + + -- am I right-clicking on something that has a custom on_place set? + -- thanks to Krock for helping with this issue :) + local def = minetest.registered_nodes[under.name] + + if def and def.on_rightclick then + return def.on_rightclick(pt.under, under, placer, itemstack, pt) + end + + if minetest.is_protected(pt.above, placer:get_player_name()) then + return + end + + local nodename = under.name + + if minetest.get_item_group(nodename, "soil") < 2 then return end + + local top = { + x = pointed_thing.above.x, + y = pointed_thing.above.y + 1, + z = pointed_thing.above.z + } + + nodename = minetest.get_node(top).name + + if nodename ~= "air" then return end + + minetest.set_node(pointed_thing.above, {name = "farming:beanpole"}) + + if not farming.is_creative(placer:get_player_name()) then + itemstack:take_item() + end + + return itemstack + end +}) + +-- crop definition + +local def = { + description = S("Green Beans") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_beanpole_1.png"}, + visual_scale = 1.90, + paramtype = "light", + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = { + items = { + {items = {"farming:beanpole"}, rarity = 1} + } + }, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 3, not_in_creative_inventory = 1, + attached_node = 1, growing = 1, plant = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:beanpole_1", table.copy(def)) + +-- stage2 + +def.tiles = {"farming_beanpole_2.png"} +minetest.register_node("farming:beanpole_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_beanpole_3.png"} +minetest.register_node("farming:beanpole_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_beanpole_4.png"} +minetest.register_node("farming:beanpole_4", table.copy(def)) + +-- stage 5 (final) + +def.tiles = {"farming_beanpole_5.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:beanpole"}, rarity = 1}, + {items = {"farming:beans 3"}, rarity = 1}, + {items = {"farming:beans 2"}, rarity = 2}, + {items = {"farming:beans 2"}, rarity = 3} + } +} +minetest.register_node("farming:beanpole_5", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:beans"] = { + trellis = "farming:beanpole", + crop = "farming:beanpole", + seed = "farming:beans", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 5 +} + +-- wild green bean bush (this is what you find on the map) + +minetest.register_node("farming:beanbush", { + drawtype = "plantlike", + tiles = {"farming_beanbush.png"}, + paramtype = "light", + waving = 1, + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = { + items = { + {items = {"farming:beans 1"}, rarity = 1}, + {items = {"farming:beans 1"}, rarity = 2}, + {items = {"farming:beans 1"}, rarity = 3} + } + }, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + compostability = 35, not_in_creative_inventory = 1 + }, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +}) + +-- mapgen +farming.register_decoration("beans",5,"farming:beanbush") diff --git a/mods/.farming_old/crops/beetroot.lua b/mods/.farming_old/crops/beetroot.lua new file mode 100644 index 00000000..6804c29d --- /dev/null +++ b/mods/.farming_old/crops/beetroot.lua @@ -0,0 +1,87 @@ + +local S = minetest.get_translator("farming") +local a = farming.recipe_items + +-- item/seed + +minetest.register_craftitem("farming:beetroot", { + description = S("Beetroot"), + inventory_image = "farming_beetroot.png", + groups = {compostability = 48, seed = 2, food_beetroot = 1}, + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:beetroot_1") + end +}) + +farming.add_eatable("farming:beetroot", 1) + +-- crop definition + +local def = { + description = S("Beetroot") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_beetroot_1.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:beetroot_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_beetroot_2.png"} +minetest.register_node("farming:beetroot_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_beetroot_3.png"} +minetest.register_node("farming:beetroot_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_beetroot_4.png"} +minetest.register_node("farming:beetroot_4", table.copy(def)) + +-- stage 5 (final) + +def.tiles = {"farming_beetroot_5.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + max_items = 4, items = { + {items = {"farming:beetroot"}, rarity = 1}, + {items = {"farming:beetroot"}, rarity = 2}, + {items = {"farming:beetroot"}, rarity = 3}, + {items = {"farming:beetroot"}, rarity = 4} + } +} +minetest.register_node("farming:beetroot_5", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:beetroot"] = { + crop = "farming:beetroot", + seed = "farming:beetroot", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 5 +} + +-- mapgen +farming.register_decoration("beetroot",5) diff --git a/mods/.farming_old/crops/blackberry.lua b/mods/.farming_old/crops/blackberry.lua new file mode 100644 index 00000000..e9d63bd4 --- /dev/null +++ b/mods/.farming_old/crops/blackberry.lua @@ -0,0 +1,82 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:blackberry", { + description = S("Blackberries"), + inventory_image = "farming_blackberry.png", + groups = { + compostability = 48, seed = 2, food_blackberries = 1, food_blackberry = 1, + food_berry = 1 + }, + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:blackberry_1") + end +}) + +farming.add_eatable("farming:blackberry", 1) + +-- crop definition + +local def = { + description = S("Blackberry") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_blackberry_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:blackberry_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_blackberry_2.png"} +minetest.register_node("farming:blackberry_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_blackberry_3.png"} +minetest.register_node("farming:blackberry_3", table.copy(def)) + +-- stage 4 (final) + +def.tiles = {"farming_blackberry_4.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {'farming:blackberry 2'}, rarity = 1}, + {items = {'farming:blackberry'}, rarity = 2}, + {items = {'farming:blackberry'}, rarity = 3}, + } +} +minetest.register_node("farming:blackberry_4", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:blackberry"] = { + crop = "farming:blackberry", + seed = "farming:blackberry", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 4 +} + +-- mapgen +farming.register_decoration("blackberry",4) diff --git a/mods/.farming_old/crops/blueberry.lua b/mods/.farming_old/crops/blueberry.lua new file mode 100644 index 00000000..d37b0a0c --- /dev/null +++ b/mods/.farming_old/crops/blueberry.lua @@ -0,0 +1,81 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:blueberries", { + description = S("Wild Blueberries"), + inventory_image = "farming_blueberries.png", + groups = { + compostability = 48,seed = 2, food_blueberries = 1, food_blueberry = 1, + food_berry = 1 + }, + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:blueberry_1") + end +}) + +farming.add_eatable("farming:blueberries", 1) + +-- ctop definition +local def = { + description = S("Blueberry") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_blueberry_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:blueberry_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_blueberry_2.png"} +minetest.register_node("farming:blueberry_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_blueberry_3.png"} +minetest.register_node("farming:blueberry_3", table.copy(def)) + +-- stage 4 (final) + +def.tiles = {"farming_blueberry_4.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:blueberries 2"}, rarity = 1}, + {items = {"farming:blueberries"}, rarity = 2}, + {items = {"farming:blueberries"}, rarity = 3} + } +} +minetest.register_node("farming:blueberry_4", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:blueberries"] = { + crop = "farming:blueberry", + seed = "farming:blueberries", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 4 +} + +-- mapgen +farming.register_decoration("blueberry",4) diff --git a/mods/.farming_old/crops/cabbage.lua b/mods/.farming_old/crops/cabbage.lua new file mode 100644 index 00000000..1d24d853 --- /dev/null +++ b/mods/.farming_old/crops/cabbage.lua @@ -0,0 +1,89 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:cabbage", { + description = S("Cabbage"), + inventory_image = "farming_cabbage.png", + groups = {compostability = 48, seed = 2, food_cabbage = 1}, + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:cabbage_1") + end +}) + +farming.add_eatable("farming:cabbage", 1) + +-- crop definition + +local def = { + description = S("Cabbage") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_cabbage_1.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:cabbage_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_cabbage_2.png"} +minetest.register_node("farming:cabbage_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_cabbage_3.png"} +minetest.register_node("farming:cabbage_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_cabbage_4.png"} +minetest.register_node("farming:cabbage_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_cabbage_5.png"} +minetest.register_node("farming:cabbage_5", table.copy(def)) + +-- stage 6 (final) + +def.tiles = {"farming_cabbage_6.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + max_items = 2, items = { + {items = {"farming:cabbage 2"}, rarity = 1}, + {items = {"farming:cabbage 1"}, rarity = 2} + } +} +minetest.register_node("farming:cabbage_6", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:cabbage"] = { + crop = "farming:cabbage", + seed = "farming:cabbage", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 6 +} + +-- mapgen +farming.register_decoration("cabbage",6) diff --git a/mods/.farming_old/crops/carrot.lua b/mods/.farming_old/crops/carrot.lua new file mode 100644 index 00000000..6b1c65d2 --- /dev/null +++ b/mods/.farming_old/crops/carrot.lua @@ -0,0 +1,109 @@ + +-- Original textures from PixelBox texture pack +-- https://forum.minetest.net/viewtopic.php?id=4990 + +local S = minetest.get_translator("farming") +local a = farming.recipe_items + +-- item/seed + +minetest.register_craftitem("farming:carrot", { + description = S("Carrot"), + inventory_image = "farming_carrot.png", + groups = {compostability = 48, seed = 2, food_carrot = 1}, + on_use = minetest.item_eat(4), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:carrot_1") + end +}) + +farming.add_eatable("farming:carrot", 4) + +-- crop definition + +local def = { + description = S("Carrot") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_carrot_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:carrot_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_carrot_2.png"} +minetest.register_node("farming:carrot_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_carrot_3.png"} +minetest.register_node("farming:carrot_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_carrot_4.png"} +minetest.register_node("farming:carrot_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_carrot_5.png"} +minetest.register_node("farming:carrot_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_carrot_6.png"} +minetest.register_node("farming:carrot_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"farming_carrot_7.png"} +def.drop = { + items = { + {items = {"farming:carrot"}, rarity = 1}, + {items = {"farming:carrot 2"}, rarity = 3} + } +} +minetest.register_node("farming:carrot_7", table.copy(def)) + +-- stage 8 (final) + +def.tiles = {"farming_carrot_8.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:carrot 2"}, rarity = 1}, + {items = {"farming:carrot 3"}, rarity = 2} + } +} +minetest.register_node("farming:carrot_8", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:carrot"] = { + crop = "farming:carrot", + seed = "farming:carrot", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 8 +} + +-- mapgen +farming.register_decoration("carrot",8) diff --git a/mods/.farming_old/crops/chili.lua b/mods/.farming_old/crops/chili.lua new file mode 100644 index 00000000..a875fa94 --- /dev/null +++ b/mods/.farming_old/crops/chili.lua @@ -0,0 +1,100 @@ + +local S = minetest.get_translator("farming") +local a = farming.recipe_items + +-- item/seed + +minetest.register_craftitem("farming:chili_pepper", { + description = S("Chili Pepper"), + inventory_image = "farming_chili_pepper.png", + groups = {compostability = 48, seed = 2, food_chili_pepper = 1}, + on_use = minetest.item_eat(2), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:chili_1") + end +}) + +farming.add_eatable("farming:chili_pepper", 2) + +-- crop definition + +local def = { + description = S("Chili Pepper") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_chili_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 4, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:chili_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_chili_2.png"} +minetest.register_node("farming:chili_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_chili_3.png"} +minetest.register_node("farming:chili_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_chili_4.png"} +minetest.register_node("farming:chili_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_chili_5.png"} +minetest.register_node("farming:chili_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_chili_6.png"} +minetest.register_node("farming:chili_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"farming_chili_7.png"} +minetest.register_node("farming:chili_7", table.copy(def)) + +-- stage 8 (final) + +def.tiles = {"farming_chili_8.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:chili_pepper 3"}, rarity = 1}, + {items = {"farming:chili_pepper 2"}, rarity = 2} + } +} +minetest.register_node("farming:chili_8", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:chili_pepper"] = { + crop = "farming:chili", + seed = "farming:chili_pepper", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 8 +} + +-- mapgen +farming.register_decoration("chili",8) diff --git a/mods/.farming_old/crops/cocoa.lua b/mods/.farming_old/crops/cocoa.lua new file mode 100644 index 00000000..ee1cfce4 --- /dev/null +++ b/mods/.farming_old/crops/cocoa.lua @@ -0,0 +1,186 @@ + +local S = minetest.get_translator("farming") + +-- place cocoa +local function place_cocoa(itemstack, placer, pointed_thing, plantname) + + local pt = pointed_thing + + -- check if pointing at a node + if not pt or pt.type ~= "node" then return end + + local under = minetest.get_node(pt.under) + + -- return if any of the nodes are not registered + if not minetest.registered_nodes[under.name] then return end + + -- am I right-clicking on something that has a custom on_place set? + -- thanks to Krock for helping with this issue :) + local def = minetest.registered_nodes[under.name] + + if placer and itemstack and def and def.on_rightclick then + return def.on_rightclick(pt.under, under, placer, itemstack, pt) + end + + -- check if pointing at jungletree + if (under.name ~= "default:jungletree" and under.name ~= "mcl_core:jungletree") + or minetest.get_node(pt.above).name ~= "air" then + return + end + + -- is player planting crop? + local name = placer and placer:get_player_name() or "" + + -- check for protection + if minetest.is_protected(pt.above, name) then return end + + -- add the node and remove 1 item from the itemstack + minetest.set_node(pt.above, {name = plantname}) + + minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0}, true) + + if placer and not farming.is_creative(placer:get_player_name()) then + + itemstack:take_item() + + -- check for refill + if itemstack:get_count() == 0 then + + minetest.after(0.20, farming.refill_plant, placer, + "farming:cocoa_beans_raw", placer:get_wield_index()) + end + end + + return itemstack +end + +-- item/seed + +minetest.register_craftitem("farming:cocoa_beans_raw", { + description = S("Raw Cocoa Beans"), + inventory_image = "farming_cocoa_beans.png^[brighten", + groups = {compostability = 48, seed = 1, flammable = 2}, + + on_place = function(itemstack, placer, pointed_thing) + return place_cocoa(itemstack, placer, pointed_thing, "farming:cocoa_1") + end +}) + +-- crop definition + +local def = { + description = S("Cocoa Beans") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_cocoa_1.png"}, + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} + }, + drop = {}, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, growing = 1, + not_in_creative_inventory = 1, leafdecay = 1, leafdecay_drop = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults(), + + -- custom function that returns True when conditions are met + growth_check = function(pos, node_name) + + if minetest.find_node_near(pos, 1, + {"default:jungletree", "mcl_core:jungletree"}) then + return true -- place next growth stage + end + + return false -- condition not met, skip growth stage until next check + end +} + +-- stage 1 + +minetest.register_node("farming:cocoa_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_cocoa_2.png"} +minetest.register_node("farming:cocoa_2", table.copy(def)) + +-- stage3 + +def.tiles = {"farming_cocoa_3.png"} +def.drop = { + items = { + {items = {"farming:cocoa_beans_raw 1"}, rarity = 1} + } +} +minetest.register_node("farming:cocoa_3", table.copy(def)) + +-- stage 4 (final) + +def.tiles = {"farming_cocoa_4.png"} +def.groups.growing = nil +def.growth_check = nil +def.drop = { + items = { + {items = {"farming:cocoa_beans_raw 2"}, rarity = 1}, + {items = {"farming:cocoa_beans_raw 1"}, rarity = 2}, + {items = {"farming:cocoa_beans_raw 1"}, rarity = 4} + } +} +minetest.register_node("farming:cocoa_4", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:cocoa_beans"] = { + trellis = "default:jungletree", + crop = "farming:cocoa", + seed = "farming:cocoa_beans_raw", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 4 +} + +-- add random cocoa pods to jungle tree's + +local random = math.random -- localise for speed + +minetest.register_on_generated(function(minp, maxp) + + if maxp.y < 0 then return end + + local pos, dir + local cocoa = minetest.find_nodes_in_area(minp, maxp, + {"default:jungletree", "mcl_core:jungletree"}) + + for n = 1, #cocoa do + + pos = cocoa[n] + + if minetest.find_node_near(pos, 1, + {"default:jungleleaves", "moretrees:jungletree_leaves_green", + "mcl_core:jungleleaves"}) then + + dir = random(80) + + if dir == 1 then pos.x = pos.x + 1 + elseif dir == 2 then pos.x = pos.x - 1 + elseif dir == 3 then pos.z = pos.z + 1 + elseif dir == 4 then pos.z = pos.z - 1 + end + + if dir < 5 + and minetest.get_node(pos).name == "air" + and minetest.get_node_light(pos) > 12 then + +--print ("Cocoa Pod added at " .. minetest.pos_to_string(pos)) + + minetest.set_node(pos, { + name = "farming:cocoa_" .. tostring(random(4)) + }) + end + end + end +end) diff --git a/mods/.farming_old/crops/coffee.lua b/mods/.farming_old/crops/coffee.lua new file mode 100644 index 00000000..6b9f024b --- /dev/null +++ b/mods/.farming_old/crops/coffee.lua @@ -0,0 +1,107 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:coffee_beans", { + description = S("Coffee Beans"), + inventory_image = "farming_coffee_beans.png", + groups = {compostability = 48, seed = 2, food_coffee = 1, flammable = 2}, + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:coffee_1") + end +}) + +-- crop definition + +local def = { + description = S("Coffee") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_coffee_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:coffee_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_coffee_2.png"} +minetest.register_node("farming:coffee_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_coffee_3.png"} +minetest.register_node("farming:coffee_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_coffee_4.png"} +minetest.register_node("farming:coffee_4", table.copy(def)) + +-- stage 5 (final) + +def.tiles = {"farming_coffee_5.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:coffee_beans 2"}, rarity = 1}, + {items = {"farming:coffee_beans 2"}, rarity = 2}, + {items = {"farming:coffee_beans 2"}, rarity = 3} + } +} +minetest.register_node("farming:coffee_5", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:coffee"] = { + crop = "farming:coffee", + seed = "farming:coffee_beans", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 5 +} + +-- mapgen + +local spawn_on = { + "default:dirt_with_dry_grass", "default:dirt_with_rainforest_litter", + "default:dry_dirt_with_dry_grass", "mcl_core:dirt_with_grass", + "ethereal:prairie_dirt" +} + +if farming.mapgen == "v6" then + spawn_on = {"default:dirt_with_grass"} +end + +minetest.register_decoration({ + deco_type = "simple", + place_on = spawn_on, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.coffee, + spread = {x = 100, y = 100, z = 100}, + seed = 12, + octaves = 3, + persist = 0.6 + }, + y_min = 20, y_max = 55, + decoration = "farming:coffee_5" +}) diff --git a/mods/.farming_old/crops/corn.lua b/mods/.farming_old/crops/corn.lua new file mode 100644 index 00000000..7dcbbb24 --- /dev/null +++ b/mods/.farming_old/crops/corn.lua @@ -0,0 +1,130 @@ + +--[[ + Original textures from GeMinecraft + http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/wip-mods/1440575-1-2-5-generation-minecraft-beta-1-2-farming-and +]] + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:corn", { + description = S("Corn"), + inventory_image = "farming_corn.png", + groups = {compostability = 45, seed = 2, food_corn = 1}, + on_use = minetest.item_eat(3), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:corn_1") + end +}) + +farming.add_eatable("farming:corn", 3) + +-- crop definition + +local def = { + description = S("Corn") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_corn_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:corn_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_corn_2.png"} +minetest.register_node("farming:corn_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_corn_3.png"} +minetest.register_node("farming:corn_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_corn_4.png"} +minetest.register_node("farming:corn_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_corn_5.png"} +minetest.register_node("farming:corn_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_corn_6.png"} +def.visual_scale = 1.9 +minetest.register_node("farming:corn_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"farming_corn_7.png"} +def.drop = { + items = { + {items = {"farming:corn"}, rarity = 1}, + {items = {"farming:corn"}, rarity = 2}, + {items = {"farming:corn"}, rarity = 3} + } +} +minetest.register_node("farming:corn_7", table.copy(def)) + +-- stage 8 (final) + +def.tiles = {"farming_corn_8.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:corn 2"}, rarity = 1}, + {items = {"farming:corn 2"}, rarity = 2}, + {items = {"farming:corn 2"}, rarity = 2} + } +} +minetest.register_node("farming:corn_8", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:corn"] = { + crop = "farming:corn", + seed = "farming:corn", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 8 +} + +-- mapgen + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.corn, + spread = {x = 100, y = 100, z = 100}, + seed = 134, + octaves = 3, + persist = 0.6 + }, + y_min = 12, y_max = 27, + decoration = "farming:corn_7" +}) diff --git a/mods/.farming_old/crops/cotton.lua b/mods/.farming_old/crops/cotton.lua new file mode 100644 index 00000000..13e170fa --- /dev/null +++ b/mods/.farming_old/crops/cotton.lua @@ -0,0 +1,174 @@ + +local S = minetest.get_translator("farming") + +-- seed + +minetest.register_node("farming:seed_cotton", { + description = S("Cotton Seed"), + tiles = {"farming_cotton_seed.png"}, + inventory_image = "farming_cotton_seed.png", + wield_image = "farming_cotton_seed.png", + drawtype = "signlike", + groups = { + compostability = 48, seed = 1, snappy = 3, attached_node = 1, + flammable = 4, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + next_plant = "farming:cotton_1", + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_cotton") + end, + + on_timer = function(pos, elapsed) + minetest.set_node(pos, {name = "farming:cotton_1", param2 = 1}) + end +}) + +-- item + +minetest.register_craftitem("farming:cotton", { + description = S("Cotton"), + inventory_image = "farming_cotton.png", + groups = {flammable = 4, compostability = 50} +}) + +-- crop definition + +local def = { + description = S("Cotton") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_cotton_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 4, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:cotton_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_cotton_2.png"} +minetest.register_node("farming:cotton_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_cotton_3.png"} +minetest.register_node("farming:cotton_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_cotton_4.png"} +minetest.register_node("farming:cotton_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_cotton_5.png"} +def.drop = { + items = { + {items = {"farming:seed_cotton"}, rarity = 1} + } +} +minetest.register_node("farming:cotton_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_cotton_6.png"} +def.drop = { + items = { + {items = {"farming:cotton"}, rarity = 1}, + {items = {"farming:cotton"}, rarity = 2} + } +} +minetest.register_node("farming:cotton_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"farming_cotton_7.png"} +def.drop = { + items = { + {items = {"farming:cotton"}, rarity = 1}, + {items = {"farming:cotton"}, rarity = 2}, + {items = {"farming:seed_cotton"}, rarity = 1}, + {items = {"farming:seed_cotton"}, rarity = 2} + } +} +minetest.register_node("farming:cotton_7", table.copy(def)) + +-- stage 8 (final) + +def.tiles = {"farming_cotton_8.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:cotton"}, rarity = 1}, + {items = {"farming:cotton"}, rarity = 2}, + {items = {"farming:cotton"}, rarity = 3}, + {items = {"farming:seed_cotton"}, rarity = 1}, + {items = {"farming:seed_cotton"}, rarity = 2}, + {items = {"farming:seed_cotton"}, rarity = 3} + } +} +minetest.register_node("farming:cotton_8", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:cotton"] = { + crop = "farming:cotton", + seed = "farming:seed_cotton", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 8 +} + +-- wild cotton (this is what you find on the map) + +minetest.register_node("farming:cotton_wild", { + description = S("Wild Cotton"), + drawtype = "plantlike", + waving = 1, + tiles = {"farming_cotton_wild.png"}, + inventory_image = "farming_cotton_wild.png", + wield_image = "farming_cotton_wild.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + groups = {handy = 1, snappy = 3, attached_node = 1, flammable = 4, compostability = 60}, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + drop = { + items = { + {items = {"farming:cotton"}, rarity = 2}, + {items = {"farming:seed_cotton"}, rarity = 1} + } + }, + sounds = farming.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-6 / 16, -8 / 16, -6 / 16, 6 / 16, 5 / 16, 6 / 16} + } +}) + +-- mapgen +farming.register_decoration("cotton",8) diff --git a/mods/.farming_old/crops/cucumber.lua b/mods/.farming_old/crops/cucumber.lua new file mode 100644 index 00000000..d37ec42f --- /dev/null +++ b/mods/.farming_old/crops/cucumber.lua @@ -0,0 +1,82 @@ + +--[[ + Original textures from DocFarming mod + https://forum.minetest.net/viewtopic.php?id=3948 +]] + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:cucumber", { + description = S("Cucumber"), + inventory_image = "farming_cucumber.png", + groups = {compostability = 48, seed = 2, food_cucumber = 1}, + on_use = minetest.item_eat(4), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:cucumber_1") + end +}) + +farming.add_eatable("farming:cucumber", 4) + +-- crop definition + +local def = { + description = S("Cucumber") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_cucumber_1.png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:cucumber_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_cucumber_2.png"} +minetest.register_node("farming:cucumber_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_cucumber_3.png"} +minetest.register_node("farming:cucumber_3", table.copy(def)) + +-- stage 4 (final) + +def.tiles = {"farming_cucumber_4.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:cucumber 2"}, rarity = 1}, + {items = {"farming:cucumber 2"}, rarity = 2} + } +} +minetest.register_node("farming:cucumber_4", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:cucumber"] = { + crop = "farming:cucumber", + seed = "farming:cucumber", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 4 +} + +-- mapgen +farming.register_decoration("cucumber",4) diff --git a/mods/.farming_old/crops/eggplant.lua b/mods/.farming_old/crops/eggplant.lua new file mode 100644 index 00000000..6e60259f --- /dev/null +++ b/mods/.farming_old/crops/eggplant.lua @@ -0,0 +1,86 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:eggplant", { + description = S("Eggplant"), + inventory_image = "farming_eggplant.png", + groups = {compostability = 48, seed = 2, food_eggplant = 1}, + on_use = minetest.item_eat(3), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:eggplant_1") + end +}) + +farming.add_eatable("farming:eggplant", 3) + +-- crop definition + +local def = { + description = S("Eggplant") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_eggplant_1.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:eggplant_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_eggplant_2.png"} +minetest.register_node("farming:eggplant_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_eggplant_3.png"} +def.drop = { + items = { + {items = {"farming:eggplant"}, rarity = 1}, + {items = {"farming:eggplant"}, rarity = 3} + } +} +minetest.register_node("farming:eggplant_3", table.copy(def)) + +-- stage 4 (final) + +def.tiles = {"farming_eggplant_4.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:eggplant 2"}, rarity = 1}, + {items = {"farming:eggplant 2"}, rarity = 2} + } +} +minetest.register_node("farming:eggplant_4", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:eggplant"] = { + crop = "farming:eggplant", + seed = "farming:eggplant", + minlight = 7, + maxlight = farming.max_light, + steps = 4 +} + +-- mapgen +farming.register_decoration("eggplant",4) diff --git a/mods/.farming_old/crops/garlic.lua b/mods/.farming_old/crops/garlic.lua new file mode 100644 index 00000000..58af259c --- /dev/null +++ b/mods/.farming_old/crops/garlic.lua @@ -0,0 +1,84 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:garlic_clove", { + description = S("Garlic clove"), + inventory_image = "crops_garlic_clove.png", + groups = {compostability = 35, seed = 2, food_garlic_clove = 1, flammable = 3}, + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:garlic_1") + end +}) + +-- crop definition + +local def = { + description = S("Garlic") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"crops_garlic_plant_1.png"}, + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 3, + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:garlic_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"crops_garlic_plant_2.png"} +minetest.register_node("farming:garlic_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"crops_garlic_plant_3.png"} +minetest.register_node("farming:garlic_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"crops_garlic_plant_4.png"} +minetest.register_node("farming:garlic_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"crops_garlic_plant_5.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:garlic 3"}, rarity = 1}, + {items = {"farming:garlic"}, rarity = 2}, + {items = {"farming:garlic"}, rarity = 5} + } +} +minetest.register_node("farming:garlic_5", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:garlic"] = { + crop = "farming:garlic", + seed = "farming:garlic_clove", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 5 +} + +-- mapgen +farming.register_decoration("garlic",5) diff --git a/mods/.farming_old/crops/ginger.lua b/mods/.farming_old/crops/ginger.lua new file mode 100644 index 00000000..dfab19a3 --- /dev/null +++ b/mods/.farming_old/crops/ginger.lua @@ -0,0 +1,85 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:ginger", { + description = S("Ginger"), + inventory_image = "farming_ginger.png", + groups = {compostability = 48, seed = 2, food_ginger = 1}, + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:ginger_1") + end +}) + +farming.add_eatable("farming:ginger", 1) + +-- crop definition + +local def = { + description = S("Ginger") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_ginger_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:ginger_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_ginger_2.png"} +minetest.register_node("farming:ginger_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_ginger_3.png"} +def.drop = { + items = { + {items = {"farming:ginger"}, rarity = 1}, + {items = {"farming:ginger"}, rarity = 3} + } +} +minetest.register_node("farming:ginger_3", table.copy(def)) + +-- stage 4 (final) + +def.tiles = {"farming_ginger_4.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:ginger 2"}, rarity = 1}, + {items = {"farming:ginger 2"}, rarity = 2} + } +} +minetest.register_node("farming:ginger_4", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:ginger"] = { + crop = "farming:ginger", + seed = "farming:ginger", + minlight = 5, + maxlight = minetest.LIGHT_MAX, + steps = 4 +} + +-- mapgen +farming.register_decoration("ginger",5) diff --git a/mods/.farming_old/crops/grapes.lua b/mods/.farming_old/crops/grapes.lua new file mode 100644 index 00000000..f94b1439 --- /dev/null +++ b/mods/.farming_old/crops/grapes.lua @@ -0,0 +1,250 @@ + +local S = minetest.get_translator("farming") + +-- place trellis helper + +local function place_grapes(itemstack, placer, pointed_thing, plantname) + + local pt = pointed_thing + + -- check if pointing at a node + if not pt or pt.type ~= "node" then return end + + local under = minetest.get_node(pt.under) + + -- return if any of the nodes are not registered + if not minetest.registered_nodes[under.name] then return end + + -- am I right-clicking on something that has a custom on_place set? + -- thanks to Krock for helping with this issue :) + local def = minetest.registered_nodes[under.name] + + if placer and itemstack and def and def.on_rightclick then + return def.on_rightclick(pt.under, under, placer, itemstack, pt) + end + + -- is player planting seed? + local name = placer and placer:get_player_name() or "" + + -- check for protection + if minetest.is_protected(pt.under, name) then return end + + -- check if pointing at trellis + if under.name ~= "farming:trellis" then return end + + -- add the node and remove 1 item from the itemstack + minetest.set_node(pt.under, {name = plantname}) + + minetest.sound_play("default_place_node", {pos = pt.under, gain = 1.0}, true) + + if placer and not farming.is_creative(placer:get_player_name()) then + + itemstack:take_item() + + -- check for refill + if itemstack:get_count() == 0 then + + minetest.after(0.20, farming.refill_plant, placer, + "farming:grapes", placer:get_wield_index() + ) + end + end + + return itemstack +end + +-- item/seed + +minetest.register_craftitem("farming:grapes", { + description = S("Grapes"), + inventory_image = "farming_grapes.png", + groups = {compostability = 48, seed = 2, food_grapes = 1}, + on_use = minetest.item_eat(2), + + on_place = function(itemstack, placer, pointed_thing) + return place_grapes(itemstack, placer, pointed_thing, "farming:grapes_1") + end +}) + +farming.add_eatable("farming:grapes", 2) + +-- trellis + +minetest.register_node("farming:trellis", { + description = S("Trellis (place on soil before planting grapes)"), + drawtype = "plantlike", + tiles = {"farming_trellis.png"}, + inventory_image = "farming_trellis.png", + visual_scale = 1.9, + paramtype = "light", + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = "farming:trellis", + selection_box = farming.select, + groups = {handy = 1, snappy = 3, flammable = 2, attached_node = 1}, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults(), + + on_place = function(itemstack, placer, pointed_thing) + + local pt = pointed_thing + + -- check if pointing at a node + if not pt or pt.type ~= "node" then return end + + local under = minetest.get_node(pt.under) + + -- return if any of the nodes are not registered + if not minetest.registered_nodes[under.name] then return end + + -- am I right-clicking on something that has a custom on_place set? + -- thanks to Krock for helping with this issue :) + local def = minetest.registered_nodes[under.name] + + if def and def.on_rightclick then + return def.on_rightclick(pt.under, under, placer, itemstack, pt) + end + + if minetest.is_protected(pt.above, placer:get_player_name()) then + return + end + + local nodename = under.name + + if minetest.get_item_group(nodename, "soil") < 2 then return end + + local top = { + x = pointed_thing.above.x, + y = pointed_thing.above.y + 1, + z = pointed_thing.above.z + } + + nodename = minetest.get_node(top).name + + if nodename ~= "air" then return end + + minetest.set_node(pointed_thing.above, {name = "farming:trellis"}) + + if not farming.is_creative(placer:get_player_name()) then + itemstack:take_item() + end + + return itemstack + end +}) + +-- crop definition + +local def = { + description = S("Grapes") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_grapes_1.png"}, + visual_scale = 1.9, + paramtype = "light", + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = { + items = { + {items = {"farming:trellis"}, rarity = 1}, + } + }, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 3, not_in_creative_inventory = 1, + attached_node = 1, growing = 1, plant = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:grapes_1", table.copy(def)) + +-- stage2 + +def.tiles = {"farming_grapes_2.png"} +minetest.register_node("farming:grapes_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_grapes_3.png"} +minetest.register_node("farming:grapes_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_grapes_4.png"} +minetest.register_node("farming:grapes_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_grapes_5.png"} +minetest.register_node("farming:grapes_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_grapes_6.png"} +minetest.register_node("farming:grapes_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"farming_grapes_7.png"} +minetest.register_node("farming:grapes_7", table.copy(def)) + +-- stage 8 (final) + +def.tiles = {"farming_grapes_8.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:trellis"}, rarity = 1}, + {items = {"farming:grapes 3"}, rarity = 1}, + {items = {"farming:grapes 1"}, rarity = 2}, + {items = {"farming:grapes 1"}, rarity = 3} + } +} +minetest.register_node("farming:grapes_8", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:grapes"] = { + trellis = "farming:trellis", + crop = "farming:grapes", + seed = "farming:grapes", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 8 +} + +-- wild grape vine (this is what you find on the map) + +minetest.register_node("farming:grapebush", { + drawtype = "plantlike", + tiles = {"farming_grapebush.png"}, + paramtype = "light", + waving = 1, + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = { + items = { + {items = {"farming:grapes 1"}, rarity = 1}, + {items = {"farming:grapes 1"}, rarity = 2}, + {items = {"farming:grapes 1"}, rarity = 3} + } + }, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, compostability = 35 + }, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +}) + +-- mapgen +farming.register_decoration("grapes",8,"farming:grapebush") diff --git a/mods/.farming_old/crops/hemp.lua b/mods/.farming_old/crops/hemp.lua new file mode 100644 index 00000000..1ab9c998 --- /dev/null +++ b/mods/.farming_old/crops/hemp.lua @@ -0,0 +1,138 @@ + +local S = minetest.get_translator("farming") + +-- seed + +minetest.register_node("farming:seed_hemp", { + description = S("Hemp Seed"), + tiles = {"farming_hemp_seed.png"}, + inventory_image = "farming_hemp_seed.png", + wield_image = "farming_hemp_seed.png", + drawtype = "signlike", + groups = { + handy = 1, compostability = 38, seed = 1, snappy = 3, attached_node = 1, + growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + next_plant = "farming:hemp_1", + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_hemp") + end, + + on_timer = function(pos, elapsed) + minetest.set_node(pos, {name = "farming:hemp_1", param2 = 1}) + end +}) + +-- item + +minetest.register_craftitem("farming:hemp_leaf", { + description = S("Hemp Leaf"), + inventory_image = "farming_hemp_leaf.png", + groups = {compostability = 35} +}) + +-- crop definition + +local def = { + description = S("Hemp") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_hemp_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:hemp_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_hemp_2.png"} +minetest.register_node("farming:hemp_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_hemp_3.png"} +minetest.register_node("farming:hemp_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_hemp_4.png"} +minetest.register_node("farming:hemp_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_hemp_5.png"} +minetest.register_node("farming:hemp_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_hemp_6.png"} +def.drop = { + items = { + {items = {"farming:hemp_leaf"}, rarity = 2}, + {items = {"farming:seed_hemp"}, rarity = 1} + } +} +minetest.register_node("farming:hemp_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"farming_hemp_7.png"} +def.drop = { + items = { + {items = {"farming:hemp_leaf"}, rarity = 1}, + {items = {"farming:hemp_leaf"}, rarity = 3}, + {items = {"farming:seed_hemp"}, rarity = 1}, + {items = {"farming:seed_hemp"}, rarity = 3} + } +} +minetest.register_node("farming:hemp_7", table.copy(def)) + +-- stage 8 (final) + +def.tiles = {"farming_hemp_8.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:hemp_leaf 2"}, rarity = 1}, + {items = {"farming:hemp_leaf"}, rarity = 2}, + {items = {"farming:seed_hemp"}, rarity = 1}, + {items = {"farming:seed_hemp"}, rarity = 2} + } +} +minetest.register_node("farming:hemp_8", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:hemp"] = { + crop = "farming:hemp", + seed = "farming:seed_hemp", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 8 +} + +-- mapgen +farming.register_decoration("hemp",7) diff --git a/mods/.farming_old/crops/lettuce.lua b/mods/.farming_old/crops/lettuce.lua new file mode 100644 index 00000000..f0ff998c --- /dev/null +++ b/mods/.farming_old/crops/lettuce.lua @@ -0,0 +1,83 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:lettuce", { + description = S("Lettuce"), + inventory_image = "farming_lettuce.png", + groups = {compostability = 48, seed = 2, food_lettuce = 1}, + on_use = minetest.item_eat(2), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:lettuce_1") + end +}) + +farming.add_eatable("farming:lettuce", 2) + +-- crop definition + +local def = { + description = S("Lettuce") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_lettuce_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:lettuce_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_lettuce_2.png"} +minetest.register_node("farming:lettuce_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_lettuce_3.png"} +minetest.register_node("farming:lettuce_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_lettuce_4.png"} +minetest.register_node("farming:lettuce_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_lettuce_5.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:lettuce 2"}, rarity = 1}, + {items = {"farming:lettuce 1"}, rarity = 2} + } +} +minetest.register_node("farming:lettuce_5", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:lettuce"] = { + crop = "farming:lettuce", + seed = "farming:lettuce", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 5 +} + +-- mapgen +farming.register_decoration("lettuce",5) diff --git a/mods/.farming_old/crops/melon.lua b/mods/.farming_old/crops/melon.lua new file mode 100644 index 00000000..c21e40d2 --- /dev/null +++ b/mods/.farming_old/crops/melon.lua @@ -0,0 +1,108 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:melon_slice", { + description = S("Melon Slice"), + inventory_image = "farming_melon_slice.png", + groups = {compostability = 48, seed = 2, food_melon_slice = 1}, + on_use = minetest.item_eat(2), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:melon_1") + end +}) + +farming.add_eatable("farming:melon_slice", 2) + +-- crop definition + +local def = { + description = S("Melon") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_melon_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:melon_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_melon_2.png"} +minetest.register_node("farming:melon_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_melon_3.png"} +minetest.register_node("farming:melon_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_melon_4.png"} +minetest.register_node("farming:melon_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_melon_5.png"} +minetest.register_node("farming:melon_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_melon_6.png"} +minetest.register_node("farming:melon_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"farming_melon_7.png"} +minetest.register_node("farming:melon_7", table.copy(def)) + +-- stage 8 (final) + +minetest.register_node("farming:melon_8", { + description = S("Melon"), + tiles = { + "farming_melon_top.png", + "farming_melon_bottom.png", + "farming_melon_side.png" + }, + groups = { + food_melon = 1, handy = 1, snappy = 3, choppy = 3, oddly_breakable_by_hand = 2, + flammable = 2, plant = 1, compostability = 65 + }, + is_ground_content = false, + drop = "farming:melon_8", + sounds = farming.node_sound_wood_defaults(), + paramtype2 = "facedir", + on_place = minetest.rotate_node, + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 +}) + +-- add to registered_plants + +farming.registered_plants["farming:melon"] = { + crop = "farming:melon", + seed = "farming:melon_slice", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 8 +} + +-- mapgen + +farming.register_decoration("melon",8) diff --git a/mods/.farming_old/crops/mint.lua b/mods/.farming_old/crops/mint.lua new file mode 100644 index 00000000..ac875946 --- /dev/null +++ b/mods/.farming_old/crops/mint.lua @@ -0,0 +1,103 @@ + +local S = minetest.get_translator("farming") + +-- seed + +minetest.register_node("farming:seed_mint", { + description = S("Mint Seeds"), + tiles = {"farming_mint_seeds.png"}, + inventory_image = "farming_mint_seeds.png", + wield_image = "farming_mint_seeds.png", + drawtype = "signlike", + groups = { + compostability = 48, seed = 1, snappy = 3, attached_node = 1, growing = 1, + handy = 1, flammable = 2 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + next_plant = "farming:mint_1", + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_mint") + end, + + on_timer = function(pos, elapsed) + minetest.set_node(pos, {name = "farming:mint_1", param2 = 1}) + end +}) + +-- item + +minetest.register_craftitem("farming:mint_leaf", { + description = S("Mint Leaf"), + inventory_image = "farming_mint_leaf.png", + groups = {food_mint = 1, flammable = 4, compostability = 48} +}) + +-- crop definition + +local def = { + description = S("Mint") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_mint_1.png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:mint_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_mint_2.png"} +minetest.register_node("farming:mint_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_mint_3.png"} +minetest.register_node("farming:mint_3", table.copy(def)) + +-- stage 4 (final) + +def.tiles = {"farming_mint_4.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:mint_leaf 2"}, rarity = 1}, + {items = {"farming:mint_leaf 2"}, rarity = 2}, + {items = {"farming:seed_mint 1"}, rarity = 1}, + {items = {"farming:seed_mint 2"}, rarity = 2} + } +} +minetest.register_node("farming:mint_4", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:mint"] = { + crop = "farming:mint", + seed = "farming:seed_mint", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 4 +} + +-- mapgen +farming.register_decoration("mint",4) diff --git a/mods/.farming_old/crops/onion.lua b/mods/.farming_old/crops/onion.lua new file mode 100644 index 00000000..7473464e --- /dev/null +++ b/mods/.farming_old/crops/onion.lua @@ -0,0 +1,96 @@ + +--[[ + Original textures from Crops Plus mod + Copyright (C) 2018 Grizzly Adam + https://forum.minetest.net/viewtopic.php?f=9&t=19488 +]] + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:onion", { + description = S("Onion"), + inventory_image = "crops_onion.png", + groups = {compostability = 48, seed = 2, food_onion = 1}, + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:onion_1") + end +}) + +farming.add_eatable("farming:onion", 1) + +-- crop definition + +local def = { + description = S("Onion") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"crops_onion_plant_1.png"}, + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 3, + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:onion_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"crops_onion_plant_2.png"} +minetest.register_node("farming:onion_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"crops_onion_plant_3.png"} +minetest.register_node("farming:onion_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"crops_onion_plant_4.png"} +minetest.register_node("farming:onion_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"crops_onion_plant_5.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + max_items = 5, items = { + {items = {"farming:onion"}, rarity = 1}, + {items = {"farming:onion"}, rarity = 1}, + {items = {"farming:onion"}, rarity = 2}, + {items = {"farming:onion"}, rarity = 2}, + {items = {"farming:onion"}, rarity = 5} + } +} +minetest.register_node("farming:onion_5", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:onion"] = { + crop = "farming:onion", + seed = "farming:onion", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 5 +} + +-- mapgen +farming.register_decoration("onion",5) diff --git a/mods/.farming_old/crops/parsley.lua b/mods/.farming_old/crops/parsley.lua new file mode 100644 index 00000000..6c7a2d16 --- /dev/null +++ b/mods/.farming_old/crops/parsley.lua @@ -0,0 +1,75 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:parsley", { + description = S("Parsley"), + inventory_image = "farming_parsley.png", + groups = {compostability = 48, seed = 2, food_parsley = 1}, + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:parsley_1") + end +}) + +farming.add_eatable("farming:parsley", 1) + +-- crop definition + +local def = { + description = S("Parsley") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_parsley_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:parsley_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_parsley_2.png"} +minetest.register_node("farming:parsley_2", table.copy(def)) + +-- stage 3 (final) + +def.tiles = {"farming_parsley_3.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:parsley 2"}, rarity = 1}, + {items = {"farming:parsley"}, rarity = 2}, + {items = {"farming:parsley"}, rarity = 3} + } +} +minetest.register_node("farming:parsley_3", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:parsley"] = { + crop = "farming:parsley", + seed = "farming:parsley", + minlight = 13, + maxlight = 15, + steps = 3 +} + +-- mapgen +farming.register_decoration("parsley",5) diff --git a/mods/.farming_old/crops/peas.lua b/mods/.farming_old/crops/peas.lua new file mode 100644 index 00000000..85605a7f --- /dev/null +++ b/mods/.farming_old/crops/peas.lua @@ -0,0 +1,94 @@ + +-- Textures for peas and their crop were done by Andrey01 + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:pea_pod", { + description = S("Pea Pod"), + inventory_image = "farming_pea_pod.png", + groups = {compostability = 48, seed = 2, food_peas = 1, food_pea_pod = 1}, + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:pea_1") + end +}) + +farming.add_eatable("farming:pea_pod", 1) + +-- replacement for separate peas item that was removed + +minetest.register_alias("farming:peas", "farming:pea_pod") + +-- crop definition + +local def = { + description = S("Pea") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_pea_1.png"}, + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 3, + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:pea_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_pea_2.png"} +minetest.register_node("farming:pea_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_pea_3.png"} +minetest.register_node("farming:pea_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_pea_4.png"} +minetest.register_node("farming:pea_4", table.copy(def)) + +-- stage 5 (final) + +def.tiles = {"farming_pea_5.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + max_items = 5, items = { + {items = {"farming:pea_pod"}, rarity = 1}, + {items = {"farming:pea_pod"}, rarity = 2}, + {items = {"farming:pea_pod"}, rarity = 3}, + {items = {"farming:pea_pod"}, rarity = 5} + } +} +minetest.register_node("farming:pea_5", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:pea_pod"] = { + crop = "farming:pea", + seed = "farming:pea_pod", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 5 +} + +-- mapgen +farming.register_decoration("pea",5) diff --git a/mods/.farming_old/crops/pepper.lua b/mods/.farming_old/crops/pepper.lua new file mode 100644 index 00000000..a5cf9021 --- /dev/null +++ b/mods/.farming_old/crops/pepper.lua @@ -0,0 +1,154 @@ + +--[[ + Original textures from Crops Plus mod + Copyright (C) 2018 Grizzly Adam + https://forum.minetest.net/viewtopic.php?f=9&t=19488 +]] + +local S = minetest.get_translator("farming") + +-- seed + +minetest.register_craftitem("farming:peppercorn", { + description = S("Peppercorn"), + inventory_image = "crops_peppercorn.png", + groups = {compostability = 48, seed = 1, food_peppercorn = 1, flammable = 3}, + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:pepper_1") + end +}) + +-- green pepper + +minetest.register_craftitem("farming:pepper", { + description = S("Green Pepper"), + inventory_image = "crops_pepper.png", + on_use = minetest.item_eat(2), + groups = {food_pepper = 1, compostability = 55} +}) + +farming.add_eatable("farming:pepper", 2) + +-- yellow pepper + +minetest.register_craftitem("farming:pepper_yellow", { + description = S("Yellow Pepper"), + inventory_image = "crops_pepper_yellow.png", + on_use = minetest.item_eat(3), + groups = {food_pepper = 1, compostability = 55} +}) + +farming.add_eatable("farming:pepper_yellow", 3) + +-- red pepper + +minetest.register_craftitem("farming:pepper_red", { + description = S("Red Pepper"), + inventory_image = "crops_pepper_red.png", + on_use = minetest.item_eat(4), + groups = {food_pepper = 1, compostability = 55} +}) + +farming.add_eatable("farming:pepper_red", 4) + +-- pepper to peppercorn recipe + +minetest.register_craft({ + output = "farming:peppercorn", + recipe = {{"group:food_pepper"}} +}) + +-- crop definition + +local def = { + description = S("Pepper") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"crops_pepper_plant_1.png"}, + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 1, + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:pepper_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"crops_pepper_plant_2.png"} +minetest.register_node("farming:pepper_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"crops_pepper_plant_3.png"} +minetest.register_node("farming:pepper_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"crops_pepper_plant_4.png"} +minetest.register_node("farming:pepper_4", table.copy(def)) + +-- stage 5 (green pepper) + +def.tiles = {"crops_pepper_plant_5.png"} +def.selection_box = farming.select_final +def.drop = { + max_items = 2, items = { + {items = {"farming:pepper 2"}, rarity = 1}, + {items = {"farming:pepper"}, rarity = 2}, + {items = {"farming:pepper"}, rarity = 3} + } +} +minetest.register_node("farming:pepper_5", table.copy(def)) + +-- stage 6 (yellow pepper) + +def.tiles = {"crops_pepper_plant_6.png"} +def.drop = { + max_items = 2, items = { + {items = {"farming:pepper_yellow 2"}, rarity = 1}, + {items = {"farming:pepper_yellow"}, rarity = 2}, + {items = {"farming:pepper_yellow"}, rarity = 3} + } +} +minetest.register_node("farming:pepper_6", table.copy(def)) + +-- stage 7 (red pepper - final) + +def.tiles = {"crops_pepper_plant_7.png"} +def.groups.growing = nil +def.drop = { + max_items = 2, items = { + {items = {"farming:pepper_red 2"}, rarity = 1}, + {items = {"farming:pepper_red"}, rarity = 2}, + {items = {"farming:pepper_red"}, rarity = 3} + } +} +minetest.register_node("farming:pepper_7", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:pepper"] = { + crop = "farming:pepper", + seed = "farming:peppercorn", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 7 +} + +-- mapgen +farming.register_decoration("pepper",7) diff --git a/mods/.farming_old/crops/pineapple.lua b/mods/.farming_old/crops/pineapple.lua new file mode 100644 index 00000000..26c329fd --- /dev/null +++ b/mods/.farming_old/crops/pineapple.lua @@ -0,0 +1,119 @@ + +local S = minetest.get_translator("farming") + +-- seed + +minetest.register_craftitem("farming:pineapple_top", { + description = S("Pineapple Top"), + inventory_image = "farming_pineapple_top.png", + groups = {compostability = 48, seed = 2, flammable = 2}, + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:pineapple_1") + end +}) + +-- item + +minetest.register_node("farming:pineapple", { + description = S("Pineapple"), + drawtype = "plantlike", + tiles = {"farming_pineapple.png"}, + inventory_image = "farming_pineapple.png", + wield_image = "farming_pineapple.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "fixed", fixed = {-0.27, -0.37, -0.27, 0.27, 0.44, 0.27} + }, + groups = { + food_pineapple = 1, fleshy = 3, dig_immediate = 3, flammable = 2, + compostability = 65 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false +}) + +-- crop definition + +local def = { + description = S("Pineapple") .. S(" Crop"), + drawtype = "plantlike", + visual_scale = 1.5, + tiles = {"farming_pineapple_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:pineapple_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_pineapple_2.png"} +minetest.register_node("farming:pineapple_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_pineapple_3.png"} +minetest.register_node("farming:pineapple_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_pineapple_4.png"} +minetest.register_node("farming:pineapple_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_pineapple_5.png"} +minetest.register_node("farming:pineapple_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_pineapple_6.png"} +minetest.register_node("farming:pineapple_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"farming_pineapple_7.png"} +minetest.register_node("farming:pineapple_7", table.copy(def)) + +-- stage 8 (final) + +def.tiles = {"farming_pineapple_8.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:pineapple"}, rarity = 1}, + {items = {"farming:pineapple"}, rarity = 2} + } +} +minetest.register_node("farming:pineapple_8", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:pineapple"] = { + crop = "farming:pineapple", + seed = "farming:pineapple_top", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 8 +} + +-- mapgen +farming.register_decoration("pineapple",8) diff --git a/mods/.farming_old/crops/potato.lua b/mods/.farming_old/crops/potato.lua new file mode 100644 index 00000000..77caeeae --- /dev/null +++ b/mods/.farming_old/crops/potato.lua @@ -0,0 +1,102 @@ + +--[[ + Original textures from DocFarming mod + https://forum.minetest.net/viewtopic.php?id=3948 +]] + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:potato", { + description = S("Potato"), + inventory_image = "farming_potato.png", + groups = {compostability = 48, seed = 2, food_potato = 1}, + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:potato_1") + end, + + -- 1 in 3 chance of being poisoned + on_use = function(itemstack, user, pointed_thing) + + if user then + + if math.random(3) == 1 then + return minetest.do_item_eat(-1, nil, itemstack, user, pointed_thing) + else + return minetest.do_item_eat(1, nil, itemstack, user, pointed_thing) + end + end + end +}) + +farming.add_eatable("farming:potato", 1) + +-- crop definition + +local def = { + description = S("Potato") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_potato_1.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:potato_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_potato_2.png"} +minetest.register_node("farming:potato_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_potato_3.png"} +def.drop = { + items = { + {items = {"farming:potato"}, rarity = 1}, + {items = {"farming:potato"}, rarity = 3} + } +} +minetest.register_node("farming:potato_3", table.copy(def)) + +-- stage 4 (final) + +def.tiles = {"farming_potato_4.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:potato 2"}, rarity = 1}, + {items = {"farming:potato 3"}, rarity = 2} + } +} +minetest.register_node("farming:potato_4", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:potato"] = { + crop = "farming:potato", + seed = "farming:potato", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 4 +} + +-- mapgen +farming.register_decoration("potato",3) diff --git a/mods/.farming_old/crops/pumpkin.lua b/mods/.farming_old/crops/pumpkin.lua new file mode 100644 index 00000000..70816bd4 --- /dev/null +++ b/mods/.farming_old/crops/pumpkin.lua @@ -0,0 +1,110 @@ + +local S = minetest.get_translator("farming") + +-- seed + +minetest.register_craftitem("farming:pumpkin_slice", { + description = S("Pumpkin Slice"), + inventory_image = "farming_pumpkin_slice.png", + groups = {compostability = 48, seed = 2, food_pumpkin_slice = 1}, + on_use = minetest.item_eat(2), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:pumpkin_1") + end +}) + +farming.add_eatable("farming:pumpkin_slice", 2) + +-- crop definition + +local def = { + description = S("Pumpkin") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_pumpkin_1.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:pumpkin_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_pumpkin_2.png"} +minetest.register_node("farming:pumpkin_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_pumpkin_3.png"} +minetest.register_node("farming:pumpkin_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_pumpkin_4.png"} +minetest.register_node("farming:pumpkin_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_pumpkin_5.png"} +minetest.register_node("farming:pumpkin_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_pumpkin_6.png"} +minetest.register_node("farming:pumpkin_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"farming_pumpkin_7.png"} +minetest.register_node("farming:pumpkin_7", table.copy(def)) + +-- stage 8 (final) + +minetest.register_node("farming:pumpkin_8", { + description = S("Pumpkin"), + tiles = { + "farming_pumpkin_bottom.png^farming_pumpkin_top.png", + "farming_pumpkin_bottom.png", + "farming_pumpkin_side.png" + }, + groups = { + food_pumpkin = 1, snappy = 3, choppy = 3, oddly_breakable_by_hand = 2, + flammable = 2, plant = 1, handy = 1 + }, + is_ground_content = false, + drop = "farming:pumpkin_8", + sounds = farming.node_sound_wood_defaults(), + paramtype2 = "facedir", + on_place = minetest.rotate_node, + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 +}) + +minetest.register_alias("farming:pumpkin", "farming:pumpkin_8") + +-- add to registered_plants + +farming.registered_plants["farming:pumpkin"] = { + crop = "farming:pumpkin", + seed = "farming:pumpkin_slice", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 8 +} + +-- mapgen +farming.register_decoration("pumpkin",8) diff --git a/mods/.farming_old/crops/raspberry.lua b/mods/.farming_old/crops/raspberry.lua new file mode 100644 index 00000000..771ceea8 --- /dev/null +++ b/mods/.farming_old/crops/raspberry.lua @@ -0,0 +1,82 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:raspberries", { + description = S("Raspberries"), + inventory_image = "farming_raspberries.png", + groups = { + compostability = 48, seed = 2, food_raspberries = 1, food_raspberry = 1, + food_berry = 1 + }, + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:raspberry_1") + end +}) + +farming.add_eatable("farming:raspberries", 1) + +-- crop definition + +local def = { + description = S("Raspberry") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_raspberry_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:raspberry_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_raspberry_2.png"} +minetest.register_node("farming:raspberry_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_raspberry_3.png"} +minetest.register_node("farming:raspberry_3", table.copy(def)) + +-- stage 4 (final) + +def.tiles = {"farming_raspberry_4.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:raspberries 2"}, rarity = 1}, + {items = {"farming:raspberries"}, rarity = 2}, + {items = {"farming:raspberries"}, rarity = 3} + } +} +minetest.register_node("farming:raspberry_4", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:raspberries"] = { + crop = "farming:raspberry", + seed = "farming:raspberries", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 4 +} + +-- mapgen +farming.register_decoration("raspberry",4) diff --git a/mods/.farming_old/crops/rhubarb.lua b/mods/.farming_old/crops/rhubarb.lua new file mode 100644 index 00000000..26044e17 --- /dev/null +++ b/mods/.farming_old/crops/rhubarb.lua @@ -0,0 +1,87 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:rhubarb", { + description = S("Rhubarb"), + inventory_image = "farming_rhubarb.png", + groups = {compostability = 48, seed = 2, food_rhubarb = 1}, + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:rhubarb_1") + end +}) + +farming.add_eatable("farming:rhubarb", 1) + +-- crop definition + +local def = { + description = S("Rhubarb") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_rhubarb_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults(), + minlight = 10, + maxlight = 12 +} + +-- stage 1 + +minetest.register_node("farming:rhubarb_1", table.copy(def)) + +-- stage2 + +def.tiles = {"farming_rhubarb_2.png"} +minetest.register_node("farming:rhubarb_2", table.copy(def)) + +-- stage3 + +def.tiles = {"farming_rhubarb_3.png"} +def.drop = { + items = { + {items = {"farming:rhubarb"}, rarity = 1}, + } +} +minetest.register_node("farming:rhubarb_3", table.copy(def)) + +-- stage 4 (final) + +def.tiles = {"farming_rhubarb_4.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:rhubarb 2"}, rarity = 1}, + {items = {"farming:rhubarb"}, rarity = 2}, + {items = {"farming:rhubarb"}, rarity = 3} + } +} +minetest.register_node("farming:rhubarb_4", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:rhubarb"] = { + crop = "farming:rhubarb", + seed = "farming:rhubarb", + minlight = 10, + maxlight = 12, + steps = 4 +} + +-- mapgen +farming.register_decoration("rhubarb",3) diff --git a/mods/.farming_old/crops/rice.lua b/mods/.farming_old/crops/rice.lua new file mode 100644 index 00000000..d363f638 --- /dev/null +++ b/mods/.farming_old/crops/rice.lua @@ -0,0 +1,151 @@ + +local S = minetest.get_translator("farming") + +-- rice seed + +minetest.register_node("farming:seed_rice", { + description = S("Rice Seed"), + tiles = {"farming_rice_seed.png"}, + inventory_image = "farming_rice_seed.png", + wield_image = "farming_rice_seed.png", + drawtype = "signlike", + groups = { + handy = 1, compostability = 48, seed = 1, snappy = 3, attached_node = 1, + flammable = 4, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + next_plant = "farming:rice_1", + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_rice") + end, + + on_timer = function(pos, elapsed) + minetest.set_node(pos, {name = "farming:rice_1", param2 = 3}) + end +}) + +-- rice item + +minetest.register_craftitem("farming:rice", { + description = S("Rice"), + inventory_image = "farming_rice.png", + groups = {seed = 2, food_rice = 1, flammable = 2, compostability = 65}, +}) + +-- dry rice seed to give edible rice + +minetest.register_craft({ + type = "cooking", + cooktime = 1, + output = "farming:rice", + recipe = "farming:seed_rice" +}) + +-- crop definition + +local def = { + description = S("Rice") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_rice_1.png"}, + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 3, + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 4, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:rice_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_rice_2.png"} +minetest.register_node("farming:rice_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_rice_3.png"} +minetest.register_node("farming:rice_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_rice_4.png"} +minetest.register_node("farming:rice_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_rice_5.png"} +def.drop = { + items = { + {items = {"farming:rice"}, rarity = 2} + } +} +minetest.register_node("farming:rice_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_rice_6.png"} +def.drop = { + items = { + {items = {"farming:rice"}, rarity = 2} + } +} +minetest.register_node("farming:rice_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"farming_rice_7.png"} +def.drop = { + items = { + {items = {"farming:seed_rice"}, rarity = 1}, + {items = {"farming:seed_rice"}, rarity = 2}, + {items = {"farming:seed_rice"}, rarity = 3} + } +} +minetest.register_node("farming:rice_7", table.copy(def)) + +-- stage 8 (final) + +def.tiles = {"farming_rice_8.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:seed_rice 2"}, rarity = 1}, + {items = {"farming:seed_rice 2"}, rarity = 2}, + {items = {"farming:seed_rice"}, rarity = 3} + } +} +minetest.register_node("farming:rice_8", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:rice"] = { + crop = "farming:rice", + seed = "farming:seed_rice", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 8 +} + +-- mapgen +farming.register_decoration("rice",8) diff --git a/mods/.farming_old/crops/rye_oat.lua b/mods/.farming_old/crops/rye_oat.lua new file mode 100644 index 00000000..3fd93c14 --- /dev/null +++ b/mods/.farming_old/crops/rye_oat.lua @@ -0,0 +1,50 @@ + +local S = minetest.get_translator("farming") + +--= A nice addition from Ademant's grain mod :) + +-- Rye + +farming.register_plant("farming:rye", { + description = S("Rye seed"), + paramtype2 = "meshoptions", + inventory_image = "farming_rye_seed.png", + steps = 8, + place_param2 = 3 +}) + +-- override rye item + +minetest.override_item("farming:rye", { + description = S("Rye"), + groups = {food_rye = 1, flammable = 4, compostability = 65} +}) + +-- override rye crop + +minetest.override_item("farming:rye_1", {drop = {}}) +minetest.override_item("farming:rye_2", {drop = {}}) +minetest.override_item("farming:rye_3", {drop = {}}) + +-- Oats + +farming.register_plant("farming:oat", { + description = S("Oat seed"), + paramtype2 = "meshoptions", + inventory_image = "farming_oat_seed.png", + steps = 8, + place_param2 = 3 +}) + +-- override oat item + +minetest.override_item("farming:oat", { + description = S("Oats"), + groups = {food_oats = 1, flammable = 4, compostability = 65} +}) + +-- override oat crop + +minetest.override_item("farming:oat_1", {drop = {}}) +minetest.override_item("farming:oat_2", {drop = {}}) +minetest.override_item("farming:oat_3", {drop = {}}) diff --git a/mods/.farming_old/crops/soy.lua b/mods/.farming_old/crops/soy.lua new file mode 100644 index 00000000..88c1980a --- /dev/null +++ b/mods/.farming_old/crops/soy.lua @@ -0,0 +1,112 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:soy_pod", { + description = S("Soy Pod"), + inventory_image = "farming_soy_pod.png", + groups = {compostability = 48, seed = 2, food_soy = 1, food_soy_pod = 1, flammable = 2}, + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:soy_1") + end +}) + +-- replacement for soy beans that was removed + +minetest.register_alias("farming:soy_beans", "farming:soy_pod") + +-- crop definition + +local def = { + description = S("Soy") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_soy_1.png"}, + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 3, + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:soy_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_soy_2.png"} +minetest.register_node("farming:soy_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_soy_3.png"} +minetest.register_node("farming:soy_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_soy_4.png"} +minetest.register_node("farming:soy_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_soy_5.png"} +def.drop = { + max_items = 1, items = { + {items = {"farming:soy_pod"}, rarity = 1}, + } +} +minetest.register_node("farming:soy_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_soy_6.png"} +def.drop = { + max_items = 3, items = { + {items = {"farming:soy_pod"}, rarity = 1}, + {items = {"farming:soy_pod"}, rarity = 2}, + {items = {"farming:soy_pod"}, rarity = 3} + } +} +minetest.register_node("farming:soy_6", table.copy(def)) + +-- stage 7 (final) + +def.tiles = {"farming_soy_7.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + max_items = 5, items = { + {items = {"farming:soy_pod"}, rarity = 1}, + {items = {"farming:soy_pod"}, rarity = 2}, + {items = {"farming:soy_pod"}, rarity = 3}, + {items = {"farming:soy_pod"}, rarity = 4}, + {items = {"farming:soy_pod"}, rarity = 5} + } +} +minetest.register_node("farming:soy_7", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:soy_pod"] = { + crop = "farming:soy", + seed = "farming:soy_pod", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 7 +} + +-- mapgen +farming.register_decoration("soy",7) diff --git a/mods/.farming_old/crops/spinach.lua b/mods/.farming_old/crops/spinach.lua new file mode 100644 index 00000000..29ac27ea --- /dev/null +++ b/mods/.farming_old/crops/spinach.lua @@ -0,0 +1,86 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:spinach", { + description = S("Spinach"), + inventory_image = "farming_spinach.png", + groups = {compostability = 48, seed = 2, food_spinach = 1}, + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:spinach_1") + end +}) + +farming.add_eatable("farming:spinach", 1) + +-- crop definition + +local def = { + description = S("Spinach") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_spinach_1.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:spinach_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_spinach_2.png"} +minetest.register_node("farming:spinach_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_spinach_3.png"} +def.drop = { + items = { + {items = {"farming:spinach"}, rarity = 1}, + {items = {"farming:spinach"}, rarity = 3} + } +} +minetest.register_node("farming:spinach_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_spinach_4.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:spinach 2"}, rarity = 1}, + {items = {"farming:spinach 2"}, rarity = 2}, + {items = {"farming:spinach 2"}, rarity = 3} + } +} +minetest.register_node("farming:spinach_4", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:spinach"] = { + crop = "farming:spinach", + seed = "farming:spinach", + minlight = 7, + maxlight = farming.max_light, + steps = 4 +} + +-- mapgen +farming.register_decoration("spinach",4) diff --git a/mods/.farming_old/crops/strawberry.lua b/mods/.farming_old/crops/strawberry.lua new file mode 100644 index 00000000..66c987c8 --- /dev/null +++ b/mods/.farming_old/crops/strawberry.lua @@ -0,0 +1,114 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem(":ethereal:strawberry", { + description = S("Strawberry"), + inventory_image = "ethereal_strawberry.png", + groups = {compostability = 48, seed = 2, food_strawberry = 1, food_berry = 1}, + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "ethereal:strawberry_1") + end, +}) + +farming.add_eatable("ethereal:strawberry", 1) + +-- crop definition + +local def = { + description = S("Strawberry") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"ethereal_strawberry_1.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5} + }, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +--stage 1 + +minetest.register_node(":ethereal:strawberry_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"ethereal_strawberry_2.png"} +minetest.register_node(":ethereal:strawberry_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"ethereal_strawberry_3.png"} +minetest.register_node(":ethereal:strawberry_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"ethereal_strawberry_4.png"} +minetest.register_node(":ethereal:strawberry_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"ethereal_strawberry_5.png"} +minetest.register_node(":ethereal:strawberry_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"ethereal_strawberry_6.png"} +def.drop = { + items = { + {items = {"ethereal:strawberry 1"}, rarity = 2}, + {items = {"ethereal:strawberry 2"}, rarity = 3} + } +} +minetest.register_node(":ethereal:strawberry_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"ethereal_strawberry_7.png"} +def.drop = { + items = { + {items = {"ethereal:strawberry 1"}, rarity = 1}, + {items = {"ethereal:strawberry 2"}, rarity = 3} + } +} +minetest.register_node(":ethereal:strawberry_7", table.copy(def)) + +-- stage 8 (final) + +def.tiles = {"ethereal_strawberry_8.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"ethereal:strawberry 2"}, rarity = 1}, + {items = {"ethereal:strawberry 3"}, rarity = 3} + } +} +minetest.register_node(":ethereal:strawberry_8", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["ethereal:strawberry"] = { + crop = "ethereal:strawberry", + seed = "ethereal:strawberry", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 8 +} + +-- mapgen +farming.register_decoration("strawberry",7) diff --git a/mods/.farming_old/crops/sunflower.lua b/mods/.farming_old/crops/sunflower.lua new file mode 100644 index 00000000..09ef5dec --- /dev/null +++ b/mods/.farming_old/crops/sunflower.lua @@ -0,0 +1,132 @@ + +local S = minetest.get_translator("farming") + +-- seed + +minetest.register_node("farming:seed_sunflower", { + description = S("Sunflower Seeds"), + tiles = {"farming_sunflower_seeds.png"}, + inventory_image = "farming_sunflower_seeds.png", + wield_image = "farming_sunflower_seeds.png", + drawtype = "signlike", + groups = { + compostability = 48, seed = 1, snappy = 3, attached_node = 1, growing = 1, + handy = 1, food_sunflower_seeds = 1, flammable = 2 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + next_plant = "farming:sunflower_1", + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_sunflower") + end, + + on_timer = function(pos, elapsed) + minetest.set_node(pos, {name = "farming:sunflower_1", param2 = 1}) + end +}) + +minetest.register_alias("farming:sunflower_seeds", "farming:seed_sunflower") + +-- item + +minetest.register_craftitem("farming:sunflower", { + description = S("Sunflower"), + inventory_image = "farming_sunflower.png", + groups = {flammable = 2} +}) + +-- turn item into seeds + +minetest.register_craft({ + output = "farming:seed_sunflower 5", + recipe = {{"farming:sunflower"}} +}) + +-- crop definition + +local def = { + description = S("Sunflower") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_sunflower_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:sunflower_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_sunflower_2.png"} +minetest.register_node("farming:sunflower_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_sunflower_3.png"} +minetest.register_node("farming:sunflower_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_sunflower_4.png"} +minetest.register_node("farming:sunflower_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_sunflower_5.png"} +minetest.register_node("farming:sunflower_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_sunflower_6.png"} +def.visual_scale = 1.9 +minetest.register_node("farming:sunflower_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"farming_sunflower_7.png"} +minetest.register_node("farming:sunflower_7", table.copy(def)) + +-- stage 8 (final) + +def.tiles = {"farming_sunflower_8.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:sunflower"}, rarity = 1}, + {items = {"farming:sunflower"}, rarity = 6} + } +} +minetest.register_node("farming:sunflower_8", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:sunflower"] = { + crop = "farming:sunflower", + seed = "farming:seed_sunflower", + minlight = 14, + maxlight = farming.max_light, + steps = 8 +} + +-- mapgen +farming.register_decoration("sunflower",8) diff --git a/mods/.farming_old/crops/tomato.lua b/mods/.farming_old/crops/tomato.lua new file mode 100644 index 00000000..d0e94f45 --- /dev/null +++ b/mods/.farming_old/crops/tomato.lua @@ -0,0 +1,111 @@ + +--[[ + Textures edited from: + http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1288375-food-plus-mod-more-food-than-you-can-imagine-v2-9) +]] + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:tomato", { + description = S("Tomato"), + inventory_image = "farming_tomato.png", + groups = {compostability = 45, seed = 2, food_tomato = 1}, + on_use = minetest.item_eat(4), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:tomato_1") + end +}) + +farming.add_eatable("farming:tomato", 4) + +-- crop definition + +local def = { + description = S("Tomato") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_tomato_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:tomato_1", table.copy(def)) + +-- stage2 + +def.tiles = {"farming_tomato_2.png"} +minetest.register_node("farming:tomato_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_tomato_3.png"} +minetest.register_node("farming:tomato_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_tomato_4.png"} +minetest.register_node("farming:tomato_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_tomato_5.png"} +minetest.register_node("farming:tomato_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_tomato_6.png"} +minetest.register_node("farming:tomato_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"farming_tomato_7.png"} +def.drop = { + items = { + {items = {"farming:tomato"}, rarity = 1}, + {items = {"farming:tomato"}, rarity = 3} + } +} +minetest.register_node("farming:tomato_7", table.copy(def)) + +-- stage 8 (final) + +def.tiles = {"farming_tomato_8.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:tomato 3"}, rarity = 1}, + {items = {"farming:tomato 2"}, rarity = 2}, + {items = {"farming:tomato 1"}, rarity = 3} + } +} +minetest.register_node("farming:tomato_8", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:tomato"] = { + crop = "farming:tomato", + seed = "farming:tomato", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 8 +} + +-- mapgen +farming.register_decoration("tomato",8) diff --git a/mods/.farming_old/crops/vanilla.lua b/mods/.farming_old/crops/vanilla.lua new file mode 100644 index 00000000..507020ee --- /dev/null +++ b/mods/.farming_old/crops/vanilla.lua @@ -0,0 +1,109 @@ + +local S = minetest.get_translator("farming") + +-- item/seed + +minetest.register_craftitem("farming:vanilla", { + description = S("Vanilla"), + inventory_image = "farming_vanilla.png", + groups = {compostability = 48, seed = 2, food_vanilla = 1}, + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:vanilla_1") + end +}) + +farming.add_eatable("farming:vanilla", 1) + +-- crop definition + +local def = { + description = S("Vanilla") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_vanilla_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:vanilla_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_vanilla_2.png"} +minetest.register_node("farming:vanilla_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_vanilla_3.png"} +minetest.register_node("farming:vanilla_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_vanilla_4.png"} +minetest.register_node("farming:vanilla_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_vanilla_5.png"} +minetest.register_node("farming:vanilla_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_vanilla_6.png"} +def.visual_scale = 1.9 +minetest.register_node("farming:vanilla_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"farming_vanilla_7.png"} +def.drop = { + items = { + {items = {"farming:vanilla"}, rarity = 1}, + {items = {"farming:vanilla"}, rarity = 2}, + {items = {"farming:vanilla"}, rarity = 3} + } +} +minetest.register_node("farming:vanilla_7", table.copy(def)) + +-- stage 8 (final) + +def.tiles = {"farming_vanilla_8.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:vanilla 2"}, rarity = 1}, + {items = {"farming:vanilla 2"}, rarity = 2}, + {items = {"farming:vanilla 2"}, rarity = 2}, + {items = {"farming:vanilla 2"}, rarity = 3} + } +} +minetest.register_node("farming:vanilla_8", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:vanilla"] = { + crop = "farming:vanilla", + seed = "farming:vanilla", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 8 +} + +-- mapgen +farming.register_decoration("vanilla",8) diff --git a/mods/.farming_old/crops/wheat.lua b/mods/.farming_old/crops/wheat.lua new file mode 100644 index 00000000..db6644ec --- /dev/null +++ b/mods/.farming_old/crops/wheat.lua @@ -0,0 +1,144 @@ + +local S = minetest.get_translator("farming") + +-- seed + +minetest.register_node("farming:seed_wheat", { + description = S("Wheat Seed"), + tiles = {"farming_wheat_seed.png"}, + inventory_image = "farming_wheat_seed.png", + wield_image = "farming_wheat_seed.png", + drawtype = "signlike", + groups = { + handy = 1, seed = 1, snappy = 3, attached_node = 1, flammable = 4, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + next_plant = "farming:wheat_1", + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_wheat") + end, + + on_timer = function(pos, elapsed) + minetest.set_node(pos, {name = "farming:wheat_1", param2 = 3}) + end +}) + +-- item + +minetest.register_craftitem("farming:wheat", { + description = S("Wheat"), + inventory_image = "farming_wheat.png", + groups = {food_wheat = 1, flammable = 4} +}) + +-- crop definition + +local def = { + description = S("Wheat") .. S(" Crop"), + drawtype = "plantlike", + tiles = {"farming_wheat_1.png"}, + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 3, + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + waving = 1, + selection_box = farming.select, + groups = { + snappy = 3, flammable = 4, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +} + +-- stage 1 + +minetest.register_node("farming:wheat_1", table.copy(def)) + +-- stage 2 + +def.tiles = {"farming_wheat_2.png"} +minetest.register_node("farming:wheat_2", table.copy(def)) + +-- stage 3 + +def.tiles = {"farming_wheat_3.png"} +minetest.register_node("farming:wheat_3", table.copy(def)) + +-- stage 4 + +def.tiles = {"farming_wheat_4.png"} +minetest.register_node("farming:wheat_4", table.copy(def)) + +-- stage 5 + +def.tiles = {"farming_wheat_5.png"} +def.drop = { + items = { + {items = {"farming:wheat"}, rarity = 2}, + {items = {"farming:seed_wheat"}, rarity = 2} + } +} +minetest.register_node("farming:wheat_5", table.copy(def)) + +-- stage 6 + +def.tiles = {"farming_wheat_6.png"} +def.drop = { + items = { + {items = {"farming:wheat"}, rarity = 2}, + {items = {"farming:seed_wheat"}, rarity = 1} + } +} +minetest.register_node("farming:wheat_6", table.copy(def)) + +-- stage 7 + +def.tiles = {"farming_wheat_7.png"} +def.drop = { + items = { + {items = {"farming:wheat"}, rarity = 1}, + {items = {"farming:wheat"}, rarity = 3}, + {items = {"farming:seed_wheat"}, rarity = 1}, + {items = {"farming:seed_wheat"}, rarity = 3} + } +} +minetest.register_node("farming:wheat_7", table.copy(def)) + +-- stage 8 (final) + +def.tiles = {"farming_wheat_8.png"} +def.groups.growing = nil +def.selection_box = farming.select_final +def.drop = { + items = { + {items = {"farming:wheat"}, rarity = 1}, + {items = {"farming:wheat"}, rarity = 3}, + {items = {"farming:seed_wheat"}, rarity = 1}, + {items = {"farming:seed_wheat"}, rarity = 3} + } +} +minetest.register_node("farming:wheat_8", table.copy(def)) + +-- add to registered_plants + +farming.registered_plants["farming:wheat"] = { + crop = "farming:wheat", + seed = "farming:seed_wheat", + minlight = farming.min_light, + maxlight = farming.max_light, + steps = 8 +} +-- mapgen +farming.register_decoration("wheat",8) diff --git a/mods/farming/farming.conf b/mods/.farming_old/farming.conf similarity index 100% rename from mods/farming/farming.conf rename to mods/.farming_old/farming.conf diff --git a/mods/.farming_old/farming.conf_example b/mods/.farming_old/farming.conf_example new file mode 100644 index 00000000..d22ba2e9 --- /dev/null +++ b/mods/.farming_old/farming.conf_example @@ -0,0 +1,52 @@ + +--[[ + Farming settings can be changed here and kept inside mod folder + even after the mod has been updated, or you can place inside + world folder for map specific settings. +--]] + +-- true to enable crop/food in-game and on mapgen set spawn rarety +farming.asparagus = 0.002 +farming.eggplant = 0.002 +farming.spinach = 0.002 +farming.carrot = 0.002 +farming.potato = 0.002 +farming.tomato = 0.002 +farming.cucumber = 0.002 +farming.corn = 0.002 +farming.coffee = 0.002 +farming.melon = 0.009 +farming.pumpkin = 0.009 +farming.cocoa = true -- true or false only +farming.raspberry = 0.002 +farming.blueberry = 0.002 +farming.rhubarb = 0.002 +farming.beans = 0.002 +farming.grapes = 0.002 +farming.barley = true -- true or false only +farming.chili = 0.003 +farming.hemp = 0.003 +farming.garlic = 0.002 +farming.onion = 0.002 +farming.pepper = 0.002 +farming.pineapple = 0.003 +farming.peas = 0.002 +farming.beetroot = 0.002 +farming.mint = 0.005 +farming.cabbage = 0.002 +farming.blackberry = 0.002 +farming.lettuce = 0.002 +farming.soy = 0.002 +farming.vanilla = 0.002 +farming.artichoke = 0.002 +farming.parsley = 0.002 +farming.sunflower = 0.002 +farming.ginger = 0.002 +farming.cotton = 0.003 +farming.strawberry = 0.002 +farming.grains = true -- true or false only +farming.rice = true + +-- default minimum and maximum light levels crops need to grow +farming.min_light = 12 +farming.max_light = 15 diff --git a/mods/.farming_old/grass.lua b/mods/.farming_old/grass.lua new file mode 100644 index 00000000..2e607c2a --- /dev/null +++ b/mods/.farming_old/grass.lua @@ -0,0 +1,76 @@ + +-- Override grass to drop wheat and oat seeds + +local rarity_lookup = {[1] = 50, [2] = 50, [3] = 50, [4] = 5, [5] = 5} + +if minetest.registered_nodes["default:grass_1"] then + + for i = 1, 5 do + + minetest.override_item("default:grass_" .. i, { + drop = { + max_items = 1, + items = { + {items = {"farming:seed_wheat"}, rarity = rarity_lookup[i]}, + {items = {"farming:seed_oat"},rarity = rarity_lookup[i]}, + {items = {"default:grass_1"}} + } + } + }) + end +end + +-- override dry grass to drop barley and rye seeds + +if minetest.registered_nodes["default:dry_grass_1"] then + + for i = 1, 5 do + + minetest.override_item("default:dry_grass_" .. i, { + drop = { + max_items = 1, + items = { + {items = {"farming:seed_barley"}, rarity = rarity_lookup[i]}, + {items = {"farming:seed_rye"}, rarity = rarity_lookup[i]}, + {items = {"default:dry_grass_1"}} + } + } + }) + end +end + +-- override jungle grass to drop cotton and rice seeds + +if minetest.registered_nodes["default:junglegrass"] then + + minetest.override_item("default:junglegrass", { + drop = { + max_items = 1, + items = { + {items = {"farming:seed_cotton"}, rarity = 8}, + {items = {"farming:seed_rice"}, rarity = 8}, + {items = {"default:junglegrass"}} + } + } + }) +end + +-- override mineclone tallgrass to drop all sof the above seeds + +if farming.mcl then + + minetest.override_item("mcl_flowers:tallgrass", { + drop = { + max_items = 1, + items = { + {items = {"mcl_farming:wheat_seeds"}, rarity = 5}, + {items = {"farming:seed_oat"},rarity = 5}, + {items = {"farming:seed_barley"}, rarity = 5}, + {items = {"farming:seed_rye"},rarity = 5}, + {items = {"farming:seed_cotton"}, rarity = 8}, + {items = {"farming:seed_rice"},rarity = 8} + } + } + }) +end + diff --git a/mods/.farming_old/hoes.lua b/mods/.farming_old/hoes.lua new file mode 100644 index 00000000..e6865754 --- /dev/null +++ b/mods/.farming_old/hoes.lua @@ -0,0 +1,485 @@ + +-- translation and mod check + +local S = minetest.get_translator("farming") +local mod_tr = minetest.get_modpath("toolranks") + +-- Hoe registration function + +farming.register_hoe = function(name, def) + + -- Check for : prefix (register new hoes in your mod's namespace) + if name:sub(1,1) ~= ":" then name = ":" .. name end + + -- Check def table + if def.description == nil then def.description = S("Hoe") end + + if def.inventory_image == nil then def.inventory_image = "unknown_item.png" end + + if def.max_uses == nil then def.max_uses = 30 end + + -- add hoe group + def.groups = def.groups or {} + def.groups.hoe = 1 + + -- Register the tool + minetest.register_tool(name, { + description = def.description, + inventory_image = def.inventory_image, + groups = def.groups, + sound = {breaks = "default_tool_breaks"}, + damage_groups = def.damage_groups or {fleshy = 1}, + + on_use = function(itemstack, user, pointed_thing) + return farming.hoe_on_use(itemstack, user, pointed_thing, def.max_uses) + end + }) + + -- Register its recipe + if def.recipe then + + minetest.register_craft({ + output = name:sub(2), + recipe = def.recipe + }) + elseif def.material then + + minetest.register_craft({ + output = name:sub(2), + recipe = { + {def.material, def.material, ""}, + {"", "group:stick", ""}, + {"", "group:stick", ""} + } + }) + end +end + +-- Turns dirt with group soil=1 into soil + +function farming.hoe_on_use(itemstack, user, pointed_thing, uses) + + local pt = pointed_thing or {} + local is_used = false + + -- am I going to hoe the top of a dirt node? + if pt.type == "node" and pt.above.y == pt.under.y + 1 then + + local under = minetest.get_node(pt.under) + local upos = pointed_thing.under + + if minetest.is_protected(upos, user:get_player_name()) then + minetest.record_protection_violation(upos, user:get_player_name()) + return + end + + local p = {x = pt.under.x, y = pt.under.y + 1, z = pt.under.z} + local above = minetest.get_node(p) + + -- return if any of the nodes is not registered + if not minetest.registered_nodes[under.name] + or not minetest.registered_nodes[above.name] then return end + + -- check if the node above the pointed thing is air + if above.name ~= "air" then return end + + -- check if pointing at dirt + if minetest.get_item_group(under.name, "soil") ~= 1 then return end + + -- check if (wet) soil defined + local ndef = minetest.registered_nodes[under.name] + + if ndef.soil == nil or ndef.soil.wet == nil or ndef.soil.dry == nil then + return + end + + if minetest.is_protected(pt.under, user:get_player_name()) then + minetest.record_protection_violation(pt.under, user:get_player_name()) + return + end + + -- turn the node into soil, wear out item and play sound + minetest.set_node(pt.under, {name = ndef.soil.dry}) ; is_used = true + + minetest.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5}, true) + end + + local wdef = itemstack:get_definition() + local wear = 65535 / (uses - 1) + + -- using hoe as weapon + if pt.type == "object" then + + local ent = pt.ref and pt.ref:get_luaentity() + local dir = user:get_look_dir() + + if (ent and ent.name ~= "__builtin:item" + and ent.name ~= "__builtin:falling_node") or pt.ref:is_player() then + + pt.ref:punch(user, nil, {full_punch_interval = 1.0, + damage_groups = wdef.damage_groups}, dir) + + is_used = true + end + end + + -- only when used on soil top or external entity + if is_used then + + -- cretive doesnt wear tools but toolranks registers uses with wear so set to 1 + if farming.is_creative(user:get_player_name()) then + if mod_tr then wear = 1 else wear = 0 end + end + + if mod_tr then + itemstack = toolranks.new_afteruse(itemstack, user, under, {wear = wear}) + else + itemstack:add_wear(wear) + end + + if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then + minetest.sound_play(wdef.sound.breaks, {pos = pt.above, gain = 0.5}, true) + end + end + + return itemstack +end + +-- Define Hoes + +farming.register_hoe(":farming:hoe_wood", { + description = S("Wooden Hoe"), + inventory_image = "farming_tool_woodhoe.png", + max_uses = 30, + material = "group:wood" +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:hoe_wood", + burntime = 5 +}) + +farming.register_hoe(":farming:hoe_stone", { + description = S("Stone Hoe"), + inventory_image = "farming_tool_stonehoe.png", + max_uses = 90, + material = "group:stone" +}) + +farming.register_hoe(":farming:hoe_steel", { + description = S("Steel Hoe"), + inventory_image = "farming_tool_steelhoe.png", + max_uses = 200, + material = "default:steel_ingot", + damage_groups = {fleshy = 2} +}) + +farming.register_hoe(":farming:hoe_bronze", { + description = S("Bronze Hoe"), + inventory_image = "farming_tool_bronzehoe.png", + max_uses = 250, + groups = {not_in_creative_inventory = 1}, + material = "default:bronze_ingot", + damage_groups = {fleshy = 2} +}) + +farming.register_hoe(":farming:hoe_mese", { + description = S("Mese Hoe"), + inventory_image = "farming_tool_mesehoe.png", + max_uses = 350, + groups = {not_in_creative_inventory = 1}, + damage_groups = {fleshy = 3} +}) + +farming.register_hoe(":farming:hoe_diamond", { + description = S("Diamond Hoe"), + inventory_image = "farming_tool_diamondhoe.png", + max_uses = 500, + groups = {not_in_creative_inventory = 1}, + damage_groups = {fleshy = 3} +}) + +-- Toolranks support + +if mod_tr then + + minetest.override_item("farming:hoe_wood", { + original_description = S("Wood Hoe"), + description = toolranks.create_description(S("Wood Hoe"))}) + + minetest.override_item("farming:hoe_stone", { + original_description = S("Stone Hoe"), + description = toolranks.create_description(S("Stone Hoe"))}) + + minetest.override_item("farming:hoe_steel", { + original_description = S("Steel Hoe"), + description = toolranks.create_description(S("Steel Hoe"))}) + + minetest.override_item("farming:hoe_bronze", { + original_description = S("Bronze Hoe"), + description = toolranks.create_description(S("Bronze Hoe"))}) + + minetest.override_item("farming:hoe_mese", { + original_description = S("Mese Hoe"), + description = toolranks.create_description(S("Mese Hoe"))}) + + minetest.override_item("farming:hoe_diamond", { + original_description = S("Diamond Hoe"), + description = toolranks.create_description(S("Diamond Hoe"))}) +end + +-- hoe bomb function + +local function hoe_area(pos, player) + + -- check for protection + if minetest.is_protected(pos, player:get_player_name()) then + minetest.record_protection_violation(pos, player:get_player_name()) + return + end + + local r = 5 -- radius + + -- remove flora (grass, flowers etc.) + local res = minetest.find_nodes_in_area( + {x = pos.x - r, y = pos.y - 1, z = pos.z - r}, + {x = pos.x + r, y = pos.y + 2, z = pos.z + r}, {"group:flora"}) + + for n = 1, #res do + minetest.swap_node(res[n], {name = "air"}) + end + + -- replace dirt with tilled soil + res = minetest.find_nodes_in_area_under_air( + {x = pos.x - r, y = pos.y - 1, z = pos.z - r}, + {x = pos.x + r, y = pos.y + 2, z = pos.z + r}, + {"group:soil"}) + + for n = 1, #res do + minetest.swap_node(res[n], {name = "farming:soil"}) + end +end + +-- throwable hoe bomb entity + +minetest.register_entity("farming:hoebomb_entity", { + + initial_properties = { + physical = true, + visual = "sprite", + visual_size = {x = 1.0, y = 1.0}, + textures = {"farming_hoe_bomb.png"}, + collisionbox = {-0.1,-0.1,-0.1,0.1,0.1,0.1} + }, + + lastpos = {}, + player = "", + + on_step = function(self, dtime) + + if not self.player then + + self.object:remove() + + return + end + + local pos = self.object:get_pos() + + if self.lastpos.x ~= nil then + + local vel = self.object:get_velocity() + + -- only when potion hits something physical + if vel.x == 0 or vel.y == 0 or vel.z == 0 then + + if self.player ~= "" then + + -- round up coords to fix glitching through doors + self.lastpos = vector.round(self.lastpos) + + hoe_area(self.lastpos, self.player) + end + + self.object:remove() + + return + + end + end + + self.lastpos = pos + end +}) + +-- actual throwing function + +local function throw_potion(itemstack, player) + + local pos = player:get_pos() + + local obj = minetest.add_entity({ + x = pos.x, y = pos.y + 1.5, z = pos.z}, "farming:hoebomb_entity") + + if not obj then return end + + local dir = player:get_look_dir() + local velocity = 20 + + obj:set_velocity({x = dir.x * velocity, y = dir.y * velocity, z = dir.z * velocity}) + + obj:set_acceleration({x = dir.x * -3, y = -9.5, z = dir.z * -3}) + + obj:get_luaentity().player = player +end + +-- hoe bomb item + +minetest.register_craftitem("farming:hoe_bomb", { + description = S("Hoe Bomb (use or throw on grassy areas to hoe land)"), + inventory_image = "farming_hoe_bomb.png", + groups = {flammable = 2, not_in_creative_inventory = 1}, + + on_use = function(itemstack, user, pointed_thing) + + if pointed_thing.type == "node" then + hoe_area(pointed_thing.above, user) + else + throw_potion(itemstack, user) + + if not farming.is_creative(user:get_player_name()) then + + itemstack:take_item() + + return itemstack + end + end + end, +}) + +-- helper function + +local function node_not_num(nodename) + + local num = #nodename:split("_") + local str = "" + + if not num or num == 1 then return end + + for v = 1, (num - 1) do + str = str .. nodename:split("_")[v] .. "_" + end + + return str +end + +farming.scythe_not_drops = {"farming:trellis", "farming:beanpole"} + +farming.add_to_scythe_not_drops = function(item) + table.insert(farming.scythe_not_drops, item) +end + +-- Mithril Scythe (special item) + +minetest.register_tool("farming:scythe_mithril", { + description = S("Mithril Scythe (Use to harvest and replant crops)"), + inventory_image = "farming_scythe_mithril.png", + sound = {breaks = "default_tool_breaks"}, + + on_use = function(itemstack, placer, pointed_thing) + + if pointed_thing.type ~= "node" then return end + + local pos = pointed_thing.under + local name = placer:get_player_name() + + if minetest.is_protected(pos, name) then return end + + local node = minetest.get_node_or_nil(pos) + + if not node then return end + + local def = minetest.registered_nodes[node.name] + + if not def or not def.drop or not def.groups or not def.groups.plant then + return + end + + local drops = minetest.get_node_drops(node.name, "") + + if not drops or #drops == 0 or (#drops == 1 and drops[1] == "") then + return + end + + -- get crop name + local mname = node.name:split(":")[1] + local pname = node_not_num(node.name:split(":")[2]) + + if not pname then return end + + -- add dropped items + for _, dropped_item in pairs(drops) do + + -- dont drop items on this list + for _, not_item in pairs(farming.scythe_not_drops) do + + if dropped_item == not_item then + dropped_item = nil + end + end + + if dropped_item then + + local obj = minetest.add_item(pos, dropped_item) + + if obj then + + obj:set_velocity({ + x = math.random() - 0.5, y = 3, z = math.random() - 0.5}) + end + end + end + + -- Run script hook + for _, callback in pairs(core.registered_on_dignodes) do + callback(pos, node, placer) + end + + -- play sound + minetest.sound_play("default_grass_footstep", {pos = pos, gain = 1.0}, true) + + -- replace with seed or crop_1 + local replace = mname .. ":" .. pname .. "1" + + if minetest.registered_nodes[replace] then + + local p2 = minetest.registered_nodes[replace].place_param2 or 1 + + minetest.set_node(pos, {name = replace, param2 = p2}) + else + minetest.set_node(pos, {name = "air"}) + end + + if not farming.is_creative(name) then + + itemstack:add_wear(65535 / 350) -- 350 uses + + return itemstack + end + end +}) + +-- if moreores found add mithril scythe recipe + +if minetest.get_modpath("moreores") then + + minetest.register_craft({ + output = "farming:scythe_mithril", + recipe = { + {"", "moreores:mithril_ingot", "moreores:mithril_ingot"}, + {"moreores:mithril_ingot", "", "group:stick"}, + {"", "", "group:stick"} + } + }) +end diff --git a/mods/.farming_old/init.lua b/mods/.farming_old/init.lua new file mode 100644 index 00000000..8b658eb7 --- /dev/null +++ b/mods/.farming_old/init.lua @@ -0,0 +1,862 @@ +--[[ + Farming Redo Mod by TenPlus1 + NEW growing routine by prestidigitator + auto-refill by crabman77 +]] + +-- Translation support + +local S = minetest.get_translator("farming") + +-- global + +farming = { + mod = "redo", + version = "20240924", + path = minetest.get_modpath("farming"), + select = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}}, + select_final = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5}}, + registered_plants = {}, + min_light = 12, max_light = 15, + mapgen = minetest.get_mapgen_setting("mg_name"), + use_utensils = minetest.settings:get_bool("farming_use_utensils") ~= false, + mtg = minetest.get_modpath("default"), + eth = minetest.get_modpath("ethereal"), + mcl = minetest.get_modpath("mcl_core"), + sounds = {}, + register_decoration = function(crop,steps,alt_source) + biomes = asuna.features.crops[crop] + if not biomes then + return + end + + local decor + if alt_source then + decor = alt_source + else + decor = {} + for i = 0, (steps > 4 and 2 or 0) do + decor[i + 1] = "farming:" .. crop .. "_" .. (steps - i) + end + end + + local chars = {crop:byte()} + local seed = 11111 + for _,c in ipairs(chars) do + seed = seed + c + end + seed = seed + #crop + + minetest.register_decoration(biomes.inject_decoration({ + name = "farming:" .. crop, + deco_type = "simple", + place_on = "group:soil", + sidelen = 8, + noise_params = { + offset = -0.4125, + scale = 0.3575, + spread = {x = 14, y = 14, z = 14}, + seed = seed, + octaves = 2, + persist = 0.62, + lacunarity = 0.675, + }, + y_max = 31000, + y_min = 1, + decoration = decor, + })) + end, + mcl_hardness = 0.01, + translate = S +} + +-- determine which sounds to use, default or mcl_sounds + +local function sound_helper(snd) + + farming[snd] = (farming.mtg and default[snd]) or (farming.mcl and mcl_sounds[snd]) + or function() return {} end +end + +sound_helper("node_sound_defaults") +sound_helper("node_sound_stone_defaults") +sound_helper("node_sound_dirt_defaults") +sound_helper("node_sound_sand_defaults") +sound_helper("node_sound_gravel_defaults") +sound_helper("node_sound_wood_defaults") +sound_helper("node_sound_leaves_defaults") +sound_helper("node_sound_ice_defaults") +sound_helper("node_sound_metal_defaults") +sound_helper("node_sound_water_defaults") +sound_helper("node_sound_snow_defaults") +sound_helper("node_sound_glass_defaults") + +-- check for creative mode or priv + +local creative_mode_cache = minetest.settings:get_bool("creative_mode") + +function farming.is_creative(name) + return creative_mode_cache or minetest.check_player_privs(name, {creative = true}) +end + +-- stats, locals, settings, function helper + +local statistics = dofile(farming.path .. "/statistics.lua") +local random, floor = math.random, math.floor +local time_speed = tonumber(minetest.settings:get("time_speed")) or 72 +local SECS_PER_CYCLE = (time_speed > 0 and (24 * 60 * 60) / time_speed) or 0 +local function clamp(x, min, max) return (x < min and min) or (x > max and max) or x end + +-- return amount of day or night that has elapsed +-- dt is time elapsed, count_day if true counts day, otherwise night + +local function day_or_night_time(dt, count_day) + + local t_day = minetest.get_timeofday() + local t1_day = t_day - dt / SECS_PER_CYCLE + local t1_c, t2_c -- t1_c < t2_c and t2_c always in [0, 1) + + if count_day then + + if t_day < 0.25 then + t1_c = t1_day + 0.75 -- Relative to sunup, yesterday + t2_c = t_day + 0.75 + else + t1_c = t1_day - 0.25 -- Relative to sunup, today + t2_c = t_day - 0.25 + end + else + if t_day < 0.75 then + t1_c = t1_day + 0.25 -- Relative to sundown, yesterday + t2_c = t_day + 0.25 + else + t1_c = t1_day - 0.75 -- Relative to sundown, today + t2_c = t_day - 0.75 + end + end + + local dt_c = clamp(t2_c, 0, 0.5) - clamp(t1_c, 0, 0.5) -- this cycle + + if t1_c < -0.5 then + + local nc = floor(-t1_c) + + t1_c = t1_c + nc + dt_c = dt_c + 0.5 * nc + clamp(-t1_c - 0.5, 0, 0.5) + end + + return dt_c * SECS_PER_CYCLE +end + +-- Growth Logic + +local STAGE_LENGTH_AVG = tonumber(minetest.settings:get("farming_stage_length")) or 200 +local STAGE_LENGTH_DEV = STAGE_LENGTH_AVG / 6 + +-- quick start seed timer + +farming.start_seed_timer = function(pos) + + local timer = minetest.get_node_timer(pos) + local grow_time = floor(random(STAGE_LENGTH_DEV, STAGE_LENGTH_AVG)) + + timer:start(grow_time) +end + +-- return plant name and stage from node provided + +local function plant_name_stage(node) + + local name + + if type(node) == "table" then + + if node.name then name = node.name + elseif node.x and node.y and node.z then + node = minetest.get_node_or_nil(node) + name = node and node.name + end + else + name = tostring(node) + end + + if not name or name == "ignore" then return nil end + + local sep_pos = name:find("_[^_]+$") + + if sep_pos and sep_pos > 1 then + + local stage = tonumber(name:sub(sep_pos + 1)) + + if stage and stage >= 0 then + return name:sub(1, sep_pos - 1), stage + end + end + + return name, 0 +end + +-- Map from node name to +-- { plant_name = ..., name = ..., stage = n, stages_left = { node_name, ... } } + +local plant_stages = {} + +farming.plant_stages = plant_stages + +--- Registers the stages of growth of a (possible plant) node. + -- @param node - Node or position table, or node name. + -- @return - The (possibly zero) number of stages of growth the plant will go through + -- before being fully grown, or nil if not a plant. + +-- Recursive helper + +local function reg_plant_stages(plant_name, stage, force_last) + + local node_name = plant_name and plant_name .. "_" .. stage + local node_def = node_name and minetest.registered_nodes[node_name] + + if not node_def then return nil end + + local stages = plant_stages[node_name] + + if stages then return stages end + + if minetest.get_item_group(node_name, "growing") > 0 then + + local ns = reg_plant_stages(plant_name, stage + 1, true) + local stages_left = (ns and { ns.name, unpack(ns.stages_left) }) or {} + + stages = { + plant_name = plant_name, + name = node_name, + stage = stage, + stages_left = stages_left + } + + if #stages_left > 0 then + + local old_constr = node_def.on_construct + local old_destr = node_def.on_destruct + + minetest.override_item(node_name, { + + on_construct = function(pos) + + if old_constr then old_constr(pos) end + + farming.handle_growth(pos) + end, + + on_destruct = function(pos) + + minetest.get_node_timer(pos):stop() + + if old_destr then old_destr(pos) end + end, + + on_timer = function(pos, elapsed) + return farming.plant_growth_timer(pos, elapsed, node_name) + end, + }) + end + + elseif force_last then + + stages = { + plant_name = plant_name, + name = node_name, + stage = stage, + stages_left = {} + } + else + return nil + end + + plant_stages[node_name] = stages + + return stages +end + +-- split name and stage and register crop + +local function register_plant_node(node) + + local plant_name, stage = plant_name_stage(node) + + if plant_name then + + local stages = reg_plant_stages(plant_name, stage, false) + + return stages and #stages.stages_left + end +end + +-- check for further growth and set or stop timer + +local function set_growing(pos, stages_left) + + if not stages_left then return end + + local timer = minetest.get_node_timer(pos) + + if stages_left > 0 then + + if not timer:is_started() then + + local stage_length = statistics.normal(STAGE_LENGTH_AVG, STAGE_LENGTH_DEV) + + stage_length = clamp(stage_length, 0.5 * STAGE_LENGTH_AVG, 3.0 * STAGE_LENGTH_AVG) + + timer:set(stage_length, -0.5 * random() * STAGE_LENGTH_AVG) + end + + elseif timer:is_started() then + timer:stop() + end +end + +-- detects a crop at given position, starting or stopping growth timer when needed + +function farming.handle_growth(pos, node) + + if not pos then return end + + local stages_left = register_plant_node(node or pos) + + if stages_left then set_growing(pos, stages_left) end +end + +-- register crops nodes and add timer functions + +minetest.after(0, function() + + for _, node_def in pairs(minetest.registered_nodes) do + register_plant_node(node_def) + end +end) + +-- Just in case a growing type or added node is missed (also catches existing +-- nodes added to map before timers were incorporated). + +minetest.register_abm({ + label = "Start crop timer", + nodenames = {"group:growing"}, + interval = 300, + chance = 1, + catch_up = false, + + action = function(pos, node) + + -- skip if node timer already active + if minetest.get_node_timer(pos):is_started() then return end + + -- check if group:growing node is a seed + local def = minetest.registered_nodes[node.name] + + if def and def.groups and def.groups.seed then + + if def.on_timer then -- start node timer if found + + farming.start_seed_timer(pos) + + return + end + + local next_stage = def.next_plant + + def = minetest.registered_nodes[next_stage] + + if def then -- switch seed without timer to stage_1 of crop + + local p2 = def.place_param2 or 1 + + minetest.set_node(pos, {name = next_stage, param2 = p2}) + end + else + farming.handle_growth(pos, node) -- start normal crop timer + end + end +}) + +-- default check crop is on wet soil + +farming.can_grow = function(pos) + + local below = minetest.get_node({x = pos.x, y = pos.y -1, z = pos.z}) + + return minetest.get_item_group(below.name, "soil") >= 3 +end + +-- Plant timer function that grows plants under the right conditions. + +function farming.plant_growth_timer(pos, elapsed, node_name) + + local stages = plant_stages[node_name] + + if not stages then return false end + + local max_growth = #stages.stages_left + + if max_growth <= 0 then return false end + + local chk1 = minetest.registered_nodes[node_name].growth_check -- old + local chk2 = minetest.registered_nodes[node_name].can_grow -- new + + if chk1 then -- custom farming redo growth_check function + + if not chk1(pos, node_name) then return true end + + elseif chk2 then -- custom mt 5.9x farming can_grow function + + if not chk2(pos) then return true end + + -- default mt 5.9x farming.can_grow function + elseif not farming.can_grow(pos) then return true end + + local growth + local light_pos = {x = pos.x, y = pos.y, z = pos.z} + local lambda = elapsed / STAGE_LENGTH_AVG + + if lambda < 0.1 then return true end + + local MIN_LIGHT = minetest.registered_nodes[node_name].minlight or farming.min_light + local MAX_LIGHT = minetest.registered_nodes[node_name].maxlight or farming.max_light + + if max_growth == 1 or lambda < 2.0 then + + local light = (minetest.get_node_light(light_pos) or 0) + + if light < MIN_LIGHT or light > MAX_LIGHT then return true end + + growth = 1 + else + local night_light = (minetest.get_node_light(light_pos, 0) or 0) + local day_light = (minetest.get_node_light(light_pos, 0.5) or 0) + local night_growth = night_light >= MIN_LIGHT and night_light <= MAX_LIGHT + local day_growth = day_light >= MIN_LIGHT and day_light <= MAX_LIGHT + + if not night_growth then + + if not day_growth then return true end + + lambda = day_or_night_time(elapsed, true) / STAGE_LENGTH_AVG + + elseif not day_growth then + + lambda = day_or_night_time(elapsed, false) / STAGE_LENGTH_AVG + end + + growth = statistics.poisson(lambda, max_growth) + + if growth < 1 then return true end + end + + if minetest.registered_nodes[stages.stages_left[growth]] then + + local p2 = minetest.registered_nodes[stages.stages_left[growth] ].place_param2 or 1 + + minetest.set_node(pos, {name = stages.stages_left[growth], param2 = p2}) + else + return true + end + + return growth ~= max_growth +end + +-- refill placed plant by crabman (26/08/2015) updated by TenPlus1 + +function farming.refill_plant(player, plantname, index) + + local inv = player and player:get_inventory() ; if not inv then return end + + local old_stack = inv:get_stack("main", index) + + if old_stack:get_name() ~= "" then return end + + for i, stack in ipairs(inv:get_list("main")) do + + if stack:get_name() == plantname and i ~= index then + + inv:set_stack("main", index, stack) + stack:clear() + inv:set_stack("main", i, stack) + + return + end + end +end + +-- Place Seeds on Soil + +function farming.place_seed(itemstack, placer, pointed_thing, plantname) + + local pt = pointed_thing + + -- check if pointing at a node + if not itemstack or not pt or pt.type ~= "node" then return end + + local under = minetest.get_node(pt.under) + + -- am I right-clicking on something that has a custom on_place set? + -- thanks to Krock for helping with this issue :) + local def = minetest.registered_nodes[under.name] + + if placer and itemstack and def and def.on_rightclick then + return def.on_rightclick(pt.under, under, placer, itemstack, pt) + end + + local above = minetest.get_node(pt.above) + + -- check if pointing at the top of the node + if pt.above.y ~= pt.under.y + 1 then return end + + -- return if any of the nodes is not registered + if not minetest.registered_nodes[under.name] + or not minetest.registered_nodes[above.name] then return end + + -- can I replace above node, and am I pointing directly at soil + if not minetest.registered_nodes[above.name].buildable_to + or minetest.get_item_group(under.name, "soil") < 2 + or minetest.get_item_group(above.name, "plant") ~= 0 then return end + + -- is player planting seed? + local name = placer and placer:get_player_name() or "" + + -- if not protected then add node and remove 1 item from the itemstack + if not minetest.is_protected(pt.above, name) then + + local p2 = minetest.registered_nodes[plantname].place_param2 or 1 + + minetest.set_node(pt.above, {name = plantname, param2 = p2}) + + farming.start_seed_timer(pt.above) + + minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0}) + + minetest.log("action", string.format("%s planted %s at %s", + (placer and placer:is_player() and placer:get_player_name() or "A mod"), + itemstack:get_name(), minetest.pos_to_string(pt.above) + )) + + if placer and itemstack + and not farming.is_creative(placer:get_player_name()) then + + local name = itemstack:get_name() + + itemstack:take_item() + + -- check for refill + if itemstack:get_count() == 0 then + + minetest.after(0.2, farming.refill_plant, + placer, name, placer:get_wield_index()) + end + end + + return itemstack + end +end + +-- Function to register plants (default farming compatibility) + +farming.register_plant = function(name, def) + + if not def.steps then return nil end + + local mname = name:split(":")[1] + local pname = name:split(":")[2] + + -- Check def + def.description = def.description or S("Seed") + def.inventory_image = def.inventory_image or "unknown_item.png" + def.minlight = def.minlight or 12 + def.maxlight = def.maxlight or 15 + + -- Register seed + minetest.register_node(":" .. mname .. ":seed_" .. pname, { + + description = def.description, + tiles = {def.inventory_image}, + inventory_image = def.inventory_image, + wield_image = def.inventory_image, + drawtype = "signlike", + groups = { + seed = 1, snappy = 3, attached_node = 1, flammable = 2, growing = 1, + compostability = 65, handy = 1 + }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + place_param2 = 1, -- place seed flat + next_plant = mname .. ":" .. pname .. "_1", + + on_timer = function(pos, elapsed) + + local def = minetest.registered_nodes[mname .. ":" .. pname .. "_1"] + + if def then + minetest.swap_node(pos, {name = def.next_plant, param2 = def.place_param2}) + end + end, + + on_place = function(itemstack, placer, pointed_thing) + + return farming.place_seed(itemstack, placer, pointed_thing, + mname .. ":seed_" .. pname) + end + }) + + -- Register harvest + minetest.register_craftitem(":" .. mname .. ":" .. pname, { + description = pname:gsub("^%l", string.upper), + inventory_image = mname .. "_" .. pname .. ".png", + groups = def.groups or {flammable = 2}, + }) + + -- Register growing steps + for i = 1, def.steps do + + local base_rarity = 1 + + if def.steps ~= 1 then + base_rarity = 8 - (i - 1) * 7 / (def.steps - 1) + end + + local drop = { + items = { + {items = {mname .. ":" .. pname}, rarity = base_rarity}, + {items = {mname .. ":" .. pname}, rarity = base_rarity * 2}, + {items = {mname .. ":seed_" .. pname}, rarity = base_rarity}, + {items = {mname .. ":seed_" .. pname}, rarity = base_rarity * 2}, + } + } + + local sel = farming.select + local g = { + handy = 1, snappy = 3, flammable = 2, plant = 1, growing = 1, + attached_node = 1, not_in_creative_inventory = 1, + } + + -- Last step doesn't need growing=1 so Abm never has to check these + -- also increase selection box for visual indication plant has matured + if i == def.steps then + sel = farming.select_final + g.growing = 0 + end + + local node_name = mname .. ":" .. pname .. "_" .. i + + local next_plant = nil + + if i < def.steps then + next_plant = mname .. ":" .. pname .. "_" .. (i + 1) + end + + local desc = pname:gsub("^%l", string.upper) + + minetest.register_node(node_name, { + description = S(desc) .. S(" Crop"), + drawtype = "plantlike", + waving = 1, + tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"}, + paramtype = "light", + paramtype2 = def.paramtype2, + place_param2 = def.place_param2, + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = drop, + selection_box = sel, + groups = g, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults(), + minlight = def.minlight, + maxlight = def.maxlight, + next_plant = next_plant + }) + end + + -- add to farming.registered_plants + farming.registered_plants[mname .. ":" .. pname] = { + crop = mname .. ":" .. pname, + seed = mname .. ":seed_" .. pname, + steps = def.steps, + minlight = def.minlight, + maxlight = def.maxlight + } +-- print(dump(farming.registered_plants[mname .. ":" .. pname])) + + return {seed = mname .. ":seed_" .. pname, harvest = mname .. ":" .. pname} +end + +-- default settings + +farming.asparagus = 0.002 +farming.eggplant = 0.002 +farming.spinach = 0.002 +farming.carrot = 0.002 +farming.potato = 0.002 +farming.tomato = 0.002 +farming.cucumber = 0.002 +farming.corn = 0.002 +farming.coffee = 0.002 +farming.melon = 0.009 +farming.pumpkin = 0.009 +farming.cocoa = true +farming.raspberry = 0.002 +farming.blueberry = 0.002 +farming.rhubarb = 0.002 +farming.beans = 0.002 +farming.grapes = 0.002 +farming.barley = true +farming.chili = 0.003 +farming.hemp = 0.003 +farming.garlic = 0.002 +farming.onion = 0.002 +farming.pepper = 0.002 +farming.pineapple = 0.003 +farming.peas = 0.002 +farming.beetroot = 0.002 +farming.mint = 0.005 +farming.cabbage = 0.002 +farming.blackberry = 0.002 +farming.soy = 0.002 +farming.vanilla = 0.002 +farming.lettuce = 0.002 +farming.artichoke = 0.002 +farming.parsley = 0.002 +farming.sunflower = 0.002 +farming.ginger = 0.002 +farming.strawberry = 0.002 +farming.cotton = 0.003 +farming.grains = true +farming.rice = true + +-- Load new global settings if found inside mod folder + +local input = io.open(farming.path .. "/farming.conf", "r") + +if input then dofile(farming.path .. "/farming.conf") ; input:close() end + +-- load new world-specific settings if found inside world folder + +local worldpath = minetest.get_worldpath() + +input = io.open(worldpath .. "/farming.conf", "r") + +if input then dofile(worldpath .. "/farming.conf") ; input:close() end + +-- helper function to add {eatable} group to food items, also {flammable} + +function farming.add_eatable(item, hp) + + local def = minetest.registered_items[item] + + if def then + + local groups = table.copy(def.groups) or {} + + groups.eatable = hp ; groups.flammable = 2 + + minetest.override_item(item, {groups = groups}) + end +end + +-- recipe item list and alternatives + +dofile(farming.path .. "/item_list.lua") + +-- setup soil, register hoes, override grass + +if minetest.get_modpath("default") then + dofile(farming.path .. "/soil.lua") + dofile(farming.path .. "/hoes.lua") +end + +dofile(farming.path.."/grass.lua") + +-- disable crops Mineclone already has + +if farming.mcl then + farming.carrot = nil + farming.potato = nil + farming.melon = nil + farming.cocoa = nil + farming.beetroot = nil + farming.sunflower = nil + farming.pumpkin = nil +else + dofile(farming.path.."/crops/wheat.lua") -- default crop outwith mineclone +end + +dofile(farming.path.."/crops/cotton.lua") -- default crop + +-- helper function + +local function ddoo(file, check) + + if check then dofile(farming.path .. "/crops/" .. file) end +end + +-- add additional crops and food (if enabled) +ddoo("carrot.lua", farming.carrot) +ddoo("potato.lua", farming.potato) +ddoo("tomato.lua", farming.tomato) +ddoo("cucumber.lua", farming.cucumber) +ddoo("corn.lua", farming.corn) +ddoo("coffee.lua", farming.coffee) +ddoo("melon.lua", farming.melon) +ddoo("pumpkin.lua", farming.pumpkin) +ddoo("cocoa.lua", farming.cocoa) +ddoo("raspberry.lua", farming.raspberry) +ddoo("blueberry.lua", farming.blueberry) +ddoo("rhubarb.lua", farming.rhubarb) +ddoo("beans.lua", farming.beans) +ddoo("grapes.lua", farming.grapes) +ddoo("barley.lua", farming.barley) +ddoo("hemp.lua", farming.hemp) +ddoo("garlic.lua", farming.garlic) +ddoo("onion.lua", farming.onion) +ddoo("pepper.lua", farming.pepper) +ddoo("pineapple.lua", farming.pineapple) +ddoo("peas.lua", farming.peas) +ddoo("beetroot.lua", farming.beetroot) +ddoo("chili.lua", farming.chili) +ddoo("rye_oat.lua", farming.grains) +ddoo("rice.lua", farming.rice) +ddoo("mint.lua", farming.mint) +ddoo("cabbage.lua", farming.cabbage) +ddoo("blackberry.lua", farming.blackberry) +ddoo("soy.lua", farming.soy) +ddoo("vanilla.lua", farming.vanilla) +ddoo("lettuce.lua", farming.lettuce) +ddoo("artichoke.lua", farming.artichoke) +ddoo("parsley.lua", farming.parsley) +ddoo("sunflower.lua", farming.sunflower) +ddoo("strawberry.lua", farming.strawberry) +ddoo("asparagus.lua", farming.asparagus) +ddoo("eggplant.lua", farming.eggplant) +ddoo("spinach.lua", farming.eggplant) +ddoo("ginger.lua", farming.ginger) + +-- register food items, non-food items, recipes and stairs + +dofile(farming.path .. "/item_non_food.lua") +dofile(farming.path .. "/item_food.lua") +dofile(farming.path .. "/item_recipes.lua") +dofile(farming.path .. "/item_stairs.lua") + +if not farming.mcl then + dofile(farming.path .. "/compatibility.lua") -- Farming Plus compatibility +end + +if minetest.get_modpath("lucky_block") then + dofile(farming.path .. "/lucky_block.lua") +end + +print("[MOD] Farming Redo loaded") diff --git a/mods/.farming_old/item_food.lua b/mods/.farming_old/item_food.lua new file mode 100644 index 00000000..3842e5ab --- /dev/null +++ b/mods/.farming_old/item_food.lua @@ -0,0 +1,933 @@ + +local S = minetest.get_translator("farming") +local a = farming.recipe_items + +local function register_craftitem(condition,eatable,name,def) + if condition then + core.register_craftitem(name,def) + if eatable then + farming.add_eatable(eatable) + end + end +end + +local function register_node(condition,eatable,name,def) + if condition then + core.register_node(name,def) + if eatable then + farming.add_eatable(eatable) + end + end +end + +-- Flour + +register_craftitem(true,nil,"farming:flour", { + description = S("Flour"), + inventory_image = "farming_flour.png", + groups = {food_flour = 1, flammable = 1} +}) + +-- Garlic bulb + +register_craftitem(farming.garlic,1,"farming:garlic", { + description = S("Garlic"), + inventory_image = "crops_garlic.png", + on_use = minetest.item_eat(1), + groups = {food_garlic = 1, compostability = 55} +}) + +-- Garlic braid + +register_node(farming.garlic,nil,"farming:garlic_braid", { + description = S("Garlic Braid"), + inventory_image = "crops_garlic_braid.png", + wield_image = "crops_garlic_braid.png", + drawtype = "nodebox", + use_texture_alpha = "clip", + paramtype = "light", + paramtype2 = "facedir", + tiles = { + "crops_garlic_braid_top.png", + "crops_garlic_braid.png", + "crops_garlic_braid_side.png^[transformFx", + "crops_garlic_braid_side.png", + "crops_garlic_braid.png", + "crops_garlic_braid.png" + }, + groups = {vessel = 1, dig_immediate = 3, flammable = 3, compostability = 65, handy = 1}, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults(), + node_box = { + type = "fixed", fixed = {{-0.1875, -0.5, 0.5, 0.1875, 0.5, 0.125}} + } +}) + +-- Corn on the cob (texture by TenPlus1) + +register_craftitem(farming.corn,5,"farming:corn_cob", { + description = S("Corn on the Cob"), + inventory_image = "farming_corn_cob.png", + groups = {compostability = 65, food_corn_cooked = 1}, + on_use = minetest.item_eat(5) +}) + +-- Popcorn + +register_craftitem(farming.corn,4,"farming:popcorn", { + description = S("Popcorn"), + inventory_image = "farming_popcorn.png", + groups = {compostability = 55, food_popcorn = 1}, + on_use = minetest.item_eat(4) +}) + +-- Cornstarch + +register_craftitem(farming.corn,nil,"farming:cornstarch", { + description = S("Cornstarch"), + inventory_image = "farming_cornstarch.png", + groups = {food_cornstarch = 1, food_gelatin = 1, flammable = 2, compostability = 65} +}) + +-- Cup of coffee + +register_node(farming.coffee,2,"farming:coffee_cup", { + description = S("Cup of Coffee"), + drawtype = "torchlike", + tiles = {"farming_coffee_cup.png"}, + inventory_image = "farming_coffee_cup.png", + wield_image = "farming_coffee_cup.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1, drink = 1, handy = 1}, + is_ground_content = false, + on_use = minetest.item_eat(2, "vessels:drinking_glass"), + sounds = farming.node_sound_glass_defaults() +}) + +minetest.register_alias("farming:coffee_cup_hot", "farming:coffee_cup") +minetest.register_alias("farming:drinking_cup", "vessels:drinking_glass") + +-- Bar of of dark chocolate (thx to Ice Pandora for her deviantart.com chocolate tutorial) + +register_craftitem(farming.cocoa,3,"farming:chocolate_dark", { + description = S("Bar of Dark Chocolate"), + inventory_image = "farming_chocolate_dark.png", + on_use = minetest.item_eat(3) +}) + +-- Chocolate block (not edible) + +register_node(farming.cocoa,nil,"farming:chocolate_block", { + description = S("Chocolate Block"), + tiles = {"farming_chocolate_block.png"}, + is_ground_content = false, + groups = {cracky = 2, oddly_breakable_by_hand = 2, handy = 1}, + sounds = farming.node_sound_stone_defaults() +}) + +-- Bowl of chili + +register_craftitem(farming.chili,8,"farming:chili_bowl", { + description = S("Bowl of Chili"), + inventory_image = "farming_chili_bowl.png", + on_use = minetest.item_eat(8, a.bowl), + groups = {compostability = 65} +}) + +-- Chili powder + +register_craftitem(farming.chili,nil,"farming:chili_powder", { + description = S("Chili Powder"), + on_use = minetest.item_eat(-1), + inventory_image = "farming_chili_powder.png", + groups = {compostability = 45} +}) + +-- Carrot juice + +register_craftitem(farming.carrot,4,"farming:carrot_juice", { + description = S("Carrot Juice"), + inventory_image = "farming_carrot_juice.png", + on_use = minetest.item_eat(4, "vessels:drinking_glass"), + groups = {vessel = 1, drink = 1} +}) + +-- Blueberry Pie + +register_craftitem(farming.blueberry or core.registered_items["default:blueberries"],6,"farming:blueberry_pie", { + description = S("Blueberry Pie"), + inventory_image = "farming_blueberry_pie.png", + on_use = minetest.item_eat(6), + groups = {compostability = 75} +}) + +-- Blueberry muffin (thanks to sosogirl123 @ deviantart.com for muffin image) + +register_craftitem(farming.blueberry or core.registered_items["default:blueberries"],2,"farming:muffin_blueberry", { + description = S("Blueberry Muffin"), + inventory_image = "farming_blueberry_muffin.png", + on_use = minetest.item_eat(2), + groups = {compostability = 65} +}) + +-- Tomato soup + +register_craftitem(farming.tomato,8,"farming:tomato_soup", { + description = S("Tomato Soup"), + inventory_image = "farming_tomato_soup.png", + groups = {compostability = 65, drink = 1}, + on_use = minetest.item_eat(8, "farming:bowl") +}) + +-- sliced bread + +register_craftitem(true,1,"farming:bread_slice", { + description = S("Sliced Bread"), + inventory_image = "farming_bread_slice.png", + on_use = minetest.item_eat(1), + groups = {food_bread_slice = 1, compostability = 65} +}) + +-- toast + +register_craftitem(true,1,"farming:toast", { + description = S("Toast"), + inventory_image = "farming_toast.png", + on_use = minetest.item_eat(1), + groups = {food_toast = 1, compostability = 65} +}) + +-- toast sandwich + +register_craftitem(true,4,"farming:toast_sandwich", { + description = S("Toast Sandwich"), + inventory_image = "farming_toast_sandwich.png", + on_use = minetest.item_eat(4), + groups = {compostability = 85} +}) + +-- glass of water + +register_craftitem(true,nil,"farming:glass_water", { + description = S("Glass of Water"), + inventory_image = "farming_water_glass.png", + groups = {food_glass_water = 1, flammable = 3, vessel = 1} +}) + +-- Sugar cube + +register_node(true,nil,"farming:sugar_cube", { + description = S("Sugar Cube"), + tiles = {"farming_sugar_cube.png"}, + groups = {shovely = 1, handy = 1, crumbly = 2}, + is_ground_content = false, + floodable = true, + sounds = farming.node_sound_gravel_defaults(), + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 +}) + +-- Sugar caramel + +register_craftitem(true,nil,"farming:caramel", { + description = S("Caramel"), + inventory_image = "farming_caramel.png", + groups = {compostability = 40} +}) + +-- Salt + +register_node(true,nil,"farming:salt", { + description = S("Salt"), + inventory_image = "farming_salt.png", + wield_image = "farming_salt.png", + drawtype = "plantlike", + visual_scale = 0.8, + paramtype = "light", + tiles = {"farming_salt.png"}, + groups = {food_salt = 1, vessel = 1, dig_immediate = 3, attached_node = 1, handy = 1}, + is_ground_content = false, + sounds = farming.node_sound_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + -- special function to make salt crystals form inside water + dropped_step = function(self, pos, dtime) + + self.ctimer = (self.ctimer or 0) + dtime + if self.ctimer < 15.0 then return end + self.ctimer = 0 + + local needed + + if self.node_inside and self.node_inside.name == a.water_source then + needed = 8 + + elseif self.node_inside and self.node_inside.name == a.river_water_source then + needed = 9 + end + + if not needed then return end + + local objs = core.get_objects_inside_radius(pos, 0.5) + + if not objs or #objs ~= 1 then return end + + local salt, ent = nil, nil + + for k, obj in pairs(objs) do + + ent = obj:get_luaentity() + + if ent and ent.name == "__builtin:item" + and ent.itemstring == "farming:salt " .. needed then + + obj:remove() + + core.add_item(pos, "farming:salt_crystal") + + return false -- return with no further action + end + end + end +}) + +-- Salt Crystal + +register_node(true,nil,"farming:salt_crystal", { + description = S("Salt crystal"), + inventory_image = "farming_salt_crystal.png", + wield_image = "farming_salt_crystal.png", + drawtype = "plantlike", + visual_scale = 0.8, + paramtype = "light", + light_source = 1, + tiles = {"farming_salt_crystal.png"}, + groups = {dig_immediate = 3, attached_node = 1, handy = 1}, + is_ground_content = false, + sounds = farming.node_sound_defaults(), + selection_box = { + type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 +}) + +-- Mayonnaise + +register_node(true,3,"farming:mayonnaise", { + description = S("Mayonnaise"), + drawtype = "plantlike", + tiles = {"farming_mayo.png"}, + inventory_image = "farming_mayo.png", + wield_image = "farming_mayo.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(3), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.45, 0.25} + }, + groups = { + compostability = 65, food_mayonnaise = 1, vessel = 1, dig_immediate = 3, + attached_node = 1, handy = 1 + }, + sounds = farming.node_sound_glass_defaults() +}) + +-- Rose Water + +register_node(true,nil,"farming:rose_water", { + description = S("Rose Water"), + inventory_image = "farming_rose_water.png", + wield_image = "farming_rose_water.png", + drawtype = "plantlike", + visual_scale = 0.8, + paramtype = "light", + tiles = {"farming_rose_water.png"}, + groups = { + food_rose_water = 1, vessel = 1, dig_immediate = 3, attached_node = 1, handy = 1 + }, + is_ground_content = false, + sounds = farming.node_sound_defaults(), + selection_box = { + type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + } +}) + +-- Turkish Delight + +register_craftitem(true,2,"farming:turkish_delight", { + description = S("Turkish Delight"), + inventory_image = "farming_turkish_delight.png", + groups = {compostability = 85}, + on_use = minetest.item_eat(2) +}) + +-- Garlic Bread + +register_craftitem(farming.garlic,2,"farming:garlic_bread", { + description = S("Garlic Bread"), + inventory_image = "farming_garlic_bread.png", + groups = {compostability = 65}, + on_use = minetest.item_eat(2) +}) + +-- Donuts (thanks to Bockwurst for making the donut images) + +register_craftitem(true,4,"farming:donut", { + description = S("Donut"), + inventory_image = "farming_donut.png", + on_use = minetest.item_eat(4), + groups = {compostability = 65} +}) + +register_craftitem(farming.cocoa,6,"farming:donut_chocolate", { + description = S("Chocolate Donut"), + inventory_image = "farming_donut_chocolate.png", + on_use = minetest.item_eat(6), + groups = {compostability = 65} +}) + +register_craftitem(true,6,"farming:donut_apple", { + description = S("Apple Donut"), + inventory_image = "farming_donut_apple.png", + on_use = minetest.item_eat(6), + groups = {compostability = 65} +}) + +-- Porridge Oats + +register_craftitem(farming.grains and farming.soy,6,"farming:porridge", { + description = S("Porridge"), + inventory_image = "farming_porridge.png", + on_use = minetest.item_eat(6, a.bowl), + groups = {compostability = 65} +}) + +-- Jaffa Cake + +register_craftitem(farming.soy,6,"farming:jaffa_cake", { + description = S("Jaffa Cake"), + inventory_image = "farming_jaffa_cake.png", + on_use = minetest.item_eat(6), + groups = {compostability = 65} +}) + +-- Apple Pie + +register_craftitem(true,6,"farming:apple_pie", { + description = S("Apple Pie"), + inventory_image = "farming_apple_pie.png", + on_use = minetest.item_eat(6), + groups = {compostability = 75} +}) + +-- Cactus Juice + +register_craftitem(true,1,"farming:cactus_juice", { + description = S("Cactus Juice"), + inventory_image = "farming_cactus_juice.png", + groups = {vessel = 1, drink = 1, compostability = 55}, + + on_use = function(itemstack, user, pointed_thing) + + if user then + + local num = math.random(5) == 1 and -1 or 2 + + return minetest.do_item_eat(num, "vessels:drinking_glass", + itemstack, user, pointed_thing) + end + end +}) + +-- Pasta + +register_craftitem(true,nil,"farming:pasta", { + description = S("Pasta"), + inventory_image = "farming_pasta.png", + groups = {compostability = 65, food_pasta = 1} +}) + +-- Mac & Cheese + +register_craftitem(true,6,"farming:mac_and_cheese", { + description = S("Mac & Cheese"), + inventory_image = "farming_mac_and_cheese.png", + on_use = minetest.item_eat(6, a.bowl), + groups = {compostability = 65} +}) + +-- Spaghetti + +register_craftitem(farming.garlic and farming.tomato,8,"farming:spaghetti", { + description = S("Spaghetti"), + inventory_image = "farming_spaghetti.png", + on_use = minetest.item_eat(8), + groups = {compostability = 65} +}) + +-- Korean Bibimbap + +register_craftitem(farming.chili and farming.rice and farming.chili and farming.cabbage,8,"farming:bibimbap", { + description = S("Bibimbap"), + inventory_image = "farming_bibimbap.png", + on_use = minetest.item_eat(8, a.bowl), + groups = {compostability = 65} +}) + +-- Burger + +register_craftitem(farming.lettuce and farming.tomato,16,"farming:burger", { + description = S("Burger"), + inventory_image = "farming_burger.png", + on_use = minetest.item_eat(16), + groups = {compostability = 95} +}) + +-- Salad + +register_craftitem(farming.lettuce and farming.tomato,8,"farming:salad", { + description = S("Salad"), + inventory_image = "farming_salad.png", + on_use = minetest.item_eat(8, a.bowl), + groups = {compostability = 45} +}) + +-- Triple Berry Smoothie + +register_craftitem(farming.raspberry and farming.blackberry and farming.strawberry,6,"farming:smoothie_berry", { + description = S("Triple Berry Smoothie"), + inventory_image = "farming_berry_smoothie.png", + on_use = minetest.item_eat(6, "vessels:drinking_glass"), + groups = {vessel = 1, drink = 1, compostability = 65} +}) + +-- Patatas a la importancia + +register_craftitem(farming.garlic and farming.parsley and farming.potato and farming.onion,8,"farming:spanish_potatoes", { + description = S("Spanish Potatoes"), + inventory_image = "farming_spanish_potatoes.png", + on_use = minetest.item_eat(8, a.bowl), + groups = {compostability = 65} +}) + +-- Potato omelette + +register_craftitem(farming.onion and farming.potato,6,"farming:potato_omelet", { + description = S("Potato omelette"), + inventory_image = "farming_potato_omelet.png", + on_use = minetest.item_eat(6, a.bowl), + groups = {compostability = 65} +}) + +-- Paella + +register_craftitem(farming.peas and farming.pepper and farming.rice,8,"farming:paella", { + description = S("Paella"), + inventory_image = "farming_paella.png", + on_use = minetest.item_eat(8, a.bowl), + groups = {compostability = 65} +}) + +-- Vanilla Flan + +register_craftitem(farming.vanilla and farming.soy,6,"farming:flan", { + description = S("Vanilla Flan"), + inventory_image = "farming_vanilla_flan.png", + on_use = minetest.item_eat(6), + groups = {compostability = 65} +}) + +-- Vegan Cheese + +register_craftitem(farming.corn and farming.pepper and farming.soy,2,"farming:cheese_vegan", { + description = S("Vegan Cheese"), + inventory_image = "farming_cheese_vegan.png", + on_use = minetest.item_eat(2), + groups = {compostability = 65, food_cheese = 1} +}) + +-- Vegan Butter + +register_craftitem(farming.soy and farming.sunflower,nil,"farming:butter_vegan", { + description = S("Vegan Butter"), + inventory_image = "farming_vegan_butter.png", + groups = {food_butter = 1} +}) + +-- Onigiri + +register_craftitem(farming.rice,2,"farming:onigiri", { + description = S("Onigiri"), + inventory_image = "farming_onigiri.png", + on_use = minetest.item_eat(2), + groups = {compostability = 65} +}) + +-- Gyoza + +register_craftitem(farming.cabbage and farming.garlic and farming.onion,4,"farming:gyoza", { + description = S("Gyoza"), + inventory_image = "farming_gyoza.png", + on_use = minetest.item_eat(4), + groups = {compostability = 65} +}) + +-- Mochi + +register_craftitem(farming.rice,3,"farming:mochi", { + description = S("Mochi"), + inventory_image = "farming_mochi.png", + on_use = minetest.item_eat(3), + groups = {compostability = 65} +}) + +-- Gingerbread Man + +register_craftitem(farming.ginger,2,"farming:gingerbread_man", { + description = S("Gingerbread Man"), + inventory_image = "farming_gingerbread_man.png", + on_use = minetest.item_eat(2), + groups = {compostability = 85} +}) + +-- Mint tea +register_craftitem(farming.mint,2,"farming:mint_tea", { + description = S("Mint Tea"), + inventory_image = "farming_mint_tea.png", + on_use = minetest.item_eat(2, a.drinking_glass), + groups = {drink = 1} +}) + +-- Onion soup +register_craftitem(farming.onion,6,"farming:onion_soup", { + description = S("Onion Soup"), + inventory_image = "farming_onion_soup.png", + groups = {compostability = 65, drink = 1}, + on_use = minetest.item_eat(6, a.bowl) +}) + +-- Pea soup + +register_craftitem(farming.peas,4,"farming:pea_soup", { + description = S("Pea Soup"), + inventory_image = "farming_pea_soup.png", + groups = {compostability = 65, drink = 1}, + on_use = minetest.item_eat(4, a.bowl) +}) + +-- Ground pepper + +register_node(farming.pepper,nil,"farming:pepper_ground", { + description = S("Ground Pepper"), + inventory_image = "crops_pepper_ground.png", + wield_image = "crops_pepper_ground.png", + drawtype = "plantlike", + visual_scale = 0.8, + paramtype = "light", + tiles = {"crops_pepper_ground.png"}, + groups = { + vessel = 1, food_pepper_ground = 1, handy = 1, + dig_immediate = 3, attached_node = 1, compostability = 30 + }, + is_ground_content = false, + sounds = farming.node_sound_defaults(), + selection_box = { + type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + } +}) + +-- pineapple ring + +register_craftitem(farming.pineapple,1,"farming:pineapple_ring", { + description = S("Pineapple Ring"), + inventory_image = "farming_pineapple_ring.png", + groups = {food_pineapple_ring = 1, compostability = 45}, + on_use = minetest.item_eat(1) +}) + +-- Pineapple juice + +register_craftitem(farming.pineapple,4,"farming:pineapple_juice", { + description = S("Pineapple Juice"), + inventory_image = "farming_pineapple_juice.png", + on_use = minetest.item_eat(4, "vessels:drinking_glass"), + groups = {vessel = 1, drink = 1, compostability = 35} +}) + +-- Potato & cucumber Salad + +register_craftitem(farming.potato,10,"farming:potato_salad", { + description = S("Cucumber and Potato Salad"), + inventory_image = "farming_potato_salad.png", + on_use = minetest.item_eat(10, "farming:bowl") +}) + +-- Pumpkin dough + +register_craftitem(farming.pumpkin,nil,"farming:pumpkin_dough", { + description = S("Pumpkin Dough"), + inventory_image = "farming_pumpkin_dough.png" +}) + +-- Pumpkin bread + +register_craftitem(farming.pumpkin,8,"farming:pumpkin_bread", { + description = S("Pumpkin Bread"), + inventory_image = "farming_pumpkin_bread.png", + on_use = minetest.item_eat(8), + groups = {food_bread = 1} +}) + +-- Raspberry smoothie + +register_craftitem(farming.raspberry,2,"farming:smoothie_raspberry", { + description = S("Raspberry Smoothie"), + inventory_image = "farming_raspberry_smoothie.png", + on_use = minetest.item_eat(2, "vessels:drinking_glass"), + groups = {vessel = 1, drink = 1, compostability = 65} +}) + +-- Rhubarb pie + +register_craftitem(farming.rhubarb,6,"farming:rhubarb_pie", { + description = S("Rhubarb Pie"), + inventory_image = "farming_rhubarb_pie.png", + on_use = minetest.item_eat(6), + groups = {compostability = 65} +}) + +-- Rice flour + +register_craftitem(farming.rice,nil,"farming:rice_flour", { + description = S("Rice Flour"), + inventory_image = "farming_rice_flour.png", + groups = {food_rice_flour = 1, flammable = 1, compostability = 65} +}) + +-- Rice bread + +register_craftitem(farming.rice,5,"farming:rice_bread", { + description = S("Rice Bread"), + inventory_image = "farming_rice_bread.png", + on_use = minetest.item_eat(5), + groups = {food_rice_bread = 1, compostability = 65} +}) + +-- Multigrain flour + +register_craftitem(farming.grains,nil,"farming:flour_multigrain", { + description = S("Multigrain Flour"), + inventory_image = "farming_flour_multigrain.png", + groups = {food_flour = 1, flammable = 1}, +}) + + +-- Multigrain bread + +register_craftitem(farming.grains,7,"farming:bread_multigrain", { + description = S("Multigrain Bread"), + inventory_image = "farming_bread_multigrain.png", + on_use = minetest.item_eat(7), + groups = {food_bread = 1, compostability = 65} +}) + +-- Soy sauce + +register_node(farming.soy,nil,"farming:soy_sauce", { + description = S("Soy Sauce"), + drawtype = "plantlike", + tiles = {"farming_soy_sauce.png"}, + inventory_image = "farming_soy_sauce.png", + wield_image = "farming_soy_sauce.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} + }, + groups = { + vessel = 1, food_soy_sauce = 1, dig_immediate = 3, attached_node = 1, + compostability = 65, handy = 1 + }, + is_ground_content = false, + sounds = farming.node_sound_glass_defaults() +}) + +-- Soy milk + +register_node(farming.soy,2,"farming:soy_milk", { + description = S("Soy Milk"), + drawtype = "plantlike", + tiles = {"farming_soy_milk_glass.png"}, + inventory_image = "farming_soy_milk_glass.png", + wield_image = "farming_soy_milk_glass.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} + }, + on_use = minetest.item_eat(2, "vessels:drinking_glass"), + groups = { + vessel = 1, food_milk_glass = 1, dig_immediate = 3, handy = 1, + attached_node = 1, drink = 1, compostability = 65 + }, + is_ground_content = false, + sounds = farming.node_sound_glass_defaults() +}) + +-- Tofu + +register_craftitem(farming.soy,3,"farming:tofu", { + description = S("Tofu"), + inventory_image = "farming_tofu.png", + groups = { + food_tofu = 1, food_meat_raw = 1, compostability = 65, + }, + on_use = minetest.item_eat(3) +}) + +-- Cooked tofu + +register_craftitem(farming.soy,6,"farming:tofu_cooked", { + description = S("Cooked Tofu"), + inventory_image = "farming_tofu_cooked.png", + groups = {food_meat = 1, compostability = 65}, + on_use = minetest.item_eat(6) +}) + +-- Toasted sunflower seeds + +register_craftitem(farming.sunflower,1,"farming:sunflower_seeds_toasted", { + description = S("Toasted Sunflower Seeds"), + inventory_image = "farming_sunflower_seeds_toasted.png", + groups = {food_sunflower_seeds_toasted = 1, compostability = 65}, + on_use = minetest.item_eat(1) +}) + +-- Sunflower oil + +register_node(farming.sunflower,nil,"farming:sunflower_oil", { + description = S("Bottle of Sunflower Oil"), + drawtype = "plantlike", + tiles = {"farming_sunflower_oil.png"}, + inventory_image = "farming_sunflower_oil.png", + wield_image = "farming_sunflower_oil.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = { + food_oil = 1, vessel = 1, dig_immediate = 3, attached_node = 1, + flammable = 2, compostability = 65, handy = 1 + }, + sounds = farming.node_sound_glass_defaults() +}) + +-- Sunflower seed bread + +register_craftitem(farming.sunflower,8,"farming:sunflower_bread", { + description = S("Sunflower Seed Bread"), + inventory_image = "farming_sunflower_bread.png", + on_use = minetest.item_eat(8), + groups = {food_bread = 1} +}) + +-- Vanilla extract + +register_node(farming.vanilla and farming.corn,nil,"farming:vanilla_extract", { + description = S("Vanilla Extract"), + drawtype = "plantlike", + tiles = {"farming_vanilla_extract.png"}, + inventory_image = "farming_vanilla_extract.png", + wield_image = "farming_vanilla_extract.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1, handy = 1}, + sounds = farming.node_sound_glass_defaults(), +}) + +-- Jerusalem Artichokes with miso butter + +register_craftitem(farming.artichoke and farming.soy and farming.garlic,11,"farming:jerusalem_artichokes", { + description = S("Jerusalem Artichokes"), + inventory_image = "farming_jerusalem_artichokes.png", + on_use = minetest.item_eat(11, a.bowl) +}) + +--= Foods we shouldn't add when using Mineclonia/VoxeLibre + +if not farming.mcl then + + -- Bread + + register_craftitem(true,5,"farming:bread", { + description = S("Bread"), + inventory_image = "farming_bread.png", + on_use = minetest.item_eat(5), + groups = {food_bread = 1} + }) + + -- Cocoa beans + + register_craftitem(farming.cocoa,nil,"farming:cocoa_beans", { + description = S("Cocoa Beans"), + inventory_image = "farming_cocoa_beans.png", + groups = {compostability = 65, food_cocoa = 1, flammable = 2} + }) + + -- Chocolate cookie + + register_craftitem(farming.cocoa,2,"farming:cookie", { + description = S("Cookie"), + inventory_image = "farming_cookie.png", + on_use = minetest.item_eat(2) + }) + + -- Golden carrot + + register_craftitem(farming.carrot,10,"farming:carrot_gold", { + description = S("Golden Carrot"), + inventory_image = "farming_carrot_gold.png", + on_use = minetest.item_eat(10) + }) + + -- Beetroot soup + + register_craftitem(farming.beetroot,6,"farming:beetroot_soup", { + description = S("Beetroot Soup"), + inventory_image = "farming_beetroot_soup.png", + on_use = minetest.item_eat(6, "farming:bowl"), + groups = {drink = 1} + }) + + -- Sugar + + register_craftitem(true,nil,"farming:sugar", { + description = S("Sugar"), + inventory_image = "farming_sugar.png", + groups = {food_sugar = 1, flammable = 3} + }) + + -- Baked potato + + register_craftitem(farming.potato,6,"farming:baked_potato", { + description = S("Baked Potato"), + inventory_image = "farming_baked_potato.png", + on_use = minetest.item_eat(6) + }) +end diff --git a/mods/.farming_old/item_list.lua b/mods/.farming_old/item_list.lua new file mode 100644 index 00000000..078c440f --- /dev/null +++ b/mods/.farming_old/item_list.lua @@ -0,0 +1,126 @@ + +-- add group helper + +local function add_groups(item, groups) + + local def = minetest.registered_items[item] + + if def then + + local grps = table.copy(def.groups) or {} + + for k, v in pairs(groups) do + grps[k] = v + end + + minetest.override_item(item, {groups = grps}) + end +end + +-- default recipe items + +farming.recipe_items = { + + -- if utensils are disabled then use blank item + saucepan = farming.use_utensils and "farming:saucepan" or "", + pot = farming.use_utensils and "farming:pot" or "", + baking_tray = farming.use_utensils and "farming:baking_tray" or "", + skillet = farming.use_utensils and "farming:skillet" or "", + mortar_pestle = farming.use_utensils and "farming:mortar_pestle" or "", + cutting_board = farming.use_utensils and "farming:cutting_board" or "", + juicer = farming.use_utensils and "farming:juicer" or "", + mixing_bowl = farming.use_utensils and "farming:mixing_bowl" or "", + + water_source = "default:water_source", + river_water_source = "default:river_water_source", + bucket_empty = "bucket:bucket_empty", + bucket_water = "bucket:bucket_water", + bucket_river_water = "bucket:bucket_river_water", + drinking_glass = "vessels:drinking_glass", + glass_bottle = "vessels:glass_bottle", + sugar = "farming:sugar", + rose = "flowers:rose", + dye_red = "dye:red", + dye_pink = "dye:pink", + dye_orange = "dye:orange", + dye_green = "dye:green", + dye_brown = "dye:brown", + dye_blue = "dye:blue", + dye_violet = "dye:violet", + dye_yellow = "dye:yellow", + bowl = "farming:bowl", + flour = "group:food_flour", + bread = "farming:bread", + cactus = "default:cactus", + paper = "default:paper", + snow = "default:snow", + string = "farming:string", + wool = "wool:white", + steel_ingot = "default:steel_ingot", + clay_brick = "default:clay_brick", + stone = "default:stone", + glass = "default:glass", +} + +add_groups("default:apple", {food_apple = 1}) + + +-- if mineclone found then change recipe items + +if farming.mcl then + + local a = farming.recipe_items + + a.water_source = "mcl_core:water_source" + a.river_water_source = "mclx_core:river_water_source" + a.bucket_empty = "mcl_buckets:bucket_empty" + a.bucket_water = "mcl_buckets:bucket_water" + a.bucket_river_water = "mcl_buckets:bucket_river_water" + a.drinking_glass = "mcl_potions:glass_bottle" + a.glass_bottle = "mcl_potions:glass_bottle" + a.sugar = "mcl_core:sugar" + a.rose = "mcl_flowers:rose_bush" + a.dye_red = "mcl_dye:red" + a.dye_pink = "mcl_dye:pink" + a.dye_orange = "mcl_dye:orange" + a.dye_green = "mcl_dye:green" + a.dye_brown = "mcl_dye:brown" + a.dye_blue = "mcl_dye:blue" + a.dye_violet = "mcl_dye:violet" + a.dye_yellow = "mcl_dye:yellow" + a.bowl = "mcl_core:bowl" +-- a.flour = "mcl_farming:bread" + a.bread = "mcl_farming:bread" + a.cactus = "mcl_core:cactus" + a.paper = "mcl_core:paper" + a.snow = "mcl_throwing:snowball" + a.string = "mcl_mobitems:string" + a.wool = "mcl_wool:white" + a.steel_ingot = "mcl_core:iron_ingot" + a.clay_brick = "mcl_core:clay_lump" + a.stone = "mcl_core:stone" + a.glass = "mcl_core:glass" + + -- add missing groups for recipes to work properly + + add_groups("mcl_core:sugar", {food_sugar = 1}) + add_groups("mcl_throwing:egg", {food_egg = 1}) + add_groups("mcl_farming:wheat_item", {food_wheat = 1}) + add_groups("mcl_cocoas:cocoa_beans", {food_cocoa = 1}) + add_groups("mcl_core:apple", {food_apple = 1}) + add_groups("mcl_core:bowl", {food_bowl = 1}) + add_groups("mcl_mobitems:chicken", {food_chicken_raw = 1}) + add_groups("mcl_mobitems:cooked_chicken", {food_chicken = 1}) + add_groups("mcl_mushrooms:mushroom_brown", {food_mushroom = 1}) + add_groups("mcl_farming:carrot_item", {food_carrot = 1}) + add_groups("mcl_mobitems:cooked_beef", {food_meat = 1}) + add_groups("mcl_mobitems:beef", {food_meat_raw = 1}) + add_groups("mcl_farming:potato_item", {food_potato = 1}) + add_groups("mcl_farming:bread", {food_bread = 1}) + add_groups("mcl_mobitems:milk_bucket", {food_milk = 1}) + add_groups("mcl_ocean:dried_kelp", {food_seaweed = 1}) + add_groups("mcl_potions:river_water", {food_glass_water = 1}) + add_groups("mcl_dye:yellow", {food_lemon = 1, food_banana = 1}) + add_groups("mcl_dye:orange", {food_orange = 1}) + add_groups("mcl_flowers:sunflower", {food_olive_oil = 1, food_butter = 1}) +end diff --git a/mods/.farming_old/item_non_food.lua b/mods/.farming_old/item_non_food.lua new file mode 100644 index 00000000..bfe2a2cf --- /dev/null +++ b/mods/.farming_old/item_non_food.lua @@ -0,0 +1,282 @@ + +local S = minetest.get_translator("farming") + +local function register_craftitem(condition,name,def) + if condition then + core.register_craftitem(name,def) + end +end + +local function register_node(condition,name,def) + if condition then + core.register_node(name,def) + end +end + +-- saucepan + +register_craftitem(true,"farming:saucepan", { + description = S("Saucepan"), + inventory_image = "farming_saucepan.png", + groups = {food_saucepan = 1, flammable = 2} +}) + +-- cooking pot + +register_craftitem(true,"farming:pot", { + description = S("Cooking Pot"), + inventory_image = "farming_pot.png", + groups = {food_pot = 1, flammable = 2} +}) + +-- baking tray + +register_craftitem(true,"farming:baking_tray", { + description = S("Baking Tray"), + inventory_image = "farming_baking_tray.png", + groups = {food_baking_tray = 1, flammable = 2} +}) + +-- skillet + +register_craftitem(true,"farming:skillet", { + description = S("Skillet"), + inventory_image = "farming_skillet.png", + groups = {food_skillet = 1, flammable = 2} +}) + +-- mortar & pestle + +register_craftitem(true,"farming:mortar_pestle", { + description = S("Mortar and Pestle"), + inventory_image = "farming_mortar_pestle.png", + groups = {food_mortar_pestle = 1, flammable = 2} +}) + +-- cutting board + +register_craftitem(true,"farming:cutting_board", { + description = S("Cutting Board"), + inventory_image = "farming_cutting_board.png", + groups = {food_cutting_board = 1, flammable = 2} +}) + +-- juicer + +register_craftitem(true,"farming:juicer", { + description = S("Juicer"), + inventory_image = "farming_juicer.png", + groups = {food_juicer = 1, flammable = 2} +}) + +-- glass mixing bowl + +register_craftitem(true,"farming:mixing_bowl", { + description = S("Glass Mixing Bowl"), + inventory_image = "farming_mixing_bowl.png", + groups = {food_mixing_bowl = 1, flammable = 2} +}) + +-- Ethanol (thanks to JKMurray for this idea) + +register_node(farming.corn,"farming:bottle_ethanol", { + description = S("Bottle of Ethanol"), + drawtype = "plantlike", + tiles = {"farming_bottle_ethanol.png"}, + inventory_image = "farming_bottle_ethanol.png", + wield_image = "farming_bottle_ethanol.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1, handy = 1}, + sounds = farming.node_sound_glass_defaults() +}) + +-- straw + +register_node(true,"farming:straw", { + description = S("Straw"), + tiles = {"farming_straw.png"}, + is_ground_content = false, + groups = {handy = 1, snappy = 3, flammable = 4, fall_damage_add_percent = -30}, + sounds = farming.node_sound_leaves_defaults(), + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 +}) + +-- hemp oil + +register_node(farming.hemp,"farming:hemp_oil", { + description = S("Bottle of Hemp Oil"), + drawtype = "plantlike", + tiles = {"farming_hemp_oil.png"}, + inventory_image = "farming_hemp_oil.png", + wield_image = "farming_hemp_oil.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = { + food_oil = 1, vessel = 1, dig_immediate = 3, attached_node = 1, + compostability = 45, handy = 1 + }, + sounds = farming.node_sound_glass_defaults() +}) + +-- hemp fibre + +register_craftitem(farming.hemp,"farming:hemp_fibre", { + description = S("Hemp Fibre"), + inventory_image = "farming_hemp_fibre.png", + groups = {compostability = 55} +}) + +-- hemp block + +register_node(farming.hemp,"farming:hemp_block", { + description = S("Hemp Block"), + tiles = {"farming_hemp_block.png"}, + paramtype = "light", + groups = { + axey = 1, handy = 1, snappy = 2, oddly_breakable_by_hand = 1, flammable = 2, + compostability = 85 + }, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults(), + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 +}) + +-- hemp rope + +register_node(false,"farming:hemp_rope", { + description = S("Hemp Rope"), + walkable = false, + climbable = true, + sunlight_propagates = true, + paramtype = "light", + tiles = {"farming_hemp_rope.png"}, + wield_image = "farming_hemp_rope.png", + inventory_image = "farming_hemp_rope.png", + drawtype = "plantlike", + groups = { + handy = 1, axey = 1, swordy = 1, flammable = 2, choppy = 3, + oddly_breakable_by_hand = 3, compostability = 55 + }, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7} + }, + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 +}) + +--- Wooden scarecrow base + +register_node(false,"farming:scarecrow_bottom", { + description = S("Scarecrow Bottom"), + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + tiles = {"default_wood.png"}, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-1/16, -8/16, -1/16, 1/16, 8/16, 1/16}, + {-12/16, 4/16, -1/16, 12/16, 2/16, 1/16}, + } + }, + groups = {axey = 1, handy = 1, snappy = 3, flammable = 2}, + is_ground_content = false, + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 +}) + +--= Items we shouldn't add when using Mineclonia/VoxeLibre + +if not farming.mcl then + + -- Wooden bowl + + register_craftitem(true,"farming:bowl", { + description = S("Wooden Bowl"), + inventory_image = "farming_bowl.png", + groups = {food_bowl = 1, flammable = 2} + }) + + -- String + + register_craftitem(true,"farming:string", { + description = S("String"), + inventory_image = "farming_string.png", + groups = {flammable = 2} + }) + + -- Jack 'O Lantern + + register_node(farming.pumpkin,"farming:jackolantern", { + description = S("Jack 'O Lantern (punch to turn on and off)"), + tiles = { + "farming_pumpkin_bottom.png^farming_pumpkin_top.png", + "farming_pumpkin_bottom.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png^farming_pumpkin_face_off.png" + }, + paramtype2 = "facedir", + groups = { + handy = 1, snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2 + }, + is_ground_content = false, + sounds = farming.node_sound_wood_defaults(), + + on_punch = function(pos, node, puncher) + local name = puncher:get_player_name() or "" + if minetest.is_protected(pos, name) then return end + node.name = "farming:jackolantern_on" + minetest.swap_node(pos, node) + end, + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 + }) + + register_node(farming.pumpkin,"farming:jackolantern_on", { + tiles = { + "farming_pumpkin_bottom.png^farming_pumpkin_top.png", + "farming_pumpkin_bottom.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png^farming_pumpkin_face_on.png" + }, + light_source = minetest.LIGHT_MAX - 1, + paramtype2 = "facedir", + groups = { + handy = 1, snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, + not_in_creative_inventory = 1 + }, + is_ground_content = false, + sounds = farming.node_sound_wood_defaults(), + drop = "farming:jackolantern", + + on_punch = function(pos, node, puncher) + local name = puncher:get_player_name() or "" + if minetest.is_protected(pos, name) then return end + node.name = "farming:jackolantern" + minetest.swap_node(pos, node) + end, + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 + }) +end diff --git a/mods/.farming_old/item_recipes.lua b/mods/.farming_old/item_recipes.lua new file mode 100644 index 00000000..2b51729e --- /dev/null +++ b/mods/.farming_old/item_recipes.lua @@ -0,0 +1,1418 @@ + +local a = farming.recipe_items + +local function register_craft(condition,def) + if condition then + core.register_craft(def) + end +end + +-- flour recipes + +register_craft(farming.grains,{ + output = "farming:flour", + recipe = { + {"farming:rye", "farming:rye", "farming:rye"}, + {"farming:rye", a.mortar_pestle, ""} + }, + replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} +}) + +register_craft(farming.barley,{ + output = "farming:flour", + recipe = { + {"farming:barley", "farming:barley", "farming:barley"}, + {"farming:barley", a.mortar_pestle, ""} + }, + replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} +}) + +register_craft(farming.grains,{ + output = "farming:flour", + recipe = { + {"farming:oat", "farming:oat", "farming:oat"}, + {"farming:oat", a.mortar_pestle, ""} + }, + replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} +}) + +-- multigrain flour + +register_craft(farming.barley and farming.grains,{ + type = "shapeless", + output = "farming:flour_multigrain", + recipe = { + "group:food_wheat", "group:food_barley", "group:food_oats", + "group:food_rye", a.mortar_pestle + }, + replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} +}) + +-- multigrain bread + +register_craft(farming.grains,{ + type = "cooking", + cooktime = 15, + output = "farming:bread_multigrain", + recipe = "farming:flour_multigrain" +}) + +-- sliced bread + +register_craft(true,{ + output = "farming:bread_slice 5", + recipe = {{"group:food_bread", a.cutting_board}}, + replacements = {{"group:food_cutting_board", "farming:cutting_board"}} +}) + +-- toast + +register_craft(true,{ + type = "cooking", + cooktime = 3, + output = "farming:toast", + recipe = "farming:bread_slice" +}) + +-- toast sandwich + +register_craft(true,{ + output = "farming:toast_sandwich", + recipe = { + {"farming:bread_slice"}, + {"farming:toast"}, + {"farming:bread_slice"} + } +}) + +-- garlic bulb + +register_craft(farming.garlic,{ + output = "farming:garlic_clove 8", + recipe = {{"farming:garlic"}} +}) + +register_craft(farming.garlic,{ + output = "farming:garlic", + recipe = { + {"farming:garlic_clove", "farming:garlic_clove", "farming:garlic_clove"}, + {"farming:garlic_clove", "", "farming:garlic_clove"}, + {"farming:garlic_clove", "farming:garlic_clove", "farming:garlic_clove"} + } +}) + +-- garlic braid + +register_craft(farming.garlic,{ + output = "farming:garlic_braid", + recipe = { + {"farming:garlic", "farming:garlic", "farming:garlic"}, + {"farming:garlic", "farming:garlic", "farming:garlic"}, + {"farming:garlic", "farming:garlic", "farming:garlic"} + } +}) + +register_craft(farming.garlic,{ + type = "shapeless", + output = "farming:garlic 9", + recipe = {"farming:garlic_braid"} +}) + +-- corn on the cob + +register_craft(farming.corn,{ + type = "cooking", + cooktime = 10, + output = "farming:corn_cob", + recipe = "group:food_corn" +}) + +-- popcorn + +register_craft(farming.corn,{ + output = "farming:popcorn", + recipe = { + {"group:food_oil", "group:food_corn", a.pot} + }, + replacements = { + {"group:food_pot", "farming:pot"}, + {"group:food_oil", "vessels:glass_bottle"} + } +}) + +-- cornstarch + +register_craft(farming.corn,{ + output = "farming:cornstarch", + recipe = { + {a.mortar_pestle, "group:food_corn_cooked", a.baking_tray}, + {"", "group:food_bowl", ""}, + }, + replacements = { + {"group:food_mortar_pestle", "farming:mortar_pestle"}, + {"group:food_baking_tray", "farming:baking_tray"} + } +}) + +-- ethanol + +register_craft(farming.corn, { + output = "farming:bottle_ethanol", + recipe = { + {"group:food_corn", "group:food_corn", "group:food_corn"}, + {"group:food_corn", a.glass_bottle, "group:food_corn"}, + {"group:food_corn", "group:food_corn", "group:food_corn"} + } +}) + +-- cup of coffee + +register_craft(farming.coffee, { + output = "farming:coffee_cup", + recipe = { + {"group:food_coffee", "group:food_glass_water", a.saucepan} + }, + replacements = { + {"group:food_saucepan", "farming:saucepan"} + } +}) + +-- bar of dark chocolate + +register_craft(farming.cocoa, { + output = "farming:chocolate_dark", + recipe = { + {"group:food_cocoa", "group:food_cocoa", "group:food_cocoa"} + } +}) + +-- chocolate block + +register_craft(farming.cocoa,{ + output = "farming:chocolate_block", + recipe = { + {"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"}, + {"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"}, + {"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"} + } +}) + +register_craft(farming.cocoa,{ + output = "farming:chocolate_dark 9", + recipe = {{"farming:chocolate_block"}} +}) + +-- chili powder + +register_craft(farming.chili,{ + output = "farming:chili_powder", + recipe = { + {"farming:chili_pepper", a.mortar_pestle} + }, + replacements = {{"farming:mortar_pestle", "farming:mortar_pestle"}} +}) + +-- bowl of chili + +register_craft(farming.chili and farming.rice and farming.tomato and farming.chili and farming.beans,{ + output = "farming:chili_bowl", + recipe = { + {"group:food_chili_pepper", "group:food_rice", "group:food_tomato"}, + {"group:food_beans", "group:food_bowl", ""} + } +}) + +-- carrot juice + +register_craft(farming.carrot,{ + output = "farming:carrot_juice", + recipe = { + {a.juicer}, + {"group:food_carrot"}, + {"vessels:drinking_glass"} + }, + replacements = { + {"group:food_juicer", "farming:juicer"} + } +}) + +-- blueberry pie + +register_craft(farming.blueberry or core.registered_items["default:blueberries"],{ + output = "farming:blueberry_pie", + recipe = { + {"group:food_flour", "group:food_sugar", "group:food_blueberries"}, + {"", a.baking_tray, ""} + }, + replacements = {{"group:food_baking_tray", "farming:baking_tray"}} +}) + +-- blueberry muffin + +register_craft(farming.blueberry or core.registered_items["default:blueberries"],{ + output = "farming:muffin_blueberry 2", + recipe = { + {"group:food_blueberries", "group:food_bread", "group:food_blueberries"} + } +}) + +-- tomato soup + +register_craft(farming.tomato,{ + output = "farming:tomato_soup", + recipe = { + {"group:food_tomato"}, + {"group:food_tomato"}, + {"group:food_bowl"} + } +}) + +-- filter sea water into river water + +register_craft(farming.hemp,{ + output = a.bucket_river_water, + recipe = { + {"farming:hemp_fibre"}, + {"farming:hemp_fibre"}, + {a.bucket_water} + } +}) + +if farming.mcl then + + register_craft(farming.hemp,{ + output = "mcl_potions:river_water", + recipe = { + {"farming:hemp_fibre"}, + {"mcl_potions:water"} + } + }) +end + +-- glass of water + +register_craft(true,{ + output = "farming:glass_water 4", + recipe = { + {a.drinking_glass, a.drinking_glass}, + {a.drinking_glass, a.drinking_glass}, + {a.bucket_river_water, ""} + }, + replacements = {{a.bucket_river_water, a.bucket_empty}} +}) + +register_craft(true,{ + output = "farming:glass_water 4", + recipe = { + {a.drinking_glass, a.drinking_glass}, + {a.drinking_glass, a.drinking_glass}, + {a.bucket_water, "farming:hemp_fibre"} + }, + replacements = {{a.bucket_water, a.bucket_empty}} +}) + +if minetest.get_modpath("bucket_wooden") then + + register_craft(farming.hemp,{ + output = "farming:glass_water 4", + recipe = { + {a.drinking_glass, a.drinking_glass}, + {a.drinking_glass, a.drinking_glass}, + {"group:water_bucket_wooden", "farming:hemp_fibre"} + }, + replacements = {{"group:water_bucket_wooden", "bucket_wooden:bucket_empty"}} + }) +end + +-- sugar cube + +register_craft(true,{ + output = "farming:sugar_cube", + recipe = { + {a.sugar, a.sugar, a.sugar}, + {a.sugar, a.sugar, a.sugar}, + {a.sugar, a.sugar, a.sugar} + } +}) + +register_craft(true,{ + output = a.sugar .. " 9", + recipe = {{"farming:sugar_cube"}} +}) + +-- caramel + +register_craft(true,{ + type = "cooking", + cooktime = 6, + output = "farming:caramel", + recipe = "group:food_sugar" +}) + +-- salt + +register_craft(true,{ + type = "cooking", + cooktime = 15, + output = "farming:salt", + recipe = a.bucket_water, + replacements = {{a.bucket_water, a.bucket_empty}} +}) + +-- salt crystal + +register_craft(true,{ + output = "farming:salt 9", + recipe = { + {"farming:salt_crystal", a.mortar_pestle} + }, + replacements = {{"farming:mortar_pestle", "farming:mortar_pestle"}} +}) + +register_craft(true,{ + output = "farming:salt_crystal", + recipe = { + {"farming:salt", "farming:salt", "farming:salt"}, + {"farming:salt", "farming:salt", "farming:salt"}, + {"farming:salt", "farming:salt", "farming:salt"} + } +}) + +-- mayonnaise + +register_craft(true,{ + output = "farming:mayonnaise", + recipe = { + {"group:food_olive_oil", "group:food_lemon"}, + {"group:food_egg", "farming:salt"} + }, + replacements = {{"farming:olive_oil", a.glass_bottle}} +}) + +-- rose water + +register_craft(true,{ + output = "farming:rose_water", + recipe = { + {a.rose, a.rose, a.rose}, + {a.rose, a.rose, a.rose}, + {"group:food_glass_water", a.pot, a.glass_bottle} + }, + replacements = { + {"group:food_glass_water", a.drinking_glass}, + {"group:food_pot", "farming:pot"} + } +}) + +-- turkish delight + +register_craft(true,{ + output = "farming:turkish_delight 4", + recipe = { + {"group:food_gelatin", "group:food_sugar", "group:food_gelatin"}, + {"group:food_sugar", "group:food_rose_water", "group:food_sugar"}, + {"group:food_sugar", a.dye_pink, "group:food_sugar"} + }, + replacements = { + {"group:food_cornstarch", a.bowl}, + {"group:food_cornstarch", a.bowl}, + {"group:food_rose_water", a.glass_bottle} + } +}) + +-- garlic bread + +register_craft(farming.garlic,{ + output = "farming:garlic_bread", + recipe = { + {"group:food_toast", "group:food_garlic_clove", "group:food_garlic_clove"} + } +}) + +-- donuts + +register_craft(true,{ + output = "farming:donut 3", + recipe = { + {"", "group:food_wheat", ""}, + {"group:food_wheat", "group:food_sugar", "group:food_wheat"}, + {"", "group:food_wheat", ""} + } +}) + +register_craft(farming.cocoa,{ + output = "farming:donut_chocolate", + recipe = { + {"group:food_cocoa"}, + {"farming:donut"} + } +}) + +register_craft(true,{ + output = "farming:donut_apple", + recipe = { + {"group:food_apple"}, + {"farming:donut"} + } +}) + +-- porridge oats + +register_craft(farming.grains and farming.soy,{ + output = "farming:porridge", + recipe = { + {"group:food_oats", "group:food_oats", "group:food_oats"}, + {"group:food_oats", "group:food_bowl", "group:food_milk_glass"} + }, + replacements = { + {"mobs:glass_milk", a.drinking_glass}, + {"farming:soy_milk", a.drinking_glass} + } +}) + +-- jaffa cake + +register_craft(farming.soy,{ + output = "farming:jaffa_cake 3", + recipe = { + {a.baking_tray, "group:food_egg", "group:food_sugar"}, + {a.flour, "group:food_cocoa", "group:food_orange"}, + {"group:food_milk", "", ""} + }, + replacements = { + {"farming:baking_tray", "farming:baking_tray"}, + {"mobs:bucket_milk", a.bucket_empty}, + {"mobs:wooden_bucket_milk", "wooden_bucket:bucket_wood_empty"}, + {"farming:soy_milk", a.drinking_glass} + } +}) + +-- apple pie + +register_craft(true,{ + output = "farming:apple_pie", + recipe = { + {a.flour, "group:food_sugar", "group:food_apple"}, + {"", a.baking_tray, ""} + }, + replacements = {{"group:food_baking_tray", "farming:baking_tray"}} +}) + +-- cactus juice + +register_craft(true,{ + output = "farming:cactus_juice", + recipe = { + {a.juicer}, + {a.cactus}, + {a.drinking_glass} + }, + replacements = { + {"group:food_juicer", "farming:juicer"} + } +}) + +-- pasta + +register_craft(true,{ + output = "farming:pasta", + recipe = { + {a.flour, "group:food_butter", a.mixing_bowl} + }, + replacements = {{"group:food_mixing_bowl", "farming:mixing_bowl"}} +}) + +register_craft(true,{ + output = "farming:pasta", + recipe = { + {a.flour, "group:food_oil", a.mixing_bowl} + }, + replacements = { + {"group:food_mixing_bowl", "farming:mixing_bowl"}, + {"group:food_oil", a.glass_bottle} + } +}) + +-- mac & cheese + +register_craft(true,{ + output = "farming:mac_and_cheese", + recipe = { + {"group:food_pasta", "group:food_cheese", "group:food_bowl"} + } +}) + +-- spaghetti + +register_craft(farming.garlic and farming.tomato,{ + output = "farming:spaghetti", + recipe = { + {"group:food_pasta", "group:food_tomato", a.saucepan}, + {"group:food_garlic_clove", "group:food_garlic_clove", ""} + }, + replacements = {{"group:food_saucepan", "farming:saucepan"}} +}) + +-- korean bibimbap + +register_craft(farming.chili and farming.rice and farming.chili and farming.cabbage,{ + output = "farming:bibimbap", + recipe = { + {a.skillet, "group:food_bowl", "group:food_egg"}, + {"group:food_rice", "group:food_chicken_raw", "group:food_cabbage"}, + {"group:food_carrot", "group:food_chili_pepper", ""} + }, + replacements = {{"group:food_skillet", "farming:skillet"}} +}) + +register_craft(farming.chili and farming.cabbage and farming.carrot and farming.chili,{ + output = "farming:bibimbap", + type = "shapeless", + recipe = { + a.skillet, "group:food_bowl", "group:food_mushroom", + "group:food_rice", "group:food_cabbage", "group:food_carrot", + "group:food_mushroom", "group:food_chili_pepper" + }, + replacements = {{"group:food_skillet", "farming:skillet"}} +}) + +-- burger + +register_craft(farming.lettuce and farming.tomato,{ + output = "farming:burger", + recipe = { + {a.bread, "group:food_meat", "group:food_cheese"}, + {"group:food_tomato", "group:food_cucumber", "group:food_onion"}, + {"group:food_lettuce", "", ""} + } +}) + +-- salad + +register_craft(farming.lettuce and farming.tomato,{ + output = "farming:salad", + type = "shapeless", + recipe = { + "group:food_bowl", "group:food_tomato", "group:food_cucumber", + "group:food_lettuce", "group:food_oil" + } +}) + +-- triple berry smoothie + +register_craft(farming.raspberry and farming.blackberry and farming.strawberry,{ + output = "farming:smoothie_berry", + type = "shapeless", + recipe = { + "group:food_raspberries", "group:food_blackberries", + "group:food_strawberry", "group:food_banana", + a.drinking_glass + } +}) + +-- patatas a la importancia + +register_craft(farming.garlic and farming.parsley and farming.potato and farming.onion,{ + output = "farming:spanish_potatoes", + recipe = { + {"group:food_potato", "group:food_parsley", "group:food_potato"}, + {"group:food_egg", a.flour, "group:food_onion"}, + {"farming:garlic_clove", "group:food_bowl", a.skillet} + }, + replacements = {{"group:food_skillet", "farming:skillet"}} +}) + +-- potato omelette + +register_craft(farming.onion and farming.potato,{ + output = "farming:potato_omelet", + recipe = { + {"group:food_egg", "group:food_potato", "group:food_onion"}, + {a.skillet, "group:food_bowl", ""} + }, + replacements = {{"group:food_skillet", "farming:skillet"}} +}) + +-- paella + +register_craft(farming.peas and farming.pepper and farming.rice,{ + output = "farming:paella", + recipe = { + {"group:food_rice", a.dye_orange, "farming:pepper_red"}, + {"group:food_peas", "group:food_chicken", "group:food_bowl"}, + {"", a.skillet, ""} + }, + replacements = {{"group:food_skillet", "farming:skillet"}} +}) + +-- vanilla flan + +register_craft(farming.vanilla and farming.soy,{ + output = "farming:flan", + recipe = { + {"group:food_sugar", "group:food_milk", "farming:caramel"}, + {"group:food_egg", "group:food_egg", "farming:vanilla_extract"} + }, + replacements = { + {"cucina_vegana:soy_milk", a.drinking_glass}, + {"mobs:bucket_milk", "bucket:bucket_empty"}, + {"mobs:wooden_bucket_milk", "wooden_bucket:bucket_wood_empty"}, + {"farming:vanilla_extract", a.glass_bottle} + } +}) + +-- vegan cheese + +register_craft(farming.corn and farming.pepper and farming.soy,{ + output = "farming:cheese_vegan", + recipe = { + {"farming:soy_milk", "farming:soy_milk", "farming:soy_milk"}, + {"group:food_salt", "group:food_peppercorn", "farming:bottle_ethanol"}, + {"group:food_gelatin", a.pot, ""} + }, + replacements = { + {"farming:soy_milk", a.drinking_glass .. " 3"}, + {"farming:pot", "farming:pot"}, + {"farming:bottle_ethanol", a.glass_bottle} + } +}) + +register_craft(farming.pepper and farming.soy,{ + output = "farming:cheese_vegan", + recipe = { + {"farming:soy_milk", "farming:soy_milk", "farming:soy_milk"}, + {"group:food_salt", "group:food_peppercorn", "group:food_lemon"}, + {"group:food_gelatin", a.pot, ""} + }, + replacements = { + {"farming:soy_milk", a.drinking_glass .. " 3"}, + {"farming:pot", "farming:pot"} + } +}) + +-- vegan butter + +register_craft(farming.soy and farming.sunflower,{ + output = "farming:butter_vegan", + recipe = { + {"farming:soy_milk", "farming:sunflower_oil", "farming:soy_milk"}, + {"group:food_salt", a.dye_yellow, "farming:mixing_bowl"} + }, + replacements = { + {"farming:soy_milk", a.drinking_glass .. " 2"}, + {"farming:sunflower_oil", a.glass_bottle}, + {"farming:mixing_bowl", "farming:mixing_bowl"} + } +}) + +-- onigiri + +register_craft(farming.rice,{ + output = "farming:onigiri", + recipe = { + {"group:food_rice", "group:food_salt", "group:food_rice"}, + {"", "group:food_seaweed", ""} + } +}) + +-- gyoza + +register_craft(farming.cabbage and farming.garlic and farming.onion,{ + output = "farming:gyoza 4", + recipe = { + {"group:food_cabbage", "group:food_garlic_clove", "group:food_onion"}, + {"group:food_meat_raw", "group:food_salt", a.flour}, + {"", a.skillet, ""} + + }, + replacements = { + {"group:food_skillet", "farming:skillet"} + } +}) + +-- mochi + +register_craft(farming.rice,{ + output = "farming:mochi", + recipe = { + {"", a.mortar_pestle, ""}, + {"group:food_rice", "group:food_sugar", "group:food_rice"}, + {"", "group:food_glass_water", ""} + }, + replacements = { + {"group:food_mortar_pestle", "farming:mortar_pestle"}, + {"group:food_glass_water", a.drinking_glass} + } +}) + +-- gingerbread man + +register_craft(farming.ginger,{ + output = "farming:gingerbread_man 3", + recipe = { + {"", "group:food_egg", ""}, + {"group:food_wheat", "group:food_ginger", "group:food_wheat"}, + {"group:food_sugar", "", "group:food_sugar"} + } +}) + +-- mint tea + +register_craft(farming.mint,{ + output = "farming:mint_tea", + recipe = { + {"group:food_mint", "group:food_mint", "group:food_mint"}, + {"group:food_glass_water", a.juicer, ""} + }, + replacements = { + {"group:food_juicer", "farming:juicer"} + } +}) + +-- onion soup + +register_craft(farming.onion,{ + output = "farming:onion_soup", + recipe = { + {"group:food_onion", "group:food_onion", "group:food_onion"}, + {"group:food_onion", "group:food_bowl", "group:food_onion"}, + {"", a.pot, ""} + }, + replacements = {{"farming:pot", "farming:pot"}} +}) + +-- pea soup + +register_craft(farming.peas,{ + output = "farming:pea_soup", + recipe = { + {"group:food_peas"}, + {"group:food_peas"}, + {"group:food_bowl"} + } +}) + +-- ground pepper + +register_craft(farming.pepper, { + output = "farming:pepper_ground", + recipe = { + {"group:food_peppercorn"}, + {a.glass_bottle}, + {a.mortar_pestle} + }, + replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} +}) + +-- pineapple ring + +register_craft(farming.pineapple, { + output = "farming:pineapple_ring 5", + recipe = {{"group:food_pineapple"}}, + replacements = {{"farming:pineapple", "farming:pineapple_top"}} +}) + +-- pineapple juice + +register_craft(farming.pineapple,{ + output = "farming:pineapple_juice", + recipe = { + {"group:food_pineapple_ring", "group:food_pineapple_ring", + "group:food_pineapple_ring"}, + {"", a.drinking_glass, ""}, + {"", a.juicer, ""} + }, + replacements = { + {"group:food_juicer", "farming:juicer"} + } +}) + +register_craft(farming.pineapple,{ + output = "farming:pineapple_juice 2", + recipe = { + {a.drinking_glass, "group:food_pineapple", a.drinking_glass}, + {"", a.juicer, ""} + }, + replacements = { + {"group:food_juicer", "farming:juicer"} + } +}) + +-- potato & cucumber salad + +register_craft(farming.cucumber and farming.potato,{ + output = "farming:potato_salad", + recipe = { + {"group:food_cucumber"}, + {"farming:baked_potato"}, + {"group:food_bowl"} + } +}) + +-- melon slice / block + +register_craft(farming.melon,{ + output = "farming:melon_8", + recipe = { + {"farming:melon_slice", "farming:melon_slice"}, + {"farming:melon_slice", "farming:melon_slice"} + } +}) + +register_craft(farming.melon,{ + output = "farming:melon_slice 4", + recipe = {{"farming:melon_8", a.cutting_board}}, + replacements = {{"farming:cutting_board", "farming:cutting_board"}} +}) + +-- pumpkin slice / block + +register_craft(farming.pumpkin,{ + output = "farming:pumpkin", + recipe = { + {"farming:pumpkin_slice", "farming:pumpkin_slice"}, + {"farming:pumpkin_slice", "farming:pumpkin_slice"} + } +}) + +register_craft(farming.pumpkin,{ + output = "farming:pumpkin_slice 4", + recipe = {{"farming:pumpkin", a.cutting_board}}, + replacements = {{"farming:cutting_board", "farming:cutting_board"}} +}) + +-- pumpkin dough + +register_craft(farming.pumpkin,{ + output = "farming:pumpkin_dough", + recipe = { + {"group:food_pumpkin_slice", "group:food_flour", "group:food_pumpkin_slice"} + } +}) + +-- pumpkin bread + +register_craft(farming.pumpkin,{ + type = "cooking", + output = "farming:pumpkin_bread", + recipe = "farming:pumpkin_dough", + cooktime = 10 +}) + +-- raspberry smoothie + +register_craft(farming.raspberry,{ + output = "farming:smoothie_raspberry", + recipe = { + {a.snow}, + {"group:food_raspberries"}, + {a.drinking_glass} + } +}) + +-- rhubarb pie + +register_craft(farming.rhubarb,{ + output = "farming:rhubarb_pie", + recipe = { + {a.baking_tray, "group:food_sugar", ""}, + {"group:food_rhubarb", "group:food_rhubarb", "group:food_rhubarb"}, + {"group:food_wheat", "group:food_wheat", "group:food_wheat"} + }, + replacements = {{"group:food_baking_tray", "farming:baking_tray"}} +}) + +-- rice flour + +register_craft(farming.rice,{ + output = "farming:rice_flour", + recipe = { + {"farming:rice", "farming:rice", "farming:rice"}, + {"farming:rice", a.mortar_pestle, ""} + }, + replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} +}) + +-- rice bread + +register_craft(farming.rice,{ + type = "cooking", + cooktime = 15, + output = "farming:rice_bread", + recipe = "farming:rice_flour" +}) + +-- soy sauce + +register_craft(farming.soy, { + output = "farming:soy_sauce", + recipe = { + {"group:food_soy", "group:food_salt", "group:food_soy"}, + {a.juicer, a.bucket_water, a.glass_bottle} + }, + replacements = { + {a.bucket_water, a.bucket_empty}, + {"group:food_juicer", "farming:juicer"} + } +}) + +-- soy milk + +register_craft(farming.soy and farming.vanilla and farming.corn, { + output = "farming:soy_milk", + recipe = { + {"group:food_soy", "group:food_soy", "group:food_soy"}, + {"farming:vanilla_extract", "bucket:bucket_water", a.drinking_glass} + }, + replacements = { + {a.bucket_water, a.bucket_empty}, + {"farming:vanilla_extract", a.glass_bottle} + } +}) + +-- tofu + +register_craft(farming.soy,{ + output = "farming:tofu", + recipe = { + {"group:food_soy", "group:food_soy", "group:food_soy"}, + {"group:food_soy", "group:food_soy", a.baking_tray} + }, + replacements = {{"farming:baking_tray", "farming:baking_tray"}} +}) + +-- cooked tofu + +register_craft(true,{ + type = "cooking", + output = "farming:tofu_cooked", + recipe = "farming:tofu", + cooktime = 5 +}) + +-- vanilla extract + +register_craft(farming.corn and farming.vanilla, { + output = "farming:vanilla_extract", + recipe = { + {"group:food_vanilla", "group:food_vanilla", "group:food_vanilla"}, + {"group:food_vanilla", "farming:bottle_ethanol", "group:food_glass_water"}, + }, + replacements = { + {"group:food_glass_water", a.drinking_glass} + } +}) + +-- jerusalem artichokes + +register_craft(farming.artichoke and farming.soy and farming.garlic,{ + output = "farming:jerusalem_artichokes", + recipe = { + {"group:food_artichoke", "group:food_garlic_clove", "group:food_artichoke"}, + {"group:food_soy", "group:food_salt", "group:food_soy"}, + {"group:food_butter", "group:food_skillet", "group:food_bowl"} + }, + replacements = {{"group:food_skillet", "farming:skillet"}} +}) + +-- wooden scarecrow base + +register_craft(farming.pumpkin,{ + output = "farming:scarecrow_bottom", + recipe = { + {"", "group:stick", ""}, + {"group:stick", "group:stick", "group:stick"}, + {"", "group:stick", ""} + } +}) + +-- beanpole + +register_craft(farming.beans,{ + output = "farming:beanpole", + recipe = { + {"", "", ""}, + {"group:stick", "", "group:stick"}, + {"group:stick", "", "group:stick"} + } +}) + +-- trellis + +register_craft(farming.grapes,{ + output = "farming:trellis", + recipe = { + {"group:stick", "group:stick", "group:stick"}, + {"group:stick", "group:stick", "group:stick"}, + {"group:stick", "group:stick", "group:stick"} + } +}) + +-- cotton to wool + +register_craft(true,{ + output = a.wool, + recipe = { + {"farming:cotton", "farming:cotton"}, + {"farming:cotton", "farming:cotton"} + } +}) + +-- string + +register_craft(true,{ + output = a.string .. " 2", + recipe = { + {"farming:cotton"}, + {"farming:cotton"} + } +}) + +-- saucepan + +register_craft(true,{ + output = "farming:saucepan", + recipe = { + {a.steel_ingot, "", ""}, + {"", "group:stick", ""} + } +}) + +-- cooking pot + +register_craft(true,{ + output = "farming:pot", + recipe = { + {"group:stick", a.steel_ingot, a.steel_ingot}, + {"", a.steel_ingot, a.steel_ingot} + } +}) + +-- baking tray + +register_craft(true,{ + output = "farming:baking_tray", + recipe = { + {a.clay_brick, a.clay_brick, a.clay_brick}, + {a.clay_brick, "", a.clay_brick}, + {a.clay_brick, a.clay_brick, a.clay_brick} + } +}) + +-- skillet + +register_craft(true,{ + output = "farming:skillet", + recipe = { + {a.steel_ingot, "", ""}, + {"", a.steel_ingot, ""}, + {"", "", "group:stick"} + } +}) + +-- mortar & pestle + +register_craft(true,{ + output = "farming:mortar_pestle", + recipe = { + {"group:stone", "group:stick", "group:stone"}, + {"", "group:stone", ""} + } +}) + +-- cutting board + +register_craft(true,{ + output = "farming:cutting_board", + recipe = { + {a.steel_ingot, "", ""}, + {"", "group:stick", ""}, + {"", "", "group:wood"} + } +}) + +-- juicer + +register_craft(true,{ + output = "farming:juicer", + recipe = { + {"", "group:stone", ""}, + {"group:stone", "", "group:stone"} + } +}) + +-- glass mixing bowl + +register_craft(true,{ + output = "farming:mixing_bowl", + recipe = { + {a.glass, "group:stick", a.glass}, + {"", a.glass, ""} + } +}) + +register_craft(true, { + output = "vessels:glass_fragments", + recipe = {{"farming:mixing_bowl"}} +}) + +-- hemp oil + +register_craft(farming.hemp, { + output = "farming:hemp_oil", + recipe = { + {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}, + {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}, + {"", a.glass_bottle, ""} + } +}) + +register_craft(farming.hemp, { + output = "farming:hemp_oil", + recipe = { + {"farming:seed_hemp", "farming:seed_hemp", "farming:seed_hemp"}, + {"farming:seed_hemp", "farming:seed_hemp", "farming:seed_hemp"}, + {"farming:seed_hemp", a.glass_bottle, "farming:seed_hemp"} + } +}) + +-- hemp fibre + +register_craft(farming.hemp, { + output = "farming:hemp_fibre 8", + recipe = { + {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}, + {"farming:hemp_leaf", "group:water_bucket", "farming:hemp_leaf"}, + {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"} + }, + replacements = {{"group:water_bucket", a.bucket_empty}} +}) + +if minetest.get_modpath("bucket_wooden") then + + register_craft(farming.hemp, { + output = "farming:hemp_fibre 8", + recipe = { + {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}, + {"farming:hemp_leaf", "group:water_bucket_wooden", "farming:hemp_leaf"}, + {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"} + }, + replacements = {{"group:water_bucket_wooden", "bucket_wooden:bucket_empty"}} + }) +end + +-- hemp block + +register_craft(farming.hemp, { + output = "farming:hemp_block", + recipe = { + {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"}, + {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"}, + {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"} + } +}) + +-- hemp rope + +register_craft(farming.hemp, { + output = "farming:hemp_rope 6", + recipe = { + {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"}, + {"farming:cotton", "farming:cotton", "farming:cotton"}, + {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"} + } +}) + +-- paper + +register_craft(farming.hemp, { + output = a.paper .. " 3", + recipe = { + {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"} + } +}) + +-- straw + +local tmp = farming.mcl and "farming:rye" or "farming:wheat" + +register_craft(true,{ + output = "farming:straw 3", + recipe = { + {tmp, tmp, tmp}, + {tmp, tmp, tmp}, + {tmp, tmp, tmp} + } +}) + +register_craft(true,{ + output = tmp .. " 3", + recipe = {{"farming:straw"}} +}) + +--= Recipes we shouldn't add when using Mineclonia/VoxeLibre + +if not farming.mcl then + + -- Wheat flour + + register_craft(true,{ + output = "farming:flour", + recipe = { + {"farming:wheat", "farming:wheat", "farming:wheat"}, + {"farming:wheat", a.mortar_pestle, ""} + }, + replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} + }) + + -- Bread + + register_craft(true,{ + type = "cooking", + cooktime = 15, + output = "farming:bread", + recipe = "farming:flour" + }) + + -- Cocoa beans + + register_craft(farming.cocoa,{ + type = "cooking", + cooktime = 5, + output = "farming:cocoa_beans", + recipe = "farming:cocoa_beans_raw" + }) + + -- Chocolate cookie + + register_craft(farming.cocoa, { + output = "farming:cookie 8", + recipe = { + {"group:food_wheat", "group:food_cocoa", "group:food_wheat" } + } + }) + + -- Golden carrot + + register_craft(farming.carrot,{ + output = "farming:carrot_gold", + recipe = {{"group:food_carrot", "default:gold_lump"}} + }) + + -- Beetroot soup + + register_craft(farming.beetroot,{ + output = "farming:beetroot_soup", + recipe = { + {"group:food_beetroot", "group:food_beetroot", "group:food_beetroot"}, + {"group:food_beetroot", "group:food_bowl", "group:food_beetroot"} + } + }) + + -- Sugar + + register_craft(true,{ + type = "cooking", + cooktime = 3, + output = "farming:sugar 2", + recipe = "default:papyrus" + }) + + -- Baked potato + + register_craft(farming.potato,{ + type = "cooking", + cooktime = 10, + output = "farming:baked_potato", + recipe = "group:food_potato" + }) + + -- Toasted sunflower seeds + + register_craft(farming.sunflower,{ + type = "cooking", + cooktime = 10, + output = "farming:sunflower_seeds_toasted", + recipe = "farming:seed_sunflower" + }) + + -- Sunflower oil + + local tmp = "group:food_sunflower_seeds" + + register_craft(farming.sunflower, { + output = "farming:sunflower_oil", + recipe = { + {tmp, tmp, tmp}, + {tmp, tmp, tmp}, + {tmp, a.glass_bottle, tmp} + } + }) + + -- Sunflower seed bread + + register_craft(farming.sunflower,{ + output = "farming:sunflower_bread", + recipe = { + { + "group:food_sunflower_seeds_toasted", + "group:food_bread", + "group:food_sunflower_seeds_toasted" + } + } + }) + + -- Jack 'o lantern + + register_craft(farming.pumpkin,{ + output = "farming:jackolantern", + recipe = { + {"default:torch"}, + {"group:food_pumpkin"} + } + }) + + -- Wooden bowl + + register_craft(true,{ + output = "farming:bowl 4", + recipe = { + {"group:wood", "", "group:wood"}, + {"", "group:wood", ""} + } + }) +end + +-- dye recipes + +register_craft(farming.beans,{output = a.dye_green, recipe = {{"farming:beans"}}}) +register_craft(farming.beetroot,{output = a.dye_red, recipe = {{"group:food_beetroot"}}}) +register_craft(farming.blueberry,{output = a.dye_blue, recipe = {{"farming:blueberries"}}}) +register_craft(farming.chili,{output = a.dye_red, recipe = {{"farming:chili_pepper"}}}) +register_craft(farming.cocoa,{output = a.dye_brown, recipe = {{"farming:cocoa_beans"}}}) +register_craft(farming.grapes,{output = a.dye_violet, recipe = {{"farming:grapes"}}}) +register_craft(farming.onion,{output = a.dye_yellow, recipe = {{"group:food_onion"}}}) + +-- fuel items + +register_craft(true,{type = "fuel", recipe = "farming:straw", burntime = 3}) +register_craft(true,{type = "fuel", recipe = "farming:wheat", burntime = 1}) +register_craft(true,{type = "fuel", recipe = "farming:bowl",burntime = 10}) +register_craft(true,{type = "fuel", recipe = "farming:string", burntime = 1}) +register_craft(true,{type = "fuel", recipe = "farming:cotton", burntime = 1}) +register_craft(farming.barley,{type = "fuel", recipe = "farming:barley", burntime = 1}) +register_craft(farming.beans,{type = "fuel", recipe = "farming:beanpole", burntime = 10}) +register_craft(farming.grapes,{type = "fuel", recipe = "farming:trellis", burntime = 15}) +register_craft(farming.rice,{type = "fuel", recipe = "farming:rice", burntime = 1}) +register_craft(farming.rice,{type = "fuel", recipe = "farming:rice_bread", burntime = 1}) +register_craft(farming.grains,{type = "fuel", recipe = "farming:bread_multigrain", burntime = 1}) +register_craft(farming.grains,{type = "fuel", recipe = "farming:rye", burntime = 1}) +register_craft(farming.grains,{type = "fuel", recipe = "farming:oat", burntime = 1}) +register_craft(farming.hemp,{type = "fuel", recipe = "farming:hemp_oil", + burntime = 20, replacements = {{"farming:hemp_oil", a.glass_bottle}}}) +register_craft(farming.corn,{type = "fuel", recipe = "farming:bottle_ethanol", + burntime = 80, replacements = {{"farming:bottle_ethanol", a.glass_bottle}}}) +register_craft(farming.sunflower,{type = "fuel", recipe = "farming:sunflower_oil", + burntime = 30, replacements = {{"farming:sunflower_oil", a.glass_bottle}}}) +register_craft(farming.vanilla and farming.corn,{type = "fuel", recipe = "farming:vanilla_extract", + burntime = 25, replacements = {{"farming:vanilla_extract", a.glass_bottle}}}) diff --git a/mods/.farming_old/item_stairs.lua b/mods/.farming_old/item_stairs.lua new file mode 100644 index 00000000..6bfe6243 --- /dev/null +++ b/mods/.farming_old/item_stairs.lua @@ -0,0 +1,35 @@ + +-- check and register stairs + +if minetest.global_exists("stairs") then + + if stairs.mod and stairs.mod == "redo" then + + stairs.register_all("straw", "farming:straw", + {snappy = 3, flammable = 4}, + {"farming_straw.png"}, + "Straw", + farming.node_sound_leaves_defaults()) + + stairs.register_all("hemp_block", "farming:hemp_block", + {snappy = 2, oddly_breakable_by_hand = 1, flammable = 2}, + {"farming_hemp_block.png"}, + "Hemp Block", + farming.node_sound_leaves_defaults()) + else + + stairs.register_stair_and_slab("straw", "farming:straw", + {snappy = 3, flammable = 4}, + {"farming_straw.png"}, + "Straw Stair", + "Straw Slab", + farming.node_sound_leaves_defaults()) + + stairs.register_stair_and_slab("hemp_block", "farming:hemp_block", + {snappy = 2, oddly_breakable_by_hand = 1, flammable = 2}, + {"farming_hemp_block.png"}, + "Hemp Block Stair", + "Hemp Block Slab", + farming.node_sound_leaves_defaults()) + end +end diff --git a/mods/.farming_old/license.txt b/mods/.farming_old/license.txt new file mode 100644 index 00000000..b3e9b074 --- /dev/null +++ b/mods/.farming_old/license.txt @@ -0,0 +1,241 @@ +The MIT License (MIT) + +Copyright (c) 2016 TenPlus1 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +License of media (textures): +---------------------------- + +Created by TenPlus1 (CC0): + alt_textures/ethereal_strawberry*.png + farming_spanish_potatoes.png + +Created by Hugues Ross (CC BY-SA 4.0): + ethereal_strawberry*.png + +Created by NameNotQuality (CC0): + farming_vanilla_flan.png + farming_spaghetti.png + +Created by Oz-tal (license: CC BY-SA 3.0): + crops_garlic_*.png + crops_onion.png + farming_cookie.png + farming_grapes.png + farming_vanilla.png + +Created by Shadall (CC0): + farming_burger.png + +Created by PilzAdam (License: CC BY 3.0): + farming_bread.png + farming_soil.png + farming_soil_wet.png + farming_soil_wet_side.png + farming_string.png + +Created by Napiophelios (CC BY-SA 3.0): + farming_cotton.png + +Created by Calinou (License: CC BY-SA): + farming_tool_bronzehoe.png + farming_tool_steelhoe.png + farming_tool_stonehoe.png + farming_tool_woodhoe.png + farming_tool_mesehoe.png + farming_tool_diamondhoe.png + +Created by VanessaE (License: CC BY 3.0): + farming_cotton_seed.png + farming_wheat_seed.png + farming_flour.png + farming_wheat.png + farming_wheat_1.png + farming_wheat_2.png + farming_wheat_3.png + farming_wheat_4.png + farming_wheat_5.png + farming_wheat_5.png + farming_wheat_7.png + farming_wheat_8.png + farming_cotton_1.png + farming_cotton_2.png + farming_cotton_3.png + farming_cotton_4.png + farming_cotton_5.png + farming_cotton_6.png + farming_cotton_7.png + farming_cotton_8.png + +Created by alerikaisattera (License: CC-BY-SA 4.0) + farming_melon_top.png + farming_melon_side.png + farming_melon_bottom.png + farming_pumpkin_bottom.png + farming_pumpkin_top.png + farming_pumpkin_side.png + farming_pumpkin_face_on.png + farming_pumpkin_face_off.png + +Created by Doc (License: CC BY 3.0): + farming_cucumber.png + farming_cucumber_1.png + farming_cucumber_2.png + farming_cucumber_3.png + farming_cucumber_4.png + farming_potato.png + farming_potato_1.png + farming_potato_2.png + farming_potato_3.png + farming_potato_4.png + farming_raspberries.png + farming_raspberry_1.png + farming_raspberry_2.png + farming_raspberry_3.png + farming_raspberry_4.png + +Created by Gambit (License: CC BY 3.0): + default_junglegrass.png + farming_carrot.png + farming_carrot_1.png + farming_carrot_2.png + farming_carrot_3.png + farming_carrot_4.png + farming_carrot_5.png + farming_carrot_6.png + farming_carrot_7.png + farming_carrot_8.png + +Created by JoseTheCrafter and edited by TenPlus1 (CC BY 3.0): + farming_tomato.png + farming_tomato_1.png + farming_tomato_2.png + farming_tomato_3.png + farming_tomato_4.png + farming_tomato_5.png + farming_tomato_6.png + farming_tomato_7.png + farming_tomato_8.png + +Created by GeMinecraft and edited by TenPlus1 (CC BY 3.0): + farming_corn.png + farming_corn_cob.png + farming_corn_1.png + farming_corn_2.png + farming_corn_3.png + farming_corn_4.png + farming_corn_5.png + farming_corn_6.png + farming_corn_7.png + farming_corn_8.png + +Created by TenPlus1 (CC BY 3.0) + farming_cocoa_1.png + farming_cocoa_2.png + farming_cocoa_3.png + farming_cocoa_beans.png + farming_raspberry_smoothie.png + farming_rhubarb_1.png + farming_rhubarb_2.png + farming_rhubarb_3.png + farming_rhubarb.png + farming_hemp*.png + farming_tofu*.png + farming_gingerbread_man.png + +Created by ademant (CC-BY-3.0) + farming_rye*.png + farming_oat*.png + farming_rice*.png + +Created by PilzAdam and edited by SpaghettiToastBook (CC0): + farming_bread_multigrain.png + +Created by VanessaE and edited by SpaghettiToastBook (CC0): + farming_flour_multigrain.png + +Created by mDiyo (Natura), modified by TenPlus1 (License: CC BY-SA 3.0): + farming_barley.png + +Created by OgelGames (CC BY-SA 4.0): + farming_berry_smoothie.png + farming_cactus_juice.png + farming_salad.png + +Created by Huhues Ross (CC BY-SA 4.0): + farming_sunflower_bread.png + +Created by Felfa (CC0) + farming_blackberry*.png + farming_lettuce*.png + farming_soy*.png + farming_vanilla_*.png + farming_artichoke*.png + farming_parsley*.png + farming_paella*.png + farming_potato_omelette.png + farming_spanish_potatoes_32px.png + farming_vanilla_flan_32px.png + farming_sunflower*.png [except sunflower_bread.png] + farming_mayo*.png + +Created by gorlock (CC0) + farming_salt_crystal.png + +Created by sirrobzeroone (CC0) + farming_gyoza.png + farming_pineapple_ring.png + +Created by smoke_th (CC0 - https://opengameart.org/content/popcorn-icon) + farming_popcorn_32px.png + farming_popcorn.png [resized and edited by TenPlus1] + +Created by DMBuce (MIT - https://github.com/DMBuce/hatchling-snacks) + farming_mac_and_cheese.png + +Created by XSSheep (CC BY-SA 4.0 - https://minecraft.curseforge.com/projects/pixel-perfection-freshly-updated) + farming_coffee_1.png + farming_coffee_2.png + farming_coffee_3.png + farming_coffee_4.png + farming_coffee_5.png + farming_coffee_beans.png + farming_apple_pie.png (edited by TenPlus1) + farming_blueberry_pie.png (edited by TenPlus1) + farming_rhubarb_pie.png (edited by TenPlus1) + +Copyright (C) 2021-2022: Atlante - AFL-1.1 +License for code: AFL-1.1 + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + farming_asparagus* + farming_eggplant* + farming_spinach* + farming_ginger* diff --git a/mods/.farming_old/locale/farming.de.tr b/mods/.farming_old/locale/farming.de.tr new file mode 100644 index 00000000..f2da0c63 --- /dev/null +++ b/mods/.farming_old/locale/farming.de.tr @@ -0,0 +1,189 @@ +# textdomain: farming +Banana=Banane +Banana Leaves=Bananenblätter +Orange=Orange +Artichoke=Artischocke + Crop=-Pflanze +Asparagus=Spargel +Barley Seed=Gerstensamen +Barley=Gerste +Green Beans=Grüne Bohnen +Bean Pole (place on soil before planting beans)=Bohnenstange (vor dem Pflanzen der Bohnen auf den@nAckerboden stellen) +Beetroot=Rote Beete +Blackberries=Brombeeren +Blackberry=Brombeere +Wild Blueberries=Wilde Blaubeeren +Blueberry=Blaubeere +Cabbage=Kohl +Carrot=Möhre +Chili Pepper=Chili +Raw Cocoa Beans=Rohe Kakaobohnen +Cocoa Beans=Kakaobohnen +Coffee Beans=Kaffeebohnen +Coffee=Kaffee +Corn=Mais +Cotton Seed=Baumwollsamen +Cotton=Baumwolle +Wild Cotton=Wilde Baumwolle +Cucumber=Gurke +Eggplant=Aubergine +Garlic clove=Knoblauchzehe +Garlic=Knoblauch +Ginger=Lebkuchen +Grapes=Weintrauben +Trellis (place on soil before planting grapes)=Spalier (vor dem Pflanzen der Weintrauben auf den@nAckerboden stellen) +Hemp Seed=Hanfsamen +Hemp Leaf=Hanfblatt +Hemp=Hanf +Lettuce=Kopfsalat +Melon Slice=Melonenscheibe +Melon=Melone +Mint Seeds=Minzsamen +Mint Leaf=Minzblatt +Mint=Minze +Onion=Zwiebel +Parsley=Petersilie +Pea Pod=Erbsenschote +Pea=Erbse +Peppercorn=Pfefferkorn +Green Pepper=Grüne Paprika +Yellow Pepper=Gelbe Paprika +Red Pepper=Rote Paprika +Pepper=Paprika +Pineapple Top=Ananasdeckel +Pineapple=Ananas +Potato=Kartoffel +Pumpkin Slice=Kürbisscheibe +Pumpkin=Kürbis +Raspberries=Himbeeren +Raspberry=Himbeere +Rhubarb=Rhabarber +Rice Seed=Reissamen +Rice=Reis +Rye seed=Roggensamen +Rye=Roggen +Oat seed=Hafersamen +Oats=Hafer +Soy Pod=Sojaschote +Soy=Soja +Spinach=Spinat +Strawberry=Erdbeere +Sunflower Seeds=Sonnenblumensamen +Sunflower=Sonnenblume +Tomato=Tomate +Vanilla=Vanille +Wheat Seed=Weizensamen +Wheat=Weizen +Hoe=Hacke +Wooden Hoe=Holzhacke +Stone Hoe=Steinhacke +Steel Hoe=Stahlhacke +Bronze Hoe=Bronzehacke +Mese Hoe=Mesehacke +Diamond Hoe=Diamanthacke +Wood Hoe=Holzhacke +Hoe Bomb (use or throw on grassy areas to hoe land)=Hackenbombe (Auf Grasland werfen oder benutzen,@num Land zu bestellen) +Mithril Scythe (Use to harvest and replant crops)=Mithrilsichel (Benutzen, um Nutzpflanzen zu ernten und neu zu pflanzen) +Seed=Saatgut +Flour=Mehl +Garlic Braid=Knoblauchzopf +Corn on the Cob=Maiskolben +Popcorn=Popcorn +Cornstarch=Speisestärke +Cup of Coffee=Tasse Kaffee +Bar of Dark Chocolate=Tafel Zartbitterschokolade +Chocolate Block=Schokoladenblock +Bowl of Chili=Schüssel mit Chili +Chili Powder=Chilipulver +Carrot Juice=Möhrensaft +Blueberry Pie=Blaubeerkuchen +Blueberry Muffin=Blaubeermuffin +Tomato Soup=Tomatensuppe +Sliced Bread=Geschnittenes Brot +Toast=Toast +Toast Sandwich=Toast-Sandwich +Glass of Water=Glas Wasser +Sugar Cube=Zuckerwürfel +Caramel=Karamell +Salt=Salz +Salt crystal=Salzkristall +Mayonnaise=Mayonnaise +Rose Water=Rosenwasser +Turkish Delight=Lokum +Garlic Bread=Knoblauchbrot +Donut=Donut +Chocolate Donut=Schokodonut +Apple Donut=Apfeldonut +Porridge=Haferbrei +Jaffa Cake=Jaffa +Apple Pie=Apfelkuchen +Cactus Juice=Kaktussaft +Pasta=Pasta +Mac & Cheese=Makkaroni mit Käse +Spaghetti=Spaghetti +Bibimbap=Bibimbap +Burger=Burger +Salad=Salat +Triple Berry Smoothie=Dreibeersmoothie +Spanish Potatoes=Spanische Kartoffeln +Potato omelette=Kartoffelomelette +Paella=Paella +Vanilla Flan=Vanilletorte +Vegan Cheese=Veganer Käse +Vegan Butter=Vegane Butter +Onigiri=Onigiri +Gyoza=Gyoza +Mochi=Mochi +Gingerbread Man=Lebkuchenmann +Mint Tea=Minztee +Onion Soup=Zwiebelsuppe +Pea Soup=Erbsensuppe +Ground Pepper=Gemahlener Pfeffer +Pineapple Ring=Ananasscheibe +Pineapple Juice=Ananassaft +Cucumber and Potato Salad=Gurken-Kartoffelsalat +Pumpkin Dough=Kürbisteig +Pumpkin Bread=Kürbisbrot +Raspberry Smoothie=Himbeersmoothie +Rhubarb Pie=Rhabarberkuchen +Rice Flour=Reismehl +Rice Bread=Reiswaffel +Multigrain Flour=Mehrkornmehl +Multigrain Bread=Mehrkornbrot +Soy Sauce=Sojasoße +Soy Milk=Sojamilch +Tofu=Tofu +Cooked Tofu=Gekochter Tofu +Toasted Sunflower Seeds=Geröstete Sonnenblumensamen +Bottle of Sunflower Oil=Flasche Sonnenblumenöl +Sunflower Seed Bread=Sonnenblumensamenbrot +Vanilla Extract=Vanilleextrakt +Jerusalem Artichokes=Jerusalemartischocken +Bread=Brot +Cookie=Keks +Golden Carrot=Goldene Möhre +Beetroot Soup=Rote-Beete-Suppe +Sugar=Zucker +Baked Potato=Ofenkartoffel +Saucepan=Kasserolle +Cooking Pot=Kochtopf +Baking Tray=Kuchenblech +Skillet=Bratpfanne +Mortar and Pestle=Mörser und Stößel +Cutting Board=Schneidebrett +Juicer=Entsafter +Glass Mixing Bowl=Glasschüssel +Bottle of Ethanol=Flasche Ethanol +Straw=Stroh +Bottle of Hemp Oil=Flasche mit Hanföl +Hemp Fibre=Hanffaser +Hemp Block=Hanfblock +Hemp Rope=Hanfseil +Scarecrow Bottom=Vogelscheuchengestell +Wooden Bowl=Holzschale +String=Faden +Jack 'O Lantern (punch to turn on and off)=Kürbislaterne (Hauen zum Ein- und Ausschalten) +Savanna Soil=Savannenerde +Wet Savanna Soil=Feuchte Savannenerde +Soil=Ackerboden +Wet Soil=Feuchter Ackerboden diff --git a/mods/.farming_old/locale/farming.en.tr b/mods/.farming_old/locale/farming.en.tr new file mode 100644 index 00000000..6f83b3e4 --- /dev/null +++ b/mods/.farming_old/locale/farming.en.tr @@ -0,0 +1,186 @@ +# textdomain: farming + Crop= +Artichoke= +Asparagus= +Barley Seed= +Barley= +Green Beans= +Bean Pole (place on soil before planting beans)= +Beetroot= +Beetroot Soup= +Blackberry= +Blackberries= +Wild Blueberries= +Blueberry= +Blueberry Muffin= +Blueberry Pie= +Cabbage= +Carrot= +Carrot Juice= +Golden Carrot= +Chili Pepper= +Bowl of Chili= +Chili Powder= +Raw Cocoa Beans= +Cocoa Beans= +Cookie= +Bar of Dark Chocolate= +Chocolate Block= +Coffee= +Coffee Beans= +Cup of Coffee= +Banana= +Banana Leaves= +Orange= +Corn= +Corn on the Cob= +Popcorn= +Cornstarch= +Bottle of Ethanol= +Wild Cotton= +Cotton Seed= +Cotton= +String= +Cucumber= +Eggplant= +Glass of Water= +Sugar= +Sugar Cube= +Caramel= +Salt= +Mayonnaise= +Rose Water= +Turkish Delight= +Garlic Bread= +Donut= +Chocolate Donut= +Apple Donut= +Porridge= +Jaffa Cake= +Apple Pie= +Cactus Juice= +Pasta= +Mac & Cheese= +Spaghetti= +Bibimbap= +Burger= +Salad= +Triple Berry Smoothie= +Spanish Potatoes= +Potato omelet= +Paella= +Vanilla Flan= +Vegan Cheese= +Onigiri= +Gyoza= +Mochi= +Gingerbread Man= +Garlic clove= +Garlic= +Garlic Braid= +Ginger= +Grapes= +Trellis (place on soil before planting grapes)= +Hemp= +Hemp Seed= +Hemp Leaf= +Bottle of Hemp Oil= +Hemp Fibre= +Hemp Block= +Hemp Rope= +Hoe= +Wooden Hoe= +Stone Hoe= +Steel Hoe= +Bronze Hoe= +Mese Hoe= +Diamond Hoe= +Wood Hoe= +Hoe Bomb (use or throw on grassy areas to hoe land)= +Mithril Scythe (Use to harvest and replant crops)= +Seed= +Lettuce= +Melon Slice= +Melon= +Mint= +Mint Seeds= +Mint Leaf= +Mint Tea= +Onion= +Onion Soup= +Parsley= +Pea= +Pea Pod= +Pea Soup= +Pepper= +Peppercorn= +Green Pepper= +Yellow Pepper= +Red Pepper= +Ground Pepper= +Pineapple Top= +Pineapple= +Pineapple Ring= +Pineapple Juice= +Potato= +Baked Potato= +Cucumber and Potato Salad= +Pumpkin Slice= +Jack 'O Lantern (punch to turn on and off)= +Scarecrow Bottom= +Pumpkin Bread= +Pumpkin Dough= +Pumpkin= +Raspberry= +Raspberries= +Raspberry Smoothie= +Rhubarb= +Rhubarb Pie= +Rice Seed= +Rice= +Rice Bread= +Rice Flour= +Rye seed= +Rye= +Oat seed= +Oats= +Multigrain Flour= +Multigrain Bread= +Savanna Soil= +Wet Savanna Soil= +Soil= +Wet Soil= +Soy= +Soy Pod= +Soy Sauce= +Soy Milk= +Tofu= +Cooked Tofu= +Spinach= +Strawberry= +Sunflower= +Sunflower Seeds= +Toasted Sunflower Seeds= +Bottle of Sunflower Oil= +Sunflower Seed Bread= +Tomato= +Tomato Soup= +Wooden Bowl= +Saucepan= +Cooking Pot= +Baking Tray= +Skillet= +Mortar and Pestle= +Cutting Board= +Juicer= +Glass Mixing Bowl= +Vanilla= +Vanilla Extract= +Wheat Seed= +Wheat= +Straw= +Flour= +Bread= +Sliced Bread= +Toast= +Toast Sandwich= diff --git a/mods/.farming_old/locale/farming.eo.tr b/mods/.farming_old/locale/farming.eo.tr new file mode 100644 index 00000000..75f8bd4b --- /dev/null +++ b/mods/.farming_old/locale/farming.eo.tr @@ -0,0 +1,176 @@ +# textdomain: farming +Artichoke= +Asparagus= +Barley Seed=Hordea Semo +Barley=Hordeo +Green Beans=Verdaj Fazeoloj +Bean Pole (place on soil before planting beans)=Fazeola Poluso (metu sur grundo antaŭ planti fabojn) +Beetroot=Betoto +Beetroot Soup=Betota Supo +Blackberries= +Wild Blueberries= +Blueberry Muffin=Mirtila Mufino +Blueberry Pie=Mirtila Torto +Cabbage= +Carrot=Karoto +Carrot Juice=Karota Suko +Golden Carrot=Ora Karoto +Chili Pepper=Kapsiketo +Bowl of Chili=Bovlo da Kapsiketo +Chili Powder= +Raw Cocoa Beans= +Cocoa Beans=Kakaa Faboj +Cookie=Kuketo +Bar of Dark Chocolate=Stango de Malhela Ĉokolado +Chocolate Block=Bloko de Ĉokolado +Coffee Beans=Kafaj Seboj +Cup of Coffee=Taso da Kafo +Banana=Banano +Banana Leaves=Bananaj Folioj +Orange=Oranĝo +Corn=Maizo +Corn on the Cob=Maiza sur la Spadiko +Popcorn= +Cornstarch=Maizamelo +Bottle of Ethanol=Botelo da Etanolo +Wild Cotton= +Cotton Seed=Kotona Semo +Cotton=Kotono +String=Ŝnuro +Cucumber=Kukumo +Eggplant= +Glass of Water= +Sugar=Sukero +Sugar Cube= +Caramel= +Salt=Salo +Mayonnaise= +Rose Water=Roza Akvo +Turkish Delight=Turka Delico +Garlic Bread=Ajla Pano +Donut=Benjeto +Chocolate Donut=Ĉokolada Benjeto +Apple Donut=Poma Benjeto +Porridge=Kaĉo +Jaffa Cake=Jafa Kuko +Apple Pie= +Cactus Juice= +Pasta= +Mac & Cheese= +Spaghetti= +Bibimbap= +Burger= +Salad= +Triple Berry Smoothie= +Spanish Potatoes= +Potato omelet= +Paella= +Vanilla Flan= +Vegan Cheese= +Onigiri= +Gyoza= +Mochi= +Gingerbread Man= +Garlic clove=Ajlokloko +Garlic=Ajlo +Garlic Braid=Ajla Plektaĵo +Ginger= +Grapes=Vinberoj +Trellis (place on soil before planting grapes)=Trellis (meti sur grundo antaŭ planti vinberojn) +Hemp Seed=Kanaba Semo +Hemp Leaf=Kanaba Folio +Bottle of Hemp Oil=Botelo da Kanaba Oleo +Hemp Fibre=Kanaba Fibro +Hemp Block=Kanaba Bloko +Hemp Rope=Kanaba Ŝnuro +Hoe=Sarkilo +Wooden Hoe=Ligna Sarkilo +Stone Hoe=Ŝtona Sarkilo +Steel Hoe=Ŝtala Sarkilo +Bronze Hoe=Bronza Sarkilo +Mese Hoe=Mesea Sarkilo +Diamond Hoe=Diamanta Sarkilo +Wood Hoe= +Hoe Bomb (use or throw on grassy areas to hoe land)= +Mithril Scythe (Use to harvest and replant crops)= +Seed=Semo +Lettuce= +Melon Slice=Tranĉaĵo de Melono +Melon=Melono +Mint Seeds= +Mint Leaf= +Mint Tea= +Onion=Cepo +Onion Soup= +Parsley= +Pea Pod=Pizujo +Pea Soup=Piza Supo +Peppercorn=Piprograjno +Green Pepper= +Yellow Pepper= +Red Pepper= +Ground Pepper=Muelita Pipro +Pineapple Top=Pinto de Ananaso +Pineapple=Ananaso +Pineapple Ring=Ananasa Ringo +Pineapple Juice=Ananasa Suko +Potato=Terpomo +Baked Potato=Bakita Terpomo +Cucumber and Potato Salad=Salato de Kukumo kaj Terpomo +Pumpkin Slice=Tranĉaĵo de Kukurbo +Jack 'O Lantern (punch to turn on and off)=Kukurba Lanterno (punu por ŝalti kaj malŝalti) +Scarecrow Bottom=Birdotimigilo Fundo +Pumpkin Bread=Kukurba Pano +Pumpkin Dough=Kukurba Pasto +Pumpkin=Kukurbo +Raspberries=Framboj +Raspberry Smoothie=Fraba Glataĵo +Rhubarb=Rabarbo +Rhubarb Pie=Rabarba Torto +Rice Seed= +Rice=Rizo +Rice Bread=Riza Pano +Rice Flour=Riza Faruno +Rye seed=Sekala Semo +Rye=Sekalo +Oat seed=Avena Semo +Oats= +Multigrain Flour=Multgrajna Faruno +Multigrain Bread=Multgrajna Pano +Savanna Soil= +Wet Savanna Soil= +Soil=Tero +Wet Soil=Malseka Tero +Soy Pod= +Soy Sauce= +Soy Milk= +Tofu= +Cooked Tofu= +Spinach= +Strawberry=Frago +Sunflower= +Sunflower Seeds= +Toasted Sunflower Seeds= +Bottle of Sunflower Oil= +Sunflower Seed Bread= +Tomato=Tomato +Tomato Soup= +Wooden Bowl=Ligna Bovlo +Saucepan=Kaserolo +Cooking Pot=Kuirpoto +Baking Tray=Baka Pleto +Skillet=Pato +Mortar and Pestle=Pistujo +Cutting Board=Tranĉa Tabulo +Juicer=Spremilo +Glass Mixing Bowl=Vitra Miksa Bovlo +Vanilla= +Vanilla Extract= +Wheat Seed=Tritika Semo +Wheat=Tritiko +Straw=Pajlo +Flour=Faruno +Bread=Pano +Sliced Bread=Tranĉita Pano +Toast=Toasto +Toast Sandwich=Toasta Sandviĉo diff --git a/mods/.farming_old/locale/farming.es.tr b/mods/.farming_old/locale/farming.es.tr new file mode 100644 index 00000000..e3d989a0 --- /dev/null +++ b/mods/.farming_old/locale/farming.es.tr @@ -0,0 +1,177 @@ +# textdomain: farming +Banana=Banana +Banana Leaves=Hojas de Banana +Orange=Naranja +Artichoke=Alcachofa +Asparagus=Esparragos +Barley Seed=Semillas de Cebada +Barley=Cebada +Green Beans=Frijoles +Bean Pole (place on soil before planting beans)=Varas para frijoles (colocar antes de plantar frijoles) +Beetroot=Remolacha +Beetroot Soup=Sopa de Remolacha +Blackberries=Zarzamoras +Wild Blueberries=Arándanos +Blueberry Muffin=Bizcocho de Arándanos +Blueberry Pie=Pastel de Arándanos +Cabbage=Coliflor +Carrot=Zanahoria +Carrot Juice=Zumo de Zanahoria +Golden Carrot=Zanahoria Dorada +Chili Pepper=Guindilla +Bowl of Chili=Tazón de chile +Chili Powder=Chile en polvo +Raw Cocoa Beans=Granos de Cacao Verde +Cocoa Beans=Granos de Cacao +Cookie=Galleta +Bar of Dark Chocolate=Barra de Chocolate amargo +Chocolate Block=Bloque de Chocolate +Coffee Beans=Granos de Café +Cup of Coffee=Taza de Café +Corn=Mazorca de Maiz +Corn on the Cob=Mazorca Frita +Popcorn=Palomitas +Cornstarch=Maicena +Bottle of Ethanol=Botella de Etanol +Wild Cotton=Algodón silvestre +Cotton Seed=Semillas de Algodón +Cotton=Algodón +String=Cuerda +Cucumber=Pepino +Eggplant=Berenjena +Garlic clove=Diente de Ajo +Garlic=Ajo +Garlic Braid=Ristra de Ajos +Ginger=Jengibre +Grapes=Uvas +Trellis (place on soil before planting grapes)=Emparrado (colocar antes de sembrar uvas) +Hemp Seed=Semillas de Cáñamo +Hemp Leaf=Hoja de Cáñamo +Bottle of Hemp Oil=Aceite de Cáñamo +Hemp Fibre=Fibra de Cáñamo +Hemp Block=Bloque de Cáñamo +Hemp Rope=Cuerda de Cáñamo +Lettuce=Lechuga +Melon Slice=Rodaja de Sandia +Melon=Sandia +Mint Seeds=Semillas de Menta +Mint Leaf=Hoja de Menta +Mint Tea=Té de Menta +Onion=Cebolla +Onion Soup=Sopa de Cebolla +Parsley=Perejil +Pea Pod=Vaina de Guisantes +Pea Soup=Sopa de Guisantes +Peppercorn=Pimienta en Grano +Green Pepper=Pimiento Verde +Yellow Pepper=Pimiento Amarillo +Red Pepper=Pimiento Rojo +Ground Pepper=Pimienta Molida +Pineapple Top=Semilla de Piña +Pineapple=Piña +Pineapple Ring=Rodaja de Piña +Pineapple Juice=Zumito de Piña +Potato=Patata +Baked Potato=Papa Asada +Cucumber and Potato Salad=Ensalada de Pepino y Patatas +Pumpkin Slice=Trozo de Calabaza +Jack 'O Lantern (punch to turn on and off)=Linterna Calabaza (golpear para encender o apagar) +Scarecrow Bottom=Cuerpo de Espantapájaros +Pumpkin Bread=Pan de Calabaza +Pumpkin Dough=Pasta de Calabaza +Pumpkin=Calabaza +Raspberries=Frambuesas +Raspberry Smoothie=Crema de Frambuesas +Rhubarb=Ruibarbo +Rhubarb Pie=Bizcocho de Ruibarbo +Rice Seed=Granos de Arroz +Rice=Arroz +Rice Bread=Pan de Arroz +Rice Flour=Harina de Arroz +Rye seed=Semillas de Centeno +Rye=Centeno +Oat seed=Semillas de Avena +Oats=Avena +Multigrain Flour=Harina Multigrano +Multigrain Bread=Pan Multigrano +Soy Pod=Vaina de Soja +Soy Sauce=Aceite de Soja +Soy Milk=Leche de Soja +Tofu=Tofu +Cooked Tofu=Tofu Cocinado +Spinach=Espinacas +Strawberry=Fresa +Sunflower=Girasol +Sunflower Seeds=Semillas de Girasol +Toasted Sunflower Seeds=Pipas de Girasol +Bottle of Sunflower Oil=Aceite de Girasol +Sunflower Seed Bread=Pan con Pipas +Tomato=Tomate +Tomato Soup=Sopa de Tomate +Vanilla=Vainilla +Vanilla Extract=Extracto de Vainilla +Wheat Seed=Semillas de Trigo +Wheat=Trigo +Straw=Heno +Flour=Harina +Bread=Pan +Sliced Bread=Rebanada de Pan +Toast=Tostada +Toast Sandwich=Bocadillo de Pan +Glass of Water=Vaso de Agua +Sugar=Azucar +Sugar Cube=Bloque de Azucar +Caramel=Caramelo +Salt=Sal +Salt crystal=Cristal de Sal +Mayonnaise=Mayonesa +Rose Water=Agua de Rosas +Turkish Delight=Delicias Turcas +Garlic Bread=Pan con Ajito +Donut=Rosquilla +Chocolate Donut=Rosquilla de Chocolate +Apple Donut=Rosquilla de Manzana +Porridge=Gachas +Jaffa Cake=Galleta Jaffa +Apple Pie=Pastel de Manzana +Cactus Juice=Zumo de Cactus +Pasta=Pasta +Mac & Cheese=Pasta con queso +Spaghetti=Espaguetis +Bibimbap=Bibimbap +Burger=Hamburguesa +Salad=Ensalada +Triple Berry Smoothie=Helado Multifrutas +Spanish Potatoes=Tortilla Española +Potato omelet=Tortilla de Patatas +Paella=Paella +Vanilla Flan=Flan de Vainilla +Vegan Cheese=Queso Vegano +Onigiri=Onigiri +Gyoza=Empanadilla Japonesa +Mochi=Mochi +Gingerbread Man=Moñequito de Jengibre +Hoe=Azada +Wooden Hoe=Azada de Madera +Stone Hoe=Azada de Piedra +Steel Hoe=Azada de Acero +Bronze Hoe=Azada de Bronce +Mese Hoe=Azada de Mese +Diamond Hoe=Azada de Diamante +Wood Hoe=Azada de Madera +Hoe Bomb (use or throw on grassy areas to hoe land)=Bomba Azada (usar o lanzar a tierra para ararla) +Mithril Scythe (Use to harvest and replant crops)=Guadaña de Mithril +Seed=Semilla +Savanna Soil=Tierra de Cultivo de Sabana +Wet Savanna Soil=Tierra de Cultivo de Sabana Humeda +Soil=Tierra de Cultivo +Wet Soil=Tierra de Cultivo Humeda +Wooden Bowl=Cuenco de Madera +Saucepan=Cazo +Cooking Pot=Olla +Baking Tray=Bandeja para Hornear +Skillet=Sartén +Mortar and Pestle=Mortero +Cutting Board=Tabla de cortar +Juicer=Exprimidor +Glass Mixing Bowl=Bol de Mezcla diff --git a/mods/.farming_old/locale/farming.fr.tr b/mods/.farming_old/locale/farming.fr.tr new file mode 100644 index 00000000..532e234b --- /dev/null +++ b/mods/.farming_old/locale/farming.fr.tr @@ -0,0 +1,177 @@ +# textdomain: farming +Banana=Banane +Banana Leaves=Feuilles de banane +Orange=Orange +Artichoke=Artichaut +Asparagus=Asperge +Barley Seed=Graine d'orge +Barley=Orge +Green Beans=Haricots verts +Bean Pole (place on soil before planting beans)=Tuteur pour haricots (placer sur le sol avant de planter des haricots) +Beetroot=Betterave +Beetroot Soup=Soupe de betterave +Blackberries=Mûres +Wild Blueberries=Myrtilles sauvages +Blueberry Muffin=Muffin aux myrtilles +Blueberry Pie=Tarte aux myrtilles +Cabbage=Chou +Carrot=Carotte +Carrot Juice=Jus de carotte +Golden Carrot=Carotte dorée +Chili Pepper=Piment fort +Bowl of Chili=Bol de chilli +Chili Powder=Poudre de piment +Raw Cocoa Beans=Fèves de cacao brutes +Cocoa Beans=Fèves de cacao +Cookie=Biscuit +Bar of Dark Chocolate=Tablette de chocolat noir +Chocolate Block=Bloc de chocolat +Coffee Beans=Grains de café +Cup of Coffee=Tasse de café +Corn=Maïs +Corn on the Cob=Cobette (maïs cuit) +Popcorn=Popcorn +Cornstarch=Fécule de maïs +Bottle of Ethanol=Bouteille d'éthanol +Wild Cotton=Coton sauvage +Cotton Seed=Graines de coton +Cotton=Coton +String=Ficelle +Cucumber=Concombre +Eggplant=Aubergine +Garlic clove=Gousse d'ail +Garlic=Tête d'ail +Garlic Braid=Ail tressé +Ginger=Gingembre +Grapes=Raisins +Trellis (place on soil before planting grapes)=Treillis (placer sur le sol avant de planter la vigne) +Hemp Seed=Graines de chanvre +Hemp Leaf=Feuille de chanvre +Bottle of Hemp Oil=Bouteille d'huile de chanvre +Hemp Fibre=Fibre de chanvre +Hemp Block=Bloc de chanvre +Hemp Rope=Corde de chanvre +Lettuce=Laitue +Melon Slice=Tranche de melon +Melon=Melon +Mint Seeds=Graine de menthe +Mint Leaf=Feuille de menthe +Mint Tea=Thé à la menthe +Onion=Oignon +Onion Soup=Soupe à l'oignon +Parsley=Persil +Pea Pod=Cosse de petit-pois +Pea Soup=Soupe de petit-pois +Peppercorn=Grain de poivre +Green Pepper=Poivron vert +Yellow Pepper=Poivron jaune +Red Pepper=Poivron rouge +Ground Pepper=Poivre moulu +Pineapple Top=Pousse d'ananas +Pineapple=Ananas +Pineapple Ring=Tranche d'ananas +Pineapple Juice=Jus d'ananas +Potato=Pomme de terre +Baked Potato=Pomme de terre cuite +Cucumber and Potato Salad=Salade de pomme de terre et concombre +Pumpkin Slice=Tranche de citrouille +Jack 'O Lantern (punch to turn on and off)=Citrouille d'halloween (Frapper pour allumer et éteindre) +Scarecrow Bottom=Base d'épouventail +Pumpkin Bread=Pain à la citrouille +Pumpkin Dough=Pâton de pain à la citrouille +Pumpkin=Citrouille +Raspberries=Framboises +Raspberry Smoothie=Smoothie aux framboises +Rhubarb=Rhubarbe +Rhubarb Pie=Tarte à la rhubarbe +Rice Seed=Riz +Rice=Riz +Rice Bread=Pain de riz +Rice Flour=Farine de riz +Rye seed=Grains de seigle +Rye=Seigle +Oat seed=Grains d'orge +Oats=Avoine +Multigrain Flour=Farine multi-céréales +Multigrain Bread=Pain aux céréales +Soy Pod=Cosse de soja +Soy Sauce=Sauce de soja +Soy Milk=Lait de soja +Tofu=Tofu +Cooked Tofu=Tofu cuit +Spinach=Épinard +Strawberry=Fraise +Sunflower=Tournesol +Sunflower Seeds=Graines de tournesol +Toasted Sunflower Seeds=Graines de tournesol grillées +Bottle of Sunflower Oil=Bouteille d'huile de tournesol +Sunflower Seed Bread=Pain de graines de tournesol +Tomato=Tomate +Tomato Soup=Soupe de tomate +Vanilla=Vanille +Vanilla Extract=Extrait de vanille +Wheat Seed=Grain de blé +Wheat=Blé +Straw=Paille +Flour=Farine +Bread=Pain +Sliced Bread=Tranche de pain +Toast=Pain grillé +Toast Sandwich=Sandwich au pain grillé +Glass of Water=Verre d'eau +Sugar=Sucre +Sugar Cube=Morceau de sucre +Caramel=Caramel +Salt=Sel +Salt crystal=Cristaux de sel +Mayonnaise=Mayonnaise +Rose Water=Eau de rose +Turkish Delight=Douceur turque +Garlic Bread=Pain à l'ail +Donut=Beignet +Chocolate Donut=Beignet au chocolat +Apple Donut=Beignet aux pommes +Porridge=Gruau de céréales +Jaffa Cake=Petit gâteau à l'orange "Jaffa" +Apple Pie=Tarte aux pommes +Cactus Juice=Jus de cactus +Pasta=Pâtes +Mac & Cheese=Grâtin de pâtes +Spaghetti=Spaghetti +Bibimbap=Bibimbap +Burger=Hamburger +Salad=Salade verte +Triple Berry Smoothie=Smoothie aux trois baies +Spanish Potatoes=Patates sautées à l'Espagnole +Potato omelet=Omelette aux pommes de terre +Paella=Paëlla +Vanilla Flan=Flan +Vegan Cheese=Faumage végan +Onigiri=Onigiri +Gyoza=Gyoza +Mochi=Mochi +Gingerbread Man=Bonhomme en pain d'épice +Hoe=Binette +Wooden Hoe=Binette en bois +Stone Hoe=Binette en pierre +Steel Hoe=Binette en acier +Bronze Hoe=Binette en bronze +Mese Hoe=Binette en mese +Diamond Hoe=Binette en diamant +Wood Hoe=Binette en bois +Hoe Bomb (use or throw on grassy areas to hoe land)=Bombe à binnage (Actionner ou lancer sur une zone herbeuse pour la binner) +Mithril Scythe (Use to harvest and replant crops)=Faux de mithril (Utiliser pour récolter et replanter les cultures) +Seed=Graine +Savanna Soil=Terre de la savane binnée +Wet Savanna Soil=Terre humide et binnée de la savane +Soil=Terre binnée +Wet Soil=Terre humide et binnée +Wooden Bowl=Bol en bois +Saucepan=Casserole +Cooking Pot=Marmitte +Baking Tray=Lèche-frite +Skillet=Poêle +Mortar and Pestle=Mortier et pilon +Cutting Board=Planche à découper +Juicer=Presse-agrumes +Glass Mixing Bowl=Terrine en verre diff --git a/mods/.farming_old/locale/farming.hu.tr b/mods/.farming_old/locale/farming.hu.tr new file mode 100644 index 00000000..9cf75c9f --- /dev/null +++ b/mods/.farming_old/locale/farming.hu.tr @@ -0,0 +1,176 @@ +# textdomain: farming +Artichoke=Articsóka +Asparagus=Spárga +Barley Seed=Árpamag +Barley=Árpa +Green Beans=Zöldbab +Bean Pole (place on soil before planting beans)=Karó babhoz (szúrd a földbe és oda vess babot) +Beetroot=cékla +Beetroot Soup=céklaleves +Blackberries=Szeder +Wild Blueberries=Vadáfonya +Blueberry Muffin=Áfonyamuffin +Blueberry Pie=Áfonyatorta +Cabbage=Káposzta +Carrot=Répa +Carrot Juice=Répalé +Golden Carrot=Aranyrépa +Chili Pepper=Chilipaprika +Bowl of Chili=Chilis tál +Chili Powder=Chilipor +Raw Cocoa Beans=Nyers kakaóbab +Cocoa Beans=Kakaóbab +Cookie=Süti +Bar of Dark Chocolate=Rúd étcsoki +Chocolate Block=Csokiblokk +Coffee Beans=Kávébab +Cup of Coffee=Csésze kávé +Banana=Banán +Banana Leaves=Banánlevél +Orange=Narancs +Corn=Kukorica +Corn on the Cob=Főtt kukorica +Popcorn=Pattogatott kukorica +Cornstarch=Keményítő +Bottle of Ethanol=Üveg etanol +Wild Cotton=Vadgyapot +Cotton Seed=Gyapotmag +Cotton=Gyapot +String=Madzag +Cucumber=Uborka +Eggplant=Padlizsán +Glass of Water=Pohár víz +Sugar=Cukor +Sugar Cube=Kockacukor +Caramel=Karamell +Salt=Só +Mayonnaise=Majonéz +Rose Water=Rózsavíz +Turkish Delight=Török desszert +Garlic Bread=Fokhagymás kenyér +Donut=Fánk +Chocolate Donut=Csokis fánk +Apple Donut=Almás fánk +Porridge=Zabkása +Jaffa Cake=Jaffatorta +Apple Pie=Almáspita +Cactus Juice=Kaktuszlé +Pasta=Tészta +Mac & Cheese=Sajtos makaróni +Spaghetti=Spagetti +Bibimbap=Bibimbap +Burger=Burger +Salad=Saláta +Triple Berry Smoothie=Hárombogyós smoothie +Spanish Potatoes=Tepsis krumpli +Potato omelet=Krumplis rántotta +Paella=Paella +Vanilla Flan=Vaníliás gyümölcstorta +Vegan Cheese=Vegán sajt +Onigiri=Onigiri +Gyoza=Gyoza +Mochi=Mochi +Gingerbread Man=Mézeskalács-emberke +Garlic clove=Gerezd fokhagyma +Garlic=Fokhagyma +Garlic Braid=Fokhagymafüzér +Ginger=Gyömbér +Grapes=Szőlő +Trellis (place on soil before planting grapes)=Karó szőlőhöz (szúrd a földbe és oda vess babot) +Hemp Seed=Kendermag +Hemp Leaf=Kenderlevél +Bottle of Hemp Oil=Üveg kenderolaj +Hemp Fibre=Kenderrost +Hemp Block=Kenderblokk +Hemp Rope=Kenderkötél +Hoe=Kapa +Wooden Hoe=Fakapa +Stone Hoe=Kőkapa +Steel Hoe=Acélkapa +Bronze Hoe=Bronzkapa +Mese Hoe=Mesekapa +Diamond Hoe=Gyémántkapa +Wood Hoe=Fakapa (2) +Hoe Bomb (use or throw on grassy areas to hoe land)=Kapabomba (használd vagy dobd füves területre) +Mithril Scythe (Use to harvest and replant crops)=Mithrilkasza (használd termények begyűjtéséhez és újravetéséhez) +Seed=Mag +Lettuce=Saláta +Melon Slice=Szelet dinnye +Melon=Dinnye +Mint Seeds=Mentamag +Mint Leaf=Mentalevél +Mint Tea=Mentatea +Onion=Hagyma +Onion Soup=Hagymaleves +Parsley=Petrezselyem +Pea Pod=Hüvelyes borsó +Pea Soup=Borsóleves +Peppercorn=Borsszemek +Green Pepper=Zöldpaprika +Yellow Pepper=Sárga paprika +Red Pepper=Pirospaprika +Ground Pepper=Őrölt bors +Pineapple Top=Ananászüstök +Pineapple=Ananász +Pineapple Ring=Szelet ananász +Pineapple Juice=Ananászlé +Potato=Krumpli +Baked Potato=Sült krumpli +Cucumber and Potato Salad=Uborkás krumplisaláta +Pumpkin Slice=Szelet tök +Jack 'O Lantern (punch to turn on and off)=Töklámpás (ütéssel kapcsold ki és be) +Scarecrow Bottom=Madárijesztő alja +Pumpkin Bread=Tökkenyér +Pumpkin Dough=Töktészta +Pumpkin=Tök +Raspberries=Málna +Raspberry Smoothie=Málnasmoothie +Rhubarb=Rebarbara +Rhubarb Pie=Rebarbaratorta +Rice Seed=Rizsmag +Rice=Rizs +Rice Bread=Rizskenyér +Rice Flour=Rizsliszt +Rye seed=Rozsmag +Rye=Rozs +Oat seed=Zabmag +Oats=Zab +Multigrain Flour=Vegyesliszt +Multigrain Bread=Vegyesliszt-kenyér +Savanna Soil=Szavannatalaj +Wet Savanna Soil=Nedves szavannatalaj +Soil=Talaj +Wet Soil=Nedves talaj +Soy Pod=Hüvelyes szója +Soy Sauce=Szójaszósz +Soy Milk=Szójatej +Tofu=Tofu +Cooked Tofu=Főtt tofu +Spinach=Spenót +Strawberry=Eper +Sunflower=Napraforgó +Sunflower Seeds=Napraforgómag +Toasted Sunflower Seeds=Szotyi +Bottle of Sunflower Oil=Üveg napraforgó-olaj +Sunflower Seed Bread=Napraforgómagos kenyér +Tomato=Paradicsom +Tomato Soup=Paradicsomleves +Wooden Bowl=Fatál +Saucepan=Szószostál +Cooking Pot=Főzőedény +Baking Tray=Sütőtál +Skillet=Serpenyő +Mortar and Pestle=Mozsár +Cutting Board=Vágódeszka +Juicer=Facsaró +Glass Mixing Bowl=Üver keverőedény +Vanilla=Vanília +Vanilla Extract=Vaníliakivonat +Wheat Seed=Búzamag +Wheat=Búza +Straw=Szívószál +Flour=Liszt +Bread=Kenyér +Sliced Bread=Szeletelt kenyér +Toast=Pirítós +Toast Sandwich=Pirítósszendvics diff --git a/mods/.farming_old/locale/farming.it.tr b/mods/.farming_old/locale/farming.it.tr new file mode 100644 index 00000000..694b2e62 --- /dev/null +++ b/mods/.farming_old/locale/farming.it.tr @@ -0,0 +1,176 @@ +# textdomain: farming +Artichoke= +Asparagus= +Barley Seed=Seme d'orzo +Barley=Orzo +Green Beans=Fagiolini +Bean Pole (place on soil before planting beans)=Palina per fagiolini (mettila sul terreno coltivabile prima di piantare i fagiolini) +Beetroot=Barbabietola +Beetroot Soup=Zuppa di barbabietola +Blackberries= +Wild Blueberries=Mirtilli Selvatici +Blueberry Muffin=Focaccina di mirtilli +Blueberry Pie=Tortino di mirtilli +Cabbage= +Carrot=Carota +Carrot Juice=Succo di carota +Golden Carrot=Carota d'oro +Chili Pepper=Peperoncino +Bowl of Chili=Ciotola di peperoncino +Chili Powder= +Raw Cocoa Beans= +Cocoa Beans=Chicchi di cacao +Cookie=Biscotto +Bar of Dark Chocolate=Barra di cioccolato fondente +Chocolate Block=Blocco di cioccolato +Coffee Beans=Chicchi di caffè +Cup of Coffee=Tazza di caffè +Banana=Banana +Banana Leaves=Foglie di banano +Orange=Arancia +Corn=Mais +Corn on the Cob=Pannocchia arrostita +Popcorn= +Cornstarch=Amido di mais +Bottle of Ethanol=Bottiglia di alcol etilico +Wild Cotton= +Cotton Seed=Seme di cotone +Cotton=Cotone +String=Filo +Cucumber=Cetriolo +Eggplant= +Glass of Water= +Sugar=Zucchero +Sugar Cube= +Caramel= +Salt=Sale +Mayonnaise= +Rose Water=Acqua di rose +Turkish Delight=Lokum +Garlic Bread=Pane all'aglio +Donut=Ciambella +Chocolate Donut=Ciambella al cioccolato +Apple Donut=Ciambella alla mela +Porridge=Porridge +Jaffa Cake=Torta di jaffa +Apple Pie= +Cactus Juice= +Pasta= +Mac & Cheese= +Spaghetti= +Bibimbap= +Burger= +Salad= +Triple Berry Smoothie= +Spanish Potatoes= +Potato omelet= +Paella= +Vanilla Flan= +Vegan Cheese= +Onigiri= +Gyoza= +Mochi= +Gingerbread Man= +Garlic clove=Spicchio d'aglio +Garlic=Aglio +Garlic Braid=Treccia d'aglio +Ginger= +Grapes=Chicchi d'uva +Trellis (place on soil before planting grapes)=Graticcio (mettilo sul terreno coltivabile prima di piantare i chicchi d'uva) +Hemp Seed=Seme di canapa +Hemp Leaf=Foglia di canapa +Bottle of Hemp Oil=Bottiglia d'olio di canapa +Hemp Fibre=Fibra di canapa +Hemp Block=Blocco di canapa +Hemp Rope=Corda di canapa +Hoe=Zappa +Wooden Hoe=Zappa di legno +Stone Hoe=Zappa di pietra +Steel Hoe=Zappa d'acciaio +Bronze Hoe=Zappa di bronzo +Mese Hoe=Zappa di mese +Diamond Hoe=Zappa di diamante +Wood Hoe= +Hoe Bomb (use or throw on grassy areas to hoe land)=Bomba zappa (usala o lanciala sulle aree erbose per zappare il terreno) +Mithril Scythe (Use to harvest and replant crops)= +Seed=Seme +Lettuce= +Melon Slice=Fetta d'anguria +Melon=Anguria +Mint Seeds= +Mint Leaf= +Mint Tea= +Onion=Cipolla +Onion Soup= +Parsley= +Pea Pod=Baccello di piselli +Pea Soup=Zuppa di piselli +Peppercorn=Grano di pepe +Green Pepper= +Yellow Pepper= +Red Pepper= +Ground Pepper=Pepe macinato +Pineapple Top=Cima d'ananas +Pineapple=Ananas +Pineapple Ring=Anello d'ananas +Pineapple Juice=Succo d'ananas +Potato=Patata +Baked Potato=Patata arrostita +Cucumber and Potato Salad=Insalata di patate e cetrioli +Pumpkin Slice=Fetta di zucca +Jack 'O Lantern (punch to turn on and off)=Jack Lanterna (colpirlo per accenderlo e spegnerlo) +Scarecrow Bottom=Fondo dello spaventapasseri +Pumpkin Bread=Pane alla zucca +Pumpkin Dough=Pasta di zucca +Pumpkin=Zucca +Raspberries=Lamponi +Raspberry Smoothie=Purea di lamponi +Rhubarb=Rabarbaro +Rhubarb Pie=Tortino al rabarbaro +Rice Seed= +Rice=Riso +Rice Bread=Pane di riso +Rice Flour=Farina di riso +Rye seed=Seme di segale +Rye=Segale +Oat seed=Seme d'avena +Oats= +Multigrain Flour=Farina multicereale +Multigrain Bread=Pane multicereale +Savanna Soil= +Wet Savanna Soil= +Soil=Terreno coltivabile +Wet Soil=Terreno coltivabile bagnato +Soy Pod= +Soy Sauce= +Soy Milk= +Tofu= +Cooked Tofu= +Spinach= +Strawberry=Fragola +Sunflower= +Sunflower Seeds= +Toasted Sunflower Seeds= +Bottle of Sunflower Oil= +Sunflower Seed Bread= +Tomato=Pomodoro +Tomato Soup= +Wooden Bowl=Ciotola di legno +Saucepan=Casseruola +Cooking Pot=Pentola da cottura +Baking Tray=Teglia da forno +Skillet=Padella +Mortar and Pestle=Mortaio e pestello +Cutting Board=Tagliere +Juicer=Spremiagrumi +Glass Mixing Bowl=Terrina di vetro +Vanilla= +Vanilla Extract= +Wheat Seed=Seme di grano +Wheat=Grano +Straw=Paglia +Flour=Farina +Bread=Pane +Sliced Bread=Pane a fette +Toast=Pane tostato +Toast Sandwich=Panino di pane tostato diff --git a/mods/.farming_old/locale/farming.pt.tr b/mods/.farming_old/locale/farming.pt.tr new file mode 100644 index 00000000..95afd02a --- /dev/null +++ b/mods/.farming_old/locale/farming.pt.tr @@ -0,0 +1,176 @@ +# textdomain: farming +Artichoke= +Asparagus= +Barley Seed=Sementes de Cevada +Barley=Cevada +Green Beans=Feijoes Verdes +Bean Pole (place on soil before planting beans)=Apoio de feijao (coloque no solo antes de plantar feijao) +Beetroot= +Beetroot Soup= +Blackberries= +Wild Blueberries=Mirtilos Selvagens +Blueberry Muffin=Muffin de Mirtilos +Blueberry Pie= +Cabbage= +Carrot=Cenoura +Carrot Juice= +Golden Carrot=Cenoura Dourada +Chili Pepper= +Bowl of Chili= +Chili Powder= +Raw Cocoa Beans= +Cocoa Beans=Amendoas de Cacau +Cookie=Cookie +Bar of Dark Chocolate=Barra de Chocolate Preto +Chocolate Block= +Coffee Beans=Grao de Cafe +Cup of Coffee=Xicara de Cafe +Banana= +Banana Leaves= +Orange= +Corn=Milho +Corn on the Cob=Espiga de Milho +Popcorn= +Cornstarch= +Bottle of Ethanol=Garrafa de Etanol +Wild Cotton= +Cotton Seed=Sementes de Algodao +Cotton=Algodao +String= +Cucumber=Pepino +Eggplant= +Glass of Water= +Sugar=Açucar +Sugar Cube= +Caramel= +Salt= +Mayonnaise= +Rose Water= +Turkish Delight= +Garlic Bread= +Donut=Donut +Chocolate Donut=Donut de Chocolate +Apple Donut=Donut de Maça +Porridge= +Jaffa Cake= +Apple Pie= +Cactus Juice= +Pasta= +Mac & Cheese= +Spaghetti= +Bibimbap= +Burger= +Salad= +Triple Berry Smoothie= +Spanish Potatoes= +Potato omelet= +Paella= +Vanilla Flan= +Vegan Cheese= +Onigiri= +Gyoza= +Mochi= +Gingerbread Man= +Garlic clove= +Garlic= +Garlic Braid= +Ginger= +Grapes=Uvas +Trellis (place on soil before planting grapes)=Grade de Ripas (colocar no solo antes de plantar uvas) +Hemp Seed=Sementes de Canhamo +Hemp Leaf=Folha de Canhamo +Bottle of Hemp Oil=Garrafa de Oleo de Canhamo +Hemp Fibre=Fibra de Canhamo +Hemp Block= +Hemp Rope=Corda de Canhamo +Hoe=Enxada +Wooden Hoe=Enxada de Madeira +Stone Hoe=Enxada de Pedra +Steel Hoe=Enxada de Aço +Bronze Hoe=Enxada de Bronze +Mese Hoe=Enxada de Mese +Diamond Hoe=Enxada de Diamante +Wood Hoe= +Hoe Bomb (use or throw on grassy areas to hoe land)= +Mithril Scythe (Use to harvest and replant crops)= +Seed=Sementes +Lettuce= +Melon Slice=Sementes de Melancia +Melon=Melancia +Mint Seeds= +Mint Leaf= +Mint Tea= +Onion= +Onion Soup= +Parsley= +Pea Pod= +Pea Soup= +Peppercorn= +Green Pepper= +Yellow Pepper= +Red Pepper= +Ground Pepper= +Pineapple Top= +Pineapple= +Pineapple Ring= +Pineapple Juice= +Potato=Batata +Baked Potato=Batata Cozida +Cucumber and Potato Salad= +Pumpkin Slice=Pedaço de Abobora +Jack 'O Lantern (punch to turn on and off)=Jack 'O Lantern (Socos para ligar e desligar) +Scarecrow Bottom= +Pumpkin Bread=Pao de Abobora +Pumpkin Dough=Massa de Abobora +Pumpkin=Abobora +Raspberries=Framboesa +Raspberry Smoothie=Batida de Framboesa +Rhubarb=Ruibarbo +Rhubarb Pie=Torta de Ruibarbo +Rice Seed= +Rice= +Rice Bread= +Rice Flour= +Rye seed= +Rye= +Oat seed= +Oats= +Multigrain Flour= +Multigrain Bread= +Savanna Soil= +Wet Savanna Soil= +Soil=Solo +Wet Soil=Solo Seco +Soy Pod= +Soy Sauce= +Soy Milk= +Tofu= +Cooked Tofu= +Spinach= +Strawberry= +Sunflower= +Sunflower Seeds= +Toasted Sunflower Seeds= +Bottle of Sunflower Oil= +Sunflower Seed Bread= +Tomato=Tomate +Tomato Soup= +Wooden Bowl= +Saucepan= +Cooking Pot= +Baking Tray= +Skillet= +Mortar and Pestle= +Cutting Board= +Juicer= +Glass Mixing Bowl= +Vanilla= +Vanilla Extract= +Wheat Seed=Sementes de Trigo +Wheat=Trigo +Straw=Palha +Flour=Farinha +Bread=Pao +Sliced Bread= +Toast= +Toast Sandwich= diff --git a/mods/.farming_old/locale/farming.ru.tr b/mods/.farming_old/locale/farming.ru.tr new file mode 100644 index 00000000..e78e043a --- /dev/null +++ b/mods/.farming_old/locale/farming.ru.tr @@ -0,0 +1,186 @@ +# textdomain: farming + Crop=. +Artichoke=Артишок +Asparagus=Спаржа +Barley Seed=Семена ячменя +Barley=Ячмень +Green Beans=Зеленая фасоль +Bean Pole (place on soil before planting beans)=Жердь для бобовых (установите на почву перед посадкой бобовых) +Beetroot=Свекла +Beetroot Soup=Борщ +Blackberry=Ежевика +Blackberries=Ежевика +Wild Blueberries=Голубика +Blueberry=Голубика +Blueberry Muffin=Кекс с голубикой +Blueberry Pie=Пирог с голубикой +Cabbage=Капуста +Carrot=Морковь +Carrot Juice=Морковный сок +Golden Carrot=Золотая морковь +Chili Pepper=Перец чили +Bowl of Chili=Миска чили +Chili Powder=Порошок чили +Raw Cocoa Beans=Сырые какао-бобы +Cocoa Beans=Какао-бобы +Cookie=Печенье +Bar of Dark Chocolate=Плитка темного шоколада +Chocolate Block=Шоколадный блок +Coffee=Кофе +Coffee Beans=Кофейные зерна +Cup of Coffee=Чашка кофе +Banana=Банан +Banana Leaves=Листья банана +Orange=Апельсин +Corn=Кукуруза +Corn on the Cob=Початок кукурузы +Popcorn=Попкорн +Cornstarch=Кукурузный крахмал +Bottle of Ethanol=Бутылка спирта +Wild Cotton=Дикорастущий хлопок +Cotton Seed=Семена хлопка +Cotton=Хлопок +String=Нить +Cucumber=Огурец +Eggplant=Баклажан +Glass of Water=Стакан воды +Sugar=Сахар +Sugar Cube=Кусочек сахара +Caramel=Карамель +Salt=Соль +Mayonnaise=Майонез +Rose Water=Розовая вода +Turkish Delight=Рахат-лукум +Garlic Bread=Чесночный хлеб +Donut=Пончик +Chocolate Donut=Шоколадный пончик +Apple Donut=Яблочный пончик +Porridge=Каша +Jaffa Cake=Яффский пирог +Apple Pie=Яблочный пирог +Cactus Juice=Кактусовый сок +Pasta=Паста +Mac & Cheese=Макароны с сыром +Spaghetti=Спагетти +Bibimbap=Бибимпап +Burger=Бургер +Salad=Салат +Triple Berry Smoothie=Тройной ягодный смузи +Spanish Potatoes=Испанский картофель +Potato omelet=Картофельный омлет +Paella=Паэлья +Vanilla Flan=Ванильный флан +Vegan Cheese=Веганский сыр +Onigiri=Онигири +Gyoza=Гёдза +Mochi=Моти +Gingerbread Man=Пряничный человечек +Garlic clove=Зубчик чеснока +Garlic=Чеснок +Garlic Braid=Связка чеснока +Ginger=Имбирь +Grapes=Виноград +Trellis (place on soil before planting grapes)=Решетка (поставьте на почву перед посадкой винограда) +Hemp=Конопля +Hemp Seed=Семена конопли +Hemp Leaf=Лист конопли +Bottle of Hemp Oil=Бутылка конопляного масла +Hemp Fibre=Конопляное волокно +Hemp Block=Блок конопли +Hemp Rope=Пеньковая веревка +Hoe=Мотыга +Wooden Hoe=Деревянная мотыга +Stone Hoe=Каменная мотыга +Steel Hoe=Стальная мотыга +Bronze Hoe=Бронзовая мотыга +Mese Hoe=Магическая мотыга +Diamond Hoe=Алмазная мотыга +Wood Hoe=Деревянная мотыга +Hoe Bomb (use or throw on grassy areas to hoe land)=Мотыгобомба (используйте или бросьте на траву для ее обработки) +Mithril Scythe (Use to harvest and replant crops)=Мифриловая коса (используется для сбора и пересадки урожая) +Seed=Семена +Lettuce=Латук +Melon Slice=Долька арбуза +Melon=Арбуз +Mint=Мята +Mint Seeds=Семена мяты +Mint Leaf=Лист мяты +Mint Tea=Чай с мятой +Onion=Лук +Onion Soup=Луковый суп +Parsley=Петрушка +Pea=Горох +Pea Pod=Стручок гороха +Pea Soup=Гороховый суп +Pepper=Перец +Peppercorn=Перчинка +Green Pepper=Зеленый перец +Yellow Pepper=Желтый перец +Red Pepper=Красный перец +Ground Pepper=Молотый перец +Pineapple Top=Верхушка ананаса +Pineapple=Ананас +Pineapple Ring=Кольцо ананаса +Pineapple Juice=Ананасовый сок +Potato=Картофель +Baked Potato=Печеный картофель +Cucumber and Potato Salad=Салат из огурцов и картофеля +Pumpkin Slice=Ломтик тыквы +Jack 'O Lantern (punch to turn on and off)=Светильник джека (удар для включения и выключения) +Scarecrow Bottom=Основание пугала +Pumpkin Bread=Тыквенный хлеб +Pumpkin Dough=Тыквенное тесто +Pumpkin=Тыква +Raspberry=Малина +Raspberries=Малина +Raspberry Smoothie=Малиновый смузи +Rhubarb=Ревень +Rhubarb Pie=Пирог с ревенем +Rice Seed=Семена риса +Rice=Рис +Rice Bread=Рисовый хлеб +Rice Flour=Рисовая мука +Rye seed=Зёрна ржи +Rye=Рожь +Oat seed=Семена овса +Oats=Овес +Multigrain Flour=Мультизерновая мука +Multigrain Bread=Мультизерновой хлеб +Savanna Soil=Земля саванны +Wet Savanna Soil=Увлажненная земля саванны +Soil=Земля +Wet Soil=Увлажненная земля +Soy=Соя +Soy Pod=Соевый стручок +Soy Sauce=Соевый соус +Soy Milk=Соевое молоко +Tofu=Тофу +Cooked Tofu=Вареный тофу +Spinach=Шпинат +Strawberry=Земляника +Sunflower=Подсолнечник +Sunflower Seeds=Семена подсолнечника +Toasted Sunflower Seeds=Жаренные семена подсолнечника +Bottle of Sunflower Oil=Бутылка подсолнечного масла +Sunflower Seed Bread=Хлеб из семян подсолнечника +Tomato=Помидор +Tomato Soup=Томатный суп +Wooden Bowl=Деревянная миска +Saucepan=Кастрюля +Cooking Pot=Котел +Baking Tray=Противень +Skillet=Сковорода +Mortar and Pestle=Ступка и пестик +Cutting Board=Разделочная доска +Juicer=Соковыжималка +Glass Mixing Bowl=Стеклянная чаша +Vanilla=Ваниль +Vanilla Extract=Экстракт ванили +Wheat Seed=Зёрна пшеницы +Wheat=Пшеница +Straw=Солома +Flour=Мука +Bread=Хлеб +Sliced Bread=Нарезанный хлеб +Toast=Тост +Toast Sandwich=Сэндвич diff --git a/mods/.farming_old/locale/farming.zh_CN.tr b/mods/.farming_old/locale/farming.zh_CN.tr new file mode 100644 index 00000000..b773d32f --- /dev/null +++ b/mods/.farming_old/locale/farming.zh_CN.tr @@ -0,0 +1,176 @@ +# textdomain: farming +Artichoke= +Asparagus= +Barley Seed=大麦种子 +Barley=大麦 +Green Beans=青豆 +Bean Pole (place on soil before planting beans)=豆杆(种豆前先放在土上) +Beetroot=甜菜根 +Beetroot Soup=甜菜根汤 +Blackberries= +Wild Blueberries=蓝莓 +Blueberry Muffin=蓝莓松糕 +Blueberry Pie=蓝莓派 +Cabbage= +Carrot=胡萝卜 +Carrot Juice=胡萝卜汁 +Golden Carrot=金萝卜 +Chili Pepper=辣椒 +Bowl of Chili=一碗辣椒 +Chili Powder= +Raw Cocoa Beans= +Cocoa Beans=可可豆 +Cookie=曲奇 +Bar of Dark Chocolate=黑巧克力条 +Chocolate Block=巧克力块 +Coffee Beans=咖啡豆 +Cup of Coffee=一杯咖啡 +Banana=香蕉 +Banana Leaves=香蕉叶 +Orange=橙色 +Corn=玉米 +Corn on the Cob=玉米棒 +Popcorn= +Cornstarch=玉米淀粉 +Bottle of Ethanol=一瓶乙醇 +Wild Cotton= +Cotton Seed=棉籽 +Cotton=棉花 +String=线 +Cucumber=黄瓜 +Eggplant= +Glass of Water= +Sugar=糖 +Sugar Cube= +Caramel= +Salt=盐 +Mayonnaise= +Rose Water=玫瑰汁 +Turkish Delight=土耳其软糖 +Garlic Bread=蒜香面包 +Donut=甜甜圈 +Chocolate Donut=巧克力甜甜圈 +Apple Donut=苹果甜甜圈 +Porridge=粥 +Jaffa Cake=佳发饼 +Apple Pie= +Cactus Juice= +Pasta= +Mac & Cheese= +Spaghetti= +Bibimbap= +Burger= +Salad= +Triple Berry Smoothie= +Spanish Potatoes= +Potato omelet= +Paella= +Vanilla Flan= +Vegan Cheese= +Onigiri= +Gyoza= +Mochi= +Gingerbread Man= +Garlic clove=蒜瓣 +Garlic=大蒜 +Garlic Braid=蒜辫 +Ginger= +Grapes=葡萄 +Trellis (place on soil before planting grapes)=棚架(种植葡萄前先放在土壤上) +Hemp Seed=大麻籽 +Hemp Leaf=大麻叶 +Bottle of Hemp Oil=一瓶大麻油 +Hemp Fibre=大麻纤维 +Hemp Block=麻块 +Hemp Rope=麻绳 +Hoe=锄头 +Wooden Hoe=木锄 +Stone Hoe=石锄 +Steel Hoe=钢锄头 +Bronze Hoe=青铜锄头 +Mese Hoe=黄石锄头 +Diamond Hoe=钻石锄 +Wood Hoe= +Hoe Bomb (use or throw on grassy areas to hoe land)=锄弹(在草地上使用或扔在锄地上) +Mithril Scythe (Use to harvest and replant crops)= +Seed=种子 +Lettuce= +Melon Slice=西瓜片 +Melon=甜瓜 +Mint Seeds= +Mint Leaf= +Mint Tea= +Onion=洋葱 +Onion Soup= +Parsley= +Pea Pod=豌豆荚 +Pea Soup=豌豆汤 +Peppercorn=胡椒粉 +Green Pepper= +Yellow Pepper= +Red Pepper= +Ground Pepper=胡椒粉 +Pineapple Top=菠萝上衣 +Pineapple=菠萝 +Pineapple Ring=菠萝圈 +Pineapple Juice=菠萝汁 +Potato=土豆 +Baked Potato=焗马铃薯 +Cucumber and Potato Salad=黄瓜土豆沙拉 +Pumpkin Slice=南瓜片 +Jack 'O Lantern (punch to turn on and off)=杰克灯(按一下开关) +Scarecrow Bottom=稻草人屁股 +Pumpkin Bread=南瓜面包 +Pumpkin Dough=南瓜面团 +Pumpkin=南瓜 +Raspberries=覆盆子 +Raspberry Smoothie=覆盆子冰沙 +Rhubarb=大黄 +Rhubarb Pie=大黄派 +Rice Seed= +Rice=大米 +Rice Bread=米饭面包 +Rice Flour=米粉 +Rye seed=黑麦种子 +Rye=黑麦 +Oat seed=燕麦籽 +Oats= +Multigrain Flour=多粒面粉 +Multigrain Bread=杂粮面包 +Savanna Soil= +Wet Savanna Soil= +Soil=土壤 +Wet Soil=湿土 +Soy Pod= +Soy Sauce= +Soy Milk= +Tofu= +Cooked Tofu= +Spinach= +Strawberry=草莓 +Sunflower= +Sunflower Seeds= +Toasted Sunflower Seeds= +Bottle of Sunflower Oil= +Sunflower Seed Bread= +Tomato=番茄 +Tomato Soup= +Wooden Bowl=木碗 +Saucepan=平底锅 +Cooking Pot=锅 +Baking Tray=烤盘 +Skillet=平底锅 +Mortar and Pestle=研钵 +Cutting Board=砧板 +Juicer=榨汁机 +Glass Mixing Bowl=搅拌杯 +Vanilla= +Vanilla Extract= +Wheat Seed=小麦种子 +Wheat=小麦 +Straw=稻草 +Flour=面粉 +Bread=面包 +Sliced Bread=切片面包 +Toast=烤面包片 +Toast Sandwich=三明治面包 diff --git a/mods/.farming_old/locale/farming.zh_TW.tr b/mods/.farming_old/locale/farming.zh_TW.tr new file mode 100644 index 00000000..07a874a9 --- /dev/null +++ b/mods/.farming_old/locale/farming.zh_TW.tr @@ -0,0 +1,176 @@ +# textdomain: farming +Artichoke= +Asparagus= +Barley Seed=大麥種子 +Barley=大麥 +Green Beans=青豆 +Bean Pole (place on soil before planting beans)=豆杆(種豆前先放在土上) +Beetroot=甜菜根 +Beetroot Soup=甜菜根湯 +Blackberries= +Wild Blueberries=藍莓 +Blueberry Muffin=藍莓鬆糕 +Blueberry Pie=藍莓派 +Cabbage= +Carrot=胡蘿蔔 +Carrot Juice=胡蘿蔔汁 +Golden Carrot=金蘿蔔 +Chili Pepper=辣椒 +Bowl of Chili=一碗辣椒 +Chili Powder= +Raw Cocoa Beans= +Cocoa Beans=可可豆 +Cookie=曲奇 +Bar of Dark Chocolate=黑巧克力條 +Chocolate Block=巧克力塊 +Coffee Beans=咖啡豆 +Cup of Coffee=一杯咖啡 +Banana=香蕉 +Banana Leaves=香蕉葉 +Orange=橙色 +Corn=玉米 +Corn on the Cob=玉米棒 +Popcorn= +Cornstarch=玉米澱粉 +Bottle of Ethanol=一瓶乙醇 +Wild Cotton= +Cotton Seed=棉籽 +Cotton=棉花 +String=字符串 +Cucumber=黃瓜 +Eggplant= +Glass of Water= +Sugar=糖 +Sugar Cube= +Caramel= +Salt=鹽 +Mayonnaise= +Rose Water=玫瑰汁 +Turkish Delight=土耳其軟糖 +Garlic Bread=蒜香麵包 +Donut=甜甜圈 +Chocolate Donut=巧克力甜甜圈 +Apple Donut=蘋果甜甜圈 +Porridge=粥 +Jaffa Cake=佳發餅 +Apple Pie= +Cactus Juice= +Pasta= +Mac & Cheese= +Spaghetti= +Bibimbap= +Burger= +Salad= +Triple Berry Smoothie= +Spanish Potatoes= +Potato omelet= +Paella= +Vanilla Flan= +Vegan Cheese= +Onigiri= +Gyoza= +Mochi= +Gingerbread Man= +Garlic clove=蒜瓣 +Garlic=大蒜 +Garlic Braid=蒜辮 +Ginger= +Grapes=葡萄 +Trellis (place on soil before planting grapes)=棚架(種植葡萄前先放在土壤上) +Hemp Seed=大麻籽 +Hemp Leaf=大麻葉 +Bottle of Hemp Oil=一瓶大麻油 +Hemp Fibre=大麻纖維 +Hemp Block=麻塊 +Hemp Rope=麻繩 +Hoe=鋤頭 +Wooden Hoe=木鋤 +Stone Hoe=石鋤 +Steel Hoe=鋼鋤頭 +Bronze Hoe=青銅鋤頭 +Mese Hoe=黃石鋤頭 +Diamond Hoe=鑽石鋤 +Wood Hoe= +Hoe Bomb (use or throw on grassy areas to hoe land)=鋤彈(在草地上使用或扔在鋤地上) +Mithril Scythe (Use to harvest and replant crops)= +Seed=種子 +Lettuce= +Melon Slice=西瓜片 +Melon=甜瓜 +Mint Seeds= +Mint Leaf= +Mint Tea= +Onion=洋蔥 +Onion Soup= +Parsley= +Pea Pod=豌豆莢 +Pea Soup=豌豆湯 +Peppercorn=胡椒粉 +Green Pepper= +Yellow Pepper= +Red Pepper= +Ground Pepper=胡椒粉 +Pineapple Top=菠蘿上衣 +Pineapple=菠蘿 +Pineapple Ring=菠蘿圈 +Pineapple Juice=菠蘿汁 +Potato=土豆 +Baked Potato=焗馬鈴薯 +Cucumber and Potato Salad=黃瓜土豆沙拉 +Pumpkin Slice=南瓜片 +Jack 'O Lantern (punch to turn on and off)=南瓜燈(按一下開關) +Scarecrow Bottom=稻草人屁股 +Pumpkin Bread=南瓜麵包 +Pumpkin Dough=南瓜麵糰 +Pumpkin=南瓜 +Raspberries=覆盆子 +Raspberry Smoothie=覆盆子冰沙 +Rhubarb=大黃 +Rhubarb Pie=大黃派 +Rice Seed= +Rice=大米 +Rice Bread=米飯麵包 +Rice Flour=米粉 +Rye seed=黑麥種子 +Rye=黑麥 +Oat seed=燕麥籽 +Oats= +Multigrain Flour=多粒麵粉 +Multigrain Bread=雜糧麵包 +Savanna Soil= +Wet Savanna Soil= +Soil=土壤 +Wet Soil=溼土 +Soy Pod= +Soy Sauce= +Soy Milk= +Tofu= +Cooked Tofu= +Spinach= +Strawberry=草莓 +Sunflower= +Sunflower Seeds= +Toasted Sunflower Seeds= +Bottle of Sunflower Oil= +Sunflower Seed Bread= +Tomato=番茄 +Tomato Soup= +Wooden Bowl=木碗 +Saucepan=平底鍋 +Cooking Pot=鍋 +Baking Tray=烤盤 +Skillet=平底鍋 +Mortar and Pestle=研缽 +Cutting Board=砧板 +Juicer=榨汁機 +Glass Mixing Bowl=攪拌杯 +Vanilla= +Vanilla Extract= +Wheat Seed=小麥種子 +Wheat=小麥 +Straw=稻草 +Flour=麵粉 +Bread=麵包 +Sliced Bread=切片面包 +Toast=烤麵包片 +Toast Sandwich=三明治麵包 diff --git a/mods/.farming_old/lucky_block.lua b/mods/.farming_old/lucky_block.lua new file mode 100644 index 00000000..5aa5f4c9 --- /dev/null +++ b/mods/.farming_old/lucky_block.lua @@ -0,0 +1,109 @@ + +local mcl = farming.mcl + +-- add lucky blocks + +lucky_block:add_blocks({ + + {"dro", {"farming:corn"}, 5}, + {"dro", {"farming:coffee_cup_hot"}, 1}, + {"dro", {(mcl and "mcl_farming:bread" or "farming:bread")}, 5}, + {"nod", (mcl and "mcl_farming:pumpkin_face_light" or "farming:jackolantern"), 0}, + {"tro", (mcl and "mcl_farming:pumpkin_face_light" or "farming:jackolantern_on")}, + {"nod", (mcl and "mcl_core:water_source" or "default:river_water_source"), 1}, + {"tel"}, + {"dro", {"farming:trellis", "farming:grapes"}, 5}, + {"dro", {"farming:bottle_ethanol"}, 1}, + {"nod", (mcl and "mcl_farming:melon" or "farming:melon"), 0}, + {"dro", {"farming:donut", "farming:donut_chocolate", "farming:donut_apple"}, 5}, + {"dro", {"farming:hemp_leaf", "farming:hemp_fibre", "farming:seed_hemp"}, 10}, + {"nod", (mcl and "mcl_fire:fire" or "fire:permanent_flame"), 1}, + {"dro", {"farming:chili_pepper", "farming:chili_bowl"}, 5}, + {"dro", {(mcl and "mcl_core:bowl" or "farming:bowl")}, 3}, + {"dro", {"farming:saucepan"}, 1}, + {"dro", {"farming:pot"}, 1}, + {"dro", {"farming:baking_tray"}, 1}, + {"dro", {"farming:skillet"}, 1}, + {"exp", 4}, + {"dro", {"farming:mortar_pestle"}, 1}, + {"dro", {"farming:cutting_board"}, 1}, + {"dro", {"farming:juicer"}, 1}, + {"dro", {"farming:mixing_bowl"}, 1}, + {"dro", {"farming:sunflower_oil"}, 5}, + {"dro", {(mcl and "mcl_farming:hoe_stone" or "farming:hoe_bronze")}, 1}, + {"dro", {(mcl and "mcl_farming:hoe_gold" or "farming:hoe_mese")}, 1}, + {"dro", {(mcl and "mcl_farming:hoe_diamond" or "farming:hoe_diamond")}, 1}, + {"dro", {"farming:hoe_bomb"}, 10}, + {"dro", {"farming:turkish_delight"}, 5}, + {"lig"}, + {"dro", {(mcl and "mcl_farming:hoe_netherite" or "farming:scythe_mithril")}, 1}, + {"sch", "instafarm", 0, true, { + {"farming:wheat_8", "farming:carrot_8"}, + {"farming:cotton_8", "farming:rhubarb_3"}, + {"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, + {"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, + {"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, + }}, + {"sch", "instafarm", 0, true, { + {"farming:wheat_8", "farming:pepper_5"}, + {"farming:cotton_8", "farming:onion_5"}, + {"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, + {"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, + {"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, + }}, + {"sch", "instafarm", 0, true, { + {"farming:wheat_8", (mcl and "mcl_farming:beetroot" or "farming:beetroot_5")}, + {"farming:cotton_8", "farming:barley_7"}, + {"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, + {"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, + {"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, + }}, + {"sch", "instafarm", 0, true, { + {"farming:wheat_8", "farming:corn_8"}, + {"farming:cotton_8", "farming:grapes_8"}, + {"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, + {"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, + {"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, + }}, + {"sch", "instafarm", 0, true, { + {"farming:wheat_8", "farming:pea_5"}, + {"farming:cotton_8", "farming:coffee_5"}, + {"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, + {"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, + {"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, + }}, + {"sch", "instafarm", 0, true, { + {"farming:wheat_8", "farming:raspberry_4"}, + {"farming:cotton_8", "farming:tomato_8"}, + {"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, + {"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, + {"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, + }}, + {"sch", "instafarm", 0, true, { + {"farming:wheat_8", "farming:chili_8"}, + {"farming:cotton_8", "farming:cucumber_4"}, + {"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, + {"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, + {"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, + }}, + {"sch", "instafarm", 0, true, { + {"farming:wheat_8", "farming:spinach_4"}, + {"farming:cotton_8", "farming:eggplant_4"}, + {"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, + {"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, + {"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, + }}, + {"nod", "default:chest", 0, { + {name = (mcl and "mcl_farming:wheat_seeds" or "farming:seed_wheat"), max = 15}, + {name = "farming:seed_barley", max = 15}, + {name = "farming:seed_hemp", max = 15}, + {name = "farming:seed_rye", max = 15}, + {name = "farming:seed_rice", max = 15}, + {name = "farming:seed_oat", max = 15}, + {name = "farming:soil_wet", max = 10}, + {name = "farming:cotton_wild", max = 5}, + {name = "farming:grapebush", max = 5}, + {name = "farming:asparagus", max = 7} + }}, + {"dro", {"farming:chili_powder"}, 5} +}) diff --git a/mods/.farming_old/mod.conf b/mods/.farming_old/mod.conf new file mode 100644 index 00000000..bcaba216 --- /dev/null +++ b/mods/.farming_old/mod.conf @@ -0,0 +1,4 @@ +name = farming +description = Adds many new plants and food into Minetest. +optional_depends = default, flowers, mcl_core, mcl_sounds, mcl_farming, mcl_stairs, mcl_flowers, stairs, lucky_block, toolranks +min_minetest_version = 5.0 diff --git a/mods/.farming_old/screenshot.jpg b/mods/.farming_old/screenshot.jpg new file mode 100644 index 00000000..3fd5c341 Binary files /dev/null and b/mods/.farming_old/screenshot.jpg differ diff --git a/mods/.farming_old/settingtypes.txt b/mods/.farming_old/settingtypes.txt new file mode 100644 index 00000000..7573de9d --- /dev/null +++ b/mods/.farming_old/settingtypes.txt @@ -0,0 +1,4 @@ +# Contains a value used for speed of crop growth in seconds +farming_stage_length (Farming Stage Length) float 160.0 + +farming_use_utensils (Use utensil recipes) bool true diff --git a/mods/.farming_old/soil.lua b/mods/.farming_old/soil.lua new file mode 100644 index 00000000..7572d572 --- /dev/null +++ b/mods/.farming_old/soil.lua @@ -0,0 +1,196 @@ + +local S = minetest.get_translator("farming") + +-- default dry soil node + +local dry_soil = "farming:soil" + +-- add soil types to existing dirt blocks + +minetest.override_item("default:dirt", { + soil = { + base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet" + } +}) + +minetest.override_item("default:dirt_with_grass", { + soil = { + base = "default:dirt_with_grass", dry = "farming:soil", wet = "farming:soil_wet" + } +}) + +if minetest.registered_nodes["default:dirt_with_dry_grass"] then + + minetest.override_item("default:dirt_with_dry_grass", { + soil = { + base = "default:dirt_with_dry_grass", dry = "farming:soil", + wet = "farming:soil_wet" + } + }) +end + +minetest.override_item("default:dirt_with_rainforest_litter", { + soil = { + base = "default:dirt_with_rainforest_litter", dry = "farming:soil", + wet = "farming:soil_wet" + } +}) + +if minetest.registered_nodes["default:dirt_with_coniferous_litter"] then + + minetest.override_item("default:dirt_with_coniferous_litter", { + soil = { + base = "default:dirt_with_coniferous_litter", dry = "farming:soil", + wet = "farming:soil_wet" + } + }) +end + +-- savanna soil + +if minetest.registered_nodes["default:dry_dirt"] then + + minetest.override_item("default:dry_dirt", { + soil = { + base = "default:dry_dirt", dry = "farming:dry_soil", + wet = "farming:dry_soil_wet" + } + }) + + minetest.override_item("default:dry_dirt_with_dry_grass", { + soil = { + base = "default:dry_dirt_with_dry_grass", dry = "farming:dry_soil", + wet = "farming:dry_soil_wet" + } + }) + + minetest.register_node("farming:dry_soil", { + description = S("Savanna Soil"), + tiles = { + "default_dry_dirt.png^farming_soil.png", + "default_dry_dirt.png" + }, + drop = "default:dry_dirt", + groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 2, grassland = 1, + field = 1}, + is_ground_content = false, + sounds = default.node_sound_dirt_defaults(), + soil = { + base = "default:dry_dirt", dry = "farming:dry_soil", + wet = "farming:dry_soil_wet" + } + }) + + minetest.register_node("farming:dry_soil_wet", { + description = S("Wet Savanna Soil"), + tiles = { + "default_dry_dirt.png^farming_soil_wet.png", + "default_dry_dirt.png^farming_soil_wet_side.png" + }, + drop = "default:dry_dirt", + groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 3, grassland = 1, + field = 1}, + is_ground_content = false, + sounds = default.node_sound_dirt_defaults(), + soil = { + base = "default:dry_dirt", dry = "farming:dry_soil", + wet = "farming:dry_soil_wet" + } + }) + + dry_soil = "farming:dry_soil" +end + +-- normal soil + +minetest.register_node("farming:soil", { + description = S("Soil"), + tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"}, + drop = "default:dirt", + groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 2, grassland = 1, + field = 1}, + is_ground_content = false, + sounds = default.node_sound_dirt_defaults(), + soil = { + base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet" + } +}) + +-- wet soil + +minetest.register_node("farming:soil_wet", { + description = S("Wet Soil"), + tiles = { + "default_dirt.png^farming_soil_wet.png", + "default_dirt.png^farming_soil_wet_side.png" + }, + drop = "default:dirt", + groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 3, grassland = 1, + field = 1}, + is_ground_content = false, + sounds = default.node_sound_dirt_defaults(), + soil = { + base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet" + } +}) + +-- sand is not soil, change existing sand-soil to use dry soil + +minetest.register_alias("farming:desert_sand_soil", dry_soil) +minetest.register_alias("farming:desert_sand_soil_wet", dry_soil .. "_wet") + +-- if water near soil then change to wet soil + +minetest.register_abm({ + label = "Soil changes", + nodenames = {"group:field"}, + interval = 15, + chance = 4, + catch_up = false, + + action = function(pos, node) + + local ndef = minetest.registered_nodes[node.name] + if not ndef or not ndef.soil or not ndef.soil.wet + or not ndef.soil.base or not ndef.soil.dry then return end + + pos.y = pos.y + 1 + local nn = minetest.get_node_or_nil(pos) + pos.y = pos.y - 1 + + if nn then nn = nn.name else return end + + -- what's on top of soil, if solid/not plant change soil to dirt + if minetest.registered_nodes[nn] + and minetest.registered_nodes[nn].walkable + and minetest.get_item_group(nn, "plant") == 0 + and minetest.get_item_group(nn, "growing") == 0 then + + minetest.set_node(pos, {name = ndef.soil.base}) + + return + end + + -- check if water is within 3 nodes + if minetest.find_node_near(pos, 3, {"group:water"}) then + + -- only change if it's not already wet soil + if node.name ~= ndef.soil.wet then + minetest.set_node(pos, {name = ndef.soil.wet}) + end + + -- only dry out soil if no unloaded blocks nearby, just incase + elseif not minetest.find_node_near(pos, 3, {"ignore"}) then + + if node.name == ndef.soil.wet then + minetest.set_node(pos, {name = ndef.soil.dry}) + + -- if crop or seed found don't turn to dry soil + elseif node.name == ndef.soil.dry + and minetest.get_item_group(nn, "plant") == 0 + and minetest.get_item_group(nn, "growing") == 0 then + minetest.set_node(pos, {name = ndef.soil.base}) + end + end + end +}) diff --git a/mods/.farming_old/statistics.lua b/mods/.farming_old/statistics.lua new file mode 100644 index 00000000..df12bd96 --- /dev/null +++ b/mods/.farming_old/statistics.lua @@ -0,0 +1,163 @@ + +-- Approximations for erf(x) and erfInv(x) from +-- https://en.wikipedia.org/wiki/Error_function + +local statistics = {} +local random, floor, ceil = math.random, math.floor, math.ceil +local exp, log, sqrt = math.exp, math.log, math.sqrt +local ROOT_2 = sqrt(2.0) +local A = 8 * (math.pi - 3.0) / (3.0 * math.pi * (4.0 - math.pi)) +local B = 4.0 / math.pi +local C = 2.0 / (math.pi * A) +local D = 1.0 / A + + +local function erf(x) + + if x == 0 then return 0 end + + local xSq = x * x + local aXSq = A * xSq + local v = sqrt(1.0 - exp(-xSq * (B + aXSq) / (1.0 + aXSq))) + + return (x > 0 and v) or -v +end + + +local function erf_inv(x) + + if x == 0 then return 0 end + + if x <= -1 or x >= 1 then return nil end + + local y = log(1 - x * x) + local u = C + 0.5 * y + local v = sqrt(sqrt(u * u - D * y) - u) + + return (x > 0 and v) or -v +end + + +local function std_normal(u) + return ROOT_2 * erf_inv(2.0 * u - 1.0) +end + + +local function generate_cdf(lambda_index, lambda) + + local max = ceil(4 * lambda) + local pdf = exp(-lambda) + local cdf = pdf + local t = { [0] = pdf } + + for i = 1, max - 1 do + pdf = pdf * lambda / i + cdf = cdf + pdf + t[i] = cdf + end + + return t +end + + +local cdf_table = {} + +for li = 1, 100 do + cdf_table[li] = generate_cdf(li, 0.25 * li) +end + + +local function poisson(lambda, max) + + if max < 2 then + return (random() < exp(-lambda) and 0) or 1 + elseif lambda >= 2 * max then + return max + end + + local u = random() + local lambda_index = floor(4 * lambda + 0.5) + local cdfs = cdf_table[lambda_index] + + if cdfs then + + lambda = 0.25 * lambda_index + + if u < cdfs[0] then return 0 end + if max > #cdfs then max = #cdfs + 1 else max = floor(max) end + if u >= cdfs[max - 1] then return max end + + if max > 4 then -- Binary search + + local s = 0 + + while s + 1 < max do + + local m = floor(0.5 * (s + max)) + + if u < cdfs[m] then max = m else s = m end + end + else + for i = 1, max - 1 do + if u < cdfs[i] then return i end + end + end + + return max + else + local x = lambda + sqrt(lambda) * std_normal(u) + + return (x < 0.5 and 0) or (x >= max - 0.5 and max) or floor(x + 0.5) + end +end + +-- Error and Inverse error functions + +statistics.erf = erf +statistics.erf_inv = erf_inv + +--- Standard normal distribution function (mean 0, standard deviation 1). + -- @return - Any real number (actually between -3.0 and 3.0). + +statistics.std_normal = function() + + local u = random() + + if u < 0.001 then return -3.0 elseif u > 0.999 then return 3.0 end + + return std_normal(u) +end + +--- Standard normal distribution function (mean 0, standard deviation 1). + -- @param mu - The distribution mean. + -- @param sigma - The distribution standard deviation. + -- @return - Any real number (actually between -3*sigma and 3*sigma). + +statistics.normal = function(mu, sigma) + + local u = random() + + if u < 0.001 then + return mu - 3.0 * sigma + elseif u > 0.999 then + return mu + 3.0 * sigma + end + + return mu + sigma * std_normal(u) +end + +--- Poisson distribution function. + -- @param lambda - The distribution mean and variance. + -- @param max - The distribution maximum. + -- @return - An integer between 0 and max (both inclusive). + +statistics.poisson = function(lambda, max) + + lambda, max = tonumber(lambda), tonumber(max) + + if not lambda or not max or lambda <= 0 or max < 1 then return 0 end + + return poisson(lambda, max) +end + +return statistics diff --git a/mods/.farming_old/textures/crops_garlic.png b/mods/.farming_old/textures/crops_garlic.png new file mode 100644 index 00000000..831335f1 Binary files /dev/null and b/mods/.farming_old/textures/crops_garlic.png differ diff --git a/mods/.farming_old/textures/crops_garlic_braid.png b/mods/.farming_old/textures/crops_garlic_braid.png new file mode 100644 index 00000000..e776a978 Binary files /dev/null and b/mods/.farming_old/textures/crops_garlic_braid.png differ diff --git a/mods/.farming_old/textures/crops_garlic_braid_side.png b/mods/.farming_old/textures/crops_garlic_braid_side.png new file mode 100644 index 00000000..de5286b0 Binary files /dev/null and b/mods/.farming_old/textures/crops_garlic_braid_side.png differ diff --git a/mods/.farming_old/textures/crops_garlic_braid_top.png b/mods/.farming_old/textures/crops_garlic_braid_top.png new file mode 100644 index 00000000..0d3508ad Binary files /dev/null and b/mods/.farming_old/textures/crops_garlic_braid_top.png differ diff --git a/mods/.farming_old/textures/crops_garlic_clove.png b/mods/.farming_old/textures/crops_garlic_clove.png new file mode 100644 index 00000000..00cf9778 Binary files /dev/null and b/mods/.farming_old/textures/crops_garlic_clove.png differ diff --git a/mods/.farming_old/textures/crops_garlic_plant_1.png b/mods/.farming_old/textures/crops_garlic_plant_1.png new file mode 100644 index 00000000..61eb9a86 Binary files /dev/null and b/mods/.farming_old/textures/crops_garlic_plant_1.png differ diff --git a/mods/.farming_old/textures/crops_garlic_plant_2.png b/mods/.farming_old/textures/crops_garlic_plant_2.png new file mode 100644 index 00000000..217fd257 Binary files /dev/null and b/mods/.farming_old/textures/crops_garlic_plant_2.png differ diff --git a/mods/.farming_old/textures/crops_garlic_plant_3.png b/mods/.farming_old/textures/crops_garlic_plant_3.png new file mode 100644 index 00000000..557b017c Binary files /dev/null and b/mods/.farming_old/textures/crops_garlic_plant_3.png differ diff --git a/mods/.farming_old/textures/crops_garlic_plant_4.png b/mods/.farming_old/textures/crops_garlic_plant_4.png new file mode 100644 index 00000000..80ef076c Binary files /dev/null and b/mods/.farming_old/textures/crops_garlic_plant_4.png differ diff --git a/mods/.farming_old/textures/crops_garlic_plant_5.png b/mods/.farming_old/textures/crops_garlic_plant_5.png new file mode 100644 index 00000000..8b8c31a4 Binary files /dev/null and b/mods/.farming_old/textures/crops_garlic_plant_5.png differ diff --git a/mods/.farming_old/textures/crops_onion.png b/mods/.farming_old/textures/crops_onion.png new file mode 100644 index 00000000..4c778c88 Binary files /dev/null and b/mods/.farming_old/textures/crops_onion.png differ diff --git a/mods/.farming_old/textures/crops_onion_plant_1.png b/mods/.farming_old/textures/crops_onion_plant_1.png new file mode 100644 index 00000000..dea2d4b0 Binary files /dev/null and b/mods/.farming_old/textures/crops_onion_plant_1.png differ diff --git a/mods/.farming_old/textures/crops_onion_plant_2.png b/mods/.farming_old/textures/crops_onion_plant_2.png new file mode 100644 index 00000000..1f850f13 Binary files /dev/null and b/mods/.farming_old/textures/crops_onion_plant_2.png differ diff --git a/mods/.farming_old/textures/crops_onion_plant_3.png b/mods/.farming_old/textures/crops_onion_plant_3.png new file mode 100644 index 00000000..d9af2394 Binary files /dev/null and b/mods/.farming_old/textures/crops_onion_plant_3.png differ diff --git a/mods/.farming_old/textures/crops_onion_plant_4.png b/mods/.farming_old/textures/crops_onion_plant_4.png new file mode 100644 index 00000000..962b21ba Binary files /dev/null and b/mods/.farming_old/textures/crops_onion_plant_4.png differ diff --git a/mods/.farming_old/textures/crops_onion_plant_5.png b/mods/.farming_old/textures/crops_onion_plant_5.png new file mode 100644 index 00000000..dfb1f7f8 Binary files /dev/null and b/mods/.farming_old/textures/crops_onion_plant_5.png differ diff --git a/mods/.farming_old/textures/crops_pepper.png b/mods/.farming_old/textures/crops_pepper.png new file mode 100644 index 00000000..bb8f40c3 Binary files /dev/null and b/mods/.farming_old/textures/crops_pepper.png differ diff --git a/mods/.farming_old/textures/crops_pepper_ground.png b/mods/.farming_old/textures/crops_pepper_ground.png new file mode 100644 index 00000000..d72405a3 Binary files /dev/null and b/mods/.farming_old/textures/crops_pepper_ground.png differ diff --git a/mods/.farming_old/textures/crops_pepper_plant_1.png b/mods/.farming_old/textures/crops_pepper_plant_1.png new file mode 100644 index 00000000..43ce6ba5 Binary files /dev/null and b/mods/.farming_old/textures/crops_pepper_plant_1.png differ diff --git a/mods/.farming_old/textures/crops_pepper_plant_2.png b/mods/.farming_old/textures/crops_pepper_plant_2.png new file mode 100644 index 00000000..556f9523 Binary files /dev/null and b/mods/.farming_old/textures/crops_pepper_plant_2.png differ diff --git a/mods/.farming_old/textures/crops_pepper_plant_3.png b/mods/.farming_old/textures/crops_pepper_plant_3.png new file mode 100644 index 00000000..24e92e16 Binary files /dev/null and b/mods/.farming_old/textures/crops_pepper_plant_3.png differ diff --git a/mods/.farming_old/textures/crops_pepper_plant_4.png b/mods/.farming_old/textures/crops_pepper_plant_4.png new file mode 100644 index 00000000..e33554d2 Binary files /dev/null and b/mods/.farming_old/textures/crops_pepper_plant_4.png differ diff --git a/mods/.farming_old/textures/crops_pepper_plant_5.png b/mods/.farming_old/textures/crops_pepper_plant_5.png new file mode 100644 index 00000000..c2c92eb6 Binary files /dev/null and b/mods/.farming_old/textures/crops_pepper_plant_5.png differ diff --git a/mods/.farming_old/textures/crops_pepper_plant_6.png b/mods/.farming_old/textures/crops_pepper_plant_6.png new file mode 100644 index 00000000..f2de13ae Binary files /dev/null and b/mods/.farming_old/textures/crops_pepper_plant_6.png differ diff --git a/mods/.farming_old/textures/crops_pepper_plant_7.png b/mods/.farming_old/textures/crops_pepper_plant_7.png new file mode 100644 index 00000000..b94526ba Binary files /dev/null and b/mods/.farming_old/textures/crops_pepper_plant_7.png differ diff --git a/mods/.farming_old/textures/crops_pepper_red.png b/mods/.farming_old/textures/crops_pepper_red.png new file mode 100644 index 00000000..26802ec7 Binary files /dev/null and b/mods/.farming_old/textures/crops_pepper_red.png differ diff --git a/mods/.farming_old/textures/crops_pepper_yellow.png b/mods/.farming_old/textures/crops_pepper_yellow.png new file mode 100644 index 00000000..c0273e43 Binary files /dev/null and b/mods/.farming_old/textures/crops_pepper_yellow.png differ diff --git a/mods/.farming_old/textures/crops_peppercorn.png b/mods/.farming_old/textures/crops_peppercorn.png new file mode 100644 index 00000000..0ee3c497 Binary files /dev/null and b/mods/.farming_old/textures/crops_peppercorn.png differ diff --git a/mods/.farming_old/textures/default_junglegrass.png b/mods/.farming_old/textures/default_junglegrass.png new file mode 100644 index 00000000..5d8cdbca Binary files /dev/null and b/mods/.farming_old/textures/default_junglegrass.png differ diff --git a/mods/.farming_old/textures/ethereal_banana_leaf.png b/mods/.farming_old/textures/ethereal_banana_leaf.png new file mode 100644 index 00000000..45770dac Binary files /dev/null and b/mods/.farming_old/textures/ethereal_banana_leaf.png differ diff --git a/mods/.farming_old/textures/ethereal_strawberry.png b/mods/.farming_old/textures/ethereal_strawberry.png new file mode 100644 index 00000000..b085fd97 Binary files /dev/null and b/mods/.farming_old/textures/ethereal_strawberry.png differ diff --git a/mods/.farming_old/textures/ethereal_strawberry_1.png b/mods/.farming_old/textures/ethereal_strawberry_1.png new file mode 100644 index 00000000..531ff350 Binary files /dev/null and b/mods/.farming_old/textures/ethereal_strawberry_1.png differ diff --git a/mods/.farming_old/textures/ethereal_strawberry_2.png b/mods/.farming_old/textures/ethereal_strawberry_2.png new file mode 100644 index 00000000..82fa6725 Binary files /dev/null and b/mods/.farming_old/textures/ethereal_strawberry_2.png differ diff --git a/mods/.farming_old/textures/ethereal_strawberry_3.png b/mods/.farming_old/textures/ethereal_strawberry_3.png new file mode 100644 index 00000000..950a57cd Binary files /dev/null and b/mods/.farming_old/textures/ethereal_strawberry_3.png differ diff --git a/mods/.farming_old/textures/ethereal_strawberry_4.png b/mods/.farming_old/textures/ethereal_strawberry_4.png new file mode 100644 index 00000000..ed090917 Binary files /dev/null and b/mods/.farming_old/textures/ethereal_strawberry_4.png differ diff --git a/mods/.farming_old/textures/ethereal_strawberry_5.png b/mods/.farming_old/textures/ethereal_strawberry_5.png new file mode 100644 index 00000000..8e6c0acd Binary files /dev/null and b/mods/.farming_old/textures/ethereal_strawberry_5.png differ diff --git a/mods/.farming_old/textures/ethereal_strawberry_6.png b/mods/.farming_old/textures/ethereal_strawberry_6.png new file mode 100644 index 00000000..c9e97664 Binary files /dev/null and b/mods/.farming_old/textures/ethereal_strawberry_6.png differ diff --git a/mods/.farming_old/textures/ethereal_strawberry_7.png b/mods/.farming_old/textures/ethereal_strawberry_7.png new file mode 100644 index 00000000..e35830d6 Binary files /dev/null and b/mods/.farming_old/textures/ethereal_strawberry_7.png differ diff --git a/mods/.farming_old/textures/ethereal_strawberry_8.png b/mods/.farming_old/textures/ethereal_strawberry_8.png new file mode 100644 index 00000000..10ee97dd Binary files /dev/null and b/mods/.farming_old/textures/ethereal_strawberry_8.png differ diff --git a/mods/.farming_old/textures/farming_apple_pie.png b/mods/.farming_old/textures/farming_apple_pie.png new file mode 100644 index 00000000..a6761350 Binary files /dev/null and b/mods/.farming_old/textures/farming_apple_pie.png differ diff --git a/mods/.farming_old/textures/farming_artichoke.png b/mods/.farming_old/textures/farming_artichoke.png new file mode 100644 index 00000000..74af38b7 Binary files /dev/null and b/mods/.farming_old/textures/farming_artichoke.png differ diff --git a/mods/.farming_old/textures/farming_artichoke_1.png b/mods/.farming_old/textures/farming_artichoke_1.png new file mode 100644 index 00000000..b7f2e020 Binary files /dev/null and b/mods/.farming_old/textures/farming_artichoke_1.png differ diff --git a/mods/.farming_old/textures/farming_artichoke_2.png b/mods/.farming_old/textures/farming_artichoke_2.png new file mode 100644 index 00000000..653637e0 Binary files /dev/null and b/mods/.farming_old/textures/farming_artichoke_2.png differ diff --git a/mods/.farming_old/textures/farming_artichoke_3.png b/mods/.farming_old/textures/farming_artichoke_3.png new file mode 100644 index 00000000..2d203e90 Binary files /dev/null and b/mods/.farming_old/textures/farming_artichoke_3.png differ diff --git a/mods/.farming_old/textures/farming_artichoke_4.png b/mods/.farming_old/textures/farming_artichoke_4.png new file mode 100644 index 00000000..9a44e928 Binary files /dev/null and b/mods/.farming_old/textures/farming_artichoke_4.png differ diff --git a/mods/.farming_old/textures/farming_artichoke_5.png b/mods/.farming_old/textures/farming_artichoke_5.png new file mode 100644 index 00000000..dac25ddf Binary files /dev/null and b/mods/.farming_old/textures/farming_artichoke_5.png differ diff --git a/mods/.farming_old/textures/farming_asparagus.png b/mods/.farming_old/textures/farming_asparagus.png new file mode 100644 index 00000000..4dbc1ecb Binary files /dev/null and b/mods/.farming_old/textures/farming_asparagus.png differ diff --git a/mods/.farming_old/textures/farming_asparagus_1.png b/mods/.farming_old/textures/farming_asparagus_1.png new file mode 100644 index 00000000..87444d1b Binary files /dev/null and b/mods/.farming_old/textures/farming_asparagus_1.png differ diff --git a/mods/.farming_old/textures/farming_asparagus_2.png b/mods/.farming_old/textures/farming_asparagus_2.png new file mode 100644 index 00000000..cb8c6b4b Binary files /dev/null and b/mods/.farming_old/textures/farming_asparagus_2.png differ diff --git a/mods/.farming_old/textures/farming_asparagus_3.png b/mods/.farming_old/textures/farming_asparagus_3.png new file mode 100644 index 00000000..904fb25f Binary files /dev/null and b/mods/.farming_old/textures/farming_asparagus_3.png differ diff --git a/mods/.farming_old/textures/farming_asparagus_4.png b/mods/.farming_old/textures/farming_asparagus_4.png new file mode 100644 index 00000000..13c02ca5 Binary files /dev/null and b/mods/.farming_old/textures/farming_asparagus_4.png differ diff --git a/mods/.farming_old/textures/farming_asparagus_5.png b/mods/.farming_old/textures/farming_asparagus_5.png new file mode 100644 index 00000000..1ed183e0 Binary files /dev/null and b/mods/.farming_old/textures/farming_asparagus_5.png differ diff --git a/mods/.farming_old/textures/farming_baked_potato.png b/mods/.farming_old/textures/farming_baked_potato.png new file mode 100644 index 00000000..425c4ae3 Binary files /dev/null and b/mods/.farming_old/textures/farming_baked_potato.png differ diff --git a/mods/.farming_old/textures/farming_baking_tray.png b/mods/.farming_old/textures/farming_baking_tray.png new file mode 100644 index 00000000..be1711c5 Binary files /dev/null and b/mods/.farming_old/textures/farming_baking_tray.png differ diff --git a/mods/.farming_old/textures/farming_banana_single.png b/mods/.farming_old/textures/farming_banana_single.png new file mode 100644 index 00000000..b15ed2fa Binary files /dev/null and b/mods/.farming_old/textures/farming_banana_single.png differ diff --git a/mods/.farming_old/textures/farming_barley.png b/mods/.farming_old/textures/farming_barley.png new file mode 100644 index 00000000..c6819548 Binary files /dev/null and b/mods/.farming_old/textures/farming_barley.png differ diff --git a/mods/.farming_old/textures/farming_barley_1.png b/mods/.farming_old/textures/farming_barley_1.png new file mode 100644 index 00000000..177fbdf1 Binary files /dev/null and b/mods/.farming_old/textures/farming_barley_1.png differ diff --git a/mods/.farming_old/textures/farming_barley_2.png b/mods/.farming_old/textures/farming_barley_2.png new file mode 100644 index 00000000..d5a5936e Binary files /dev/null and b/mods/.farming_old/textures/farming_barley_2.png differ diff --git a/mods/.farming_old/textures/farming_barley_3.png b/mods/.farming_old/textures/farming_barley_3.png new file mode 100644 index 00000000..b456f431 Binary files /dev/null and b/mods/.farming_old/textures/farming_barley_3.png differ diff --git a/mods/.farming_old/textures/farming_barley_4.png b/mods/.farming_old/textures/farming_barley_4.png new file mode 100644 index 00000000..62905efd Binary files /dev/null and b/mods/.farming_old/textures/farming_barley_4.png differ diff --git a/mods/.farming_old/textures/farming_barley_5.png b/mods/.farming_old/textures/farming_barley_5.png new file mode 100644 index 00000000..cc1d66ba Binary files /dev/null and b/mods/.farming_old/textures/farming_barley_5.png differ diff --git a/mods/.farming_old/textures/farming_barley_6.png b/mods/.farming_old/textures/farming_barley_6.png new file mode 100644 index 00000000..e72dd2e5 Binary files /dev/null and b/mods/.farming_old/textures/farming_barley_6.png differ diff --git a/mods/.farming_old/textures/farming_barley_7.png b/mods/.farming_old/textures/farming_barley_7.png new file mode 100644 index 00000000..a37c5173 Binary files /dev/null and b/mods/.farming_old/textures/farming_barley_7.png differ diff --git a/mods/.farming_old/textures/farming_barley_8.png b/mods/.farming_old/textures/farming_barley_8.png new file mode 100644 index 00000000..a2a07653 Binary files /dev/null and b/mods/.farming_old/textures/farming_barley_8.png differ diff --git a/mods/.farming_old/textures/farming_barley_seed.png b/mods/.farming_old/textures/farming_barley_seed.png new file mode 100644 index 00000000..2f00a20a Binary files /dev/null and b/mods/.farming_old/textures/farming_barley_seed.png differ diff --git a/mods/.farming_old/textures/farming_beanbush.png b/mods/.farming_old/textures/farming_beanbush.png new file mode 100644 index 00000000..637e7162 Binary files /dev/null and b/mods/.farming_old/textures/farming_beanbush.png differ diff --git a/mods/.farming_old/textures/farming_beanpole.png b/mods/.farming_old/textures/farming_beanpole.png new file mode 100644 index 00000000..ed07572e Binary files /dev/null and b/mods/.farming_old/textures/farming_beanpole.png differ diff --git a/mods/.farming_old/textures/farming_beanpole_1.png b/mods/.farming_old/textures/farming_beanpole_1.png new file mode 100644 index 00000000..ef2bd5ab Binary files /dev/null and b/mods/.farming_old/textures/farming_beanpole_1.png differ diff --git a/mods/.farming_old/textures/farming_beanpole_2.png b/mods/.farming_old/textures/farming_beanpole_2.png new file mode 100644 index 00000000..34143e47 Binary files /dev/null and b/mods/.farming_old/textures/farming_beanpole_2.png differ diff --git a/mods/.farming_old/textures/farming_beanpole_3.png b/mods/.farming_old/textures/farming_beanpole_3.png new file mode 100644 index 00000000..d693f170 Binary files /dev/null and b/mods/.farming_old/textures/farming_beanpole_3.png differ diff --git a/mods/.farming_old/textures/farming_beanpole_4.png b/mods/.farming_old/textures/farming_beanpole_4.png new file mode 100644 index 00000000..c779b254 Binary files /dev/null and b/mods/.farming_old/textures/farming_beanpole_4.png differ diff --git a/mods/.farming_old/textures/farming_beanpole_5.png b/mods/.farming_old/textures/farming_beanpole_5.png new file mode 100644 index 00000000..910f8a07 Binary files /dev/null and b/mods/.farming_old/textures/farming_beanpole_5.png differ diff --git a/mods/.farming_old/textures/farming_beans.png b/mods/.farming_old/textures/farming_beans.png new file mode 100644 index 00000000..ad5cf859 Binary files /dev/null and b/mods/.farming_old/textures/farming_beans.png differ diff --git a/mods/.farming_old/textures/farming_beetroot.png b/mods/.farming_old/textures/farming_beetroot.png new file mode 100644 index 00000000..6a601681 Binary files /dev/null and b/mods/.farming_old/textures/farming_beetroot.png differ diff --git a/mods/.farming_old/textures/farming_beetroot_1.png b/mods/.farming_old/textures/farming_beetroot_1.png new file mode 100644 index 00000000..8b75e10f Binary files /dev/null and b/mods/.farming_old/textures/farming_beetroot_1.png differ diff --git a/mods/.farming_old/textures/farming_beetroot_2.png b/mods/.farming_old/textures/farming_beetroot_2.png new file mode 100644 index 00000000..9c1ce1e7 Binary files /dev/null and b/mods/.farming_old/textures/farming_beetroot_2.png differ diff --git a/mods/.farming_old/textures/farming_beetroot_3.png b/mods/.farming_old/textures/farming_beetroot_3.png new file mode 100644 index 00000000..0f28e5e7 Binary files /dev/null and b/mods/.farming_old/textures/farming_beetroot_3.png differ diff --git a/mods/.farming_old/textures/farming_beetroot_4.png b/mods/.farming_old/textures/farming_beetroot_4.png new file mode 100644 index 00000000..35f211b0 Binary files /dev/null and b/mods/.farming_old/textures/farming_beetroot_4.png differ diff --git a/mods/.farming_old/textures/farming_beetroot_5.png b/mods/.farming_old/textures/farming_beetroot_5.png new file mode 100644 index 00000000..c4b89572 Binary files /dev/null and b/mods/.farming_old/textures/farming_beetroot_5.png differ diff --git a/mods/.farming_old/textures/farming_beetroot_soup.png b/mods/.farming_old/textures/farming_beetroot_soup.png new file mode 100644 index 00000000..4df562e9 Binary files /dev/null and b/mods/.farming_old/textures/farming_beetroot_soup.png differ diff --git a/mods/.farming_old/textures/farming_berry_smoothie.png b/mods/.farming_old/textures/farming_berry_smoothie.png new file mode 100644 index 00000000..8da2fc55 Binary files /dev/null and b/mods/.farming_old/textures/farming_berry_smoothie.png differ diff --git a/mods/.farming_old/textures/farming_bibimbap.png b/mods/.farming_old/textures/farming_bibimbap.png new file mode 100644 index 00000000..e1a7dfe3 Binary files /dev/null and b/mods/.farming_old/textures/farming_bibimbap.png differ diff --git a/mods/.farming_old/textures/farming_blackberry.png b/mods/.farming_old/textures/farming_blackberry.png new file mode 100644 index 00000000..01d7ac5e Binary files /dev/null and b/mods/.farming_old/textures/farming_blackberry.png differ diff --git a/mods/.farming_old/textures/farming_blackberry_1.png b/mods/.farming_old/textures/farming_blackberry_1.png new file mode 100644 index 00000000..8dd8832c Binary files /dev/null and b/mods/.farming_old/textures/farming_blackberry_1.png differ diff --git a/mods/.farming_old/textures/farming_blackberry_2.png b/mods/.farming_old/textures/farming_blackberry_2.png new file mode 100644 index 00000000..7d3827c8 Binary files /dev/null and b/mods/.farming_old/textures/farming_blackberry_2.png differ diff --git a/mods/.farming_old/textures/farming_blackberry_3.png b/mods/.farming_old/textures/farming_blackberry_3.png new file mode 100644 index 00000000..7d89aa0c Binary files /dev/null and b/mods/.farming_old/textures/farming_blackberry_3.png differ diff --git a/mods/.farming_old/textures/farming_blackberry_4.png b/mods/.farming_old/textures/farming_blackberry_4.png new file mode 100644 index 00000000..d9d398d9 Binary files /dev/null and b/mods/.farming_old/textures/farming_blackberry_4.png differ diff --git a/mods/.farming_old/textures/farming_blueberries.png b/mods/.farming_old/textures/farming_blueberries.png new file mode 100644 index 00000000..b0c49319 Binary files /dev/null and b/mods/.farming_old/textures/farming_blueberries.png differ diff --git a/mods/.farming_old/textures/farming_blueberry_1.png b/mods/.farming_old/textures/farming_blueberry_1.png new file mode 100644 index 00000000..83832c86 Binary files /dev/null and b/mods/.farming_old/textures/farming_blueberry_1.png differ diff --git a/mods/.farming_old/textures/farming_blueberry_2.png b/mods/.farming_old/textures/farming_blueberry_2.png new file mode 100644 index 00000000..308a0caf Binary files /dev/null and b/mods/.farming_old/textures/farming_blueberry_2.png differ diff --git a/mods/.farming_old/textures/farming_blueberry_3.png b/mods/.farming_old/textures/farming_blueberry_3.png new file mode 100644 index 00000000..43d2ab13 Binary files /dev/null and b/mods/.farming_old/textures/farming_blueberry_3.png differ diff --git a/mods/.farming_old/textures/farming_blueberry_4.png b/mods/.farming_old/textures/farming_blueberry_4.png new file mode 100644 index 00000000..75fb69a0 Binary files /dev/null and b/mods/.farming_old/textures/farming_blueberry_4.png differ diff --git a/mods/.farming_old/textures/farming_blueberry_muffin.png b/mods/.farming_old/textures/farming_blueberry_muffin.png new file mode 100644 index 00000000..b1253d70 Binary files /dev/null and b/mods/.farming_old/textures/farming_blueberry_muffin.png differ diff --git a/mods/.farming_old/textures/farming_blueberry_pie.png b/mods/.farming_old/textures/farming_blueberry_pie.png new file mode 100644 index 00000000..1fa6b1c9 Binary files /dev/null and b/mods/.farming_old/textures/farming_blueberry_pie.png differ diff --git a/mods/.farming_old/textures/farming_bottle_ethanol.png b/mods/.farming_old/textures/farming_bottle_ethanol.png new file mode 100644 index 00000000..84e6162d Binary files /dev/null and b/mods/.farming_old/textures/farming_bottle_ethanol.png differ diff --git a/mods/.farming_old/textures/farming_bowl.png b/mods/.farming_old/textures/farming_bowl.png new file mode 100644 index 00000000..c6b69bab Binary files /dev/null and b/mods/.farming_old/textures/farming_bowl.png differ diff --git a/mods/.farming_old/textures/farming_bread.png b/mods/.farming_old/textures/farming_bread.png new file mode 100644 index 00000000..bd00e3e1 Binary files /dev/null and b/mods/.farming_old/textures/farming_bread.png differ diff --git a/mods/.farming_old/textures/farming_bread_multigrain.png b/mods/.farming_old/textures/farming_bread_multigrain.png new file mode 100644 index 00000000..66dda074 Binary files /dev/null and b/mods/.farming_old/textures/farming_bread_multigrain.png differ diff --git a/mods/.farming_old/textures/farming_bread_slice.png b/mods/.farming_old/textures/farming_bread_slice.png new file mode 100644 index 00000000..ff2714d1 Binary files /dev/null and b/mods/.farming_old/textures/farming_bread_slice.png differ diff --git a/mods/.farming_old/textures/farming_burger.png b/mods/.farming_old/textures/farming_burger.png new file mode 100644 index 00000000..94e38fcb Binary files /dev/null and b/mods/.farming_old/textures/farming_burger.png differ diff --git a/mods/.farming_old/textures/farming_cabbage.png b/mods/.farming_old/textures/farming_cabbage.png new file mode 100644 index 00000000..7f4fa05a Binary files /dev/null and b/mods/.farming_old/textures/farming_cabbage.png differ diff --git a/mods/.farming_old/textures/farming_cabbage_1.png b/mods/.farming_old/textures/farming_cabbage_1.png new file mode 100644 index 00000000..850b0da4 Binary files /dev/null and b/mods/.farming_old/textures/farming_cabbage_1.png differ diff --git a/mods/.farming_old/textures/farming_cabbage_2.png b/mods/.farming_old/textures/farming_cabbage_2.png new file mode 100644 index 00000000..5ae079fb Binary files /dev/null and b/mods/.farming_old/textures/farming_cabbage_2.png differ diff --git a/mods/.farming_old/textures/farming_cabbage_3.png b/mods/.farming_old/textures/farming_cabbage_3.png new file mode 100644 index 00000000..3050229c Binary files /dev/null and b/mods/.farming_old/textures/farming_cabbage_3.png differ diff --git a/mods/.farming_old/textures/farming_cabbage_4.png b/mods/.farming_old/textures/farming_cabbage_4.png new file mode 100644 index 00000000..50642746 Binary files /dev/null and b/mods/.farming_old/textures/farming_cabbage_4.png differ diff --git a/mods/.farming_old/textures/farming_cabbage_5.png b/mods/.farming_old/textures/farming_cabbage_5.png new file mode 100644 index 00000000..45dd7777 Binary files /dev/null and b/mods/.farming_old/textures/farming_cabbage_5.png differ diff --git a/mods/.farming_old/textures/farming_cabbage_6.png b/mods/.farming_old/textures/farming_cabbage_6.png new file mode 100644 index 00000000..253f8a71 Binary files /dev/null and b/mods/.farming_old/textures/farming_cabbage_6.png differ diff --git a/mods/.farming_old/textures/farming_cactus_juice.png b/mods/.farming_old/textures/farming_cactus_juice.png new file mode 100644 index 00000000..b4fb5b99 Binary files /dev/null and b/mods/.farming_old/textures/farming_cactus_juice.png differ diff --git a/mods/.farming_old/textures/farming_caramel.png b/mods/.farming_old/textures/farming_caramel.png new file mode 100644 index 00000000..bc7d1648 Binary files /dev/null and b/mods/.farming_old/textures/farming_caramel.png differ diff --git a/mods/.farming_old/textures/farming_carrot.png b/mods/.farming_old/textures/farming_carrot.png new file mode 100644 index 00000000..73f2fd47 Binary files /dev/null and b/mods/.farming_old/textures/farming_carrot.png differ diff --git a/mods/.farming_old/textures/farming_carrot_1.png b/mods/.farming_old/textures/farming_carrot_1.png new file mode 100644 index 00000000..bbeae7e8 Binary files /dev/null and b/mods/.farming_old/textures/farming_carrot_1.png differ diff --git a/mods/.farming_old/textures/farming_carrot_2.png b/mods/.farming_old/textures/farming_carrot_2.png new file mode 100644 index 00000000..b24ecc05 Binary files /dev/null and b/mods/.farming_old/textures/farming_carrot_2.png differ diff --git a/mods/.farming_old/textures/farming_carrot_3.png b/mods/.farming_old/textures/farming_carrot_3.png new file mode 100644 index 00000000..84005057 Binary files /dev/null and b/mods/.farming_old/textures/farming_carrot_3.png differ diff --git a/mods/.farming_old/textures/farming_carrot_4.png b/mods/.farming_old/textures/farming_carrot_4.png new file mode 100644 index 00000000..32ee2624 Binary files /dev/null and b/mods/.farming_old/textures/farming_carrot_4.png differ diff --git a/mods/.farming_old/textures/farming_carrot_5.png b/mods/.farming_old/textures/farming_carrot_5.png new file mode 100644 index 00000000..0bcd9c1e Binary files /dev/null and b/mods/.farming_old/textures/farming_carrot_5.png differ diff --git a/mods/.farming_old/textures/farming_carrot_6.png b/mods/.farming_old/textures/farming_carrot_6.png new file mode 100644 index 00000000..a17c6b2b Binary files /dev/null and b/mods/.farming_old/textures/farming_carrot_6.png differ diff --git a/mods/.farming_old/textures/farming_carrot_7.png b/mods/.farming_old/textures/farming_carrot_7.png new file mode 100644 index 00000000..d26eee7c Binary files /dev/null and b/mods/.farming_old/textures/farming_carrot_7.png differ diff --git a/mods/.farming_old/textures/farming_carrot_8.png b/mods/.farming_old/textures/farming_carrot_8.png new file mode 100644 index 00000000..00b6d928 Binary files /dev/null and b/mods/.farming_old/textures/farming_carrot_8.png differ diff --git a/mods/.farming_old/textures/farming_carrot_gold.png b/mods/.farming_old/textures/farming_carrot_gold.png new file mode 100644 index 00000000..b817101d Binary files /dev/null and b/mods/.farming_old/textures/farming_carrot_gold.png differ diff --git a/mods/.farming_old/textures/farming_carrot_juice.png b/mods/.farming_old/textures/farming_carrot_juice.png new file mode 100644 index 00000000..5a032455 Binary files /dev/null and b/mods/.farming_old/textures/farming_carrot_juice.png differ diff --git a/mods/.farming_old/textures/farming_cheese_vegan.png b/mods/.farming_old/textures/farming_cheese_vegan.png new file mode 100644 index 00000000..22c439e3 Binary files /dev/null and b/mods/.farming_old/textures/farming_cheese_vegan.png differ diff --git a/mods/.farming_old/textures/farming_chili_1.png b/mods/.farming_old/textures/farming_chili_1.png new file mode 100644 index 00000000..aa11988d Binary files /dev/null and b/mods/.farming_old/textures/farming_chili_1.png differ diff --git a/mods/.farming_old/textures/farming_chili_2.png b/mods/.farming_old/textures/farming_chili_2.png new file mode 100644 index 00000000..ae345063 Binary files /dev/null and b/mods/.farming_old/textures/farming_chili_2.png differ diff --git a/mods/.farming_old/textures/farming_chili_3.png b/mods/.farming_old/textures/farming_chili_3.png new file mode 100644 index 00000000..5e1d9015 Binary files /dev/null and b/mods/.farming_old/textures/farming_chili_3.png differ diff --git a/mods/.farming_old/textures/farming_chili_4.png b/mods/.farming_old/textures/farming_chili_4.png new file mode 100644 index 00000000..d97769b2 Binary files /dev/null and b/mods/.farming_old/textures/farming_chili_4.png differ diff --git a/mods/.farming_old/textures/farming_chili_5.png b/mods/.farming_old/textures/farming_chili_5.png new file mode 100644 index 00000000..dd4755d9 Binary files /dev/null and b/mods/.farming_old/textures/farming_chili_5.png differ diff --git a/mods/.farming_old/textures/farming_chili_6.png b/mods/.farming_old/textures/farming_chili_6.png new file mode 100644 index 00000000..4ee057b1 Binary files /dev/null and b/mods/.farming_old/textures/farming_chili_6.png differ diff --git a/mods/.farming_old/textures/farming_chili_7.png b/mods/.farming_old/textures/farming_chili_7.png new file mode 100644 index 00000000..5912c2e1 Binary files /dev/null and b/mods/.farming_old/textures/farming_chili_7.png differ diff --git a/mods/.farming_old/textures/farming_chili_8.png b/mods/.farming_old/textures/farming_chili_8.png new file mode 100644 index 00000000..976eb521 Binary files /dev/null and b/mods/.farming_old/textures/farming_chili_8.png differ diff --git a/mods/.farming_old/textures/farming_chili_bowl.png b/mods/.farming_old/textures/farming_chili_bowl.png new file mode 100644 index 00000000..6454ba3e Binary files /dev/null and b/mods/.farming_old/textures/farming_chili_bowl.png differ diff --git a/mods/.farming_old/textures/farming_chili_pepper.png b/mods/.farming_old/textures/farming_chili_pepper.png new file mode 100644 index 00000000..922cec48 Binary files /dev/null and b/mods/.farming_old/textures/farming_chili_pepper.png differ diff --git a/mods/.farming_old/textures/farming_chili_powder.png b/mods/.farming_old/textures/farming_chili_powder.png new file mode 100644 index 00000000..5c3e31e1 Binary files /dev/null and b/mods/.farming_old/textures/farming_chili_powder.png differ diff --git a/mods/.farming_old/textures/farming_chocolate_block.png b/mods/.farming_old/textures/farming_chocolate_block.png new file mode 100644 index 00000000..20e5a79b Binary files /dev/null and b/mods/.farming_old/textures/farming_chocolate_block.png differ diff --git a/mods/.farming_old/textures/farming_chocolate_dark.png b/mods/.farming_old/textures/farming_chocolate_dark.png new file mode 100644 index 00000000..03243b27 Binary files /dev/null and b/mods/.farming_old/textures/farming_chocolate_dark.png differ diff --git a/mods/.farming_old/textures/farming_cocoa_1.png b/mods/.farming_old/textures/farming_cocoa_1.png new file mode 100644 index 00000000..18fd362c Binary files /dev/null and b/mods/.farming_old/textures/farming_cocoa_1.png differ diff --git a/mods/.farming_old/textures/farming_cocoa_2.png b/mods/.farming_old/textures/farming_cocoa_2.png new file mode 100644 index 00000000..c304ee0e Binary files /dev/null and b/mods/.farming_old/textures/farming_cocoa_2.png differ diff --git a/mods/.farming_old/textures/farming_cocoa_3.png b/mods/.farming_old/textures/farming_cocoa_3.png new file mode 100644 index 00000000..d66b47d4 Binary files /dev/null and b/mods/.farming_old/textures/farming_cocoa_3.png differ diff --git a/mods/.farming_old/textures/farming_cocoa_4.png b/mods/.farming_old/textures/farming_cocoa_4.png new file mode 100644 index 00000000..990a8b45 Binary files /dev/null and b/mods/.farming_old/textures/farming_cocoa_4.png differ diff --git a/mods/.farming_old/textures/farming_cocoa_beans.png b/mods/.farming_old/textures/farming_cocoa_beans.png new file mode 100644 index 00000000..9605e51f Binary files /dev/null and b/mods/.farming_old/textures/farming_cocoa_beans.png differ diff --git a/mods/.farming_old/textures/farming_coffee_1.png b/mods/.farming_old/textures/farming_coffee_1.png new file mode 100644 index 00000000..48d1b7ff Binary files /dev/null and b/mods/.farming_old/textures/farming_coffee_1.png differ diff --git a/mods/.farming_old/textures/farming_coffee_2.png b/mods/.farming_old/textures/farming_coffee_2.png new file mode 100644 index 00000000..e80d7bef Binary files /dev/null and b/mods/.farming_old/textures/farming_coffee_2.png differ diff --git a/mods/.farming_old/textures/farming_coffee_3.png b/mods/.farming_old/textures/farming_coffee_3.png new file mode 100644 index 00000000..a057d04c Binary files /dev/null and b/mods/.farming_old/textures/farming_coffee_3.png differ diff --git a/mods/.farming_old/textures/farming_coffee_4.png b/mods/.farming_old/textures/farming_coffee_4.png new file mode 100644 index 00000000..912c5f0d Binary files /dev/null and b/mods/.farming_old/textures/farming_coffee_4.png differ diff --git a/mods/.farming_old/textures/farming_coffee_5.png b/mods/.farming_old/textures/farming_coffee_5.png new file mode 100644 index 00000000..47b11f22 Binary files /dev/null and b/mods/.farming_old/textures/farming_coffee_5.png differ diff --git a/mods/.farming_old/textures/farming_coffee_beans.png b/mods/.farming_old/textures/farming_coffee_beans.png new file mode 100644 index 00000000..88e9438c Binary files /dev/null and b/mods/.farming_old/textures/farming_coffee_beans.png differ diff --git a/mods/.farming_old/textures/farming_coffee_cup.png b/mods/.farming_old/textures/farming_coffee_cup.png new file mode 100644 index 00000000..d3820bc7 Binary files /dev/null and b/mods/.farming_old/textures/farming_coffee_cup.png differ diff --git a/mods/.farming_old/textures/farming_cookie.png b/mods/.farming_old/textures/farming_cookie.png new file mode 100644 index 00000000..60d88f8a Binary files /dev/null and b/mods/.farming_old/textures/farming_cookie.png differ diff --git a/mods/.farming_old/textures/farming_corn.png b/mods/.farming_old/textures/farming_corn.png new file mode 100644 index 00000000..2a2894a4 Binary files /dev/null and b/mods/.farming_old/textures/farming_corn.png differ diff --git a/mods/.farming_old/textures/farming_corn_1.png b/mods/.farming_old/textures/farming_corn_1.png new file mode 100644 index 00000000..60e8b997 Binary files /dev/null and b/mods/.farming_old/textures/farming_corn_1.png differ diff --git a/mods/.farming_old/textures/farming_corn_2.png b/mods/.farming_old/textures/farming_corn_2.png new file mode 100644 index 00000000..6ba6cc97 Binary files /dev/null and b/mods/.farming_old/textures/farming_corn_2.png differ diff --git a/mods/.farming_old/textures/farming_corn_3.png b/mods/.farming_old/textures/farming_corn_3.png new file mode 100644 index 00000000..c5fa80b1 Binary files /dev/null and b/mods/.farming_old/textures/farming_corn_3.png differ diff --git a/mods/.farming_old/textures/farming_corn_4.png b/mods/.farming_old/textures/farming_corn_4.png new file mode 100644 index 00000000..a43632dd Binary files /dev/null and b/mods/.farming_old/textures/farming_corn_4.png differ diff --git a/mods/.farming_old/textures/farming_corn_5.png b/mods/.farming_old/textures/farming_corn_5.png new file mode 100644 index 00000000..7b6fb02b Binary files /dev/null and b/mods/.farming_old/textures/farming_corn_5.png differ diff --git a/mods/.farming_old/textures/farming_corn_6.png b/mods/.farming_old/textures/farming_corn_6.png new file mode 100644 index 00000000..313697b9 Binary files /dev/null and b/mods/.farming_old/textures/farming_corn_6.png differ diff --git a/mods/.farming_old/textures/farming_corn_7.png b/mods/.farming_old/textures/farming_corn_7.png new file mode 100644 index 00000000..6a937e79 Binary files /dev/null and b/mods/.farming_old/textures/farming_corn_7.png differ diff --git a/mods/.farming_old/textures/farming_corn_8.png b/mods/.farming_old/textures/farming_corn_8.png new file mode 100644 index 00000000..77e442b0 Binary files /dev/null and b/mods/.farming_old/textures/farming_corn_8.png differ diff --git a/mods/.farming_old/textures/farming_corn_cob.png b/mods/.farming_old/textures/farming_corn_cob.png new file mode 100644 index 00000000..a2fd9da7 Binary files /dev/null and b/mods/.farming_old/textures/farming_corn_cob.png differ diff --git a/mods/.farming_old/textures/farming_cornstarch.png b/mods/.farming_old/textures/farming_cornstarch.png new file mode 100644 index 00000000..d5f8218f Binary files /dev/null and b/mods/.farming_old/textures/farming_cornstarch.png differ diff --git a/mods/.farming_old/textures/farming_cotton.png b/mods/.farming_old/textures/farming_cotton.png new file mode 100644 index 00000000..8aa50e4e Binary files /dev/null and b/mods/.farming_old/textures/farming_cotton.png differ diff --git a/mods/.farming_old/textures/farming_cotton_1.png b/mods/.farming_old/textures/farming_cotton_1.png new file mode 100644 index 00000000..5fc21807 Binary files /dev/null and b/mods/.farming_old/textures/farming_cotton_1.png differ diff --git a/mods/.farming_old/textures/farming_cotton_2.png b/mods/.farming_old/textures/farming_cotton_2.png new file mode 100644 index 00000000..db4f4a3e Binary files /dev/null and b/mods/.farming_old/textures/farming_cotton_2.png differ diff --git a/mods/.farming_old/textures/farming_cotton_3.png b/mods/.farming_old/textures/farming_cotton_3.png new file mode 100644 index 00000000..df3d7a77 Binary files /dev/null and b/mods/.farming_old/textures/farming_cotton_3.png differ diff --git a/mods/.farming_old/textures/farming_cotton_4.png b/mods/.farming_old/textures/farming_cotton_4.png new file mode 100644 index 00000000..f314b07b Binary files /dev/null and b/mods/.farming_old/textures/farming_cotton_4.png differ diff --git a/mods/.farming_old/textures/farming_cotton_5.png b/mods/.farming_old/textures/farming_cotton_5.png new file mode 100644 index 00000000..3e890855 Binary files /dev/null and b/mods/.farming_old/textures/farming_cotton_5.png differ diff --git a/mods/.farming_old/textures/farming_cotton_6.png b/mods/.farming_old/textures/farming_cotton_6.png new file mode 100644 index 00000000..f4bd4fb3 Binary files /dev/null and b/mods/.farming_old/textures/farming_cotton_6.png differ diff --git a/mods/.farming_old/textures/farming_cotton_7.png b/mods/.farming_old/textures/farming_cotton_7.png new file mode 100644 index 00000000..466d40a2 Binary files /dev/null and b/mods/.farming_old/textures/farming_cotton_7.png differ diff --git a/mods/.farming_old/textures/farming_cotton_8.png b/mods/.farming_old/textures/farming_cotton_8.png new file mode 100644 index 00000000..f835ba5b Binary files /dev/null and b/mods/.farming_old/textures/farming_cotton_8.png differ diff --git a/mods/.farming_old/textures/farming_cotton_seed.png b/mods/.farming_old/textures/farming_cotton_seed.png new file mode 100644 index 00000000..f1d5b8ab Binary files /dev/null and b/mods/.farming_old/textures/farming_cotton_seed.png differ diff --git a/mods/.farming_old/textures/farming_cotton_wild.png b/mods/.farming_old/textures/farming_cotton_wild.png new file mode 100644 index 00000000..0107ad4a Binary files /dev/null and b/mods/.farming_old/textures/farming_cotton_wild.png differ diff --git a/mods/.farming_old/textures/farming_cucumber.png b/mods/.farming_old/textures/farming_cucumber.png new file mode 100644 index 00000000..2acb7b2f Binary files /dev/null and b/mods/.farming_old/textures/farming_cucumber.png differ diff --git a/mods/.farming_old/textures/farming_cucumber_1.png b/mods/.farming_old/textures/farming_cucumber_1.png new file mode 100644 index 00000000..e008fd12 Binary files /dev/null and b/mods/.farming_old/textures/farming_cucumber_1.png differ diff --git a/mods/.farming_old/textures/farming_cucumber_2.png b/mods/.farming_old/textures/farming_cucumber_2.png new file mode 100644 index 00000000..9c345ff4 Binary files /dev/null and b/mods/.farming_old/textures/farming_cucumber_2.png differ diff --git a/mods/.farming_old/textures/farming_cucumber_3.png b/mods/.farming_old/textures/farming_cucumber_3.png new file mode 100644 index 00000000..25f3c54f Binary files /dev/null and b/mods/.farming_old/textures/farming_cucumber_3.png differ diff --git a/mods/.farming_old/textures/farming_cucumber_4.png b/mods/.farming_old/textures/farming_cucumber_4.png new file mode 100644 index 00000000..fc62f2f4 Binary files /dev/null and b/mods/.farming_old/textures/farming_cucumber_4.png differ diff --git a/mods/.farming_old/textures/farming_cutting_board.png b/mods/.farming_old/textures/farming_cutting_board.png new file mode 100644 index 00000000..90b3f9ca Binary files /dev/null and b/mods/.farming_old/textures/farming_cutting_board.png differ diff --git a/mods/.farming_old/textures/farming_desert_sand_soil.png b/mods/.farming_old/textures/farming_desert_sand_soil.png new file mode 100644 index 00000000..1450e014 Binary files /dev/null and b/mods/.farming_old/textures/farming_desert_sand_soil.png differ diff --git a/mods/.farming_old/textures/farming_desert_sand_soil_wet.png b/mods/.farming_old/textures/farming_desert_sand_soil_wet.png new file mode 100644 index 00000000..cffa955d Binary files /dev/null and b/mods/.farming_old/textures/farming_desert_sand_soil_wet.png differ diff --git a/mods/.farming_old/textures/farming_desert_sand_soil_wet_side.png b/mods/.farming_old/textures/farming_desert_sand_soil_wet_side.png new file mode 100644 index 00000000..fbb2815e Binary files /dev/null and b/mods/.farming_old/textures/farming_desert_sand_soil_wet_side.png differ diff --git a/mods/.farming_old/textures/farming_donut.png b/mods/.farming_old/textures/farming_donut.png new file mode 100644 index 00000000..8985299b Binary files /dev/null and b/mods/.farming_old/textures/farming_donut.png differ diff --git a/mods/.farming_old/textures/farming_donut_apple.png b/mods/.farming_old/textures/farming_donut_apple.png new file mode 100644 index 00000000..6dfe63d5 Binary files /dev/null and b/mods/.farming_old/textures/farming_donut_apple.png differ diff --git a/mods/.farming_old/textures/farming_donut_chocolate.png b/mods/.farming_old/textures/farming_donut_chocolate.png new file mode 100644 index 00000000..aa4b93fa Binary files /dev/null and b/mods/.farming_old/textures/farming_donut_chocolate.png differ diff --git a/mods/.farming_old/textures/farming_eggplant.png b/mods/.farming_old/textures/farming_eggplant.png new file mode 100644 index 00000000..4315adda Binary files /dev/null and b/mods/.farming_old/textures/farming_eggplant.png differ diff --git a/mods/.farming_old/textures/farming_eggplant_1.png b/mods/.farming_old/textures/farming_eggplant_1.png new file mode 100644 index 00000000..7246860d Binary files /dev/null and b/mods/.farming_old/textures/farming_eggplant_1.png differ diff --git a/mods/.farming_old/textures/farming_eggplant_2.png b/mods/.farming_old/textures/farming_eggplant_2.png new file mode 100644 index 00000000..bfaf3634 Binary files /dev/null and b/mods/.farming_old/textures/farming_eggplant_2.png differ diff --git a/mods/.farming_old/textures/farming_eggplant_3.png b/mods/.farming_old/textures/farming_eggplant_3.png new file mode 100644 index 00000000..c812200c Binary files /dev/null and b/mods/.farming_old/textures/farming_eggplant_3.png differ diff --git a/mods/.farming_old/textures/farming_eggplant_4.png b/mods/.farming_old/textures/farming_eggplant_4.png new file mode 100644 index 00000000..7b32b1be Binary files /dev/null and b/mods/.farming_old/textures/farming_eggplant_4.png differ diff --git a/mods/.farming_old/textures/farming_flour.png b/mods/.farming_old/textures/farming_flour.png new file mode 100644 index 00000000..b1a97836 Binary files /dev/null and b/mods/.farming_old/textures/farming_flour.png differ diff --git a/mods/.farming_old/textures/farming_flour_multigrain.png b/mods/.farming_old/textures/farming_flour_multigrain.png new file mode 100644 index 00000000..5367bc58 Binary files /dev/null and b/mods/.farming_old/textures/farming_flour_multigrain.png differ diff --git a/mods/.farming_old/textures/farming_garlic_bread.png b/mods/.farming_old/textures/farming_garlic_bread.png new file mode 100644 index 00000000..b7600041 Binary files /dev/null and b/mods/.farming_old/textures/farming_garlic_bread.png differ diff --git a/mods/.farming_old/textures/farming_ginger.png b/mods/.farming_old/textures/farming_ginger.png new file mode 100644 index 00000000..22a48b5c Binary files /dev/null and b/mods/.farming_old/textures/farming_ginger.png differ diff --git a/mods/.farming_old/textures/farming_ginger_1.png b/mods/.farming_old/textures/farming_ginger_1.png new file mode 100644 index 00000000..84d0d457 Binary files /dev/null and b/mods/.farming_old/textures/farming_ginger_1.png differ diff --git a/mods/.farming_old/textures/farming_ginger_2.png b/mods/.farming_old/textures/farming_ginger_2.png new file mode 100644 index 00000000..c472d20c Binary files /dev/null and b/mods/.farming_old/textures/farming_ginger_2.png differ diff --git a/mods/.farming_old/textures/farming_ginger_3.png b/mods/.farming_old/textures/farming_ginger_3.png new file mode 100644 index 00000000..96f75d75 Binary files /dev/null and b/mods/.farming_old/textures/farming_ginger_3.png differ diff --git a/mods/.farming_old/textures/farming_ginger_4.png b/mods/.farming_old/textures/farming_ginger_4.png new file mode 100644 index 00000000..32f6de5b Binary files /dev/null and b/mods/.farming_old/textures/farming_ginger_4.png differ diff --git a/mods/.farming_old/textures/farming_gingerbread_man.png b/mods/.farming_old/textures/farming_gingerbread_man.png new file mode 100644 index 00000000..f037ae20 Binary files /dev/null and b/mods/.farming_old/textures/farming_gingerbread_man.png differ diff --git a/mods/.farming_old/textures/farming_grapebush.png b/mods/.farming_old/textures/farming_grapebush.png new file mode 100644 index 00000000..c2e66205 Binary files /dev/null and b/mods/.farming_old/textures/farming_grapebush.png differ diff --git a/mods/.farming_old/textures/farming_grapes.png b/mods/.farming_old/textures/farming_grapes.png new file mode 100644 index 00000000..f6396e21 Binary files /dev/null and b/mods/.farming_old/textures/farming_grapes.png differ diff --git a/mods/.farming_old/textures/farming_grapes_1.png b/mods/.farming_old/textures/farming_grapes_1.png new file mode 100644 index 00000000..64a935d2 Binary files /dev/null and b/mods/.farming_old/textures/farming_grapes_1.png differ diff --git a/mods/.farming_old/textures/farming_grapes_2.png b/mods/.farming_old/textures/farming_grapes_2.png new file mode 100644 index 00000000..6cc2a337 Binary files /dev/null and b/mods/.farming_old/textures/farming_grapes_2.png differ diff --git a/mods/.farming_old/textures/farming_grapes_3.png b/mods/.farming_old/textures/farming_grapes_3.png new file mode 100644 index 00000000..66d63109 Binary files /dev/null and b/mods/.farming_old/textures/farming_grapes_3.png differ diff --git a/mods/.farming_old/textures/farming_grapes_4.png b/mods/.farming_old/textures/farming_grapes_4.png new file mode 100644 index 00000000..57cdc73f Binary files /dev/null and b/mods/.farming_old/textures/farming_grapes_4.png differ diff --git a/mods/.farming_old/textures/farming_grapes_5.png b/mods/.farming_old/textures/farming_grapes_5.png new file mode 100644 index 00000000..aad41f41 Binary files /dev/null and b/mods/.farming_old/textures/farming_grapes_5.png differ diff --git a/mods/.farming_old/textures/farming_grapes_6.png b/mods/.farming_old/textures/farming_grapes_6.png new file mode 100644 index 00000000..2e23a3ca Binary files /dev/null and b/mods/.farming_old/textures/farming_grapes_6.png differ diff --git a/mods/.farming_old/textures/farming_grapes_7.png b/mods/.farming_old/textures/farming_grapes_7.png new file mode 100644 index 00000000..9e70b6d5 Binary files /dev/null and b/mods/.farming_old/textures/farming_grapes_7.png differ diff --git a/mods/.farming_old/textures/farming_grapes_8.png b/mods/.farming_old/textures/farming_grapes_8.png new file mode 100644 index 00000000..5093a066 Binary files /dev/null and b/mods/.farming_old/textures/farming_grapes_8.png differ diff --git a/mods/.farming_old/textures/farming_gyoza.png b/mods/.farming_old/textures/farming_gyoza.png new file mode 100644 index 00000000..c8f036f0 Binary files /dev/null and b/mods/.farming_old/textures/farming_gyoza.png differ diff --git a/mods/.farming_old/textures/farming_hemp_1.png b/mods/.farming_old/textures/farming_hemp_1.png new file mode 100644 index 00000000..6fb45108 Binary files /dev/null and b/mods/.farming_old/textures/farming_hemp_1.png differ diff --git a/mods/.farming_old/textures/farming_hemp_2.png b/mods/.farming_old/textures/farming_hemp_2.png new file mode 100644 index 00000000..a676173c Binary files /dev/null and b/mods/.farming_old/textures/farming_hemp_2.png differ diff --git a/mods/.farming_old/textures/farming_hemp_3.png b/mods/.farming_old/textures/farming_hemp_3.png new file mode 100644 index 00000000..57136d50 Binary files /dev/null and b/mods/.farming_old/textures/farming_hemp_3.png differ diff --git a/mods/.farming_old/textures/farming_hemp_4.png b/mods/.farming_old/textures/farming_hemp_4.png new file mode 100644 index 00000000..b375cf3d Binary files /dev/null and b/mods/.farming_old/textures/farming_hemp_4.png differ diff --git a/mods/.farming_old/textures/farming_hemp_5.png b/mods/.farming_old/textures/farming_hemp_5.png new file mode 100644 index 00000000..890a3d28 Binary files /dev/null and b/mods/.farming_old/textures/farming_hemp_5.png differ diff --git a/mods/.farming_old/textures/farming_hemp_6.png b/mods/.farming_old/textures/farming_hemp_6.png new file mode 100644 index 00000000..258d4e38 Binary files /dev/null and b/mods/.farming_old/textures/farming_hemp_6.png differ diff --git a/mods/.farming_old/textures/farming_hemp_7.png b/mods/.farming_old/textures/farming_hemp_7.png new file mode 100644 index 00000000..1ce3a8d1 Binary files /dev/null and b/mods/.farming_old/textures/farming_hemp_7.png differ diff --git a/mods/.farming_old/textures/farming_hemp_8.png b/mods/.farming_old/textures/farming_hemp_8.png new file mode 100644 index 00000000..8d2143f3 Binary files /dev/null and b/mods/.farming_old/textures/farming_hemp_8.png differ diff --git a/mods/.farming_old/textures/farming_hemp_block.png b/mods/.farming_old/textures/farming_hemp_block.png new file mode 100644 index 00000000..285a2cda Binary files /dev/null and b/mods/.farming_old/textures/farming_hemp_block.png differ diff --git a/mods/.farming_old/textures/farming_hemp_fibre.png b/mods/.farming_old/textures/farming_hemp_fibre.png new file mode 100644 index 00000000..fe3c9187 Binary files /dev/null and b/mods/.farming_old/textures/farming_hemp_fibre.png differ diff --git a/mods/.farming_old/textures/farming_hemp_leaf.png b/mods/.farming_old/textures/farming_hemp_leaf.png new file mode 100644 index 00000000..997c8f0c Binary files /dev/null and b/mods/.farming_old/textures/farming_hemp_leaf.png differ diff --git a/mods/.farming_old/textures/farming_hemp_oil.png b/mods/.farming_old/textures/farming_hemp_oil.png new file mode 100644 index 00000000..fa8afe26 Binary files /dev/null and b/mods/.farming_old/textures/farming_hemp_oil.png differ diff --git a/mods/.farming_old/textures/farming_hemp_rope.png b/mods/.farming_old/textures/farming_hemp_rope.png new file mode 100644 index 00000000..03a7082f Binary files /dev/null and b/mods/.farming_old/textures/farming_hemp_rope.png differ diff --git a/mods/.farming_old/textures/farming_hemp_seed.png b/mods/.farming_old/textures/farming_hemp_seed.png new file mode 100644 index 00000000..6be42c86 Binary files /dev/null and b/mods/.farming_old/textures/farming_hemp_seed.png differ diff --git a/mods/.farming_old/textures/farming_hoe_bomb.png b/mods/.farming_old/textures/farming_hoe_bomb.png new file mode 100644 index 00000000..e8db9b18 Binary files /dev/null and b/mods/.farming_old/textures/farming_hoe_bomb.png differ diff --git a/mods/.farming_old/textures/farming_jaffa_cake.png b/mods/.farming_old/textures/farming_jaffa_cake.png new file mode 100644 index 00000000..87cc0036 Binary files /dev/null and b/mods/.farming_old/textures/farming_jaffa_cake.png differ diff --git a/mods/.farming_old/textures/farming_jerusalem_artichokes.png b/mods/.farming_old/textures/farming_jerusalem_artichokes.png new file mode 100644 index 00000000..db87dbc5 Binary files /dev/null and b/mods/.farming_old/textures/farming_jerusalem_artichokes.png differ diff --git a/mods/.farming_old/textures/farming_juicer.png b/mods/.farming_old/textures/farming_juicer.png new file mode 100644 index 00000000..46265e4b Binary files /dev/null and b/mods/.farming_old/textures/farming_juicer.png differ diff --git a/mods/.farming_old/textures/farming_lettuce.png b/mods/.farming_old/textures/farming_lettuce.png new file mode 100644 index 00000000..3f29fbe4 Binary files /dev/null and b/mods/.farming_old/textures/farming_lettuce.png differ diff --git a/mods/.farming_old/textures/farming_lettuce_1.png b/mods/.farming_old/textures/farming_lettuce_1.png new file mode 100644 index 00000000..39ce9830 Binary files /dev/null and b/mods/.farming_old/textures/farming_lettuce_1.png differ diff --git a/mods/.farming_old/textures/farming_lettuce_2.png b/mods/.farming_old/textures/farming_lettuce_2.png new file mode 100644 index 00000000..0e4ab303 Binary files /dev/null and b/mods/.farming_old/textures/farming_lettuce_2.png differ diff --git a/mods/.farming_old/textures/farming_lettuce_3.png b/mods/.farming_old/textures/farming_lettuce_3.png new file mode 100644 index 00000000..066833b7 Binary files /dev/null and b/mods/.farming_old/textures/farming_lettuce_3.png differ diff --git a/mods/.farming_old/textures/farming_lettuce_4.png b/mods/.farming_old/textures/farming_lettuce_4.png new file mode 100644 index 00000000..847a2de5 Binary files /dev/null and b/mods/.farming_old/textures/farming_lettuce_4.png differ diff --git a/mods/.farming_old/textures/farming_lettuce_5.png b/mods/.farming_old/textures/farming_lettuce_5.png new file mode 100644 index 00000000..97651f40 Binary files /dev/null and b/mods/.farming_old/textures/farming_lettuce_5.png differ diff --git a/mods/.farming_old/textures/farming_mac_and_cheese.png b/mods/.farming_old/textures/farming_mac_and_cheese.png new file mode 100644 index 00000000..9ae8b160 Binary files /dev/null and b/mods/.farming_old/textures/farming_mac_and_cheese.png differ diff --git a/mods/.farming_old/textures/farming_mayo.png b/mods/.farming_old/textures/farming_mayo.png new file mode 100644 index 00000000..0178f140 Binary files /dev/null and b/mods/.farming_old/textures/farming_mayo.png differ diff --git a/mods/.farming_old/textures/farming_melon_1.png b/mods/.farming_old/textures/farming_melon_1.png new file mode 100644 index 00000000..f18f6330 Binary files /dev/null and b/mods/.farming_old/textures/farming_melon_1.png differ diff --git a/mods/.farming_old/textures/farming_melon_2.png b/mods/.farming_old/textures/farming_melon_2.png new file mode 100644 index 00000000..d5d94133 Binary files /dev/null and b/mods/.farming_old/textures/farming_melon_2.png differ diff --git a/mods/.farming_old/textures/farming_melon_3.png b/mods/.farming_old/textures/farming_melon_3.png new file mode 100644 index 00000000..07730e97 Binary files /dev/null and b/mods/.farming_old/textures/farming_melon_3.png differ diff --git a/mods/.farming_old/textures/farming_melon_4.png b/mods/.farming_old/textures/farming_melon_4.png new file mode 100644 index 00000000..9ff1e2f6 Binary files /dev/null and b/mods/.farming_old/textures/farming_melon_4.png differ diff --git a/mods/.farming_old/textures/farming_melon_5.png b/mods/.farming_old/textures/farming_melon_5.png new file mode 100644 index 00000000..c44afcdd Binary files /dev/null and b/mods/.farming_old/textures/farming_melon_5.png differ diff --git a/mods/.farming_old/textures/farming_melon_6.png b/mods/.farming_old/textures/farming_melon_6.png new file mode 100644 index 00000000..f0b9c3db Binary files /dev/null and b/mods/.farming_old/textures/farming_melon_6.png differ diff --git a/mods/.farming_old/textures/farming_melon_7.png b/mods/.farming_old/textures/farming_melon_7.png new file mode 100644 index 00000000..95a3c633 Binary files /dev/null and b/mods/.farming_old/textures/farming_melon_7.png differ diff --git a/mods/.farming_old/textures/farming_melon_bottom.png b/mods/.farming_old/textures/farming_melon_bottom.png new file mode 100644 index 00000000..471d6bec Binary files /dev/null and b/mods/.farming_old/textures/farming_melon_bottom.png differ diff --git a/mods/.farming_old/textures/farming_melon_side.png b/mods/.farming_old/textures/farming_melon_side.png new file mode 100644 index 00000000..7995ea5d Binary files /dev/null and b/mods/.farming_old/textures/farming_melon_side.png differ diff --git a/mods/.farming_old/textures/farming_melon_slice.png b/mods/.farming_old/textures/farming_melon_slice.png new file mode 100644 index 00000000..8ae5dec3 Binary files /dev/null and b/mods/.farming_old/textures/farming_melon_slice.png differ diff --git a/mods/.farming_old/textures/farming_melon_top.png b/mods/.farming_old/textures/farming_melon_top.png new file mode 100644 index 00000000..9309f37d Binary files /dev/null and b/mods/.farming_old/textures/farming_melon_top.png differ diff --git a/mods/.farming_old/textures/farming_mint_1.png b/mods/.farming_old/textures/farming_mint_1.png new file mode 100644 index 00000000..1f303aeb Binary files /dev/null and b/mods/.farming_old/textures/farming_mint_1.png differ diff --git a/mods/.farming_old/textures/farming_mint_2.png b/mods/.farming_old/textures/farming_mint_2.png new file mode 100644 index 00000000..cdcde54b Binary files /dev/null and b/mods/.farming_old/textures/farming_mint_2.png differ diff --git a/mods/.farming_old/textures/farming_mint_3.png b/mods/.farming_old/textures/farming_mint_3.png new file mode 100644 index 00000000..4bfc43f2 Binary files /dev/null and b/mods/.farming_old/textures/farming_mint_3.png differ diff --git a/mods/.farming_old/textures/farming_mint_4.png b/mods/.farming_old/textures/farming_mint_4.png new file mode 100644 index 00000000..a71a6e33 Binary files /dev/null and b/mods/.farming_old/textures/farming_mint_4.png differ diff --git a/mods/.farming_old/textures/farming_mint_leaf.png b/mods/.farming_old/textures/farming_mint_leaf.png new file mode 100644 index 00000000..9e144673 Binary files /dev/null and b/mods/.farming_old/textures/farming_mint_leaf.png differ diff --git a/mods/.farming_old/textures/farming_mint_seeds.png b/mods/.farming_old/textures/farming_mint_seeds.png new file mode 100644 index 00000000..2e0a0eae Binary files /dev/null and b/mods/.farming_old/textures/farming_mint_seeds.png differ diff --git a/mods/.farming_old/textures/farming_mint_tea.png b/mods/.farming_old/textures/farming_mint_tea.png new file mode 100644 index 00000000..a4b6440c Binary files /dev/null and b/mods/.farming_old/textures/farming_mint_tea.png differ diff --git a/mods/.farming_old/textures/farming_mixing_bowl.png b/mods/.farming_old/textures/farming_mixing_bowl.png new file mode 100644 index 00000000..e96edf0e Binary files /dev/null and b/mods/.farming_old/textures/farming_mixing_bowl.png differ diff --git a/mods/.farming_old/textures/farming_mochi.png b/mods/.farming_old/textures/farming_mochi.png new file mode 100644 index 00000000..7b3b2b57 Binary files /dev/null and b/mods/.farming_old/textures/farming_mochi.png differ diff --git a/mods/.farming_old/textures/farming_mortar_pestle.png b/mods/.farming_old/textures/farming_mortar_pestle.png new file mode 100644 index 00000000..abfeb9eb Binary files /dev/null and b/mods/.farming_old/textures/farming_mortar_pestle.png differ diff --git a/mods/.farming_old/textures/farming_oat.png b/mods/.farming_old/textures/farming_oat.png new file mode 100644 index 00000000..e8d5c230 Binary files /dev/null and b/mods/.farming_old/textures/farming_oat.png differ diff --git a/mods/.farming_old/textures/farming_oat_1.png b/mods/.farming_old/textures/farming_oat_1.png new file mode 100644 index 00000000..177fbdf1 Binary files /dev/null and b/mods/.farming_old/textures/farming_oat_1.png differ diff --git a/mods/.farming_old/textures/farming_oat_2.png b/mods/.farming_old/textures/farming_oat_2.png new file mode 100644 index 00000000..fe051ead Binary files /dev/null and b/mods/.farming_old/textures/farming_oat_2.png differ diff --git a/mods/.farming_old/textures/farming_oat_3.png b/mods/.farming_old/textures/farming_oat_3.png new file mode 100644 index 00000000..5aba1086 Binary files /dev/null and b/mods/.farming_old/textures/farming_oat_3.png differ diff --git a/mods/.farming_old/textures/farming_oat_4.png b/mods/.farming_old/textures/farming_oat_4.png new file mode 100644 index 00000000..833b1348 Binary files /dev/null and b/mods/.farming_old/textures/farming_oat_4.png differ diff --git a/mods/.farming_old/textures/farming_oat_5.png b/mods/.farming_old/textures/farming_oat_5.png new file mode 100644 index 00000000..ec0803be Binary files /dev/null and b/mods/.farming_old/textures/farming_oat_5.png differ diff --git a/mods/.farming_old/textures/farming_oat_6.png b/mods/.farming_old/textures/farming_oat_6.png new file mode 100644 index 00000000..847adc56 Binary files /dev/null and b/mods/.farming_old/textures/farming_oat_6.png differ diff --git a/mods/.farming_old/textures/farming_oat_7.png b/mods/.farming_old/textures/farming_oat_7.png new file mode 100644 index 00000000..35528110 Binary files /dev/null and b/mods/.farming_old/textures/farming_oat_7.png differ diff --git a/mods/.farming_old/textures/farming_oat_8.png b/mods/.farming_old/textures/farming_oat_8.png new file mode 100644 index 00000000..c7a55406 Binary files /dev/null and b/mods/.farming_old/textures/farming_oat_8.png differ diff --git a/mods/.farming_old/textures/farming_oat_seed.png b/mods/.farming_old/textures/farming_oat_seed.png new file mode 100644 index 00000000..893c93c0 Binary files /dev/null and b/mods/.farming_old/textures/farming_oat_seed.png differ diff --git a/mods/.farming_old/textures/farming_onigiri.png b/mods/.farming_old/textures/farming_onigiri.png new file mode 100644 index 00000000..e1bf0bc1 Binary files /dev/null and b/mods/.farming_old/textures/farming_onigiri.png differ diff --git a/mods/.farming_old/textures/farming_onion_soup.png b/mods/.farming_old/textures/farming_onion_soup.png new file mode 100644 index 00000000..cd535aec Binary files /dev/null and b/mods/.farming_old/textures/farming_onion_soup.png differ diff --git a/mods/.farming_old/textures/farming_orange.png b/mods/.farming_old/textures/farming_orange.png new file mode 100644 index 00000000..8b9ec299 Binary files /dev/null and b/mods/.farming_old/textures/farming_orange.png differ diff --git a/mods/.farming_old/textures/farming_paella.png b/mods/.farming_old/textures/farming_paella.png new file mode 100644 index 00000000..e6bca52a Binary files /dev/null and b/mods/.farming_old/textures/farming_paella.png differ diff --git a/mods/.farming_old/textures/farming_parsley.png b/mods/.farming_old/textures/farming_parsley.png new file mode 100644 index 00000000..183ecb75 Binary files /dev/null and b/mods/.farming_old/textures/farming_parsley.png differ diff --git a/mods/.farming_old/textures/farming_parsley_1.png b/mods/.farming_old/textures/farming_parsley_1.png new file mode 100644 index 00000000..632928c8 Binary files /dev/null and b/mods/.farming_old/textures/farming_parsley_1.png differ diff --git a/mods/.farming_old/textures/farming_parsley_2.png b/mods/.farming_old/textures/farming_parsley_2.png new file mode 100644 index 00000000..fddbf00b Binary files /dev/null and b/mods/.farming_old/textures/farming_parsley_2.png differ diff --git a/mods/.farming_old/textures/farming_parsley_3.png b/mods/.farming_old/textures/farming_parsley_3.png new file mode 100644 index 00000000..e4aacb94 Binary files /dev/null and b/mods/.farming_old/textures/farming_parsley_3.png differ diff --git a/mods/.farming_old/textures/farming_pasta.png b/mods/.farming_old/textures/farming_pasta.png new file mode 100644 index 00000000..af6a48c7 Binary files /dev/null and b/mods/.farming_old/textures/farming_pasta.png differ diff --git a/mods/.farming_old/textures/farming_pea_1.png b/mods/.farming_old/textures/farming_pea_1.png new file mode 100644 index 00000000..aa98af7c Binary files /dev/null and b/mods/.farming_old/textures/farming_pea_1.png differ diff --git a/mods/.farming_old/textures/farming_pea_2.png b/mods/.farming_old/textures/farming_pea_2.png new file mode 100644 index 00000000..3a4ed622 Binary files /dev/null and b/mods/.farming_old/textures/farming_pea_2.png differ diff --git a/mods/.farming_old/textures/farming_pea_3.png b/mods/.farming_old/textures/farming_pea_3.png new file mode 100644 index 00000000..5cfd90e3 Binary files /dev/null and b/mods/.farming_old/textures/farming_pea_3.png differ diff --git a/mods/.farming_old/textures/farming_pea_4.png b/mods/.farming_old/textures/farming_pea_4.png new file mode 100644 index 00000000..b14f301a Binary files /dev/null and b/mods/.farming_old/textures/farming_pea_4.png differ diff --git a/mods/.farming_old/textures/farming_pea_5.png b/mods/.farming_old/textures/farming_pea_5.png new file mode 100644 index 00000000..ecd81c37 Binary files /dev/null and b/mods/.farming_old/textures/farming_pea_5.png differ diff --git a/mods/.farming_old/textures/farming_pea_pod.png b/mods/.farming_old/textures/farming_pea_pod.png new file mode 100644 index 00000000..1c19c9f6 Binary files /dev/null and b/mods/.farming_old/textures/farming_pea_pod.png differ diff --git a/mods/.farming_old/textures/farming_pea_soup.png b/mods/.farming_old/textures/farming_pea_soup.png new file mode 100644 index 00000000..03753cf6 Binary files /dev/null and b/mods/.farming_old/textures/farming_pea_soup.png differ diff --git a/mods/.farming_old/textures/farming_pineapple.png b/mods/.farming_old/textures/farming_pineapple.png new file mode 100644 index 00000000..c2d2ceb1 Binary files /dev/null and b/mods/.farming_old/textures/farming_pineapple.png differ diff --git a/mods/.farming_old/textures/farming_pineapple_1.png b/mods/.farming_old/textures/farming_pineapple_1.png new file mode 100644 index 00000000..7daa9176 Binary files /dev/null and b/mods/.farming_old/textures/farming_pineapple_1.png differ diff --git a/mods/.farming_old/textures/farming_pineapple_2.png b/mods/.farming_old/textures/farming_pineapple_2.png new file mode 100644 index 00000000..6fe2a14b Binary files /dev/null and b/mods/.farming_old/textures/farming_pineapple_2.png differ diff --git a/mods/.farming_old/textures/farming_pineapple_3.png b/mods/.farming_old/textures/farming_pineapple_3.png new file mode 100644 index 00000000..e9a625ab Binary files /dev/null and b/mods/.farming_old/textures/farming_pineapple_3.png differ diff --git a/mods/.farming_old/textures/farming_pineapple_4.png b/mods/.farming_old/textures/farming_pineapple_4.png new file mode 100644 index 00000000..5bc64153 Binary files /dev/null and b/mods/.farming_old/textures/farming_pineapple_4.png differ diff --git a/mods/.farming_old/textures/farming_pineapple_5.png b/mods/.farming_old/textures/farming_pineapple_5.png new file mode 100644 index 00000000..ddf2dd56 Binary files /dev/null and b/mods/.farming_old/textures/farming_pineapple_5.png differ diff --git a/mods/.farming_old/textures/farming_pineapple_6.png b/mods/.farming_old/textures/farming_pineapple_6.png new file mode 100644 index 00000000..a674df2d Binary files /dev/null and b/mods/.farming_old/textures/farming_pineapple_6.png differ diff --git a/mods/.farming_old/textures/farming_pineapple_7.png b/mods/.farming_old/textures/farming_pineapple_7.png new file mode 100644 index 00000000..5158af32 Binary files /dev/null and b/mods/.farming_old/textures/farming_pineapple_7.png differ diff --git a/mods/.farming_old/textures/farming_pineapple_8.png b/mods/.farming_old/textures/farming_pineapple_8.png new file mode 100644 index 00000000..006a54ef Binary files /dev/null and b/mods/.farming_old/textures/farming_pineapple_8.png differ diff --git a/mods/.farming_old/textures/farming_pineapple_juice.png b/mods/.farming_old/textures/farming_pineapple_juice.png new file mode 100644 index 00000000..43a54c70 Binary files /dev/null and b/mods/.farming_old/textures/farming_pineapple_juice.png differ diff --git a/mods/.farming_old/textures/farming_pineapple_ring.png b/mods/.farming_old/textures/farming_pineapple_ring.png new file mode 100644 index 00000000..4cf3feb8 Binary files /dev/null and b/mods/.farming_old/textures/farming_pineapple_ring.png differ diff --git a/mods/.farming_old/textures/farming_pineapple_top.png b/mods/.farming_old/textures/farming_pineapple_top.png new file mode 100644 index 00000000..78e3f36a Binary files /dev/null and b/mods/.farming_old/textures/farming_pineapple_top.png differ diff --git a/mods/.farming_old/textures/farming_popcorn.png b/mods/.farming_old/textures/farming_popcorn.png new file mode 100644 index 00000000..9aa75807 Binary files /dev/null and b/mods/.farming_old/textures/farming_popcorn.png differ diff --git a/mods/.farming_old/textures/farming_porridge.png b/mods/.farming_old/textures/farming_porridge.png new file mode 100644 index 00000000..e31929be Binary files /dev/null and b/mods/.farming_old/textures/farming_porridge.png differ diff --git a/mods/.farming_old/textures/farming_pot.png b/mods/.farming_old/textures/farming_pot.png new file mode 100644 index 00000000..d28411d2 Binary files /dev/null and b/mods/.farming_old/textures/farming_pot.png differ diff --git a/mods/.farming_old/textures/farming_potato.png b/mods/.farming_old/textures/farming_potato.png new file mode 100644 index 00000000..6e91d6ae Binary files /dev/null and b/mods/.farming_old/textures/farming_potato.png differ diff --git a/mods/.farming_old/textures/farming_potato_1.png b/mods/.farming_old/textures/farming_potato_1.png new file mode 100644 index 00000000..a9c00409 Binary files /dev/null and b/mods/.farming_old/textures/farming_potato_1.png differ diff --git a/mods/.farming_old/textures/farming_potato_2.png b/mods/.farming_old/textures/farming_potato_2.png new file mode 100644 index 00000000..c81830c4 Binary files /dev/null and b/mods/.farming_old/textures/farming_potato_2.png differ diff --git a/mods/.farming_old/textures/farming_potato_3.png b/mods/.farming_old/textures/farming_potato_3.png new file mode 100644 index 00000000..a3d79209 Binary files /dev/null and b/mods/.farming_old/textures/farming_potato_3.png differ diff --git a/mods/.farming_old/textures/farming_potato_4.png b/mods/.farming_old/textures/farming_potato_4.png new file mode 100644 index 00000000..405b7e56 Binary files /dev/null and b/mods/.farming_old/textures/farming_potato_4.png differ diff --git a/mods/.farming_old/textures/farming_potato_omelet.png b/mods/.farming_old/textures/farming_potato_omelet.png new file mode 100644 index 00000000..aee3cfb5 Binary files /dev/null and b/mods/.farming_old/textures/farming_potato_omelet.png differ diff --git a/mods/.farming_old/textures/farming_potato_salad.png b/mods/.farming_old/textures/farming_potato_salad.png new file mode 100644 index 00000000..ce148bb5 Binary files /dev/null and b/mods/.farming_old/textures/farming_potato_salad.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_1.png b/mods/.farming_old/textures/farming_pumpkin_1.png new file mode 100644 index 00000000..e5b9a2bf Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_1.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_2.png b/mods/.farming_old/textures/farming_pumpkin_2.png new file mode 100644 index 00000000..d977e8c2 Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_2.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_3.png b/mods/.farming_old/textures/farming_pumpkin_3.png new file mode 100644 index 00000000..83f81905 Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_3.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_4.png b/mods/.farming_old/textures/farming_pumpkin_4.png new file mode 100644 index 00000000..20de004a Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_4.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_5.png b/mods/.farming_old/textures/farming_pumpkin_5.png new file mode 100644 index 00000000..59fa78eb Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_5.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_6.png b/mods/.farming_old/textures/farming_pumpkin_6.png new file mode 100644 index 00000000..6ae543e4 Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_6.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_7.png b/mods/.farming_old/textures/farming_pumpkin_7.png new file mode 100644 index 00000000..79190e09 Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_7.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_8.png b/mods/.farming_old/textures/farming_pumpkin_8.png new file mode 100644 index 00000000..b941442c Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_8.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_bottom.png b/mods/.farming_old/textures/farming_pumpkin_bottom.png new file mode 100644 index 00000000..8c8f56e8 Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_bottom.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_bread.png b/mods/.farming_old/textures/farming_pumpkin_bread.png new file mode 100644 index 00000000..0dfae08f Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_bread.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_dough.png b/mods/.farming_old/textures/farming_pumpkin_dough.png new file mode 100644 index 00000000..62ea7a65 Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_dough.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_face_off.png b/mods/.farming_old/textures/farming_pumpkin_face_off.png new file mode 100644 index 00000000..ed46e833 Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_face_off.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_face_on.png b/mods/.farming_old/textures/farming_pumpkin_face_on.png new file mode 100644 index 00000000..4708c9d6 Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_face_on.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_side.png b/mods/.farming_old/textures/farming_pumpkin_side.png new file mode 100644 index 00000000..e29b7320 Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_side.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_slice.png b/mods/.farming_old/textures/farming_pumpkin_slice.png new file mode 100644 index 00000000..1fb659e2 Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_slice.png differ diff --git a/mods/.farming_old/textures/farming_pumpkin_top.png b/mods/.farming_old/textures/farming_pumpkin_top.png new file mode 100644 index 00000000..6b8e91bb Binary files /dev/null and b/mods/.farming_old/textures/farming_pumpkin_top.png differ diff --git a/mods/.farming_old/textures/farming_raspberries.png b/mods/.farming_old/textures/farming_raspberries.png new file mode 100644 index 00000000..ab96e1bf Binary files /dev/null and b/mods/.farming_old/textures/farming_raspberries.png differ diff --git a/mods/.farming_old/textures/farming_raspberry_1.png b/mods/.farming_old/textures/farming_raspberry_1.png new file mode 100644 index 00000000..d1a7ffca Binary files /dev/null and b/mods/.farming_old/textures/farming_raspberry_1.png differ diff --git a/mods/.farming_old/textures/farming_raspberry_2.png b/mods/.farming_old/textures/farming_raspberry_2.png new file mode 100644 index 00000000..308a0caf Binary files /dev/null and b/mods/.farming_old/textures/farming_raspberry_2.png differ diff --git a/mods/.farming_old/textures/farming_raspberry_3.png b/mods/.farming_old/textures/farming_raspberry_3.png new file mode 100644 index 00000000..43d2ab13 Binary files /dev/null and b/mods/.farming_old/textures/farming_raspberry_3.png differ diff --git a/mods/.farming_old/textures/farming_raspberry_4.png b/mods/.farming_old/textures/farming_raspberry_4.png new file mode 100644 index 00000000..32da6b9f Binary files /dev/null and b/mods/.farming_old/textures/farming_raspberry_4.png differ diff --git a/mods/.farming_old/textures/farming_raspberry_smoothie.png b/mods/.farming_old/textures/farming_raspberry_smoothie.png new file mode 100644 index 00000000..fe178d11 Binary files /dev/null and b/mods/.farming_old/textures/farming_raspberry_smoothie.png differ diff --git a/mods/.farming_old/textures/farming_rhubarb.png b/mods/.farming_old/textures/farming_rhubarb.png new file mode 100644 index 00000000..7d416ab2 Binary files /dev/null and b/mods/.farming_old/textures/farming_rhubarb.png differ diff --git a/mods/.farming_old/textures/farming_rhubarb_1.png b/mods/.farming_old/textures/farming_rhubarb_1.png new file mode 100644 index 00000000..5ebf1160 Binary files /dev/null and b/mods/.farming_old/textures/farming_rhubarb_1.png differ diff --git a/mods/.farming_old/textures/farming_rhubarb_2.png b/mods/.farming_old/textures/farming_rhubarb_2.png new file mode 100644 index 00000000..01585b1b Binary files /dev/null and b/mods/.farming_old/textures/farming_rhubarb_2.png differ diff --git a/mods/.farming_old/textures/farming_rhubarb_3.png b/mods/.farming_old/textures/farming_rhubarb_3.png new file mode 100644 index 00000000..71845c75 Binary files /dev/null and b/mods/.farming_old/textures/farming_rhubarb_3.png differ diff --git a/mods/.farming_old/textures/farming_rhubarb_4.png b/mods/.farming_old/textures/farming_rhubarb_4.png new file mode 100644 index 00000000..b412f7e0 Binary files /dev/null and b/mods/.farming_old/textures/farming_rhubarb_4.png differ diff --git a/mods/.farming_old/textures/farming_rhubarb_pie.png b/mods/.farming_old/textures/farming_rhubarb_pie.png new file mode 100644 index 00000000..d5593260 Binary files /dev/null and b/mods/.farming_old/textures/farming_rhubarb_pie.png differ diff --git a/mods/.farming_old/textures/farming_rice.png b/mods/.farming_old/textures/farming_rice.png new file mode 100644 index 00000000..9b42a346 Binary files /dev/null and b/mods/.farming_old/textures/farming_rice.png differ diff --git a/mods/.farming_old/textures/farming_rice_1.png b/mods/.farming_old/textures/farming_rice_1.png new file mode 100644 index 00000000..715bb2e6 Binary files /dev/null and b/mods/.farming_old/textures/farming_rice_1.png differ diff --git a/mods/.farming_old/textures/farming_rice_2.png b/mods/.farming_old/textures/farming_rice_2.png new file mode 100644 index 00000000..2662d42b Binary files /dev/null and b/mods/.farming_old/textures/farming_rice_2.png differ diff --git a/mods/.farming_old/textures/farming_rice_3.png b/mods/.farming_old/textures/farming_rice_3.png new file mode 100644 index 00000000..fee87b21 Binary files /dev/null and b/mods/.farming_old/textures/farming_rice_3.png differ diff --git a/mods/.farming_old/textures/farming_rice_4.png b/mods/.farming_old/textures/farming_rice_4.png new file mode 100644 index 00000000..97b026f6 Binary files /dev/null and b/mods/.farming_old/textures/farming_rice_4.png differ diff --git a/mods/.farming_old/textures/farming_rice_5.png b/mods/.farming_old/textures/farming_rice_5.png new file mode 100644 index 00000000..c249851c Binary files /dev/null and b/mods/.farming_old/textures/farming_rice_5.png differ diff --git a/mods/.farming_old/textures/farming_rice_6.png b/mods/.farming_old/textures/farming_rice_6.png new file mode 100644 index 00000000..c0e7233a Binary files /dev/null and b/mods/.farming_old/textures/farming_rice_6.png differ diff --git a/mods/.farming_old/textures/farming_rice_7.png b/mods/.farming_old/textures/farming_rice_7.png new file mode 100644 index 00000000..9d251ee2 Binary files /dev/null and b/mods/.farming_old/textures/farming_rice_7.png differ diff --git a/mods/.farming_old/textures/farming_rice_8.png b/mods/.farming_old/textures/farming_rice_8.png new file mode 100644 index 00000000..41b37e03 Binary files /dev/null and b/mods/.farming_old/textures/farming_rice_8.png differ diff --git a/mods/.farming_old/textures/farming_rice_bread.png b/mods/.farming_old/textures/farming_rice_bread.png new file mode 100644 index 00000000..f14f741d Binary files /dev/null and b/mods/.farming_old/textures/farming_rice_bread.png differ diff --git a/mods/.farming_old/textures/farming_rice_flour.png b/mods/.farming_old/textures/farming_rice_flour.png new file mode 100644 index 00000000..27221516 Binary files /dev/null and b/mods/.farming_old/textures/farming_rice_flour.png differ diff --git a/mods/.farming_old/textures/farming_rice_seed.png b/mods/.farming_old/textures/farming_rice_seed.png new file mode 100644 index 00000000..8a84f58d Binary files /dev/null and b/mods/.farming_old/textures/farming_rice_seed.png differ diff --git a/mods/.farming_old/textures/farming_rose_water.png b/mods/.farming_old/textures/farming_rose_water.png new file mode 100644 index 00000000..96e546f2 Binary files /dev/null and b/mods/.farming_old/textures/farming_rose_water.png differ diff --git a/mods/.farming_old/textures/farming_rye.png b/mods/.farming_old/textures/farming_rye.png new file mode 100644 index 00000000..ebc5b379 Binary files /dev/null and b/mods/.farming_old/textures/farming_rye.png differ diff --git a/mods/.farming_old/textures/farming_rye_1.png b/mods/.farming_old/textures/farming_rye_1.png new file mode 100644 index 00000000..932b6212 Binary files /dev/null and b/mods/.farming_old/textures/farming_rye_1.png differ diff --git a/mods/.farming_old/textures/farming_rye_2.png b/mods/.farming_old/textures/farming_rye_2.png new file mode 100644 index 00000000..b6a69b70 Binary files /dev/null and b/mods/.farming_old/textures/farming_rye_2.png differ diff --git a/mods/.farming_old/textures/farming_rye_3.png b/mods/.farming_old/textures/farming_rye_3.png new file mode 100644 index 00000000..aaa71c2c Binary files /dev/null and b/mods/.farming_old/textures/farming_rye_3.png differ diff --git a/mods/.farming_old/textures/farming_rye_4.png b/mods/.farming_old/textures/farming_rye_4.png new file mode 100644 index 00000000..ea1246ef Binary files /dev/null and b/mods/.farming_old/textures/farming_rye_4.png differ diff --git a/mods/.farming_old/textures/farming_rye_5.png b/mods/.farming_old/textures/farming_rye_5.png new file mode 100644 index 00000000..b359673c Binary files /dev/null and b/mods/.farming_old/textures/farming_rye_5.png differ diff --git a/mods/.farming_old/textures/farming_rye_6.png b/mods/.farming_old/textures/farming_rye_6.png new file mode 100644 index 00000000..749a2ef8 Binary files /dev/null and b/mods/.farming_old/textures/farming_rye_6.png differ diff --git a/mods/.farming_old/textures/farming_rye_7.png b/mods/.farming_old/textures/farming_rye_7.png new file mode 100644 index 00000000..fc78198c Binary files /dev/null and b/mods/.farming_old/textures/farming_rye_7.png differ diff --git a/mods/.farming_old/textures/farming_rye_8.png b/mods/.farming_old/textures/farming_rye_8.png new file mode 100644 index 00000000..0b7c33ed Binary files /dev/null and b/mods/.farming_old/textures/farming_rye_8.png differ diff --git a/mods/.farming_old/textures/farming_rye_seed.png b/mods/.farming_old/textures/farming_rye_seed.png new file mode 100644 index 00000000..e65ba9b4 Binary files /dev/null and b/mods/.farming_old/textures/farming_rye_seed.png differ diff --git a/mods/.farming_old/textures/farming_salad.png b/mods/.farming_old/textures/farming_salad.png new file mode 100644 index 00000000..febf40f3 Binary files /dev/null and b/mods/.farming_old/textures/farming_salad.png differ diff --git a/mods/.farming_old/textures/farming_salt.png b/mods/.farming_old/textures/farming_salt.png new file mode 100644 index 00000000..2b23e33f Binary files /dev/null and b/mods/.farming_old/textures/farming_salt.png differ diff --git a/mods/.farming_old/textures/farming_salt_crystal.png b/mods/.farming_old/textures/farming_salt_crystal.png new file mode 100644 index 00000000..e94ed7b3 Binary files /dev/null and b/mods/.farming_old/textures/farming_salt_crystal.png differ diff --git a/mods/.farming_old/textures/farming_saucepan.png b/mods/.farming_old/textures/farming_saucepan.png new file mode 100644 index 00000000..2625d45d Binary files /dev/null and b/mods/.farming_old/textures/farming_saucepan.png differ diff --git a/mods/.farming_old/textures/farming_scythe_mithril.png b/mods/.farming_old/textures/farming_scythe_mithril.png new file mode 100644 index 00000000..17c89c5a Binary files /dev/null and b/mods/.farming_old/textures/farming_scythe_mithril.png differ diff --git a/mods/.farming_old/textures/farming_skillet.png b/mods/.farming_old/textures/farming_skillet.png new file mode 100644 index 00000000..60d26a1e Binary files /dev/null and b/mods/.farming_old/textures/farming_skillet.png differ diff --git a/mods/.farming_old/textures/farming_soil.png b/mods/.farming_old/textures/farming_soil.png new file mode 100644 index 00000000..5cd3e681 Binary files /dev/null and b/mods/.farming_old/textures/farming_soil.png differ diff --git a/mods/.farming_old/textures/farming_soil_wet.png b/mods/.farming_old/textures/farming_soil_wet.png new file mode 100644 index 00000000..0b4487d8 Binary files /dev/null and b/mods/.farming_old/textures/farming_soil_wet.png differ diff --git a/mods/.farming_old/textures/farming_soil_wet_side.png b/mods/.farming_old/textures/farming_soil_wet_side.png new file mode 100644 index 00000000..f0b1bd45 Binary files /dev/null and b/mods/.farming_old/textures/farming_soil_wet_side.png differ diff --git a/mods/.farming_old/textures/farming_soy_1.png b/mods/.farming_old/textures/farming_soy_1.png new file mode 100644 index 00000000..9a64d873 Binary files /dev/null and b/mods/.farming_old/textures/farming_soy_1.png differ diff --git a/mods/.farming_old/textures/farming_soy_2.png b/mods/.farming_old/textures/farming_soy_2.png new file mode 100644 index 00000000..e4915941 Binary files /dev/null and b/mods/.farming_old/textures/farming_soy_2.png differ diff --git a/mods/.farming_old/textures/farming_soy_3.png b/mods/.farming_old/textures/farming_soy_3.png new file mode 100644 index 00000000..e8f39ee5 Binary files /dev/null and b/mods/.farming_old/textures/farming_soy_3.png differ diff --git a/mods/.farming_old/textures/farming_soy_4.png b/mods/.farming_old/textures/farming_soy_4.png new file mode 100644 index 00000000..3012c2af Binary files /dev/null and b/mods/.farming_old/textures/farming_soy_4.png differ diff --git a/mods/.farming_old/textures/farming_soy_5.png b/mods/.farming_old/textures/farming_soy_5.png new file mode 100644 index 00000000..63f0ce49 Binary files /dev/null and b/mods/.farming_old/textures/farming_soy_5.png differ diff --git a/mods/.farming_old/textures/farming_soy_6.png b/mods/.farming_old/textures/farming_soy_6.png new file mode 100644 index 00000000..581def50 Binary files /dev/null and b/mods/.farming_old/textures/farming_soy_6.png differ diff --git a/mods/.farming_old/textures/farming_soy_7.png b/mods/.farming_old/textures/farming_soy_7.png new file mode 100644 index 00000000..eb47e325 Binary files /dev/null and b/mods/.farming_old/textures/farming_soy_7.png differ diff --git a/mods/.farming_old/textures/farming_soy_milk_glass.png b/mods/.farming_old/textures/farming_soy_milk_glass.png new file mode 100644 index 00000000..95c567dd Binary files /dev/null and b/mods/.farming_old/textures/farming_soy_milk_glass.png differ diff --git a/mods/.farming_old/textures/farming_soy_pod.png b/mods/.farming_old/textures/farming_soy_pod.png new file mode 100644 index 00000000..eceeec53 Binary files /dev/null and b/mods/.farming_old/textures/farming_soy_pod.png differ diff --git a/mods/.farming_old/textures/farming_soy_sauce.png b/mods/.farming_old/textures/farming_soy_sauce.png new file mode 100644 index 00000000..f32caec4 Binary files /dev/null and b/mods/.farming_old/textures/farming_soy_sauce.png differ diff --git a/mods/.farming_old/textures/farming_spaghetti.png b/mods/.farming_old/textures/farming_spaghetti.png new file mode 100644 index 00000000..b18ee439 Binary files /dev/null and b/mods/.farming_old/textures/farming_spaghetti.png differ diff --git a/mods/.farming_old/textures/farming_spanish_potatoes.png b/mods/.farming_old/textures/farming_spanish_potatoes.png new file mode 100644 index 00000000..8571b180 Binary files /dev/null and b/mods/.farming_old/textures/farming_spanish_potatoes.png differ diff --git a/mods/.farming_old/textures/farming_spinach.png b/mods/.farming_old/textures/farming_spinach.png new file mode 100644 index 00000000..2e7d519a Binary files /dev/null and b/mods/.farming_old/textures/farming_spinach.png differ diff --git a/mods/.farming_old/textures/farming_spinach_1.png b/mods/.farming_old/textures/farming_spinach_1.png new file mode 100644 index 00000000..67c95f86 Binary files /dev/null and b/mods/.farming_old/textures/farming_spinach_1.png differ diff --git a/mods/.farming_old/textures/farming_spinach_2.png b/mods/.farming_old/textures/farming_spinach_2.png new file mode 100644 index 00000000..52d976db Binary files /dev/null and b/mods/.farming_old/textures/farming_spinach_2.png differ diff --git a/mods/.farming_old/textures/farming_spinach_3.png b/mods/.farming_old/textures/farming_spinach_3.png new file mode 100644 index 00000000..ef2e85f9 Binary files /dev/null and b/mods/.farming_old/textures/farming_spinach_3.png differ diff --git a/mods/.farming_old/textures/farming_spinach_4.png b/mods/.farming_old/textures/farming_spinach_4.png new file mode 100644 index 00000000..9435bc66 Binary files /dev/null and b/mods/.farming_old/textures/farming_spinach_4.png differ diff --git a/mods/.farming_old/textures/farming_straw.png b/mods/.farming_old/textures/farming_straw.png new file mode 100644 index 00000000..e4277723 Binary files /dev/null and b/mods/.farming_old/textures/farming_straw.png differ diff --git a/mods/.farming_old/textures/farming_strawberry.png b/mods/.farming_old/textures/farming_strawberry.png new file mode 100644 index 00000000..5b43e6bc Binary files /dev/null and b/mods/.farming_old/textures/farming_strawberry.png differ diff --git a/mods/.farming_old/textures/farming_string.png b/mods/.farming_old/textures/farming_string.png new file mode 100644 index 00000000..e2bbfd7a Binary files /dev/null and b/mods/.farming_old/textures/farming_string.png differ diff --git a/mods/.farming_old/textures/farming_sugar.png b/mods/.farming_old/textures/farming_sugar.png new file mode 100644 index 00000000..5cb7fa01 Binary files /dev/null and b/mods/.farming_old/textures/farming_sugar.png differ diff --git a/mods/.farming_old/textures/farming_sugar_cube.png b/mods/.farming_old/textures/farming_sugar_cube.png new file mode 100644 index 00000000..7c9b8352 Binary files /dev/null and b/mods/.farming_old/textures/farming_sugar_cube.png differ diff --git a/mods/.farming_old/textures/farming_sunflower.png b/mods/.farming_old/textures/farming_sunflower.png new file mode 100644 index 00000000..17a91c97 Binary files /dev/null and b/mods/.farming_old/textures/farming_sunflower.png differ diff --git a/mods/.farming_old/textures/farming_sunflower_1.png b/mods/.farming_old/textures/farming_sunflower_1.png new file mode 100644 index 00000000..719ec402 Binary files /dev/null and b/mods/.farming_old/textures/farming_sunflower_1.png differ diff --git a/mods/.farming_old/textures/farming_sunflower_2.png b/mods/.farming_old/textures/farming_sunflower_2.png new file mode 100644 index 00000000..4ccfff3b Binary files /dev/null and b/mods/.farming_old/textures/farming_sunflower_2.png differ diff --git a/mods/.farming_old/textures/farming_sunflower_3.png b/mods/.farming_old/textures/farming_sunflower_3.png new file mode 100644 index 00000000..719b5f17 Binary files /dev/null and b/mods/.farming_old/textures/farming_sunflower_3.png differ diff --git a/mods/.farming_old/textures/farming_sunflower_4.png b/mods/.farming_old/textures/farming_sunflower_4.png new file mode 100644 index 00000000..2b03eb50 Binary files /dev/null and b/mods/.farming_old/textures/farming_sunflower_4.png differ diff --git a/mods/.farming_old/textures/farming_sunflower_5.png b/mods/.farming_old/textures/farming_sunflower_5.png new file mode 100644 index 00000000..a9c474ea Binary files /dev/null and b/mods/.farming_old/textures/farming_sunflower_5.png differ diff --git a/mods/.farming_old/textures/farming_sunflower_6.png b/mods/.farming_old/textures/farming_sunflower_6.png new file mode 100644 index 00000000..a2ee8432 Binary files /dev/null and b/mods/.farming_old/textures/farming_sunflower_6.png differ diff --git a/mods/.farming_old/textures/farming_sunflower_7.png b/mods/.farming_old/textures/farming_sunflower_7.png new file mode 100644 index 00000000..e3a09860 Binary files /dev/null and b/mods/.farming_old/textures/farming_sunflower_7.png differ diff --git a/mods/.farming_old/textures/farming_sunflower_8.png b/mods/.farming_old/textures/farming_sunflower_8.png new file mode 100644 index 00000000..5d1022f7 Binary files /dev/null and b/mods/.farming_old/textures/farming_sunflower_8.png differ diff --git a/mods/.farming_old/textures/farming_sunflower_bread.png b/mods/.farming_old/textures/farming_sunflower_bread.png new file mode 100644 index 00000000..49938700 Binary files /dev/null and b/mods/.farming_old/textures/farming_sunflower_bread.png differ diff --git a/mods/.farming_old/textures/farming_sunflower_oil.png b/mods/.farming_old/textures/farming_sunflower_oil.png new file mode 100644 index 00000000..36d139ff Binary files /dev/null and b/mods/.farming_old/textures/farming_sunflower_oil.png differ diff --git a/mods/.farming_old/textures/farming_sunflower_seeds.png b/mods/.farming_old/textures/farming_sunflower_seeds.png new file mode 100644 index 00000000..fe67a0ce Binary files /dev/null and b/mods/.farming_old/textures/farming_sunflower_seeds.png differ diff --git a/mods/.farming_old/textures/farming_sunflower_seeds_toasted.png b/mods/.farming_old/textures/farming_sunflower_seeds_toasted.png new file mode 100644 index 00000000..1973e48f Binary files /dev/null and b/mods/.farming_old/textures/farming_sunflower_seeds_toasted.png differ diff --git a/mods/.farming_old/textures/farming_toast.png b/mods/.farming_old/textures/farming_toast.png new file mode 100644 index 00000000..8a4524e2 Binary files /dev/null and b/mods/.farming_old/textures/farming_toast.png differ diff --git a/mods/.farming_old/textures/farming_toast_sandwich.png b/mods/.farming_old/textures/farming_toast_sandwich.png new file mode 100644 index 00000000..c60ff5a7 Binary files /dev/null and b/mods/.farming_old/textures/farming_toast_sandwich.png differ diff --git a/mods/.farming_old/textures/farming_tofu.png b/mods/.farming_old/textures/farming_tofu.png new file mode 100644 index 00000000..aaa0a2cf Binary files /dev/null and b/mods/.farming_old/textures/farming_tofu.png differ diff --git a/mods/.farming_old/textures/farming_tofu_cooked.png b/mods/.farming_old/textures/farming_tofu_cooked.png new file mode 100644 index 00000000..23963cec Binary files /dev/null and b/mods/.farming_old/textures/farming_tofu_cooked.png differ diff --git a/mods/.farming_old/textures/farming_tomato.png b/mods/.farming_old/textures/farming_tomato.png new file mode 100644 index 00000000..586aa56d Binary files /dev/null and b/mods/.farming_old/textures/farming_tomato.png differ diff --git a/mods/.farming_old/textures/farming_tomato_1.png b/mods/.farming_old/textures/farming_tomato_1.png new file mode 100644 index 00000000..d858e586 Binary files /dev/null and b/mods/.farming_old/textures/farming_tomato_1.png differ diff --git a/mods/.farming_old/textures/farming_tomato_2.png b/mods/.farming_old/textures/farming_tomato_2.png new file mode 100644 index 00000000..9d9ed6d0 Binary files /dev/null and b/mods/.farming_old/textures/farming_tomato_2.png differ diff --git a/mods/.farming_old/textures/farming_tomato_3.png b/mods/.farming_old/textures/farming_tomato_3.png new file mode 100644 index 00000000..fe3dcf0a Binary files /dev/null and b/mods/.farming_old/textures/farming_tomato_3.png differ diff --git a/mods/.farming_old/textures/farming_tomato_4.png b/mods/.farming_old/textures/farming_tomato_4.png new file mode 100644 index 00000000..27c32828 Binary files /dev/null and b/mods/.farming_old/textures/farming_tomato_4.png differ diff --git a/mods/.farming_old/textures/farming_tomato_5.png b/mods/.farming_old/textures/farming_tomato_5.png new file mode 100644 index 00000000..f369a68f Binary files /dev/null and b/mods/.farming_old/textures/farming_tomato_5.png differ diff --git a/mods/.farming_old/textures/farming_tomato_6.png b/mods/.farming_old/textures/farming_tomato_6.png new file mode 100644 index 00000000..0135cb53 Binary files /dev/null and b/mods/.farming_old/textures/farming_tomato_6.png differ diff --git a/mods/.farming_old/textures/farming_tomato_7.png b/mods/.farming_old/textures/farming_tomato_7.png new file mode 100644 index 00000000..4cd85f5f Binary files /dev/null and b/mods/.farming_old/textures/farming_tomato_7.png differ diff --git a/mods/.farming_old/textures/farming_tomato_8.png b/mods/.farming_old/textures/farming_tomato_8.png new file mode 100644 index 00000000..0b490257 Binary files /dev/null and b/mods/.farming_old/textures/farming_tomato_8.png differ diff --git a/mods/.farming_old/textures/farming_tomato_soup.png b/mods/.farming_old/textures/farming_tomato_soup.png new file mode 100644 index 00000000..d58d53db Binary files /dev/null and b/mods/.farming_old/textures/farming_tomato_soup.png differ diff --git a/mods/.farming_old/textures/farming_tool_bronzehoe.png b/mods/.farming_old/textures/farming_tool_bronzehoe.png new file mode 100644 index 00000000..ef07a80a Binary files /dev/null and b/mods/.farming_old/textures/farming_tool_bronzehoe.png differ diff --git a/mods/.farming_old/textures/farming_tool_diamondhoe.png b/mods/.farming_old/textures/farming_tool_diamondhoe.png new file mode 100644 index 00000000..093acb82 Binary files /dev/null and b/mods/.farming_old/textures/farming_tool_diamondhoe.png differ diff --git a/mods/.farming_old/textures/farming_tool_mesehoe.png b/mods/.farming_old/textures/farming_tool_mesehoe.png new file mode 100644 index 00000000..ffd597a4 Binary files /dev/null and b/mods/.farming_old/textures/farming_tool_mesehoe.png differ diff --git a/mods/.farming_old/textures/farming_tool_steelhoe.png b/mods/.farming_old/textures/farming_tool_steelhoe.png new file mode 100644 index 00000000..893a6958 Binary files /dev/null and b/mods/.farming_old/textures/farming_tool_steelhoe.png differ diff --git a/mods/.farming_old/textures/farming_tool_stonehoe.png b/mods/.farming_old/textures/farming_tool_stonehoe.png new file mode 100644 index 00000000..4f8dade0 Binary files /dev/null and b/mods/.farming_old/textures/farming_tool_stonehoe.png differ diff --git a/mods/.farming_old/textures/farming_tool_woodhoe.png b/mods/.farming_old/textures/farming_tool_woodhoe.png new file mode 100644 index 00000000..8b20d2dc Binary files /dev/null and b/mods/.farming_old/textures/farming_tool_woodhoe.png differ diff --git a/mods/.farming_old/textures/farming_trellis.png b/mods/.farming_old/textures/farming_trellis.png new file mode 100644 index 00000000..855b9326 Binary files /dev/null and b/mods/.farming_old/textures/farming_trellis.png differ diff --git a/mods/.farming_old/textures/farming_turkish_delight.png b/mods/.farming_old/textures/farming_turkish_delight.png new file mode 100644 index 00000000..198ffc45 Binary files /dev/null and b/mods/.farming_old/textures/farming_turkish_delight.png differ diff --git a/mods/.farming_old/textures/farming_vanilla.png b/mods/.farming_old/textures/farming_vanilla.png new file mode 100644 index 00000000..ddcb540e Binary files /dev/null and b/mods/.farming_old/textures/farming_vanilla.png differ diff --git a/mods/.farming_old/textures/farming_vanilla_1.png b/mods/.farming_old/textures/farming_vanilla_1.png new file mode 100644 index 00000000..fdd10c04 Binary files /dev/null and b/mods/.farming_old/textures/farming_vanilla_1.png differ diff --git a/mods/.farming_old/textures/farming_vanilla_2.png b/mods/.farming_old/textures/farming_vanilla_2.png new file mode 100644 index 00000000..73ba2ca6 Binary files /dev/null and b/mods/.farming_old/textures/farming_vanilla_2.png differ diff --git a/mods/.farming_old/textures/farming_vanilla_3.png b/mods/.farming_old/textures/farming_vanilla_3.png new file mode 100644 index 00000000..596b9bfa Binary files /dev/null and b/mods/.farming_old/textures/farming_vanilla_3.png differ diff --git a/mods/.farming_old/textures/farming_vanilla_4.png b/mods/.farming_old/textures/farming_vanilla_4.png new file mode 100644 index 00000000..55858275 Binary files /dev/null and b/mods/.farming_old/textures/farming_vanilla_4.png differ diff --git a/mods/.farming_old/textures/farming_vanilla_5.png b/mods/.farming_old/textures/farming_vanilla_5.png new file mode 100644 index 00000000..7ac3ef73 Binary files /dev/null and b/mods/.farming_old/textures/farming_vanilla_5.png differ diff --git a/mods/.farming_old/textures/farming_vanilla_6.png b/mods/.farming_old/textures/farming_vanilla_6.png new file mode 100644 index 00000000..10a5bfd0 Binary files /dev/null and b/mods/.farming_old/textures/farming_vanilla_6.png differ diff --git a/mods/.farming_old/textures/farming_vanilla_7.png b/mods/.farming_old/textures/farming_vanilla_7.png new file mode 100644 index 00000000..f2962ee6 Binary files /dev/null and b/mods/.farming_old/textures/farming_vanilla_7.png differ diff --git a/mods/.farming_old/textures/farming_vanilla_8.png b/mods/.farming_old/textures/farming_vanilla_8.png new file mode 100644 index 00000000..1801a976 Binary files /dev/null and b/mods/.farming_old/textures/farming_vanilla_8.png differ diff --git a/mods/.farming_old/textures/farming_vanilla_extract.png b/mods/.farming_old/textures/farming_vanilla_extract.png new file mode 100644 index 00000000..c0668cef Binary files /dev/null and b/mods/.farming_old/textures/farming_vanilla_extract.png differ diff --git a/mods/.farming_old/textures/farming_vanilla_flan.png b/mods/.farming_old/textures/farming_vanilla_flan.png new file mode 100644 index 00000000..10008c4b Binary files /dev/null and b/mods/.farming_old/textures/farming_vanilla_flan.png differ diff --git a/mods/.farming_old/textures/farming_vegan_butter.png b/mods/.farming_old/textures/farming_vegan_butter.png new file mode 100644 index 00000000..2e843497 Binary files /dev/null and b/mods/.farming_old/textures/farming_vegan_butter.png differ diff --git a/mods/.farming_old/textures/farming_water_glass.png b/mods/.farming_old/textures/farming_water_glass.png new file mode 100644 index 00000000..081f8d6e Binary files /dev/null and b/mods/.farming_old/textures/farming_water_glass.png differ diff --git a/mods/.farming_old/textures/farming_wheat.png b/mods/.farming_old/textures/farming_wheat.png new file mode 100644 index 00000000..1e0ad3b3 Binary files /dev/null and b/mods/.farming_old/textures/farming_wheat.png differ diff --git a/mods/.farming_old/textures/farming_wheat_1.png b/mods/.farming_old/textures/farming_wheat_1.png new file mode 100644 index 00000000..c16ad94b Binary files /dev/null and b/mods/.farming_old/textures/farming_wheat_1.png differ diff --git a/mods/.farming_old/textures/farming_wheat_2.png b/mods/.farming_old/textures/farming_wheat_2.png new file mode 100644 index 00000000..baddb4c5 Binary files /dev/null and b/mods/.farming_old/textures/farming_wheat_2.png differ diff --git a/mods/.farming_old/textures/farming_wheat_3.png b/mods/.farming_old/textures/farming_wheat_3.png new file mode 100644 index 00000000..36ebb192 Binary files /dev/null and b/mods/.farming_old/textures/farming_wheat_3.png differ diff --git a/mods/.farming_old/textures/farming_wheat_4.png b/mods/.farming_old/textures/farming_wheat_4.png new file mode 100644 index 00000000..735ed777 Binary files /dev/null and b/mods/.farming_old/textures/farming_wheat_4.png differ diff --git a/mods/.farming_old/textures/farming_wheat_5.png b/mods/.farming_old/textures/farming_wheat_5.png new file mode 100644 index 00000000..f40b5f04 Binary files /dev/null and b/mods/.farming_old/textures/farming_wheat_5.png differ diff --git a/mods/.farming_old/textures/farming_wheat_6.png b/mods/.farming_old/textures/farming_wheat_6.png new file mode 100644 index 00000000..e9c78e00 Binary files /dev/null and b/mods/.farming_old/textures/farming_wheat_6.png differ diff --git a/mods/.farming_old/textures/farming_wheat_7.png b/mods/.farming_old/textures/farming_wheat_7.png new file mode 100644 index 00000000..cc26ca96 Binary files /dev/null and b/mods/.farming_old/textures/farming_wheat_7.png differ diff --git a/mods/.farming_old/textures/farming_wheat_8.png b/mods/.farming_old/textures/farming_wheat_8.png new file mode 100644 index 00000000..d0500934 Binary files /dev/null and b/mods/.farming_old/textures/farming_wheat_8.png differ diff --git a/mods/.farming_old/textures/farming_wheat_seed.png b/mods/.farming_old/textures/farming_wheat_seed.png new file mode 100644 index 00000000..a9031fba Binary files /dev/null and b/mods/.farming_old/textures/farming_wheat_seed.png differ diff --git a/mods/.farming_old/textures/vessels_drinking_cup.png b/mods/.farming_old/textures/vessels_drinking_cup.png new file mode 100644 index 00000000..2eba2321 Binary files /dev/null and b/mods/.farming_old/textures/vessels_drinking_cup.png differ diff --git a/mods/atl_path/.github/workflows/luacheck.yml b/mods/atl_path/.github/workflows/luacheck.yml new file mode 100644 index 00000000..295abb07 --- /dev/null +++ b/mods/atl_path/.github/workflows/luacheck.yml @@ -0,0 +1,16 @@ +name: luacheck +on: [push, pull_request] + +jobs: + luacheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install Luarocks + run: | + sudo apt-get update -qyy + sudo apt-get install luarocks -qyy + - name: Install Luacheck + run: luarocks install --local luacheck + - name: Run Luacheck + run: $HOME/.luarocks/bin/luacheck . diff --git a/mods/atl_path/.luacheckrc b/mods/atl_path/.luacheckrc new file mode 100644 index 00000000..988fd381 --- /dev/null +++ b/mods/atl_path/.luacheckrc @@ -0,0 +1,50 @@ +read_globals = { + "DIR_DELIM", + "INIT", + + "minetest", + "core", + "dump", + "dump2", + + "Raycast", + "Settings", + "PseudoRandom", + "PerlinNoise", + "VoxelManip", + "SecureRandom", + "VoxelArea", + "PerlinNoiseMap", + "PcgRandom", + "ItemStack", + "AreaStore", + + "vector", + + "default", + + table = { + fields = { + "copy", + "indexof", + "insert_all", + "key_value_swap", + "shuffle", + } + }, + + string = { + fields = { + "split", + "trim", + } + }, + + math = { + fields = { + "hypot", + "sign", + "factorial" + } + }, +} diff --git a/mods/atl_path/README.md b/mods/atl_path/README.md new file mode 100644 index 00000000..84816e4a --- /dev/null +++ b/mods/atl_path/README.md @@ -0,0 +1,685 @@ + + +Licenses of media (media) +----------------------------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2010-2024: + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + + +Textures modified: (default_grass.png default_grass_side.png) +- atl_dirt_path_side.png +- atl_dirt_path_top.png + +Licenses code (code) +---------------------------------------------------- + +Copyright (C) 2023 +Atlante +AtlanteEtDocteur@gmail.com + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prEv others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prEv this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prEved or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of Ns of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade Ns, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO Ev UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . diff --git a/mods/atl_path/init.lua b/mods/atl_path/init.lua new file mode 100644 index 00000000..e3b67378 --- /dev/null +++ b/mods/atl_path/init.lua @@ -0,0 +1,148 @@ +--[[ + This program allow to create paths with shovel + Copyright (C) 2024 Atlante and contributors + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +]] + +local S = minetest.get_translator("atl_path") + +minetest.register_node("atl_path:path_dirt", { + description = S("Dirt Path"), + drawtype = "nodebox", + tiles = { + "atl_dirt_path_top.png", + "atl_dirt_path_top.png", + "default_dirt.png^atl_dirt_path_side.png" + }, + use_texture_alpha = "clip", + is_ground_content = false, + paramtype = "light", + node_box = { + type = "fixed", + fixed = { -1 / 2, -1 / 2, -1 / 2, 1 / 2, 1 / 2 - 1 / 16, 1 / 2 }, + }, + drop = "default:dirt", + groups = { no_silktouch = 1, crumbly = 3, not_in_creative_inventory = 1 }, + sounds = default.node_sound_dirt_defaults() +}) + +local function is_attached_bottom(pos) + local node = minetest.get_node(pos) + local def = minetest.registered_nodes[pos] + local paramtype2 = def and def.paramtype2 or "none" + local attach_group = minetest.get_item_group(node.name, "attached_node") + + if attach_group == 3 then + return true + elseif attach_group == 1 then + if paramtype2 == "wallmounted" then + return minetest.wallmounted_to_dir(node.param2).y == -1 + end + return true + elseif attach_group == 2 + and paramtype2 == "facedir" -- 4dir won't attach to bottom + and minetest.facedir_to_dir(node.param2).y == -1 then + return true + end + return false +end + +-- For some reason MT engine does not expose this function +-- Found in builtin/game/faling.lua +local function drop_attached_node(pos) + local n = minetest.get_node(pos) + local drops = minetest.get_node_drops(n, "") + local def = minetest.registered_items[n.name] + if def and def.preserve_metadata then + local oldmeta = minetest.get_meta(pos):to_table().fields + -- Copy pos and node because the callback can modify them. + local pos_copy = vector.copy(pos) + local node_copy = {name=n.name, param1=n.param1, param2=n.param2} + local drop_stacks = {} + for k, v in pairs(drops) do + drop_stacks[k] = ItemStack(v) + end + drops = drop_stacks + def.preserve_metadata(pos_copy, node_copy, oldmeta, drops) + end + if def and def.sounds and def.sounds.fall then + minetest.sound_play(def.sounds.fall, {pos = pos}, true) + end + minetest.remove_node(pos) + for _, item in pairs(drops) do + minetest.add_item({ + x = pos.x + math.random()/2 - 0.25, + y = pos.y + math.random()/2 - 0.25, + z = pos.z + math.random()/2 - 0.25, + }, item) + end +end + +local function shovel_on_place(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + local pos = pointed_thing.under + if vector.subtract(pointed_thing.above, pos).y ~= 1 then + -- only allow from top + return itemstack + end + + local tool_def = minetest.registered_tools[itemstack:get_name()] + local uses = 100 + if tool_def.tool_capabilities + and tool_def.tool_capabilities.groupcaps + and tool_def.tool_capabilities.groupcaps.crumbly then + uses = tool_def.tool_capabilities.groupcaps.crumbly.uses or 100 + end + local wear = minetest.get_tool_wear_after_use(uses) + + local node = minetest.get_node(pos) + local node_def = minetest.registered_nodes[node.name] + local name = user:get_player_name() + + if node_def and node_def.groups and node_def.groups.soil == 1 then + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return itemstack + end + local pos_above = {x = pos.x, y = pos.y + 1, z = pos.z} + local node_above = minetest.get_node(pos_above) + if is_attached_bottom(pos_above) then + if minetest.is_protected(pos_above, name) then + minetest.record_protection_violation(pos_above, name) + return itemstack + end + drop_attached_node(pos_above) + elseif node_above.name ~= "air" then + return itemstack + end + minetest.set_node(pos, {name = "atl_path:path_dirt"}) + if not minetest.is_creative_enabled(name) then + itemstack:add_wear(wear) + end + end + return itemstack +end + +minetest.register_on_mods_loaded(function() + for name, def in pairs(minetest.registered_tools) do + if def.groups and def.groups.shovel == 1 then + minetest.override_item(name, { + on_place = shovel_on_place + }) + end + end +end) diff --git a/mods/atl_path/license.txt b/mods/atl_path/license.txt new file mode 100644 index 00000000..f288702d --- /dev/null +++ b/mods/atl_path/license.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/mods/atl_path/locale/template.txt b/mods/atl_path/locale/template.txt new file mode 100644 index 00000000..c6bd4062 --- /dev/null +++ b/mods/atl_path/locale/template.txt @@ -0,0 +1,2 @@ +# textdomain: atl_path +Dirt Path= diff --git a/mods/atl_path/mod.conf b/mods/atl_path/mod.conf new file mode 100644 index 00000000..89cfaafa --- /dev/null +++ b/mods/atl_path/mod.conf @@ -0,0 +1,8 @@ +name = atl_path +title = Dirt Path +description = This mod allows you to create paths with shovels +depends = default +optional_depends = +supported_games = minetest +release = 26262 +author = Atlante diff --git a/mods/atl_path/screenshot.png b/mods/atl_path/screenshot.png new file mode 100644 index 00000000..1d482d5c Binary files /dev/null and b/mods/atl_path/screenshot.png differ diff --git a/mods/atl_path/textures/atl_dirt_path_side.png b/mods/atl_path/textures/atl_dirt_path_side.png new file mode 100644 index 00000000..8562f3cf Binary files /dev/null and b/mods/atl_path/textures/atl_dirt_path_side.png differ diff --git a/mods/atl_path/textures/atl_dirt_path_top.png b/mods/atl_path/textures/atl_dirt_path_top.png new file mode 100644 index 00000000..8d31f835 Binary files /dev/null and b/mods/atl_path/textures/atl_dirt_path_top.png differ diff --git a/mods/coalfromtrees/init.lua b/mods/coalfromtrees/init.lua new file mode 100644 index 00000000..07a3f3ff --- /dev/null +++ b/mods/coalfromtrees/init.lua @@ -0,0 +1,6 @@ +minetest.register_craft({ + output = "default:coal_lump", + type = "cooking", + recipe = "group:tree", + cooktime = 4 +}) diff --git a/mods/coalfromtrees/mod.conf b/mods/coalfromtrees/mod.conf new file mode 100644 index 00000000..8608b33d --- /dev/null +++ b/mods/coalfromtrees/mod.conf @@ -0,0 +1,6 @@ +name = coalfromtrees +description = Simple mod - cook trees to get coal +depends = default +author = skbzk +title = Coal from Trees +release = 7648 diff --git a/mods/cucina_vegana/.luacheckrc b/mods/cucina_vegana/.luacheckrc new file mode 100644 index 00000000..e40275c9 --- /dev/null +++ b/mods/cucina_vegana/.luacheckrc @@ -0,0 +1,19 @@ +unused_args = false +allow_defined_top = true + +globals = { + "minetest", +} + +read_globals = { + string = {fields = {"split"}}, + table = {fields = {"copy", "getn"}}, + + -- Builtin + "vector", "ItemStack", + "dump", "DIR_DELIM", "VoxelArea", "Settings", + + -- MTG + "default", "sfinv", "creative", "farming", "farmingNG", "technic", "hunger", "wine", "diet", "intllib", "bonemeal", + "cucina_vegana", +} diff --git a/mods/cucina_vegana/.travis.yml b/mods/cucina_vegana/.travis.yml new file mode 100644 index 00000000..9393962a --- /dev/null +++ b/mods/cucina_vegana/.travis.yml @@ -0,0 +1,13 @@ +language: generic +sudo: false +addons: + apt: + packages: + - luarocks +before_install: + - luarocks install --local luacheck +script: +- $HOME/.luarocks/bin/luacheck . +notifications: + email: false + diff --git a/mods/cucina_vegana/LICENSE b/mods/cucina_vegana/LICENSE new file mode 100644 index 00000000..65c5ca88 --- /dev/null +++ b/mods/cucina_vegana/LICENSE @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/mods/cucina_vegana/README.md b/mods/cucina_vegana/README.md new file mode 100644 index 00000000..24944ff2 --- /dev/null +++ b/mods/cucina_vegana/README.md @@ -0,0 +1,99 @@ +# Cucina Vegana + + +This Mod adds some new Plants for vegan cooking in Minetest. +It supports farming and farming_redo from TenPlus. + +## Soy +![Screenshot 1](textures/cucina_vegana_soy_screenshot.jpg) +
+## Parsley +![Screenshot 1](textures/cucina_vegana_parsley_screenshot.jpg) +
+## Lettuce +![Screenshot 1](textures/cucina_vegana_lettuce_screenshot.jpg) +
+## Kohlrabi +![Screenshot 1](textures/cucina_vegana_kohlrabi_screenshot.jpg) +
+## Chives +![Screenshot 1](textures/cucina_vegana_chives_screenshot.jpg) +
+## Rosemary +![Screenshot 1](textures/cucina_vegana_rosemary_screenshot.jpg) +
+ +## Asparagus +![Screenshot 1](textures/cucina_vegana_asparagus_screenshot.jpg) +
+ +## Rice +![Screenshot 1](textures/cucina_vegana_rice_screenshot.jpg) +
+ +## Flax +![Screenshot 1](textures/cucina_vegana_flax_screenshot.jpg) +
+ +## Peanut +![Screenshot 1](textures/cucina_vegana_peanut_screenshot.jpg) +
+ +## Banana +![Screenshot 1](textures/cucina_vegana_banana_screenshot.jpg) +
+ +## The Mod vegan_sunflower is integrated in Cucina Vegana. +![Screenshot 1](textures/cucina_vegana_sunflower_screenshot.jpg) + +## Install + +Move your Download to the Mods-Folder. + +## Depends + +default
+dye
+farming
+vessels
+ +### optional + +aqua_farming
+basic_materials
+bbq
+bees
+bonemeal
+bucket
+building_blocks
+bushes
+bushes_classic
+clementinetree
+cottages
+diet
+farming_redo
+farming_nextgen
+fishing
+flowers
+homedecor
+hunger
+hunger_ng
+intllib
+lemontree
+mobs
+moreblocks
+petz
+pizza
+ropes
+signs_bot
+techage
+technic
+wine
+wool
+ +## License + +License: LGPL3.0 + + + diff --git a/mods/cucina_vegana/aliases.lua b/mods/cucina_vegana/aliases.lua new file mode 100644 index 00000000..86b0138a --- /dev/null +++ b/mods/cucina_vegana/aliases.lua @@ -0,0 +1,2 @@ + +minetest.register_alias("cucina_vegana:corn_cob", "cucina_vegana:corn") diff --git a/mods/cucina_vegana/asparagus.lua b/mods/cucina_vegana/asparagus.lua new file mode 100644 index 00000000..7aeb297a --- /dev/null +++ b/mods/cucina_vegana/asparagus.lua @@ -0,0 +1,19 @@ +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:dirt_with_rainforest_litter"}, + spawn_by = {"default:tree", "default:aspen_tree", "default:jungletree"}, + num_spawn_by = 2, + sidelen = 32, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.asparagus_scale, + spread = {x = 10, y = 10, z = 10}, + seed = 8164, + octaves = 4, + persist = 0.6 + }, + y_min = 10, + y_max = 120, + decoration = "cucina_vegana:wild_asparagus", +}) + diff --git a/mods/cucina_vegana/asparagus_default.lua b/mods/cucina_vegana/asparagus_default.lua new file mode 100644 index 00000000..0bda98e5 --- /dev/null +++ b/mods/cucina_vegana/asparagus_default.lua @@ -0,0 +1,67 @@ +--[[ + ********************************************** + *** Asparagus default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Asparagus") +local pname = "asparagus" +local step = 6 + +-- asparagus +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.asparagus_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 3"}}, + {items = {"cucina_vegana:" .. pname .. ""}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + sunlight_propagates = true, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/asparagus_redo.lua b/mods/cucina_vegana/asparagus_redo.lua new file mode 100644 index 00000000..082fdc9f --- /dev/null +++ b/mods/cucina_vegana/asparagus_redo.lua @@ -0,0 +1,148 @@ +--[[ + ********************************************** + *** Asparagus redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Asparagus") +local pname = "asparagus" +local step = 6 +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + + -- asparagus + minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + drawtype = "signlike", + minlight = cucina_vegana.plant_settings.asparagus_light, + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, + }) + + -- asparagus definition + local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.asparagus_light, + drop = "", + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() + } + + -- stage 1 + minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + + -- stage 2 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} + minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + + -- stage 3 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} + minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + + -- stage 4 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } + } + minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + + -- stage 5 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 3} + } + } + minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + + -- stage 6 (final) + crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} + crop_def.groups.growing = 0 + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + } + } + minetest.register_node("cucina_vegana:" .. pname .. "_" .. step, table.copy(crop_def)) + + -- Register for Mapgen + minetest.register_node("cucina_vegana:wild_" .. pname .. "", { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname .. ""}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, + }) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/banana.lua b/mods/cucina_vegana/banana.lua new file mode 100644 index 00000000..56984ac1 --- /dev/null +++ b/mods/cucina_vegana/banana.lua @@ -0,0 +1,19 @@ +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_rainforest_litter", "default:dirt"}, + spawn_by = {"default:jungletree"}, + num_spawn_by = 2, + sidelen = 32, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.banana_scale, + spread = {x = 10, y = 10, z = 10}, + seed = 6349, + octaves = 4, + persist = 0.6 + }, + y_min = 1, + y_max = 120, + decoration = "cucina_vegana:wild_banana", +}) + diff --git a/mods/cucina_vegana/banana_default.lua b/mods/cucina_vegana/banana_default.lua new file mode 100644 index 00000000..d474c433 --- /dev/null +++ b/mods/cucina_vegana/banana_default.lua @@ -0,0 +1,73 @@ +--[[ + ********************************************** + *** Banana default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Banana") +local pname = "banana" +local step = 8 + +-- banana +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.banana_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, + visual_scale = 1, +}) + +minetest.override_item("cucina_vegana:" .. pname .. "_6", {visual_scale = 1.3}) +minetest.override_item("cucina_vegana:" .. pname .. "_7", {visual_scale = 1.6}) +minetest.override_item("cucina_vegana:" .. pname .. "_8", {visual_scale = 1.9}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 3"}}, + {items = {"cucina_vegana:" .. pname .. ""}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + sunlight_propagates = true, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, + visual_scale = 1.9, +}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/banana_redo.lua b/mods/cucina_vegana/banana_redo.lua new file mode 100644 index 00000000..5fa9e931 --- /dev/null +++ b/mods/cucina_vegana/banana_redo.lua @@ -0,0 +1,188 @@ +--[[ + ********************************************** + *** Banana redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Banana") +local pname = "banana" +local step = 8 +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + + -- banana + minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + drawtype = "signlike", + minlight = cucina_vegana.plant_settings.banana_light, + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, + }) + + -- banana definition + local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.banana_light, + drop = "", + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() + } + + -- stage 1 + minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + + -- stage 2 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} + minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + + -- stage 3 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} + minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + + -- stage 4 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + } + } + minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + + -- stage 5 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 4} + } + } + + minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + + -- stage 6 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_6.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + } + } + crop_def.visual_scale = 1.3 + + minetest.register_node("cucina_vegana:" .. pname .. "_6", table.copy(crop_def)) + +-- stage 7 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_7.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname}, rarity = 1}, + {items = {"cucina_vegana:" .. pname}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } + } + crop_def.visual_scale = 1.6 + + minetest.register_node("cucina_vegana:" .. pname .. "_7", table.copy(crop_def)) + +-- stage 8 (final) + crop_def.tiles = {"cucina_vegana_" .. pname .. "_8.png"} + crop_def.groups.growing = 0 + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname}, rarity = 1}, + {items = {"cucina_vegana:" .. pname}, rarity = 2}, + {items = {"cucina_vegana:" .. pname}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + } + } + crop_def.visual_scale = 1.9 + + minetest.register_node("cucina_vegana:" .. pname .. "_8", table.copy(crop_def)) + +--[[ +minetest.override_item("cucina_vegana:" .. pname .. "_6", {visual_scale = 1.3}) +minetest.override_item("cucina_vegana:" .. pname .. "_7", {visual_scale = 1.6}) +minetest.override_item("cucina_vegana:" .. pname .. "_8", {visual_scale = 1.9}) +]]-- + + -- Register for Mapgen + minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname .. ""}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, + visual_scale = 1.9, + }) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/carrot.lua b/mods/cucina_vegana/carrot.lua new file mode 100644 index 00000000..3afe9064 --- /dev/null +++ b/mods/cucina_vegana/carrot.lua @@ -0,0 +1,17 @@ + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt", "default:dirt_with_grass", "default:dry_dirt_with_dry_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.carrot_scale, + spread = {x = 70, y = 70, z = 70}, + seed = 16387, + octaves = 3, + persist = 0.6 + }, + y_min = 0, + y_max = 100, + decoration = "cucina_vegana:wild_carrot", +}) diff --git a/mods/cucina_vegana/carrot_default.lua b/mods/cucina_vegana/carrot_default.lua new file mode 100644 index 00000000..4700f83d --- /dev/null +++ b/mods/cucina_vegana/carrot_default.lua @@ -0,0 +1,69 @@ +--[[ + ********************************************** + *** Carrot default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Carrot") +local pname = "carrot" +local step = 6 + +-- carrot +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.carrot_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 4"}}, + {items = {"cucina_vegana:" .. pname .. " 3"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:seed_" .. pname, {seed_carrot = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/carrot_redo.lua b/mods/cucina_vegana/carrot_redo.lua new file mode 100644 index 00000000..90859e61 --- /dev/null +++ b/mods/cucina_vegana/carrot_redo.lua @@ -0,0 +1,145 @@ +--[[ + ********************************************** + *** Carrot redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Carrot") +local pname = "carrot" +local step = 6 + +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + +-- carrot +minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + minlight = cucina_vegana.plant_settings.carrot_light, + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, +}) + +-- carrot definition +local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.carrot_light, + drop = "", + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + +-- stage 6 (final) +crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_" .. step, table.copy(crop_def)) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname .. "", { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname .. " 2"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:" .. pname .. "_seed", {seed_carrot = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + + +end diff --git a/mods/cucina_vegana/changelog.txt b/mods/cucina_vegana/changelog.txt new file mode 100644 index 00000000..af9f19cf --- /dev/null +++ b/mods/cucina_vegana/changelog.txt @@ -0,0 +1,83 @@ +Rice-Starch added. +Support for Signs_bot added. +Support for aqua_farming added. +Fixed Replacement at Flour-Recipes. +hunger_ng support added. +Lines of Settings shortened. +Recipes for Blueberry-Jam extended. +Fixed Recipe for Molasses. +Added new Recipe for salad_hollandaise. +Fixed Replacement for Soy-Milk. +Better Support for mod Pizza. +Honey added to group:food_sugar. +Honey from Petz added to group:food_sugar. +Setting for germlaunch added. +Fixed settings for turning on or off the crops. + +*** Version 2.4 +Fix replacement #s in recipes #3 by fluxionary. +Ingame Translation-Support added. +Changed flax to flax_roasted, fixed Problem in default with flax. +Added recipe for edamame. +Changed recipes for oils with groups. +Changed the recipes for plates (prevent recipe-collisions). +Support for dreamcatcher (petz) added. +Ducky-Feather (petz) craftable. +Added more support for homedecor with recipes of blinds. +Fixed recipe-collision between buildingblocks:towel and cottages:rope. +Fixed typo with farming-default-mode. +default:blueberries added to group food_blueberry and food_blueberries. +bushes:blueberries added to group food_blueberries. +Function add_group is doing nothing if the item is unknown. + +*** Version 2.3 +Recipe for cotton added. +Mushroom_light added. +Spreading for Asparagus changed. +Support for Petz added. +Function group_add available to better support foreign nodes. +Replaced function minetest.override_item with cucina_vegana.add_group for better compatibility. +Settings now configurable about Main-Menu or minetest.conf. +Rice grows on default:dirt_with_grass too. + +*** Version 2.2: +Peanut added. +Peanutbutter and Peanut Oil added. +Fixed Recipes for Oil. + +*** Version 2.1: +Lower rarity of rice. +Flag dig_immediate added to all plants. +Flag attached_node to all plants. + +*** Version 2.0: +Support for Hunger and Diet added. +Blueberry jam added. Blueberrys accepted in bushes, farming and default (5.x). +Chiabatta bread added. + +*** Version 1.9: +Support for bonemeal from Tenplus added. +Changelog.txt added. + +*** Version 1.8: +Flex = Flax. +Settingstypes added. + +*** Version 1.7: +Flex added to cucina-vegana. +Use and eatable as oil. +Support for wool, ropes and more. + +*** Version 1.4: +Prepared for 5.x.x. +New Recipes for Pizza, and Fryer added. +Recipe for Imitation Poultry added. +Fixed support for farming_redo. Now the plants have different needs of light like it was without farming_redo. + +*** Version 1.2: +Support for farming_nextgen. +Translation added. +Better Translation, easier to add new plants and uses the interface from Farming-nextGen from Gundul (https://github.com/berengma/farming_nextgen). + +*** Version 1.0: +Support for farming_redo. diff --git a/mods/cucina_vegana/chili.lua b/mods/cucina_vegana/chili.lua new file mode 100644 index 00000000..cd0d340b --- /dev/null +++ b/mods/cucina_vegana/chili.lua @@ -0,0 +1,17 @@ + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_rainforest_litter", "default:dry_dirt_with_dry_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.chili_scale, + spread = {x = 70, y = 70, z = 70}, + seed = 8154711, + octaves = 3, + persist = 0.6 + }, + y_min = 0, + y_max = 150, + decoration = "cucina_vegana:wild_chili", +}) diff --git a/mods/cucina_vegana/chili_default.lua b/mods/cucina_vegana/chili_default.lua new file mode 100644 index 00000000..0acee802 --- /dev/null +++ b/mods/cucina_vegana/chili_default.lua @@ -0,0 +1,69 @@ +--[[ + ********************************************** + *** Chili default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Chili") +local pname = "chili" +local step = 7 + +-- chili +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.chili_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 4"}}, + {items = {"cucina_vegana:" .. pname .. " 2"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:seed_" .. pname, {seed_chili = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/chili_redo.lua b/mods/cucina_vegana/chili_redo.lua new file mode 100644 index 00000000..90b4e45c --- /dev/null +++ b/mods/cucina_vegana/chili_redo.lua @@ -0,0 +1,145 @@ +--[[ + ********************************************** + *** Chili redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Chili") +local pname = "chili" +local step = 7 +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + +-- chili +minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + minlight = cucina_vegana.plant_settings.chili_light, + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, +}) + +-- chili definition +local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.chili_light, + drop = "", + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_6.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_6", table.copy(crop_def)) + +-- stage 7 (final) +crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. " 3"}}, + {items = {"cucina_vegana:" .. pname}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed 2"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed 3"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed 4"}, rarity = 3}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_" .. step, table.copy(crop_def)) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname .. "", { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:" .. pname .. "_seed", {seed_chili = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.sign_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/chives.lua b/mods/cucina_vegana/chives.lua new file mode 100644 index 00000000..a35ed6c1 --- /dev/null +++ b/mods/cucina_vegana/chives.lua @@ -0,0 +1,19 @@ +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.chives_scale, + spread = {x = 70, y = 70, z = 70}, + seed = 39454, + octaves = 3, + persist = 0.6 + }, + spawn_by = {"default:water_source", "default:river_water_source"}, + height = 1, + y_min = 0, + y_max = 150, + decoration = "cucina_vegana:wild_chives", +}) + diff --git a/mods/cucina_vegana/chives_default.lua b/mods/cucina_vegana/chives_default.lua new file mode 100644 index 00000000..f37b4d4a --- /dev/null +++ b/mods/cucina_vegana/chives_default.lua @@ -0,0 +1,68 @@ +--[[ + ********************************************** + *** Chives default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Chives") +local pname = "chives" +local step = 5 + +-- chives +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.chives_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 3"}}, + {items = {"cucina_vegana:" .. pname}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + + +end diff --git a/mods/cucina_vegana/chives_redo.lua b/mods/cucina_vegana/chives_redo.lua new file mode 100644 index 00000000..f9bf0573 --- /dev/null +++ b/mods/cucina_vegana/chives_redo.lua @@ -0,0 +1,139 @@ +--[[ + ********************************************** + *** Chives redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Chives") +local pname = "chives" +local step = 5 + +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + +-- chives +minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + minlight = cucina_vegana.plant_settings.chives_light, + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, +}) + +-- chives definition +local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.chives_light, + drop = "", + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + +-- stage 5 (final) +crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname}, rarity = 1}, + {items = {"cucina_vegana:" .. pname}, rarity = 2}, + {items = {"cucina_vegana:" .. pname}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_" .. step, table.copy(crop_def)) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname .. "", { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname .. ""}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/coffee.lua b/mods/cucina_vegana/coffee.lua new file mode 100644 index 00000000..f2264a22 --- /dev/null +++ b/mods/cucina_vegana/coffee.lua @@ -0,0 +1,17 @@ + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_rainforest_litter", "default:dirt",}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.shrub_settings.coffee_scale, + spread = {x = 80, y = 80, z = 80}, + seed = 16384, + octaves = 4, + persist = 0.6 + }, + y_min = 0, + y_max = 400, + decoration = "cucina_vegana:coffee_top_6", +}) diff --git a/mods/cucina_vegana/coffee_def.lua b/mods/cucina_vegana/coffee_def.lua new file mode 100644 index 00000000..6bc6022d --- /dev/null +++ b/mods/cucina_vegana/coffee_def.lua @@ -0,0 +1,204 @@ +--[[ + ********************************************** + *** Coffee *** + ********************************************** +]]-- + +local cv = cucina_vegana +local mt = minetest + +-- Load support for intllib. +local S = cv.get_translator + +local dname = S("Coffee Plant") +local pname = "coffee" +local duration = cv.shrub_settings.coffee_duration +local bottom_steps = 6 +local top_steps = 6 +local maxlight = cv.shrub_settings.coffee_light +local percent = 3 + +-- Register for Mapgen +mt.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild" ) .. " " .. dname .. " " .. S("Stem"), + paramtype = "light", + walkable = true, + climbable = true, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_sapling 1"}}, + {items = {"cucina_vegana:" .. pname .. "_beans_raw 4"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_bottom_1.png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +mt.register_node("cucina_vegana:" .. pname .. "_leaves", { + description = dname .. " " .. S("Leaves"), + paramtype = "light", + walkable = true, + drawtype = "allfaces_optional", + waving = 1, + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_leaves.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_leaves.png", + wield_image = "cucina_vegana_" .. pname .. "_leaves.png", + groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1}, + sounds = default.node_sound_leaves_defaults(), + drop = { + max_items = 1, + items = { + { + -- player will get sapling with 1/3 chance + items = {"cucina_vegana:" .. pname .. "_sapling"}, + rarity = 3, + }, + { + -- player will get leaves only if he get no saplings, + -- this is because max_items is 1 + items = {"cucina_vegana:" .. pname .. "_leaves"}, + } + } + }, + after_place_node = function(...) + return default.after_place_leaves(...) + end, +}) + +mt.register_craftitem("cucina_vegana:" .. pname .. "_beans_raw", { + description = S("Coffee Beans raw"), + inventory_image = "cucina_vegana_" .. pname .. "_beans_raw.png", + groups = {food = 1, food_coffee = 1}, + on_use = mt.item_eat(3) + +}) + +mt.register_node("cucina_vegana:" .. pname .. "_sapling", { + description = dname .. " " .. S("Sapling"), + paramtype = "light", + walkable = true, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + climbable = true, + tiles = {"cucina_vegana_" .. pname .. "_sapling.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_sapling.png", + wield_image = "cucina_vegana_" .. pname .. "_sapling.png", + groups = { snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, + +}) + +cv.lib.register_bottom_abm("cucina_vegana:" .. pname .. "_sapling", "cucina_vegana:" .. pname .. "_bottom_1", duration, maxlight) + +for step = 1, bottom_steps do + mt.register_node("cucina_vegana:" .. pname .. "_bottom_" .. step, { + description = dname, + paramtype = "light", + walkable = true, + climbable = true, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_sapling 1"}}, + }, + }, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_bottom_" .. step .. ".png"}, + groups = { snappy = 3, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.4, -0.5, -0.4, 0.4, 0.5, 0.4}, -- side f + }, + }, + }) + + if (step < bottom_steps) then + cv.lib.register_bottom_abm("cucina_vegana:" .. pname .. "_bottom_" .. step, "cucina_vegana:" .. pname .. "_bottom_" .. step+1, duration, maxlight) + + end + +end -- for step + +mt.register_abm({ + nodenames = {"cucina_vegana:" .. pname .. "_bottom_" .. bottom_steps}, + interval = duration, + chance = percent, + catch_up = true, + action = function(pos, node, active_object_count, active_object_count_wider) + local nodepos = { x = pos.x, y = pos.y+1, z = pos.z} + if(cv.lib.check_light(nodepos, maxlight)) then + if(cv.lib.check_air(nodepos)) then + mt.set_node(nodepos, {name = "cucina_vegana:" .. pname .. "_top_1"}) + + end -- if(check_air) + + end -- if(cv.check_light + + end, -- function( + +}) -- minetest.register_abm({ + +for step = 1, top_steps do + mt.register_node("cucina_vegana:" .. pname .. "_top_" .. step, { + description = dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_leaves 3"}}, + {items = {"cucina_vegana:" .. pname .. "_beans_raw 2"}}, + {items = {"cucina_vegana:" .. pname .. "_beans_raw 5"}, rarity = top_steps-step}, + {items = {"cucina_vegana:" .. pname .. "_sapling 2"}, rarity = 4}, + }, + }, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_top_" .. step .. ".png"}, + groups = { snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1, tree = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.4, -0.5, -0.4, 0.4, 0.5, 0.4}, -- side f + }, + }, + }) + + if (step < top_steps) then + cv.lib.register_top_abm("cucina_vegana:" .. pname .. "_top_" .. step, "cucina_vegana:" .. pname .. "_top_" .. step+1, duration, maxlight) + + end + +end -- for step + +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng("cucina_vegana:" .. pname .. "_top_", top_steps) + +end -- if(cucina_vegana.farming_ng diff --git a/mods/cucina_vegana/corn.lua b/mods/cucina_vegana/corn.lua new file mode 100644 index 00000000..15896d5e --- /dev/null +++ b/mods/cucina_vegana/corn.lua @@ -0,0 +1,17 @@ +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dry_dirt_with_dry_grass", "default:dirt", "default:dirt_with_grass", "default:dirt_dry"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.corn_scale, + spread = {x = 20, y = 20, z = 20}, + seed = 6349, + octaves = 4, + persist = 0.6 + }, + y_min = -10, + y_max = 150, + decoration = "cucina_vegana:wild_corn", +}) + diff --git a/mods/cucina_vegana/corn_default.lua b/mods/cucina_vegana/corn_default.lua new file mode 100644 index 00000000..895b8683 --- /dev/null +++ b/mods/cucina_vegana/corn_default.lua @@ -0,0 +1,72 @@ +--[[ + ********************************************** + *** Corn default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Corn") +local pname = "corn" +local step = 7 + +-- corn +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.corn_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +minetest.override_item("cucina_vegana:" .. pname .. "_5", {visual_scale = 1.3}) +minetest.override_item("cucina_vegana:" .. pname .. "_6", {visual_scale = 1.6}) +minetest.override_item("cucina_vegana:" .. pname .. "_7", {visual_scale = 1.9}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 3"}}, + {items = {"cucina_vegana:" .. pname .. " 4"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + sunlight_propagates = true, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, + visual_scale = 1.9, +}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/corn_redo.lua b/mods/cucina_vegana/corn_redo.lua new file mode 100644 index 00000000..2bf46d16 --- /dev/null +++ b/mods/cucina_vegana/corn_redo.lua @@ -0,0 +1,167 @@ +--[[ + ********************************************** + *** Corn redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Corn") +local pname = "corn" +local step = 7 +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + + -- corn + minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + drawtype = "signlike", + minlight = cucina_vegana.plant_settings.corn_light, + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, + }) + + -- banana definition + local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.corn_light, + drop = "", + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() + } + + -- stage 1 + minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + + -- stage 2 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} + minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + + -- stage 3 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} + minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + + -- stage 4 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + } + } + minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + + -- stage 5 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + {items = {"cucina_vegana:" .. pname }, rarity = 4} + } + } + crop_def.visual_scale = 1.3 + + minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + + -- stage 6 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_6.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname }, rarity = 1}, + {items = {"cucina_vegana:" .. pname }, rarity = 2}, + {items = {"cucina_vegana:" .. pname }, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + } + } + crop_def.visual_scale = 1.5 + + minetest.register_node("cucina_vegana:" .. pname .. "_6", table.copy(crop_def)) + +-- stage 7 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_7.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. " 3"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. " 3"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } + } + crop_def.visual_scale = 1.9 + + minetest.register_node("cucina_vegana:" .. pname .. "_7", table.copy(crop_def)) + + + -- Register for Mapgen + minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname .. " 3"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, + visual_scale = 1.9, + }) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/cucumber.lua b/mods/cucina_vegana/cucumber.lua new file mode 100644 index 00000000..3c83d55f --- /dev/null +++ b/mods/cucina_vegana/cucumber.lua @@ -0,0 +1,19 @@ +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:dirt_with_rainforest_litter"}, + spawn_by = {"default:tree", "default:aspen_tree", "default:jungletree"}, + num_spawn_by = 2, + sidelen = 32, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.cucumber_scale, + spread = {x = 10, y = 10, z = 10}, + seed = 8164, + octaves = 5, + persist = 0.6 + }, + y_min = 10, + y_max = 150, + decoration = "cucina_vegana:wild_cucumber", +}) + diff --git a/mods/cucina_vegana/cucumber_default.lua b/mods/cucina_vegana/cucumber_default.lua new file mode 100644 index 00000000..6993675b --- /dev/null +++ b/mods/cucina_vegana/cucumber_default.lua @@ -0,0 +1,67 @@ +--[[ + ********************************************** + *** Cucumber default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Cucumber") +local pname = "cucumber" +local step = 7 + +-- cucumber +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.cucumber_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 3"}}, + {items = {"cucina_vegana:" .. pname .. " 2"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + sunlight_propagates = true, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/cucumber_redo.lua b/mods/cucina_vegana/cucumber_redo.lua new file mode 100644 index 00000000..06ab590c --- /dev/null +++ b/mods/cucina_vegana/cucumber_redo.lua @@ -0,0 +1,142 @@ +--[[ + ********************************************** + *** Cucumber redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Cucumber") +local pname = "cucumber" +local step = 7 +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + +-- cucumber +minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + minlight = cucina_vegana.plant_settings.cucumber_light, + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, +}) + +-- chives definition +local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.cucumber_light, + drop = "", + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_6.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_6", table.copy(crop_def)) + +-- stage 7 (final) +crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 2"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed 3"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_" .. step, table.copy(crop_def)) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname .. "", { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:" .. pname .. "_seed", {seed_cucumber = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.sign_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/depends.txt b/mods/cucina_vegana/depends.txt new file mode 100644 index 00000000..7213b39a --- /dev/null +++ b/mods/cucina_vegana/depends.txt @@ -0,0 +1,33 @@ +default +dye +farming +vessels +bbq? +bees? +bucket? +bushes? +bushes_classic? +diet? +farming_redo? +farming_nextgen? +fishing? +flowers? +intllib? +mobs? +technic? +pizza? +wine? +wool? +basic_materials? +hunger? +homedecor? +building_blocks? +ropes? +cottages? +moreblocks? +bonemeal? +petz? +lemontree? +clementinetree? +hunger_ng? +signs_bot? diff --git a/mods/cucina_vegana/flax.lua b/mods/cucina_vegana/flax.lua new file mode 100644 index 00000000..3b1db97d --- /dev/null +++ b/mods/cucina_vegana/flax.lua @@ -0,0 +1,17 @@ + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:dry_dirt_with_dry_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.flax_scale, + spread = {x = 70, y = 70, z = 70}, + seed = 6357, + octaves = 3, + persist = 0.6 + }, + y_min = 0, + y_max = 100, + decoration = "cucina_vegana:wild_flax", +}) diff --git a/mods/cucina_vegana/flax_default.lua b/mods/cucina_vegana/flax_default.lua new file mode 100644 index 00000000..ccf1b374 --- /dev/null +++ b/mods/cucina_vegana/flax_default.lua @@ -0,0 +1,69 @@ +--[[ + ********************************************** + *** Flax default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Flax") +local pname = "flax" +local step = 6 + +-- flex +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.flax_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 4"}}, + {items = {"cucina_vegana:" .. pname .. " 2"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:seed_" .. pname, {seed_flax = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/flax_redo.lua b/mods/cucina_vegana/flax_redo.lua new file mode 100644 index 00000000..5e1b13f9 --- /dev/null +++ b/mods/cucina_vegana/flax_redo.lua @@ -0,0 +1,143 @@ +--[[ + ********************************************** + *** Flax redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Flax") +local pname = "flax" +local step = 6 + +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + +-- chives +minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + minlight = cucina_vegana.plant_settings.flax_light, + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, +}) + +-- chives definition +local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.flax_light, + drop = "", + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + +-- stage 6 (final) +crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. " 3"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. " 4"}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed 3"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed 4"}, rarity = 3}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_" .. step, table.copy(crop_def)) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname .. "", { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname .. " 2"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:" .. pname .. "_seed", {seed_flax = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + + +end diff --git a/mods/cucina_vegana/fuels.lua b/mods/cucina_vegana/fuels.lua new file mode 100644 index 00000000..c951e718 --- /dev/null +++ b/mods/cucina_vegana/fuels.lua @@ -0,0 +1,122 @@ +-- ******************************************* +-- ***** Fuels ***** +-- ******************************************* + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:sunflower_seeds_oil", + burntime = 30, + replacements = {{ "cucina_vegana:sunflower_seeds_oil", "vessels:glass_bottle"}} +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:flax_seed_oil", + burntime = 30, + replacements = {{ "cucina_vegana:flax_seed_oil", "vessels:glass_bottle"}} +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:peanut_oil", + burntime = 35, + replacements = {{ "cucina_vegana:peanut_oil", "vessels:glass_bottle"}} +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:corn_oil", + burntime = 35, + replacements = {{ "cucina_vegana:corn_oil", "vessels:glass_bottle"}} +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:flax_seed", + burntime = 10 +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:flax_roasted", + burntime = 7 +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:sunflower_seeds", + burntime = 2 +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:peanut", + burntime = 5 +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:sunflower_seeds_roasted", + burntime = 2 +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:soy", + burntime = 1, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:parsley", + burntime = 1, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:lettuce", + burntime = 2, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:lettuce_oil", + burntime = 30, + replacements = {{ "cucina_vegana:lettuce_oil", "vessels:glass_bottle"}} +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:kohlrabi", + burntime = 3, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:kohlrabi_roasted", + burntime = 4 +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:chives", + burntime = 1, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:asparagus", + burntime = 3, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:rice", + burntime = 5, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "cucina_vegana:molasses", + burntime = 10, +}) diff --git a/mods/cucina_vegana/garlic.lua b/mods/cucina_vegana/garlic.lua new file mode 100644 index 00000000..fda91565 --- /dev/null +++ b/mods/cucina_vegana/garlic.lua @@ -0,0 +1,17 @@ + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:dirt"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.garlic_scale, + spread = {x = 70, y = 70, z = 70}, + seed = 2570, + octaves = 3, + persist = 0.6 + }, + y_min = 0, + y_max = 100, + decoration = "cucina_vegana:wild_garlic", +}) diff --git a/mods/cucina_vegana/garlic_default.lua b/mods/cucina_vegana/garlic_default.lua new file mode 100644 index 00000000..a90a870f --- /dev/null +++ b/mods/cucina_vegana/garlic_default.lua @@ -0,0 +1,69 @@ +--[[ + ********************************************** + *** Garlic default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Garlic") +local pname = "garlic" +local step = 6 + +-- garlic +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.garlic_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 4"}}, + {items = {"cucina_vegana:" .. pname .. " 2"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:seed_" .. pname, {seed_garlic = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/garlic_redo.lua b/mods/cucina_vegana/garlic_redo.lua new file mode 100644 index 00000000..0cbf23aa --- /dev/null +++ b/mods/cucina_vegana/garlic_redo.lua @@ -0,0 +1,141 @@ +--[[ + ********************************************** + *** Garlic redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Garlic") +local pname = "garlic" +local step = 6 + +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + +-- chives +minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + minlight = cucina_vegana.plant_settings.garlic_light, + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, +}) + +-- chives definition +local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.garlic_light, + drop = "", + selection_box = farming.select, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + +-- stage 6 (final) +crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. " 3"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. " 4"}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed 3"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed 4"}, rarity = 3}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_" .. step, table.copy(crop_def)) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname .. "", { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname .. " 2"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy=3, dig_immediate=1, flammable=2, plant=1, attached_node = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:" .. pname .. "_seed", {seed_garlic = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + + +end diff --git a/mods/cucina_vegana/i18n.py b/mods/cucina_vegana/i18n.py new file mode 100644 index 00000000..5e879378 --- /dev/null +++ b/mods/cucina_vegana/i18n.py @@ -0,0 +1,426 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# Script to generate the template file and update the translation files. +# Copy the script into the mod or modpack root folder and run it there. +# +# Copyright (C) 2019 Joachim Stolberg, 2020 FaceDeer, 2020 Louis Royer +# LGPLv2.1+ +# +# See https://github.com/minetest-tools/update_translations for +# potential future updates to this script. + +from __future__ import print_function +import os, fnmatch, re, shutil, errno +from sys import argv as _argv + +# Running params +params = {"recursive": False, + "help": False, + "mods": False, + "verbose": False, + "folders": [], + "no-old-file": False +} +# Available CLI options +options = {"recursive": ['--recursive', '-r'], + "help": ['--help', '-h'], + "mods": ['--installed-mods'], + "verbose": ['--verbose', '-v'], + "no-old-file": ['--no-old-file'] +} + +# Strings longer than this will have extra space added between +# them in the translation files to make it easier to distinguish their +# beginnings and endings at a glance +doublespace_threshold = 60 + +def set_params_folders(tab: list): + '''Initialize params["folders"] from CLI arguments.''' + # Discarding argument 0 (tool name) + for param in tab[1:]: + stop_param = False + for option in options: + if param in options[option]: + stop_param = True + break + if not stop_param: + params["folders"].append(os.path.abspath(param)) + +def set_params(tab: list): + '''Initialize params from CLI arguments.''' + for option in options: + for option_name in options[option]: + if option_name in tab: + params[option] = True + break + +def print_help(name): + '''Prints some help message.''' + print(f'''SYNOPSIS + {name} [OPTIONS] [PATHS...] +DESCRIPTION + {', '.join(options["help"])} + prints this help message + {', '.join(options["recursive"])} + run on all subfolders of paths given + {', '.join(options["mods"])} + run on locally installed modules + {', '.join(options["no-old-file"])} + do not create *.old files + {', '.join(options["verbose"])} + add output information +''') + + +def main(): + '''Main function''' + set_params(_argv) + set_params_folders(_argv) + if params["help"]: + print_help(_argv[0]) + elif params["recursive"] and params["mods"]: + print("Option --installed-mods is incompatible with --recursive") + else: + # Add recursivity message + print("Running ", end='') + if params["recursive"]: + print("recursively ", end='') + # Running + if params["mods"]: + print(f"on all locally installed modules in {os.path.abspath('~/.minetest/mods/')}") + run_all_subfolders("~/.minetest/mods") + elif len(params["folders"]) >= 2: + print("on folder list:", params["folders"]) + for f in params["folders"]: + if params["recursive"]: + run_all_subfolders(f) + else: + update_folder(f) + elif len(params["folders"]) == 1: + print("on folder", params["folders"][0]) + if params["recursive"]: + run_all_subfolders(params["folders"][0]) + else: + update_folder(params["folders"][0]) + else: + print("on folder", os.path.abspath("./")) + if params["recursive"]: + run_all_subfolders(os.path.abspath("./")) + else: + update_folder(os.path.abspath("./")) + +#group 2 will be the string, groups 1 and 3 will be the delimiters (" or ') +#See https://stackoverflow.com/questions/46967465/regex-match-text-in-either-single-or-double-quote +pattern_lua = re.compile(r'[\.=^\t,{\(\s]N?S\(\s*(["\'])((?:\\\1|(?:(?!\1)).)*)(\1)[\s,\)]', re.DOTALL) +pattern_lua_bracketed = re.compile(r'[\.=^\t,{\(\s]N?S\(\s*\[\[(.*?)\]\][\s,\)]', re.DOTALL) + +# Handles "concatenation" .. " of strings" +pattern_concat = re.compile(r'["\'][\s]*\.\.[\s]*["\']', re.DOTALL) + +pattern_tr = re.compile(r'(.+?[^@])=(.*)') +pattern_name = re.compile(r'^name[ ]*=[ ]*([^ \n]*)') +pattern_tr_filename = re.compile(r'\.tr$') +pattern_po_language_code = re.compile(r'(.*)\.po$') + +#attempt to read the mod's name from the mod.conf file. Returns None on failure +def get_modname(folder): + try: + with open(os.path.join(folder, "mod.conf"), "r", encoding='utf-8') as mod_conf: + for line in mod_conf: + match = pattern_name.match(line) + if match: + return match.group(1) + except FileNotFoundError: + pass + return None + +#If there are already .tr files in /locale, returns a list of their names +def get_existing_tr_files(folder): + out = [] + for root, dirs, files in os.walk(os.path.join(folder, 'locale/')): + for name in files: + if pattern_tr_filename.search(name): + out.append(name) + return out + +# A series of search and replaces that massage a .po file's contents into +# a .tr file's equivalent +def process_po_file(text): + # The first three items are for unused matches + text = re.sub(r'#~ msgid "', "", text) + text = re.sub(r'"\n#~ msgstr ""\n"', "=", text) + text = re.sub(r'"\n#~ msgstr "', "=", text) + # comment lines + text = re.sub(r'#.*\n', "", text) + # converting msg pairs into "=" pairs + text = re.sub(r'msgid "', "", text) + text = re.sub(r'"\nmsgstr ""\n"', "=", text) + text = re.sub(r'"\nmsgstr "', "=", text) + # various line breaks and escape codes + text = re.sub(r'"\n"', "", text) + text = re.sub(r'"\n', "\n", text) + text = re.sub(r'\\"', '"', text) + text = re.sub(r'\\n', '@n', text) + # remove header text + text = re.sub(r'=Project-Id-Version:.*\n', "", text) + # remove double-spaced lines + text = re.sub(r'\n\n', '\n', text) + return text + +# Go through existing .po files and, if a .tr file for that language +# *doesn't* exist, convert it and create it. +# The .tr file that results will subsequently be reprocessed so +# any "no longer used" strings will be preserved. +# Note that "fuzzy" tags will be lost in this process. +def process_po_files(folder, modname): + for root, dirs, files in os.walk(os.path.join(folder, 'locale/')): + for name in files: + code_match = pattern_po_language_code.match(name) + if code_match == None: + continue + language_code = code_match.group(1) + tr_name = modname + "." + language_code + ".tr" + tr_file = os.path.join(root, tr_name) + if os.path.exists(tr_file): + if params["verbose"]: + print(f"{tr_name} already exists, ignoring {name}") + continue + fname = os.path.join(root, name) + with open(fname, "r", encoding='utf-8') as po_file: + if params["verbose"]: + print(f"Importing translations from {name}") + text = process_po_file(po_file.read()) + with open(tr_file, "wt", encoding='utf-8') as tr_out: + tr_out.write(text) + +# from https://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python/600612#600612 +# Creates a directory if it doesn't exist, silently does +# nothing if it already exists +def mkdir_p(path): + try: + os.makedirs(path) + except OSError as exc: # Python >2.5 + if exc.errno == errno.EEXIST and os.path.isdir(path): + pass + else: raise + +# Converts the template dictionary to a text to be written as a file +# dKeyStrings is a dictionary of localized string to source file sets +# dOld is a dictionary of existing translations and comments from +# the previous version of this text +def strings_to_text(dkeyStrings, dOld, mod_name): + lOut = [f"# textdomain: {mod_name}\n"] + + dGroupedBySource = {} + + for key in dkeyStrings: + sourceList = list(dkeyStrings[key]) + sourceList.sort() + sourceString = "\n".join(sourceList) + listForSource = dGroupedBySource.get(sourceString, []) + listForSource.append(key) + dGroupedBySource[sourceString] = listForSource + + lSourceKeys = list(dGroupedBySource.keys()) + lSourceKeys.sort() + for source in lSourceKeys: + localizedStrings = dGroupedBySource[source] + localizedStrings.sort() + lOut.append("") + lOut.append(source) + lOut.append("") + for localizedString in localizedStrings: + val = dOld.get(localizedString, {}) + translation = val.get("translation", "") + comment = val.get("comment") + if len(localizedString) > doublespace_threshold and not lOut[-1] == "": + lOut.append("") + if comment != None: + lOut.append(comment) + lOut.append(f"{localizedString}={translation}") + if len(localizedString) > doublespace_threshold: + lOut.append("") + + + unusedExist = False + for key in dOld: + if key not in dkeyStrings: + val = dOld[key] + translation = val.get("translation") + comment = val.get("comment") + # only keep an unused translation if there was translated + # text or a comment associated with it + if translation != None and (translation != "" or comment): + if not unusedExist: + unusedExist = True + lOut.append("\n\n##### not used anymore #####\n") + if len(key) > doublespace_threshold and not lOut[-1] == "": + lOut.append("") + if comment != None: + lOut.append(comment) + lOut.append(f"{key}={translation}") + if len(key) > doublespace_threshold: + lOut.append("") + return "\n".join(lOut) + '\n' + +# Writes a template.txt file +# dkeyStrings is the dictionary returned by generate_template +def write_template(templ_file, dkeyStrings, mod_name): + # read existing template file to preserve comments + existing_template = import_tr_file(templ_file) + + text = strings_to_text(dkeyStrings, existing_template[0], mod_name) + mkdir_p(os.path.dirname(templ_file)) + with open(templ_file, "wt", encoding='utf-8') as template_file: + template_file.write(text) + + +# Gets all translatable strings from a lua file +def read_lua_file_strings(lua_file): + lOut = [] + with open(lua_file, encoding='utf-8') as text_file: + text = text_file.read() + #TODO remove comments here + + text = re.sub(pattern_concat, "", text) + + strings = [] + for s in pattern_lua.findall(text): + strings.append(s[1]) + for s in pattern_lua_bracketed.findall(text): + strings.append(s) + + for s in strings: + s = re.sub(r'"\.\.\s+"', "", s) + s = re.sub("@[^@=0-9]", "@@", s) + s = s.replace('\\"', '"') + s = s.replace("\\'", "'") + s = s.replace("\n", "@n") + s = s.replace("\\n", "@n") + s = s.replace("=", "@=") + lOut.append(s) + return lOut + +# Gets strings from an existing translation file +# returns both a dictionary of translations +# and the full original source text so that the new text +# can be compared to it for changes. +def import_tr_file(tr_file): + dOut = {} + text = None + if os.path.exists(tr_file): + with open(tr_file, "r", encoding='utf-8') as existing_file : + # save the full text to allow for comparison + # of the old version with the new output + text = existing_file.read() + existing_file.seek(0) + # a running record of the current comment block + # we're inside, to allow preceeding multi-line comments + # to be retained for a translation line + latest_comment_block = None + for line in existing_file.readlines(): + line = line.rstrip('\n') + if line[:3] == "###": + # Reset comment block if we hit a header + latest_comment_block = None + continue + if line[:1] == "#": + # Save the comment we're inside + if not latest_comment_block: + latest_comment_block = line + else: + latest_comment_block = latest_comment_block + "\n" + line + continue + match = pattern_tr.match(line) + if match: + # this line is a translated line + outval = {} + outval["translation"] = match.group(2) + if latest_comment_block: + # if there was a comment, record that. + outval["comment"] = latest_comment_block + latest_comment_block = None + dOut[match.group(1)] = outval + return (dOut, text) + +# Walks all lua files in the mod folder, collects translatable strings, +# and writes it to a template.txt file +# Returns a dictionary of localized strings to source file sets +# that can be used with the strings_to_text function. +def generate_template(folder, mod_name): + dOut = {} + for root, dirs, files in os.walk(folder): + for name in files: + if fnmatch.fnmatch(name, "*.lua"): + fname = os.path.join(root, name) + found = read_lua_file_strings(fname) + if params["verbose"]: + print(f"{fname}: {str(len(found))} translatable strings") + + for s in found: + sources = dOut.get(s, set()) + sources.add(f"### {os.path.basename(fname)} ###") + dOut[s] = sources + + if len(dOut) == 0: + return None + templ_file = os.path.join(folder, "locale/template.txt") + write_template(templ_file, dOut, mod_name) + return dOut + +# Updates an existing .tr file, copying the old one to a ".old" file +# if any changes have happened +# dNew is the data used to generate the template, it has all the +# currently-existing localized strings +def update_tr_file(dNew, mod_name, tr_file): + if params["verbose"]: + print(f"updating {tr_file}") + + tr_import = import_tr_file(tr_file) + dOld = tr_import[0] + textOld = tr_import[1] + + textNew = strings_to_text(dNew, dOld, mod_name) + + if textOld and textOld != textNew: + print(f"{tr_file} has changed.") + if not params["no-old-file"]: + shutil.copyfile(tr_file, f"{tr_file}.old") + + with open(tr_file, "w", encoding='utf-8') as new_tr_file: + new_tr_file.write(textNew) + +# Updates translation files for the mod in the given folder +def update_mod(folder): + modname = get_modname(folder) + if modname is not None: + process_po_files(folder, modname) + print(f"Updating translations for {modname}") + data = generate_template(folder, modname) + if data == None: + print(f"No translatable strings found in {modname}") + else: + for tr_file in get_existing_tr_files(folder): + update_tr_file(data, modname, os.path.join(folder, "locale/", tr_file)) + else: + print("Unable to find modname in folder " + folder) + +# Determines if the folder being pointed to is a mod or a mod pack +# and then runs update_mod accordingly +def update_folder(folder): + is_modpack = os.path.exists(os.path.join(folder, "modpack.txt")) or os.path.exists(os.path.join(folder, "modpack.conf")) + if is_modpack: + subfolders = [f.path for f in os.scandir(folder) if f.is_dir()] + for subfolder in subfolders: + update_mod(subfolder + "/") + else: + update_mod(folder) + print("Done.") + +def run_all_subfolders(folder): + for modfolder in [f.path for f in os.scandir(folder) if f.is_dir()]: + update_folder(modfolder + "/") + + +main() diff --git a/mods/cucina_vegana/init.lua b/mods/cucina_vegana/init.lua new file mode 100644 index 00000000..2fea23e4 --- /dev/null +++ b/mods/cucina_vegana/init.lua @@ -0,0 +1,160 @@ +--[[ + ********************************************** + *** Cucina Vegana *** + *** *** + *** Cucina Vegana is a Mod for Minetest *** + *** and supports farming or farming_redo *** + *** by TenPlus. *** + *** *** + *** License: LGPL 3.0 by A.C.M. *** + *** *** + ********************************************** +]]-- + +cucina_vegana = {} +cucina_vegana.lib = {} +cucina_vegana.version = "3.3" +cucina_vegana.farming_default = true +cucina_vegana.settings = {} +cucina_vegana.plant_settings = {} +cucina_vegana.shrub_settings = {} +cucina_vegana.plant_settings.bonemeal_list = {} +cucina_vegana.farming_ng = minetest.get_modpath("farming_nextgen") +cucina_vegana.signs_bot = minetest.get_modpath("signs_bot") +cucina_vegana.register_signs_bot = nil +cucina_vegana.plant_settings.germ_launch = 0 +cucina_vegana.modname = minetest.get_current_modname() + +local modpath = minetest.get_modpath(minetest.get_current_modname()) +local modname = cucina_vegana.modname + +local S + +if(minetest.get_modpath("intllib")) then + S = dofile(modpath .."/intllib.lua") + minetest.log("info","[MOD] " .. modname .. ": translating in intllib-mode.") + +elseif minetest.get_translator ~= nil then + S = minetest.get_translator("cucina_vegana") + minetest.log("info", "[MOD] " .. modname .. ": translating in minetest-mode.") + +else + S = function ( s ) return s end + +end -- if(minetest.get_modpath( + +cucina_vegana.get_translator = S + +dofile(modpath .. "/settings.lua") +dofile(modpath .. "/tools.lua") +dofile(modpath .. "/lib.lua") + +if(cucina_vegana.signs_bot) then + dofile(modpath .. "/register_signs_bot.lua") +end + +-- looking if farming_redo is really activ? ... \/('')\/ +if(farming.mod ~= nil and farming.mod == "redo") then + cucina_vegana.farming_default = false + minetest.log("info", "[MOD] " .. modname .. ": farming_redo mode activated.") + +else + minetest.log("info", "[MOD] " .. modname .. ": default farming mode activated.") + +end -- if(farming.mod + +cucina_vegana.plant_settings.bonemeal = false -- Support for bonemeal disabled +if(minetest.get_modpath("bonemeal")) or minetest.get_modpath("maidroid") then + cucina_vegana.plant_settings.bonemeal = true + +end -- if(minetest.get_modpath("bonemeal" + +local plants = { + + ["asparagus"] = cucina_vegana.plant_settings.asparagus, + ["chives"] = cucina_vegana.plant_settings.chives, + ["flax"] = cucina_vegana.plant_settings.flax, + ["kohlrabi"] = cucina_vegana.plant_settings.kohlrabi, + ["lettuce"] = cucina_vegana.plant_settings.lettuce, + ["parsley"] = cucina_vegana.plant_settings.parsley, + ["peanut"] = cucina_vegana.plant_settings.peanut, + ["rosemary"] = cucina_vegana.plant_settings.rosemary, + ["rice"] = cucina_vegana.plant_settings.rice, + ["soy"] = cucina_vegana.plant_settings.soy, + ["sunflower"] = cucina_vegana.plant_settings.sunflower, + ["banana"] = cucina_vegana.plant_settings.banana, + ["tomato"] = cucina_vegana.plant_settings.tomato, + ["potato"] = cucina_vegana.plant_settings.potato, + ["carrot"] = cucina_vegana.plant_settings.carrot, + ["garlic"] = cucina_vegana.plant_settings.garlic, + ["chili"] = cucina_vegana.plant_settings.chili, + ["onion"] = cucina_vegana.plant_settings.onion, + ["cucumber"] = cucina_vegana.plant_settings.cucumber, + ["strawberry"] = cucina_vegana.plant_settings.strawberry, + ["corn"] = cucina_vegana.plant_settings.corn + } + +for pname, value in pairs(plants) do + + if(value) then + local n_default = modname .. ":seed_" .. pname + local n_redo = modname .. ":" .. pname .. "_seed" + -- Load all flowers in default-mode + if (cucina_vegana.farming_default) then + dofile(modpath .. "/" .. pname .. "_default.lua") + dofile(modpath .. "/".. pname .. ".lua") + minetest.register_alias(n_redo, n_default) + + else + -- Load all flowers in redo-mode + dofile(modpath .. "/" .. pname .. "_redo.lua") + dofile(modpath .. "/".. pname .. ".lua") + minetest.register_alias(n_default, n_redo) + + end -- if(cucina_vegana...) + + end -- if(value) + + minetest.log("info", "[MOD] " .. modname .. " Module: " .. pname .. " loaded.") + +end -- for + +local shrubs = { + ["vine"] = cucina_vegana.shrub_settings.vine, + ["coffee"] = cucina_vegana.shrub_settings.coffee + } + +for sname, value in pairs(shrubs) do + if(value) then + dofile(modpath .. "/" .. sname .. "_def.lua") + dofile(modpath .. "/" .. sname .. ".lua") + minetest.log("info", "[MOD] " .. modname .. " Module: " .. sname .. " loaded.") + end -- if(value) + + +end -- for shrub, + +-- Insert Recipes +dofile(modpath .. "/overrides.lua") +dofile(modpath .. "/nodes.lua") +dofile(modpath .. "/items.lua") +dofile(modpath .. "/fuels.lua") +dofile(modpath .. "/recipes.lua") +dofile(modpath .. "/recipes_cook.lua") +dofile(modpath .. "/recipes_support.lua") +dofile(modpath .. "/recipes_5xx.lua") -- New recipes with MT 5.0 +dofile(modpath .. "/register_mods.lua") +dofile(modpath .. "/aliases.lua") + +if(minetest.get_modpath("bonemeal")) then + bonemeal:add_crop(cucina_vegana.plant_settings.bonemeal_list) + +end -- if(cucina_vegana.plant_settings.bonemeal + +if (cucina_vegana.farming_default) then + minetest.log("info", "[MOD] " .. modname .. " Version " .. cucina_vegana.version .. " in default-mode loaded.") + +else + minetest.log("info", "[MOD] " .. modname .. " Version " .. cucina_vegana.version .. " in redo-mode loaded.") + +end diff --git a/mods/cucina_vegana/intllib.lua b/mods/cucina_vegana/intllib.lua new file mode 100644 index 00000000..6669d720 --- /dev/null +++ b/mods/cucina_vegana/intllib.lua @@ -0,0 +1,45 @@ + +-- Fallback functions for when `intllib` is not installed. +-- Code released under Unlicense . + +-- Get the latest version of this file at: +-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua + +local function format(str, ...) + local args = { ... } + local function repl(escape, open, num, close) + if escape == "" then + local replacement = tostring(args[tonumber(num)]) + if open == "" then + replacement = replacement..close + end + return replacement + else + return "@"..open..num..close + end + end + return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) +end + +local gettext, ngettext +if minetest.get_modpath("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + gettext, ngettext = intllib.make_gettext_pair() + else + -- Old method using text files. + gettext = intllib.Getter() + end +end + +-- Fill in missing functions. + +gettext = gettext or function(msgid, ...) + return format(msgid, ...) +end + +ngettext = ngettext or function(msgid, msgid_plural, n, ...) + return format(n==1 and msgid or msgid_plural, ...) +end + +return gettext, ngettext diff --git a/mods/cucina_vegana/items.lua b/mods/cucina_vegana/items.lua new file mode 100644 index 00000000..8a84d37b --- /dev/null +++ b/mods/cucina_vegana/items.lua @@ -0,0 +1,367 @@ +-- ******************************************* +-- ***** Items ***** +-- ******************************************* + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +-- ******************************************* +-- ***** Supports ***** +-- ******************************************* + +minetest.register_craftitem("cucina_vegana:blueberry_puree", { + description = S("Blueberry puree"), + inventory_image = "cucina_vegana_blueberry_puree.png", + groups = {food = 1, food_blueberry = 1, food_berry = 1}, + on_use = minetest.item_eat(4) +}) + +minetest.register_craftitem("cucina_vegana:blueberry_pot", { + description = S("Blueberry pot"), + inventory_image = "cucina_vegana_blueberry_pot.png", + groups = {sud = 1}, +}) + +minetest.register_craftitem("cucina_vegana:blueberry_pot_cooked", { + description = S("Blueberry pot (cooked)"), + inventory_image = "cucina_vegana_blueberry_pot_cooked.png", + groups = {sud = 1}, +}) + +minetest.register_craftitem("cucina_vegana:ciabatta_dough", { + description = S("Ciabatta dough"), + inventory_image = "cucina_vegana_ciabatta_dough.png", + groups = {food = 1, bread_dough = 1}, +}) + +minetest.register_craftitem("cucina_vegana:dandelion_honey", { + description = S("Dandelion Honey"), + inventory_image = "cucina_vegana_dandelion_honey.png", + groups = {flammable = 1, food = 1, food_honey = 1, food_sugar = 1, eatable = 1}, + on_use = minetest.item_eat(3), +}) + +minetest.register_craftitem("cucina_vegana:dandelion_suds", { + description = S("Dandelion Suds"), + inventory_image = "cucina_vegana_dandelion_suds.png", + groups = {sud = 1,}, +}) + +minetest.register_craftitem("cucina_vegana:dandelion_suds_cooking", { + description = S("Dandelion Suds (cooking)"), + inventory_image = "cucina_vegana_dandelion_suds_cooking.png", + groups = {sud = 1,}, +}) + +minetest.register_craftitem("cucina_vegana:molasses", { + description = S("Molasses"), + inventory_image = "cucina_vegana_molasses.png", + groups = {flammable = 1, food = 1, food_sugar = 1}, +}) + +minetest.register_craftitem("cucina_vegana:pizza_dough", { + description = S("Pizzadough"), + inventory_image = "cucina_vegana_pizza_dough.png", + groups = {food = 1, pizza_dough = 1}, +}) + +minetest.register_craftitem("cucina_vegana:rice_flour", { + description = S("Rice Flour"), + groups = {food_vegan = 1, food_flour = 1}, + inventory_image = "cucina_vegana_rice_flour.png", +}) + +minetest.register_craftitem("cucina_vegana:rice_starch", { + description = S("Rice Starch"), + groups = {food_vegan = 1, food_starch = 1}, + inventory_image = "cucina_vegana_rice_starch.png", +}) + +minetest.register_craftitem("cucina_vegana:soy_milk", { + description = S("Soy Milk"), + inventory_image = "cucina_vegana_soy_milk.png", + groups = {flammable = 1, food = 1, food_milk = 1, eatable = 1, food_vegan = 1}, + on_use = minetest.item_eat(2, "vessels:drinking_glass"), +}) + +minetest.register_craftitem("cucina_vegana:sunflower_seeds_dough", { + description = S("Sunflower Seeds Dough"), + groups = {food = 1, food_vegan = 1, eatable = 1, bread_dough = 1}, + inventory_image = "cucina_vegana_sunflower_seeds_dough.png", + on_use = minetest.item_eat(2), +}) + +minetest.register_craftitem("cucina_vegana:sunflower_seeds_flour", { + description = S("Sunflower Seeds Flour"), + groups = {food_vegan = 1, food_flour = 1}, + inventory_image = "cucina_vegana_sunflower_seeds_flour.png", +}) + +minetest.register_craftitem("cucina_vegana:tofu", { + description = S("Tofu (raw)"), + inventory_image = "cucina_vegana_tofu.png", + groups = {flammable = 1, food = 1, eatable = 1, food_vegan = 1}, + on_use = minetest.item_eat(2), +}) + +-- ******************************************* +-- ***** Imitations ***** +-- ******************************************* + +minetest.register_craftitem("cucina_vegana:imitation_butter", { + description = S("Imitation Butter"), + groups = {food = 1, food_butter = 1, food_vegan = 1, eatable = 1}, + inventory_image = "cucina_vegana_imitation_butter.png", + on_use = minetest.item_eat(2), +}) + +minetest.register_craftitem("cucina_vegana:imitation_cheese", { + description = S("Imitation Cheese"), + groups = {food = 1, food_cheese = 1, food_vegan = 1, eatable = 1}, + inventory_image = "cucina_vegana_imitation_cheese.png", + on_use = minetest.item_eat(3), +}) + +minetest.register_craftitem("cucina_vegana:imitation_fish", { + description = S("Imitation Fish"), + groups = {food = 1, food_fish = 1, food_vegan = 1, eatable = 1}, + inventory_image = "cucina_vegana_imitation_fish.png", + on_use = minetest.item_eat(3), +}) + +minetest.register_craftitem("cucina_vegana:imitation_meat", { + description = S("Imitation Meat"), + groups = {food = 1, food_meat = 1, food_vegan = 1, eatable = 1, food_meat_raw = 1}, + inventory_image = "cucina_vegana_imitation_meat.png", + on_use = minetest.item_eat(3), +}) + +minetest.register_craftitem("cucina_vegana:imitation_poultry", { + description = S("Imitation poultry"), + groups = {food = 1, food_bird = 1, food_vegan = 1}, + inventory_image = "cucina_vegana_imitation_poultry.png", +}) + +-- ******************************************* +-- ***** Crops ***** +-- ******************************************* + +minetest.register_craftitem("cucina_vegana:asparagus", { + description = S("Asparagus"), + inventory_image = "cucina_vegana_asparagus.png", + groups = {flammable = 1, food = 1, eatable = 1, food_vegan = 1, food_asparagus = 1}, + on_use = minetest.item_eat(3), +}) + +minetest.register_craftitem("cucina_vegana:banana", { + description = S("Banana"), + inventory_image = "cucina_vegana_banana.png", + groups = {flammable = 1, food = 1, eatable = 1, food_vegan = 1, food_banana = 1}, + on_use = minetest.item_eat(4), +}) + +minetest.register_craftitem("cucina_vegana:chives", { + description = S("Chives"), + inventory_image = "cucina_vegana_chives.png", + groups = {flammable = 1, food = 1, eatable = 1, food_vegan = 1, food_chives = 1}, + on_use = minetest.item_eat(1), +}) + +minetest.register_craftitem("cucina_vegana:coffee_beans_raw", { + description = S("Coffee Beans raw"), + inventory_image = "cucina_vegana_coffee_beans_raw.png", + groups = {flammable = 1, food_coffee = 1}, +}) + +minetest.register_craftitem("cucina_vegana:coffee_beans_roasted", { + description = S("Coffee Beans"), + inventory_image = "cucina_vegana_coffee_beans_roasted.png", + groups = {flammable = 1, food = 1, eatable = 1, food_vegan = 1, food_coffee = 1}, + on_use = minetest.item_eat(.5), +}) + +minetest.register_craftitem("cucina_vegana:coffee_powder", { + description = S("Coffee Powder"), + inventory_image = "cucina_vegana_coffee_powder.png", + groups = {flammable = 1, food_coffee = 1}, +}) + +minetest.register_craftitem("cucina_vegana:flax", { + description = S("Flax (raw)"), + inventory_image = "cucina_vegana_flax_raw.png", + groups = {flammable = 1, string = 1}, +}) + +minetest.register_craftitem("cucina_vegana:flax_roasted", { + description = S("Flax"), + inventory_image = "cucina_vegana_flax.png", + groups = {flammable = 1, string = 1}, +}) + +minetest.register_craftitem("cucina_vegana:kohlrabi", { + description = S("Kohlrabi"), + inventory_image = "cucina_vegana_kohlrabi.png", + groups = {flammable = 1, food = 1, eatable = 1, food_vegan = 1, food_kohlrabi = 1}, + on_use = minetest.item_eat(3), +}) + +minetest.register_craftitem("cucina_vegana:lettuce", { + description = S("Lettuce"), + inventory_image = "cucina_vegana_lettuce.png", + groups = {flammable = 1, food = 1, eatable = 1, food_vegan = 1, food_lettuce = 1}, + on_use = minetest.item_eat(2), +}) + +minetest.register_craftitem("cucina_vegana:parsley", { + description = S("Parsley"), + inventory_image = "cucina_vegana_parsley.png", + groups = {flammable = 1, food = 1, eatable = 1, food_vegan = 1, food_parsley = 1}, + on_use = minetest.item_eat(1), +}) + +minetest.register_craftitem("cucina_vegana:peanut", { + description = S("Peanut"), + inventory_image = "cucina_vegana_peanut.png", + groups = {flammable = 1, food = 1, eatable = 1, food_vegan = 1, food_peanut = 1}, + on_use = minetest.item_eat(4), +}) + +minetest.register_craftitem("cucina_vegana:rice", { + description = S("Rice"), + inventory_image = "cucina_vegana_rice.png", + groups = {food = 1, flammable = 4, food_rice = 1}, +}) + +minetest.register_craftitem("cucina_vegana:rosemary", { + description = S("Rosemary Twig"), + inventory_image = "cucina_vegana_rosemary.png", + groups = {flammable = 1, food = 1, eatable = 1, food_rosemary = 1}, + on_use = minetest.item_eat(1), +}) + +minetest.register_craftitem("cucina_vegana:soy", { + description = S("Soy Bean"), + inventory_image = "cucina_vegana_soy.png", + groups = {flammable = 4, food_soy = 1}, +}) + +minetest.register_craftitem("cucina_vegana:sunflower", { + description = S("Sunflower"), + inventory_image = "cucina_vegana_sunflower.png", + groups = {flammable = 4}, +}) + +minetest.register_craftitem("cucina_vegana:sunflower_seeds", { + description = S("Sunflower Seeds"), + groups = {seed = 1, food = 1, eatable = 1, food_sunflower = 1}, + inventory_image = "cucina_vegana_sunflower_seeds.png", + on_use = minetest.item_eat(1), +}) + +minetest.register_craftitem("cucina_vegana:tomato", { + description = S("Tomato"), + inventory_image = "cucina_vegana_tomato.png", + groups = {flammable = 1, food = 1, eatable = 1, food_vegan = 1, food_tomato = 1}, + on_use = minetest.item_eat(4), +}) + +minetest.register_craftitem("cucina_vegana:potato", { + description = S("Potato"), + inventory_image = "cucina_vegana_potato.png", + groups = {flammable = 1, food = 1, eatable = 1, food_vegan = 1, food_potato = 1}, + on_use = minetest.item_eat(5), +}) + +minetest.register_craftitem("cucina_vegana:carrot", { + description = S("Carrot"), + inventory_image = "cucina_vegana_carrot.png", + groups = {flammable = 1, food = 1, eatable = 1, food_vegan = 1, food_carrot = 1}, + on_use = minetest.item_eat(3), +}) + +minetest.register_craftitem("cucina_vegana:garlic", { + description = S("Garlic"), + inventory_image = "cucina_vegana_garlic.png", + groups = {flammable = 1, food = 1, food_vegan = 1, food_garlic = 1}, +}) + +minetest.register_craftitem("cucina_vegana:chili", { + description = S("Chili"), + inventory_image = "cucina_vegana_chili.png", + groups = {flammable = 1, food = 1, food_vegan = 1, food_chili = 1}, + on_use = minetest.item_eat(1), +}) + +minetest.register_craftitem("cucina_vegana:onion", { + description = S("Onion"), + inventory_image = "cucina_vegana_onion.png", + groups = {flammable = 1, food = 1, food_vegan = 1, food_onion = 1}, + on_use = minetest.item_eat(3), +}) + +minetest.register_craftitem("cucina_vegana:cucumber", { + description = S("Cucumber"), + inventory_image = "cucina_vegana_cucumber.png", + groups = {flammable = 1, food = 1, food_vegan = 1, food_onion = 1}, + on_use = minetest.item_eat(3), +}) + +minetest.register_craftitem("cucina_vegana:strawberry", { + description = S("Strawberry"), + inventory_image = "cucina_vegana_strawberry.png", + groups = {flammable = 1, food = 1, eatable = 1, food_vegan = 1, food_strawberry = 1}, + on_use = minetest.item_eat(2), +}) + +minetest.register_craftitem("cucina_vegana:corn", { + description = S("Corncob"), + inventory_image = "cucina_vegana_corn.png", + groups = {flammable = 1, food = 1, eatable = 1, food_vegan = 1, food_corn = 1}, + on_use = minetest.item_eat(2), +}) + +-- ******************************************* +-- ***** Food ***** +-- ******************************************* + +minetest.register_craftitem("cucina_vegana:kohlrabi_roasted", { + description = S("Roasted Kohlrabi"), + groups = {food = 1, eatable = 1}, + inventory_image = "cucina_vegana_kohlrabi_roasted.png", + on_use = minetest.item_eat(4), +}) + +minetest.register_craftitem("cucina_vegana:sunflower_seeds_roasted", { + description = S("Roasted Sunflower Seeds"), + groups = {food = 1, eatable = 1}, + inventory_image = "cucina_vegana_sunflower_seeds_roasted.png", + on_use = minetest.item_eat(2), +}) + +minetest.register_craftitem("cucina_vegana:sunflower_seeds_bread", { + description = S("Sunflower Seeds Bread"), + groups = {food = 1, food_bread = 1, eatable = 1}, + inventory_image = "cucina_vegana_sunflower_seeds_bread.png", + on_use = minetest.item_eat(4), +}) + +minetest.register_craftitem("cucina_vegana:tofu_cooked", { + description = S("Tofu"), + inventory_image = "cucina_vegana_tofu_cooked.png", + groups = {flammable = 1, food = 1, eatable = 1, food_vegan = 1, food_tofu = 1}, + on_use = minetest.item_eat(3), +}) + +minetest.register_craftitem("cucina_vegana:vegan_sushi", { + description = S("Vegan Sushi"), + groups = {food = 1, food_vegan = 1, eatable = 1}, + inventory_image = "cucina_vegana_vegan_sushi.png", + on_use = minetest.item_eat(4), +}) + +minetest.register_craftitem("cucina_vegana:vegan_strawberry_milk", { + description = S("Vegan Strawberry Milk"), + groups = {food = 1, food_vegan = 1, eatable = 1}, + inventory_image = "cucina_vegana_vegan_strawberry_milk.png", + on_use = minetest.item_eat(3, "vessels:drinking_glass"), +}) diff --git a/mods/cucina_vegana/kohlrabi.lua b/mods/cucina_vegana/kohlrabi.lua new file mode 100644 index 00000000..41601017 --- /dev/null +++ b/mods/cucina_vegana/kohlrabi.lua @@ -0,0 +1,16 @@ +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:dirt_with_dry_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.kohlrabi_scale, + spread = {x = 100, y = 100, z = 100}, + seed = 2197, + octaves = 4, + persist = 0.6 + }, + y_min = 30, + y_max = 120, + decoration = "cucina_vegana:wild_kohlrabi", +}) diff --git a/mods/cucina_vegana/kohlrabi_default.lua b/mods/cucina_vegana/kohlrabi_default.lua new file mode 100644 index 00000000..255e35a9 --- /dev/null +++ b/mods/cucina_vegana/kohlrabi_default.lua @@ -0,0 +1,71 @@ +--[[ + ********************************************** + *** Kohlrabi default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Kohlrabi") +local pname = "kohlrabi" +local step = 6 + +-- kohlrabi +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.kohlrabi_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 3"}}, + {items = {"cucina_vegana:" .. pname}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + sunlight_propagates = true, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +minetest.register_alias("kohlrabi:kohlrabi", "cucina_vegana:" .. pname) +minetest.register_alias("kohlrabi:seed", "cucina_vegana:" .. pname .. "_seed") +minetest.register_alias("kohlrabi:wild_kohlrabi", "cucina_vegana:wild_" .. pname) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/kohlrabi_redo.lua b/mods/cucina_vegana/kohlrabi_redo.lua new file mode 100644 index 00000000..f70456fb --- /dev/null +++ b/mods/cucina_vegana/kohlrabi_redo.lua @@ -0,0 +1,148 @@ +--[[ + ********************************************** + *** Kohlrabi redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Kohlrabi") +local pname = "kohlrabi" +local step = 6 +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + + -- kohlrabi + minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + drawtype = "signlike", + minlight = cucina_vegana.plant_settings.kohlrabi_light, + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, + }) + + -- kohlrabi definition + local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + drop = "", + minlight = cucina_vegana.plant_settings.kohlrabi_light, + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() + } + + -- stage 1 + minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + + -- stage 2 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} + minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + + -- stage 3 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} + minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + + -- stage 4 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } + } + minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + + -- stage 5 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 3} + } + } + minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + + -- stage 6 (final) + crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} + crop_def.groups.growing = 0 + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + } + } + minetest.register_node("cucina_vegana:" .. pname .. "_" .. step, table.copy(crop_def)) + + -- Register for Mapgen + minetest.register_node("cucina_vegana:wild_" .. pname .. "", { + description = S("Wild ") .. dname .. "", + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname .. ""}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_5.png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, + }) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/lettuce.lua b/mods/cucina_vegana/lettuce.lua new file mode 100644 index 00000000..8bf9f524 --- /dev/null +++ b/mods/cucina_vegana/lettuce.lua @@ -0,0 +1,17 @@ + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:dirt_with_dry_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.lettuce_scale, + spread = {x = 10, y = 10, z = 10}, + seed = 40673, + octaves = 3, + persist = 0.6 + }, + y_min = 0, + y_max = 150, + decoration = "cucina_vegana:wild_lettuce", +}) diff --git a/mods/cucina_vegana/lettuce_default.lua b/mods/cucina_vegana/lettuce_default.lua new file mode 100644 index 00000000..2c0de9ec --- /dev/null +++ b/mods/cucina_vegana/lettuce_default.lua @@ -0,0 +1,74 @@ +--[[ + ********************************************** + *** Lettuce default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Lettuce") +local pname = "lettuce" +local step = 5 + +-- lettuce +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.lettuce_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " ..dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 3"}}, + {items = {"cucina_vegana:" .. pname}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_5.png"}, + sunlight_propagates = true, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:seed_" .. pname, {seed_lettuce = 1}) + +-- Register Recipe for Oil +minetest.register_alias("lettuce:lettuce", "cucina_vegana:" .. pname) +minetest.register_alias("lettuce:seed", "cucina_vegana:" .. pname .. "_seed") +minetest.register_alias("lettuce:wild_lettuce", "cucina_vegana:wild_" .. pname) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/lettuce_redo.lua b/mods/cucina_vegana/lettuce_redo.lua new file mode 100644 index 00000000..e613d43d --- /dev/null +++ b/mods/cucina_vegana/lettuce_redo.lua @@ -0,0 +1,139 @@ +--[[ + ********************************************** + *** Lettuce redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Lettuce") +local pname = "lettuce" +local step = 5 +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + +-- lettuce +minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + drawtype = "signlike", + minlight = cucina_vegana.plant_settings.lettuce_light, + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, +}) + +-- lettuce definition +local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.letttuce_light, + drop = "", + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + +-- stage 5 (final) +crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_" .. step, table.copy(crop_def)) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname .. "", { + description = S("Wild ") .. dname .. "", + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname .. ""}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:" .. pname .. "_seed", {seed_lettuce = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/lib.lua b/mods/cucina_vegana/lib.lua new file mode 100644 index 00000000..827dd205 --- /dev/null +++ b/mods/cucina_vegana/lib.lua @@ -0,0 +1,127 @@ +--[[ + ********************************************** + *** cucina_vegana *** + *** lib.lua *** + ********************************************** +]]-- + +local cv = cucina_vegana +local mt = minetest +local S = cv.get_translator +math.randomseed(os.time()) + +function cv.lib.register_bottom_abm(node, nextnode, duration, light) + local percent = 1 + + if(mt.registered_nodes[node]) then + mt.register_abm({ + nodenames = {node}, + interval = duration, + chance = percent, + catch_up = true, + action = function(pos, node, active_object_count, active_object_count_wider) + local nodepos = pos + if(cv.lib.check_soil(nodepos)) then + if(cv.lib.check_light(nodepos, light)) then + mt.set_node(nodepos, {name = nextnode}) + + end -- if(cv.check_light + + end -- if(cv.lib.check_soil) + + end, -- function( + + }) -- minetest.register_abm({ + + end -- if(nodename ~= nil + +end + +function cv.lib.register_top_abm(node, nextnode, duration, light) + local percent = 1 + + if(mt.registered_nodes[node]) then + mt.register_abm({ + nodenames = {node}, + interval = duration, + chance = percent, + catch_up = true, + action = function(pos, node, active_object_count, active_object_count_wider) + local nodepos = pos + if(cv.lib.check_light(nodepos, light)) then + mt.set_node(nodepos, {name = nextnode}) + + end -- if(cv.check_light + + end, -- function( + + }) -- minetest.register_abm({ + + end -- if(nodename ~= nil + +end + +function cv.lib.check_light(pos, level) + local node = mt.get_node_or_nil(pos) + + if(node) then + local light = mt.get_node_light(pos) or 0 + if(light >= level) then return true end + + end -- if(minetest.get_node_or_nil( + + return false + +end -- function aqua_farming.check_light + +function cv.lib.check_soil(pos) + local below = {x = pos.x, y = pos.y - 1, z = pos.z} + local soil = mt.get_node_or_nil(below) + + if(soil and mt.get_item_group(soil, "group:soil")) then + return true + + end -- if(minetest.get_node_or_nil( + + return false + +end -- cv.lib.check_soil + +function cv.lib.check_air(pos) + local air = mt.get_node_or_nil(pos) + if (air) and (string.match(air.name,"air")) then + return true + + end + + return false + +end -- cv.lib.check_air + +function cv.lib.coffee_effect(playerobject) + if(not playerobject) then return end + + local playername = playerobject:get_player_name() + local seconds = cv.settings.coffee_effect_duration + local highspeed = cv.settings.coffee_effect_speed + local normalspeed = 1 + + playerobject:set_physics_override({speed = highspeed}) + minetest.chat_send_player(playername, S("Coffeespeed. @1 Seconds left.", seconds)) + + minetest.after(seconds/2, function() + local playerobject = minetest.get_player_by_name(playername) + if(not playerobject) then return end + + minetest.chat_send_player(playername,S("@1 Seconds left.", seconds/2)) + end, playername) + + minetest.after(seconds, function() + local playerobject = minetest.get_player_by_name(playername) + if(not playerobject) then return end + + minetest.chat_send_player(playername,S("You move normal again.")) + playerobject:set_physics_override({speed = normalspeed}) + end, playername) + +end diff --git a/mods/cucina_vegana/locale/cucina_vegana.de.tr b/mods/cucina_vegana/locale/cucina_vegana.de.tr new file mode 100644 index 00000000..c9f2c736 --- /dev/null +++ b/mods/cucina_vegana/locale/cucina_vegana.de.tr @@ -0,0 +1,330 @@ +# textdomain: cucina_vegana + + +### asparagus_default.lua ### +### asparagus_redo.lua ### +### banana_default.lua ### +### banana_redo.lua ### +### carrot_default.lua ### +### carrot_redo.lua ### +### chili_default.lua ### +### chili_redo.lua ### +### chives_default.lua ### +### chives_redo.lua ### +### corn_default.lua ### +### corn_redo.lua ### +### cucumber_default.lua ### +### cucumber_redo.lua ### +### flax_default.lua ### +### flax_redo.lua ### +### garlic_default.lua ### +### garlic_redo.lua ### +### kohlrabi_default.lua ### +### kohlrabi_redo.lua ### +### lettuce_default.lua ### +### lettuce_redo.lua ### +### onion_default.lua ### +### onion_redo.lua ### +### parsley_default.lua ### +### parsley_redo.lua ### +### peanut_default.lua ### +### peanut_redo.lua ### +### potato_default.lua ### +### potato_redo.lua ### +### rice_default.lua ### +### rice_redo.lua ### +### rosemary_default.lua ### +### rosemary_redo.lua ### +### soy_default.lua ### +### soy_redo.lua ### +### strawberry_default.lua ### +### strawberry_redo.lua ### +### sunflower_default.lua ### +### sunflower_redo.lua ### +### tomato_default.lua ### +### tomato_redo.lua ### + +Seed=Samen + +### asparagus_default.lua ### +### asparagus_redo.lua ### +### items.lua ### + +# textdomain: cucina_vegana +Asparagus=Spargel + +### asparagus_default.lua ### +### banana_default.lua ### +### carrot_default.lua ### +### chili_default.lua ### +### chives_default.lua ### +### coffee_def.lua ### +### corn_default.lua ### +### cucumber_default.lua ### +### flax_default.lua ### +### garlic_default.lua ### +### kohlrabi_default.lua ### +### lettuce_default.lua ### +### onion_default.lua ### +### parsley_default.lua ### +### peanut_default.lua ### +### potato_default.lua ### +### rice_default.lua ### +### rosemary_default.lua ### +### soy_default.lua ### +### strawberry_default.lua ### +### sunflower_default.lua ### +### tomato_default.lua ### +### vine_def.lua ### + +Wild=Wilde(r) + +### asparagus_redo.lua ### +### banana_redo.lua ### +### carrot_redo.lua ### +### chili_redo.lua ### +### chives_redo.lua ### +### corn_redo.lua ### +### cucumber_redo.lua ### +### flax_redo.lua ### +### garlic_redo.lua ### +### kohlrabi_redo.lua ### +### lettuce_redo.lua ### +### onion_redo.lua ### +### parsley_redo.lua ### +### peanut_redo.lua ### +### potato_redo.lua ### +### rice_redo.lua ### +### rosemary_redo.lua ### +### soy_redo.lua ### +### strawberry_redo.lua ### +### sunflower_redo.lua ### +### tomato_redo.lua ### + +Wild =Wilde(r) + +### banana_default.lua ### +### banana_redo.lua ### +### items.lua ### + +Banana=Banane + +### carrot_default.lua ### +### carrot_redo.lua ### +### items.lua ### + +Carrot=Karotte + +### chili_default.lua ### +### chili_redo.lua ### +### items.lua ### + +Chili=Chili + +### chives_default.lua ### +### chives_redo.lua ### +### items.lua ### + +Chives=Schnittlauch + +### coffee_def.lua ### + +Coffee Plant=Kaffepflanze + +### coffee_def.lua ### +### items.lua ### + +Coffee Beans raw=Rohe Kaffeebohnen + +### coffee_def.lua ### +### vine_def.lua ### + +Leaves=Blätter +Sapling=Setzling +Stem=Stamm + +### corn_default.lua ### +### corn_redo.lua ### + +Corn=Mais + +### cucumber_default.lua ### +### cucumber_redo.lua ### +### items.lua ### + +Cucumber=Gurke + +### flax_default.lua ### +### flax_redo.lua ### +### items.lua ### + +Flax=Flachs + +### garlic_default.lua ### +### garlic_redo.lua ### +### items.lua ### + +Garlic=Knoblauch + +### items.lua ### + +Blueberry pot=Topf Blaubeermus +Blueberry pot (cooked)=Topf Blaubeermus (gekocht) +Blueberry puree=Blaubeermus +Ciabatta dough=Ciabatta Teig +Coffee Beans=Kafeebohnen +Coffee Powder=Kaffeepulver +Corncob=Maiskolben +Dandelion Honey=Löwenzahn Honig +Dandelion Suds=Löwenzahn Lauge +Dandelion Suds (cooking)=Löwenzahn Lauge (kochend) +Flax (raw)=Flachs (roh) +Imitation Butter=Analog Butter +Imitation Cheese=Analog Käse +Imitation Fish=Analog Fisch +Imitation Meat=Analog Fleisch +Imitation poultry=Analog Geflügel +Molasses=Melasse +Pizzadough=Pizzateig +Rice Flour=Reismehl +Rice Starch=Reisstärke +Roasted Kohlrabi=Gerösteter Kohlrabi +Roasted Sunflower Seeds=Geröstete Sonnenblumenkerne +Rosemary Twig=Rosemarien Zweig +Soy Bean=Sojabohnen +Soy Milk=Soja Milch +Sunflower Seeds=Sonnenblumenkerne +Sunflower Seeds Bread=Sonnenblumenkernbrot +Sunflower Seeds Dough=Sonnenblumenkern Teig +Sunflower Seeds Flour=Sonnenblumenkern Mehl +Tofu=Tofu +Tofu (raw)=Tofu (roh) +Vegan Strawberry Milk=Vegane Erdbeermilch +Vegan Sushi=Veganes Sushi + +### items.lua ### +### kohlrabi_default.lua ### +### kohlrabi_redo.lua ### + +Kohlrabi=Kohlrabi + +### items.lua ### +### lettuce_default.lua ### +### lettuce_redo.lua ### + +Lettuce=Salat + +### items.lua ### +### onion_default.lua ### +### onion_redo.lua ### + +Onion=Zwiebel + +### items.lua ### +### parsley_default.lua ### +### parsley_redo.lua ### + +Parsley=Petersilie + +### items.lua ### +### peanut_default.lua ### +### peanut_redo.lua ### + +Peanut=Erdnuss + +### items.lua ### +### potato_default.lua ### +### potato_redo.lua ### + +Potato=Kartoffel + +### items.lua ### +### rice_default.lua ### +### rice_redo.lua ### + +Rice=Reis + +### items.lua ### +### strawberry_default.lua ### +### strawberry_redo.lua ### + +Strawberry=Erdbeere + +### items.lua ### +### sunflower_default.lua ### +### sunflower_redo.lua ### + +Sunflower=Sonnenblume + +### items.lua ### +### tomato_default.lua ### +### tomato_redo.lua ### + +Tomato=Tomate + +### lib.lua ### + +@1 Seconds left.=Noch @1 Sekunden. +Coffeespeed. @1 Seconds left.=Kaffeegeschwindigkeit. Noch @1 Sekunden. +You move normal again.=Du bewegst dich wieder normal. + +### nodes.lua ### + +Asparagus Hollandaise=Spargel Hollandaise +Asparagus Hollandaise (raw)=Spargel Hollandaise +Asparagus Soup=Spargel Suppe +Asparagus Soup (raw)=Spargelsuppe (roh) +Asparagus on Rice=Spargel mit Reis +Asparagus on Rice (raw)=Spargel mit Reis (roh) +Blueberry Jam=Blaubeer Marmelade +Bottle of Corn Oil=Maiskeimöl +Bottle of Flaxseed Oil=Flasche Leinsamenöl +Bottle of Peanut Oil=Flasche Erdnussöl +Bottle of Sunflower Seeds Oil=Flasche Sonnenblumenkernöl +Bowl of Rice=Schüssel Reis +Bowl of Rice (raw)=Schüssel Reis (roh) +Ciabatta Bread=Ciabatta Brot +Cucumber in Glass=Gurken im Glas +Cup of Coffee cold=Tasse Kaffee kalt +Cup of Coffee hot=Tasse Kaffee heiß +Edamame=Edamame +Edamame (raw)=Edamame (roh) +Fish on Parsley and Rosemary=Fisch mit Petersilie und Rosemarien +Fish on Parsley and Rosemary (raw)=Fisch mit Petersilie und Rosemarien (roh) +Fryer=Brathuhn +Fryer (raw)=Brathuhn (roh) +Glass Bowl=Glasschüssel +Glass Salad Bowl=Schüssel Salat +Kohlrabi Soup=Kohlrabi Suppe +Kohlrabi Soup (raw)=Kohlrabi Suppe (roh) +Mushroomlight Glass=Leuchtendes Pilzglas +Peanut Butter=Erdnussbutter +Pizza Funghi=Pizza Funghi +Pizza Funghi (raw)=Pizza Funghi (roh) +Pizza Vegana=Pizza Vegana +Pizza Vegana (raw)=Pizza Vegana (roh) +Plate=Teller +Popcorn=Popcorn +Salad Bowl Hollandaise=Schüssel Salat Hollandaise +Salad Oil=Salatöl +Sauce Hollandaise=Sauce Hollandaise +Sea Salad Bowl=Schüssel Seesalat +Soy Soup=Soja Suppe +Soy Soup (raw)=Soja Suppe (roh) +Tofu on Chives and Rosemary=Tofu mit Schnittlauch und Rosemarien +Tofu on Chives and Rosemary (raw)=Tofu mit Schnittlauch und Rosemarien (roh) + +### rosemary_default.lua ### +### rosemary_redo.lua ### + +Rosemary=Rosemarien + +### soy_default.lua ### +### soy_redo.lua ### + +Soy=Soja + +### vine_def.lua ### + +Grape=Weintraube +Vine=Wein diff --git a/mods/cucina_vegana/locale/cucina_vegana.tr b/mods/cucina_vegana/locale/cucina_vegana.tr new file mode 100644 index 00000000..b23fd21b --- /dev/null +++ b/mods/cucina_vegana/locale/cucina_vegana.tr @@ -0,0 +1,330 @@ +# textdomain: cucina_vegana + + +### asparagus_default.lua ### +### asparagus_redo.lua ### +### banana_default.lua ### +### banana_redo.lua ### +### carrot_default.lua ### +### carrot_redo.lua ### +### chili_default.lua ### +### chili_redo.lua ### +### chives_default.lua ### +### chives_redo.lua ### +### corn_default.lua ### +### corn_redo.lua ### +### cucumber_default.lua ### +### cucumber_redo.lua ### +### flax_default.lua ### +### flax_redo.lua ### +### garlic_default.lua ### +### garlic_redo.lua ### +### kohlrabi_default.lua ### +### kohlrabi_redo.lua ### +### lettuce_default.lua ### +### lettuce_redo.lua ### +### onion_default.lua ### +### onion_redo.lua ### +### parsley_default.lua ### +### parsley_redo.lua ### +### peanut_default.lua ### +### peanut_redo.lua ### +### potato_default.lua ### +### potato_redo.lua ### +### rice_default.lua ### +### rice_redo.lua ### +### rosemary_default.lua ### +### rosemary_redo.lua ### +### soy_default.lua ### +### soy_redo.lua ### +### strawberry_default.lua ### +### strawberry_redo.lua ### +### sunflower_default.lua ### +### sunflower_redo.lua ### +### tomato_default.lua ### +### tomato_redo.lua ### + +Seed= + +### asparagus_default.lua ### +### asparagus_redo.lua ### +### items.lua ### + +# textdomain: cucina_vegana +Asparagus= + +### asparagus_default.lua ### +### banana_default.lua ### +### carrot_default.lua ### +### chili_default.lua ### +### chives_default.lua ### +### coffee_def.lua ### +### corn_default.lua ### +### cucumber_default.lua ### +### flax_default.lua ### +### garlic_default.lua ### +### kohlrabi_default.lua ### +### lettuce_default.lua ### +### onion_default.lua ### +### parsley_default.lua ### +### peanut_default.lua ### +### potato_default.lua ### +### rice_default.lua ### +### rosemary_default.lua ### +### soy_default.lua ### +### strawberry_default.lua ### +### sunflower_default.lua ### +### tomato_default.lua ### +### vine_def.lua ### + +Wild= + +### asparagus_redo.lua ### +### banana_redo.lua ### +### carrot_redo.lua ### +### chili_redo.lua ### +### chives_redo.lua ### +### corn_redo.lua ### +### cucumber_redo.lua ### +### flax_redo.lua ### +### garlic_redo.lua ### +### kohlrabi_redo.lua ### +### lettuce_redo.lua ### +### onion_redo.lua ### +### parsley_redo.lua ### +### peanut_redo.lua ### +### potato_redo.lua ### +### rice_redo.lua ### +### rosemary_redo.lua ### +### soy_redo.lua ### +### strawberry_redo.lua ### +### sunflower_redo.lua ### +### tomato_redo.lua ### + +Wild = + +### banana_default.lua ### +### banana_redo.lua ### +### items.lua ### + +Banana= + +### carrot_default.lua ### +### carrot_redo.lua ### +### items.lua ### + +Carrot= + +### chili_default.lua ### +### chili_redo.lua ### +### items.lua ### + +Chili= + +### chives_default.lua ### +### chives_redo.lua ### +### items.lua ### + +Chives= + +### coffee_def.lua ### + +Coffee Plant= + +### coffee_def.lua ### +### items.lua ### + +Coffee Beans raw= + +### coffee_def.lua ### +### vine_def.lua ### + +Leaves= +Sapling= +Stem= + +### corn_default.lua ### +### corn_redo.lua ### + +Corn= + +### cucumber_default.lua ### +### cucumber_redo.lua ### +### items.lua ### + +Cucumber= + +### flax_default.lua ### +### flax_redo.lua ### +### items.lua ### + +Flax= + +### garlic_default.lua ### +### garlic_redo.lua ### +### items.lua ### + +Garlic= + +### items.lua ### + +Blueberry pot= +Blueberry pot (cooked)= +Blueberry puree= +Ciabatta dough= +Coffee Beans= +Coffee Powder= +Corncob= +Dandelion Honey= +Dandelion Suds= +Dandelion Suds (cooking)= +Flax (raw)= +Imitation Butter= +Imitation Cheese= +Imitation Fish= +Imitation Meat= +Imitation poultry= +Molasses= +Pizzadough= +Rice Flour= +Rice Starch= +Roasted Kohlrabi= +Roasted Sunflower Seeds= +Rosemary Twig= +Soy Bean= +Soy Milk= +Sunflower Seeds= +Sunflower Seeds Bread= +Sunflower Seeds Dough= +Sunflower Seeds Flour= +Tofu= +Tofu (raw)= +Vegan Strawberry Milk= +Vegan Sushi= + +### items.lua ### +### kohlrabi_default.lua ### +### kohlrabi_redo.lua ### + +Kohlrabi= + +### items.lua ### +### lettuce_default.lua ### +### lettuce_redo.lua ### + +Lettuce= + +### items.lua ### +### onion_default.lua ### +### onion_redo.lua ### + +Onion= + +### items.lua ### +### parsley_default.lua ### +### parsley_redo.lua ### + +Parsley= + +### items.lua ### +### peanut_default.lua ### +### peanut_redo.lua ### + +Peanut= + +### items.lua ### +### potato_default.lua ### +### potato_redo.lua ### + +Potato= + +### items.lua ### +### rice_default.lua ### +### rice_redo.lua ### + +Rice= + +### items.lua ### +### strawberry_default.lua ### +### strawberry_redo.lua ### + +Strawberry= + +### items.lua ### +### sunflower_default.lua ### +### sunflower_redo.lua ### + +Sunflower= + +### items.lua ### +### tomato_default.lua ### +### tomato_redo.lua ### + +Tomato= + +### lib.lua ### + +@1 Seconds left.= +Coffeespeed. @1 Seconds left.= +You move normal again.= + +### nodes.lua ### + +Asparagus Hollandaise= +Asparagus Hollandaise (raw)= +Asparagus Soup= +Asparagus Soup (raw)= +Asparagus on Rice= +Asparagus on Rice (raw)= +Blueberry Jam= +Bottle of Corn Oil= +Bottle of Flaxseed Oil= +Bottle of Peanut Oil= +Bottle of Sunflower Seeds Oil= +Bowl of Rice= +Bowl of Rice (raw)= +Ciabatta Bread= +Cucumber in Glass= +Cup of Coffee cold= +Cup of Coffee hot= +Edamame= +Edamame (raw)= +Fish on Parsley and Rosemary= +Fish on Parsley and Rosemary (raw)= +Fryer= +Fryer (raw)= +Glass Bowl= +Glass Salad Bowl= +Kohlrabi Soup= +Kohlrabi Soup (raw)= +Mushroomlight Glass= +Peanut Butter= +Pizza Funghi= +Pizza Funghi (raw)= +Pizza Vegana= +Pizza Vegana (raw)= +Plate= +Popcorn= +Salad Bowl Hollandaise= +Salad Oil= +Sauce Hollandaise= +Sea Salad Bowl= +Soy Soup= +Soy Soup (raw)= +Tofu on Chives and Rosemary= +Tofu on Chives and Rosemary (raw)= + +### rosemary_default.lua ### +### rosemary_redo.lua ### + +Rosemary= + +### soy_default.lua ### +### soy_redo.lua ### + +Soy= + +### vine_def.lua ### + +Grape= +Vine= diff --git a/mods/cucina_vegana/locale/de.po b/mods/cucina_vegana/locale/de.po new file mode 100644 index 00000000..9e0edb0f --- /dev/null +++ b/mods/cucina_vegana/locale/de.po @@ -0,0 +1,407 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# A.C.M. , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-08-28 22:45+0200\n" +"PO-Revision-Date: 2019-08-28 22:49+0200\n" +"Last-Translator: acm \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.04.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: asparagus_default.lua asparagus_redo.lua items.lua +msgid "Asparagus" +msgstr "Spargel" + +#: asparagus_default.lua asparagus_redo.lua chives_default.lua chives_redo.lua +#: flax_default.lua flax_redo.lua kohlrabi_default.lua kohlrabi_redo.lua +#: lettuce_default.lua lettuce_redo.lua parsley_default.lua parsley_redo.lua +#: peanut_default.lua peanut_redo.lua rice_default.lua rice_redo.lua +#: rosemary_default.lua rosemary_redo.lua soy_default.lua soy_redo.lua +#: sunflower_default.lua sunflower_redo.lua +msgid "Seed" +msgstr "Samen" + +#: asparagus_default.lua chives_default.lua flax_default.lua +#: kohlrabi_default.lua lettuce_default.lua parsley_default.lua +#: peanut_default.lua rice_default.lua rosemary_default.lua soy_default.lua +#: sunflower_default.lua +msgid "Wild" +msgstr "Wild" + +#: asparagus_redo.lua chives_redo.lua flax_redo.lua kohlrabi_redo.lua +#: lettuce_redo.lua parsley_redo.lua peanut_redo.lua rice_redo.lua +#: rosemary_redo.lua soy_redo.lua sunflower_redo.lua +msgid "Wild " +msgstr "Wild" + +#: chives_default.lua chives_redo.lua items.lua +msgid "Chives" +msgstr "Schnittlauch" + +#: flax_default.lua flax_redo.lua items.lua +msgid "Flax" +msgstr "Flachs" + +#: items.lua +msgid "Blueberry purree" +msgstr "Blaubeermus" + +#: items.lua +msgid "Blueberry pot" +msgstr "Topf Blaubeermus" + +#: items.lua +msgid "Blueberry pot (cooked)" +msgstr "Topf Blaubeermus (gekocht)" + +#: items.lua +msgid "Ciabatta dough" +msgstr "Ciabatta Teig" + +#: items.lua +msgid "Dandelion Honey" +msgstr "Löwenzahn Honig" + +#: items.lua +msgid "Dandelion Suds" +msgstr "Löwenzahn Lauge" + +#: items.lua +msgid "Dandelion Suds (cooking)" +msgstr "Löwenzahn Lauge (kochend)" + +#: items.lua +msgid "Molasses" +msgstr "Melasse" + +#: items.lua +msgid "Pizzadough" +msgstr "Pizzateig" + +#: items.lua +msgid "Rice Flour" +msgstr "Reismehl" + +#: items.lua +msgid "Soy Milk" +msgstr "Soja Milch" + +#: items.lua +msgid "Sunflower Seeds Dough" +msgstr "Sonnenblumenkern Teig" + +#: items.lua +msgid "Sunflower Seeds Flour" +msgstr "Sonnenblumenkern Mehl" + +#: items.lua +msgid "Tofu (raw)" +msgstr "Tofu (roh)" + +#: items.lua +msgid "Imitation Butter" +msgstr "Analog Butter" + +#: items.lua +msgid "Imitation Cheese" +msgstr "Analog Käse" + +#: items.lua +msgid "Imitation Fish" +msgstr "Analog Fisch" + +#: items.lua +msgid "Imitation Meat" +msgstr "Analog Fleisch" + +#: items.lua +msgid "Imitation poultry" +msgstr "Analog Geflügel" + +#: items.lua +msgid "Flax (raw)" +msgstr "Flachs (roh)" + +#: items.lua kohlrabi_default.lua kohlrabi_redo.lua +msgid "Kohlrabi" +msgstr "Kohlrabi" + +#: items.lua lettuce_default.lua lettuce_redo.lua +msgid "Lettuce" +msgstr "Salat" + +#: items.lua parsley_default.lua parsley_redo.lua +msgid "Parsley" +msgstr "Petersilie" + +#: items.lua peanut_default.lua peanut_redo.lua +msgid "Peanut" +msgstr "Erdnuss" + +#: items.lua rice_default.lua rice_redo.lua +msgid "Rice" +msgstr "Reis" + +#: items.lua +msgid "Rosemary Twig" +msgstr "Rosmarien Zweig" + +#: items.lua +msgid "Soy Bean" +msgstr "Sojabohnen" + +#: items.lua sunflower_default.lua sunflower_redo.lua +msgid "Sunflower" +msgstr "Sonnenblume" + +#: items.lua +msgid "Sunflower Seeds" +msgstr "Sonnenblumenkerne" + +#: items.lua +msgid "Roasted Kohlrabi" +msgstr "Gerösteter Kohlrabi" + +#: items.lua +msgid "Roasted Sunflower Seeds" +msgstr "Geröstete Sonnenblumenkerne" + +#: items.lua +msgid "Sunflower Seeds Bread" +msgstr "Sonnenblumenkernbrot" + +#: items.lua +msgid "Tofu" +msgstr "Tofu" + +#: items.lua +msgid "Vegan Sushi" +msgstr "Veganes Sushi" + +#: nodes.lua +msgid "Glass Bowl" +msgstr "Glasschüssel" + +#: nodes.lua +msgid "Bottle of Flaxseed Oil" +msgstr "Flasche Leinsamenöl" + +#: nodes.lua +msgid "Mushroomlight Glass" +msgstr "Leuchtendes Pilzglas" + +#: nodes.lua +msgid "Bottle of Peanut Oil" +msgstr "Flasche Erdnussöl" + +#: nodes.lua +msgid "Plate" +msgstr "Teller" + +#: nodes.lua +msgid "Bottle of Sunflower Seeds Oil" +msgstr "Flasche Sonnenblumenkernöl" + +#: nodes.lua +msgid "Blueberry Jam" +msgstr "Blaubeer Marmelade" + +#: nodes.lua +msgid "Ciabatta Bread" +msgstr "Ciabatta Brot" + +#: nodes.lua +msgid "Edamame (raw)" +msgstr "Edamame (roh)" + +#: nodes.lua +msgid "Edamame" +msgstr "Edamame" + +#: nodes.lua +msgid "Salad Oil" +msgstr "Salatöl" + +#: nodes.lua +msgid "Peanut Butter" +msgstr "Erdnussbutter" + +#: nodes.lua +msgid "Glass Salad Bowl" +msgstr "Schüssel Salat" + +#: nodes.lua +msgid "Sauce Hollandaise" +msgstr "Sauce Hollandaise" + +#: nodes.lua +msgid "Asparagus Hollandaise (raw)" +msgstr "Spargel Hollandaise (roh)" + +#: nodes.lua +msgid "Asparagus on Rice (raw)" +msgstr "Spargel auf Reis (roh)" + +#: nodes.lua +msgid "Asparagus Soup (raw)" +msgstr "Spargel Suppe (roh)" + +#: nodes.lua +msgid "Bowl of Rice (raw)" +msgstr "Schüssel Reis (roh)" + +#: nodes.lua +msgid "Fish on Parsley and Rosemary (raw)" +msgstr "Fisch auf Petersilie und Rosmarien (roh)" + +#: nodes.lua +msgid "Fryer (raw)" +msgstr "Brathuhn (roh)" + +#: nodes.lua +msgid "Fryer" +msgstr "Brathuhn" + +#: nodes.lua +msgid "Kohlrabi Soup (raw)" +msgstr "Kohlrabi Suppe (roh)" + +#: nodes.lua +msgid "Salad Bowl Hollandaise" +msgstr "Schüssel Salat Hollandaise" + +#: nodes.lua +msgid "Soy Soup (raw)" +msgstr "Soja Suppe (roh)" + +#: nodes.lua +msgid "Tofu on Chives and Rosemary (raw)" +msgstr "Tofu auf Schnittlauch und Rosmarien (roh)" + +#: nodes.lua +msgid "Asparagus Hollandaise" +msgstr "Spargel Hollandaise" + +#: nodes.lua +msgid "Asparagus on Rice" +msgstr "Spargel auf Reis" + +#: nodes.lua +msgid "Asparagus Soup" +msgstr "Spargel Suppe" + +#: nodes.lua +msgid "Bowl of Rice" +msgstr "Schüssel Reis" + +#: nodes.lua +msgid "Fish on Parsley and Rosemary" +msgstr "Fisch auf Petersilie und Rosmarien" + +#: nodes.lua +msgid "Kohlrabi Soup" +msgstr "Kohlrabi Suppe" + +#: nodes.lua +msgid "Pizza Vegana (raw)" +msgstr "Pizza Vegana (roh)" + +#: nodes.lua +msgid "Pizza Vegana" +msgstr "Pizza Vegana" + +#: nodes.lua +msgid "Pizza Funghi (raw)" +msgstr "Pizza Funghi (roh)" + +#: nodes.lua +msgid "Pizza Funghi" +msgstr "Pizza Funghi" + +#: nodes.lua +msgid "Soy Soup" +msgstr "Soja Suppe" + +#: nodes.lua +msgid "Tofu on Chives and Rosemary" +msgstr "Tofu auf Schnittlauch und Rosmarien" + +#: rosemary_default.lua rosemary_redo.lua +msgid "Rosemary" +msgstr "Rosmarie" + +#: soy_default.lua soy_redo.lua +msgid "Soy" +msgstr "Soja" + +#~ msgid "Flex" +#~ msgstr "Flachs" + +#~ msgid "beans seed" +#~ msgstr "bohnen Samen" + +#~ msgid "Wild Lettuce" +#~ msgstr "Wilder Salat" + +#~ msgid "Soy Beans" +#~ msgstr "Sojabohnen" + +#~ msgid " Seed" +#~ msgstr "Samen" + +#~ msgid "Wild Parsley" +#~ msgstr "Wilde Petersilie" + +#~ msgid "Asparagus Seed" +#~ msgstr "Spargel Samen" + +#~ msgid "Wild Asparagus" +#~ msgstr "Wilder Spargel" + +#~ msgid "Wild Chives" +#~ msgstr "Wilder Schnittlauch" + +#~ msgid "Chives Seed" +#~ msgstr "Schnittlauch Samen" + +#~ msgid "Wild kohlrabi" +#~ msgstr "Wilder Kohlrabi" + +#~ msgid "Kohlrabi Seed" +#~ msgstr "Kohlrabi Samen" + +#~ msgid "Wild Kohlrabi" +#~ msgstr "Wilder Kohlrabi" + +#~ msgid "Lettuce Seed" +#~ msgstr "Salatpflanzen Samen" + +#~ msgid "Parsley Seed" +#~ msgstr "Petersilie Samen" + +#~ msgid "Rice Seed" +#~ msgstr "Reis Samen" + +#~ msgid "Wild Rice" +#~ msgstr "Wilder Reis" + +#~ msgid "Wild Rosemary" +#~ msgstr "Wilde Rosmarie" + +#~ msgid "Rosemary Seed" +#~ msgstr "Rosmarie Samen" + +#~ msgid "Sunflower Seed" +#~ msgstr "Sonnenblumen Samen" + +#~ msgid "Wild Sunflower" +#~ msgstr "Wilde Sonnenblume" diff --git a/mods/cucina_vegana/locale/template.pot b/mods/cucina_vegana/locale/template.pot new file mode 100644 index 00000000..bdefef41 --- /dev/null +++ b/mods/cucina_vegana/locale/template.pot @@ -0,0 +1,344 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-08-28 22:45+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: asparagus_default.lua asparagus_redo.lua items.lua +msgid "Asparagus" +msgstr "" + +#: asparagus_default.lua asparagus_redo.lua chives_default.lua chives_redo.lua +#: flax_default.lua flax_redo.lua kohlrabi_default.lua kohlrabi_redo.lua +#: lettuce_default.lua lettuce_redo.lua parsley_default.lua parsley_redo.lua +#: peanut_default.lua peanut_redo.lua rice_default.lua rice_redo.lua +#: rosemary_default.lua rosemary_redo.lua soy_default.lua soy_redo.lua +#: sunflower_default.lua sunflower_redo.lua +msgid "Seed" +msgstr "" + +#: asparagus_default.lua chives_default.lua flax_default.lua +#: kohlrabi_default.lua lettuce_default.lua parsley_default.lua +#: peanut_default.lua rice_default.lua rosemary_default.lua soy_default.lua +#: sunflower_default.lua +msgid "Wild" +msgstr "" + +#: asparagus_redo.lua chives_redo.lua flax_redo.lua kohlrabi_redo.lua +#: lettuce_redo.lua parsley_redo.lua peanut_redo.lua rice_redo.lua +#: rosemary_redo.lua soy_redo.lua sunflower_redo.lua +msgid "Wild " +msgstr "" + +#: chives_default.lua chives_redo.lua items.lua +msgid "Chives" +msgstr "" + +#: flax_default.lua flax_redo.lua items.lua +msgid "Flax" +msgstr "" + +#: items.lua +msgid "Blueberry purree" +msgstr "" + +#: items.lua +msgid "Blueberry pot" +msgstr "" + +#: items.lua +msgid "Blueberry pot (cooked)" +msgstr "" + +#: items.lua +msgid "Ciabatta dough" +msgstr "" + +#: items.lua +msgid "Dandelion Honey" +msgstr "" + +#: items.lua +msgid "Dandelion Suds" +msgstr "" + +#: items.lua +msgid "Dandelion Suds (cooking)" +msgstr "" + +#: items.lua +msgid "Molasses" +msgstr "" + +#: items.lua +msgid "Pizzadough" +msgstr "" + +#: items.lua +msgid "Rice Flour" +msgstr "" + +#: items.lua +msgid "Soy Milk" +msgstr "" + +#: items.lua +msgid "Sunflower Seeds Dough" +msgstr "" + +#: items.lua +msgid "Sunflower Seeds Flour" +msgstr "" + +#: items.lua +msgid "Tofu (raw)" +msgstr "" + +#: items.lua +msgid "Imitation Butter" +msgstr "" + +#: items.lua +msgid "Imitation Cheese" +msgstr "" + +#: items.lua +msgid "Imitation Fish" +msgstr "" + +#: items.lua +msgid "Imitation Meat" +msgstr "" + +#: items.lua +msgid "Imitation poultry" +msgstr "" + +#: items.lua +msgid "Flax (raw)" +msgstr "" + +#: items.lua kohlrabi_default.lua kohlrabi_redo.lua +msgid "Kohlrabi" +msgstr "" + +#: items.lua lettuce_default.lua lettuce_redo.lua +msgid "Lettuce" +msgstr "" + +#: items.lua parsley_default.lua parsley_redo.lua +msgid "Parsley" +msgstr "" + +#: items.lua peanut_default.lua peanut_redo.lua +msgid "Peanut" +msgstr "" + +#: items.lua rice_default.lua rice_redo.lua +msgid "Rice" +msgstr "" + +#: items.lua +msgid "Rosemary Twig" +msgstr "" + +#: items.lua +msgid "Soy Bean" +msgstr "" + +#: items.lua sunflower_default.lua sunflower_redo.lua +msgid "Sunflower" +msgstr "" + +#: items.lua +msgid "Sunflower Seeds" +msgstr "" + +#: items.lua +msgid "Roasted Kohlrabi" +msgstr "" + +#: items.lua +msgid "Roasted Sunflower Seeds" +msgstr "" + +#: items.lua +msgid "Sunflower Seeds Bread" +msgstr "" + +#: items.lua +msgid "Tofu" +msgstr "" + +#: items.lua +msgid "Vegan Sushi" +msgstr "" + +#: nodes.lua +msgid "Glass Bowl" +msgstr "" + +#: nodes.lua +msgid "Bottle of Flaxseed Oil" +msgstr "" + +#: nodes.lua +msgid "Mushroomlight Glass" +msgstr "" + +#: nodes.lua +msgid "Bottle of Peanut Oil" +msgstr "" + +#: nodes.lua +msgid "Plate" +msgstr "" + +#: nodes.lua +msgid "Bottle of Sunflower Seeds Oil" +msgstr "" + +#: nodes.lua +msgid "Blueberry Jam" +msgstr "" + +#: nodes.lua +msgid "Ciabatta Bread" +msgstr "" + +#: nodes.lua +msgid "Edamame (raw)" +msgstr "" + +#: nodes.lua +msgid "Edamame" +msgstr "" + +#: nodes.lua +msgid "Salad Oil" +msgstr "" + +#: nodes.lua +msgid "Peanut Butter" +msgstr "" + +#: nodes.lua +msgid "Glass Salad Bowl" +msgstr "" + +#: nodes.lua +msgid "Sauce Hollandaise" +msgstr "" + +#: nodes.lua +msgid "Asparagus Hollandaise (raw)" +msgstr "" + +#: nodes.lua +msgid "Asparagus on Rice (raw)" +msgstr "" + +#: nodes.lua +msgid "Asparagus Soup (raw)" +msgstr "" + +#: nodes.lua +msgid "Bowl of Rice (raw)" +msgstr "" + +#: nodes.lua +msgid "Fish on Parsley and Rosemary (raw)" +msgstr "" + +#: nodes.lua +msgid "Fryer (raw)" +msgstr "" + +#: nodes.lua +msgid "Fryer" +msgstr "" + +#: nodes.lua +msgid "Kohlrabi Soup (raw)" +msgstr "" + +#: nodes.lua +msgid "Salad Bowl Hollandaise" +msgstr "" + +#: nodes.lua +msgid "Soy Soup (raw)" +msgstr "" + +#: nodes.lua +msgid "Tofu on Chives and Rosemary (raw)" +msgstr "" + +#: nodes.lua +msgid "Asparagus Hollandaise" +msgstr "" + +#: nodes.lua +msgid "Asparagus on Rice" +msgstr "" + +#: nodes.lua +msgid "Asparagus Soup" +msgstr "" + +#: nodes.lua +msgid "Bowl of Rice" +msgstr "" + +#: nodes.lua +msgid "Fish on Parsley and Rosemary" +msgstr "" + +#: nodes.lua +msgid "Kohlrabi Soup" +msgstr "" + +#: nodes.lua +msgid "Pizza Vegana (raw)" +msgstr "" + +#: nodes.lua +msgid "Pizza Vegana" +msgstr "" + +#: nodes.lua +msgid "Pizza Funghi (raw)" +msgstr "" + +#: nodes.lua +msgid "Pizza Funghi" +msgstr "" + +#: nodes.lua +msgid "Soy Soup" +msgstr "" + +#: nodes.lua +msgid "Tofu on Chives and Rosemary" +msgstr "" + +#: rosemary_default.lua rosemary_redo.lua +msgid "Rosemary" +msgstr "" + +#: soy_default.lua soy_redo.lua +msgid "Soy" +msgstr "" diff --git a/mods/cucina_vegana/locale/template.txt b/mods/cucina_vegana/locale/template.txt new file mode 100644 index 00000000..6700d850 --- /dev/null +++ b/mods/cucina_vegana/locale/template.txt @@ -0,0 +1,329 @@ +# textdomain: cucina_vegana + + +### asparagus_default.lua ### +### asparagus_redo.lua ### +### banana_default.lua ### +### banana_redo.lua ### +### carrot_default.lua ### +### carrot_redo.lua ### +### chili_default.lua ### +### chili_redo.lua ### +### chives_default.lua ### +### chives_redo.lua ### +### corn_default.lua ### +### corn_redo.lua ### +### cucumber_default.lua ### +### cucumber_redo.lua ### +### flax_default.lua ### +### flax_redo.lua ### +### garlic_default.lua ### +### garlic_redo.lua ### +### kohlrabi_default.lua ### +### kohlrabi_redo.lua ### +### lettuce_default.lua ### +### lettuce_redo.lua ### +### onion_default.lua ### +### onion_redo.lua ### +### parsley_default.lua ### +### parsley_redo.lua ### +### peanut_default.lua ### +### peanut_redo.lua ### +### potato_default.lua ### +### potato_redo.lua ### +### rice_default.lua ### +### rice_redo.lua ### +### rosemary_default.lua ### +### rosemary_redo.lua ### +### soy_default.lua ### +### soy_redo.lua ### +### strawberry_default.lua ### +### strawberry_redo.lua ### +### sunflower_default.lua ### +### sunflower_redo.lua ### +### tomato_default.lua ### +### tomato_redo.lua ### + +Seed= + +### asparagus_default.lua ### +### asparagus_redo.lua ### +### items.lua ### + +Asparagus= + +### asparagus_default.lua ### +### banana_default.lua ### +### carrot_default.lua ### +### chili_default.lua ### +### chives_default.lua ### +### coffee_def.lua ### +### corn_default.lua ### +### cucumber_default.lua ### +### flax_default.lua ### +### garlic_default.lua ### +### kohlrabi_default.lua ### +### lettuce_default.lua ### +### onion_default.lua ### +### parsley_default.lua ### +### peanut_default.lua ### +### potato_default.lua ### +### rice_default.lua ### +### rosemary_default.lua ### +### soy_default.lua ### +### strawberry_default.lua ### +### sunflower_default.lua ### +### tomato_default.lua ### +### vine_def.lua ### + +Wild= + +### asparagus_redo.lua ### +### banana_redo.lua ### +### carrot_redo.lua ### +### chili_redo.lua ### +### chives_redo.lua ### +### corn_redo.lua ### +### cucumber_redo.lua ### +### flax_redo.lua ### +### garlic_redo.lua ### +### kohlrabi_redo.lua ### +### lettuce_redo.lua ### +### onion_redo.lua ### +### parsley_redo.lua ### +### peanut_redo.lua ### +### potato_redo.lua ### +### rice_redo.lua ### +### rosemary_redo.lua ### +### soy_redo.lua ### +### strawberry_redo.lua ### +### sunflower_redo.lua ### +### tomato_redo.lua ### + +Wild = + +### banana_default.lua ### +### banana_redo.lua ### +### items.lua ### + +Banana= + +### carrot_default.lua ### +### carrot_redo.lua ### +### items.lua ### + +Carrot= + +### chili_default.lua ### +### chili_redo.lua ### +### items.lua ### + +Chili= + +### chives_default.lua ### +### chives_redo.lua ### +### items.lua ### + +Chives= + +### coffee_def.lua ### + +Coffee Plant= + +### coffee_def.lua ### +### items.lua ### + +Coffee Beans raw= + +### coffee_def.lua ### +### vine_def.lua ### + +Leaves= +Sapling= +Stem= + +### corn_default.lua ### +### corn_redo.lua ### + +Corn= + +### cucumber_default.lua ### +### cucumber_redo.lua ### +### items.lua ### + +Cucumber= + +### flax_default.lua ### +### flax_redo.lua ### +### items.lua ### + +Flax= + +### garlic_default.lua ### +### garlic_redo.lua ### +### items.lua ### + +Garlic= + +### items.lua ### + +Blueberry pot= +Blueberry pot (cooked)= +Blueberry puree= +Ciabatta dough= +Coffee Beans= +Coffee Powder= +Corncob= +Dandelion Honey= +Dandelion Suds= +Dandelion Suds (cooking)= +Flax (raw)= +Imitation Butter= +Imitation Cheese= +Imitation Fish= +Imitation Meat= +Imitation poultry= +Molasses= +Pizzadough= +Rice Flour= +Rice Starch= +Roasted Kohlrabi= +Roasted Sunflower Seeds= +Rosemary Twig= +Soy Bean= +Soy Milk= +Sunflower Seeds= +Sunflower Seeds Bread= +Sunflower Seeds Dough= +Sunflower Seeds Flour= +Tofu= +Tofu (raw)= +Vegan Strawberry Milk= +Vegan Sushi= + +### items.lua ### +### kohlrabi_default.lua ### +### kohlrabi_redo.lua ### + +Kohlrabi= + +### items.lua ### +### lettuce_default.lua ### +### lettuce_redo.lua ### + +Lettuce= + +### items.lua ### +### onion_default.lua ### +### onion_redo.lua ### + +Onion= + +### items.lua ### +### parsley_default.lua ### +### parsley_redo.lua ### + +Parsley= + +### items.lua ### +### peanut_default.lua ### +### peanut_redo.lua ### + +Peanut= + +### items.lua ### +### potato_default.lua ### +### potato_redo.lua ### + +Potato= + +### items.lua ### +### rice_default.lua ### +### rice_redo.lua ### + +Rice= + +### items.lua ### +### strawberry_default.lua ### +### strawberry_redo.lua ### + +Strawberry= + +### items.lua ### +### sunflower_default.lua ### +### sunflower_redo.lua ### + +Sunflower= + +### items.lua ### +### tomato_default.lua ### +### tomato_redo.lua ### + +Tomato= + +### lib.lua ### + +@1 Seconds left.= +Coffeespeed. @1 Seconds left.= +You move normal again.= + +### nodes.lua ### + +Asparagus Hollandaise= +Asparagus Hollandaise (raw)= +Asparagus Soup= +Asparagus Soup (raw)= +Asparagus on Rice= +Asparagus on Rice (raw)= +Blueberry Jam= +Bottle of Corn Oil= +Bottle of Flaxseed Oil= +Bottle of Peanut Oil= +Bottle of Sunflower Seeds Oil= +Bowl of Rice= +Bowl of Rice (raw)= +Ciabatta Bread= +Cucumber in Glass= +Cup of Coffee cold= +Cup of Coffee hot= +Edamame= +Edamame (raw)= +Fish on Parsley and Rosemary= +Fish on Parsley and Rosemary (raw)= +Fryer= +Fryer (raw)= +Glass Bowl= +Glass Salad Bowl= +Kohlrabi Soup= +Kohlrabi Soup (raw)= +Mushroomlight Glass= +Peanut Butter= +Pizza Funghi= +Pizza Funghi (raw)= +Pizza Vegana= +Pizza Vegana (raw)= +Plate= +Popcorn= +Salad Bowl Hollandaise= +Salad Oil= +Sauce Hollandaise= +Sea Salad Bowl= +Soy Soup= +Soy Soup (raw)= +Tofu on Chives and Rosemary= +Tofu on Chives and Rosemary (raw)= + +### rosemary_default.lua ### +### rosemary_redo.lua ### + +Rosemary= + +### soy_default.lua ### +### soy_redo.lua ### + +Soy= + +### vine_def.lua ### + +Grape= +Vine= diff --git a/mods/cucina_vegana/mod.conf b/mods/cucina_vegana/mod.conf new file mode 100644 index 00000000..918943bf --- /dev/null +++ b/mods/cucina_vegana/mod.conf @@ -0,0 +1,7 @@ +name = cucina_vegana +description = A mod which the vegan kitchen to Minetest. +depends = default,dye,farming,vessels +optional_depends = basic_materials, bbq,bees,bonemeal,bucket,building_blocks,bushes,bushes_classic,cottages,farming_redo,farming_nextgen,fishing,flowers,hunger, hunger_ng,homedecor,intllib,mobs,moreblocks,pizza,ropes,technic,wine,wool,petz,lemontree,clementinetree,hunger_ng,aqua_farming,signs_bot,techage,diet +release = 23707 +author = Clyde +title = Cucina Vegana diff --git a/mods/cucina_vegana/nodes.lua b/mods/cucina_vegana/nodes.lua new file mode 100644 index 00000000..9ab91e20 --- /dev/null +++ b/mods/cucina_vegana/nodes.lua @@ -0,0 +1,783 @@ +-- ******************************************* +-- ***** Nodes ***** +-- ******************************************* + +-- Load support for intllib. +local S = cucina_vegana.get_translator +local cv = cucina_vegana + +-- ******************************************* +-- ***** Supports ***** +-- ******************************************* + +minetest.register_node("cucina_vegana:bowl", { + description = S("Glass Bowl"), + drawtype = "plantlike", + tiles = {"cucina_vegana_bowl.png"}, + inventory_image = "cucina_vegana_bowl.png", + wield_image = "cucina_vegana_bowl.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1, food_bowl=1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:flax_seed_oil", { + description = S("Bottle of Flaxseed Oil"), + drawtype = "plantlike", + tiles = {"cucina_vegana_flax_seed_oil.png"}, + inventory_image = "cucina_vegana_flax_seed_oil.png", + wield_image = "cucina_vegana_flax_seed_oil.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(2, "vessels:glass_bottle"), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1, food = 1, food_oil = 1, food_vegan = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:mushroomlight_glass", { + description = S("Mushroomlight Glass"), + drawtype = "glasslike_framed_optional", + tiles = {"cucina_vegana_mushroom_light.png","cucina_vegana_mushroom_light_detail.png"}, + paramtype = "light", + light_source = 3, + paramtype2 = "glasslikeliquidlevel", + sunlight_propagates = true, + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_glass_defaults() +}) + +minetest.register_node("cucina_vegana:peanut_oil", { + description = S("Bottle of Peanut Oil"), + drawtype = "plantlike", + tiles = {"cucina_vegana_peanut_oil.png"}, + inventory_image = "cucina_vegana_peanut_oil.png", + wield_image = "cucina_vegana_peanut_oil.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(5, "vessels:glass_bottle"), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1, food = 1, food_oil = 1, food_vegan = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:plate", { + description = S("Plate"), + drawtype = "plantlike", + tiles = {"cucina_vegana_plate.png"}, + inventory_image = "cucina_vegana_plate.png", + wield_image = "cucina_vegana_plate.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_plate=1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:sunflower_seeds_oil", { + description = S("Bottle of Sunflower Seeds Oil"), + drawtype = "plantlike", + tiles = {"cucina_vegana_sunflower_seeds_oil.png"}, + inventory_image = "cucina_vegana_sunflower_seeds_oil.png", + wield_image = "cucina_vegana_sunflower_seeds_oil.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(2, "vessels:glass_bottle"), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1, food = 1, food_oil = 1, food_vegan = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:corn_oil", { + description = S("Bottle of Corn Oil"), + drawtype = "plantlike", + tiles = {"cucina_vegana_corn_oil.png"}, + inventory_image = "cucina_vegana_corn_oil.png", + wield_image = "cucina_vegana_corn_oil.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(2, "vessels:glass_bottle"), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1, food = 1, food_oil = 1, food_vegan = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +-- ******************************************* +-- ***** Síde Dishes ***** +-- ******************************************* + +minetest.register_node("cucina_vegana:blueberry_jam", { + description = S("Blueberry Jam"), + drawtype = "plantlike", + tiles = {"cucina_vegana_blueberry_jam.png"}, + inventory_image = "cucina_vegana_blueberry_jam.png", + wield_image = "cucina_vegana_blueberry_jam.png", + paramtype = "light", + is_ground_content = false, + on_use = minetest.item_eat(8), + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_vegan = 1, food_sweet = 1, eatable = 1}, +}) + +minetest.register_node("cucina_vegana:coffee_cup", { + description = S("Cup of Coffee cold"), + drawtype = "plantlike", + tiles = {"cucina_vegana_coffee_cup.png"}, + inventory_image = "cucina_vegana_coffee_cup.png", + wield_image = "cucina_vegana_coffee_cup.png", + paramtype = "light", + is_ground_content = false, + on_use = minetest.item_eat(2), + walkable = true, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_vegan = 1, eatable = 1}, +}) + +minetest.register_node("cucina_vegana:coffee_cup_hot", { + description = S("Cup of Coffee hot"), + drawtype = "plantlike", + tiles = { + { + image = "cucina_vegana_coffee_cup_hot_animated.png", + backface_culling = false, + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 2 + } + } + }, + inventory_image = "cucina_vegana_coffee_cup_hot.png", + wield_image = "cucina_vegana_coffee_cup_hot.png", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + on_use = function(itemstack, playerobject, pointed_thing) + if (not playerobject) then return end + + minetest.item_eat(2) + cv.lib.coffee_effect(playerobject) + itemstack:take_item(1) + return itemstack + end, + walkable = true, + groups = {dig_immediate = 3, attached_node = 1, food_vegan = 1, eatable = 1}, +}) + +minetest.register_node("cucina_vegana:cucumber_in_glass", { + description = S("Cucumber in Glass"), + drawtype = "plantlike", + tiles = {"cucina_vegana_cucumber_in_glass.png"}, + inventory_image = "cucina_vegana_cucumber_in_glass.png", + wield_image = "cucina_vegana_cucumber_in_glass.png", + paramtype = "light", + is_ground_content = false, + on_use = minetest.item_eat(5), + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_vegan = 1, eatable = 1}, +}) + +minetest.register_node("cucina_vegana:ciabatta_bread", { + description = S("Ciabatta Bread"), + drawtype = "plantlike", + tiles = {"cucina_vegana_ciabatta_bread.png"}, + inventory_image = "cucina_vegana_ciabatta_bread.png", + wield_image = "cucina_vegana_ciabatta_bread.png", + paramtype = "light", + is_ground_content = false, + on_use = minetest.item_eat(4), + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_bread = 1, food_vegan = 1, eatable = 1}, +}) + +minetest.register_node("cucina_vegana:edamame", { + description = S("Edamame (raw)"), + drawtype = "plantlike", + tiles = {"cucina_vegana_edamame.png"}, + inventory_image = "cucina_vegana_edamame.png", + wield_image = "cucina_vegana_edamame.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:edamame_cooked", { + description = S("Edamame"), + drawtype = "plantlike", + tiles = {"cucina_vegana_edamame_cooked.png"}, + inventory_image = "cucina_vegana_edamame_cooked.png", + wield_image = "cucina_vegana_edamame_cooked.png", + on_use = minetest.item_eat(4, "cucina_vegana:plate"), + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:lettuce_oil", { + description = S("Salad Oil"), + drawtype = "plantlike", + tiles = {"cucina_vegana_lettuce_oil.png"}, + inventory_image = "cucina_vegana_lettuce_oil.png", + wield_image = "cucina_vegana_lettuce_oil.png", + paramtype = "light", + is_ground_content = false, + on_use = minetest.item_eat(2, "vessels:glass_bottle"), + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_oil = 1, food_vegan = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:peanut_butter", { + description = S("Peanut Butter"), + drawtype = "plantlike", + tiles = {"cucina_vegana_peanut_butter.png"}, + inventory_image = "cucina_vegana_peanut_butter.png", + wield_image = "cucina_vegana_peanut_butter.png", + paramtype = "light", + is_ground_content = false, + on_use = minetest.item_eat(10), + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_vegan = 1, food_sweet = 1, food_butter = 1, eatable = 1}, +}) + +minetest.register_node("cucina_vegana:salad_bowl", { + description = S("Glass Salad Bowl"), + drawtype = "plantlike", + tiles = {"cucina_vegana_salad_bowl.png"}, + inventory_image = "cucina_vegana_salad_bowl.png", + wield_image = "cucina_vegana_salad_bowl.png", + on_use = minetest.item_eat(4, "cucina_vegana:bowl"), + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:sauce_hollandaise", { + description = S("Sauce Hollandaise"), + drawtype = "plantlike", + tiles = {"cucina_vegana_sauce_hollandaise.png"}, + inventory_image = "cucina_vegana_sauce_hollandaise.png", + wield_image = "cucina_vegana_sauce_hollandaise.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(3, "vessels:glass_bottle"), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1, food = 1, food_sauce = 1, food_vegan = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:sea_salad", { + description = S("Sea Salad Bowl"), + drawtype = "plantlike", + tiles = {"cucina_vegana_sea_salad.png"}, + inventory_image = "cucina_vegana_sea_salad.png", + wield_image = "cucina_vegana_sea_salad.png", + on_use = minetest.item_eat(5, "cucina_vegana:bowl"), + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:popcorn", { + description = S("Popcorn"), + drawtype = "plantlike", + tiles = {"cucina_vegana_popcorn.png"}, + inventory_image = "cucina_vegana_popcorn.png", + wield_image = "cucina_vegana_popcorn.png", + paramtype2 = 3, -- # + on_use = minetest.item_eat(3), + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +-- ******************************************* +-- ***** Dinners ***** +-- ******************************************* + +minetest.register_node("cucina_vegana:asparagus_hollandaise", { + description = S("Asparagus Hollandaise (raw)"), + drawtype = "plantlike", + tiles = {"cucina_vegana_asparagus_hollandaise.png"}, + inventory_image = "cucina_vegana_asparagus_hollandaise.png", + wield_image = "cucina_vegana_asparagus_hollandaise.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:asparagus_rice", { + description = S("Asparagus on Rice (raw)"), + drawtype = "plantlike", + tiles = {"cucina_vegana_asparagus_rice.png"}, + inventory_image = "cucina_vegana_asparagus_rice.png", + wield_image = "cucina_vegana_asparagus_rice.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_vegan = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:asparagus_soup", { + description = S("Asparagus Soup (raw)"), + drawtype = "plantlike", + tiles = {"cucina_vegana_asparagus_soup.png"}, + inventory_image = "cucina_vegana_asparagus_soup.png", + wield_image = "cucina_vegana_asparagus_soup.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_soup = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:bowl_rice", { + description = S("Bowl of Rice (raw)"), + drawtype = "plantlike", + tiles = {"cucina_vegana_bowl_rice.png"}, + inventory_image = "cucina_vegana_bowl_rice.png", + wield_image = "cucina_vegana_bowl_rice.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1, food_rice = 1, food_vegan = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:fish_parsley_rosemary", { + description = S("Fish on Parsley and Rosemary (raw)"), + drawtype = "plantlike", + tiles = {"cucina_vegana_fish_parsley_rosemary.png"}, + inventory_image = "cucina_vegana_fish_parsley_rosemary.png", + wield_image = "cucina_vegana_fish_parsley_rosemary.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:fryer_raw", { + description = S("Fryer (raw)"), + drawtype = "plantlike", + tiles = {"cucina_vegana_fryer_raw.png"}, + inventory_image = "cucina_vegana_fryer_raw.png", + wield_image = "cucina_vegana_fryer_raw.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_vegan = 1}, +}) + +minetest.register_node("cucina_vegana:fryer", { + description = S("Fryer"), + drawtype = "plantlike", + tiles = {"cucina_vegana_fryer.png"}, + inventory_image = "cucina_vegana_fryer.png", + wield_image = "cucina_vegana_fryer.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(8), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_vegan = 1, eatable = 1}, +}) + +minetest.register_node("cucina_vegana:kohlrabi_soup", { + description = S("Kohlrabi Soup (raw)"), + drawtype = "plantlike", + tiles = {"cucina_vegana_kohlrabi_soup.png"}, + inventory_image = "cucina_vegana_kohlrabi_soup.png", + wield_image = "cucina_vegana_kohlrabi_soup.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_soup = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:salad_hollandaise", { + description = S("Salad Bowl Hollandaise"), + drawtype = "plantlike", + tiles = {"cucina_vegana_salad_hollandaise.png"}, + inventory_image = "cucina_vegana_salad_hollandaise.png", + wield_image = "cucina_vegana_salad_hollandaise.png", + on_use = minetest.item_eat(5, "cucina_vegana:bowl"), + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_vegan = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:soy_soup", { + description = S("Soy Soup (raw)"), + drawtype = "plantlike", + tiles = {"cucina_vegana_soy_soup.png"}, + inventory_image = "cucina_vegana_soy_soup.png", + wield_image = "cucina_vegana_soy_soup.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_soup = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:tofu_chives_rosemary", { + description = S("Tofu on Chives and Rosemary (raw)"), + drawtype = "plantlike", + tiles = {"cucina_vegana_tofu_chives_rosemary.png"}, + inventory_image = "cucina_vegana_tofu_chives_rosemary.png", + wield_image = "cucina_vegana_tofu_chives_rosemary.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(5, "cucina_vegana:plate"), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_vegan = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +-- ******************************************* +-- ***** Dinners cooked ***** +-- ******************************************* + +minetest.register_node("cucina_vegana:asparagus_hollandaise_cooked", { + description = S("Asparagus Hollandaise"), + drawtype = "plantlike", + tiles = {"cucina_vegana_asparagus_hollandaise_cooked.png"}, + inventory_image = "cucina_vegana_asparagus_hollandaise_cooked.png", + wield_image = "cucina_vegana_asparagus_hollandaise_cooked.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(5, "cucina_vegana:plate"), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:asparagus_rice_cooked", { + description = S("Asparagus on Rice"), + drawtype = "plantlike", + tiles = {"cucina_vegana_asparagus_rice_cooked.png"}, + inventory_image = "cucina_vegana_asparagus_rice_cooked.png", + wield_image = "cucina_vegana_asparagus_rice_cooked.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(6, "cucina_vegana:plate"), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:asparagus_soup_cooked", { + description = S("Asparagus Soup"), + drawtype = "plantlike", + tiles = {"cucina_vegana_asparagus_soup_cooked.png"}, + inventory_image = "cucina_vegana_asparagus_soup_cooked.png", + wield_image = "cucina_vegana_asparagus_soup_cooked.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(5, "cucina_vegana:plate"), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:bowl_rice_cooked", { + description = S("Bowl of Rice"), + drawtype = "plantlike", + tiles = {"cucina_vegana_bowl_rice_cooked.png"}, + inventory_image = "cucina_vegana_bowl_rice_cooked.png", + wield_image = "cucina_vegana_bowl_rice_cooked.png", + paramtype = "light", + is_ground_content = false, + on_use = minetest.item_eat(4, "cucina_vegana:bowl"), + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:fish_parsley_rosemary_cooked", { + description = S("Fish on Parsley and Rosemary"), + drawtype = "plantlike", + tiles = {"cucina_vegana_fish_parsley_rosemary_cooked.png"}, + inventory_image = "cucina_vegana_fish_parsley_rosemary_cooked.png", + wield_image = "cucina_vegana_fish_parsley_rosemary_cooked.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(6, "cucina_vegana:plate"), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:kohlrabi_soup_cooked", { + description = S("Kohlrabi Soup"), + drawtype = "plantlike", + tiles = {"cucina_vegana_kohlrabi_soup_cooked.png"}, + inventory_image = "cucina_vegana_kohlrabi_soup_cooked.png", + wield_image = "cucina_vegana_kohlrabi_soup_cooked.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(5, "cucina_vegana:plate"), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:pizza_vegana_raw", { + description = S("Pizza Vegana (raw)"), + drawtype = "plantlike", + tiles = {"cucina_vegana_pizza_vegana_raw.png"}, + inventory_image = "cucina_vegana_pizza_vegana_raw.png", + wield_image = "cucina_vegana_pizza_vegana_raw.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_vegan = 1}, +}) + +minetest.register_node("cucina_vegana:pizza_vegana", { + description = S("Pizza Vegana"), + drawtype = "plantlike", + tiles = {"cucina_vegana_pizza_vegana.png"}, + inventory_image = "cucina_vegana_pizza_vegana.png", + wield_image = "cucina_vegana_pizza_vegana.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(6), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_vegan = 1, eatable = 1}, +}) + +minetest.register_node("cucina_vegana:pizza_funghi_raw", { + description = S("Pizza Funghi (raw)"), + drawtype = "plantlike", + tiles = {"cucina_vegana_pizza_funghi_raw.png"}, + inventory_image = "cucina_vegana_pizza_funghi_raw.png", + wield_image = "cucina_vegana_pizza_funghi_raw.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_vegan = 1}, +}) + +minetest.register_node("cucina_vegana:pizza_funghi", { + description = S("Pizza Funghi"), + drawtype = "plantlike", + tiles = {"cucina_vegana_pizza_funghi.png"}, + inventory_image = "cucina_vegana_pizza_funghi.png", + wield_image = "cucina_vegana_pizza_funghi.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(6), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, food_vegan = 1, eatable = 1}, +}) + +minetest.register_node("cucina_vegana:soy_soup_cooked", { + description = S("Soy Soup"), + drawtype = "plantlike", + tiles = {"cucina_vegana_soy_soup_cooked.png"}, + inventory_image = "cucina_vegana_soy_soup_cooked.png", + wield_image = "cucina_vegana_soy_soup_cooked.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(5, "cucina_vegana:plate"), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("cucina_vegana:tofu_chives_rosemary_cooked", { + description = S("Tofu on Chives and Rosemary"), + drawtype = "plantlike", + tiles = {"cucina_vegana_tofu_chives_rosemary_cooked.png"}, + inventory_image = "cucina_vegana_tofu_chives_rosemary_cooked.png", + wield_image = "cucina_vegana_tofu_chives_rosemary_cooked.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(6, "cucina_vegana:plate"), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 3, attached_node = 1, eatable = 1}, + sounds = default.node_sound_glass_defaults(), +}) diff --git a/mods/cucina_vegana/onion.lua b/mods/cucina_vegana/onion.lua new file mode 100644 index 00000000..5a142098 --- /dev/null +++ b/mods/cucina_vegana/onion.lua @@ -0,0 +1,17 @@ + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.onion_scale, + spread = {x = 70, y = 70, z = 70}, + seed = 7346, + octaves = 3, + persist = 0.6 + }, + y_min = 0, + y_max = 150, + decoration = "cucina_vegana:wild_onion", +}) diff --git a/mods/cucina_vegana/onion_default.lua b/mods/cucina_vegana/onion_default.lua new file mode 100644 index 00000000..2bec3484 --- /dev/null +++ b/mods/cucina_vegana/onion_default.lua @@ -0,0 +1,69 @@ +--[[ + ********************************************** + *** Onion default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Onion") +local pname = "onion" +local step = 7 + +-- Onion +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.onion_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 4"}}, + {items = {"cucina_vegana:" .. pname .. " 2"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:seed_" .. pname, {seed_onion = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/onion_redo.lua b/mods/cucina_vegana/onion_redo.lua new file mode 100644 index 00000000..4c714c26 --- /dev/null +++ b/mods/cucina_vegana/onion_redo.lua @@ -0,0 +1,144 @@ +--[[ + ********************************************** + *** Onion redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Onion") +local pname = "onion" +local step = 7 +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + +-- chives +minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + minlight = cucina_vegana.plant_settings.onion_light, + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, +}) + +-- chives definition +local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.onion_light, + drop = "", + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_6.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_6", table.copy(crop_def)) + +-- stage 7 (final) +crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. " 3"}}, + {items = {"cucina_vegana:" .. pname .. "_seed 2"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed 3"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed 4"}, rarity = 3}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_" .. step, table.copy(crop_def)) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname .. "", { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:" .. pname .. "_seed", {seed_onion = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/overrides.lua b/mods/cucina_vegana/overrides.lua new file mode 100644 index 00000000..33e3aa3b --- /dev/null +++ b/mods/cucina_vegana/overrides.lua @@ -0,0 +1,56 @@ +local modname = minetest.get_current_modname() + +if(minetest.registered_items["bees:bottle_honey"] ~= nil) then + cucina_vegana.add_group("bees:bottle_honey", {food = 1, food_honey = 1}) + print("[MOD] " .. modname .. " Group changed on \"bees:bottle_honey\".") + minetest.log("info", "[MOD] " .. modname .. " Group changed on \"bees:bottle_honey\".") + +end + +if(minetest.registered_items["farming:bread"] ~= nil) then + cucina_vegana.add_group("farming:bread",{food_bread = 1}) + print("[MOD] " .. modname .. " Group changed on \"farming:bread\".") + minetest.log("info", "[MOD] " .. modname .. " Group changed on \"farming:bread\".") + +end + +if(minetest.registered_items["farming:bread_slice"] ~= nil) then + cucina_vegana.add_group("farming:bread_slice",{food_bread = 1}) + print("[MOD] " .. modname .. " Group changed on \"farming:bread_slice\".") + minetest.log("info", "[MOD] " .. modname .. " Group changed on \"farming:bread_slice\".") + +end + +if(minetest.registered_items["farming:pumpkin_bread"] ~= nil) then + cucina_vegana.add_group("farming:pumpkin_bread", {food_bread = 1}) + print("[MOD] " .. modname .. " Group changed on \"farming:pumpkin_bread\".") + minetest.log("info", "[MOD] " .. modname .. " Group changed on \"farming:pumpkin_bread\".") +end + +if(minetest.registered_items["farming_food:corn_bread"] ~= nil) then + cucina_vegana.add_group("farming_food:corn_bread",{food_bread = 1}) + print("[MOD] " .. modname .. " Group changed on \"farming_food:corn_bread\".") + minetest.log("info", "[MOD] " .. modname .. " Group changed on \"farming_food:corn_bread\".") + +end + +if(minetest.registered_items["farming:rice_bread"] ~= nil) then + cucina_vegana.add_group("farming:rice_bread", {food = 1, food_bread = 1}) + print("[MOD] " .. modname .. " Group changed on \"farming:rice_bread\".") + minetest.log("info", "[MOD] " .. modname .. " Group changed on \"farming:rice_bread\".") + +end + +if(minetest.registered_items["farming:rice"] ~= nil) then + cucina_vegana.add_group("farming:rice", {food = 1, food_rice = 1}) + print("[MOD] " .. modname .. " Group changed on \"farming:rice\".") + minetest.log("info", "[MOD] " .. modname .. " Group changed on \"farming:rice\".") + +end + +if(minetest.registered_items["farming:rice_flour"] ~= nil) then + cucina_vegana.add_group("farming:rice_flour", {food = 1, food_flour = 1}) + print("[MOD] " .. modname .. " Group changed on \"farming:rice_flour\".") + minetest.log("info", "[MOD] " .. modname .. " Group changed on \"farming:rice_flour\".") + +end diff --git a/mods/cucina_vegana/parsley.lua b/mods/cucina_vegana/parsley.lua new file mode 100644 index 00000000..0fa8708c --- /dev/null +++ b/mods/cucina_vegana/parsley.lua @@ -0,0 +1,17 @@ + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:dirt_with_dry_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.parsley_scale, + spread = {x = 70, y = 70, z = 70}, + seed = 23463, + octaves = 3, + persist = 0.6 + }, + y_min = 0, + y_max = 100, + decoration = "cucina_vegana:wild_parsley", +}) diff --git a/mods/cucina_vegana/parsley_default.lua b/mods/cucina_vegana/parsley_default.lua new file mode 100644 index 00000000..953fa14d --- /dev/null +++ b/mods/cucina_vegana/parsley_default.lua @@ -0,0 +1,71 @@ +--[[ + ********************************************** + *** Parsley default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Parsley") +local pname = "parsley" +local step = 5 + +-- Parsley +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.parsley_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 3"}}, + {items = {"cucina_vegana:" .. pname}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + sunlight_propagates = true, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +minetest.register_alias("parsley:parsley", "cucina_vegana:" .. pname) +minetest.register_alias("parsley:seed", "cucina_vegana:" .. pname .. "_seed") +minetest.register_alias("parsley:wild_parsley", "cucina_vegana:wild_" .. pname) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/parsley_redo.lua b/mods/cucina_vegana/parsley_redo.lua new file mode 100644 index 00000000..a118e117 --- /dev/null +++ b/mods/cucina_vegana/parsley_redo.lua @@ -0,0 +1,140 @@ +--[[ + ********************************************** + *** Parsley redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Parsley") +local pname = "parsley" +local step = 5 +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + +-- Parsley +minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + drawtype = "signlike", + minlight = cucina_vegana.plant_settings.parsley_light, + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, +}) + +-- Parsley definition +local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + minlight = cucina_vegana.plant_settings.parsley_light, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + +-- stage 5 (final) +crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild ") .. dname .. "", + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/peanut.lua b/mods/cucina_vegana/peanut.lua new file mode 100644 index 00000000..9a960441 --- /dev/null +++ b/mods/cucina_vegana/peanut.lua @@ -0,0 +1,17 @@ + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:dirt_with_dry_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.peanut_scale, + spread = {x = 70, y = 70, z = 70}, + seed = 62164, + octaves = 3, + persist = 0.6 + }, + y_min = 20, + y_max = 150, + decoration = "cucina_vegana:wild_peanut", +}) diff --git a/mods/cucina_vegana/peanut_default.lua b/mods/cucina_vegana/peanut_default.lua new file mode 100644 index 00000000..92d62a31 --- /dev/null +++ b/mods/cucina_vegana/peanut_default.lua @@ -0,0 +1,68 @@ +--[[ + ********************************************** + *** Peanut default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Peanut") +local pname = "peanut" +local step = 7 + +-- Peanut +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.peanut_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 4"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:seed_" .. pname, {seed_peanut = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/peanut_redo.lua b/mods/cucina_vegana/peanut_redo.lua new file mode 100644 index 00000000..a8f58db1 --- /dev/null +++ b/mods/cucina_vegana/peanut_redo.lua @@ -0,0 +1,143 @@ +--[[ + ********************************************** + *** Peanut redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Peanut") +local pname = "peanut" +local step = 7 +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + +-- chives +minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + minlight = cucina_vegana.plant_settings.peanut_light, + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, +}) + +-- chives definition +local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.peanut_light, + drop = "", + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_6.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_6", table.copy(crop_def)) + +-- stage 7 (final) +crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 2"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed 3"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed 4"}, rarity = 3}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_" .. step, table.copy(crop_def)) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname .. "", { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:" .. pname .. "_seed", {seed_peanut = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/potato.lua b/mods/cucina_vegana/potato.lua new file mode 100644 index 00000000..526846e5 --- /dev/null +++ b/mods/cucina_vegana/potato.lua @@ -0,0 +1,17 @@ + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt", "default:dirt_with_grass", "default:dry_dirt_with_dry_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.potato_scale, + spread = {x = 70, y = 70, z = 70}, + seed = 32768, + octaves = 3, + persist = 0.6 + }, + y_min = 0, + y_max = 100, + decoration = "cucina_vegana:wild_potato", +}) diff --git a/mods/cucina_vegana/potato_default.lua b/mods/cucina_vegana/potato_default.lua new file mode 100644 index 00000000..b571897a --- /dev/null +++ b/mods/cucina_vegana/potato_default.lua @@ -0,0 +1,69 @@ +--[[ + ********************************************** + *** Potato default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Potato") +local pname = "potato" +local step = 7 + +-- potato +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.potato_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 4"}}, + {items = {"cucina_vegana:" .. pname .. " 3"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:seed_" .. pname, {seed_potato = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/potato_redo.lua b/mods/cucina_vegana/potato_redo.lua new file mode 100644 index 00000000..a318a047 --- /dev/null +++ b/mods/cucina_vegana/potato_redo.lua @@ -0,0 +1,150 @@ +--[[ + ********************************************** + *** Potato redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Potato") +local pname = "potato" +local step = 7 + +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + +-- potato +minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + minlight = cucina_vegana.plant_settings.potato_light, + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, +}) + +-- potato definition +local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.potato_light, + drop = "", + selection_box = farming.select, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_6.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname}, rarity = 2}, + } } +minetest.register_node("cucina_vegana:" .. pname .. "_6", table.copy(crop_def)) + +-- stage 7 (final) +crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. " 4"}}, + {items = {"cucina_vegana:" .. pname .. "_seed 2"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed 3"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed 4"}, rarity = 3}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_" .. step, table.copy(crop_def)) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname .. "", { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname .. " 2"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy=3, dig_immediate=1, flammable=2, plant=1, attached_node = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:" .. pname .. "_seed", {seed_potato = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + + +end diff --git a/mods/cucina_vegana/recipes.lua b/mods/cucina_vegana/recipes.lua new file mode 100644 index 00000000..a862d2c5 --- /dev/null +++ b/mods/cucina_vegana/recipes.lua @@ -0,0 +1,884 @@ +-- ******************************************* +-- ***** Crafts ***** +-- ******************************************* + +-- ******************************************* +-- ***** Supports ***** +-- ******************************************* + +minetest.register_craft({ + output = "cucina_vegana:blueberry_pot", + recipe = { {"group:food_sugar", "default:stick", "group:food_sugar"}, + {"cucina_vegana:blueberry_puree", "cucina_vegana:blueberry_puree", "cucina_vegana:blueberry_puree"}, + {"", "bucket:bucket_water", ""} + }, + replacements = { + {"default:stick", "default:stick"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:blueberry_pot", + recipe = { {"group:food_sugar", "default:stick", "group:food_sugar"}, + {"cucina_vegana:blueberry_puree", "cucina_vegana:blueberry_puree", "cucina_vegana:blueberry_puree"}, + {"", "bucket:bucket_river_water", ""} + }, + replacements = { + {"default:stick", "default:stick"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:blueberry_pot", + recipe = { {"cucina_vegana:molasses", "default:stick", "cucina_vegana:molasses"}, + {"cucina_vegana:blueberry_puree", "cucina_vegana:blueberry_puree", "cucina_vegana:blueberry_puree"}, + {"", "bucket:bucket_water", ""} + }, + replacements = { + {"default:stick", "default:stick"}, + {"cucina_vegana:molasses", "vessels:drinking_glass 2"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:blueberry_pot", + recipe = { {"cucina_vegana:molasses", "default:stick", "cucina_vegana:molasses"}, + {"cucina_vegana:blueberry_puree", "cucina_vegana:blueberry_puree", "cucina_vegana:blueberry_puree"}, + {"", "bucket:bucket_river_water", ""} + }, + replacements = { + {"default:stick", "default:stick"}, + {"cucina_vegana:molasses", "vessels:drinking_glass 2"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:bowl 5", + recipe = { {"default:glass", "", "default:glass"}, + {"default:glass", "default:glass", "default:glass"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:ciabatta_dough", + recipe = { {"cucina_vegana:soy_milk", "cucina_vegana:sunflower_seeds_oil", ""}, + {"group:food_flour", "cucina_vegana:rosemary", ""} + }, + replacements = { + {"cucina_vegana:soy_milk", "vessels:drinking_glass"}, + {"cucina_vegana:sunflower_seeds_oil", "vessels:glass_bottle"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:coffe_cup 4", + recipe = { {"cucina_vegana:coffee_powder", "bucket:bucket_water", "default:paper"}, + {"group:food_milk", "cucina_vegana:coffee_powder", ""} + }, + replacements = { + {"group:food_milk", "vessels:drinking_glass"}, + {"bucket:bucket_water", "bucket:bucket_empty"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:coffee_cup 4", + recipe = { {"cucina_vegana:coffee_powder", "bucket:bucket_river_water", "default:paper"}, + {"group:food_milk", "cucina_vegana:coffee_powder", ""} + }, + replacements = { + {"group:food_milk", "vessels:drinking_glass"}, + {"bucket:bucket_river_water", "bucket:bucket_empty"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:coffee_powder", + recipe = { {"group:stone", "cucina_vegana:coffee_beans_roasted", "group:stone"}, + {"group:stone", "cucina_vegana:coffee_beans_roasted", "group:stone"} + }, + replacements = { + {"group:stone", "default:stone"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:dandelion_suds", + recipe = { {"flowers:dandelion_yellow", "flowers:dandelion_yellow", "flowers:dandelion_yellow"}, + {"flowers:dandelion_yellow", "flowers:dandelion_yellow", "flowers:dandelion_yellow"}, + {"", "bucket:bucket_water", ""} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:dandelion_suds", + recipe = { {"flowers:dandelion_yellow", "flowers:dandelion_yellow", "flowers:dandelion_yellow"}, + {"flowers:dandelion_yellow", "flowers:dandelion_yellow", "flowers:dandelion_yellow"}, + {"", "bucket:bucket_river_water", ""} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:flax_seed_oil", + recipe = { {"group:seed_flax", "group:seed_flax", "group:seed_flax"}, + {"group:seed_flax", "group:seed_flax", "group:seed_flax"}, + {"", "vessels:glass_bottle", ""} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:lettuce_oil", + recipe = { {"group:seed_lettuce", "group:seed_lettuce", "group:seed_lettuce"}, + {"group:seed_lettuce", "group:seed_lettuce", "group:seed_lettuce"}, + {"", "vessels:glass_bottle", ""} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:peanut_oil", + recipe = { {"group:seed_peanut", "group:seed_peanut", "group:seed_peanut"}, + {"group:seed_peanut", "group:seed_peanut", "group:seed_peanut"}, + {"", "vessels:glass_bottle", ""} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:corn_oil", + recipe = { {"cucina_vegana:seed_corn", "cucina_vegana:seed_corn", "cucina_vegana:seed_corn"}, + {"cucina_vegana:seed_corn", "cucina_vegana:seed_corn", "cucina_vegana:seed_corn"}, + {"", "vessels:glass_bottle", ""} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:mushroomlight_glass 4", + recipe = { + {"","default:glass",""}, + {"default:glass","default:torch","default:glass"}, + {"","default:glass",""}, + } +}) + + +minetest.register_craft({ + output = "cucina_vegana:pizza_dough", + recipe = { {"group:food_milk", "group:food_oil", "group:food_cheese"}, + {"group:food_flour", "group:food_flour", "group:food_flour"} + }, + replacements = { + {"group:food_milk", "vessels:glass_bottle"}, + {"group:food_oil", "vessels:glass_bottle"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:pizza_vegana_raw", + recipe = { {"", "cucina_vegana:sauce_hollandaise", ""}, + {"cucina_vegana:asparagus", "cucina_vegana:lettuce", "cucina_vegana:rosemary"}, + {"", "group:pizza_dough", ""} + }, + replacements = { + {"cucina_vegana:sauce_hollandaise", "vessels:glass_bottle"}, + } + +}) + +minetest.register_craft({ + output = "cucina_vegana:pizza_funghi_raw", + recipe = { {"", "group:food_oil", "cucina_vegana:rosemary"}, + {"flowers:mushroom_brown", "cucina_vegana:imitation_meat", "flowers:mushroom_brown"}, + {"", "group:pizza_dough", ""} + }, + replacements = { + {"group:food_oil", "vessels:glass_bottle"}, + } + +}) + +minetest.register_craft({ + output = "cucina_vegana:plate 5", + recipe = { {"group:wood", "", "group:wood"}, + {"group:wood", "default:cobble", "group:wood"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:plate 2", + recipe = { {"default:clay_lump", "", "default:clay_lump"}, + {"default:clay_lump", "default:cobble", "default:clay_lump"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:plate 10", + recipe = { {"default:steel_ingot", "", "default:steel_ingot"}, + {"default:steel_ingot", "default:cobble", "default:steel_ingot"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:plate 10", + recipe = { {"default:copper_ingot", "", "default:copper_ingot"}, + {"default:copper_ingot", "default:cobble", "default:copper_ingot"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:plate 10", + recipe = { {"default:tin_ingot", "", "default:tin_ingot"}, + {"default:tin_ingot", "default:cobble", "default:tin_ingot"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:sunflower_seeds_flour", + recipe = { {"default:stone", "default:stone", "default:stone"}, + {"cucina_vegana:sunflower_seeds", "cucina_vegana:sunflower_seeds", "cucina_vegana:sunflower_seeds"}, + {"default:cobble", "default:cobble", "default:cobble"} + }, + replacements = { + {"default:stone", "default:stone 3"}, + {"default:cobble", "default:cobble 3"} + } + +}) + +minetest.register_craft({ + output = "cucina_vegana:sunflower_seeds_flour", + recipe = { {"default:stone", "default:stone", "default:stone"}, + {"cucina_vegana:sunflower_seeds", "cucina_vegana:sunflower_seeds", "cucina_vegana:sunflower_seeds"}, + {"default:desert_cobble", "default:desert_cobble", "default:desert_cobble"} + }, + replacements = { + {"default:stone", "default:stone 3"}, + {"default:desert_cobble", "default:desert_cobble 3"} + } + +}) + +minetest.register_craft({ + output = "cucina_vegana:sunflower_seeds_flour", + recipe = { {"default:desert_stone", "default:desert_stone", "default:desert_stone"}, + {"cucina_vegana:sunflower_seeds", "cucina_vegana:sunflower_seeds", "cucina_vegana:sunflower_seeds"}, + {"default:cobble", "default:cobble", "default:cobble"} + }, + replacements = { + {"default:desert_stone", "default:desert_stone 3"}, + {"default:cobble", "default:cobble 3"} + } + +}) + +minetest.register_craft({ + output = "cucina_vegana:sunflower_seeds_flour", + recipe = { {"default:desert_stone", "default:desert_stone", "default:desert_stone"}, + {"cucina_vegana:sunflower_seeds", "cucina_vegana:sunflower_seeds", "cucina_vegana:sunflower_seeds"}, + {"default:desert_cobble", "default:desert_cobble", "default:desert_cobble"} + }, + replacements = { + {"default:desert_stone", "default:desert_stone 3"}, + {"default:desert_cobble", "default:desert_cobble 3"} + } + +}) + +minetest.register_craft({ + output = "cucina_vegana:rice_flour", + recipe = { {"default:stone", "default:stone", "default:stone"}, + {"cucina_vegana:rice", "cucina_vegana:rice", "cucina_vegana:rice"}, + {"default:cobble", "default:cobble", "default:cobble"} + }, + replacements = { + {"default:stone", "default:stone 3"}, + {"default:cobble", "default:cobble 3"} + } + +}) + +minetest.register_craft({ + output = "cucina_vegana:rice_flour", + recipe = { {"default:desert_stone", "default:desert_stone", "default:desert_stone"}, + {"cucina_vegana:rice", "cucina_vegana:rice", "cucina_vegana:rice"}, + {"default:cobble", "default:cobble", "default:cobble"} + }, + replacements = { + {"default:desert_stone", "default:desert_stone 3"}, + {"default:cobble", "default:cobble 3"} + } + +}) + +minetest.register_craft({ + output = "cucina_vegana:rice_flour", + recipe = { {"default:desert_stone", "default:desert_stone", "default:desert_stone"}, + {"cucina_vegana:rice", "cucina_vegana:rice", "cucina_vegana:rice"}, + {"default:desert_cobble", "default:desert_cobble", "default:desert_cobble"} + }, + replacements = { + {"default:desert_stone", "default:desert_stone 3"}, + {"default:desert_cobble", "default:desert_cobble 3"} + } + +}) + +minetest.register_craft({ + output = "cucina_vegana:rice_flour", + recipe = { {"default:stone", "default:stone", "default:stone"}, + {"cucina_vegana:rice", "cucina_vegana:rice", "cucina_vegana:rice"}, + {"default:desert_cobble", "default:desert_cobble", "default:desert_cobble"} + }, + replacements = { + {"default:stone", "default:stone 3"}, + {"default:cobble", "default:cobble 3"} + } + +}) + +minetest.register_craft({ + output = "cucina_vegana:rice_starch 2", + recipe = { {"wool:white", "cucina_vegana:rice", "wool:white"}, + {"wool:white", "cucina_vegana:rice", "wool:white"}, + {"", "bucket:bucket_water", ""} + }, + replacements = { + {"wool:white", "farming:cotton 2"}, + {"bucket:bucket_water", "bucket:bucket_empty"} + } + +}) + +minetest.register_craft({ + output = "cucina_vegana:rice_starch 2", + recipe = { {"wool:white", "cucina_vegana:rice", "wool:white"}, + {"wool:white", "cucina_vegana:rice", "wool:white"}, + {"", "bucket:bucket_river_water", ""} + }, + replacements = { + {"wool:white", "farming:cotton 2"}, + {"bucket:bucket_river_water", "bucket:bucket_empty"} + } + +}) + +minetest.register_craft({ + output = "wool:white", + recipe = { {"cucina_vegana:flax_roasted", "cucina_vegana:flax_roasted", "cucina_vegana:flax_roasted"}, + {"cucina_vegana:flax_roasted", "cucina_vegana:flax_roasted", "cucina_vegana:flax_roasted"}, + } +}) + +-- ******************************************* +-- ***** Imitations ***** +-- ******************************************* + +minetest.register_craft({ + output = "cucina_vegana:imitation_butter", + recipe = { {"group:dye,color_yellow", "cucina_vegana:soy_milk", "cucina_vegana:soy_milk"} + }, + replacements = { + {"cucina_vegana:soy_milk", "vessels:drinking_glass 2"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:imitation_cheese", + recipe = { {"group:dye,color_orange","cucina_vegana:imitation_butter", "cucina_vegana:imitation_butter"} + }, +}) + +minetest.register_craft({ + output = "cucina_vegana:imitation_fish", + recipe = { + {"group:dye,color_blue","cucina_vegana:tofu", "group:dye,color_blue"}, + {"cucina_vegana:tofu","cucina_vegana:tofu", "cucina_vegana:tofu"}, + {"","cucina_vegana:tofu", ""}, + + }, +}) + +minetest.register_craft({ + output = "cucina_vegana:imitation_meat", + recipe = { {"group:dye,color_red", "cucina_vegana:tofu", "group:dye,color_white"}, + {"", "cucina_vegana:tofu", ""}, + {"", "cucina_vegana:tofu", ""} + }, +}) + +minetest.register_craft({ + output = "cucina_vegana:imitation_poultry", + recipe = { {"cucina_vegana:tofu", "", "group:dye,color_yellow"}, + {"", "cucina_vegana:tofu", ""}, + {"cucina_vegana:tofu", "cucina_vegana:tofu", "cucina_vegana:tofu"} + }, +}) + +minetest.register_craft({ + output = "cucina_vegana:soy_milk", + recipe = { + {"cucina_vegana:soy", "cucina_vegana:soy", "cucina_vegana:soy"}, + {"", "cucina_vegana:soy", ""}, + {"", "vessels:drinking_glass", ""}, + }, +}) + +minetest.register_craft({ + output = "cucina_vegana:tofu", + recipe = { + {"cucina_vegana:soy", "cucina_vegana:soy", "cucina_vegana:soy"}, + {"cucina_vegana:soy", "cucina_vegana:soy", "cucina_vegana:soy"}, + {"cucina_vegana:soy", "cucina_vegana:soy", "cucina_vegana:soy"}, + }, +}) + +-- ******************************************* +-- ***** Side Dishes ***** +-- ******************************************* + +minetest.register_craft({ + output = "cucina_vegana:blueberry_jam", + recipe = { {"cucina_vegana:blueberry_pot_cooked", "", ""}, + {"group:wool", "", ""}, + {"vessels:glass_bottle", "", ""} + }, + replacements = { + {"cucina_vegana:blueberry_pot_cooked", "bucket:bucket_empty"}, + {"group:wool", "farming:cotton"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:cucumber_in_glass", + recipe = { {"cucina_vegana:cucumber", "cucina_vegana:cucumber", "cucina_vegana:cucumber"}, + {"", "cucina_vegana:cucumber", ""}, + {"", "vessels:glass_bottle", ""} + }, +}) + +minetest.register_craft({ + output = "cucina_vegana:bowl_rice", + recipe = { + {"cucina_vegana:rice"}, + {"bucket:bucket_water"}, + {"group:food_bowl"}, + }, + replacements = { + {"bucket:bucket_water", "bucket:bucket_empty"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:bowl_rice", + recipe = { + {"cucina_vegana:rice"}, + {"bucket:bucket_river_water"}, + {"group:food_bowl"}, + }, + replacements = { + {"bucket:bucket_river_water", "bucket:bucket_empty"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:dandelion_honey", + recipe = { {"cucina_vegana:dandelion_suds_cooking", "", ""}, + {"group:wool", "", ""}, + {"vessels:glass_bottle", "", ""} + }, + replacements = { + {"cucina_vegana:dandelion_suds_cooking", "bucket:bucket_empty"}, + {"group:wool", "farming:cotton 2"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:edamame", + recipe = { {"cucina_vegana:rosemary", "group:seed_soy", "cucina_vegana:peanut"}, + {"group:seed_soy", "group:seed_soy", "group:seed_soy"}, + {"", "group:food_plate", ""} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:sauce_hollandaise", + recipe = { {"cucina_vegana:parsley", "group:food_butter", "cucina_vegana:rosemary"}, + {"", "cucina_vegana:soy_milk", ""}, + {"", "vessels:glass_bottle", ""} + }, + replacements = { + {"cucina_vegana:soy_milk", "vessels:glass_bottle"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:sunflower_seeds_oil", + recipe = { {"cucina_vegana:sunflower_seeds", "cucina_vegana:sunflower_seeds", "cucina_vegana:sunflower_seeds"}, + {"cucina_vegana:sunflower_seeds", "cucina_vegana:sunflower_seeds", "cucina_vegana:sunflower_seeds"}, + {"", "vessels:glass_bottle", ""} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:molasses", + recipe = { + {"", "default:stick", ""}, + {"cucina_vegana:kohlrabi", "vessels:drinking_glass", "cucina_vegana:kohlrabi"}, + {"", "bucket:bucket_water", ""}, + }, + replacements = { + {"bucket:bucket_water", "bucket:bucket_empty"}, + {"default:stick", "default:stick"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:molasses", + recipe = { + {"", "default:stick", ""}, + {"cucina_vegana:kohlrabi", "vessels:drinking_glass", "cucina_vegana:kohlrabi"}, + {"", "bucket:bucket_river_water", ""}, + }, + replacements = { + {"bucket:bucket_river_water", "bucket:bucket_empty"}, + {"default:stick", "default:stick"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:peanut_butter", + recipe = { + {"cucina_vegana:peanut", "default:stick", "cucina_vegana:peanut"}, + {"cucina_vegana:peanut", "group:food_butter", "cucina_vegana:peanut"}, + {"", "vessels:glass_bottle", ""}, + }, + replacements = { + {"default:stick", "default:stick"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:vegan_strawberry_milk", + recipe = { + {"cucina_vegana:strawberry", "default:stick", "cucina_vegana:strawberry"}, + {"cucina_vegana:strawberry", "cucina_vegana:strawberry", "cucina_vegana:strawberry"}, + {"", "cucina_vegana:soy_milk", ""}, + }, + replacements = { + {"default:stick", "default:stick"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:vegan_strawberry_milk", + recipe = { + {"group:food_strawberry", "default:stick", "group:food_strawberry"}, + {"group:food_strawberry", "group:food_strawberry", "group:food_strawberry"}, + {"", "cucina_vegana:soy_milk", ""}, + }, + replacements = { + {"default:stick", "default:stick"}, + } +}) +-- ******************************************* +-- ***** Dinners ***** +-- ******************************************* + +minetest.register_craft({ + output = "cucina_vegana:asparagus_hollandaise", + recipe = { {"cucina_vegana:asparagus", "cucina_vegana:sauce_hollandaise", "cucina_vegana:parsley"}, + {"", "group:food_plate", ""} + }, + replacements = { {"group:food_sauce", "vessels:glass_bottle"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:asparagus_rice", + recipe = { + {"cucina_vegana:asparagus", "group:food_rice", "group:food_butter"}, + {"", "group:food_plate", ""} + }, + replacements = { + {"group:food_rice", "cucina_vegana:bowl"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:asparagus_soup", + recipe = { {"cucina_vegana:chives", "group:food_oil", "cucina_vegana:asparagus"}, + {"", "cucina_vegana:soy_milk", ""}, + {"", "group:food_plate", ""} + }, + replacements = {{"group:food_milk", "vessels:glass_bottle"}, + {"group:food_oil", "vessels:glass_bottle"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:fish_parsley_rosemary", + recipe = { + {"cucina_vegana:parsley","group:food_oil", "cucina_vegana:rosemary"}, + {"","group:food_fish", ""}, + {"","group:food_plate", ""}, + }, + replacements = { + {"group:food_oil", "vessels:glass_bottle"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:fryer_raw", + recipe = { + {"default:paper","", "default:paper"}, + {"cucina_vegana:parsley","cucina_vegana:molasses", "cucina_vegana:rosemary"}, + {"","cucina_vegana:imitation_poultry", ""}, + }, + replacements = { + {"cucina_vegana:molasses", "vessels:drinking_glass"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:fryer_raw", + recipe = { + {"default:paper","", "default:paper"}, + {"cucina_vegana:potato","cucina_vegana:parsley", "cucina_vegana:potato"}, + {"cucina_vegana:carrot","cucina_vegana:imitation_poultry", "cucina_vegana:carrot"}, + }, +}) + +minetest.register_craft({ + output = "cucina_vegana:kohlrabi_soup", + recipe = { {"cucina_vegana:kohlrabi", "group:food_oil", "cucina_vegana:parsley"}, + {"", "bucket:bucket_water", ""}, + {"", "group:food_plate", ""} + }, + replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}, + {"group:food_oil", "vessels:glass_bottle"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:kohlrabi_soup", + recipe = { {"cucina_vegana:kohlrabi", "group:food_oil", "cucina_vegana:parsley"}, + {"", "bucket:bucket_river_water", ""}, + {"", "group:food_plate", ""} + }, + replacements = {{"bucket:bucket_river_water", "bucket:bucket_empty"}, + {"group:food_oil", "vessels:glass_bottle"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:salad_bowl", + recipe = { {"cucina_vegana:parsley", "cucina_vegana:lettuce", "cucina_vegana:chives"}, + {"", "group:food_oil", ""}, + {"", "group:food_bowl", ""} + }, + replacements = { + {"group:food_oil", "vessels:glass_bottle"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:salad_hollandaise", + recipe = { + {"cucina_vegana:sauce_hollandaise", "cucina_vegana:salad_bowl", ""} + }, + replacements = { + {"cucina_vegana:sauce_hollandaise", "vessels:glass_bottle"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:salad_hollandaise", + recipe = { {"cucina_vegana:parsley", "cucina_vegana:lettuce", "cucina_vegana:chives"}, + {"cucina_vegana:sauce_hollandaise", "group:food_oil", ""}, + {"", "group:food_bowl", ""} + }, + replacements = { + {"group:food_oil", "vessels:glass_bottle"}, + {"cucina_vegana:sauce_hollandaise", "vessels:glass_bottle"} + } + +}) + +minetest.register_craft({ + output = "cucina_vegana:sea_salad", + recipe = { {"default:jungleleaves", "cucina_vegana:parsley", "cucina_vegana:lettuce"}, + {"cucina_vegana:chives", "bucket:bucket_water", "cucina_vegana:asparagus"}, + {"", "group:food_bowl", ""} + }, + replacements = { + {"bucket:bucket_water", "bucket:bucket_empty"}, + } + +}) + +minetest.register_craft({ + output = "cucina_vegana:soy_soup", + recipe = { {"cucina_vegana:chives", "group:food_oil", "cucina_vegana:parsley"}, + {"", "cucina_vegana:soy_milk", ""}, + {"", "group:food_plate", ""} + }, + replacements = {{"group:food_milk", "vessels:glass_bottle"}, + {"group:food_oil", "vessels:glass_bottle"}, + } +}) + +minetest.register_craft({ + output = "cucina_vegana:tofu_chives_rosemary", + recipe = { {"cucina_vegana:chives", "", "cucina_vegana:rosemary"}, + {"", "cucina_vegana:tofu", ""}, + {"", "group:food_plate", ""} + }, +}) + +minetest.register_craft({ + output = "cucina_vegana:vegan_sushi", + recipe = { {"cucina_vegana:imitation_fish", "cucina_vegana:bowl_rice", ""}, + {"default:papyrus", "", ""} + }, + replacements = { + {"cucina_vegana:bowl_rice", "cucina_vegana:bowl"} + } +}) + +-- ******************************************* +-- ***** Miscelanous ***** +-- ******************************************* + +minetest.register_craft({ + type = "shapeless", + output = "cucina_vegana:sunflower_seeds 4", + recipe = {"flowers:sunflower"}, + replacements = { + {"flowers:sunflower", "dye:yellow"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:sunflower_seeds_dough", + recipe = { {"", "cucina_vegana:sunflower_seeds", ""}, + {"farming:flour", "farming:flour", "farming:flour"} + } +}) + +minetest.register_craft({ + output = "cucina_vegana:sunflower_seeds_dough", + recipe = { {"", "cucina_vegana:sunflower_seeds", ""}, + {"group:food_flour", "group:food_flour", "group:food_flour"} + } +}) + + +minetest.register_craft({ + output = "default:paper 4", + recipe = { {"default:stone", "cucina_vegana:flax_roasted", "default:stone"}, + {"default:stone", "cucina_vegana:flax_roasted", "default:stone"}, + {"", "bucket:bucket_water", ""}, + }, + replacements = { + {"default:stone", "default:stone 4"}, + {"bucket:bucket_water", "bucket:bucket_empty"}, + } +}) + +minetest.register_craft({ + output = "default:paper 4", + recipe = { {"default:desert_stone", "cucina_vegana:flax_roasted", "default:desert_stone"}, + {"default:desert_stone", "cucina_vegana:flax_roasted", "default:desert_stone"}, + {"", "bucket:bucket_water", ""}, + }, + replacements = { + {"default:desert_stone", "default:desert_stone 4"}, + {"bucket:bucket_water", "bucket:bucket_empty"}, + } +}) + +minetest.register_craft({ + output = "default:paper 4", + recipe = { {"default:cobble", "cucina_vegana:flax_roasted", "default:cobble"}, + {"default:cobble", "cucina_vegana:flax_roasted", "default:cobble"}, + {"", "bucket:bucket_water", ""}, + }, + replacements = { + {"default:cobble", "default:cobble 4"}, + {"bucket:bucket_water", "bucket:bucket_empty"}, + } +}) + +minetest.register_craft({ + output = "default:paper 4", + recipe = { {"default:desert_cobble", "cucina_vegana:flax_roasted", "default:desert_cobble"}, + {"default:desert_cobble", "cucina_vegana:flax_roasted", "default:desert_cobble"}, + {"", "bucket:bucket_water", ""}, + }, + replacements = { + {"default:desert_cobble", "default:desert_cobble 4"}, + {"bucket:bucket_water", "bucket:bucket_empty"}, + } +}) + +minetest.register_craft({ + output = "default:paper 4", + recipe = { {"default:stone", "cucina_vegana:flax_roasted", "default:stone"}, + {"default:stone", "cucina_vegana:flax_roasted", "default:stone"}, + {"", "bucket:bucket_river_water", ""}, + }, + replacements = { + {"default:stone", "default:stone 4"}, + {"bucket:bucket_river_water", "bucket:bucket_empty"}, + } +}) + +minetest.register_craft({ + output = "default:paper 4", + recipe = { {"default:desert_stone", "cucina_vegana:flax_roasted", "default:desert_stone"}, + {"default:desert_stone", "cucina_vegana:flax_roasted", "default:desert_stone"}, + {"", "bucket:bucket_river_water", ""}, + }, + replacements = { + {"default:desert_stone", "default:desert_stone 4"}, + {"bucket:bucket_river_water", "bucket:bucket_empty"}, + } +}) + +minetest.register_craft({ + output = "default:paper 4", + recipe = { {"default:cobble", "cucina_vegana:flax_roasted", "default:cobble"}, + {"default:cobble", "cucina_vegana:flax_roasted", "default:cobble"}, + {"", "bucket:bucket_river_water", ""}, + }, + replacements = { + {"default:cobble", "default:cobble 4"}, + {"bucket:bucket_river_water", "bucket:bucket_empty"}, + } +}) + +minetest.register_craft({ + output = "default:paper 4", + recipe = { {"default:desert_cobble", "cucina_vegana:flax_roasted", "default:desert_cobble"}, + {"default:desert_cobble", "cucina_vegana:flax_roasted", "default:desert_cobble"}, + {"", "bucket:bucket_river_water", ""}, + }, + replacements = { + {"default:desert_cobble", "default:desert_cobble 4"}, + {"bucket:bucket_river_water", "bucket:bucket_empty"}, + } +}) + +minetest.register_craft({ + output = "farming:cotton 2", + recipe = { + {"cucina_vegana:flax_roasted","default:stick","cucina_vegana:flax_roasted"}, + }, + replacements = { + {"default:stick", "default:stick"}, + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "cucina_vegana:seed_corn 10", + recipe = {"cucina_vegana:corn"}, +}) diff --git a/mods/cucina_vegana/recipes_5xx.lua b/mods/cucina_vegana/recipes_5xx.lua new file mode 100644 index 00000000..d048dc7d --- /dev/null +++ b/mods/cucina_vegana/recipes_5xx.lua @@ -0,0 +1,82 @@ +-- ******************************************* +-- ** Support for 5.0 ** +-- ******************************************* + +local modname = minetest.get_current_modname() + +local nodes = { + { + name = "default:sand_with_kelp", -- Name + output = "cucina_vegana:vegan_sushi", -- Output + recipe = { -- Recipe + {"cucina_vegana:imitation_fish", "cucina_vegana:bowl_rice", ""}, + {"default:sand_with_kelp", "", ""} + }, + --repclaements = nil -- Replacements + -- replacements = {{"cucina_vegana:molasses", "vessels:drinking_glass"}} + }, + { + name = "flowers:waterlily", -- Name + output = "cucina_vegana:sea_salad", + recipe = { + {"flowers:waterlily","cucina_vegana:parsley", "cucina_vegana:lettuce"}, + {"cucina_vegana:chives","bucket:bucket_water", "cucina_vegana:asparagus"}, + {"","cucina_vegana:bowl", ""}, + }, + replacements = { + {"bucket:bucket_water", "bucket:bucket_empty"}, + }, + }, + + --repclaements = nil -- Replacements + -- replacements = {{"cucina_vegana:molasses", "vessels:drinking_glass"}} + } + + +for node, value in ipairs(nodes) do + --print("[MT 5.x.x] Found " .. value.name .. " to register.") + if(minetest.registered_nodes[value.name] or minetest.registered_items[value.name]) then + minetest.register_craft({ + output = value.output, + recipe = value.recipe, + replacements = value.replacements + }) + + minetest.log("info", "[MOD] " .. modname .. " Added a 5.x.x-Recipe with " .. value.name .. "\".") + --print("[MT 5.x.x] " .. value.output .. " Recipe with " .. value.name .. " registered.") + + end -- if(minetest.registered_nodes + +end -- for node + +local berries = { + "default:blueberries", + "farming:blueberries", + "bushes:blueberry" + } + +local press = { + "default:stone", + "default:cobble", + "default:desert_stone", + "default:desert_cobble" + } + +for bkey,berry in ipairs(berries) do + for mkey,mat in ipairs(press) do + minetest.log("info", "[MOD] " .. modname .. " Registering Berry: " .. berry .. " with " .. mat .. ".") + minetest.register_craft({ + output = "cucina_vegana:blueberry_puree", + recipe = { + {mat, berry, berry}, + {mat, berry, berry}, + {mat, berry, berry}, + }, + replacements = { + {mat, mat .. " 3"} + } + }) -- minetest.register_craft + + end -- for mkey, mat + +end -- for bkey, berry diff --git a/mods/cucina_vegana/recipes_cook.lua b/mods/cucina_vegana/recipes_cook.lua new file mode 100644 index 00000000..bba661c1 --- /dev/null +++ b/mods/cucina_vegana/recipes_cook.lua @@ -0,0 +1,179 @@ +-- ******************************************* +-- ***** Cookings ***** +-- ******************************************* + +minetest.register_craft({ + type = "cooking", + cooktime = 18, + output = "cucina_vegana:asparagus_hollandaise_cooked", + recipe = "cucina_vegana:asparagus_hollandaise" +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 10, + output = "cucina_vegana:asparagus_rice_cooked", + recipe = "cucina_vegana:asparagus_rice" +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 15, + output = "cucina_vegana:asparagus_soup_cooked", + recipe = "cucina_vegana:asparagus_soup" +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 25, + output = "cucina_vegana:blueberry_pot_cooked", + recipe = "cucina_vegana:blueberry_pot" +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 20, + output = "cucina_vegana:bowl_rice_cooked", + recipe = "cucina_vegana:bowl_rice" +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 17, + output = "cucina_vegana:ciabatta_bread", + recipe = "cucina_vegana:ciabatta_dough" +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 20, + output = "cucina_vegana:dandelion_suds_cooking", + recipe = "cucina_vegana:dandelion_suds" +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 7, + output = "cucina_vegana:edamame_cooked", + recipe = "cucina_vegana:edamame" +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 25, + output = "cucina_vegana:fryer", + recipe = "cucina_vegana:fryer_raw" +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 18, + output = "cucina_vegana:fish_parsley_rosemary_cooked", + recipe = "cucina_vegana:fish_parsley_rosemary" +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 20, + output = "cucina_vegana:kohlrabi_roasted", + recipe = "cucina_vegana:kohlrabi" +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 15, + output = "cucina_vegana:kohlrabi_soup_cooked", + recipe = "cucina_vegana:kohlrabi_soup" +}) + + +minetest.register_craft({ + type = "cooking", + output = "cucina_vegana:peanut", + recipe = "group:seed_peanut", + cooktime = 5, +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 18, + output = "cucina_vegana:pizza_vegana", + recipe = "cucina_vegana:pizza_vegana_raw" +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 18, + output = "cucina_vegana:pizza_funghi", + recipe = "cucina_vegana:pizza_funghi_raw" +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 15, + output = "cucina_vegana:soy_soup_cooked", + recipe = "cucina_vegana:soy_soup" +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 14, + output = "bushes:sugar", + recipe = "cucina_vegana:molasses", + replacements = {{"cucina_vegana:molasses", "vessels:drinking_glass"}} +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 15, + output = "cucina_vegana:sunflower_seeds_bread", + recipe = "cucina_vegana:sunflower_seeds_dough" +}) + +minetest.register_craft({ + type = "cooking", + output = "cucina_vegana:sunflower_seeds_roasted", + recipe = "cucina_vegana:sunflower_seeds" +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 18, + output = "cucina_vegana:tofu_chives_rosemary_cooked", + recipe = "cucina_vegana:tofu_chives_rosemary" +}) + +minetest.register_craft({ + type = "cooking", + output = "cucina_vegana:tofu_cooked", + recipe = "cucina_vegana:tofu", + cooktime = 5, +}) + +minetest.register_craft({ + type = "cooking", + output = "cucina_vegana:flax_roasted", + recipe = "cucina_vegana:flax", + cooktime = 10, +}) + +minetest.register_craft({ + type = "cooking", + output = "cucina_vegana:popcorn", + recipe = "cucina_vegana:corn", + cooktime = 8, +}) + +minetest.register_craft({ + type = "cooking", + output = "cucina_vegana:coffee_beans_roasted", + recipe = "cucina_vegana:coffee_beans_raw", + cooktime = 8, +}) + +minetest.register_craft({ + type = "cooking", + output = "cucina_vegana:coffee_cup_hot", + recipe = "cucina_vegana:coffee_cup", + cooktime = 10, +}) diff --git a/mods/cucina_vegana/recipes_support.lua b/mods/cucina_vegana/recipes_support.lua new file mode 100644 index 00000000..e2609abd --- /dev/null +++ b/mods/cucina_vegana/recipes_support.lua @@ -0,0 +1,642 @@ +-- ******************************************* +-- ** Recipe differences ** +-- ******************************************* + +local modname = minetest.get_current_modname() + +-- ******************************************* +-- ** Additional Recipes with other Mods ** +-- ******************************************* + +--[[ + ************************************************** + *** Support for mobs *** + ************************************************** +]]-- + +if minetest.get_modpath("mobs") then + + minetest.register_craft({ + output = "mobs:meat_raw", + recipe = { + {"cucina_vegana:tofu", "cucina_vegana:tofu", "cucina_vegana:tofu"} + } + }) + + minetest.register_craft({ + output = "mobs:chicken_raw", + recipe = { + {"", "", "cucina_vegana:tofu"}, + {"", "cucina_vegana:tofu", ""}, + {"cucina_vegana:tofu", "", ""}, + } + }) + + minetest.log("info", "[MOD] " .. modname .. ": mobs supported.") + +end -- if minetest.get_modpath("mobs" + +--[[ + ************************************************** + *** Support for animalmaterials *** + ************************************************** +]]-- + +if minetest.get_modpath("animalmaterials") then + + minetest.register_craft({ + output = "animalmaterials:milk", + recipe = { + {"cucina_vegana:milk", "cucina_vegana:milk", "cucina_vegana:milk"}, + {"", "vessels:glass_bottle", ""} + }, + replacements = {{"cucina_vegana:milk", "vessels:drinking_glass"}} + }) + + minetest.log("info", "[MOD] " .. modname .. ": animalmaterials supported.") + +end -- if minetest.get_modpath("animalmaterials" + +--[[ + ************************************************** + *** Support for fishing *** + ************************************************** +]]-- + +if minetest.get_modpath("fishing") then + + cucina_vegana.add_group("fishing:fish_raw", {food_fish = 1}) + cucina_vegana.add_group("fishing:clownfish_raw", {food_fish = 1}) + cucina_vegana.add_group("fishing:bluewhite_raw", {food_fish = 1}) + cucina_vegana.add_group("fishing:exoticfish_raw", {food_fish = 1}) + cucina_vegana.add_group("fishing:carp_raw", {food_fish = 1}) + cucina_vegana.add_group("fishing:perch_raw", {food_fish = 1}) + cucina_vegana.add_group("fishing:catfish_raw", {food_fish = 1}) + + minetest.register_craft({ + type = "shapeless", + output = "fishing:sushi", + recipe = {"group:food_fish","group:food_rice","flowers:seaweed"}, + replacements = {{"group:food_rice", "cucina_vegana:bowl"}} + }) + + minetest.register_craft({ + type = "shapeless", + output = "fishing:sushi", + recipe = {"group:food_fish","group:food_rice","seaplants:kelpgreen"}, + replacements = {{"group:food_rice", "cucina_vegana:bowl"}} + + }) + + minetest.register_craft({ + type = "shapeless", + output = "fishing:sushi", + recipe = {"group:food_fish","group:food_rice","seaplants:kelpgreen"}, + replacements = {{"group:food_rice", "cucina_vegana:bowl"}} + + }) + + minetest.register_craft({ + type = "shapeless", + output = "fishing:sushi", + recipe = {"group:food_fish","group:food_rice","default:jungleleaves"}, + replacements = {{"group:food_rice", "cucina_vegana:bowl"}} + + }) + + minetest.log("info", "[MOD] " .. modname .. ": fishing supported.") + +end -- if minetest.get_modpath("fishing" + +--[[ + ************************************************** + *** Support for bbq *** + ************************************************** +]]-- + +if minetest.get_modpath("bbq") then + + -- *** group:food_meat + + --BBQ Beef Ribs Craft Recipe + minetest.register_craft( { + output = "bbq:bbq_beef_ribs_raw 2", + type = "shapeless", + recipe = {"bbq:bbq_sauce", "group:food_meat", "group:food_pepper_ground"} + }) + + --Corned Beef Craft Recipe + minetest.register_craft( { + output = "bbq:corned_beef_raw", + type = "shapeless", + recipe = {"group:food_peppercorn", "group:food_meat","bbq:brine",} + }) + + --BBQ Brisket Craft Recipe + minetest.register_craft( { + output = "bbq:brisket_raw 2", + type = "shapeless", + recipe = {"bbq:bbq_sauce", "bbq:molasses", "group:food_meat", "group:food_garlic_clove"} + }) + + --London Broil Craft Recipe + minetest.register_craft( { + output = "bbq:london_broil_raw 2", + type = "shapeless", + recipe = {"bbq:bacon", "group:food_garlic_clove", "group:food_meat"} + }) + + --Beef Jerky Craft Recipe + minetest.register_craft( { + output = "bbq:beef_jerky_raw 3", + type = "shapeless", + recipe = {"bbq:liquid_smoke", "bbq:brine", "group:food_meat"} + }) + + --Pepper Steak Craft Recipe + minetest.register_craft( { + output = "bbq:pepper_steak_raw", + type = "shapeless", + recipe = {"group:food_pepper_ground", "group:food_meat", "group:food_pepper_ground"} + }) + + -- *** group:food_bread + + --Cheese Steak Craft Recipe + minetest.register_craft( { + output = "bbq:cheese_steak 2", + type = "shapeless", + recipe = {"group:food_bread", "group:food_pepper", "bbq:beef", "group:food_cheese", "group:food_onion"} + }) + + --Bacon Cheeseburger Craft Recipe + minetest.register_craft( { + output = "bbq:bacon_cheeseburger 3", + type = "shapeless", + recipe = {"group:food_bread", "bbq:bacon", "bbq:hamburger_patty", "group:food_cheese"} + }) + + --Bacon Cheeseburger Craft Recipe + minetest.register_craft( { + output = "bbq:bacon_cheeseburger 3", + type = "shapeless", + recipe = {"group:food_bread", "bbq:bacon", "group:food_meat", "group:food_cheese"} + }) + + --Hamburger Craft Recipe + minetest.register_craft( { + output = "bbq:hamburger 2", + type = "shapeless", + recipe = {"group:food_bread", "bbq:hamburger_patty"} + }) + + --Hamburger Craft Recipe + minetest.register_craft( { + output = "bbq:hamburger 2", + type = "shapeless", + recipe = {"group:food_bread", "group:food_meat"} + }) + + --Hotdog Craft Recipe + minetest.register_craft( { + output = "bbq:hotdog 2", + type = "shapeless", + recipe = {"bbq:hotdog_cooked", "group:food_bread"} + }) + + --Pulled Pork Craft Recipe + minetest.register_craft( { + output = "bbq:pulled_pork 2", + type = "shapeless", + recipe = {"mobs:pork_cooked", "group:food_bread", "bbq:bbq_sauce"} + }) + + + --Stuffed Chop Craft Recipe + minetest.register_craft( { + output = "bbq:stuffed_chop_raw 3", + type = "shapeless", + recipe = {"group:food_onion", "group:food_bread", "flowers:mushroom_brown", "mobs:pork_raw", "default:apple"} + }) + + --Stuffed Mushroom Craft Recipe + minetest.register_craft( { + output = "bbq:stuffed_mushroom_raw 2", + type = "shapeless", + recipe = {"group:food_tomato", "group:food_bread", "flowers:mushroom_brown"} + }) + + --Stuffed Pepper Craft Recipe + minetest.register_craft( { + output = "bbq:stuffed_pepper_raw 3", + type = "shapeless", + recipe = {"group:food_cheese", "group:food_bread", "group:food_pepper"} + }) + + -- bbq:bacon_raw + minetest.register_craft( { + output = "bbq:bacon_raw 3", + recipe = { + {"bbq:basting_brush", "group:dye,color_red", "group:dye,color_white"}, + {"cucina_vegana:tofu", "cucina_vegana:tofu", "cucina_vegana:tofu"}, + }, + replacements = {{"bbq:basting_brush", "bbq:basting_brush"}} + }) + + minetest.register_craft( { + output = "bbq:bbq_chicken_raw", + recipe = { + {"bbq:basting_brush", "bbq:hot_sauce", "cucina_vegana:tofu"}, + {"", "cucina_vegana:tofu", ""}, + {"cucina_vegana:tofu", "", ""}, + }, + replacements = {{"bbq:basting_brush", "bbq:basting_brush"}} + }) + + minetest.register_craft( { + output = "bbq:beef_raw", + recipe = { + {"bbq:basting_brush", "group:dye,color_red", "bbq:sea_salt"}, + {"cucina_vegana:imitation_meat", "cucina_vegana:imitation_meat", ""}, + }, + replacements = {{"bbq:basting_brush", "bbq:basting_brush"}} + }) + + minetest.register_craft( { + output = "bbq:ham_raw", + recipe = { + {"cucina_vegana:tofu", "bbq:liquid_smoke", "cucina_vegana:tofu"}, + } + }) + + minetest.register_craft( { + output = "bbq:hot_wings_raw 2", + recipe = { + {"cucina_vegana:tofu", "", "cucina_vegana:tofu"}, + {"cucina_vegana:tofu", "bbq:hot_sauce", "cucina_vegana:tofu"}, + {"cucina_vegana:tofu", "", "cucina_vegana:tofu"}, + } + }) + + minetest.register_craft( { + output = "bbq:hotdog_raw 3", + recipe = { + {"bbq:basting_brush", "group:food_salt", ""}, + {"cucina_vegana:asparagus", "cucina_vegana:tofu", "group:food_salt"}, + {"bbq:paprika", "", ""}, + }, + replacements = {{"bbq:basting_brush", "bbq:basting_brush"}} + }) + + minetest.register_craft( { + output = "bbq:leg_lamb_raw", + recipe = { + {"bbq:basting_brush", "cucina_vegana:imitation_butter", "cucina_vegana:soy_milk"}, + {"cucina_vegana:imitation_meat", "", ""}, + {"group:food_salt", "", ""}, + }, + replacements = {{"bbq:basting_brush", "bbq:basting_brush"}} + }) + + minetest.register_craft( { + output = "bbq:rack_lamb_raw", + recipe = { + {"bbq:basting_brush", "", "default:stick"}, + {"cucina_vegana:imitation_meat", "", "default:stick"}, + {"bbq:spatula", "", "default:stick"}, + }, + replacements = {{"bbq:basting_brush", "bbq:basting_brush"}, + {"bbq:spatula", "bbq:spatula"}, + } + }) + + minetest.register_craft( { + output = "bbq:lamb_kebab_raw", + recipe = { + {"bbq:leg_lamb_raw", "default:stick", ""}, + {"bbq:leg_lamb_raw", "default:stick", ""}, + }, + }) + + minetest.log("info", "[MOD] " .. modname .. ": bbq supported.") + +end -- if minetest.get_modpath("bbq" + +--[[ + ************************************************** + *** Support for pizza *** + ************************************************** +]]-- + +if minetest.get_modpath("pizza") then + minetest.register_craft({ + type = "shapeless", + output = "pizza:pizza_dough", + recipe = {"group:food_flour", "group:food_cheese", "group:food_tomato"}, + }) + + cucina_vegana.add_group("pizza:pizza_dough", {pizza_dough = 1}) + + minetest.register_craft({ + type = "shapeless", + output = "pizza:pizza_dough", + recipe = {"cucina_vegana:pizza_dough"} + }) + + minetest.register_craft({ + type = "shapeless", + output = "cucina_vegana:pizza_dough", + recipe = {"pizza:pizza_dough"} + }) + +end + +--[[ + ************************************************** + *** Support for homedecor *** + ************************************************** +]]-- + +if minetest.get_modpath("homedecor") then + + minetest.register_craft( { + output = "homedecor:cobweb_corner 5", + recipe = { + { "cucina_vegana:flax_roasted", "", "cucina_vegana:flax_roasted" }, + { "", "cucina_vegana:flax_roasted", "" }, + { "cucina_vegana:flax_roasted", "", "cucina_vegana:flax_roasted" } + }, + }) + + minetest.register_craft({ + output = "homedecor:oil_lamp", + recipe = { + { "", "vessels:glass_bottle", "" }, + { "", "cucina_vegana:flax_roasted", "" }, + { "default:steel_ingot", "group:food_oil", "default:steel_ingot" } + } + }) + + minetest.register_craft({ + output = "homedecor:oil_lamp_tabletop", + recipe = { + { "", "vessels:glass_bottle", "" }, + { "", "cucina_vegana:flax_roasted", "" }, + { "default:iron_lump", "group:food_oil", "default:iron_lump" } + } + }) + + minetest.register_craft({ + output = "homedecor:candle_thin 4", + recipe = { + {"cucina_vegana:flax_roasted" }, + {"basic_materials:paraffin" } + } + }) + + minetest.register_craft({ + output = "homedecor:candle 2", + recipe = { + {"cucina_vegana:flax_roasted" }, + {"basic_materials:paraffin" }, + {"basic_materials:paraffin" } + } + }) + + minetest.register_craft({ + output = "homedecor:blinds_thin", + recipe = { + { "group:stick", "basic_materials:plastic_sheet", "group:stick" }, + { "cucina_vegana:flax_roasted", "basic_materials:plastic_strip", "" }, + { "", "basic_materials:plastic_strip", "" }, + }, + }) + + minetest.register_craft({ + output = "homedecor:blinds_thick", + recipe = { + { "group:stick", "basic_materials:plastic_sheet", "group:stick" }, + { "cucina_vegana:flax_roasted", "basic_materials:plastic_strip", "basic_materials:plastic_strip" }, + { "", "basic_materials:plastic_strip", "basic_materials:plastic_strip" }, + }, + }) + +end + +--[[ + ************************************************** + *** Support for building_blocks *** + ************************************************** +]]-- + +if minetest.get_modpath("building_blocks") then + minetest.register_craft({ + output = 'building_blocks:terrycloth_towel 2', + recipe = { + {"cucina_vegana:flax_roasted", "cucina_vegana:flax_roasted", "cucina_vegana:flax_roasted"}, + } + }) + +end + +--[[ + ************************************************** + *** Support for ropes *** + ************************************************** +]]-- + +if minetest.get_modpath("ropes") then + minetest.register_craft({ + output = 'ropes:ropesegment', + recipe = { + {'cucina_vegana:flax_roasted','cucina_vegana:flax_roasted'}, + {'cucina_vegana:flax_roasted','cucina_vegana:flax_roasted'}, + {'cucina_vegana:flax_roasted','cucina_vegana:flax_roasted'}, + } + }) + + minetest.register_craft({ + output = 'ropes:rope', + recipe = { + {'cucina_vegana:flax_roasted'}, + {'cucina_vegana:flax_roasted'}, + } + }) + +end + +--[[ + ************************************************** + *** Support for cottages *** + ************************************************** +]]-- + +if minetest.get_modpath("cottages") then + minetest.register_craft({ + output = "cottages:rope", + recipe = { + {"cucina_vegana:flax_roasted","",""}, + {"","cucina_vegana:flax_roasted",""}, + {"","","cucina_vegana:flax_roasted"}, + } + }) + +end + +--[[ + ************************************************** + *** Support for moreblocks *** + ************************************************** +]]-- + +if minetest.get_modpath("moreblocks") then + minetest.register_craft({ + output = "moreblocks:rope 3", + recipe = { + {"cucina_vegana:flax_roasted"}, + {"cucina_vegana:flax_roasted"}, + {"cucina_vegana:flax_roasted"}, + } + }) + +end + +--[[ + ************************************************** + *** Support for petz *** + ************************************************** +]]-- + +if minetest.get_modpath("petz") then + + minetest.register_craft({ + output = "petz:lasso", + recipe = { + {"cucina_vegana:flax_roasted", "", "cucina_vegana:flax_roasted"}, + {"", "default:diamond", ""}, + {"cucina_vegana:flax_roasted", "", "cucina_vegana:flax_roasted"}, + } + }) + + minetest.register_craft({ + type = "shaped", + output = 'petz:pet_bowl', + recipe = { + {'group:wood', '', 'group:wood'}, + {'', 'cucina_vegana:plate', ''}, + } + }) + + minetest.register_craft({ + type = "shapeless", + output = "petz:blueberry_cheese_cake", + recipe = {"group:food_blueberries", "farming:wheat", "group:food_cheese", "group:food_egg"}, + }) + + minetest.register_craft({ + type = "shapeless", + output = "petz:blueberry_cheese_cake", + recipe = {"group:food_blueberry", "farming:wheat", "group:food_cheese", "group:food_egg"}, + }) + + minetest.register_craft({ + type = "shapeless", + output = "petz:blueberry_ice_cream 3", + recipe = {"group:food_blueberries", "group:food_milk", "group:food_egg", + "default:snow", "group:food_egg", "default:snow", "farming:wheat"}, + replacements = {{"group:food_milk", "bucket:bucket_empty"}}, + }) + + minetest.register_craft({ + type = "shapeless", + output = "petz:blueberry_ice_cream 3", + recipe = {"group:food_blueberry", "group:food_milk", "group:food_egg", + "default:snow", "group:food_egg", "default:snow", "farming:wheat"}, + replacements = {{"group:food_milk", "bucket:bucket_empty"}}, + }) + + minetest.register_craft({ + type = "shapeless", + output = "petz:blueberry_muffin 8", + recipe = {"group:food_blueberries", "farming:wheat", "farming:wheat", "petz:chicken_egg", + "petz:chicken_egg", "default:paper", "group:food_milk"}, + replacements = {{"group:food_milk", "bucket:bucket_empty"}}, + }) + + minetest.register_craft({ + type = "shapeless", + output = "petz:blueberry_muffin 8", + recipe = {"group:food_blueberry", "farming:wheat", "farming:wheat", + "petz:chicken_egg", "petz:chicken_egg", "default:paper", "group:food_milk"}, + replacements = {{"group:food_milk", "bucket:bucket_empty"}}, + }) + + -- Dreamcatcher + minetest.register_craft({ + type = "shaped", + output = "petz:dreamcatcher", + recipe = { + {"", "group:wood", ""}, + {"cucina_vegana:flax_roasted", "cucina_vegana:flax_roasted", "cucina_vegana:flax_roasted"}, + {"petz:ducky_feather", "petz:ducky_feather", "petz:ducky_feather"}, + } + }) + + minetest.register_craft({ + type = "shaped", + output = "petz:ducky_feather", + recipe = { + {"cucina_vegana:flax_roasted", "default:stick", "cucina_vegana:flax_roasted"}, + {"cucina_vegana:flax_roasted", "default:stick", "cucina_vegana:flax_roasted"}, + {"", "default:stick", ""}, + } + }) + + cucina_vegana.add_group("petz:cheese", {food_cheese = 1, eatable = 1}) + cucina_vegana.add_group("petz:milk", {food_milk = 1, eatable = 1}) + cucina_vegana.add_group("petz:honey_bottle", {food_sugar = 1, food_honey = 1}) + +end -- if minetest.get_modpath("petz" + +--[[ + ************************************************** + *** Support for aqua_farming *** + ************************************************** +]]-- + +if minetest.get_modpath("aqua_farming") then + + minetest.register_craft({ + output = "cucina_vegana:vegan_sushi", + recipe = { {"cucina_vegana:imitation_fish", "cucina_vegana:bowl_rice", ""}, + {"aqua_farming:alga_item", "", ""} + }, + replacements = { + {"cucina_vegana:bowl_rice", "cucina_vegana:bowl"} + } + }) + + minetest.register_craft({ + output = "cucina_vegana:imitation_fish", + recipe = { + {"aqua_farming:sea_grass_item","cucina_vegana:tofu", "group:dye,color_blue"}, + {"cucina_vegana:tofu","aqua_farming:sea_grass_item", "cucina_vegana:tofu"}, + {"","cucina_vegana:tofu", ""}, + + }, + }) + + minetest.register_craft({ + output = "cucina_vegana:sea_salad", + recipe = { + {"aqua_farming:sea_cucumber_item","cucina_vegana:parsley", "cucina_vegana:lettuce"}, + {"cucina_vegana:chives","aqua_farming:sea_anemone_item", "cucina_vegana:asparagus"}, + {"","cucina_vegana:bowl", ""}, + + }, + }) + +end + +cucina_vegana.add_group("default:blueberries", {food_blueberry = 1, food_blueberries = 1}) +cucina_vegana.add_group("bushes:blueberry", {food_blueberries = 1}) diff --git a/mods/cucina_vegana/register_mods.lua b/mods/cucina_vegana/register_mods.lua new file mode 100644 index 00000000..89f07d4d --- /dev/null +++ b/mods/cucina_vegana/register_mods.lua @@ -0,0 +1,291 @@ + + local cv_items = { + -- Name Saturation Replace with Poison Heal Sound + -- crops + {'cucina_vegana:asparagus', 3, nil, nil, nil, nil}, + {'cucina_vegana:chives', 1, nil, nil, nil, nil}, + {'cucina_vegana:kohlrabi', 3, nil, nil, nil, nil}, + {'cucina_vegana:lettuce', 2, nil, nil, nil, nil}, + {'cucina_vegana:parsley', 1, nil, nil, nil, nil}, + {'cucina_vegana:peanut', 3, nil, nil, nil, nil}, + {'cucina_vegana:rosemary', 1, nil, nil, nil, nil}, + {'cucina_vegana:sunflower_seeds', 1, nil, nil, nil, nil}, + {'cucina_vegana:banana', 4, nil, nil, nil, nil}, + {'cucina_vegana:tomato', 4, nil, nil, nil, nil}, + {'cucina_vegana:potato', 5, nil, nil, nil, nil}, + {'cucina_vegana:carrot', 3, nil, nil, nil, nil}, + {'cucina_vegana:chili', 1, nil, nil, nil, nil}, + {'cucina_vegana:onion', 3, nil, nil, nil, nil}, + {'cucina_vegana:corn', 2, nil, nil, nil, nil}, + {'cucina_vegana:cucumber', 3, nil, nil, nil, nil}, + {'cucina_vegana:strawberry', 2, nil, nil, nil, nil}, + {'cucina_vegana:vine', 3, nil, nil, nil, nil}, + + -- Name Saturation Replace with Poison Heal Sound + -- side dishes + {'cucina_vegana:ciabatta_bread', 4, nil, nil, nil, nil}, + {'cucina_vegana:blueberry_jam', 8, 'vessels:glass_bottle', nil, nil, nil}, + {'cucina_vegana:blueberry_puree', 4, nil, nil, nil, nil}, + {'cucina_vegana:dandelion_honey', 3, 'vessels:glass_bottle', nil, nil, nil}, + {'cucina_vegana:edamame_cooked', 3, 'cucina_vegana:plate', nil, 0.1, nil}, + {'cucina_vegana:flax_seed_oil', 2, 'vessels:glass_bottle', nil, nil, nil}, + {'cucina_vegana:kohlrabi_roasted', 4, nil, nil, nil, nil}, + {'cucina_vegana:lettuce_oil', 2, 'vessels:glass_bottle', nil, nil, nil}, + {'cucina_vegana:peanut_oil', 4, 'vessels:glass_bottle', nil, nil, nil}, + {'cucina_vegana:peanut_butter', 7, 'vessels:glass_bottle', nil, nil, nil}, + {'cucina_vegana:salad_bowl', 4, 'cucina_vegana:bowl', nil, nil, nil}, + {'cucina_vegana:sauce_hollandaise', 3, 'vessels:glass_bottle', nil, nil, nil}, + {'cucina_vegana:sunflower_seeds_oil', 3, 'vessels:glass_bottle', nil, nil, nil}, + {'cucina_vegana:soy_milk', 1, 'vessels:drinking_glass', nil, 0.5, nil}, + {'cucina_vegana:strawberry_milk', 3, 'vessels:drinking_glass', nil, nil, nil}, + {'cucina_vegana:coffee_cup', 2, 'vessels:drinking_glass', nil, nil, nil}, + {'cucina_vegana:coffee_cup_hot', 2, 'vessels:drinking_glass', nil, nil, nil}, + + -- Name Saturation Replace with Poison Heal Sound + -- eatable raws + {'cucina_vegana:imitation_butter', 2, nil, nil, 0.5, nil}, + {'cucina_vegana:imitation_cheese', 3, nil, nil, 0.5, nil}, + {'cucina_vegana:imitation_fish', 3, nil, nil, 0.5, nil}, + {'cucina_vegana:imitation_meat', 3, nil, nil, 0.5, nil}, + {'cucina_vegana:sunflower_seeds_dough', 2, nil, nil, 0.5, nil}, + {'cucina_vegana:tofu', 2, nil, nil, 0.5, nil}, + + -- Name Saturation Replace with Poison Heal Sound + -- dinners + {'cucina_vegana:asparagus_hollandaise_cooked', 5, 'cucina_vegana:plate', nil, 1.5, nil}, + {'cucina_vegana:asparagus_rice_cooked', 6, 'cucina_vegana:plate', nil, 1.5, nil}, + {'cucina_vegana:asparagus_soup_cooked', 5, 'cucina_vegana:plate', nil, 0.5, nil}, + {'cucina_vegana:bowl_rice_cooked', 4, 'cucina_vegana:bowl', nil, nil, nil}, + {'cucina_vegana:fish_parsley_rosemary_cooked', 6, 'cucina_vegana:plate', nil, 1.5, nil}, + {'cucina_vegana:fryer', 8, nil, nil, 3.0, nil}, + {'cucina_vegana:kohlrabi_soup_cooked', 5, 'cucina_vegana:plate', nil, 1.5, nil}, + {'cucina_vegana:pizza_vegana', 6, nil, nil, 2.0, nil}, + {'cucina_vegana:pizza_funghi', 6, nil, nil, 2.0, nil}, + {'cucina_vegana:salad_hollandaise', 4, 'cucina_vegana:bowl', nil, nil, nil}, + {'cucina_vegana:sea_salad', 5, 'cucina_vegana:bowl', nil, 1.5, nil}, + {'cucina_vegana:soy_soup_cooked', 5, 'cucina_vegana:plate', nil, 0.5, nil}, + {'cucina_vegana:sunflower_seeds_bread', 4, nil, nil, 0.5, nil}, + {'cucina_vegana:sunflower_seeds_roasted', 3, nil, nil, nil, nil}, + {'cucina_vegana:tofu_chives_rosemary_cooked', 6, 'cucina_vegana:plate', nil, 2.0, nil}, + {'cucina_vegana:tofu_cooked', 3, nil, nil, nil, nil}, + {'cucina_vegana:vegan_sushi', 4, nil, nil, 1.5, nil}, + + + } -- civ_items + + local grinder_recipes = { + -- Other + {"cucina_vegana:sunflower_seeds 3", "cucina_vegana:sunflower_seeds_flour"}, + {"cucina_vegana:rice 3", "cucina_vegana:rice_flour"}, + {"cucina_vegana:coffee_beans_roasted 2", "cucina_vegana:coffee_powder"}, + } +-- ******************************************* +-- ***** Technic-Support ***** +-- ******************************************* + +if(minetest.get_modpath("technic")) then + + + -- Support Compressor + local compressor_recipes = { + {"cucina_vegana:kohlrabi 6", "cucina_vegana:molasses"}, + {"cucina_vegana:sunflower_seeds 6", "cucina_vegana:sunflower_seeds_oil"}, + {"cucina_vegana:soy 8", "cucina_vegana:tofu"}, + {"default:blueberries 6", "cucina_vegana:blueberry_puree"}, + {"farming:blueberries 6", "cucina_vegana:blueberry_puree"}, + {"bushes:blueberry 6", "cucina_vegana:blueberry_puree"}, + } + + if(cucina_vegana.farming_default) then + table.insert(compressor_recipes,{"cucina_vegana:seed_lettuce 6", "cucina_vegana:lettuce_oil"}) + table.insert(compressor_recipes,{"cucina_vegana:seed_flax 6", "cucina_vegana:flax_seed_oil"}) + table.insert(compressor_recipes,{"cucina_vegana:seed_peanut 6", "cucina_vegana:peanut_oil"}) + table.insert(compressor_recipes,{"cucina_vegana:seed_corn 6", "cucina_vegana:corn_oil"}) + + else + table.insert(compressor_recipes,{"cucina_vegana:lettuce_seed 6", "cucina_vegana:lettuce_oil"}) + table.insert(compressor_recipes,{"cucina_vegana:flax_seed 6", "cucina_vegana:flax_seed_oil"}) + table.insert(compressor_recipes,{"cucina_vegana:peanut_seed 6", "cucina_vegana:peanut_oil"}) + table.insert(compressor_recipes,{"cucina_vegana:corn_seed 6", "cucina_vegana:corn_oil"}) + + end -- if(cucina_vegana.farming_default + + for _, data in pairs(compressor_recipes) do + + technic.register_compressor_recipe({input = {data[1]}, output = data[2]}) + + end + + -- Support Centrifuge + local centrifuge_recipes = { + { "flowers:sunflower", "cucina_vegana:sunflower_seeds 4", "dye:yellow" }, + { "cucina_vegana:sunflower", "cucina_vegana:sunflower_seeds 4", "dye:yellow" }, + { "cucina_vegana:kohlrabi 4", "cucina_vegana:molasses", "default:leaves" }, + { "cucina_vegana:corn", "cucina_vegana:seed_corn 10", "default:leaves" }, + } + + for _, data in pairs(centrifuge_recipes) do + + technic.register_separating_recipe({ input = { data[1] }, output = { data[2], data[3], data[4] } }) + + end + + -- Support Extractor + local extractor_recipes = { + {"flowers:sunflower", "cucina_vegana:sunflower_seeds 4"}, + {"cucina_vegana:sunflower_seeds 6", "cucina_vegana:sunflower_seeds_oil"}, + {"cucina_vegana:sunflower", "cucina_vegana:sunflower_seeds 4"}, + {"cucina_vegana:kohlrabi 3", "cucina_vegana:molasses"}, + {"cucina_vegana:molasses", "bushes:sugar 2"}, + {"cucina_vegana:soy 4", "cucina_vegana:soy_milk"}, + } + + -- Special Recipes with Seeds + if(cucina_vegana.farming_default) then + table.insert(extractor_recipes,{"cucina_vegana:seed_lettuce 6", "cucina_vegana:lettuce_oil"}) + table.insert(extractor_recipes,{"cucina_vegana:seed_flax 6", "cucina_vegana:flax_seed_oil"}) + table.insert(extractor_recipes,{"cucina_vegana:seed_peanut 6", "cucina_vegana:peanut_oil"}) + table.insert(extractor_recipes,{"cucina_vegana:seed_corn 6", "cucina_vegana:corn_oil"}) + else + table.insert(extractor_recipes,{"cucina_vegana:lettuce_seed 6", "cucina_vegana:lettuce_oil"}) + table.insert(extractor_recipes,{"cucina_vegana:flax_seed 6", "cucina_vegana:flax_seed_oil"}) + table.insert(extractor_recipes,{"cucina_vegana:peanut_seed 6", "cucina_vegana:peanut_oil"}) + table.insert(extractor_recipes,{"cucina_vegana:corn_seed 6", "cucina_vegana:corn_oil"}) + + end -- if(cucina_vegana.farming_default + + + for _, data in ipairs(extractor_recipes) do + technic.register_extractor_recipe({input = {data[1]}, output = data[2]}) + end + + -- Support Alloy_Furnace + local alloy_recipes = { + {"farming:flour 3", "cucina_vegana:sunflower_seeds","cucina_vegana:sunflower_seeds_bread"}, + {"cucina_vegana:sunflower_seeds_flour 3","cucina_vegana:sunflower_seeds","cucina_vegana:sunflower_seeds_bread"}, + {"cucina_vegana:rice_flour 3", "cucina_vegana:sunflower_seeds","cucina_vegana:sunflower_seeds_bread"}, + } + + for _, data in pairs(alloy_recipes) do + technic.register_alloy_recipe({input = {data[1], data[2]}, output = data[3], time = data[4]}) + end + + -- Support Grinder + for _, data in pairs(grinder_recipes) do + technic.register_grinder_recipe({input = {data[1]}, output = data[2]}) + + end + +end -- if(minetest.get_modpath("technic" + +-- ******************************************* +-- ***** Hunger-Support ***** +-- ******************************************* + +if(minetest.get_modpath("hunger")) then + for key, item in pairs(cv_items) do + hunger.register_food(item) + + end -- for key, data + +end -- hunger + +-- ********************************************** +-- ***** Hunger_ng-Support ***** +-- ********************************************** + +if(minetest.get_modpath("hunger_ng")) then + local add = hunger_ng.add_hunger_data + + for key, item in pairs(cv_items) do + add(item[1], {satiates = item[2], returns = item[3], heals = math.floor((item[5] or 0)), timeout = 0}) + + end -- for key, data + +end -- hunger_ng + + +-- ******************************************* +-- ***** Wine-Support ***** +-- ******************************************* + +if(minetest.get_modpath("wine")) then + wine:add_item({ {"cucina_vegana:molasses", "wine:glass_rum"}, + {"cucina_vegana:dandelion_honey", "wine:glass_mead"}, + {"cucina_vegana:rice", "wine:glass_sake"}, + {"cucina_vegana:vine_grape", "wine:glass_wine"} + }) + +end -- wine + +-- ******************************************* +-- ***** Diet-Support ***** +-- ******************************************* + +if(minetest.get_modpath("diet")) then + + local function overwrite(name, hunger_change, replace_with_item, poisen, heal) + local tab = minetest.registered_items[name] + if not tab then + return + end + tab.on_use = diet.item_eat(hunger_change, replace_with_item, poisen, heal) + end -- local function overwrite + + for key,item in pairs(cv_items) do + overwrite(item[1], item[2], item[3], item[4], item[5]) + + end -- for key,item + +end -- if(minetest.get_modpath("diet + +-- ******************************************* +-- ***** Petz-Support ***** +-- ******************************************* + +if(minetest.get_modpath("petz")) then + cucina_vegana.add_group("petz:bucket_milk", {food_milk = 1}) + cucina_vegana.add_group("petz:chicken_egg", {food = 2, food_egg = 1}) + cucina_vegana.add_group("petz:ducky_egg",{food = 2, food_egg = 1}) + +end + +-- ******************************************* +-- ***** Lemontree-Support ***** +-- ******************************************* + +if(minetest.get_modpath("lemontree")) then + cucina_vegana.add_group("lemontree:lemon", {food_lemon = 1, food_fruit = 1}) + +end + +-- ******************************************* +-- ***** Clementinetree-Support ***** +-- ******************************************* + +if(minetest.get_modpath("clementinetree")) then + cucina_vegana.add_group("clementinetree:clementine", {food_orange = 1, food_fruit = 1}) + +end + +-- ******************************************* +-- ***** Techage-Support ***** +-- ******************************************* +if(minetest.get_modpath("techage") and techage.register_plant) then + for name,ndef in pairs(minetest.registered_nodes) do + if type(name) == "string" then + local mod = string.split(name, ":")[1] + if mod == "cucina_vegana" then + if ndef.on_timer then -- probably a plant that still needs to grow + techage.register_plant(name) + end + end + end + end + + for _, crop in pairs(grinder_recipes) do + techage.add_grinder_recipe({input=crop[1], output=crop[2]}) + + end + +end diff --git a/mods/cucina_vegana/register_signs_bot.lua b/mods/cucina_vegana/register_signs_bot.lua new file mode 100644 index 00000000..b6477455 --- /dev/null +++ b/mods/cucina_vegana/register_signs_bot.lua @@ -0,0 +1,20 @@ +-- inv_seed is the seed inventory name +-- plantlet is what has to be placed on the ground (stage 1) +-- crop is the farming crop in the final stage +-- function signs_bot.register_farming_plant(inv_seed, plantlet, crop) + +function cucina_vegana.register_signs_bot(pname, start, steps) + local fp = signs_bot.register_farming_plant + local mname = cucina_vegana.modname + + if(cucina_vegana.farming_default) then + fp("cucina_vegana:seed_" .. pname, "cucina_vegana:" .. pname .. "_" + .. start, "cucina_vegana:" .. pname .. "_" .. steps) + + else + fp("cucina_vegana:" .. pname .. "_seed", "cucina_vegana:" .. pname .. "_" + .. start, "cucina_vegana:" .. pname .. "_" .. steps) + + end + +end diff --git a/mods/cucina_vegana/rice.lua b/mods/cucina_vegana/rice.lua new file mode 100644 index 00000000..02f369af --- /dev/null +++ b/mods/cucina_vegana/rice.lua @@ -0,0 +1,20 @@ +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_rainforest_litter", "default:dirt", "default:dirt_with_grass"}, + spawn_by = {"default:water_source", "default:river_water_source", + "default:water_flowing", "default:river_water_flowing", "default:papyrus", "default:jungletree"}, + --biomes = {"rainforest", "rainforest_swamp", "rainforest_ocean", + -- "grassland_ocean", "deciduous_forest_shore", "deciduous_forest_ocean", "coniferous_forest_ocean"}, + sidelen = 32, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.rice_scale, + spread = {x = 40, y = 40, z = 40}, + seed = 56814, + octaves = 3, + persist = 0.6 + }, + y_min = -5, + y_max = 50, + decoration = "cucina_vegana:wild_rice", +}) diff --git a/mods/cucina_vegana/rice_default.lua b/mods/cucina_vegana/rice_default.lua new file mode 100644 index 00000000..403d1deb --- /dev/null +++ b/mods/cucina_vegana/rice_default.lua @@ -0,0 +1,68 @@ +--[[ + ********************************************** + *** Rice default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Rice") +local pname = "rice" +local step = 6 + +-- rice +farming.register_plant("cucina_vegana:" .. pname .. "", { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.rice_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 3"}}, + {items = {"cucina_vegana:" .. pname}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + sunlight_propagates = true, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end + diff --git a/mods/cucina_vegana/rice_redo.lua b/mods/cucina_vegana/rice_redo.lua new file mode 100644 index 00000000..12144385 --- /dev/null +++ b/mods/cucina_vegana/rice_redo.lua @@ -0,0 +1,148 @@ +--[[ + ********************************************** + *** Rice redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Rice") +local pname = "rice" +local step = 6 +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + + -- rice + minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + drawtype = "signlike", + minlight = cucina_vegana.plant_settings.rice_light, + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, + }) + + -- rice definition + local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.rice_light, + drop = "", + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() + } + + -- stage 1 + minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + + -- stage 2 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} + minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + + -- stage 3 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} + minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + + -- stage 4 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } + } + minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + + -- stage 5 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname}, rarity = 3} + } + } + minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + + -- stage 6 (final) + crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} + crop_def.groups.growing = 0 + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname}, rarity = 1}, + {items = {"cucina_vegana:" .. pname}, rarity = 2}, + {items = {"cucina_vegana:" .. pname}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + } + } + minetest.register_node("cucina_vegana:" .. pname .. "_" .. step, table.copy(crop_def)) + + -- Register for Mapgen + minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, + }) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/rosemary.lua b/mods/cucina_vegana/rosemary.lua new file mode 100644 index 00000000..63554118 --- /dev/null +++ b/mods/cucina_vegana/rosemary.lua @@ -0,0 +1,18 @@ +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_dry_grass", "default:sand", "default:silver_sand"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.rosemary_scale, + spread = {x = 30, y = 30, z = 30}, + seed = 264, + octaves = 2, + persist = 0.3 + }, + spawn_by = {"default:water_source", "default:river_water_source"}, + height = 1, + y_min = 0, + y_max = 50, + decoration = "cucina_vegana:wild_rosemary", +}) diff --git a/mods/cucina_vegana/rosemary_default.lua b/mods/cucina_vegana/rosemary_default.lua new file mode 100644 index 00000000..be422381 --- /dev/null +++ b/mods/cucina_vegana/rosemary_default.lua @@ -0,0 +1,67 @@ +--[[ + ********************************************** + *** Rosemary default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Rosemary") +local pname = "rosemary" +local step = 6 + +-- rosemary +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = 6, + minlight = cucina_vegana.plant_settings.rosemary_light, + fertility = {"sand", "grassland"}, + groups = {flammable = 4}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 3"}}, + {items = {"cucina_vegana:" .. pname}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_6.png"}, + sunlight_propagates = true, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/rosemary_redo.lua b/mods/cucina_vegana/rosemary_redo.lua new file mode 100644 index 00000000..2fed6b3e --- /dev/null +++ b/mods/cucina_vegana/rosemary_redo.lua @@ -0,0 +1,149 @@ +--[[ + ********************************************** + *** Rosemary redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Rosemary") +local pname = "rosemary" +local step = 6 +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + +-- rosemary +minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + drawtype = "signlike", + minlight = cucina_vegana.plant_settings.rosemary_light, + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, +}) + +-- rosemary definition +local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + drop = "", + minlight = cucina_vegana.plant_settings.rosemary_light, + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + +-- stage 6 (final) +crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname}, rarity = 1}, + {items = {"cucina_vegana:" .. pname}, rarity = 2}, + {items = {"cucina_vegana:" .. pname}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_" .. step, table.copy(crop_def)) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/settings.lua b/mods/cucina_vegana/settings.lua new file mode 100644 index 00000000..04d342de --- /dev/null +++ b/mods/cucina_vegana/settings.lua @@ -0,0 +1,147 @@ +-- Scalevalues are: +-- Lower value = easy to find (like 0.002) +-- Higher value = hard to find (like 0.0005) + +-- Plantname +-- plant is on (true) or off (true) +-- scalevalue +-- minlight-settings + +local cv_setting_plant = "cucina_vegana.plant_settings." +local cv_setting_shrub = "cucina_vegana.shrub_settings." +local cv_setting = "cucina_vegana.settings." + +-- ******************************************************** +-- *** general settings *** +-- ******************************************************** + +cucina_vegana.settings.coffee_effect_duration = minetest.settings:get(cv_setting .. "coffee_effect_duration") or 10 +cucina_vegana.settings.coffee_effect_speed = minetest.settings:get(cv_setting .. "coffee_effect_speed") or 3 +cucina_vegana.plant_settings.germ_launch = minetest.settings:get(cv_setting_plant .. "germ_launch") or 0 -- Start germ at: + + +-- ******************************************************** +-- *** plants *** +-- ******************************************************** + +-- Asparagus +cucina_vegana.plant_settings.asparagus = minetest.settings:get_bool(cv_setting_plant .. "asparagus", true) +cucina_vegana.plant_settings.asparagus_scale = minetest.settings:get(cv_setting_plant .."asparagus_scale") or 0.0007 +cucina_vegana.plant_settings.asparagus_light = minetest.settings:get(cv_setting_plant .."asparagus_light") or 11 + +-- Banana +cucina_vegana.plant_settings.banana = minetest.settings:get_bool(cv_setting_plant .. "banana", true) +cucina_vegana.plant_settings.banana_scale = minetest.settings:get(cv_setting_plant .."banana_scale") or 0.009 +cucina_vegana.plant_settings.banana_light = minetest.settings:get(cv_setting_plant .."banana") or 12 + +-- Carrot +cucina_vegana.plant_settings.carrot = minetest.settings:get_bool(cv_setting_plant .."carrot", true) +cucina_vegana.plant_settings.carrot_scale = minetest.settings:get(cv_setting_plant .."carrot_scale") or 0.0005 +cucina_vegana.plant_settings.carrot_light = minetest.settings:get(cv_setting_plant .."carrot_light") or 11 + +-- Chili +cucina_vegana.plant_settings.chili = minetest.settings:get_bool(cv_setting_plant .."chili", true) +cucina_vegana.plant_settings.chili_scale = minetest.settings:get(cv_setting_plant .."chili_scale") or 0.0002 +cucina_vegana.plant_settings.chili_light = minetest.settings:get(cv_setting_plant .."chili_light") or 13 + +-- Chives +cucina_vegana.plant_settings.chives = minetest.settings:get_bool(cv_setting_plant .."chives", true) +cucina_vegana.plant_settings.chives_scale = minetest.settings:get(cv_setting_plant .."chives_scale") or 0.0005 +cucina_vegana.plant_settings.chives_light = minetest.settings:get(cv_setting_plant .."chives_light") or 10 + +-- Corn +cucina_vegana.plant_settings.corn = minetest.settings:get_bool(cv_setting_plant .."corn", true) +cucina_vegana.plant_settings.corn_scale = minetest.settings:get(cv_setting_plant .."corn_scale") or 0.0004 +cucina_vegana.plant_settings.corn_light = minetest.settings:get(cv_setting_plant .."corn_light") or 13 + +-- Flax +cucina_vegana.plant_settings.flax = minetest.settings:get_bool(cv_setting_plant .."flax", true) +cucina_vegana.plant_settings.flax_scale = minetest.settings:get(cv_setting_plant .."flax_scale") or 0.0006 +cucina_vegana.plant_settings.flax_light = minetest.settings:get(cv_setting_plant .."flax_light") or 10 + +-- Kohlrabi +cucina_vegana.plant_settings.kohlrabi = minetest.settings:get_bool(cv_setting_plant .."kohlrabi", true) +cucina_vegana.plant_settings.kohlrabi_scale = minetest.settings:get(cv_setting_plant .."kohlrabi_scale") or 0.0007 +cucina_vegana.plant_settings.kohlrabi_light = minetest.settings:get(cv_setting_plant .."kohlrabi_light") or 13 + +-- Lettuce +cucina_vegana.plant_settings.lettuce = minetest.settings:get_bool(cv_setting_plant .."lettuce", true) +cucina_vegana.plant_settings.lettuce_scale = minetest.settings:get(cv_setting_plant .."lettuce_scale") or 0.0008 +cucina_vegana.plant_settings.lettuce_light = minetest.settings:get(cv_setting_plant .."lettuce_light") or 12 + +-- Parsley +cucina_vegana.plant_settings.parsley = minetest.settings:get_bool(cv_setting_plant .."parsley", true) +cucina_vegana.plant_settings.parsley_scale = minetest.settings:get(cv_setting_plant .."parsley_scale") or 0.0005 +cucina_vegana.plant_settings.parsley_light = minetest.settings:get(cv_setting_plant .."parsley_light") or 11 + +-- Peanut +cucina_vegana.plant_settings.peanut = minetest.settings:get_bool(cv_setting_plant .."peanut", true) +cucina_vegana.plant_settings.peanut_scale = minetest.settings:get(cv_setting_plant .."peanut_scale") or 0.0006 +cucina_vegana.plant_settings.peanut_light = minetest.settings:get(cv_setting_plant .."peanut_light") or 12 + +-- Rice +cucina_vegana.plant_settings.rice = minetest.settings:get_bool(cv_setting_plant .."rice", true) +cucina_vegana.plant_settings.rice_scale = minetest.settings:get(cv_setting_plant .."rice_scale") or 0.0005 +cucina_vegana.plant_settings.rice_light = minetest.settings:get(cv_setting_plant .."rice_light") or 12 + +-- Rosemary +cucina_vegana.plant_settings.rosemary = minetest.settings:get_bool(cv_setting_plant .."rosemary", true) +cucina_vegana.plant_settings.rosemary_scale = minetest.settings:get(cv_setting_plant .."rosemary") or 0.0008 +cucina_vegana.plant_settings.rosemary_light = minetest.settings:get(cv_setting_plant .."rosemary") or 12 + +-- Soy +cucina_vegana.plant_settings.soy = minetest.settings:get_bool(cv_setting_plant .."soy", true) +cucina_vegana.plant_settings.soy_scale = minetest.settings:get(cv_setting_plant .."soy") or 0.0007 +cucina_vegana.plant_settings.soy_light = minetest.settings:get(cv_setting_plant .."soy") or 12 + +-- Sunflowers +cucina_vegana.plant_settings.sunflower = minetest.settings:get_bool(cv_setting_plant .."sunflower", true) +cucina_vegana.plant_settings.sunflower_scale = minetest.settings:get(cv_setting_plant .."sunflower") or 0.0007 +cucina_vegana.plant_settings.sunflower_light = minetest.settings:get(cv_setting_plant .."sunflower") or 13 + +-- Tomato +cucina_vegana.plant_settings.tomato = minetest.settings:get_bool(cv_setting_plant .."tomato", true) +cucina_vegana.plant_settings.tomato_scale = minetest.settings:get(cv_setting_plant .."tomato_scale") or 0.0006 +cucina_vegana.plant_settings.tomato_light = minetest.settings:get(cv_setting_plant .."tomato_light") or 11 + +-- Potato +cucina_vegana.plant_settings.potato = minetest.settings:get_bool(cv_setting_plant .."potato", true) +cucina_vegana.plant_settings.potato_scale = minetest.settings:get(cv_setting_plant .."potato_scale") or 0.0005 +cucina_vegana.plant_settings.potato_light = minetest.settings:get(cv_setting_plant .."potato_light") or 11 + +-- Garlic +cucina_vegana.plant_settings.garlic = minetest.settings:get_bool(cv_setting_plant .."garlic", true) +cucina_vegana.plant_settings.garlic_scale = minetest.settings:get(cv_setting_plant .."garlic_scale") or 0.0006 +cucina_vegana.plant_settings.garlic_light = minetest.settings:get(cv_setting_plant .."garlic_light") or 12 + +-- Onion +cucina_vegana.plant_settings.onion = minetest.settings:get_bool(cv_setting_plant .."onion", true) +cucina_vegana.plant_settings.onion_scale = minetest.settings:get(cv_setting_plant .."onion_scale") or 0.0006 +cucina_vegana.plant_settings.onion_light = minetest.settings:get(cv_setting_plant .."onion_light") or 12 + +-- Cucumber +cucina_vegana.plant_settings.cucumber = minetest.settings:get_bool(cv_setting_plant .."cucumber", true) +cucina_vegana.plant_settings.cucumber_scale = minetest.settings:get(cv_setting_plant .."cucumber_scale") or 0.0004 +cucina_vegana.plant_settings.cucumber_light = minetest.settings:get(cv_setting_plant .."cucumber_light") or 12 + +-- Strawberry +cucina_vegana.plant_settings.strawberry = minetest.settings:get_bool(cv_setting_plant .. "strawberry", true) +cucina_vegana.plant_settings.strawberry_scale = minetest.settings:get(cv_setting_plant .."strawberry_scale") or 0.006 +cucina_vegana.plant_settings.strawberry_light = minetest.settings:get(cv_setting_plant .."strawberry_light") or 10 + +-- ******************************************************** +-- *** shrubs *** +-- ******************************************************** + +-- Vine +cucina_vegana.shrub_settings.vine = minetest.settings:get_bool(cv_setting_shrub .. "vine", true) +cucina_vegana.shrub_settings.vine_scale = minetest.settings:get(cv_setting_shrub .. "vine_scale") or 0.008 +cucina_vegana.shrub_settings.vine_light = minetest.settings:get(cv_setting_shrub .. "vine_light") or 12 +cucina_vegana.shrub_settings.vine_duration = minetest.settings:get(cv_setting_shrub .. "vine_duration") or 120 + +-- Coffee +cucina_vegana.shrub_settings.coffee = minetest.settings:get_bool(cv_setting_shrub .. "coffee", true) +cucina_vegana.shrub_settings.coffee_scale = minetest.settings:get(cv_setting_shrub .. "coffee_scale") or 0.005 +cucina_vegana.shrub_settings.coffee_light = minetest.settings:get(cv_setting_shrub .. "coffee_light") or 11 +cucina_vegana.shrub_settings.coffee_duration = minetest.settings:get(cv_setting_shrub .. "coffee_duration") or 180 + diff --git a/mods/cucina_vegana/settingtypes.txt b/mods/cucina_vegana/settingtypes.txt new file mode 100644 index 00000000..f225811b --- /dev/null +++ b/mods/cucina_vegana/settingtypes.txt @@ -0,0 +1,124 @@ +# General shrub_settings +cucina_vegana.settings.coffee_effect_speed (How strong is the coffee-effect) int 3 +cucina_vegana.settings.coffee_effect_duration (How long in seconds is the coffee-effect) int 10 +#Germ launch 0 = start as seed +cucina_vegana.plant_settings.germ_launch (Start germ @) int 0 + +#Asparagus +cucina_vegana.plant_settings.asparagus (Enable Asparagus) bool true +cucina_vegana.plant_settings.asparagus_scale (Spreadvalue) float 0.0007 +cucina_vegana.plant_settings.asparagus_light (Min. Light) int 11 + +#Banana +cucina_vegana.plant_settings.banana (Enable Banana) bool true +cucina_vegana.plant_settings.banana_scale (Spreadvalue) float 0.0005 +cucina_vegana.plant_settings.banana_light (Min. Light) int 12 + +#Carrot +cucina_vegana.plant_settings.carrot (Enable Carrot) bool true +cucina_vegana.plant_settings.carrot_scale (Spreadvalue) float 0.0005 +cucina_vegana.plant_settings.carrot_light (Min. Light) int 11 + +#Chives +cucina_vegana.plant_settings.chives (Enable Chives) bool true +cucina_vegana.plant_settings.chives_scale (Spreadvalue) float 0.0005 +cucina_vegana.plant_settings.chives_light (Min. Light) int 10 + +#Corn +cucina_vegana.plant_settings.corn (Enable Corn) bool true +cucina_vegana.plant_settings.corn_scale (Spreadvalue) float 0.0004 +cucina_vegana.plant_settings.corn_light (Min. Light) int 13 + +#Cucumber +cucina_vegana.plant_settings.cucumber (Enable Cucumber) bool true +cucina_vegana.plant_settings.cucumber_scale (Spreadvalue) float 0.0003 +cucina_vegana.plant_settings.cucumber_light (Min. Light) int 12 + +#Flax +cucina_vegana.plant_settings.flax (Enable Flax) bool true +cucina_vegana.plant_settings.flax_scale (Spreadvalue) float 0.0006 +cucina_vegana.plant_settings.flax_light (Min. Light) int 10 + +#Kohlrabi +cucina_vegana.plant_settings.kohlrabi (Enable Kohlrabi) bool true +cucina_vegana.plant_settings.kohlrabi_scale (Spreadvalue) float 0.0007 +cucina_vegana.plant_settings.kohlrabi_light (Min. Light) int 13 + +#Lettuce +cucina_vegana.plant_settings.lettuce (Enable Lettuce) bool true +cucina_vegana.plant_settings.lettuce_scale (Spreadvalue) float 0.0008 +cucina_vegana.plant_settings.lettuce_light (Min. Light) int 12 + +#Parsley +cucina_vegana.plant_settings.parsley (Enable Parsley) bool true +cucina_vegana.plant_settings.parsley_scale (Spreadvalue) float 0.0005 +cucina_vegana.plant_settings.parsley_light (Min. Light) int 11 + +#Peanut +cucina_vegana.plant_settings.peanut (Enable Peanut) bool true +cucina_vegana.plant_settings.peanut_scale (Spreadvalue) float 0.0006 +cucina_vegana.plant_settings.peanut_light (Min. Light) int 12 + +#Rice +cucina_vegana.plant_settings.rice (Enable Rice) bool true +cucina_vegana.plant_settings.rice_scale (Spreadvalue) float 0.0005 +cucina_vegana.plant_settings.rice_light (Min. Light) int 12 + +#Rosemary +cucina_vegana.plant_settings.rosemary (Enable Rosemary) bool true +cucina_vegana.plant_settings.rosemary_scale (Spreadvalue) float 0.0008 +cucina_vegana.plant_settings.rosemary_light (Min. Light) int 12 + +#Soy +cucina_vegana.plant_settings.soy (Enable Soy) bool true +cucina_vegana.plant_settings.soy_scale (Spreadvalue) float 0.0007 +cucina_vegana.plant_settings.soy_light (Min. Light) int 12 + +#Sunflower +cucina_vegana.plant_settings.sunflower (Enable Sunflower) bool true +cucina_vegana.plant_settings.sunflower_scale (Spreadvalue) float 0.0007 +cucina_vegana.plant_settings.sunflower_light (Min. Light) int 13 + +#Tomato +cucina_vegana.plant_settings.tomato (Enable Tomato) bool false +cucina_vegana.plant_settings.tomato_scale (Spreadvalue) float 0.0006 +cucina_vegana.plant_settings.tomato_light (Min. Light) int 11 + +#Potato +cucina_vegana.plant_settings.potato (Enable Potato) bool true +cucina_vegana.plant_settings.potato_scale (Spreadvalue) float 0.0005 +cucina_vegana.plant_settings.potato_light (Min. Light) int 11 + +#Garlic +cucina_vegana.plant_settings.garlic (Enable Garlic) bool true +cucina_vegana.plant_settings.garlic_scale (Spreadvalue) float 0.0006 +cucina_vegana.plant_settings.garlic_light (Min. Light) int 12 + +#Chili +cucina_vegana.plant_settings.chili (Enable Chili) bool true +cucina_vegana.plant_settings.chili_scale (Spreadvalue) float 0.0002 +cucina_vegana.plant_settings.chili_light (Min. Light) int 13 + +#Onion +cucina_vegana.plant_settings.onion (Enable Onion) bool false +cucina_vegana.plant_settings.onion_scale (Spreadvalue) float 0.0006 +cucina_vegana.plant_settings.onion_light (Min. Light) int 12 + +#Strawberry +cucina_vegana.plant_settings.strawberry (Enable Strawberry) bool true +cucina_vegana.plant_settings.strawberry_scale (Spreadvalue) float 0.006 +cucina_vegana.plant_settings.strawberry_light (Min. Light) int 10 + +## Shrubs + +#Vine +cucina_vegana.shrub_settings.vine (Enable vine) bool false +cucina_vegana.shrub_settings.vine_scale (Spreadvalue) float 0.008 +cucina_vegana.shrub_settings.vine_light (Min. Light) int 12 +cucina_vegana.shrub_settings.vine_duration (Duration in Seconds) int 120 + +#Coffee +cucina_vegana.shrub_settings.coffee (Enable coffee) bool true +cucina_vegana.shrub_settings.coffee_scale (Spreadvalue) float 0.005 +cucina_vegana.shrub_settings.coffee_light (Min. Light) int 11 +cucina_vegana.shrub_settings.coffee_duration (Duration in Seconds) int 180 diff --git a/mods/cucina_vegana/soy.lua b/mods/cucina_vegana/soy.lua new file mode 100644 index 00000000..c0d94cec --- /dev/null +++ b/mods/cucina_vegana/soy.lua @@ -0,0 +1,16 @@ +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.soy_scale, + spread = {x = 100, y = 100, z = 100}, + seed = 32478, + octaves = 3, + persist = 0.6 + }, + y_min = 10, + y_max = 90, + decoration = "cucina_vegana:wild_soy", +}) diff --git a/mods/cucina_vegana/soy_default.lua b/mods/cucina_vegana/soy_default.lua new file mode 100644 index 00000000..fdde2788 --- /dev/null +++ b/mods/cucina_vegana/soy_default.lua @@ -0,0 +1,72 @@ +--[[ + ********************************************** + *** Soy default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Soy") +local pname = "soy" +local step = 8 + +farming.register_plant("cucina_vegana:".. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_".. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.soy_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_".. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_".. pname .. " 3"}}, + {items = {"cucina_vegana:".. pname}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_".. pname .. "_".. step .. ".png"}, + sunlight_propagates = true, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + + +cucina_vegana.add_group("cucina_vegana:seed_"..pname, {seed_soy = 1}) + +minetest.register_alias("soy:wild_".. pname, "cucina_vegana:wild_".. pname) +minetest.register_alias("soy:".. pname, "cucina_vegana:".. pname) +minetest.register_alias("soy:seed_".. pname, "cucina_vegana:seed_".. pname) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) +end diff --git a/mods/cucina_vegana/soy_redo.lua b/mods/cucina_vegana/soy_redo.lua new file mode 100644 index 00000000..c95b6e74 --- /dev/null +++ b/mods/cucina_vegana/soy_redo.lua @@ -0,0 +1,165 @@ +--[[ + ********************************************** + *** Soy redo *** + ********************************************** +]]-- + + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Soy") +local pname = "soy" +local step = 8 +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + +minetest.register_node("cucina_vegana:".. pname .."_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_".. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + drawtype = "signlike", + minlight = cucina_vegana.plant_settings.soy_light, + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, +}) + +-- Soy definition +local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + drop = "", + selection_box = farming.select, + minlight = cucina_vegana.plant_settings.soy_light, + groups = { + snappy = 3, flammable = 4, plant = 1, dig_immediate=1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_6.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname}, rarity = 2}, + } } +minetest.register_node("cucina_vegana:" .. pname .. "_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_7.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname}, rarity = 1}, + {items = {"cucina_vegana:" .. pname}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"cucina_vegana_" .. pname .. "_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname}, rarity = 1}, + {items = {"cucina_vegana:" .. pname}, rarity = 2}, + {items = {"cucina_vegana:" .. pname}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_8", table.copy(crop_def)) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_8.png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:" ..pname .. "_seed", {seed_soy = 1}) + + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/strawberry.lua b/mods/cucina_vegana/strawberry.lua new file mode 100644 index 00000000..d59a7ee5 --- /dev/null +++ b/mods/cucina_vegana/strawberry.lua @@ -0,0 +1,18 @@ +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:dirt_with_rainforest_litter", "default:dirt_with_coniferous_litter", "default:dirt_with_dry_grass"}, + spawn_by = {"default:tree", "default:aspen_tree", "default:jungletree", "default:fernt_1", "default:fern_2", "default:fern_3"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.strawberry_scale, + spread = {x = 50, y = 50, z = 50}, + seed = 8164, + octaves = 4, + persist = 0.6 + }, + y_min = -20, + y_max = 120, + decoration = "cucina_vegana:wild_strawberry", +}) + diff --git a/mods/cucina_vegana/strawberry_default.lua b/mods/cucina_vegana/strawberry_default.lua new file mode 100644 index 00000000..2089716e --- /dev/null +++ b/mods/cucina_vegana/strawberry_default.lua @@ -0,0 +1,67 @@ +--[[ + ********************************************** + *** Strawberry default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Strawberry") +local pname = "strawberry" +local step = 7 + +-- strawberry +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.strawberry_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 3"}}, + {items = {"cucina_vegana:" .. pname .. ""}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + sunlight_propagates = true, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/strawberry_redo.lua b/mods/cucina_vegana/strawberry_redo.lua new file mode 100644 index 00000000..1b64c640 --- /dev/null +++ b/mods/cucina_vegana/strawberry_redo.lua @@ -0,0 +1,148 @@ +--[[ + ********************************************** + *** Strawberry redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Strawberry") +local pname = "strawberry" +local step = 7 +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + + -- strawberry + minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + drawtype = "signlike", + minlight = cucina_vegana.plant_settings.asparagus_light, + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, + }) + + -- asparagus definition + local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.asparagus_light, + drop = "", + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() + } + + -- stage 1 + minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + + -- stage 2 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} + minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + + -- stage 3 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} + minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + + -- stage 4 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } + } + minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + + -- stage 5 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 3} + } + } + minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + + -- stage 6 (final) + crop_def.tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"} + crop_def.groups.growing = 0 + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + } + } + minetest.register_node("cucina_vegana:" .. pname .. "_" .. step, table.copy(crop_def)) + + -- Register for Mapgen + minetest.register_node("cucina_vegana:wild_" .. pname .. "", { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname .. ""}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, + }) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/sunflower.lua b/mods/cucina_vegana/sunflower.lua new file mode 100644 index 00000000..f95b2b23 --- /dev/null +++ b/mods/cucina_vegana/sunflower.lua @@ -0,0 +1,42 @@ +local modpath = minetest.get_modpath(minetest.get_current_modname()) + +if(minetest.registered_nodes["flowers:sunflower"] ~= nil) then + print("[MOD] " .. minetest.get_current_modname() .. " Sunflowers available.") + print("[MOD] " .. minetest.get_current_modname() .. " using \"flowers:sunflower\".") + +else + + print("[MOD] " .. minetest.get_current_modname() .. " no Sunflowers available.") + print("[MOD] " .. minetest.get_current_modname() .. " use own Sunflowers.") + + + minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:dirt_with_dry_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.sunflower_scale, + spread = {x = 10, y = 10, z = 10}, + seed = 8756, + octaves = 3, + persist = 0.6 + }, + y_min = 0, + y_max = 150, + decoration = "cucina_vegana:wild_sunflower", + }) + + minetest.register_alias("flowers:sunflower", "cucina_vegana:sunflower") + + if (cucina_vegana.farming_default) then + + dofile(modpath .. "/sunflower_default.lua") + + else + + dofile(modpath .. "/sunflower_redo.lua") + + end + +end diff --git a/mods/cucina_vegana/sunflower_default.lua b/mods/cucina_vegana/sunflower_default.lua new file mode 100644 index 00000000..f43164b8 --- /dev/null +++ b/mods/cucina_vegana/sunflower_default.lua @@ -0,0 +1,79 @@ +--[[ + ********************************************** + *** Sunflower default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Sunflower") +local pname = "sunflower" +local step = 5 +local modname = minetest.get_current_modname() + +if(minetest.registered_nodes["flowers:sunflower"] ~= nil) then + print("[MOD] " .. modname .. " Sunflowers available.") + print("[MOD] " .. modname .. " using \"flowers:sunflower\".") + minetest.log("info", "[MOD] " .. modname .. ": Sunflowers available. Using \"flowers:sunflower\".") + +else + + farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.sunflower_light, + fertility = {"grassland"}, + groups = {flammable = 4}, + }) + + -- Register for Mapgen + minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 2"}}, + {items = {"cucina_vegana:" .. pname .. ""}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + sunlight_propagates = true, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, + }) + +end + +minetest.override_item("cucina_vegana:" .. pname .. "_4", {visual_scale = 1.3}) +minetest.override_item("cucina_vegana:" .. pname .. "_5", {visual_scale = 1.5}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/sunflower_redo.lua b/mods/cucina_vegana/sunflower_redo.lua new file mode 100644 index 00000000..4788f915 --- /dev/null +++ b/mods/cucina_vegana/sunflower_redo.lua @@ -0,0 +1,148 @@ +--[[ + ********************************************** + *** Sunflower redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Sunflower") +local pname = "sunflower" +local step = 5 +local modname = minetest.get_current_modname() +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + +if(minetest.registered_nodes["flowers:sunflower"] ~= nil) then + print("[MOD] " .. modname .. " Sunflowers available.") + print("[MOD] " .. modname .. " using \"flowers:sunflower\".") + minetest.log("info", "[MOD] " .. modname .. ": Sunflowers available. Using \"flowers:sunflower\".") + +else + + minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + drawtype = "signlike", + minlight = cucina_vegana.plant_settings.sunflower_light, + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, + }) + + -- sunflower definition + local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + drop = "", + minlight = cucina_vegana.plant_settings.sunflower_light, + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() + } + + -- stage 1 + minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + + -- stage 2 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} + minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + + -- stage 3 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} + minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + + -- stage 4 + crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } + } + crop_def.visual_scale = 1.3, + minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + + -- stage 5 (final) + crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} + crop_def.groups.growing = 0 + crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. ""}, rarity = 2} + } + } + crop_def.visual_scale = 1.5, + minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + + -- Register for Mapgen + minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}}, + {items = {"cucina_vegana:" .. pname .. ""}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_5.png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, + visual_scale = 1.5, + }) + +end + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end + diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus.png new file mode 100644 index 00000000..56020e4e Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_1.png new file mode 100644 index 00000000..676860e6 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_2.png new file mode 100644 index 00000000..b8441dc7 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_3.png new file mode 100644 index 00000000..3cd62a88 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_4.png new file mode 100644 index 00000000..5d33e00e Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_5.png new file mode 100644 index 00000000..9e9c5e09 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_6.png new file mode 100644 index 00000000..0fd5fa97 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_hollandaise.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_hollandaise.png new file mode 100644 index 00000000..a29daa02 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_hollandaise.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_hollandaise_cooked.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_hollandaise_cooked.png new file mode 100644 index 00000000..dcd23896 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_hollandaise_cooked.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_rice.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_rice.png new file mode 100644 index 00000000..93f06951 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_rice.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_rice_cooked.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_rice_cooked.png new file mode 100644 index 00000000..7ef93550 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_rice_cooked.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_seed.png new file mode 100644 index 00000000..b23c2a64 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_soup.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_soup.png new file mode 100644 index 00000000..c691a605 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_soup.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_soup_cooked.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_soup_cooked.png new file mode 100644 index 00000000..f50798c9 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_asparagus_soup_cooked.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_banana.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana.png new file mode 100644 index 00000000..8cc2089c Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_1.png new file mode 100644 index 00000000..3c812e82 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_2.png new file mode 100644 index 00000000..7ec8e20f Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_3.png new file mode 100644 index 00000000..3ebf89a8 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_4.png new file mode 100644 index 00000000..4d1e7c34 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_5.png new file mode 100644 index 00000000..0a9a4fba Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_6.png new file mode 100644 index 00000000..2fd264ed Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_7.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_7.png new file mode 100644 index 00000000..7b5c9934 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_7.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_8.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_8.png new file mode 100644 index 00000000..663f338a Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_8.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_seed.png new file mode 100644 index 00000000..c0fd2213 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_banana_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_blueberry_jam.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_blueberry_jam.png new file mode 100644 index 00000000..2d992872 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_blueberry_jam.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_blueberry_pot.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_blueberry_pot.png new file mode 100644 index 00000000..eaa72525 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_blueberry_pot.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_blueberry_pot_cooked.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_blueberry_pot_cooked.png new file mode 100644 index 00000000..0e8f8706 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_blueberry_pot_cooked.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_blueberry_puree.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_blueberry_puree.png new file mode 100644 index 00000000..8bcc4c10 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_blueberry_puree.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_bowl.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_bowl.png new file mode 100644 index 00000000..0467dd5f Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_bowl.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_bowl_rice.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_bowl_rice.png new file mode 100644 index 00000000..68149e70 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_bowl_rice.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_bowl_rice_cooked.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_bowl_rice_cooked.png new file mode 100644 index 00000000..459c9b78 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_bowl_rice_cooked.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot.png new file mode 100644 index 00000000..72628d23 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_1.png new file mode 100644 index 00000000..eb95a534 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_2.png new file mode 100644 index 00000000..8b896641 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_3.png new file mode 100644 index 00000000..40baf221 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_4.png new file mode 100644 index 00000000..ebec9b23 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_5.png new file mode 100644 index 00000000..50cb87b8 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_6.png new file mode 100644 index 00000000..92ba426a Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_seed.png new file mode 100644 index 00000000..656037a4 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_carrot_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chili.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili.png new file mode 100644 index 00000000..4c1f1216 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_1.png new file mode 100644 index 00000000..b4205538 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_2.png new file mode 100644 index 00000000..d93d6d68 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_3.png new file mode 100644 index 00000000..cf9d50be Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_4.png new file mode 100644 index 00000000..46d4c334 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_5.png new file mode 100644 index 00000000..aca024ac Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_6.png new file mode 100644 index 00000000..10c7950b Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_7.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_7.png new file mode 100644 index 00000000..35b57e53 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_7.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_seed.png new file mode 100644 index 00000000..038ca798 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chili_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chives.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chives.png new file mode 100644 index 00000000..bc5cbe51 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chives.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_1.png new file mode 100644 index 00000000..090df7da Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_2.png new file mode 100644 index 00000000..59c6fe74 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_3.png new file mode 100644 index 00000000..474c2448 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_4.png new file mode 100644 index 00000000..09518267 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_5.png new file mode 100644 index 00000000..1895ccd5 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_seed.png new file mode 100644 index 00000000..9623240c Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_chives_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_ciabatta_bread.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_ciabatta_bread.png new file mode 100644 index 00000000..3d5678d5 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_ciabatta_bread.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_ciabatta_dough.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_ciabatta_dough.png new file mode 100644 index 00000000..04c2c78c Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_ciabatta_dough.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_beans_raw.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_beans_raw.png new file mode 100644 index 00000000..c4ba33d6 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_beans_raw.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_beans_roasted.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_beans_roasted.png new file mode 100644 index 00000000..577f44a6 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_beans_roasted.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_1.png new file mode 100644 index 00000000..f28915fc Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_2.png new file mode 100644 index 00000000..ed6e19cf Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_3.png new file mode 100644 index 00000000..d71ed77d Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_4.png new file mode 100644 index 00000000..cfa6ad56 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_5.png new file mode 100644 index 00000000..364a2cac Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_6.png new file mode 100644 index 00000000..10a032e8 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_bottom_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_cup.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_cup.png new file mode 100644 index 00000000..54ef729f Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_cup.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_cup_hot.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_cup_hot.png new file mode 100644 index 00000000..974062df Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_cup_hot.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_cup_hot_animated.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_cup_hot_animated.png new file mode 100644 index 00000000..123a93d2 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_cup_hot_animated.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_leaves.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_leaves.png new file mode 100644 index 00000000..979eeef6 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_leaves.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_powder.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_powder.png new file mode 100644 index 00000000..8ebbb6c0 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_powder.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_sapling.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_sapling.png new file mode 100644 index 00000000..1ce3181d Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_sapling.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_1.png new file mode 100644 index 00000000..83ceafbb Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_2.png new file mode 100644 index 00000000..08f78621 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_3.png new file mode 100644 index 00000000..3db3aa30 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_4.png new file mode 100644 index 00000000..1c04dbdc Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_5.png new file mode 100644 index 00000000..c29a3348 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_6.png new file mode 100644 index 00000000..a8777b10 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_coffee_top_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_corn.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn.png new file mode 100644 index 00000000..7178d71d Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_1.png new file mode 100644 index 00000000..bce80f0c Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_2.png new file mode 100644 index 00000000..00f2d0ee Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_3.png new file mode 100644 index 00000000..2aecfd53 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_4.png new file mode 100644 index 00000000..2a700b21 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_5.png new file mode 100644 index 00000000..76a794bd Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_6.png new file mode 100644 index 00000000..02555e78 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_7.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_7.png new file mode 100644 index 00000000..9ffe59eb Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_7.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_oil.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_oil.png new file mode 100644 index 00000000..cce3eb3f Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_oil.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_seed.png new file mode 100644 index 00000000..34f51e6f Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_corn_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber.png new file mode 100644 index 00000000..0f4265b1 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_1.png new file mode 100644 index 00000000..2a08ed2f Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_2.png new file mode 100644 index 00000000..9197fd2d Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_3.png new file mode 100644 index 00000000..7fedde61 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_4.png new file mode 100644 index 00000000..1cc493d9 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_5.png new file mode 100644 index 00000000..24a6f9f6 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_6.png new file mode 100644 index 00000000..b9c30f95 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_7.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_7.png new file mode 100644 index 00000000..ceb7c4eb Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_7.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_seed.png new file mode 100644 index 00000000..5e0ca72f Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucmber_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_cucumber_in_glass.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucumber_in_glass.png new file mode 100644 index 00000000..56b2e064 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_cucumber_in_glass.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_dandelion_honey.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_dandelion_honey.png new file mode 100644 index 00000000..4a9665ce Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_dandelion_honey.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_dandelion_suds.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_dandelion_suds.png new file mode 100644 index 00000000..6daf03d3 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_dandelion_suds.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_dandelion_suds_cooking.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_dandelion_suds_cooking.png new file mode 100644 index 00000000..f12d9039 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_dandelion_suds_cooking.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_edamame.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_edamame.png new file mode 100644 index 00000000..53db02ff Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_edamame.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_edamame_cooked.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_edamame_cooked.png new file mode 100644 index 00000000..093119d5 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_edamame_cooked.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_fish_parsley_rosemary.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_fish_parsley_rosemary.png new file mode 100644 index 00000000..ebe8d32a Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_fish_parsley_rosemary.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_fish_parsley_rosemary_cooked.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_fish_parsley_rosemary_cooked.png new file mode 100644 index 00000000..3d3c4f13 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_fish_parsley_rosemary_cooked.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_flax.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax.png new file mode 100644 index 00000000..d2f6f7bb Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_1.png new file mode 100644 index 00000000..8a91438e Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_2.png new file mode 100644 index 00000000..0d668840 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_3.png new file mode 100644 index 00000000..a395c1e7 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_4.png new file mode 100644 index 00000000..0cd33d3a Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_5.png new file mode 100644 index 00000000..69ed21bb Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_6.png new file mode 100644 index 00000000..14665611 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_raw.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_raw.png new file mode 100644 index 00000000..c994ced1 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_raw.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_seed.png new file mode 100644 index 00000000..95c2de17 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_seed_oil.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_seed_oil.png new file mode 100644 index 00000000..392df695 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_flax_seed_oil.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_fryer.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_fryer.png new file mode 100644 index 00000000..d6fd15a7 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_fryer.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_fryer_raw.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_fryer_raw.png new file mode 100644 index 00000000..b93cb08a Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_fryer_raw.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic.png new file mode 100644 index 00000000..f09bae9d Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_1.png new file mode 100644 index 00000000..b3f2e5c5 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_2.png new file mode 100644 index 00000000..2c8e3f64 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_3.png new file mode 100644 index 00000000..be612e6b Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_4.png new file mode 100644 index 00000000..20b65d7b Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_5.png new file mode 100644 index 00000000..d61f10a3 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_6.png new file mode 100644 index 00000000..da79776f Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_seed.png new file mode 100644 index 00000000..23d8dcbe Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_garlic_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_imitation_butter.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_imitation_butter.png new file mode 100644 index 00000000..65390f38 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_imitation_butter.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_imitation_cheese.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_imitation_cheese.png new file mode 100644 index 00000000..445a362e Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_imitation_cheese.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_imitation_fish.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_imitation_fish.png new file mode 100644 index 00000000..7bb340a4 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_imitation_fish.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_imitation_meat.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_imitation_meat.png new file mode 100644 index 00000000..ce2a46e0 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_imitation_meat.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_imitation_poultry.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_imitation_poultry.png new file mode 100644 index 00000000..08e14d4c Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_imitation_poultry.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi.png new file mode 100644 index 00000000..598d4ac8 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_1.png new file mode 100644 index 00000000..756be1eb Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_2.png new file mode 100644 index 00000000..1a145ac4 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_3.png new file mode 100644 index 00000000..5f93b6fc Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_4.png new file mode 100644 index 00000000..d1184878 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_5.png new file mode 100644 index 00000000..d1af0744 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_6.png new file mode 100644 index 00000000..8404d813 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_roasted.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_roasted.png new file mode 100644 index 00000000..f489450f Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_roasted.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_seed.png new file mode 100644 index 00000000..d1e7ae77 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_soup.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_soup.png new file mode 100644 index 00000000..d3454554 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_soup.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_soup_cooked.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_soup_cooked.png new file mode 100644 index 00000000..0b24ca01 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_kohlrabi_soup_cooked.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce.png new file mode 100644 index 00000000..35b1ae37 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_1.png new file mode 100644 index 00000000..1fdd7289 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_2.png new file mode 100644 index 00000000..19a24506 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_3.png new file mode 100644 index 00000000..73e36d5a Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_4.png new file mode 100644 index 00000000..e4b9c27b Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_5.png new file mode 100644 index 00000000..44aadfa1 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_oil.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_oil.png new file mode 100644 index 00000000..c63cc3ff Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_oil.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_seed.png new file mode 100644 index 00000000..967661d7 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_lettuce_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_molasses.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_molasses.png new file mode 100644 index 00000000..20ce50b5 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_molasses.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_mushroom_light.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_mushroom_light.png new file mode 100644 index 00000000..c2fe006b Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_mushroom_light.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_mushroom_light_detail.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_mushroom_light_detail.png new file mode 100644 index 00000000..d5668542 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_mushroom_light_detail.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_onion.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion.png new file mode 100644 index 00000000..089ac33c Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_1.png new file mode 100644 index 00000000..c78a2635 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_2.png new file mode 100644 index 00000000..9d281e77 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_3.png new file mode 100644 index 00000000..b5888dff Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_4.png new file mode 100644 index 00000000..f10cac43 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_5.png new file mode 100644 index 00000000..f0410ff3 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_6.png new file mode 100644 index 00000000..cc286b8a Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_7.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_7.png new file mode 100644 index 00000000..79a9aab7 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_7.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_seed.png new file mode 100644 index 00000000..da8608a4 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_onion_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley.png new file mode 100644 index 00000000..9281416b Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_1.png new file mode 100644 index 00000000..d78e8527 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_2.png new file mode 100644 index 00000000..59c7c3ea Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_3.png new file mode 100644 index 00000000..9be8e6f7 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_4.png new file mode 100644 index 00000000..8ce95dab Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_5.png new file mode 100644 index 00000000..f91989bb Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_seed.png new file mode 100644 index 00000000..0963ef07 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_parsley_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut.png new file mode 100644 index 00000000..2e57bfaf Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_1.png new file mode 100644 index 00000000..0fa91697 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_2.png new file mode 100644 index 00000000..65a48485 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_3.png new file mode 100644 index 00000000..cabc670b Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_4.png new file mode 100644 index 00000000..43131c55 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_5.png new file mode 100644 index 00000000..2d2d1cf1 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_6.png new file mode 100644 index 00000000..f6cf55ab Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_7.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_7.png new file mode 100644 index 00000000..ab378db1 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_7.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_butter.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_butter.png new file mode 100644 index 00000000..91687902 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_butter.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_oil.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_oil.png new file mode 100644 index 00000000..0b27fd4c Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_oil.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_seed.png new file mode 100644 index 00000000..bb599fed Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_peanut_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_pizza_dough.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_pizza_dough.png new file mode 100644 index 00000000..2cd29afe Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_pizza_dough.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_pizza_funghi.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_pizza_funghi.png new file mode 100644 index 00000000..43d08552 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_pizza_funghi.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_pizza_funghi_raw.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_pizza_funghi_raw.png new file mode 100644 index 00000000..13eb70c8 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_pizza_funghi_raw.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_pizza_vegana.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_pizza_vegana.png new file mode 100644 index 00000000..98693a6a Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_pizza_vegana.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_pizza_vegana_raw.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_pizza_vegana_raw.png new file mode 100644 index 00000000..019da829 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_pizza_vegana_raw.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_plate.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_plate.png new file mode 100644 index 00000000..c2d3070a Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_plate.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_popcorn.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_popcorn.png new file mode 100644 index 00000000..8a86d4af Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_popcorn.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_potato.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato.png new file mode 100644 index 00000000..c0cc2c5a Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_1.png new file mode 100644 index 00000000..80ee4c4c Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_2.png new file mode 100644 index 00000000..4ced308c Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_3.png new file mode 100644 index 00000000..6830777b Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_4.png new file mode 100644 index 00000000..5a7aaf45 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_5.png new file mode 100644 index 00000000..ccf8adc0 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_6.png new file mode 100644 index 00000000..047c0091 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_7.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_7.png new file mode 100644 index 00000000..14122662 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_7.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_seed.png new file mode 100644 index 00000000..0d964ff5 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_potato_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rice.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice.png new file mode 100644 index 00000000..ba6de900 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_1.png new file mode 100644 index 00000000..79f76f4a Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_2.png new file mode 100644 index 00000000..5dc46c3c Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_3.png new file mode 100644 index 00000000..dc6f734e Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_4.png new file mode 100644 index 00000000..7f6d268c Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_5.png new file mode 100644 index 00000000..3c82a396 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_6.png new file mode 100644 index 00000000..4e6fcfa9 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_flour.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_flour.png new file mode 100644 index 00000000..de413552 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_flour.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_seed.png new file mode 100644 index 00000000..354be350 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_starch.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_starch.png new file mode 100644 index 00000000..eadc4e78 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rice_starch.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary.png new file mode 100644 index 00000000..c87d4eaa Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_1.png new file mode 100644 index 00000000..f52f3cbd Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_2.png new file mode 100644 index 00000000..caff30dd Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_3.png new file mode 100644 index 00000000..33a661cd Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_4.png new file mode 100644 index 00000000..a799a06d Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_5.png new file mode 100644 index 00000000..e46af0bf Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_6.png new file mode 100644 index 00000000..b016c3b1 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_seed.png new file mode 100644 index 00000000..99760ab6 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_rosemary_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_salad_bowl.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_salad_bowl.png new file mode 100644 index 00000000..dd820bec Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_salad_bowl.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_salad_hollandaise.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_salad_hollandaise.png new file mode 100644 index 00000000..807916f0 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_salad_hollandaise.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_sauce_hollandaise.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_sauce_hollandaise.png new file mode 100644 index 00000000..b001a093 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_sauce_hollandaise.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_sea_salad.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_sea_salad.png new file mode 100644 index 00000000..add46e1a Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_sea_salad.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_soy.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy.png new file mode 100644 index 00000000..d7427d2f Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_1.png new file mode 100644 index 00000000..a890cb1e Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_2.png new file mode 100644 index 00000000..708bbecf Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_3.png new file mode 100644 index 00000000..a7c845df Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_4.png new file mode 100644 index 00000000..6b9536ab Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_5.png new file mode 100644 index 00000000..4c9df031 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_6.png new file mode 100644 index 00000000..355bada3 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_7.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_7.png new file mode 100644 index 00000000..918f313e Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_7.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_8.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_8.png new file mode 100644 index 00000000..5e5591a9 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_8.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_milk.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_milk.png new file mode 100644 index 00000000..149fdd10 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_milk.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_seed.png new file mode 100644 index 00000000..3b8eac3f Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_soup.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_soup.png new file mode 100644 index 00000000..d15f20c9 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_soup.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_soup_cooked.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_soup_cooked.png new file mode 100644 index 00000000..b6e21658 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_soy_soup_cooked.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry.png new file mode 100644 index 00000000..28caf4fe Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_1.png new file mode 100644 index 00000000..63d91375 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_2.png new file mode 100644 index 00000000..c94032c6 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_3.png new file mode 100644 index 00000000..a3ae7e4d Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_4.png new file mode 100644 index 00000000..bff1ff9c Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_5.png new file mode 100644 index 00000000..09d12fa7 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_6.png new file mode 100644 index 00000000..50cfbadd Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_7.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_7.png new file mode 100644 index 00000000..18a048e8 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_7.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_seed.png new file mode 100644 index 00000000..6ae5f822 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_strawberry_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower.png new file mode 100644 index 00000000..cf76b0e4 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_1.png new file mode 100644 index 00000000..445f63cb Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_2.png new file mode 100644 index 00000000..ee3c8d7c Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_3.png new file mode 100644 index 00000000..fcafd158 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_4.png new file mode 100644 index 00000000..4ff8caa1 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_5.png new file mode 100644 index 00000000..7f88d1fd Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seed.png new file mode 100644 index 00000000..cf84a40e Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seed_flour.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seed_flour.png new file mode 100644 index 00000000..f0c01f9c Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seed_flour.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seeds.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seeds.png new file mode 100644 index 00000000..f2128ef2 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seeds.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seeds_bread.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seeds_bread.png new file mode 100644 index 00000000..9e3e5086 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seeds_bread.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seeds_dough.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seeds_dough.png new file mode 100644 index 00000000..0bcb73b1 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seeds_dough.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seeds_oil.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seeds_oil.png new file mode 100644 index 00000000..3cc3f182 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seeds_oil.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seeds_roasted.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seeds_roasted.png new file mode 100644 index 00000000..250c4864 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_sunflower_seeds_roasted.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_tofu.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_tofu.png new file mode 100644 index 00000000..df52590f Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_tofu.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_tofu_chives_rosemary.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_tofu_chives_rosemary.png new file mode 100644 index 00000000..e27204df Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_tofu_chives_rosemary.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_tofu_chives_rosemary_cooked.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_tofu_chives_rosemary_cooked.png new file mode 100644 index 00000000..3f072f3b Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_tofu_chives_rosemary_cooked.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_tofu_cooked.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_tofu_cooked.png new file mode 100644 index 00000000..b5aa21ae Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_tofu_cooked.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato.png new file mode 100644 index 00000000..af961e35 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_1.png new file mode 100644 index 00000000..fb51ea67 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_2.png new file mode 100644 index 00000000..8dac5492 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_3.png new file mode 100644 index 00000000..c565995d Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_4.png new file mode 100644 index 00000000..3434107a Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_5.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_5.png new file mode 100644 index 00000000..a6a7b6ed Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_5.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_6.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_6.png new file mode 100644 index 00000000..4216d613 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_6.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_7.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_7.png new file mode 100644 index 00000000..2be86c0d Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_7.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_8.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_8.png new file mode 100644 index 00000000..5382a84e Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_8.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_seed.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_seed.png new file mode 100644 index 00000000..bb9dbd2d Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_tomato_seed.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_vegan_shushi.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_vegan_shushi.png new file mode 100644 index 00000000..cb085d09 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_vegan_shushi.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_vegan_strawberry_milk.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_vegan_strawberry_milk.png new file mode 100644 index 00000000..59594a04 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_vegan_strawberry_milk.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_bottom_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_bottom_1.png new file mode 100644 index 00000000..df9cbf90 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_bottom_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_bottom_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_bottom_2.png new file mode 100644 index 00000000..dbc452b2 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_bottom_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_bottom_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_bottom_3.png new file mode 100644 index 00000000..d1f964e6 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_bottom_3.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_bottom_4.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_bottom_4.png new file mode 100644 index 00000000..0c940e70 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_bottom_4.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_grapes.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_grapes.png new file mode 100644 index 00000000..71c49345 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_grapes.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_leaves.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_leaves.png new file mode 100644 index 00000000..a019984f Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_leaves.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_sapling.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_sapling.png new file mode 100644 index 00000000..79451590 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_sapling.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_top_1.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_top_1.png new file mode 100644 index 00000000..db2b0ae0 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_top_1.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_top_2.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_top_2.png new file mode 100644 index 00000000..fc5edcde Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_top_2.png differ diff --git a/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_top_3.png b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_top_3.png new file mode 100644 index 00000000..5d6e32a7 Binary files /dev/null and b/mods/cucina_vegana/textures/16x16/cucina_vegana_vine_top_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_asparagus.png b/mods/cucina_vegana/textures/cucina_vegana_asparagus.png new file mode 100644 index 00000000..444734c4 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_asparagus.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_asparagus_1.png b/mods/cucina_vegana/textures/cucina_vegana_asparagus_1.png new file mode 100644 index 00000000..9d67c678 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_asparagus_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_asparagus_2.png b/mods/cucina_vegana/textures/cucina_vegana_asparagus_2.png new file mode 100644 index 00000000..1cb7b439 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_asparagus_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_asparagus_3.png b/mods/cucina_vegana/textures/cucina_vegana_asparagus_3.png new file mode 100644 index 00000000..9540ed5d Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_asparagus_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_asparagus_4.png b/mods/cucina_vegana/textures/cucina_vegana_asparagus_4.png new file mode 100644 index 00000000..31df6791 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_asparagus_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_asparagus_5.png b/mods/cucina_vegana/textures/cucina_vegana_asparagus_5.png new file mode 100644 index 00000000..e82c898f Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_asparagus_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_asparagus_6.png b/mods/cucina_vegana/textures/cucina_vegana_asparagus_6.png new file mode 100644 index 00000000..d667f45e Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_asparagus_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_asparagus_hollandaise.png b/mods/cucina_vegana/textures/cucina_vegana_asparagus_hollandaise.png new file mode 100644 index 00000000..6fb6d4a0 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_asparagus_hollandaise.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_asparagus_hollandaise_cooked.png b/mods/cucina_vegana/textures/cucina_vegana_asparagus_hollandaise_cooked.png new file mode 100644 index 00000000..7b871317 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_asparagus_hollandaise_cooked.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_asparagus_rice.png b/mods/cucina_vegana/textures/cucina_vegana_asparagus_rice.png new file mode 100644 index 00000000..ae252581 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_asparagus_rice.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_asparagus_rice_cooked.png b/mods/cucina_vegana/textures/cucina_vegana_asparagus_rice_cooked.png new file mode 100644 index 00000000..9bfb0a34 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_asparagus_rice_cooked.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_asparagus_screenshot.jpg b/mods/cucina_vegana/textures/cucina_vegana_asparagus_screenshot.jpg new file mode 100644 index 00000000..f1a843b4 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_asparagus_screenshot.jpg differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_asparagus_seed.png b/mods/cucina_vegana/textures/cucina_vegana_asparagus_seed.png new file mode 100644 index 00000000..d4d819c2 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_asparagus_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_asparagus_soup.png b/mods/cucina_vegana/textures/cucina_vegana_asparagus_soup.png new file mode 100644 index 00000000..de04471b Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_asparagus_soup.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_asparagus_soup_cooked.png b/mods/cucina_vegana/textures/cucina_vegana_asparagus_soup_cooked.png new file mode 100644 index 00000000..f564a889 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_asparagus_soup_cooked.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_banana.png b/mods/cucina_vegana/textures/cucina_vegana_banana.png new file mode 100644 index 00000000..cd5f0e27 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_banana.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_banana_1.png b/mods/cucina_vegana/textures/cucina_vegana_banana_1.png new file mode 100644 index 00000000..2af2335b Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_banana_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_banana_2.png b/mods/cucina_vegana/textures/cucina_vegana_banana_2.png new file mode 100644 index 00000000..5ce0acb9 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_banana_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_banana_3.png b/mods/cucina_vegana/textures/cucina_vegana_banana_3.png new file mode 100644 index 00000000..7d648752 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_banana_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_banana_4.png b/mods/cucina_vegana/textures/cucina_vegana_banana_4.png new file mode 100644 index 00000000..57f129b8 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_banana_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_banana_5.png b/mods/cucina_vegana/textures/cucina_vegana_banana_5.png new file mode 100644 index 00000000..acccc7c0 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_banana_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_banana_6.png b/mods/cucina_vegana/textures/cucina_vegana_banana_6.png new file mode 100644 index 00000000..3f8e8051 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_banana_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_banana_7.png b/mods/cucina_vegana/textures/cucina_vegana_banana_7.png new file mode 100644 index 00000000..3c281fb0 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_banana_7.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_banana_8.png b/mods/cucina_vegana/textures/cucina_vegana_banana_8.png new file mode 100644 index 00000000..7c58d54e Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_banana_8.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_banana_screenshot.jpg b/mods/cucina_vegana/textures/cucina_vegana_banana_screenshot.jpg new file mode 100644 index 00000000..22cc118d Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_banana_screenshot.jpg differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_banana_seed.png b/mods/cucina_vegana/textures/cucina_vegana_banana_seed.png new file mode 100644 index 00000000..220234fd Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_banana_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_blueberry_jam.png b/mods/cucina_vegana/textures/cucina_vegana_blueberry_jam.png new file mode 100644 index 00000000..fcebf4c6 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_blueberry_jam.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_blueberry_pot.png b/mods/cucina_vegana/textures/cucina_vegana_blueberry_pot.png new file mode 100644 index 00000000..d64e8e48 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_blueberry_pot.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_blueberry_pot_cooked.png b/mods/cucina_vegana/textures/cucina_vegana_blueberry_pot_cooked.png new file mode 100644 index 00000000..1527c837 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_blueberry_pot_cooked.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_blueberry_puree.png b/mods/cucina_vegana/textures/cucina_vegana_blueberry_puree.png new file mode 100644 index 00000000..02015411 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_blueberry_puree.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_bowl.png b/mods/cucina_vegana/textures/cucina_vegana_bowl.png new file mode 100644 index 00000000..4854c006 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_bowl.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_bowl_rice.png b/mods/cucina_vegana/textures/cucina_vegana_bowl_rice.png new file mode 100644 index 00000000..925cf6fd Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_bowl_rice.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_bowl_rice_cooked.png b/mods/cucina_vegana/textures/cucina_vegana_bowl_rice_cooked.png new file mode 100644 index 00000000..0763afc3 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_bowl_rice_cooked.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_carrot.png b/mods/cucina_vegana/textures/cucina_vegana_carrot.png new file mode 100644 index 00000000..2c4dff2c Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_carrot.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_carrot_1.png b/mods/cucina_vegana/textures/cucina_vegana_carrot_1.png new file mode 100644 index 00000000..566ac671 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_carrot_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_carrot_2.png b/mods/cucina_vegana/textures/cucina_vegana_carrot_2.png new file mode 100644 index 00000000..cc51d78e Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_carrot_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_carrot_3.png b/mods/cucina_vegana/textures/cucina_vegana_carrot_3.png new file mode 100644 index 00000000..a41c8a19 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_carrot_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_carrot_4.png b/mods/cucina_vegana/textures/cucina_vegana_carrot_4.png new file mode 100644 index 00000000..26a3ac44 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_carrot_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_carrot_5.png b/mods/cucina_vegana/textures/cucina_vegana_carrot_5.png new file mode 100644 index 00000000..21b899a2 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_carrot_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_carrot_6.png b/mods/cucina_vegana/textures/cucina_vegana_carrot_6.png new file mode 100644 index 00000000..c2c302c9 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_carrot_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_carrot_seed.png b/mods/cucina_vegana/textures/cucina_vegana_carrot_seed.png new file mode 100644 index 00000000..4f9eaba7 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_carrot_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chili.png b/mods/cucina_vegana/textures/cucina_vegana_chili.png new file mode 100644 index 00000000..3ca5ba8a Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chili.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chili_1.png b/mods/cucina_vegana/textures/cucina_vegana_chili_1.png new file mode 100644 index 00000000..7cfdf355 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chili_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chili_2.png b/mods/cucina_vegana/textures/cucina_vegana_chili_2.png new file mode 100644 index 00000000..3ae75055 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chili_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chili_3.png b/mods/cucina_vegana/textures/cucina_vegana_chili_3.png new file mode 100644 index 00000000..eef03c51 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chili_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chili_4.png b/mods/cucina_vegana/textures/cucina_vegana_chili_4.png new file mode 100644 index 00000000..8a26422a Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chili_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chili_5.png b/mods/cucina_vegana/textures/cucina_vegana_chili_5.png new file mode 100644 index 00000000..dc038d25 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chili_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chili_6.png b/mods/cucina_vegana/textures/cucina_vegana_chili_6.png new file mode 100644 index 00000000..f925ac11 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chili_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chili_7.png b/mods/cucina_vegana/textures/cucina_vegana_chili_7.png new file mode 100644 index 00000000..f61b70c6 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chili_7.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chili_seed.png b/mods/cucina_vegana/textures/cucina_vegana_chili_seed.png new file mode 100644 index 00000000..1ebf628a Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chili_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chives.png b/mods/cucina_vegana/textures/cucina_vegana_chives.png new file mode 100644 index 00000000..880c6167 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chives.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chives_1.png b/mods/cucina_vegana/textures/cucina_vegana_chives_1.png new file mode 100644 index 00000000..195450dc Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chives_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chives_2.png b/mods/cucina_vegana/textures/cucina_vegana_chives_2.png new file mode 100644 index 00000000..f37a0b06 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chives_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chives_3.png b/mods/cucina_vegana/textures/cucina_vegana_chives_3.png new file mode 100644 index 00000000..e185f379 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chives_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chives_4.png b/mods/cucina_vegana/textures/cucina_vegana_chives_4.png new file mode 100644 index 00000000..69b7ec35 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chives_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chives_5.png b/mods/cucina_vegana/textures/cucina_vegana_chives_5.png new file mode 100644 index 00000000..619d11b9 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chives_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chives_screenshot.jpg b/mods/cucina_vegana/textures/cucina_vegana_chives_screenshot.jpg new file mode 100644 index 00000000..1953bcf8 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chives_screenshot.jpg differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_chives_seed.png b/mods/cucina_vegana/textures/cucina_vegana_chives_seed.png new file mode 100644 index 00000000..d8d91fdc Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_chives_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_ciabatta_bread.png b/mods/cucina_vegana/textures/cucina_vegana_ciabatta_bread.png new file mode 100644 index 00000000..3ed01ab7 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_ciabatta_bread.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_ciabatta_dough.png b/mods/cucina_vegana/textures/cucina_vegana_ciabatta_dough.png new file mode 100644 index 00000000..1d42155b Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_ciabatta_dough.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_beans_raw.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_beans_raw.png new file mode 100644 index 00000000..b52409bf Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_beans_raw.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_beans_roasted.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_beans_roasted.png new file mode 100644 index 00000000..41e3c08e Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_beans_roasted.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_1.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_1.png new file mode 100644 index 00000000..fda6f962 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_2.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_2.png new file mode 100644 index 00000000..be1c9dd1 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_3.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_3.png new file mode 100644 index 00000000..afb06115 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_4.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_4.png new file mode 100644 index 00000000..6f5080b0 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_5.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_5.png new file mode 100644 index 00000000..34d74277 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_6.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_6.png new file mode 100644 index 00000000..b3431bf0 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_bottom_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_cup.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_cup.png new file mode 100644 index 00000000..5217dc7f Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_cup.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_cup_hot.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_cup_hot.png new file mode 100644 index 00000000..5106612e Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_cup_hot.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_cup_hot_animated.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_cup_hot_animated.png new file mode 100644 index 00000000..b6eefc71 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_cup_hot_animated.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_leaves.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_leaves.png new file mode 100644 index 00000000..ad94707a Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_leaves.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_powder.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_powder.png new file mode 100644 index 00000000..5671827f Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_powder.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_sapling.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_sapling.png new file mode 100644 index 00000000..ea444518 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_sapling.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_top_1.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_top_1.png new file mode 100644 index 00000000..d7a35bb0 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_top_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_top_2.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_top_2.png new file mode 100644 index 00000000..71135614 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_top_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_top_3.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_top_3.png new file mode 100644 index 00000000..1a54e80e Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_top_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_top_4.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_top_4.png new file mode 100644 index 00000000..b1280218 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_top_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_top_5.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_top_5.png new file mode 100644 index 00000000..06b7af7a Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_top_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_coffee_top_6.png b/mods/cucina_vegana/textures/cucina_vegana_coffee_top_6.png new file mode 100644 index 00000000..29f76730 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_coffee_top_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_corn.png b/mods/cucina_vegana/textures/cucina_vegana_corn.png new file mode 100644 index 00000000..4d0f7f7f Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_corn.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_corn_1.png b/mods/cucina_vegana/textures/cucina_vegana_corn_1.png new file mode 100644 index 00000000..23a61d83 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_corn_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_corn_2.png b/mods/cucina_vegana/textures/cucina_vegana_corn_2.png new file mode 100644 index 00000000..0bfcee83 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_corn_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_corn_3.png b/mods/cucina_vegana/textures/cucina_vegana_corn_3.png new file mode 100644 index 00000000..c3c9db4b Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_corn_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_corn_4.png b/mods/cucina_vegana/textures/cucina_vegana_corn_4.png new file mode 100644 index 00000000..b5e1e77a Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_corn_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_corn_5.png b/mods/cucina_vegana/textures/cucina_vegana_corn_5.png new file mode 100644 index 00000000..60c8f598 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_corn_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_corn_6.png b/mods/cucina_vegana/textures/cucina_vegana_corn_6.png new file mode 100644 index 00000000..697527dc Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_corn_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_corn_7.png b/mods/cucina_vegana/textures/cucina_vegana_corn_7.png new file mode 100644 index 00000000..c7a4ca11 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_corn_7.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_corn_oil.png b/mods/cucina_vegana/textures/cucina_vegana_corn_oil.png new file mode 100644 index 00000000..b6cce810 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_corn_oil.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_corn_seed.png b/mods/cucina_vegana/textures/cucina_vegana_corn_seed.png new file mode 100644 index 00000000..2711a1bf Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_corn_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_cucumber.png b/mods/cucina_vegana/textures/cucina_vegana_cucumber.png new file mode 100644 index 00000000..1e7ddd3e Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_cucumber.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_cucumber_1.png b/mods/cucina_vegana/textures/cucina_vegana_cucumber_1.png new file mode 100644 index 00000000..6b850747 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_cucumber_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_cucumber_2.png b/mods/cucina_vegana/textures/cucina_vegana_cucumber_2.png new file mode 100644 index 00000000..b304be49 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_cucumber_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_cucumber_3.png b/mods/cucina_vegana/textures/cucina_vegana_cucumber_3.png new file mode 100644 index 00000000..7586351e Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_cucumber_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_cucumber_4.png b/mods/cucina_vegana/textures/cucina_vegana_cucumber_4.png new file mode 100644 index 00000000..6556abdf Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_cucumber_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_cucumber_5.png b/mods/cucina_vegana/textures/cucina_vegana_cucumber_5.png new file mode 100644 index 00000000..b4c078f8 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_cucumber_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_cucumber_6.png b/mods/cucina_vegana/textures/cucina_vegana_cucumber_6.png new file mode 100644 index 00000000..c780f9d5 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_cucumber_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_cucumber_7.png b/mods/cucina_vegana/textures/cucina_vegana_cucumber_7.png new file mode 100644 index 00000000..63861538 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_cucumber_7.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_cucumber_in_glass.png b/mods/cucina_vegana/textures/cucina_vegana_cucumber_in_glass.png new file mode 100644 index 00000000..46a97a39 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_cucumber_in_glass.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_cucumber_seed.png b/mods/cucina_vegana/textures/cucina_vegana_cucumber_seed.png new file mode 100644 index 00000000..f2f824f5 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_cucumber_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_dandelion_honey.png b/mods/cucina_vegana/textures/cucina_vegana_dandelion_honey.png new file mode 100644 index 00000000..2632e984 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_dandelion_honey.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_dandelion_suds.png b/mods/cucina_vegana/textures/cucina_vegana_dandelion_suds.png new file mode 100644 index 00000000..03a89c47 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_dandelion_suds.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_dandelion_suds_cooking.png b/mods/cucina_vegana/textures/cucina_vegana_dandelion_suds_cooking.png new file mode 100644 index 00000000..8ee8c5ae Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_dandelion_suds_cooking.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_edamame.png b/mods/cucina_vegana/textures/cucina_vegana_edamame.png new file mode 100644 index 00000000..2e63e93f Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_edamame.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_edamame_cooked.png b/mods/cucina_vegana/textures/cucina_vegana_edamame_cooked.png new file mode 100644 index 00000000..2cd5ad7b Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_edamame_cooked.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_fish_parsley_rosemary.png b/mods/cucina_vegana/textures/cucina_vegana_fish_parsley_rosemary.png new file mode 100644 index 00000000..fb6ba8c1 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_fish_parsley_rosemary.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_fish_parsley_rosemary_cooked.png b/mods/cucina_vegana/textures/cucina_vegana_fish_parsley_rosemary_cooked.png new file mode 100644 index 00000000..d735f442 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_fish_parsley_rosemary_cooked.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_flax.png b/mods/cucina_vegana/textures/cucina_vegana_flax.png new file mode 100644 index 00000000..8b190bc3 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_flax.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_flax_1.png b/mods/cucina_vegana/textures/cucina_vegana_flax_1.png new file mode 100644 index 00000000..c443298d Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_flax_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_flax_2.png b/mods/cucina_vegana/textures/cucina_vegana_flax_2.png new file mode 100644 index 00000000..ba6357af Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_flax_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_flax_3.png b/mods/cucina_vegana/textures/cucina_vegana_flax_3.png new file mode 100644 index 00000000..e32919e9 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_flax_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_flax_4.png b/mods/cucina_vegana/textures/cucina_vegana_flax_4.png new file mode 100644 index 00000000..b0f07b8a Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_flax_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_flax_5.png b/mods/cucina_vegana/textures/cucina_vegana_flax_5.png new file mode 100644 index 00000000..ae11a013 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_flax_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_flax_6.png b/mods/cucina_vegana/textures/cucina_vegana_flax_6.png new file mode 100644 index 00000000..cebccfc8 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_flax_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_flax_raw.png b/mods/cucina_vegana/textures/cucina_vegana_flax_raw.png new file mode 100644 index 00000000..38abb2b6 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_flax_raw.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_flax_screenshot.jpg b/mods/cucina_vegana/textures/cucina_vegana_flax_screenshot.jpg new file mode 100644 index 00000000..a13f618d Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_flax_screenshot.jpg differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_flax_seed.png b/mods/cucina_vegana/textures/cucina_vegana_flax_seed.png new file mode 100644 index 00000000..0a655cff Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_flax_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_flax_seed_oil.png b/mods/cucina_vegana/textures/cucina_vegana_flax_seed_oil.png new file mode 100644 index 00000000..14f3dc72 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_flax_seed_oil.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_fryer.png b/mods/cucina_vegana/textures/cucina_vegana_fryer.png new file mode 100644 index 00000000..3a828842 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_fryer.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_fryer_raw.png b/mods/cucina_vegana/textures/cucina_vegana_fryer_raw.png new file mode 100644 index 00000000..a049decc Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_fryer_raw.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_garlic.png b/mods/cucina_vegana/textures/cucina_vegana_garlic.png new file mode 100644 index 00000000..98659793 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_garlic.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_garlic_1.png b/mods/cucina_vegana/textures/cucina_vegana_garlic_1.png new file mode 100644 index 00000000..e5845786 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_garlic_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_garlic_2.png b/mods/cucina_vegana/textures/cucina_vegana_garlic_2.png new file mode 100644 index 00000000..0a56bfbc Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_garlic_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_garlic_3.png b/mods/cucina_vegana/textures/cucina_vegana_garlic_3.png new file mode 100644 index 00000000..c5b50e05 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_garlic_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_garlic_4.png b/mods/cucina_vegana/textures/cucina_vegana_garlic_4.png new file mode 100644 index 00000000..f72e1427 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_garlic_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_garlic_5.png b/mods/cucina_vegana/textures/cucina_vegana_garlic_5.png new file mode 100644 index 00000000..72521d09 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_garlic_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_garlic_6.png b/mods/cucina_vegana/textures/cucina_vegana_garlic_6.png new file mode 100644 index 00000000..02bf94b9 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_garlic_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_garlic_seed.png b/mods/cucina_vegana/textures/cucina_vegana_garlic_seed.png new file mode 100644 index 00000000..3fb3f5dc Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_garlic_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_imitation_butter.png b/mods/cucina_vegana/textures/cucina_vegana_imitation_butter.png new file mode 100644 index 00000000..a7b88ca9 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_imitation_butter.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_imitation_cheese.png b/mods/cucina_vegana/textures/cucina_vegana_imitation_cheese.png new file mode 100644 index 00000000..479606eb Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_imitation_cheese.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_imitation_fish.png b/mods/cucina_vegana/textures/cucina_vegana_imitation_fish.png new file mode 100644 index 00000000..a180b72c Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_imitation_fish.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_imitation_meat.png b/mods/cucina_vegana/textures/cucina_vegana_imitation_meat.png new file mode 100644 index 00000000..8e8c69fc Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_imitation_meat.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_imitation_poultry.png b/mods/cucina_vegana/textures/cucina_vegana_imitation_poultry.png new file mode 100644 index 00000000..46e6e3fd Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_imitation_poultry.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_kohlrabi.png b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi.png new file mode 100644 index 00000000..328fb495 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_1.png b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_1.png new file mode 100644 index 00000000..394fa9f1 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_2.png b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_2.png new file mode 100644 index 00000000..6c8d798d Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_3.png b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_3.png new file mode 100644 index 00000000..73df1ce7 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_4.png b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_4.png new file mode 100644 index 00000000..a6e9ff6a Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_5.png b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_5.png new file mode 100644 index 00000000..c623c932 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_6.png b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_6.png new file mode 100644 index 00000000..9c70976c Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_roasted.png b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_roasted.png new file mode 100644 index 00000000..60652bdf Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_roasted.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_screenshot.jpg b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_screenshot.jpg new file mode 100644 index 00000000..7cf89497 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_screenshot.jpg differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_seed.png b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_seed.png new file mode 100644 index 00000000..b620da9f Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_soup.png b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_soup.png new file mode 100644 index 00000000..8c75d383 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_soup.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_soup_cooked.png b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_soup_cooked.png new file mode 100644 index 00000000..dcf7f677 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_kohlrabi_soup_cooked.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_lettuce.png b/mods/cucina_vegana/textures/cucina_vegana_lettuce.png new file mode 100644 index 00000000..a7906206 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_lettuce.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_lettuce_1.png b/mods/cucina_vegana/textures/cucina_vegana_lettuce_1.png new file mode 100644 index 00000000..ff5d96c1 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_lettuce_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_lettuce_2.png b/mods/cucina_vegana/textures/cucina_vegana_lettuce_2.png new file mode 100644 index 00000000..36eda4d9 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_lettuce_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_lettuce_3.png b/mods/cucina_vegana/textures/cucina_vegana_lettuce_3.png new file mode 100644 index 00000000..1506cb6a Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_lettuce_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_lettuce_4.png b/mods/cucina_vegana/textures/cucina_vegana_lettuce_4.png new file mode 100644 index 00000000..99a9c029 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_lettuce_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_lettuce_5.png b/mods/cucina_vegana/textures/cucina_vegana_lettuce_5.png new file mode 100644 index 00000000..0eeb9468 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_lettuce_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_lettuce_oil.png b/mods/cucina_vegana/textures/cucina_vegana_lettuce_oil.png new file mode 100644 index 00000000..503e7d8e Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_lettuce_oil.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_lettuce_screenshot.jpg b/mods/cucina_vegana/textures/cucina_vegana_lettuce_screenshot.jpg new file mode 100644 index 00000000..1eb80676 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_lettuce_screenshot.jpg differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_lettuce_seed.png b/mods/cucina_vegana/textures/cucina_vegana_lettuce_seed.png new file mode 100644 index 00000000..0b3b26d6 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_lettuce_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_molasses.png b/mods/cucina_vegana/textures/cucina_vegana_molasses.png new file mode 100644 index 00000000..ce260d12 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_molasses.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_mushroom_light.png b/mods/cucina_vegana/textures/cucina_vegana_mushroom_light.png new file mode 100644 index 00000000..770b146b Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_mushroom_light.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_mushroom_light_detail.png b/mods/cucina_vegana/textures/cucina_vegana_mushroom_light_detail.png new file mode 100644 index 00000000..f4d3cd3a Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_mushroom_light_detail.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_onion.png b/mods/cucina_vegana/textures/cucina_vegana_onion.png new file mode 100644 index 00000000..b6b00b8b Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_onion.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_onion_1.png b/mods/cucina_vegana/textures/cucina_vegana_onion_1.png new file mode 100644 index 00000000..1eb88fab Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_onion_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_onion_2.png b/mods/cucina_vegana/textures/cucina_vegana_onion_2.png new file mode 100644 index 00000000..cf20187d Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_onion_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_onion_3.png b/mods/cucina_vegana/textures/cucina_vegana_onion_3.png new file mode 100644 index 00000000..193d84e5 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_onion_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_onion_4.png b/mods/cucina_vegana/textures/cucina_vegana_onion_4.png new file mode 100644 index 00000000..c0843f11 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_onion_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_onion_5.png b/mods/cucina_vegana/textures/cucina_vegana_onion_5.png new file mode 100644 index 00000000..1fead13f Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_onion_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_onion_6.png b/mods/cucina_vegana/textures/cucina_vegana_onion_6.png new file mode 100644 index 00000000..2c98fda1 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_onion_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_onion_7.png b/mods/cucina_vegana/textures/cucina_vegana_onion_7.png new file mode 100644 index 00000000..bb55a397 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_onion_7.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_onion_seed.png b/mods/cucina_vegana/textures/cucina_vegana_onion_seed.png new file mode 100644 index 00000000..b3f774fb Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_onion_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_parsley.png b/mods/cucina_vegana/textures/cucina_vegana_parsley.png new file mode 100644 index 00000000..810df1f6 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_parsley.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_parsley_1.png b/mods/cucina_vegana/textures/cucina_vegana_parsley_1.png new file mode 100644 index 00000000..f775ba16 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_parsley_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_parsley_2.png b/mods/cucina_vegana/textures/cucina_vegana_parsley_2.png new file mode 100644 index 00000000..67113972 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_parsley_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_parsley_3.png b/mods/cucina_vegana/textures/cucina_vegana_parsley_3.png new file mode 100644 index 00000000..f06b4112 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_parsley_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_parsley_4.png b/mods/cucina_vegana/textures/cucina_vegana_parsley_4.png new file mode 100644 index 00000000..220065f2 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_parsley_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_parsley_5.png b/mods/cucina_vegana/textures/cucina_vegana_parsley_5.png new file mode 100644 index 00000000..79150972 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_parsley_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_parsley_screenshot.jpg b/mods/cucina_vegana/textures/cucina_vegana_parsley_screenshot.jpg new file mode 100644 index 00000000..9fb62a44 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_parsley_screenshot.jpg differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_parsley_seed.png b/mods/cucina_vegana/textures/cucina_vegana_parsley_seed.png new file mode 100644 index 00000000..8b840175 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_parsley_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_peanut.png b/mods/cucina_vegana/textures/cucina_vegana_peanut.png new file mode 100644 index 00000000..69d5593c Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_peanut.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_peanut_1.png b/mods/cucina_vegana/textures/cucina_vegana_peanut_1.png new file mode 100644 index 00000000..f24a3f5a Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_peanut_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_peanut_2.png b/mods/cucina_vegana/textures/cucina_vegana_peanut_2.png new file mode 100644 index 00000000..a789dee4 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_peanut_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_peanut_3.png b/mods/cucina_vegana/textures/cucina_vegana_peanut_3.png new file mode 100644 index 00000000..0b9f9391 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_peanut_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_peanut_4.png b/mods/cucina_vegana/textures/cucina_vegana_peanut_4.png new file mode 100644 index 00000000..e70e03f2 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_peanut_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_peanut_5.png b/mods/cucina_vegana/textures/cucina_vegana_peanut_5.png new file mode 100644 index 00000000..08a077d0 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_peanut_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_peanut_6.png b/mods/cucina_vegana/textures/cucina_vegana_peanut_6.png new file mode 100644 index 00000000..b32b2dec Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_peanut_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_peanut_7.png b/mods/cucina_vegana/textures/cucina_vegana_peanut_7.png new file mode 100644 index 00000000..cc670d2c Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_peanut_7.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_peanut_butter.png b/mods/cucina_vegana/textures/cucina_vegana_peanut_butter.png new file mode 100644 index 00000000..b748c35f Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_peanut_butter.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_peanut_oil.png b/mods/cucina_vegana/textures/cucina_vegana_peanut_oil.png new file mode 100644 index 00000000..aa810ed2 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_peanut_oil.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_peanut_screenshot.jpg b/mods/cucina_vegana/textures/cucina_vegana_peanut_screenshot.jpg new file mode 100644 index 00000000..40a94da3 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_peanut_screenshot.jpg differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_peanut_seed.png b/mods/cucina_vegana/textures/cucina_vegana_peanut_seed.png new file mode 100644 index 00000000..530030f3 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_peanut_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_pizza_dough.png b/mods/cucina_vegana/textures/cucina_vegana_pizza_dough.png new file mode 100644 index 00000000..245c2556 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_pizza_dough.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_pizza_funghi.png b/mods/cucina_vegana/textures/cucina_vegana_pizza_funghi.png new file mode 100644 index 00000000..a57e15c7 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_pizza_funghi.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_pizza_funghi_raw.png b/mods/cucina_vegana/textures/cucina_vegana_pizza_funghi_raw.png new file mode 100644 index 00000000..51a042c6 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_pizza_funghi_raw.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_pizza_vegana.png b/mods/cucina_vegana/textures/cucina_vegana_pizza_vegana.png new file mode 100644 index 00000000..4e203bfe Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_pizza_vegana.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_pizza_vegana_raw.png b/mods/cucina_vegana/textures/cucina_vegana_pizza_vegana_raw.png new file mode 100644 index 00000000..9fc60e86 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_pizza_vegana_raw.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_plate.png b/mods/cucina_vegana/textures/cucina_vegana_plate.png new file mode 100644 index 00000000..2166558d Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_plate.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_popcorn.png b/mods/cucina_vegana/textures/cucina_vegana_popcorn.png new file mode 100644 index 00000000..488695f6 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_popcorn.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_potato.png b/mods/cucina_vegana/textures/cucina_vegana_potato.png new file mode 100644 index 00000000..98c652fd Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_potato.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_potato_1.png b/mods/cucina_vegana/textures/cucina_vegana_potato_1.png new file mode 100644 index 00000000..76cb0a8b Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_potato_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_potato_2.png b/mods/cucina_vegana/textures/cucina_vegana_potato_2.png new file mode 100644 index 00000000..b563fabc Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_potato_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_potato_3.png b/mods/cucina_vegana/textures/cucina_vegana_potato_3.png new file mode 100644 index 00000000..1b9eb817 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_potato_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_potato_4.png b/mods/cucina_vegana/textures/cucina_vegana_potato_4.png new file mode 100644 index 00000000..9d0e1ca9 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_potato_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_potato_5.png b/mods/cucina_vegana/textures/cucina_vegana_potato_5.png new file mode 100644 index 00000000..5358ee1c Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_potato_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_potato_6.png b/mods/cucina_vegana/textures/cucina_vegana_potato_6.png new file mode 100644 index 00000000..2b051bb9 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_potato_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_potato_7.png b/mods/cucina_vegana/textures/cucina_vegana_potato_7.png new file mode 100644 index 00000000..a85ad469 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_potato_7.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_potato_seed.png b/mods/cucina_vegana/textures/cucina_vegana_potato_seed.png new file mode 100644 index 00000000..3b40b4b4 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_potato_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rice.png b/mods/cucina_vegana/textures/cucina_vegana_rice.png new file mode 100644 index 00000000..32172023 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rice.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rice_1.png b/mods/cucina_vegana/textures/cucina_vegana_rice_1.png new file mode 100644 index 00000000..2580d366 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rice_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rice_2.png b/mods/cucina_vegana/textures/cucina_vegana_rice_2.png new file mode 100644 index 00000000..53f5f338 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rice_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rice_3.png b/mods/cucina_vegana/textures/cucina_vegana_rice_3.png new file mode 100644 index 00000000..d18be5cc Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rice_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rice_4.png b/mods/cucina_vegana/textures/cucina_vegana_rice_4.png new file mode 100644 index 00000000..a22c91ba Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rice_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rice_5.png b/mods/cucina_vegana/textures/cucina_vegana_rice_5.png new file mode 100644 index 00000000..6283b621 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rice_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rice_6.png b/mods/cucina_vegana/textures/cucina_vegana_rice_6.png new file mode 100644 index 00000000..4864c1e6 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rice_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rice_flour.png b/mods/cucina_vegana/textures/cucina_vegana_rice_flour.png new file mode 100644 index 00000000..8d00a1f9 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rice_flour.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rice_screenshot.jpg b/mods/cucina_vegana/textures/cucina_vegana_rice_screenshot.jpg new file mode 100644 index 00000000..a4a9e939 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rice_screenshot.jpg differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rice_seed.png b/mods/cucina_vegana/textures/cucina_vegana_rice_seed.png new file mode 100644 index 00000000..b0fc8e63 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rice_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rice_starch.png b/mods/cucina_vegana/textures/cucina_vegana_rice_starch.png new file mode 100644 index 00000000..1dfd0ecc Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rice_starch.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rosemary.png b/mods/cucina_vegana/textures/cucina_vegana_rosemary.png new file mode 100644 index 00000000..05adc6d4 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rosemary.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rosemary_1.png b/mods/cucina_vegana/textures/cucina_vegana_rosemary_1.png new file mode 100644 index 00000000..c93ad2de Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rosemary_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rosemary_2.png b/mods/cucina_vegana/textures/cucina_vegana_rosemary_2.png new file mode 100644 index 00000000..0b310cd1 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rosemary_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rosemary_3.png b/mods/cucina_vegana/textures/cucina_vegana_rosemary_3.png new file mode 100644 index 00000000..76bb5ec0 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rosemary_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rosemary_4.png b/mods/cucina_vegana/textures/cucina_vegana_rosemary_4.png new file mode 100644 index 00000000..f9adc538 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rosemary_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rosemary_5.png b/mods/cucina_vegana/textures/cucina_vegana_rosemary_5.png new file mode 100644 index 00000000..17e98cb4 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rosemary_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rosemary_6.png b/mods/cucina_vegana/textures/cucina_vegana_rosemary_6.png new file mode 100644 index 00000000..f9a54a96 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rosemary_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rosemary_screenshot.jpg b/mods/cucina_vegana/textures/cucina_vegana_rosemary_screenshot.jpg new file mode 100644 index 00000000..742799cd Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rosemary_screenshot.jpg differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_rosemary_seed.png b/mods/cucina_vegana/textures/cucina_vegana_rosemary_seed.png new file mode 100644 index 00000000..8ed142ba Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_rosemary_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_salad_bowl.png b/mods/cucina_vegana/textures/cucina_vegana_salad_bowl.png new file mode 100644 index 00000000..031e6d11 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_salad_bowl.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_salad_hollandaise.png b/mods/cucina_vegana/textures/cucina_vegana_salad_hollandaise.png new file mode 100644 index 00000000..027df24b Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_salad_hollandaise.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sauce_hollandaise.png b/mods/cucina_vegana/textures/cucina_vegana_sauce_hollandaise.png new file mode 100644 index 00000000..5e3bda35 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sauce_hollandaise.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sea_salad.png b/mods/cucina_vegana/textures/cucina_vegana_sea_salad.png new file mode 100644 index 00000000..11255522 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sea_salad.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_soy.png b/mods/cucina_vegana/textures/cucina_vegana_soy.png new file mode 100644 index 00000000..2bb0766e Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_soy.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_soy_1.png b/mods/cucina_vegana/textures/cucina_vegana_soy_1.png new file mode 100644 index 00000000..a812480b Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_soy_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_soy_2.png b/mods/cucina_vegana/textures/cucina_vegana_soy_2.png new file mode 100644 index 00000000..6c5d3c02 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_soy_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_soy_3.png b/mods/cucina_vegana/textures/cucina_vegana_soy_3.png new file mode 100644 index 00000000..bfe4721a Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_soy_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_soy_4.png b/mods/cucina_vegana/textures/cucina_vegana_soy_4.png new file mode 100644 index 00000000..6bec67ba Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_soy_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_soy_5.png b/mods/cucina_vegana/textures/cucina_vegana_soy_5.png new file mode 100644 index 00000000..f0d493a7 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_soy_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_soy_6.png b/mods/cucina_vegana/textures/cucina_vegana_soy_6.png new file mode 100644 index 00000000..7d460aa2 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_soy_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_soy_7.png b/mods/cucina_vegana/textures/cucina_vegana_soy_7.png new file mode 100644 index 00000000..ae27b730 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_soy_7.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_soy_8.png b/mods/cucina_vegana/textures/cucina_vegana_soy_8.png new file mode 100644 index 00000000..8c10bcbc Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_soy_8.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_soy_milk.png b/mods/cucina_vegana/textures/cucina_vegana_soy_milk.png new file mode 100644 index 00000000..da82fb42 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_soy_milk.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_soy_screenshot.jpg b/mods/cucina_vegana/textures/cucina_vegana_soy_screenshot.jpg new file mode 100644 index 00000000..99f5fde4 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_soy_screenshot.jpg differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_soy_seed.png b/mods/cucina_vegana/textures/cucina_vegana_soy_seed.png new file mode 100644 index 00000000..af7573f7 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_soy_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_soy_soup.png b/mods/cucina_vegana/textures/cucina_vegana_soy_soup.png new file mode 100644 index 00000000..f76d663c Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_soy_soup.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_soy_soup_cooked.png b/mods/cucina_vegana/textures/cucina_vegana_soy_soup_cooked.png new file mode 100644 index 00000000..9b2aceb9 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_soy_soup_cooked.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_strawberry.png b/mods/cucina_vegana/textures/cucina_vegana_strawberry.png new file mode 100644 index 00000000..2f6d2865 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_strawberry.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_strawberry_1.png b/mods/cucina_vegana/textures/cucina_vegana_strawberry_1.png new file mode 100644 index 00000000..1fcf2225 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_strawberry_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_strawberry_2.png b/mods/cucina_vegana/textures/cucina_vegana_strawberry_2.png new file mode 100644 index 00000000..86a46fd9 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_strawberry_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_strawberry_3.png b/mods/cucina_vegana/textures/cucina_vegana_strawberry_3.png new file mode 100644 index 00000000..cf3e6867 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_strawberry_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_strawberry_4.png b/mods/cucina_vegana/textures/cucina_vegana_strawberry_4.png new file mode 100644 index 00000000..ab54880f Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_strawberry_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_strawberry_5.png b/mods/cucina_vegana/textures/cucina_vegana_strawberry_5.png new file mode 100644 index 00000000..5167c131 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_strawberry_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_strawberry_6.png b/mods/cucina_vegana/textures/cucina_vegana_strawberry_6.png new file mode 100644 index 00000000..899e131d Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_strawberry_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_strawberry_7.png b/mods/cucina_vegana/textures/cucina_vegana_strawberry_7.png new file mode 100644 index 00000000..6508f87e Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_strawberry_7.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_strawberry_seed.png b/mods/cucina_vegana/textures/cucina_vegana_strawberry_seed.png new file mode 100644 index 00000000..0403371d Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_strawberry_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sunflower.png b/mods/cucina_vegana/textures/cucina_vegana_sunflower.png new file mode 100644 index 00000000..6c62f677 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sunflower.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sunflower_1.png b/mods/cucina_vegana/textures/cucina_vegana_sunflower_1.png new file mode 100644 index 00000000..d12ca3d3 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sunflower_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sunflower_2.png b/mods/cucina_vegana/textures/cucina_vegana_sunflower_2.png new file mode 100644 index 00000000..8e8ca40b Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sunflower_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sunflower_3.png b/mods/cucina_vegana/textures/cucina_vegana_sunflower_3.png new file mode 100644 index 00000000..a3fab658 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sunflower_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sunflower_4.png b/mods/cucina_vegana/textures/cucina_vegana_sunflower_4.png new file mode 100644 index 00000000..b1a7654d Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sunflower_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sunflower_5.png b/mods/cucina_vegana/textures/cucina_vegana_sunflower_5.png new file mode 100644 index 00000000..71efa15f Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sunflower_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sunflower_screenshot.jpg b/mods/cucina_vegana/textures/cucina_vegana_sunflower_screenshot.jpg new file mode 100644 index 00000000..50cf780a Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sunflower_screenshot.jpg differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sunflower_seed.png b/mods/cucina_vegana/textures/cucina_vegana_sunflower_seed.png new file mode 100644 index 00000000..2f3dce02 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sunflower_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds.png b/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds.png new file mode 100644 index 00000000..ecc4bc77 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds_bread.png b/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds_bread.png new file mode 100644 index 00000000..8fd5f71a Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds_bread.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds_dough.png b/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds_dough.png new file mode 100644 index 00000000..e5ef1ce4 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds_dough.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds_flour.png b/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds_flour.png new file mode 100644 index 00000000..61650b9e Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds_flour.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds_oil.png b/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds_oil.png new file mode 100644 index 00000000..f29007a2 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds_oil.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds_roasted.png b/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds_roasted.png new file mode 100644 index 00000000..ec4928f3 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_sunflower_seeds_roasted.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_tofu.png b/mods/cucina_vegana/textures/cucina_vegana_tofu.png new file mode 100644 index 00000000..804f1703 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_tofu.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_tofu_chives_rosemary.png b/mods/cucina_vegana/textures/cucina_vegana_tofu_chives_rosemary.png new file mode 100644 index 00000000..ae3a3dab Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_tofu_chives_rosemary.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_tofu_chives_rosemary_cooked.png b/mods/cucina_vegana/textures/cucina_vegana_tofu_chives_rosemary_cooked.png new file mode 100644 index 00000000..6b04aab0 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_tofu_chives_rosemary_cooked.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_tofu_cooked.png b/mods/cucina_vegana/textures/cucina_vegana_tofu_cooked.png new file mode 100644 index 00000000..61262bb3 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_tofu_cooked.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_tomato.png b/mods/cucina_vegana/textures/cucina_vegana_tomato.png new file mode 100644 index 00000000..e6f97da2 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_tomato.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_tomato_1.png b/mods/cucina_vegana/textures/cucina_vegana_tomato_1.png new file mode 100644 index 00000000..5ad5ea69 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_tomato_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_tomato_2.png b/mods/cucina_vegana/textures/cucina_vegana_tomato_2.png new file mode 100644 index 00000000..0a93074d Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_tomato_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_tomato_3.png b/mods/cucina_vegana/textures/cucina_vegana_tomato_3.png new file mode 100644 index 00000000..5370cd84 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_tomato_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_tomato_4.png b/mods/cucina_vegana/textures/cucina_vegana_tomato_4.png new file mode 100644 index 00000000..177c6769 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_tomato_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_tomato_5.png b/mods/cucina_vegana/textures/cucina_vegana_tomato_5.png new file mode 100644 index 00000000..d5066536 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_tomato_5.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_tomato_6.png b/mods/cucina_vegana/textures/cucina_vegana_tomato_6.png new file mode 100644 index 00000000..091c9821 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_tomato_6.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_tomato_7.png b/mods/cucina_vegana/textures/cucina_vegana_tomato_7.png new file mode 100644 index 00000000..67697663 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_tomato_7.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_tomato_8.png b/mods/cucina_vegana/textures/cucina_vegana_tomato_8.png new file mode 100644 index 00000000..a7d39a0b Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_tomato_8.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_tomato_seed.png b/mods/cucina_vegana/textures/cucina_vegana_tomato_seed.png new file mode 100644 index 00000000..aaee6d7d Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_tomato_seed.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_vegan_strawberry_milk.png b/mods/cucina_vegana/textures/cucina_vegana_vegan_strawberry_milk.png new file mode 100644 index 00000000..7f2c2aa3 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_vegan_strawberry_milk.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_vegan_sushi.png b/mods/cucina_vegana/textures/cucina_vegana_vegan_sushi.png new file mode 100644 index 00000000..f7e7ef42 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_vegan_sushi.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_vine_bottom_1.png b/mods/cucina_vegana/textures/cucina_vegana_vine_bottom_1.png new file mode 100644 index 00000000..dfb63ff8 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_vine_bottom_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_vine_bottom_2.png b/mods/cucina_vegana/textures/cucina_vegana_vine_bottom_2.png new file mode 100644 index 00000000..d943e1aa Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_vine_bottom_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_vine_bottom_3.png b/mods/cucina_vegana/textures/cucina_vegana_vine_bottom_3.png new file mode 100644 index 00000000..33ebf4fc Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_vine_bottom_3.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_vine_bottom_4.png b/mods/cucina_vegana/textures/cucina_vegana_vine_bottom_4.png new file mode 100644 index 00000000..625eb875 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_vine_bottom_4.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_vine_grape.png b/mods/cucina_vegana/textures/cucina_vegana_vine_grape.png new file mode 100644 index 00000000..eacb9d0b Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_vine_grape.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_vine_leaves.png b/mods/cucina_vegana/textures/cucina_vegana_vine_leaves.png new file mode 100644 index 00000000..b79497d9 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_vine_leaves.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_vine_sapling.png b/mods/cucina_vegana/textures/cucina_vegana_vine_sapling.png new file mode 100644 index 00000000..b5d0a6a1 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_vine_sapling.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_vine_top_1.png b/mods/cucina_vegana/textures/cucina_vegana_vine_top_1.png new file mode 100644 index 00000000..03ff427b Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_vine_top_1.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_vine_top_2.png b/mods/cucina_vegana/textures/cucina_vegana_vine_top_2.png new file mode 100644 index 00000000..ff010096 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_vine_top_2.png differ diff --git a/mods/cucina_vegana/textures/cucina_vegana_vine_top_3.png b/mods/cucina_vegana/textures/cucina_vegana_vine_top_3.png new file mode 100644 index 00000000..70d59496 Binary files /dev/null and b/mods/cucina_vegana/textures/cucina_vegana_vine_top_3.png differ diff --git a/mods/cucina_vegana/tomato.lua b/mods/cucina_vegana/tomato.lua new file mode 100644 index 00000000..adf5af1e --- /dev/null +++ b/mods/cucina_vegana/tomato.lua @@ -0,0 +1,17 @@ + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:dry_dirt_with_dry_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.plant_settings.tomato_scale, + spread = {x = 70, y = 70, z = 70}, + seed = 2048, + octaves = 3, + persist = 0.6 + }, + y_min = 0, + y_max = 100, + decoration = "cucina_vegana:wild_tomato", +}) diff --git a/mods/cucina_vegana/tomato_default.lua b/mods/cucina_vegana/tomato_default.lua new file mode 100644 index 00000000..b79cf1e4 --- /dev/null +++ b/mods/cucina_vegana/tomato_default.lua @@ -0,0 +1,69 @@ +--[[ + ********************************************** + *** Tomato default *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Tomato") +local pname = "tomato" +local step = 8 + +-- tomato +farming.register_plant("cucina_vegana:" .. pname, { + description = dname .. " " .. S("Seed"), + harvest_description = dname, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + steps = step, + minlight = cucina_vegana.plant_settings.tomato_light, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1}, +}) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild") .. " " .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:seed_" .. pname .. " 4"}}, + {items = {"cucina_vegana:" .. pname .. " 3"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:seed_" .. pname, {seed_tomato = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:seed_" .. pname}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + +end diff --git a/mods/cucina_vegana/tomato_redo.lua b/mods/cucina_vegana/tomato_redo.lua new file mode 100644 index 00000000..5f3d97d6 --- /dev/null +++ b/mods/cucina_vegana/tomato_redo.lua @@ -0,0 +1,166 @@ +--[[ + ********************************************** + *** Tomato redo *** + ********************************************** +]]-- + +-- Load support for intllib. +local S = cucina_vegana.get_translator + +local dname = S("Tomato") +local pname = "tomato" +local step = 8 + +local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + +if germ == 0 then + germ = "_seed" + +else + germ = "_" .. germ + +end + +-- tomato +minetest.register_node("cucina_vegana:" .. pname .. "_seed", { + description = dname .. " " .. S("Seed"), + tiles = {"cucina_vegana_" .. pname .. "_seed.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_seed.png", + wield_image = "cucina_vegana_" .. pname .. "_seed.png", + minlight = cucina_vegana.plant_settings.tomato_light, + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1, dig_immediate=1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "cucina_vegana:" .. pname .. germ) + end, +}) + +-- tomato definition +local crop_def = { + drawtype = "plantlike", + tiles = {"cucina_vegana_" .. pname .. "_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + waving = 1, + buildable_to = true, + minlight = cucina_vegana.plant_settings.tomato_light, + drop = "", + selection_box = farming.select, + groups = { + flammable = 4, snappy=3, dig_immediate=1, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("cucina_vegana:" .. pname .. "_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_2.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_3.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_4.png"} +minetest.register_node("cucina_vegana:" .. pname .. "_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_5.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_6.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname}, rarity = 2}, + } } +minetest.register_node("cucina_vegana:" .. pname .. "_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"cucina_vegana_" .. pname .. "_7.png"} +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname}, rarity = 1}, + {items = {"cucina_vegana:" .. pname}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"cucina_vegana_" .. pname .. "_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"cucina_vegana:" .. pname .. " 3"}}, + {items = {"cucina_vegana:" .. pname}, rarity = 2}, + {items = {"cucina_vegana:" .. pname}, rarity = 3}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 1}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 2}, + {items = {"cucina_vegana:" .. pname .. "_seed"}, rarity = 3}, + } +} +minetest.register_node("cucina_vegana:" .. pname .. "_8", table.copy(crop_def)) + +-- Register for Mapgen +minetest.register_node("cucina_vegana:wild_" .. pname .. "", { + description = S("Wild ") .. dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_seed 3"}}, + {items = {"cucina_vegana:" .. pname .. " 2"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"cucina_vegana_" .. pname .. "_" .. step .. ".png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cucina_vegana.add_group("cucina_vegana:" .. pname .. "_seed", {seed_tomato = 1}) + +if(cucina_vegana.plant_settings.bonemeal) then + table.insert(cucina_vegana.plant_settings.bonemeal_list, + {"cucina_vegana:" .. pname .. "_", step, "cucina_vegana:" .. pname .. "_seed"}) + +end -- if(cucina_vegana.plant_settings.bonemeal + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, step) + +end -- if(cucina_vegana.farming_ng + +-- Register @ Signs_bot +if(cucina_vegana.signs_bot) then + cucina_vegana.register_signs_bot(pname, 1, step) + + +end diff --git a/mods/cucina_vegana/tools.lua b/mods/cucina_vegana/tools.lua new file mode 100644 index 00000000..75630ec9 --- /dev/null +++ b/mods/cucina_vegana/tools.lua @@ -0,0 +1,79 @@ +--[[ + ********************************************** + *** Helpfuntcions for cucina_vegana *** + ********************************************** +]]-- + +function cucina_vegana.table_clone(c_table) + local t2 = {} + for k,v in pairs(c_table) do + t2[k] = v + + end + + return t2 + +end -- function cucina_vegana.table_clone + +function cucina_vegana.add_group(node, entry) + + local newgroup + + if(type(node) ~= "string") then return end + + -- Check the Item and get the group + if(minetest.registered_items[node] ~= nil) then + newgroup = cucina_vegana.table_clone(minetest.registered_items[node].groups) + + elseif(minetest.registered_tools[node] ~= nil) then + newgroup = cucina_vegana.table_clone(minetest.registered_tools[node].groups) + + else -- Node not found. + return + + end -- if(minetest.registered_nodes + + -- add the new groups to the item + for key,value in pairs(entry) do + newgroup[key] = value + + end + + minetest.override_item(node, { + groups = newgroup + }) + +end -- function cucina_vegana.add_group() + +function cucina_vegana.register_farming_ng(pname, step) + local germ = tonumber(cucina_vegana.plant_settings.germ_launch) + local modname = cucina_vegana.modname + + if cucina_vegana.farming_default then + if(germ > 0) then + farmingNG.register_seed("cucina_vegana:seed_" .. pname, "cucina_vegana:" .. pname .. "_" .. germ) + farmingNG.register_harvest("cucina_vegana:" .. pname .. "_" .. step) + + else + farmingNG.register_seed("cucina_vegana:seed_" .. pname, "cucina_vegana:seed_" .. pname) + farmingNG.register_harvest("cucina_vegana:" .. pname .. "_" .. step) + + end -- if(germ > 0 + + else + if(germ > 0) then + farmingNG.register_seed("cucina_vegana:" .. pname .. "_seed", "cucina_vegana:" .. pname .. "_" .. germ) + farmingNG.register_harvest("cucina_vegana:" .. pname .. "_" .. step) + + else + farmingNG.register_seed("cucina_vegana:" .. pname .. "_seed", "cucina_vegana:" .. pname .. "_seed") + farmingNG.register_harvest("cucina_vegana:" .. pname .. "_" .. step) + + end -- if(germ > 0 + + end -- if cucina_vegana.farming_default + + print("info", "[MOD] " .. modname .. ": cucina_vegana:seed_" .. pname .. " at farming_nextgen registered.") + minetest.log("info", "[MOD] " .. modname .. ": cucina_vegana:seed_" .. pname .. " at farming_nextgen registered.") + +end -- cucina_vegana.register_farming_ng( diff --git a/mods/cucina_vegana/vine.lua b/mods/cucina_vegana/vine.lua new file mode 100644 index 00000000..cee189ac --- /dev/null +++ b/mods/cucina_vegana/vine.lua @@ -0,0 +1,17 @@ + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:dirt", "default:dry_dirt", "default:dirt_with_dry_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = cucina_vegana.shrub_settings.vine_scale, + spread = {x = 100, y = 100, z = 100}, + seed = 32478, + octaves = 3, + persist = 0.6 + }, + y_min = 0, + y_max = 100, + decoration = "cucina_vegana:vine_top_3", +}) diff --git a/mods/cucina_vegana/vine_def.lua b/mods/cucina_vegana/vine_def.lua new file mode 100644 index 00000000..62286d9a --- /dev/null +++ b/mods/cucina_vegana/vine_def.lua @@ -0,0 +1,203 @@ +--[[ + ********************************************** + *** Vine *** + ********************************************** +]]-- + +local cv = cucina_vegana +local mt = minetest + +-- Load support for intllib. +local S = cv.get_translator + +local dname = S("Vine") +local pname = "vine" +local duration = cv.shrub_settings.vine_duration +local bottom_steps = 4 +local top_steps = 3 +local maxlight = cv.shrub_settings.vine_light +local percent = 3 + +-- Register for Mapgen +mt.register_node("cucina_vegana:wild_" .. pname, { + description = S("Wild" ) .. " " .. dname .. " " .. S("Stem"), + paramtype = "light", + walkable = true, + climbable = true, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_sapling 1"}}, + {items = {"cucina_vegana:" .. pname .. "_grape 2"}}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_bottom_1.png"}, + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1, tree}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +mt.register_node("cucina_vegana:" .. pname .. "_leaves", { + description = dname .. " " .. S("Leaves"), + paramtype = "light", + walkable = true, + drawtype = "allfaces_optional", + waving = 1, + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_leaves.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_leaves.png", + wield_image = "cucina_vegana_" .. pname .. "_leaves.png", + groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1}, + sounds = default.node_sound_leaves_defaults(), + drop = { + max_items = 1, + items = { + { + -- player will get sapling with 1/3 chance + items = {"cucina_vegana:" .. pname .. "_sapling"}, + rarity = 3, + }, + { + -- player will get leaves only if he get no saplings, + -- this is because max_items is 1 + items = {"cucina_vegana:" .. pname .. "_leaves"}, + } + } + }, + after_place_node = function(...) + return default.after_place_leaves(...) + end, +}) + +mt.register_craftitem("cucina_vegana:" .. pname .. "_grape", { + description = S("Grape"), + inventory_image = "cucina_vegana_" .. pname .. "_grape.png", + groups = {food = 1, food_wine = 1}, + on_use = mt.item_eat(3) + +}) + +mt.register_node("cucina_vegana:" .. pname .. "_sapling", { + description = dname .. " " .. S("Sapling"), + paramtype = "light", + walkable = true, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + climbable = true, + tiles = {"cucina_vegana_" .. pname .. "_sapling.png"}, + inventory_image = "cucina_vegana_" .. pname .. "_sapling.png", + wield_image = "cucina_vegana_" .. pname .. "_sapling.png", + groups = { snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, -- side f + }, + }, +}) + +cv.lib.register_bottom_abm("cucina_vegana:" .. pname .. "_sapling", "cucina_vegana:" .. pname .. "_bottom_1", duration, maxlight) + +for step = 1, bottom_steps do + mt.register_node("cucina_vegana:" .. pname .. "_bottom_" .. step, { + description = dname, + paramtype = "light", + walkable = true, + climbable = true, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_sapling 1"}}, + }, + }, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_bottom_" .. step .. ".png"}, + groups = { snappy = 3, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.4, -0.5, -0.4, 0.4, 0.5, 0.4}, -- side f + }, + }, + }) + + if (step < bottom_steps) then + cv.lib.register_bottom_abm("cucina_vegana:" .. pname .. "_bottom_" .. step, "cucina_vegana:" .. pname .. "_bottom_" .. step+1, duration, maxlight) + + end + +end -- for step + +mt.register_abm({ + nodenames = {"cucina_vegana:" .. pname .. "_bottom_" .. bottom_steps}, + interval = duration, + chance = percent, + catch_up = true, + action = function(pos, node, active_object_count, active_object_count_wider) + local nodepos = { x = pos.x, y = pos.y+1, z = pos.z} + if(cv.lib.check_light(nodepos, maxlight)) then + if(cv.lib.check_air(nodepos)) then + mt.set_node(nodepos, {name = "cucina_vegana:" .. pname .. "_top_1"}) + + end -- if(check_air) + + end -- if(cv.check_light + + end, -- function( + +}) -- minetest.register_abm({ + +for step = 1, top_steps do + mt.register_node("cucina_vegana:" .. pname .. "_top_" .. step, { + description = dname, + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {"cucina_vegana:" .. pname .. "_leaves 2"}}, + {items = {"cucina_vegana:" .. pname .. "_grape " .. step}, rarity = top_steps-step}, + {items = {"cucina_vegana:" .. pname .. "_sapling"}, rarity = 5}, + }, + }, + drawtype = "plantlike", + paramtype2 = "facedir", + sunlight_propagates = true, + tiles = {"cucina_vegana_" .. pname .. "_top_" .. step .. ".png"}, + groups = { snappy = 3, dig_immediate=1, flammable=2, plant=1, attached_node = 1, + growing = 1, not_in_creative_inventory = 1, tree = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { + {-0.4, -0.5, -0.4, 0.4, 0.5, 0.4}, -- side f + }, + }, + }) + + if (step < top_steps) then + cv.lib.register_top_abm("cucina_vegana:" .. pname .. "_top_" .. step, "cucina_vegana:" .. pname .. "_top_" .. step+1, duration, maxlight) + + end + +end -- for step + +-- Register @ farming_nextgen +if cucina_vegana.farming_ng then + cucina_vegana.register_farming_ng(pname, top_steps) + +end -- if(cucina_vegana.farming_ng diff --git a/mods/cucina_vegana/xgettext.sh b/mods/cucina_vegana/xgettext.sh new file mode 100644 index 00000000..1504f421 --- /dev/null +++ b/mods/cucina_vegana/xgettext.sh @@ -0,0 +1,27 @@ +#! /bin/bash + +me=$(basename "${BASH_SOURCE[0]}"); + +if [[ $# -lt 1 ]]; then + echo "Usage: $me FILE..." >&2; + exit 1; +fi + +mkdir -p locale; +echo "Generating template..." >&2; +xgettext --from-code=UTF-8 \ + --keyword=S \ + --keyword=NS:1,2 \ + --keyword=N_ \ + --add-comments='Translators:' \ + --add-location=file \ + -o locale/template.pot \ + "$@" \ + || exit; + +find locale -name '*.po' -type f | while read -r file; do + echo "Updating $file..." >&2; + msgmerge --update "$file" locale/template.pot; +done + +echo "DONE!" >&2; diff --git a/mods/drawers/.github/workflows/luacheck.yml b/mods/drawers/.github/workflows/luacheck.yml new file mode 100644 index 00000000..d00f53a1 --- /dev/null +++ b/mods/drawers/.github/workflows/luacheck.yml @@ -0,0 +1,17 @@ +name: luacheck + +on: [push, pull_request] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: apt + run: sudo apt-get install -y luarocks + - name: luacheck install + run: luarocks install --local luacheck + - name: luacheck run + run: $HOME/.luarocks/bin/luacheck ./ diff --git a/mods/drawers/.gitignore b/mods/drawers/.gitignore new file mode 100644 index 00000000..b3180de8 --- /dev/null +++ b/mods/drawers/.gitignore @@ -0,0 +1,3 @@ +## Eclipse project files & directories +.project +.settings diff --git a/mods/drawers/.luacheckrc b/mods/drawers/.luacheckrc new file mode 100644 index 00000000..93f08bc1 --- /dev/null +++ b/mods/drawers/.luacheckrc @@ -0,0 +1,29 @@ + +unused = false +max_line_length = 240 + +globals = { + "drawers" +} + +read_globals = { + -- Stdlib + string = {fields = {"split"}}, + table = {fields = {"copy", "getn"}}, + + -- Minetest + "vector", "ItemStack", + "dump", "VoxelArea", + + -- deps + "minetest", + "core", + "default", + "mcl_core", + "mcl_sounds", + "pipeworks", + "screwdriver", + "digilines", + "mesecon", + "techage" +} diff --git a/mods/drawers/LICENSE.txt b/mods/drawers/LICENSE.txt new file mode 100644 index 00000000..47245998 --- /dev/null +++ b/mods/drawers/LICENSE.txt @@ -0,0 +1,117 @@ +Minetest Mod Storage Drawers +============================ + +License of source code: +----------------------- +Copyright (C) 2017-2020 Linus Jahn +Copyright (C) 2016 Mango Tango + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +License of translations: +------------------------ +CC0 1.0 Universal (CC0 1.0) Public Domain Dedication + +No Copyright +Minetest Mod Storage Drawers Translators + +The person who associated a work with this deed has dedicated the work to the public +domain by waiving all of his or her rights to the work worldwide under copyright law, +including all related and neighboring rights, to the extent allowed by law. + +You can copy, modify, distribute and perform the work, even for commercial purposes, all +without asking permission. See Other Information below. + +Other Information + +In no way are the patent or trademark rights of any person affected by CC0, nor are the +rights that other persons may have in the work or in how the work is used, such as +publicity or privacy rights. +Unless expressly stated otherwise, the person who associated a work with this deed makes +no warranties about the work, and disclaims liability for all uses of the work, to the +fullest extent permitted by applicable law. +When using or citing the work, you should not imply endorsement by the author or the +affirmer. + +For more details: +https://creativecommons.org/publicdomain/zero/1.0/ + + +License of media: +----------------- +Copyright (C) 2012 ultradust (https://www.freesound.org/people/ultradust/) (CC BY 3.0): + sounds/drawers_interact.1.ogg (edited by tacotexmex) + sounds/drawers_interact.2.ogg (edited by tacotexmex) + +Copyright (C) 2014 Justin Aquadro (MIT): + textures/drawers_acacia_wood_mcl_front_1.png + textures/drawers_acacia_wood_mcl_front_2.png + textures/drawers_acacia_wood_mcl_front_4.png + textures/drawers_acacia_wood_mcl.png + textures/drawers_aspen_wood_front_1.png + textures/drawers_aspen_wood_front_2.png + textures/drawers_aspen_wood_front_4.png + textures/drawers_aspen_wood.png + textures/drawers_birch_wood_front_1.png + textures/drawers_birch_wood_front_2.png + textures/drawers_birch_wood_front_4.png + textures/drawers_birch_wood.png + textures/drawers_controller_front.png + textures/drawers_controller_side.png + textures/drawers_controller_top.png + textures/drawers_dark_oak_wood_front_1.png + textures/drawers_dark_oak_wood_front_2.png + textures/drawers_dark_oak_wood_front_4.png + textures/drawers_dark_oak_wood.png + textures/drawers_junglewood_mcl_front_1.png + textures/drawers_junglewood_mcl_front_2.png + textures/drawers_junglewood_mcl_front_4.png + textures/drawers_junglewood_mcl.png + textures/drawers_oak_wood_front_1.png + textures/drawers_oak_wood_front_2.png + textures/drawers_oak_wood_front_4.png + textures/drawers_oak_wood.png + textures/drawers_pine_wood_front_1.png + textures/drawers_pine_wood_front_2.png + textures/drawers_pine_wood_front_4.png + textures/drawers_pine_wood.png + textures/drawers_spruce_wood_front_1.png + textures/drawers_spruce_wood_front_2.png + textures/drawers_spruce_wood_front_4.png + textures/drawers_spruce_wood.png + textures/drawers_trim.png + textures/drawers_upgrade_diamond.png + textures/drawers_upgrade_emerald.png + textures/drawers_upgrade_gold.png + textures/drawers_upgrade_iron.png + textures/drawers_upgrade_mithril.png (colors adapted by Linus Jahn , 2020) + textures/drawers_upgrade_obsidian.png + textures/drawers_upgrade_steel.png + textures/drawers_upgrade_slot_bg.png (extracted from gui/drawers_1.png by LNJ ) + textures/drawers_upgrade_template.png + textures/drawers_wood_front_1.png + textures/drawers_wood_front_2.png + textures/drawers_wood_front_4.png + textures/drawers_wood.png + +Everything not listed in here: +Copyright (C) 2017-2020 Linus Jahn (MIT) diff --git a/mods/drawers/README.md b/mods/drawers/README.md new file mode 100644 index 00000000..40c29988 --- /dev/null +++ b/mods/drawers/README.md @@ -0,0 +1,58 @@ +# Minetest Mod Storage Drawers + +[![ContentDB](https://content.minetest.net/packages/LNJ/drawers/shields/downloads/)](https://content.minetest.net/packages/LNJ/drawers/) +![](https://github.com/minetest-mods/drawers/workflows/luacheck/badge.svg) + +Version 0.6.5, License: MIT + +## Description +This mod adds simple item storages showing the item's inventory image in the +front. By left- or right-clicking the image you can take or add stacks. If you +also hold the shift-key only a single item will be removed/added. + +There's also a 'Drawer Controller' which can insert items automatically into a +network of drawers. Just place the drawers next to each other, so they are +connected and the drawer controller will sort the items automatically. If you +want to connect drawers, but you don't want to place another drawer, just use +the 'Drawer Trim'. + +Do you have too many cobblestones for one drawer? No problem, just add some +drawer upgrades to your drawer! They are available in different sizes and are +crafted by steel, gold, obsidian, diamonds or mithril. + +## Notes +This mod requires Minetest 0.4.14 or later. The `default` mod from MTG or the +MineClone 2 mods are only optional dependencies for crafting recipes. + +## To-Do +- [x] Add usable 1x1 drawer +- [x] Add a drawer controller for auto-sorting items into a drawer-network +- [ ] Add half-sized drawers +- [x] Add 2x2 and 1x2 drawers +- [ ] Add compacting drawers for auto-crafting blocks/ingots/fragments +- [ ] Add a key (or something similar) for locking the item (so the item is + also displayed at count 0) +- [ ] Add duct tape to transport drawers +- [x] Support pipeworks +- [ ] Support hoppers (needs hoppers mod change) +- [x] Make drawers upgradable +- [x] Add drawers in all wood types +- [x] Make them digilines compatible + +## Bug reports and suggestions +You can report bugs and suggest ideas on [GitHub](http://github.com/lnj2/drawers/issues/new), +alternatively you can also [email](mailto:git@lnj.li) me. + +## Credits +#### Thanks to: +* Justin Aquadro ([@jaquadro](http://github.com/jaquadro)), developer of the + original Minecraft Mod (also licensed under MIT :smiley:) — Textures and Ideas +* Mango Tango <> ([@mtango688](http://github.com/mtango688)), + creator of the Minetest Mod ["Caches"](https://github.com/mtango688/caches/) + — I reused some code by you. :) + +## Links +* [Minetest Forums](https://forum.minetest.net/viewtopic.php?f=9&t=17134) +* [Minetest Wiki](http://wiki.minetest.net/Mods/Storage_Drawers) +* [Weblate](https://hosted.weblate.org/projects/minetest/mod-storage-drawers/) +* [GitHub](http://github.com/minetest-mods/drawers/) diff --git a/mods/drawers/init.lua b/mods/drawers/init.lua new file mode 100644 index 00000000..85917e72 --- /dev/null +++ b/mods/drawers/init.lua @@ -0,0 +1,384 @@ +--[[ +Minetest Mod Storage Drawers - A Mod adding storage drawers + +Copyright (C) 2017-2020 Linus Jahn + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +]] + +local MP = core.get_modpath(core.get_current_modname()) + +local S = minetest.get_translator('drawers') +local NS = minetest.get_translator('drawers') + +drawers = {} +drawers.drawer_visuals = {} + +drawers.WOOD_ITEMSTRING = "group:wood" +if core.get_modpath("default") and default then + drawers.WOOD_SOUNDS = default.node_sound_wood_defaults() + drawers.CHEST_ITEMSTRING = "default:chest" +elseif core.get_modpath("mcl_core") and mcl_core then -- MineClone 2 + drawers.CHEST_ITEMSTRING = "mcl_chests:chest" + if core.get_modpath("mcl_sounds") and mcl_sounds then + drawers.WOOD_SOUNDS = mcl_sounds.node_sound_wood_defaults() + end +else + drawers.CHEST_ITEMSTRING = "chest" +end + + +drawers.enable_1x1 = not core.settings:get_bool("drawers_disable_1x1") +drawers.enable_1x2 = not core.settings:get_bool("drawers_disable_1x2") +drawers.enable_2x2 = not core.settings:get_bool("drawers_disable_2x2") + +drawers.CONTROLLER_RANGE = 14 + +-- +-- GUI +-- + +drawers.gui_bg = "bgcolor[#080808BB;true]" +drawers.gui_slots = "listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" +if (core.get_modpath("mcl_core")) and mcl_core then -- MCL2 + drawers.gui_bg_img = "background[5,5;1,1;crafting_creative_bg.png;true]" +else + drawers.gui_bg_img = "background[5,5;1,1;gui_formbg.png;true]" +end + +-- +-- Load API +-- + +dofile(MP .. "/lua/helpers.lua") +dofile(MP .. "/lua/visual.lua") +dofile(MP .. "/lua/api.lua") +dofile(MP .. "/lua/controller.lua") + + +-- +-- Register drawers +-- + +if core.get_modpath("default") and default then + drawers.register_drawer("drawers:wood", { + description = S("Wooden"), + tiles1 = drawers.node_tiles_front_other("drawers_wood_front_1.png", + "drawers_wood.png"), + tiles2 = drawers.node_tiles_front_other("drawers_wood_front_2.png", + "drawers_wood.png"), + tiles4 = drawers.node_tiles_front_other("drawers_wood_front_4.png", + "drawers_wood.png"), + groups = {choppy = 3, oddly_breakable_by_hand = 2}, + sounds = drawers.WOOD_SOUNDS, + drawer_stack_max_factor = 32, -- 4 * 8 normal chest size + material = drawers.WOOD_ITEMSTRING + }) + drawers.register_drawer("drawers:acacia_wood", { + description = S("Acacia Wood"), + tiles1 = drawers.node_tiles_front_other("drawers_acacia_wood_front_1.png", + "drawers_acacia_wood.png"), + tiles2 = drawers.node_tiles_front_other("drawers_acacia_wood_front_2.png", + "drawers_acacia_wood.png"), + tiles4 = drawers.node_tiles_front_other("drawers_acacia_wood_front_4.png", + "drawers_acacia_wood.png"), + groups = {choppy = 3, oddly_breakable_by_hand = 2}, + sounds = drawers.WOOD_SOUNDS, + drawer_stack_max_factor = 32, -- 4 * 8 normal mcl chest size + material = "default:acacia_wood" + }) + drawers.register_drawer("drawers:aspen_wood", { + description = S("Aspen Wood"), + tiles1 = drawers.node_tiles_front_other("drawers_aspen_wood_front_1.png", + "drawers_aspen_wood.png"), + tiles2 = drawers.node_tiles_front_other("drawers_aspen_wood_front_2.png", + "drawers_aspen_wood.png"), + tiles4 = drawers.node_tiles_front_other("drawers_aspen_wood_front_4.png", + "drawers_aspen_wood.png"), + groups = {choppy = 3, oddly_breakable_by_hand = 2}, + sounds = drawers.WOOD_SOUNDS, + drawer_stack_max_factor = 32, -- 4 * 8 normal chest size + material = "default:aspen_wood" + }) + drawers.register_drawer("drawers:junglewood", { + description = S("Junglewood"), + tiles1 = drawers.node_tiles_front_other("drawers_junglewood_front_1.png", + "drawers_junglewood.png"), + tiles2 = drawers.node_tiles_front_other("drawers_junglewood_front_2.png", + "drawers_junglewood.png"), + tiles4 = drawers.node_tiles_front_other("drawers_junglewood_front_4.png", + "drawers_junglewood.png"), + groups = {choppy = 3, oddly_breakable_by_hand = 2}, + sounds = drawers.WOOD_SOUNDS, + drawer_stack_max_factor = 32, -- 4 * 8 normal mcl chest size + material = "default:junglewood" + }) + drawers.register_drawer("drawers:pine_wood", { + description = S("Pine Wood"), + tiles1 = drawers.node_tiles_front_other("drawers_pine_wood_front_1.png", + "drawers_pine_wood.png"), + tiles2 = drawers.node_tiles_front_other("drawers_pine_wood_front_2.png", + "drawers_pine_wood.png"), + tiles4 = drawers.node_tiles_front_other("drawers_pine_wood_front_4.png", + "drawers_pine_wood.png"), + groups = {choppy = 3, oddly_breakable_by_hand = 2}, + sounds = drawers.WOOD_SOUNDS, + drawer_stack_max_factor = 32, -- 4 * 8 normal chest size + material = "default:pine_wood" + }) +elseif core.get_modpath("mcl_core") and mcl_core then + drawers.register_drawer("drawers:oakwood", { + description = S("Oak Wood"), + tiles1 = drawers.node_tiles_front_other("drawers_oak_wood_front_1.png", + "drawers_oak_wood.png"), + tiles2 = drawers.node_tiles_front_other("drawers_oak_wood_front_2.png", + "drawers_oak_wood.png"), + tiles4 = drawers.node_tiles_front_other("drawers_oak_wood_front_4.png", + "drawers_oak_wood.png"), + groups = {handy = 1, axey = 1, flammable = 3, wood = 1, building_block = 1, material_wood = 1}, + sounds = drawers.WOOD_SOUNDS, + drawer_stack_max_factor = 36, -- 4 * 9 normal mcl chest size + material = drawers.WOOD_ITEMSTRING, + _mcl_blast_resistance = 15, + _mcl_hardness = 2, + }) + drawers.register_drawer("drawers:acaciawood", { + description = S("Acacia Wood"), + tiles1 = drawers.node_tiles_front_other("drawers_acacia_wood_mcl_front_1.png", + "drawers_acacia_wood_mcl.png"), + tiles2 = drawers.node_tiles_front_other("drawers_acacia_wood_mcl_front_2.png", + "drawers_acacia_wood_mcl.png"), + tiles4 = drawers.node_tiles_front_other("drawers_acacia_wood_mcl_front_4.png", + "drawers_acacia_wood_mcl.png"), + groups = {handy = 1, axey = 1, flammable = 3, wood = 1, building_block = 1, material_wood = 1}, + sounds = drawers.WOOD_SOUNDS, + drawer_stack_max_factor = 36, -- 4 * 9 normal mcl chest size + material = "mcl_core:acaciawood", + _mcl_blast_resistance = 15, + _mcl_hardness = 2, + }) + drawers.register_drawer("drawers:birchwood", { + description = S("Birch Wood"), + tiles1 = drawers.node_tiles_front_other("drawers_birch_wood_front_1.png", + "drawers_birch_wood.png"), + tiles2 = drawers.node_tiles_front_other("drawers_birch_wood_front_2.png", + "drawers_birch_wood.png"), + tiles4 = drawers.node_tiles_front_other("drawers_birch_wood_front_4.png", + "drawers_birch_wood.png"), + groups = {handy = 1, axey = 1, flammable = 3, wood = 1, building_block = 1, material_wood = 1}, + sounds = drawers.WOOD_SOUNDS, + drawer_stack_max_factor = 36, -- 4 * 9 normal mcl chest size + material = "mcl_core:birchwood", + _mcl_blast_resistance = 15, + _mcl_hardness = 2, + }) + drawers.register_drawer("drawers:darkwood", { + description = S("Dark Oak Wood"), + tiles1 = drawers.node_tiles_front_other("drawers_dark_oak_wood_front_1.png", + "drawers_dark_oak_wood.png"), + tiles2 = drawers.node_tiles_front_other("drawers_dark_oak_wood_front_2.png", + "drawers_dark_oak_wood.png"), + tiles4 = drawers.node_tiles_front_other("drawers_dark_oak_wood_front_4.png", + "drawers_dark_oak_wood.png"), + groups = {handy = 1, axey = 1, flammable = 3, wood = 1, building_block = 1, material_wood = 1}, + sounds = drawers.WOOD_SOUNDS, + drawer_stack_max_factor = 36, -- 4 * 9 normal mcl chest size + material = "mcl_core:darkwood", + _mcl_blast_resistance = 15, + _mcl_hardness = 2, + }) + drawers.register_drawer("drawers:junglewood", { + description = S("Junglewood"), + tiles1 = drawers.node_tiles_front_other("drawers_junglewood_mcl_front_1.png", + "drawers_junglewood_mcl.png"), + tiles2 = drawers.node_tiles_front_other("drawers_junglewood_mcl_front_2.png", + "drawers_junglewood_mcl.png"), + tiles4 = drawers.node_tiles_front_other("drawers_junglewood_mcl_front_4.png", + "drawers_junglewood_mcl.png"), + groups = {handy = 1, axey = 1, flammable = 3, wood = 1, building_block = 1, material_wood = 1}, + sounds = drawers.WOOD_SOUNDS, + drawer_stack_max_factor = 36, -- 4 * 9 normal mcl chest size + material = "mcl_core:junglewood", + _mcl_blast_resistance = 15, + _mcl_hardness = 2, + }) + drawers.register_drawer("drawers:sprucewood", { + description = S("Spruce Wood"), + tiles1 = drawers.node_tiles_front_other("drawers_spruce_wood_front_1.png", + "drawers_spruce_wood.png"), + tiles2 = drawers.node_tiles_front_other("drawers_spruce_wood_front_2.png", + "drawers_spruce_wood.png"), + tiles4 = drawers.node_tiles_front_other("drawers_spruce_wood_front_4.png", + "drawers_spruce_wood.png"), + groups = {handy = 1, axey = 1, flammable = 3, wood = 1, building_block = 1, material_wood = 1}, + sounds = drawers.WOOD_SOUNDS, + drawer_stack_max_factor = 36, -- 4 * 9 normal mcl chest size + material = "mcl_core:sprucewood", + _mcl_blast_resistance = 15, + _mcl_hardness = 2, + }) + + -- backwards compatibility + core.register_alias("drawers:wood1", "drawers:oakwood1") + core.register_alias("drawers:wood2", "drawers:oakwood2") + core.register_alias("drawers:wood4", "drawers:oakwood4") +else + drawers.register_drawer("drawers:wood", { + description = S("Wooden"), + tiles1 = drawers.node_tiles_front_other("drawers_wood_front_1.png", + "drawers_wood.png"), + tiles2 = drawers.node_tiles_front_other("drawers_wood_front_2.png", + "drawers_wood.png"), + tiles4 = drawers.node_tiles_front_other("drawers_wood_front_4.png", + "drawers_wood.png"), + groups = {choppy = 3, oddly_breakable_by_hand = 2}, + sounds = drawers.WOOD_SOUNDS, + drawer_stack_max_factor = 32, -- 4 * 8 normal chest size + material = drawers.WOOD_ITEMSTRING + }) +end + + +-- +-- Register drawer upgrades +-- + +if core.get_modpath("default") and default then + drawers.register_drawer_upgrade("drawers:upgrade_steel", { + description = S("Steel Drawer Upgrade (x2)"), + inventory_image = "drawers_upgrade_steel.png", + groups = {drawer_upgrade = 100}, + recipe_item = "default:steel_ingot" + }) + + drawers.register_drawer_upgrade("drawers:upgrade_gold", { + description = S("Gold Drawer Upgrade (x3)"), + inventory_image = "drawers_upgrade_gold.png", + groups = {drawer_upgrade = 200}, + recipe_item = "default:gold_ingot" + }) + + drawers.register_drawer_upgrade("drawers:upgrade_obsidian", { + description = S("Obsidian Drawer Upgrade (x4)"), + inventory_image = "drawers_upgrade_obsidian.png", + groups = {drawer_upgrade = 300}, + recipe_item = "default:obsidian" + }) + + drawers.register_drawer_upgrade("drawers:upgrade_diamond", { + description = S("Diamond Drawer Upgrade (x8)"), + inventory_image = "drawers_upgrade_diamond.png", + groups = {drawer_upgrade = 700}, + recipe_item = "default:diamond" + }) +elseif core.get_modpath("mcl_core") and mcl_core then + drawers.register_drawer_upgrade("drawers:upgrade_iron", { + description = S("Iron Drawer Upgrade (x2)"), + inventory_image = "drawers_upgrade_iron.png", + groups = {drawer_upgrade = 100}, + recipe_item = "mcl_core:iron_ingot" + }) + + drawers.register_drawer_upgrade("drawers:upgrade_gold", { + description = S("Gold Drawer Upgrade (x3)"), + inventory_image = "drawers_upgrade_gold.png", + groups = {drawer_upgrade = 200}, + recipe_item = "mcl_core:gold_ingot" + }) + + drawers.register_drawer_upgrade("drawers:upgrade_obsidian", { + description = S("Obsidian Drawer Upgrade (x4)"), + inventory_image = "drawers_upgrade_obsidian.png", + groups = {drawer_upgrade = 300}, + recipe_item = "mcl_core:obsidian" + }) + + drawers.register_drawer_upgrade("drawers:upgrade_diamond", { + description = S("Diamond Drawer Upgrade (x8)"), + inventory_image = "drawers_upgrade_diamond.png", + groups = {drawer_upgrade = 700}, + recipe_item = "mcl_core:diamond" + }) + + drawers.register_drawer_upgrade("drawers:upgrade_emerald", { + description = S("Emerald Drawer Upgrade (x13)"), + inventory_image = "drawers_upgrade_emerald.png", + groups = {drawer_upgrade = 1200}, + recipe_item = "mcl_core:emerald" + }) +end + +if core.get_modpath("moreores") then + drawers.register_drawer_upgrade("drawers:upgrade_mithril", { + description = S("Mithril Drawer Upgrade (x13)"), + inventory_image = "drawers_upgrade_mithril.png", + groups = {drawer_upgrade = 1200}, + recipe_item = "moreores:mithril_ingot" + }) +end + +-- +-- Register drawer trim +-- + +if core.get_modpath("mcl_core") and mcl_core then + core.register_node("drawers:trim", { + description = S("Wooden Trim"), + tiles = {"drawers_trim.png"}, + groups = {drawer_connector = 1, handy = 1, axey = 1, flammable = 3, wood = 1, building_block = 1, material_wood = 1}, + _mcl_blast_resistance = 15, + _mcl_hardness = 2, + }) +else + core.register_node("drawers:trim", { + description = S("Wooden Trim"), + tiles = {"drawers_trim.png"}, + groups = {drawer_connector = 1, choppy = 3, oddly_breakable_by_hand = 2}, + }) +end + +core.register_craft({ + output = "drawers:trim 6", + recipe = { + {"group:stick", "group:wood", "group:stick"}, + {"group:wood", "group:wood", "group:wood"}, + {"group:stick", "group:wood", "group:stick"} + } +}) + +-- +-- Register drawer upgrade template +-- + +core.register_craftitem("drawers:upgrade_template", { + description = S("Drawer Upgrade Template"), + inventory_image = "drawers_upgrade_template.png" +}) + +core.register_craft({ + output = "drawers:upgrade_template 4", + recipe = { + {"group:stick", "group:stick", "group:stick"}, + {"group:stick", "group:drawer", "group:stick"}, + {"group:stick", "group:stick", "group:stick"} + } +}) + diff --git a/mods/drawers/locale/drawers.be.tr b/mods/drawers/locale/drawers.be.tr new file mode 100644 index 00000000..8baecb45 --- /dev/null +++ b/mods/drawers/locale/drawers.be.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=@1 шуфляда +@1 Drawers (1x2)=@1 шуфляды (1x2) +@1 Drawers (2x2)=@1 шуфляды (2x2) +Empty=Пустая +Drawer Controller=Кантролер шуфляды +Digiline Channel= +Save= +@1 (@2% full)=@1 (@2% поўны) +@1 @2 (@3% full)=@1 @2 (@3% поўны) +Acacia Wood=Драўніна акацыі +Aspen Wood=Асінавая драўніна +Junglewood=Джунглевая драўніна +Pine Wood=Хваёвая драўніна +Oak Wood=Дубовая драўніна +Birch Wood=Бярозавая драўніна +Dark Oak Wood=Цёмная дубовая драўніна +Spruce Wood=Ялінавая драўніна +Steel Drawer Upgrade (x2)=Мадэрнізацыя сталёвай шуфляды (x2) +Gold Drawer Upgrade (x3)=Мадэрнізацыя залатой шуфляды (x3) +Obsidian Drawer Upgrade (x4)=Мадэрнізацыя абсідыянавай шуфляды (x5) +Diamond Drawer Upgrade (x8)=Мадэрнізацыя дыяментавай шуфляды (x8) +Iron Drawer Upgrade (x2)=Мадэрнізацыя жалезнай шуфляды (x2) +Emerald Drawer Upgrade (x13)=Мадэрнізацыя смарагдавай шуфляды (x13) +Mithril Drawer Upgrade (x13)=Мадэрнізацыя смарагдавай шуфляды (x13) +Wooden Trim=Драўлянае аздабленне +Drawer Upgrade Template=Шаблон мадэрнізацыі шуфляды +Wooden=Драўляны diff --git a/mods/drawers/locale/drawers.bn_BD.tr b/mods/drawers/locale/drawers.bn_BD.tr new file mode 100644 index 00000000..9ab3d27f --- /dev/null +++ b/mods/drawers/locale/drawers.bn_BD.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=@১ ড্রয়ার +@1 Drawers (1x2)=@১ ড্রয়ার (১x২) +@1 Drawers (2x2)=@১ ড্রয়ার (২x২) +Empty=খালি +Drawer Controller=ড্রয়ার কন্ট্রোলার +Digiline Channel= +Save= +@1 (@2% full)=@1 (@2% পূর্ণ) +@1 @2 (@3% full)=@1 @2 (@3% পূর্ণ) +Acacia Wood=বাবলা কাঠ +Aspen Wood=ভূর্জ কাঠ +Junglewood=জংলিকাঠ +Pine Wood=পাইন কাঠ +Oak Wood= +Birch Wood=ভূর্জ কাঠ +Dark Oak Wood= +Spruce Wood= +Steel Drawer Upgrade (x2)= +Gold Drawer Upgrade (x3)= +Obsidian Drawer Upgrade (x4)= +Diamond Drawer Upgrade (x8)= +Iron Drawer Upgrade (x2)= +Emerald Drawer Upgrade (x13)= +Mithril Drawer Upgrade (x13)= +Wooden Trim= +Drawer Upgrade Template= +Wooden=কাঠের diff --git a/mods/drawers/locale/drawers.cs.tr b/mods/drawers/locale/drawers.cs.tr new file mode 100644 index 00000000..7db50877 --- /dev/null +++ b/mods/drawers/locale/drawers.cs.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=Šuplík @1 +@1 Drawers (1x2)=Šuplíky @1 (1x2) +@1 Drawers (2x2)=Šuplíky @1 (2x2) +Empty=Prázdný +Drawer Controller= +Digiline Channel= +Save= +@1 (@2% full)=@1 (z @2 % plný) +@1 @2 (@3% full)=@1 @2 (z @3 % plný) +Acacia Wood=ze dřeva akácie +Aspen Wood=ze dřeva osiky +Junglewood=ze dřeva džunglovníku +Pine Wood=ze borovicového dřeva +Oak Wood=ze dubového dřeva +Birch Wood=z bukového dřeva +Dark Oak Wood=z tmavého dubového dřeva +Spruce Wood=ze smrkového dřeva +Steel Drawer Upgrade (x2)=Ocelové vylepšení šuplíku (x2) +Gold Drawer Upgrade (x3)=Zlaté vylepšení šuplíku (x3) +Obsidian Drawer Upgrade (x4)=Obsidiánové vylepšení šuplíku (x5) +Diamond Drawer Upgrade (x8)=Diamantové vylepšení šuplíku (x8) +Iron Drawer Upgrade (x2)=Železné vylepšení šuplíku (x2) +Emerald Drawer Upgrade (x13)=Emeraldové vylepšení šuplíku (x13) +Mithril Drawer Upgrade (x13)=Emeraldové vylepšení šuplíku (x13) +Wooden Trim=Dřevěný Ořez +Drawer Upgrade Template=Šablona vylepšení šuplíku +Wooden=Dřevěný diff --git a/mods/drawers/locale/drawers.de.tr b/mods/drawers/locale/drawers.de.tr new file mode 100644 index 00000000..6536f784 --- /dev/null +++ b/mods/drawers/locale/drawers.de.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=@1schubfach +@1 Drawers (1x2)=@1schubfächer (1×2) +@1 Drawers (2x2)=@1schubfächer (2×2) +Empty=Leer +Drawer Controller=Schubfach Steuerung +Digiline Channel= +Save= +@1 (@2% full)=@1 (@2% voll) +@1 @2 (@3% full)=@1 @2 (@3% voll) +Acacia Wood=Akazienholz +Aspen Wood=Espenholz +Junglewood=Tropenholz +Pine Wood=Kiefernholz +Oak Wood=Eichenholz +Birch Wood=Birkenholz +Dark Oak Wood=Dunkeleichenholz +Spruce Wood=Fichtenholz +Steel Drawer Upgrade (x2)=Stahl-Schubfachverbesserung (×2) +Gold Drawer Upgrade (x3)=Gold-Schubfachverbesserung (×3) +Obsidian Drawer Upgrade (x4)=Obsidian-Schubfachverbesserung (×5) +Diamond Drawer Upgrade (x8)=Diamant-Schubfachverbesserung (×8) +Iron Drawer Upgrade (x2)=Eisen-Schubfachverbesserung (×2) +Emerald Drawer Upgrade (x13)=Smaragd-Schubfachverbesserung (×13) +Mithril Drawer Upgrade (x13)=Smaragd-Schubfachverbesserung (×13) +Wooden Trim=Holzverkleidung +Drawer Upgrade Template=Schubfachverbesserungsvorlage +Wooden=Holz diff --git a/mods/drawers/locale/drawers.el.tr b/mods/drawers/locale/drawers.el.tr new file mode 100644 index 00000000..770fbc0d --- /dev/null +++ b/mods/drawers/locale/drawers.el.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=@1 συρτάρι +@1 Drawers (1x2)=@1 συρτάρια (1x2) +@1 Drawers (2x2)=@1 συρτάρια (2x2) +Empty=Κενό +Drawer Controller=Ελεγκτής συρταριού +Digiline Channel= +Save= +@1 (@2% full)=@1 (@2% Πλήρης) +@1 @2 (@3% full)= +Acacia Wood=Ξύλο ακακίας +Aspen Wood= +Junglewood= +Pine Wood=Ξύλο πεύκου +Oak Wood=Ξύλο βελανιδιάς +Birch Wood=Ξύλο σημύδας +Dark Oak Wood=Σκούρο ξύλο βελανιδιάς +Spruce Wood=Ξύλο ερυθρελάτης +Steel Drawer Upgrade (x2)=Χαλύβδινη αναβάθμιση συρταριού (x2) +Gold Drawer Upgrade (x3)=Χρυσού αναβάθμιση συρταριού (x3) +Obsidian Drawer Upgrade (x4)= +Diamond Drawer Upgrade (x8)=Διαμαντένια Αναβάθμιση συρταριού (x8) +Iron Drawer Upgrade (x2)=Σιδερένια αναβάθμιση συρταριού (x2) +Emerald Drawer Upgrade (x13)=Σμαραγδένια αναβάθμιση συρταριού (x13) +Mithril Drawer Upgrade (x13)= +Wooden Trim= +Drawer Upgrade Template= +Wooden=Ξύλινο diff --git a/mods/drawers/locale/drawers.eo.tr b/mods/drawers/locale/drawers.eo.tr new file mode 100644 index 00000000..cffceabf --- /dev/null +++ b/mods/drawers/locale/drawers.eo.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=@1 tirkesto +@1 Drawers (1x2)=@1 tirkestoj (1×2) +@1 Drawers (2x2)=@1 tirkestoj (2×2) +Empty=Malplena +Drawer Controller=Regilo de tirkesto +Digiline Channel= +Save= +@1 (@2% full)=@1 (plena je @2%) +@1 @2 (@3% full)=@1 @2 (plena je @3%) +Acacia Wood=Akacia ligno +Aspen Wood=Tremola ligno +Junglewood=Ĝangala ligno +Pine Wood=Abia ligno +Oak Wood=Kverka ligno +Birch Wood=Betula ligno +Dark Oak Wood=Malhela kverka ligno +Spruce Wood=Picea ligno +Steel Drawer Upgrade (x2)=Ŝtala plibonigo de tirkesto (×2) +Gold Drawer Upgrade (x3)=Ora plibonigo de tirkesto (×3) +Obsidian Drawer Upgrade (x4)=Obsidiana plibonigo de tirkesto (×5) +Diamond Drawer Upgrade (x8)=Diamanta plibonigo de tirkesto (×8) +Iron Drawer Upgrade (x2)=Fera plibonigo de tirkesto (×2) +Emerald Drawer Upgrade (x13)=Smeralda plibonigo de tirkesto (×13) +Mithril Drawer Upgrade (x13)=Smeralda plibonigo de tirkesto (×13) +Wooden Trim= +Drawer Upgrade Template=Ŝablono por plibonigo de tirkesto +Wooden=Ligna diff --git a/mods/drawers/locale/drawers.es.tr b/mods/drawers/locale/drawers.es.tr new file mode 100644 index 00000000..66d6045e --- /dev/null +++ b/mods/drawers/locale/drawers.es.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer= +@1 Drawers (1x2)=Mejora para Gavetas de Hierro (x2) +@1 Drawers (2x2)=Mejora para Gavetas de Hierro (x2) +Empty=Vacío +Drawer Controller=Controlador de Gavetas +Digiline Channel= +Save= +@1 (@2% full)= +@1 @2 (@3% full)= +Acacia Wood=Madera de acacia +Aspen Wood=Madera de álamo +Junglewood=Madera tropical +Pine Wood=Madera de pino +Oak Wood=Madera de roble +Birch Wood=Madera de abedul +Dark Oak Wood=Madera de roble oscuro +Spruce Wood=Madera de pícea +Steel Drawer Upgrade (x2)=Mejora para Gavetas de Acero (x2) +Gold Drawer Upgrade (x3)=Mejora para Gavetas de Oro (x3) +Obsidian Drawer Upgrade (x4)=Mejora para Gavetas de Obsidiana (x5) +Diamond Drawer Upgrade (x8)=Mejora para Gavetas de Diamante (x8) +Iron Drawer Upgrade (x2)=Mejora para Gavetas de Hierro (x2) +Emerald Drawer Upgrade (x13)=Mejora para Gavetas de Esmeralda (x13) +Mithril Drawer Upgrade (x13)=Mejora para Gavetas de Esmeralda (x13) +Wooden Trim=Recorte De Madera +Drawer Upgrade Template=Plantilla de mejoras para gavetas +Wooden=De Madera diff --git a/mods/drawers/locale/drawers.et.tr b/mods/drawers/locale/drawers.et.tr new file mode 100644 index 00000000..b791618d --- /dev/null +++ b/mods/drawers/locale/drawers.et.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=@1 salv +@1 Drawers (1x2)=@1 salved (1x2) +@1 Drawers (2x2)=@1 salved (2x2) +Empty=Tühi +Drawer Controller=Salve juhtpult +Digiline Channel= +Save= +@1 (@2% full)=@1 (@2% täis) +@1 @2 (@3% full)=@1 @2 (@3% täis) +Acacia Wood=Akaatsia puidust +Aspen Wood=Haavast +Junglewood=Tihniku puidust +Pine Wood=Männist +Oak Wood=Tammest +Birch Wood=Kasest +Dark Oak Wood=Tõmmu-tammest +Spruce Wood=Kuusest +Steel Drawer Upgrade (x2)=Teras salve täiustus (x2) +Gold Drawer Upgrade (x3)=Kuld salve täiustus (x3) +Obsidian Drawer Upgrade (x4)=Vulkaanklaas salve täiustus (x5) +Diamond Drawer Upgrade (x8)=Teemant salve täiustus (x8) +Iron Drawer Upgrade (x2)=Raud salve täiustus (x2) +Emerald Drawer Upgrade (x13)=Smaragd salve täiustus (x13) +Mithril Drawer Upgrade (x13)=Smaragd salve täiustus (x13) +Wooden Trim=Puitliist +Drawer Upgrade Template=Salve täiustamise kava +Wooden=Puidust diff --git a/mods/drawers/locale/drawers.fr.tr b/mods/drawers/locale/drawers.fr.tr new file mode 100644 index 00000000..2c38b0ff --- /dev/null +++ b/mods/drawers/locale/drawers.fr.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=Tiroir @1 +@1 Drawers (1x2)=Tiroirs (1x2) @1 +@1 Drawers (2x2)=Tiroirs (2x2) @1 +Empty=Vide +Drawer Controller=Contrôleur de Tiroirs +Digiline Channel= +Save= +@1 (@2% full)=@1 (@2% plein) +@1 @2 (@3% full)=@1 @2 (@3% plein) +Acacia Wood=Bois d'acacia +Aspen Wood=Bois de tremble +Junglewood=Bois de jungle +Pine Wood=Bois de pin +Oak Wood=Bois de chêne +Birch Wood=Bois de bouleau +Dark Oak Wood=Bois de chêne foncé +Spruce Wood=Bois d'épicéa +Steel Drawer Upgrade (x2)=Amélioration tiroir en acier (x2) +Gold Drawer Upgrade (x3)=Amélioration tiroir en or (x3) +Obsidian Drawer Upgrade (x4)=Amélioration tiroir en obsidienne (x5) +Diamond Drawer Upgrade (x8)=Amélioration tiroir en diamant (x8) +Iron Drawer Upgrade (x2)=Amélioration tiroir en fer (x2) +Emerald Drawer Upgrade (x13)=Amélioration tiroir en émeraude (x13) +Mithril Drawer Upgrade (x13)=Amélioration tiroir en émeraude (x13) +Wooden Trim=Habillage en bois +Drawer Upgrade Template=Amélioration modèle de tiroir +Wooden=En bois diff --git a/mods/drawers/locale/drawers.he.tr b/mods/drawers/locale/drawers.he.tr new file mode 100644 index 00000000..bf3cda6c --- /dev/null +++ b/mods/drawers/locale/drawers.he.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=מגירה @1 +@1 Drawers (1x2)=@1 מגירות (1x2) +@1 Drawers (2x2)=@1 מגירות (2x2) +Empty=ריקה +Drawer Controller= +Digiline Channel= +Save= +@1 (@2% full)=@1 (תפוסה של @1%) +@1 @2 (@3% full)=@1 @2 (תפוסה של @3%) +Acacia Wood=עץ שיטה +Aspen Wood=עץ אספן +Junglewood=עץ ג׳ונגל +Pine Wood=עץ אורן +Oak Wood=עץ אלון +Birch Wood=עץ לבנה +Dark Oak Wood=עץ אלון כהה +Spruce Wood=עץ אשוח +Steel Drawer Upgrade (x2)= +Gold Drawer Upgrade (x3)= +Obsidian Drawer Upgrade (x4)= +Diamond Drawer Upgrade (x8)= +Iron Drawer Upgrade (x2)= +Emerald Drawer Upgrade (x13)= +Mithril Drawer Upgrade (x13)= +Wooden Trim= +Drawer Upgrade Template= +Wooden=מעץ diff --git a/mods/drawers/locale/drawers.id.tr b/mods/drawers/locale/drawers.id.tr new file mode 100644 index 00000000..6e839c73 --- /dev/null +++ b/mods/drawers/locale/drawers.id.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=Laci @1 +@1 Drawers (1x2)=Laci @1 (1x2) +@1 Drawers (2x2)=Laci @1 (2x2) +Empty=Kosong +Drawer Controller=Pengendali Laci +Digiline Channel= +Save= +@1 (@2% full)=@1 (@2% penuh) +@1 @2 (@3% full)=@1 @2 (@3% penuh) +Acacia Wood=Kayu Akasia +Aspen Wood=Kayu Aspen +Junglewood=Kayu Rimba +Pine Wood=Kayu Pinus +Oak Wood=Kayu Ek +Birch Wood=Kayu Birch +Dark Oak Wood=Kayu Ek Gelap +Spruce Wood=Kayu Cemara +Steel Drawer Upgrade (x2)=Tingkatkan menjadi Laci Baja (x2) +Gold Drawer Upgrade (x3)=Tingkatkan menjadi Laci Emas (x3) +Obsidian Drawer Upgrade (x4)=Tingkatkan menjadi Laci Obsidian (x5) +Diamond Drawer Upgrade (x8)=Tingkatkan menjadi Laci Berlian (x8) +Iron Drawer Upgrade (x2)=Tingkatkan menjadi Laci Besi (x2) +Emerald Drawer Upgrade (x13)=Tingkatkan menjadi Laci Zamrud (x13) +Mithril Drawer Upgrade (x13)=Tingkatkan menjadi Laci Zamrud (x13) +Wooden Trim=Ukiran Kayu +Drawer Upgrade Template=Templat Peningkatan Laci +Wooden=Kayu diff --git a/mods/drawers/locale/drawers.it.tr b/mods/drawers/locale/drawers.it.tr new file mode 100644 index 00000000..7ca1652c --- /dev/null +++ b/mods/drawers/locale/drawers.it.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=@1 Cassetto +@1 Drawers (1x2)=@1 Cassetti (1x2) +@1 Drawers (2x2)=@1 Cassetti (2x2) +Empty=Vuoto +Drawer Controller= +Digiline Channel= +Save= +@1 (@2% full)=@1 (@2% pieno) +@1 @2 (@3% full)=@1 @2 (@3% pieno) +Acacia Wood=Legno di acacia +Aspen Wood=Legno di pioppo +Junglewood=Legno della giungla +Pine Wood=Legno di pino +Oak Wood=Legno di quercia +Birch Wood=Legno di betulla +Dark Oak Wood=Legno di quercia scura +Spruce Wood=Legno di abete rosso +Steel Drawer Upgrade (x2)=Miglioramento d'acciaio della cassettiera (x2) +Gold Drawer Upgrade (x3)=Miglioramento d'oro della cassettiera (x3) +Obsidian Drawer Upgrade (x4)=Miglioramento d'ossidiana della cassettiera (x5) +Diamond Drawer Upgrade (x8)=Miglioramento di diamante della cassettiera (x8) +Iron Drawer Upgrade (x2)=Miglioramento di ferro della cassettiera (x3) +Emerald Drawer Upgrade (x13)=Miglioramento di smeraldo della cassettiera (x13) +Mithril Drawer Upgrade (x13)=Miglioramento di smeraldo della cassettiera (x13) +Wooden Trim=di legno +Drawer Upgrade Template=Modello di miglioramento della cassettiera +Wooden=Di legno diff --git a/mods/drawers/locale/drawers.ms.tr b/mods/drawers/locale/drawers.ms.tr new file mode 100644 index 00000000..01ae4bfb --- /dev/null +++ b/mods/drawers/locale/drawers.ms.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=Laci @1 +@1 Drawers (1x2)=Laci @1 (1x2) +@1 Drawers (2x2)=Laci @1 (2x2) +Empty=Kosong +Drawer Controller=Pengawal Laci +Digiline Channel= +Save= +@1 (@2% full)=@1 (@2% penuh) +@1 @2 (@3% full)=@1 @2 (@3% penuh) +Acacia Wood=Papan Kayu Akasia +Aspen Wood=Papan Kayu Aspen +Junglewood=Papan Kayu Hutan +Pine Wood=Papan Kayu Pain +Oak Wood=Papan Kayu Oak +Birch Wood=Papan Kayu Birch +Dark Oak Wood=Papan Kayu Oak Gelap +Spruce Wood=Papan Kayu Fir +Steel Drawer Upgrade (x2)=Naik Taraf Laci - Keluli (x2) +Gold Drawer Upgrade (x3)=Naik Taraf Laci - Emas (x3) +Obsidian Drawer Upgrade (x4)=Naik Taraf Laci - Obsidia (x5) +Diamond Drawer Upgrade (x8)=Naik Taraf Laci - Intan (x8) +Iron Drawer Upgrade (x2)=Naik Taraf Laci - Besi (x2) +Emerald Drawer Upgrade (x13)=Naik Taraf Laci - Zamrud (x13) +Mithril Drawer Upgrade (x13)=Naik Taraf Laci - Zamrud (x13) +Wooden Trim=Hiasan Kayu +Drawer Upgrade Template=Templat Naik Taraf Laci +Wooden=Kayu diff --git a/mods/drawers/locale/drawers.ms_Arab.tr b/mods/drawers/locale/drawers.ms_Arab.tr new file mode 100644 index 00000000..15e52a72 --- /dev/null +++ b/mods/drawers/locale/drawers.ms_Arab.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=لاچي @1 +@1 Drawers (1x2)=لاچي @1 جنيس 1x2 +@1 Drawers (2x2)=لاچي @1 جنيس 2x2 +Empty=کوسوڠ +Drawer Controller=ڤڠاول لاچي +Digiline Channel= +Save= +@1 (@2% full)=@1⹁ @2% ڤنوه +@1 @2 (@3% full)=@2 @1⹁ @3% ڤنوه +Acacia Wood=ڤاڤن کايو اکاسيا +Aspen Wood=ڤاڤن کايو اسڤين +Junglewood=ڤاڤن کايو هوتن +Pine Wood=ڤاڤن کايو ڤاين +Oak Wood=ڤاڤن کايو اوک +Birch Wood=ڤاڤن کايو برچ +Dark Oak Wood=ڤاڤن کايو اوک ݢلڤ +Spruce Wood=ڤاڤن کايو فير +Steel Drawer Upgrade (x2)=ناٴيق طرف لاچي - کلولي⹁ x2 +Gold Drawer Upgrade (x3)=ناٴيق طرف لاچي - امس⹁ x3 +Obsidian Drawer Upgrade (x4)=ناٴيق طرف لاچي - اوبسيدي⹁ x5 +Diamond Drawer Upgrade (x8)=ناٴيق طرف لاچي - اينتن⹁ x8 +Iron Drawer Upgrade (x2)=ناٴيق طرف لاچي - بسي⹁ x2 +Emerald Drawer Upgrade (x13)=ناٴيق طرف لاچي - زمرود⹁ x13 +Mithril Drawer Upgrade (x13)=ناٴيق طرف لاچي - زمرود⹁ x13 +Wooden Trim=هياسن کايو +Drawer Upgrade Template=تمڤلت ناٴيق طرف لاچي +Wooden=کايو diff --git a/mods/drawers/locale/drawers.nb_NO.tr b/mods/drawers/locale/drawers.nb_NO.tr new file mode 100644 index 00000000..7183b810 --- /dev/null +++ b/mods/drawers/locale/drawers.nb_NO.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=@1 Skuff +@1 Drawers (1x2)=@1 Skuffer (1x2) +@1 Drawers (2x2)=@1 Skuffer (2x2) +Empty=Tom +Drawer Controller=Skuffekontrollør +Digiline Channel= +Save= +@1 (@2% full)=@1 (@2% full) +@1 @2 (@3% full)=@1 @2 (@3% full) +Acacia Wood=Akasie +Aspen Wood=Osp +Junglewood=Regnskogtømmer +Pine Wood=Furu +Oak Wood=Eik +Birch Wood=Bjørk +Dark Oak Wood=Mørk eik +Spruce Wood=Gran +Steel Drawer Upgrade (x2)=Stålskuffoppgradering (x2) +Gold Drawer Upgrade (x3)=Gullskuffoppgradering (x3) +Obsidian Drawer Upgrade (x4)=Obsidianskuffoppgradering (x5) +Diamond Drawer Upgrade (x8)=Diamantskuffoppgradering (x8) +Iron Drawer Upgrade (x2)=Jernskuffoppgradering (x2) +Emerald Drawer Upgrade (x13)=Smaragdskuffoppgradering (x13) +Mithril Drawer Upgrade (x13)=Smaragdskuffoppgradering (x13) +Wooden Trim=Kledning i tre +Drawer Upgrade Template=Mal for oppgradering av skuffer +Wooden=Tre diff --git a/mods/drawers/locale/drawers.nl.tr b/mods/drawers/locale/drawers.nl.tr new file mode 100644 index 00000000..a76b0db1 --- /dev/null +++ b/mods/drawers/locale/drawers.nl.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=@1 Lade +@1 Drawers (1x2)=@1 Lades (1x2) +@1 Drawers (2x2)=@1 Lades (2x2) +Empty=Leeg +Drawer Controller= +Digiline Channel= +Save= +@1 (@2% full)=@1 (@2% vol) +@1 @2 (@3% full)=@1 @2 (@3% vol) +Acacia Wood=Acacia Hout +Aspen Wood=Espenhout +Junglewood=Junglehout +Pine Wood=Dennenhout +Oak Wood=Eikenhout +Birch Wood=Berken hout +Dark Oak Wood=Donker Eikenhout +Spruce Wood=Sparrenhout +Steel Drawer Upgrade (x2)=Stalen Lade Upgrade (x2) +Gold Drawer Upgrade (x3)=Gouden Lade Upgrade (x3) +Obsidian Drawer Upgrade (x4)=Obsidianen Lade Upgrade (x5) +Diamond Drawer Upgrade (x8)=Diamanten Lade Upgrade (x8) +Iron Drawer Upgrade (x2)=Ijzeren Lade Upgrade (x2) +Emerald Drawer Upgrade (x13)=Smaragden Lade upgrade (x13) +Mithril Drawer Upgrade (x13)=Smaragden Lade upgrade (x13) +Wooden Trim=Houten bekleding +Drawer Upgrade Template=Lade Upgrade Template +Wooden=Houten diff --git a/mods/drawers/locale/drawers.pl.tr b/mods/drawers/locale/drawers.pl.tr new file mode 100644 index 00000000..dfe234a0 --- /dev/null +++ b/mods/drawers/locale/drawers.pl.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=@1 Szuflada +@1 Drawers (1x2)=@1 Szuflady (1x2) +@1 Drawers (2x2)=@1 Szuflady (2x2) +Empty=Pusta +Drawer Controller=Kontroler szuflady +Digiline Channel= +Save= +@1 (@2% full)=@1 (@2% napełnione) +@1 @2 (@3% full)=@1 @2 (@3% napełnione) +Acacia Wood=Drewno akacjowe +Aspen Wood=Drewno osikowe +Junglewood=Drewno jungli +Pine Wood=Drewno sosnowe +Oak Wood=Drewno dębowe +Birch Wood=Drewno brzozowe +Dark Oak Wood=Drewno ciemne dębowe +Spruce Wood=Drwno świerkowe +Steel Drawer Upgrade (x2)=Ulepszenie stalowej szuflady(x2) +Gold Drawer Upgrade (x3)=Ulepszenie złotej szuflady (x3) +Obsidian Drawer Upgrade (x4)=Ulepszenie obsydianowej szuflady (x5) +Diamond Drawer Upgrade (x8)=Ulepszenie diamentowej szuflady (x8) +Iron Drawer Upgrade (x2)=Żelazna aktualizacja szuflady (x2) +Emerald Drawer Upgrade (x13)=Ulepszenie szmaragdowej szuflady (x13) +Mithril Drawer Upgrade (x13)=Ulepszenie szmaragdowej szuflady (x13) +Wooden Trim=Drewniane wykończenia +Drawer Upgrade Template=Szablon ulepszenia szuflady +Wooden=Drewniany diff --git a/mods/drawers/locale/drawers.pt.tr b/mods/drawers/locale/drawers.pt.tr new file mode 100644 index 00000000..73a38b71 --- /dev/null +++ b/mods/drawers/locale/drawers.pt.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=Armário @1 +@1 Drawers (1x2)=Armários @1 (1x2) +@1 Drawers (2x2)=Armários @1 (2x2) +Empty=Vazio +Drawer Controller=Controlador de Armários +Digiline Channel= +Save= +@1 (@2% full)=@1 (@2% cheio) +@1 @2 (@3% full)=@1 @2 (@3% cheio) +Acacia Wood=Lenha de Acácia +Aspen Wood=Lenha de Álamo +Junglewood=Lenha da selva +Pine Wood=Lenha de Pinheiro +Oak Wood=Lenha de Carvalho +Birch Wood=Lenha de Bétula +Dark Oak Wood=Lenha de Carvalho Escuro +Spruce Wood=Lenha de Abeto +Steel Drawer Upgrade (x2)=Melhoria de Armário de Aço (x2) +Gold Drawer Upgrade (x3)=Melhoria de Armário de Ouro (x3) +Obsidian Drawer Upgrade (x4)=Melhoria de Armário de Obsidiana (x5) +Diamond Drawer Upgrade (x8)=Melhoria de Armário de Diamante (x8) +Iron Drawer Upgrade (x2)=Melhoria de Armário de Ferro (x2) +Emerald Drawer Upgrade (x13)=Melhoria de Armário de Esmeralda (x13) +Mithril Drawer Upgrade (x13)=Melhoria de Armário de Esmeralda (x13) +Wooden Trim=Guarnição de Madeira +Drawer Upgrade Template=Modelo de Melhoria de Armário +Wooden=Madeira diff --git a/mods/drawers/locale/drawers.pt_BR.tr b/mods/drawers/locale/drawers.pt_BR.tr new file mode 100644 index 00000000..73a38b71 --- /dev/null +++ b/mods/drawers/locale/drawers.pt_BR.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=Armário @1 +@1 Drawers (1x2)=Armários @1 (1x2) +@1 Drawers (2x2)=Armários @1 (2x2) +Empty=Vazio +Drawer Controller=Controlador de Armários +Digiline Channel= +Save= +@1 (@2% full)=@1 (@2% cheio) +@1 @2 (@3% full)=@1 @2 (@3% cheio) +Acacia Wood=Lenha de Acácia +Aspen Wood=Lenha de Álamo +Junglewood=Lenha da selva +Pine Wood=Lenha de Pinheiro +Oak Wood=Lenha de Carvalho +Birch Wood=Lenha de Bétula +Dark Oak Wood=Lenha de Carvalho Escuro +Spruce Wood=Lenha de Abeto +Steel Drawer Upgrade (x2)=Melhoria de Armário de Aço (x2) +Gold Drawer Upgrade (x3)=Melhoria de Armário de Ouro (x3) +Obsidian Drawer Upgrade (x4)=Melhoria de Armário de Obsidiana (x5) +Diamond Drawer Upgrade (x8)=Melhoria de Armário de Diamante (x8) +Iron Drawer Upgrade (x2)=Melhoria de Armário de Ferro (x2) +Emerald Drawer Upgrade (x13)=Melhoria de Armário de Esmeralda (x13) +Mithril Drawer Upgrade (x13)=Melhoria de Armário de Esmeralda (x13) +Wooden Trim=Guarnição de Madeira +Drawer Upgrade Template=Modelo de Melhoria de Armário +Wooden=Madeira diff --git a/mods/drawers/locale/drawers.ru.tr b/mods/drawers/locale/drawers.ru.tr new file mode 100644 index 00000000..def1dcf0 --- /dev/null +++ b/mods/drawers/locale/drawers.ru.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=@1 Ящик +@1 Drawers (1x2)=@1 Ящики (1x2) +@1 Drawers (2x2)=@1 Ящики (2x2) +Empty=Пусто +Drawer Controller=Контролер ящика +Digiline Channel= +Save= +@1 (@2% full)=@1 (@2% полон) +@1 @2 (@3% full)=@1 @2 (@3% полон) +Acacia Wood=Акация +Aspen Wood=Осина +Junglewood=Тропическое дерево +Pine Wood=Сосна +Oak Wood=Дуб +Birch Wood=Берёза +Dark Oak Wood=Тёмный дуб +Spruce Wood=Ель +Steel Drawer Upgrade (x2)=Стальной ящик Улучшение (x2) +Gold Drawer Upgrade (x3)=Золотой ящик Улучшение (x3) +Obsidian Drawer Upgrade (x4)=Обсидиановый ящик Улучшение (x5) +Diamond Drawer Upgrade (x8)=Алмазный ящик Улучшение (x8) +Iron Drawer Upgrade (x2)=Железный ящик Улучшение (x2) +Emerald Drawer Upgrade (x13)=Изумрудный ящик Улучшение (x13) +Mithril Drawer Upgrade (x13)=Изумрудный ящик Улучшение (x13) +Wooden Trim=Деревянная отделка +Drawer Upgrade Template=Шаблон улучшения ящика +Wooden=Деревянный diff --git a/mods/drawers/locale/drawers.sv.tr b/mods/drawers/locale/drawers.sv.tr new file mode 100644 index 00000000..e12ba8ef --- /dev/null +++ b/mods/drawers/locale/drawers.sv.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=@1låda +@1 Drawers (1x2)=@1lådor (1x2) +@1 Drawers (2x2)=@1lådor (2x2) +Empty=Tom +Drawer Controller=Lådkontroll +Digiline Channel=Digilinekanal +Save=Spara +@1 (@2% full)=@1 (@2% fullt) +@1 @2 (@3% full)=@1 @2 (@3% fullt) +Acacia Wood=Acaciaträ +Aspen Wood=Aspträ +Junglewood=Djungelträ +Pine Wood=Tallträ +Oak Wood=Ekträ +Birch Wood=Björkträ +Dark Oak Wood=Mörk ekträ +Spruce Wood=Granträ +Steel Drawer Upgrade (x2)=Stållådeuppgradering (x2) +Gold Drawer Upgrade (x3)=Guldlådeuppgradering (x3) +Obsidian Drawer Upgrade (x4)=Obsidianlådeuppgradering (x4) +Diamond Drawer Upgrade (x8)=Diamantlådeuppgradering (x8) +Iron Drawer Upgrade (x2)=Järnlådeuppgradering (x2) +Emerald Drawer Upgrade (x13)=Smaragdlådeuppgradering (x13) +Mithril Drawer Upgrade (x13)=Mithrillådeuppgradering (x13) +Wooden Trim=Trätrim +Drawer Upgrade Template=Lådeuppgraderingsmall +Wooden=Trä diff --git a/mods/drawers/locale/drawers.tr.tr b/mods/drawers/locale/drawers.tr.tr new file mode 100644 index 00000000..bbcfb554 --- /dev/null +++ b/mods/drawers/locale/drawers.tr.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer=@1 Çekmece +@1 Drawers (1x2)=@1 Çekmece (1x2) +@1 Drawers (2x2)=@1 Çekmece (2x2) +Empty=Boş +Drawer Controller=Çekmece Denetleyicisi +Digiline Channel= +Save= +@1 (@2% full)=@1 (%@2 dolu) +@1 @2 (@3% full)=@1 @2 (%@3 dolu) +Acacia Wood=Akasya Ahşap +Aspen Wood=Kavak Ahşap +Junglewood=Cangıl Ahşap +Pine Wood=Çam Ahşap +Oak Wood=Meşe Ahşap +Birch Wood=Huş Ahşap +Dark Oak Wood=Koyu Meşe Ahşap +Spruce Wood=Ladin Ahşap +Steel Drawer Upgrade (x2)=Çelik Çekmece Yükseltme (x2) +Gold Drawer Upgrade (x3)=Altın Çekmece Yükseltme (x3) +Obsidian Drawer Upgrade (x4)=Obsidyen Çekmece Yükseltme (x5) +Diamond Drawer Upgrade (x8)=Elmas Çekmece Yükseltme (x8) +Iron Drawer Upgrade (x2)=Demir Çekmece Yükseltme (x2) +Emerald Drawer Upgrade (x13)=Zümrüt Çekmece Yükseltme (x13) +Mithril Drawer Upgrade (x13)=Zümrüt Çekmece Yükseltme (x13) +Wooden Trim=Ahşap Döşeme +Drawer Upgrade Template=Çekmece Yükseltme Şablonu +Wooden=Ahşap diff --git a/mods/drawers/locale/drawers.zh_CMN-HANT.tr b/mods/drawers/locale/drawers.zh_CMN-HANT.tr new file mode 100644 index 00000000..61f6f4f1 --- /dev/null +++ b/mods/drawers/locale/drawers.zh_CMN-HANT.tr @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer= +@1 Drawers (1x2)= +@1 Drawers (2x2)= +Empty=空的 +Drawer Controller= +Digiline Channel= +Save= +@1 (@2% full)= +@1 @2 (@3% full)= +Acacia Wood=金合欢木 +Aspen Wood= +Junglewood=丛林木 +Pine Wood= +Oak Wood=橡木 +Birch Wood=白桦木 +Dark Oak Wood=深色橡木 +Spruce Wood=云杉木 +Steel Drawer Upgrade (x2)= +Gold Drawer Upgrade (x3)= +Obsidian Drawer Upgrade (x4)= +Diamond Drawer Upgrade (x8)= +Iron Drawer Upgrade (x2)= +Emerald Drawer Upgrade (x13)= +Mithril Drawer Upgrade (x13)= +Wooden Trim= +Drawer Upgrade Template= +Wooden=木制 diff --git a/mods/drawers/locale/template.txt b/mods/drawers/locale/template.txt new file mode 100644 index 00000000..879054d6 --- /dev/null +++ b/mods/drawers/locale/template.txt @@ -0,0 +1,28 @@ +# textdomain: drawers +@1 Drawer= +@1 Drawers (1x2)= +@1 Drawers (2x2)= +Empty= +Drawer Controller= +Digiline Channel= +Save= +@1 (@2% full)= +@1 @2 (@3% full)= +Acacia Wood= +Aspen Wood= +Junglewood= +Pine Wood= +Oak Wood= +Birch Wood= +Dark Oak Wood= +Spruce Wood= +Steel Drawer Upgrade (x2)= +Gold Drawer Upgrade (x3)= +Obsidian Drawer Upgrade (x4)= +Diamond Drawer Upgrade (x8)= +Iron Drawer Upgrade (x2)= +Emerald Drawer Upgrade (x13)= +Mithril Drawer Upgrade (x13)= +Wooden Trim= +Drawer Upgrade Template= +Wooden= diff --git a/mods/drawers/lua/api.lua b/mods/drawers/lua/api.lua new file mode 100644 index 00000000..898ff430 --- /dev/null +++ b/mods/drawers/lua/api.lua @@ -0,0 +1,427 @@ +--[[ +Minetest Mod Storage Drawers - A Mod adding storage drawers + +Copyright (C) 2017-2020 Linus Jahn +Copyright (C) 2016 Mango Tango + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +]] + +local S = minetest.get_translator('drawers') + +drawers.node_box_simple = { + {-0.5, -0.5, -0.4375, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.4375, 0.5, -0.4375}, + {0.4375, -0.5, -0.5, 0.5, 0.5, -0.4375}, + {-0.4375, 0.4375, -0.5, 0.4375, 0.5, -0.4375}, + {-0.4375, -0.5, -0.5, 0.4375, -0.4375, -0.4375}, +} + +drawers.drawer_formspec = "size[9,7]" .. + "list[context;upgrades;2,0.5;5,1;]" .. + "list[current_player;main;0,3;9,4;]" .. + "listring[context;upgrades]" .. + "listring[current_player;main]" .. + drawers.gui_bg .. + drawers.gui_bg_img .. + drawers.gui_slots .. + drawers.get_upgrade_slots_bg(2, 0.5) + +-- construct drawer +function drawers.drawer_on_construct(pos) + local node = core.get_node(pos) + local ndef = core.registered_nodes[node.name] + local drawerType = ndef.groups.drawer + + local base_stack_max = core.nodedef_default.stack_max or 99 + local stack_max_factor = ndef.drawer_stack_max_factor or 24 -- 3x8 + stack_max_factor = math.floor(stack_max_factor / drawerType) -- drawerType => number of drawers in node + + -- meta + local meta = core.get_meta(pos) + + local i = 1 + while i <= drawerType do + local vid = i + -- 1x1 drawers don't have numbers in the meta fields + if drawerType == 1 then vid = "" end + meta:set_string("name"..vid, "") + meta:set_int("count"..vid, 0) + meta:set_int("max_count"..vid, base_stack_max * stack_max_factor) + meta:set_int("base_stack_max"..vid, base_stack_max) + meta:set_string("entity_infotext"..vid, drawers.gen_info_text(S("Empty"), 0, + stack_max_factor, base_stack_max)) + meta:set_int("stack_max_factor"..vid, stack_max_factor) + + i = i + 1 + end + + -- spawn all visuals + drawers.spawn_visuals(pos) + + -- create drawer upgrade inventory + meta:get_inventory():set_size("upgrades", 5) + + -- set the formspec + meta:set_string("formspec", drawers.drawer_formspec) +end + +-- destruct drawer +function drawers.drawer_on_destruct(pos) + drawers.remove_visuals(pos) + + -- clean up visual cache + if drawers.drawer_visuals[core.hash_node_position(pos)] then + drawers.drawer_visuals[core.hash_node_position(pos)] = nil + end +end + +-- drop all items +function drawers.drawer_on_dig(pos, node, player) + local drawerType = 1 + if core.registered_nodes[node.name] then + drawerType = core.registered_nodes[node.name].groups.drawer + end + if core.is_protected(pos,player:get_player_name()) then + core.record_protection_violation(pos,player:get_player_name()) + return 0 + end + local meta = core.get_meta(pos) + + local k = 1 + while k <= drawerType do + -- don't add a number in meta fields for 1x1 drawers + local vid = tostring(k) + if drawerType == 1 then vid = "" end + local count = meta:get_int("count"..vid) + local name = meta:get_string("name"..vid) + + -- drop the items + local stack_max = ItemStack(name):get_stack_max() + + local j = math.floor(count / stack_max) + 1 + local i = 1 + while i <= j do + local rndpos = drawers.randomize_pos(pos) + if i ~= j then + core.add_item(rndpos, name .. " " .. stack_max) + else + core.add_item(rndpos, name .. " " .. count % stack_max) + end + i = i + 1 + end + k = k + 1 + end + + -- drop all drawer upgrades + local upgrades = meta:get_inventory():get_list("upgrades") + if upgrades then + for _,itemStack in pairs(upgrades) do + if itemStack:get_count() > 0 then + local rndpos = drawers.randomize_pos(pos) + core.add_item(rndpos, itemStack:get_name()) + end + end + end + + -- remove node + core.node_dig(pos, node, player) +end + +function drawers.drawer_allow_metadata_inventory_put(pos, listname, index, stack, player) + if core.is_protected(pos,player:get_player_name()) then + core.record_protection_violation(pos,player:get_player_name()) + return 0 + end + if listname ~= "upgrades" then + return 0 + end + if stack:get_count() > 1 then + return 0 + end + if core.get_item_group(stack:get_name(), "drawer_upgrade") < 1 then + return 0 + end + return 1 +end + +function drawers.add_drawer_upgrade(pos, listname, index, stack, player) + -- only do anything if adding to upgrades + if listname ~= "upgrades" then return end + + drawers.update_drawer_upgrades(pos) +end + +function drawers.remove_drawer_upgrade(pos, listname, index, stack, player) + -- only do anything if adding to upgrades + if listname ~= "upgrades" then return end + + drawers.update_drawer_upgrades(pos) +end + +--[[ + Inserts an incoming stack into a specific slot of a drawer. +]] +function drawers.drawer_insert_object(pos, stack, visualid) + local visual = drawers.get_visual(pos, visualid) + if not visual then + return stack + end + + return visual:try_insert_stack(stack, true) +end + +--[[ + Inserts an incoming stack into a drawer and uses all slots. +]] +function drawers.drawer_insert_object_from_tube(pos, node, stack, direction) + local drawer_visuals = drawers.drawer_visuals[core.hash_node_position(pos)] + if not drawer_visuals then + return stack + end + + -- first try to insert in the correct slot (if there are already items) + local leftover = stack + for _, visual in pairs(drawer_visuals) do + if visual.itemName == stack:get_name() then + leftover = visual:try_insert_stack(leftover, true) + end + end + + -- if there's still something left, also use other slots + if leftover:get_count() > 0 then + for _, visual in pairs(drawer_visuals) do + leftover = visual:try_insert_stack(leftover, true) + end + end + return leftover +end + +--[[ + Returns how much (count) of a stack can be inserted to a drawer slot. +]] +function drawers.drawer_can_insert_stack(pos, stack, visualid) + local visual = drawers.get_visual(pos, visualid) + if not visual then + return 0 + end + + return visual:can_insert_stack(stack) +end + +--[[ + Returns whether a stack can be (partially) inserted to any slot of a drawer. +]] +function drawers.drawer_can_insert_stack_from_tube(pos, node, stack, direction) + local drawer_visuals = drawers.drawer_visuals[core.hash_node_position(pos)] + if not drawer_visuals then + return false + end + + for _, visual in pairs(drawer_visuals) do + if visual:can_insert_stack(stack) > 0 then + return true + end + end + return false +end + +function drawers.drawer_take_item(pos, itemstack) + local drawer_visuals = drawers.drawer_visuals[core.hash_node_position(pos)] + + if not drawer_visuals then + return ItemStack("") + end + + -- check for max count + if itemstack:get_count() > itemstack:get_stack_max() then + itemstack:set_count(itemstack:get_stack_max()) + end + + for _, visual in pairs(drawer_visuals) do + if visual.itemName == itemstack:get_name() then + return visual:take_items(itemstack:get_count()) + end + end + + return ItemStack() +end + +--[[ + Returns the content of a drawer slot. +]] +function drawers.drawer_get_content(pos, visualid) + local drawer_meta = core.get_meta(pos) + + return { + name = drawer_meta:get_string("name" .. visualid), + count = drawer_meta:get_int("count" .. visualid), + maxCount = drawer_meta:get_int("max_count" .. visualid) + } +end + +function drawers.register_drawer(name, def) + def.description = def.description or S("Wooden") + def.drawtype = "nodebox" + def.node_box = {type = "fixed", fixed = drawers.node_box_simple} + def.collision_box = {type = "regular"} + def.selection_box = {type = "fixed", fixed = drawers.node_box_simple} + def.paramtype = "light" + def.paramtype2 = "facedir" + def.legacy_facedir_simple = true + def.groups = def.groups or {} + def.drawer_stack_max_factor = def.drawer_stack_max_factor or 24 + + -- events + def.on_construct = drawers.drawer_on_construct + def.on_destruct = drawers.drawer_on_destruct + def.on_dig = drawers.drawer_on_dig + def.allow_metadata_inventory_put = drawers.drawer_allow_metadata_inventory_put + def.allow_metadata_inventory_take = drawers.drawer_allow_metadata_inventory_put + def.on_metadata_inventory_put = drawers.add_drawer_upgrade + def.on_metadata_inventory_take = drawers.remove_drawer_upgrade + + if minetest.get_modpath("screwdriver") and screwdriver then + def.on_rotate = def.on_rotate or screwdriver.disallow + end + + if minetest.get_modpath("pipeworks") and pipeworks then + def.groups.tubedevice = 1 + def.groups.tubedevice_receiver = 1 + def.tube = def.tube or {} + def.tube.insert_object = def.tube.insert_object or + drawers.drawer_insert_object_from_tube + def.tube.can_insert = def.tube.can_insert or + drawers.drawer_can_insert_stack_from_tube + + def.tube.connect_sides = {left = 1, right = 1, back = 1, top = 1, + bottom = 1} + def.after_place_node = pipeworks.after_place + def.after_dig_node = pipeworks.after_dig + end + + local has_mesecons_mvps = minetest.get_modpath("mesecons_mvps") + + if drawers.enable_1x1 then + -- normal drawer 1x1 = 1 + local def1 = table.copy(def) + def1.description = S("@1 Drawer", def.description) + def1.tiles = def.tiles or def.tiles1 + def1.tiles1 = nil + def1.tiles2 = nil + def1.tiles4 = nil + def1.groups.drawer = 1 + core.register_node(name .. "1", def1) + core.register_alias(name, name .. "1") -- 1x1 drawer is the default one + if has_mesecons_mvps then + -- don't let drawers be moved by pistons, visual glitches and + -- possible duplication bugs occur otherwise + mesecon.register_mvps_stopper(name .. "1") + end + end + + if drawers.enable_1x2 then + -- 1x2 = 2 + local def2 = table.copy(def) + def2.description = S("@1 Drawers (1x2)", def.description) + def2.tiles = def.tiles2 + def2.tiles1 = nil + def2.tiles2 = nil + def2.tiles4 = nil + def2.groups.drawer = 2 + core.register_node(name .. "2", def2) + if has_mesecons_mvps then + mesecon.register_mvps_stopper(name .. "2") + end + end + + if drawers.enable_2x2 then + -- 2x2 = 4 + local def4 = table.copy(def) + def4.description = S("@1 Drawers (2x2)", def.description) + def4.tiles = def.tiles4 + def4.tiles1 = nil + def4.tiles2 = nil + def4.tiles4 = nil + def4.groups.drawer = 4 + core.register_node(name .. "4", def4) + if has_mesecons_mvps then + mesecon.register_mvps_stopper(name .. "4") + end + end + + if (not def.no_craft) and def.material then + if drawers.enable_1x1 then + core.register_craft({ + output = name .. "1", + recipe = { + {def.material, def.material, def.material}, + { "", drawers.CHEST_ITEMSTRING, "" }, + {def.material, def.material, def.material} + } + }) + end + if drawers.enable_1x2 then + core.register_craft({ + output = name .. "2 2", + recipe = { + {def.material, drawers.CHEST_ITEMSTRING, def.material}, + {def.material, def.material, def.material}, + {def.material, drawers.CHEST_ITEMSTRING, def.material} + } + }) + end + if drawers.enable_2x2 then + core.register_craft({ + output = name .. "4 4", + recipe = { + {drawers.CHEST_ITEMSTRING, def.material, drawers.CHEST_ITEMSTRING}, + { def.material, def.material, def.material }, + {drawers.CHEST_ITEMSTRING, def.material, drawers.CHEST_ITEMSTRING} + } + }) + end + end +end + +function drawers.register_drawer_upgrade(name, def) + def.groups = def.groups or {} + def.groups.drawer_upgrade = def.groups.drawer_upgrade or 100 + def.inventory_image = def.inventory_image or "drawers_upgrade_template.png" + def.stack_max = 1 + + local recipe_item = def.recipe_item or "air" + def.recipe_item = nil + + core.register_craftitem(name, def) + + if not def.no_craft then + core.register_craft({ + output = name, + recipe = { + {recipe_item, "group:stick", recipe_item}, + {"group:stick", "drawers:upgrade_template", "group:stick"}, + {recipe_item, "group:stick", recipe_item} + } + }) + end +end + diff --git a/mods/drawers/lua/controller.lua b/mods/drawers/lua/controller.lua new file mode 100644 index 00000000..e1175120 --- /dev/null +++ b/mods/drawers/lua/controller.lua @@ -0,0 +1,545 @@ +--[[ +Minetest Mod Storage Drawers - A Mod adding storage drawers + +Copyright (C) 2017-2020 Linus Jahn +Copyright (C) 2018 isaiah658 + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +]]-- + +--[[ The gist of how the drawers mod stores data is that there are entities +and the drawer node itself. The entities are needed to allow having multiple +drawers in one node. The entities and node each store metadata about the item +counts and such. It is necessary to change both at once otherwise in some cases +the entity values are used and in other cases the node metadata is used. + +The gist of how the controller works is this. The drawer controller scans the +adjacent tiles and puts the item names and other info such as coordinates and +the visualid of the entity in a table. That table is saved in the controllers +metadata. The table is used to help prevent needing to scan all the drawers to +deposit an item in certain situations. The table is only updated on an as needed +basis, not by a specific time/interval. Controllers that have no items will not +continue scanning drawers. ]]-- + +local S = minetest.get_translator('drawers') + +local default_loaded = core.get_modpath("default") and default +local mcl_loaded = core.get_modpath("mcl_core") and mcl_core +local pipeworks_loaded = core.get_modpath("pipeworks") and pipeworks +local digilines_loaded = core.get_modpath("digilines") and digilines +local techage_loaded = core.get_modpath("techage") and techage + +local function controller_formspec(pos) + local formspec = + "size[8,8.5]".. + drawers.gui_bg.. + drawers.gui_bg_img.. + drawers.gui_slots.. + "label[0,0;" .. S("Drawer Controller") .. "]" .. + "list[current_name;src;3.5,1.75;1,1;]".. + "list[current_player;main;0,4.25;8,1;]".. + "list[current_player;main;0,5.5;8,3;8]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]" + + if digilines_loaded and pipeworks_loaded then + formspec = formspec .. "field[1,3.5;4,1;digilineChannel;" .. S("Digiline Channel") .. ";${digilineChannel}]" + formspec = formspec .. "button_exit[5,3.2;2,1;saveChannel;" .. S("Save") .. "]" + end + + return formspec +end + +local function is_valid_drawer_index_slot(net_index, item_name) + return net_index and + net_index[item_name] and + net_index[item_name].drawer_pos and + net_index[item_name].drawer_pos.x and + net_index[item_name].drawer_pos.y and + net_index[item_name].drawer_pos.z and + net_index[item_name].visualid +end + +local function controller_index_slot(pos, visualid) + return { + drawer_pos = pos, + visualid = visualid + } +end + +local function compare_pos(pos1, pos2) + return pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z +end + +local function contains_pos(list, p) + for _,v in ipairs(list) do + if compare_pos(v, p) then + return true + end + end + return false +end + +-- iterator for iterating from 1 -> to +local function range(to) + local i = 0 + return function() + if i == to then + return nil + end + i = i + 1 + return i, i + end +end + +local function pos_in_range(pos1, pos2) + local diff = { + pos1.x - pos2.x, + pos1.y - pos2.y, + pos1.z - pos2.z + } + for _,v in ipairs(diff) do + if v < 0 then + v = v * -1 + end + if v > drawers.CONTROLLER_RANGE then + return false + end + end + return true +end + +local function add_drawer_to_inventory(controllerInventory, pos) + -- the number of slots is saved as drawer group + local slots = core.get_item_group(core.get_node(pos).name, "drawer") + if not slots then + return + end + + local meta = core.get_meta(pos) + if not meta then + return + end + + local i = 1 + while i <= slots do + -- nothing is appended in case the drawer has only one slot + local slot_id = "" + if slots ~= 1 then + slot_id = tostring(i) + end + + local item_id = meta:get_string("name" .. slot_id) + local drawer_meta_entity_infotext = meta:get_string("entity_infotext" .. slot_id) + + if item_id == "" and not controllerInventory["empty"] then + controllerInventory["empty"] = controller_index_slot(pos, slot_id) + elseif item_id ~= "" then + -- If we already indexed this item previously, check which drawer + -- has the most space and have that one be the one indexed + if controllerInventory[item_id] then + local content = drawers.drawer_get_content(controllerInventory[item_id].drawer_pos, controllerInventory[item_id].visualid) + local new_content = drawers.drawer_get_content(pos, slot_id) + + -- If the already indexed drawer has less space, we override the + -- table index for that item with the new drawer + if (new_content.maxCount - new_content.count) > (content.maxCount - content.count) then + controllerInventory[item_id] = controller_index_slot(pos, slot_id) + end + else + controllerInventory[item_id] = controller_index_slot(pos, slot_id) + end + end + + i = i + 1 + end +end + +local function find_connected_drawers(controller_pos, pos, foundPositions) + foundPositions = foundPositions or {} + pos = pos or controller_pos + + local newPositions = core.find_nodes_in_area( + {x = pos.x - 1, y = pos.y - 1, z = pos.z - 1}, + {x = pos.x + 1, y = pos.y + 1, z = pos.z + 1}, + {"group:drawer", "group:drawer_connector"} + ) + + for _,p in ipairs(newPositions) do + -- check that this node hasn't been scanned yet + if not compare_pos(pos, p) and not contains_pos(foundPositions, p) + and pos_in_range(controller_pos, pos) then + -- add new position + table.insert(foundPositions, p) + -- search for other drawers from the new pos + find_connected_drawers(controller_pos, p, foundPositions) + end + end + + return foundPositions +end + +local function index_drawers(pos) + --[[ + The pos parameter is the controllers position + + We store the item name as a string key and the value is a table with position x, + position y, position z, and visualid. Those are all strings as well with the + values assigned to them that way we don't need to worry about the ordering of + the table. The count and max count are not stored as those values have a high + potential of being outdated quickly. It's better to grab the values from the + drawer when needed so you know you are working with accurate numbers. + ]] + + local controllerInventory = {} + for _,drawerPos in ipairs(find_connected_drawers(pos)) do + add_drawer_to_inventory(controllerInventory, drawerPos) + end + + return controllerInventory +end + +--[[ + Returns a table of all stored itemstrings in the drawer network with their + drawer position and visualid. + + It uses the cached data, if possible, but if the itemstring is not contained + the network is reindexed. +]] +local function controller_get_drawer_index(pos, itemstring) + local meta = core.get_meta(pos) + + -- If the index has not been created, the item isn't in the index, the + -- item in the drawer is no longer the same item in the index, or the item + -- is in the index but it's full, run the index_drawers function. + local drawer_net_index = core.deserialize(meta:get_string("drawers_table_index")) + + -- If the index has not been created + -- If the item isn't in the index (or the index is corrupted) + if not is_valid_drawer_index_slot(drawer_net_index, itemstring) then + drawer_net_index = index_drawers(pos) + meta:set_string("drawers_table_index", core.serialize(drawer_net_index)) + + -- There is a valid entry in the index: check that the entry is still up-to-date + else + local content = drawers.drawer_get_content( + drawer_net_index[itemstring].drawer_pos, + drawer_net_index[itemstring].visualid) + + if content.name ~= itemstring or content.count >= content.maxCount then + drawer_net_index = index_drawers(pos) + meta:set_string("drawers_table_index", core.serialize(drawer_net_index)) + end + end + + return drawer_net_index +end + +local function controller_insert_to_drawers(pos, stack) + -- Inizialize metadata + local meta = core.get_meta(pos) + local inv = meta:get_inventory() + + local drawer_net_index = controller_get_drawer_index(pos, stack:get_name()) + + -- We check if there is a drawer with the item and it isn't full. We will + -- put the items we can into it. + if drawer_net_index[stack:get_name()] then + local drawer_pos = drawer_net_index[stack:get_name()]["drawer_pos"] + local visualid = drawer_net_index[stack:get_name()]["visualid"] + local content = drawers.drawer_get_content(drawer_pos, visualid) + + -- If the the item in the drawer is the same as the one we are trying to + -- store, the drawer is not full, and the drawer entity is loaded, we + -- will put the items in the drawer + if content.name == stack:get_name() and + content.count < content.maxCount and + drawers.drawer_visuals[core.hash_node_position(drawer_pos)] then + return drawers.drawer_insert_object(drawer_pos, stack, visualid) + end + elseif drawer_net_index["empty"] then + local drawer_pos = drawer_net_index["empty"]["drawer_pos"] + local visualid = drawer_net_index["empty"]["visualid"] + local content = drawers.drawer_get_content(drawer_pos, visualid) + + -- If the drawer is still empty and the drawer entity is loaded, we will + -- put the items in the drawer + if content.name == "" and drawers.drawer_visuals[core.hash_node_position(drawer_pos)] then + local leftover = drawers.drawer_insert_object(drawer_pos, stack, visualid) + + -- Add the item to the drawers table index and set the empty one to nil + drawer_net_index["empty"] = nil + drawer_net_index[stack:get_name()] = controller_index_slot(drawer_pos, visualid) + + -- Set the controller metadata + meta:set_string("drawers_table_index", core.serialize(drawer_net_index)) + + return leftover + end + end + + return stack +end + +local function controller_can_dig(pos, player) + local meta = core.get_meta(pos); + local inv = meta:get_inventory() + return inv:is_empty("src") +end + +local function controller_on_construct(pos) + local meta = core.get_meta(pos) + meta:set_string("drawers_table_index", "") + meta:set_string("formspec", controller_formspec(pos)) + + meta:get_inventory():set_size("src", 1) +end + +local function controller_on_blast(pos) + local drops = {} + default.get_inventory_drops(pos, "src", drops) + drops[#drops+1] = "drawers:controller" + core.remove_node(pos) + return drops +end + +local function controller_allow_metadata_inventory_put(pos, listname, index, stack, player) + if (player and core.is_protected(pos, player:get_player_name())) or listname ~= "src" then + return 0 + end + + local drawer_net_index = controller_get_drawer_index(pos, stack:get_name()) + + if drawer_net_index[stack:get_name()] then + local drawer = drawer_net_index[stack:get_name()] + + if drawers.drawer_get_content(drawer.drawer_pos, drawer.visualid).name == stack:get_name() then + return drawers.drawer_can_insert_stack(drawer.drawer_pos, stack, drawer["visualid"]) + end + end + + if drawer_net_index["empty"] then + local drawer = drawer_net_index["empty"] + + if drawers.drawer_get_content(drawer.drawer_pos, drawer.visualid).name == "" then + return drawers.drawer_can_insert_stack(drawer.drawer_pos, stack, drawer.visualid) + end + end + + return 0 +end + +local function controller_allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + local meta = core.get_meta(pos) + local inv = meta:get_inventory() + local stack = inv:get_stack(from_list, from_index) + return controller_allow_metadata_inventory_put(pos, to_list, to_index, stack, player) +end + +local function controller_allow_metadata_inventory_take(pos, listname, index, stack, player) + if core.is_protected(pos, player:get_player_name()) then + return 0 + end + return stack:get_count() +end + +local function controller_on_metadata_inventory_put(pos, listname, index, stack, player) + if listname ~= "src" then + return + end + + local inv = core.get_meta(pos):get_inventory() + + local complete_stack = inv:get_stack("src", 1) + local leftover = controller_insert_to_drawers(pos, complete_stack) + inv:set_stack("src", 1, leftover) +end + +local function controller_on_digiline_receive(pos, _, channel, msg) + local meta = core.get_meta(pos) + + if channel ~= meta:get_string("digilineChannel") then + return + end + + local item = ItemStack(msg) + local drawers_index = controller_get_drawer_index(pos, item:get_name()) + + if not drawers_index[item:get_name()] then + -- we can't do anything: the requested item doesn't exist + return + end + + local taken_stack = drawers.drawer_take_item( + drawers_index[item:get_name()]["drawer_pos"], item) + local dir = core.facedir_to_dir(core.get_node(pos).param2) + + -- prevent crash if taken_stack ended up with a nil value + if taken_stack then + pipeworks.tube_inject_item(pos, pos, dir, taken_stack:to_string()) + end +end + +local function controller_on_receive_fields(pos, formname, fields, sender) + if core.is_protected(pos, sender:get_player_name()) then + return + end + local meta = core.get_meta(pos) + if fields.saveChannel then + meta:set_string("digilineChannel", fields.digilineChannel) + end +end + +-- Registers the drawer controller +local function register_controller() + -- Set the controller definition using a table to allow for pipeworks and + -- potentially other mod support + local def = {} + + def.description = S("Drawer Controller") + def.drawtype = "nodebox" + def.node_box = { type = "fixed", fixed = drawers.node_box_simple } + def.collision_box = { type = "regular" } + def.selection_box = { type = "regular" } + def.paramtype = "light" + def.paramtype2 = "facedir" + def.legacy_facedir_simple = true + + -- add pipe connectors, if pipeworks is enabled + if pipeworks_loaded then + def.tiles = { + "drawers_controller_top.png^pipeworks_tube_connection_metallic.png", + "drawers_controller_top.png^pipeworks_tube_connection_metallic.png", + "drawers_controller_side.png^pipeworks_tube_connection_metallic.png", + "drawers_controller_side.png^pipeworks_tube_connection_metallic.png", + "drawers_controller_top.png^pipeworks_tube_connection_metallic.png", + "drawers_controller_front.png" + } + else + def.tiles = { + "drawers_controller_top.png", + "drawers_controller_top.png", + "drawers_controller_side.png", + "drawers_controller_side.png", + "drawers_controller_top.png", + "drawers_controller_front.png" + } + end + + -- MCL2 requires a few different groups and parameters that MTG does not + if mcl_loaded then + def.groups = { + pickaxey = 1, stone = 1, building_block = 1, material_stone = 1 + } + def._mcl_blast_resistance = 30 + def._mcl_hardness = 1.5 + else + def.groups = { + cracky = 3, level = 2 + } + end + + def.can_dig = controller_can_dig + def.on_construct = controller_on_construct + def.on_blast = controller_on_blast + def.on_receive_fields = controller_on_receive_fields + def.on_metadata_inventory_put = controller_on_metadata_inventory_put + + def.allow_metadata_inventory_put = controller_allow_metadata_inventory_put + def.allow_metadata_inventory_move = controller_allow_metadata_inventory_move + def.allow_metadata_inventory_take = controller_allow_metadata_inventory_take + + if pipeworks_loaded then + def.groups.tubedevice = 1 + def.groups.tubedevice_receiver = 1 + + def.tube = {} + def.tube.insert_object = function(pos, node, stack, tubedir) + return controller_insert_to_drawers(pos, stack) + end + + def.tube.can_insert = function(pos, node, stack, tubedir) + return controller_allow_metadata_inventory_put(pos, "src", nil, stack, nil) > 0 + end + + def.tube.connect_sides = { + left = 1, right = 1, back = 1, top = 1, bottom = 1 + } + + def.after_place_node = pipeworks.after_place + def.after_dig_node = pipeworks.after_dig + end + + if digilines_loaded and pipeworks_loaded then + def.digiline = { + receptor = {}, + effector = { + action = controller_on_digiline_receive + }, + } + end + + core.register_node("drawers:controller", def) + + if techage_loaded then + techage.register_node({"drawers:controller"}, { + on_push_item = function(pos, in_dir, stack) + return controller_insert_to_drawers(pos, stack) + end + }) + end +end + +-- register drawer controller +register_controller() + +if default_loaded then + core.register_craft({ + output = 'drawers:controller', + recipe = { + {'default:steel_ingot', 'default:diamond', 'default:steel_ingot'}, + {'default:tin_ingot', 'group:drawer', 'default:copper_ingot'}, + {'default:steel_ingot', 'default:diamond', 'default:steel_ingot'}, + } + }) +elseif mcl_loaded then + core.register_craft({ + output = 'drawers:controller', + recipe = { + {'mcl_core:iron_ingot', 'mcl_core:diamond', 'mcl_core:iron_ingot'}, + {'mcl_core:gold_ingot', 'group:drawer', 'mcl_core:gold_ingot'}, + {'mcl_core:iron_ingot', 'mcl_core:diamond', 'mcl_core:iron_ingot'}, + } + }) +else + -- Because the rest of the drawers mod doesn't have a hard depend on + -- default, I changed the recipe to have an alternative + core.register_craft({ + output = 'drawers:controller', + recipe = { + {'group:stone', 'group:stone', 'group:stone'}, + {'group:stone', 'group:drawer', 'group:stone'}, + {'group:stone', 'group:stone', 'group:stone'}, + } + }) +end + diff --git a/mods/drawers/lua/helpers.lua b/mods/drawers/lua/helpers.lua new file mode 100644 index 00000000..62eb7811 --- /dev/null +++ b/mods/drawers/lua/helpers.lua @@ -0,0 +1,286 @@ +--[[ +Minetest Mod Storage Drawers - A Mod adding storage drawers + +Copyright (C) 2017-2019 Linus Jahn +Copyright (C) 2016 Mango Tango + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +]] + +local S = minetest.get_translator('drawers') + +-- GUI +function drawers.get_upgrade_slots_bg(x,y) + local out = "" + for i = 0, 4, 1 do + out = out .."image["..x+i..","..y..";1,1;drawers_upgrade_slot_bg.png]" + end + return out +end + +function drawers.gen_info_text(basename, count, factor, stack_max) + local maxCount = stack_max * factor + local percent = count / maxCount * 100 + -- round the number (float -> int) + percent = math.floor(percent + 0.5) + + if count == 0 then + return S("@1 (@2% full)", basename, tostring(percent)) + else + return S("@1 @2 (@3% full)", tostring(count), basename, tostring(percent)) + end +end + +-- Get an image string from a tile definition +local function tile_to_image(tile, fallback_image) + if not tile then + return fallback_image + end + local tile_type = type(tile) + if tile_type == "string" then + return tile + end + assert(tile_type == "table", "Tile definition is not a string or table") + local image = tile.name or tile.image + assert(image, "Tile definition has no image file specified") + if tile.color then + local colorstr = core.colorspec_to_colorstring(tile.color) + if colorstr then + return image .. "^[multiply:" .. colorstr + end + end + return image +end + +function drawers.get_inv_image(name) + local texture = "blank.png" + local def = core.registered_items[name] + if not def then return end + + if def.inventory_image and #def.inventory_image > 0 then + texture = def.inventory_image + else + if not def.tiles then return texture end + local tiles = table.copy(def.tiles) + local top = tile_to_image(tiles[1]) + local left = tile_to_image(tiles[3], top) + local right = tile_to_image(tiles[5], left) + texture = core.inventorycube(top, left, right) + end + + return texture +end + +function drawers.spawn_visuals(pos) + local node = core.get_node(pos) + local ndef = core.registered_nodes[node.name] + local drawerType = ndef.groups.drawer + + -- data for the new visual + drawers.last_drawer_pos = pos + drawers.last_drawer_type = drawerType + + if drawerType == 1 then -- 1x1 drawer + drawers.last_visual_id = "" + drawers.last_texture = drawers.get_inv_image(core.get_meta(pos):get_string("name")) + + local bdir = core.facedir_to_dir(node.param2) + local fdir = vector.new(-bdir.x, 0, -bdir.z) + local pos2 = vector.add(pos, vector.multiply(fdir, 0.45)) + + local obj = core.add_entity(pos2, "drawers:visual") + if not obj then return end + + if bdir.x < 0 then obj:set_yaw(0.5 * math.pi) end + if bdir.z < 0 then obj:set_yaw(math.pi) end + if bdir.x > 0 then obj:set_yaw(1.5 * math.pi) end + + drawers.last_texture = nil + elseif drawerType == 2 then + local bdir = core.facedir_to_dir(node.param2) + + local fdir1 + local fdir2 + if node.param2 == 2 or node.param2 == 0 then + fdir1 = vector.new(-bdir.x, 0.5, -bdir.z) + fdir2 = vector.new(-bdir.x, -0.5, -bdir.z) + else + fdir1 = vector.new(-bdir.x, 0.5, -bdir.z) + fdir2 = vector.new(-bdir.x, -0.5, -bdir.z) + end + + local objs = {} + + drawers.last_visual_id = 1 + drawers.last_texture = drawers.get_inv_image(core.get_meta(pos):get_string("name1")) + local pos1 = vector.add(pos, vector.multiply(fdir1, 0.45)) + objs[1] = core.add_entity(pos1, "drawers:visual") + + drawers.last_visual_id = 2 + drawers.last_texture = drawers.get_inv_image(core.get_meta(pos):get_string("name2")) + local pos2 = vector.add(pos, vector.multiply(fdir2, 0.45)) + objs[2] = core.add_entity(pos2, "drawers:visual") + + for i,obj in pairs(objs) do + if bdir.x < 0 then obj:set_yaw(0.5 * math.pi) end + if bdir.z < 0 then obj:set_yaw(math.pi) end + if bdir.x > 0 then obj:set_yaw(1.5 * math.pi) end + end + else -- 2x2 drawer + local bdir = core.facedir_to_dir(node.param2) + + local fdir1 + local fdir2 + local fdir3 + local fdir4 + if node.param2 == 2 then + fdir1 = vector.new(-bdir.x + 0.5, 0.5, -bdir.z) + fdir2 = vector.new(-bdir.x - 0.5, 0.5, -bdir.z) + fdir3 = vector.new(-bdir.x + 0.5, -0.5, -bdir.z) + fdir4 = vector.new(-bdir.x - 0.5, -0.5, -bdir.z) + elseif node.param2 == 0 then + fdir1 = vector.new(-bdir.x - 0.5, 0.5, -bdir.z) + fdir2 = vector.new(-bdir.x + 0.5, 0.5, -bdir.z) + fdir3 = vector.new(-bdir.x - 0.5, -0.5, -bdir.z) + fdir4 = vector.new(-bdir.x + 0.5, -0.5, -bdir.z) + elseif node.param2 == 1 then + fdir1 = vector.new(-bdir.x, 0.5, -bdir.z + 0.5) + fdir2 = vector.new(-bdir.x, 0.5, -bdir.z - 0.5) + fdir3 = vector.new(-bdir.x, -0.5, -bdir.z + 0.5) + fdir4 = vector.new(-bdir.x, -0.5, -bdir.z - 0.5) + else + fdir1 = vector.new(-bdir.x, 0.5, -bdir.z - 0.5) + fdir2 = vector.new(-bdir.x, 0.5, -bdir.z + 0.5) + fdir3 = vector.new(-bdir.x, -0.5, -bdir.z - 0.5) + fdir4 = vector.new(-bdir.x, -0.5, -bdir.z + 0.5) + end + + local objs = {} + + drawers.last_visual_id = 1 + drawers.last_texture = drawers.get_inv_image(core.get_meta(pos):get_string("name1")) + local pos1 = vector.add(pos, vector.multiply(fdir1, 0.45)) + objs[1] = core.add_entity(pos1, "drawers:visual") + + drawers.last_visual_id = 2 + drawers.last_texture = drawers.get_inv_image(core.get_meta(pos):get_string("name2")) + local pos2 = vector.add(pos, vector.multiply(fdir2, 0.45)) + objs[2] = core.add_entity(pos2, "drawers:visual") + + drawers.last_visual_id = 3 + drawers.last_texture = drawers.get_inv_image(core.get_meta(pos):get_string("name3")) + local pos3 = vector.add(pos, vector.multiply(fdir3, 0.45)) + objs[3] = core.add_entity(pos3, "drawers:visual") + + drawers.last_visual_id = 4 + drawers.last_texture = drawers.get_inv_image(core.get_meta(pos):get_string("name4")) + local pos4 = vector.add(pos, vector.multiply(fdir4, 0.45)) + objs[4] = core.add_entity(pos4, "drawers:visual") + + + for i,obj in pairs(objs) do + if bdir.x < 0 then obj:set_yaw(0.5 * math.pi) end + if bdir.z < 0 then obj:set_yaw(math.pi) end + if bdir.x > 0 then obj:set_yaw(1.5 * math.pi) end + end + end +end + +function drawers.remove_visuals(pos) + local objs = core.get_objects_inside_radius(pos, 0.56) + if not objs then return end + + for _, obj in pairs(objs) do + if obj and obj:get_luaentity() and + obj:get_luaentity().name == "drawers:visual" then + obj:remove() + end + end +end + +--[[ + Returns the visual object for the visualid of the drawer at pos. + + visualid can be: "", "1", "2", ... or 1, 2, ... +]] +function drawers.get_visual(pos, visualid) + local drawer_visuals = drawers.drawer_visuals[core.hash_node_position(pos)] + if not drawer_visuals then + return nil + end + + -- not a real index (starts with 1) + local index = tonumber(visualid) + if visualid == "" then + index = 1 + end + + return drawer_visuals[index] +end + +function drawers.update_drawer_upgrades(pos) + local node = core.get_node(pos) + local ndef = core.registered_nodes[node.name] + local drawerType = ndef.groups.drawer + + -- default number of slots/stacks + local stackMaxFactor = ndef.drawer_stack_max_factor + + -- storage percent with all upgrades + local storagePercent = 100 + + -- get info of all upgrades + local inventory = core.get_meta(pos):get_inventory():get_list("upgrades") + for _,itemStack in pairs(inventory) do + local iname = itemStack:get_name() + local idef = core.registered_items[iname] + local addPercent = idef.groups.drawer_upgrade or 0 + + storagePercent = storagePercent + addPercent + end + + -- i.e.: 150% / 100 => 1.50 + stackMaxFactor = math.floor(stackMaxFactor * (storagePercent / 100)) + -- calculate stack_max factor for a single drawer + stackMaxFactor = stackMaxFactor / drawerType + + -- set the new stack max factor in all visuals + local drawer_visuals = drawers.drawer_visuals[core.hash_node_position(pos)] + if not drawer_visuals then return end + + for _,visual in pairs(drawer_visuals) do + visual:setStackMaxFactor(stackMaxFactor) + end +end + +function drawers.randomize_pos(pos) + local rndpos = table.copy(pos) + local x = math.random(-50, 50) * 0.01 + local z = math.random(-50, 50) * 0.01 + rndpos.x = rndpos.x + x + rndpos.y = rndpos.y + 0.25 + rndpos.z = rndpos.z + z + return rndpos +end + +function drawers.node_tiles_front_other(front, other) + return {other, other, other, other, other, front} +end diff --git a/mods/drawers/lua/visual.lua b/mods/drawers/lua/visual.lua new file mode 100644 index 00000000..a07446c2 --- /dev/null +++ b/mods/drawers/lua/visual.lua @@ -0,0 +1,463 @@ +--[[ +Minetest Mod Storage Drawers - A Mod adding storage drawers + +Copyright (C) 2017-2019 Linus Jahn + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +]] + +local S = minetest.get_translator('drawers') + +core.register_entity("drawers:visual", { + initial_properties = { + hp_max = 1, + physical = false, + collide_with_objects = false, + collisionbox = {-0.4374, -0.4374, 0, 0.4374, 0.4374, 0}, -- for param2 0, 2 + visual = "upright_sprite", -- "wielditem" for items without inv img? + visual_size = {x = 0.6, y = 0.6}, + textures = {"blank.png"}, + spritediv = {x = 1, y = 1}, + initial_sprite_basepos = {x = 0, y = 0}, + is_visible = true, + }, + + get_staticdata = function(self) + return core.serialize({ + drawer_posx = self.drawer_pos.x, + drawer_posy = self.drawer_pos.y, + drawer_posz = self.drawer_pos.z, + texture = self.texture, + drawerType = self.drawerType, + visualId = self.visualId + }) + end, + + on_activate = function(self, staticdata, dtime_s) + -- Restore data + local data = core.deserialize(staticdata) + if data then + self.drawer_pos = { + x = data.drawer_posx, + y = data.drawer_posy, + z = data.drawer_posz, + } + self.texture = data.texture + self.drawerType = data.drawerType or 1 + self.visualId = data.visualId or "" + + -- backwards compatibility + if self.texture == "drawers_empty.png" then + self.texture = "blank.png" + end + else + self.drawer_pos = drawers.last_drawer_pos + self.texture = drawers.last_texture or "blank.png" + self.visualId = drawers.last_visual_id + self.drawerType = drawers.last_drawer_type + end + + local node = minetest.get_node(self.object:get_pos()) + if core.get_item_group(node.name, "drawer") == 0 then + self.object:remove() + return + end + + -- add self to public drawer visuals + -- this is needed because there is no other way to get this class + -- only the underlying LuaEntitySAO + -- PLEASE contact me, if this is wrong + local vId = self.visualId + if vId == "" then vId = 1 end + local posstr = core.hash_node_position(self.drawer_pos) + if not drawers.drawer_visuals[posstr] then + drawers.drawer_visuals[posstr] = {[vId] = self} + else + drawers.drawer_visuals[posstr][vId] = self + end + + -- get meta + self.meta = core.get_meta(self.drawer_pos) + + -- collisionbox + node = core.get_node(self.drawer_pos) + local colbox + if self.drawerType ~= 2 then + if node.param2 == 1 or node.param2 == 3 then + colbox = {0, -0.4374, -0.4374, 0, 0.4374, 0.4374} + else + colbox = {-0.4374, -0.4374, 0, 0.4374, 0.4374, 0} -- for param2 = 0 or 2 + end + -- only half the size if it's a small drawer + if self.drawerType > 1 then + for i,j in pairs(colbox) do + colbox[i] = j * 0.5 + end + end + else + if node.param2 == 1 or node.param2 == 3 then + colbox = {0, -0.2187, -0.4374, 0, 0.2187, 0.4374} + else + colbox = {-0.4374, -0.2187, 0, 0.4374, 0.2187, 0} -- for param2 = 0 or 2 + end + end + + -- visual size + local visual_size = {x = 0.6, y = 0.6} + if self.drawerType >= 2 then + visual_size = {x = 0.3, y = 0.3} + end + + + -- drawer values + local vid = self.visualId + self.count = self.meta:get_int("count"..vid) + self.itemName = self.meta:get_string("name"..vid) + self.maxCount = self.meta:get_int("max_count"..vid) + self.itemStackMax = self.meta:get_int("base_stack_max"..vid) + self.stackMaxFactor = self.meta:get_int("stack_max_factor"..vid) + + + -- infotext + local infotext = self.meta:get_string("entity_infotext"..vid) .. "\n\n\n\n\n" + + self.object:set_properties({ + collisionbox = colbox, + infotext = infotext, + textures = {self.texture}, + visual_size = visual_size + }) + + -- make entity undestroyable + self.object:set_armor_groups({immortal = 1}) + end, + + on_rightclick = function(self, clicker) + if core.is_protected(self.drawer_pos, clicker:get_player_name()) then + core.record_protection_violation(self.drawer_pos, clicker:get_player_name()) + return + end + + -- used to check if we need to play a sound in the end + local inventoryChanged = false + + -- When the player uses the drawer with their bare hand all + -- stacks from the inventory will be added to the drawer. + if self.itemName ~= "" and + clicker:get_wielded_item():get_name() == "" and + not clicker:get_player_control().sneak then + -- try to insert all items from inventory + local i = 0 + local inv = clicker:get_inventory() + + while i <= inv:get_size("main") do + -- set current stack to leftover of insertion + local leftover = self.try_insert_stack( + self, + inv:get_stack("main", i), + true + ) + + -- check if something was added + if leftover:get_count() < inv:get_stack("main", i):get_count() then + inventoryChanged = true + end + + -- set new stack + inv:set_stack("main", i, leftover) + i = i + 1 + end + else + -- try to insert wielded item only + local leftover = self.try_insert_stack( + self, + clicker:get_wielded_item(), + not clicker:get_player_control().sneak + ) + + -- check if something was added + if clicker:get_wielded_item():get_count() > leftover:get_count() then + inventoryChanged = true + end + -- set the leftover as new wielded item for the player + clicker:set_wielded_item(leftover) + end + + if inventoryChanged then + self:play_interact_sound() + end + end, + + on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir) + local node = minetest.get_node(self.object:get_pos()) + + if core.get_item_group(node.name, "drawer") == 0 then + self.object:remove() + return + end + local add_stack = not puncher:get_player_control().sneak + if core.is_protected(self.drawer_pos, puncher:get_player_name()) then + core.record_protection_violation(self.drawer_pos, puncher:get_player_name()) + return + end + local inv = puncher:get_inventory() + if inv == nil then + return + end + local spaceChecker = ItemStack(self.itemName) + if add_stack then + spaceChecker:set_count(spaceChecker:get_stack_max()) + end + if not inv:room_for_item("main", spaceChecker) then + return + end + + local stack + if add_stack then + stack = self:take_stack() + else + stack = self:take_items(1) + end + + if stack ~= nil then + -- add removed stack to player's inventory + inv:add_item("main", stack) + + -- play the interact sound + self:play_interact_sound() + end + end, + + take_items = function(self, removeCount) + local meta = core.get_meta(self.drawer_pos) + + if self.count <= 0 then + return + end + + if removeCount > self.count then + removeCount = self.count + end + + local stack = ItemStack(self.itemName) + stack:set_count(removeCount) + + -- update the drawer count + self.count = self.count - removeCount + + self:updateInfotext() + self:updateTexture() + self:saveMetaData() + + -- return the stack that was removed from the drawer + return stack + end, + + take_stack = function(self) + return self:take_items(ItemStack(self.itemName):get_stack_max()) + end, + + can_insert_stack = function(self, stack) + if stack:get_name() == "" or stack:get_count() <= 0 then + return 0 + end + + -- don't allow unstackable stacks + if self.itemName == "" and stack:get_stack_max() ~= 1 then + return stack:get_count() + end + + if self.itemName ~= stack:get_name() then + return 0 + end + + if (self.count + stack:get_count()) <= self.maxCount then + return stack:get_count() + end + return self.maxCount - self.count + end, + + try_insert_stack = function(self, itemstack, insert_all) + local stackCount = itemstack:get_count() + local stackName = itemstack:get_name() + + local insertCount = self:can_insert_stack(itemstack) + + if insertCount == 0 then + return itemstack + end + + -- only add one, if player holding sneak key + if not insert_all then + insertCount = 1 + end + + -- in case the drawer was empty, initialize count, itemName, maxCount + if self.itemName == "" then + self.count = 0 + self.itemName = itemstack:get_name() + self.maxCount = itemstack:get_stack_max() * self.stackMaxFactor + self.itemStackMax = itemstack:get_stack_max() + end + + -- update everything + self.count = self.count + insertCount + self:updateInfotext() + self:updateTexture() + self:saveMetaData() + + -- return leftover + itemstack:take_item(insertCount) + if itemstack:get_count() == 0 then + return ItemStack("") + end + return itemstack + end, + + updateInfotext = function(self) + local itemDescription = "" + if core.registered_items[self.itemName] then + itemDescription = core.registered_items[self.itemName].description + end + + if self.count <= 0 then + self.itemName = "" + self.meta:set_string("name"..self.visualId, self.itemName) + self.texture = "blank.png" + itemDescription = S("Empty") + end + + local infotext = drawers.gen_info_text(itemDescription, + self.count, self.stackMaxFactor, self.itemStackMax) + self.meta:set_string("entity_infotext"..self.visualId, infotext) + + self.object:set_properties({ + infotext = infotext .. "\n\n\n\n\n" + }) + end, + + updateTexture = function(self) + -- texture + self.texture = drawers.get_inv_image(self.itemName) + + self.object:set_properties({ + textures = {self.texture} + }) + end, + + dropStack = function(self, itemStack) + -- print warning if dropping higher stack counts than allowed + if itemStack:get_count() > itemStack:get_stack_max() then + core.log("warning", "[drawers] Dropping item stack with higher count than allowed") + end + -- find a position containing air + local dropPos = core.find_node_near(self.drawer_pos, 1, {"air"}, false) + -- if no pos found then drop on the top of the drawer + if not dropPos then + dropPos = self.object:get_pos() + dropPos.y = dropPos.y + 1 + end + -- drop the item stack + core.item_drop(itemStack, nil, dropPos) + end, + + dropItemOverload = function(self) + -- drop stacks until there are no more items than allowed + while self.count > self.maxCount do + -- remove the overflow + local removeCount = self.count - self.maxCount + -- if this is too much for a single stack, only take the + -- stack limit + if removeCount > self.itemStackMax then + removeCount = self.itemStackMax + end + -- remove this count from the drawer + self.count = self.count - removeCount + -- create a new item stack having the size of the remove + -- count + local stack = ItemStack(self.itemName) + stack:set_count(removeCount) + print(stack:to_string()) + -- drop the stack + self:dropStack(stack) + end + end, + + setStackMaxFactor = function(self, stackMaxFactor) + self.stackMaxFactor = stackMaxFactor + self.maxCount = self.stackMaxFactor * self.itemStackMax + + -- will drop possible overflowing items + self:dropItemOverload() + self:updateInfotext() + self:saveMetaData() + end, + + play_interact_sound = function(self) + core.sound_play("drawers_interact", { + pos = self.object:get_pos(), + max_hear_distance = 6, + gain = 2.0 + }) + end, + + saveMetaData = function(self, meta) + self.meta:set_int("count"..self.visualId, self.count) + self.meta:set_string("name"..self.visualId, self.itemName) + self.meta:set_int("max_count"..self.visualId, self.maxCount) + self.meta:set_int("base_stack_max"..self.visualId, self.itemStackMax) + self.meta:set_int("stack_max_factor"..self.visualId, self.stackMaxFactor) + end +}) + +core.register_lbm({ + name = "drawers:restore_visual", + nodenames = {"group:drawer"}, + run_at_every_load = true, + action = function(pos, node) + local meta = core.get_meta(pos) + -- create drawer upgrade inventory + meta:get_inventory():set_size("upgrades", 5) + -- set the formspec + meta:set_string("formspec", drawers.drawer_formspec) + + -- count the drawer visuals + local drawerType = core.registered_nodes[node.name].groups.drawer + local foundVisuals = 0 + local objs = core.get_objects_inside_radius(pos, 0.56) + if objs then + for _, obj in pairs(objs) do + if obj and obj:get_luaentity() and + obj:get_luaentity().name == "drawers:visual" then + foundVisuals = foundVisuals + 1 + end + end + end + -- if all drawer visuals were found, return + if foundVisuals == drawerType then + return + end + + -- not enough visuals found, remove existing and create new ones + drawers.remove_visuals(pos) + drawers.spawn_visuals(pos) + end +}) diff --git a/mods/drawers/mod.conf b/mods/drawers/mod.conf new file mode 100644 index 00000000..49690695 --- /dev/null +++ b/mods/drawers/mod.conf @@ -0,0 +1,7 @@ +name = drawers +description = Storage Drawers - A Mod adding simple storages for items and blocks, showing the item's inventory image in the front. +optional_depends = default, mcl_core, screwdriver, pipeworks, moreores, digilines, mesecons_mvps, techage +min_minetest_version = 5.0 +release = 16765 +author = LNJ +title = Storage Drawers diff --git a/mods/drawers/screenshot.png b/mods/drawers/screenshot.png new file mode 100644 index 00000000..eacf7278 Binary files /dev/null and b/mods/drawers/screenshot.png differ diff --git a/mods/drawers/settingtypes.txt b/mods/drawers/settingtypes.txt new file mode 100644 index 00000000..e69de29b diff --git a/mods/drawers/sounds/drawers_interact.1.ogg b/mods/drawers/sounds/drawers_interact.1.ogg new file mode 100644 index 00000000..4e50559b Binary files /dev/null and b/mods/drawers/sounds/drawers_interact.1.ogg differ diff --git a/mods/drawers/sounds/drawers_interact.2.ogg b/mods/drawers/sounds/drawers_interact.2.ogg new file mode 100644 index 00000000..572c5950 Binary files /dev/null and b/mods/drawers/sounds/drawers_interact.2.ogg differ diff --git a/mods/drawers/textures/drawers_acacia_wood.png b/mods/drawers/textures/drawers_acacia_wood.png new file mode 100644 index 00000000..71f8a2c6 Binary files /dev/null and b/mods/drawers/textures/drawers_acacia_wood.png differ diff --git a/mods/drawers/textures/drawers_acacia_wood_front_1.png b/mods/drawers/textures/drawers_acacia_wood_front_1.png new file mode 100644 index 00000000..fbeb7a3f Binary files /dev/null and b/mods/drawers/textures/drawers_acacia_wood_front_1.png differ diff --git a/mods/drawers/textures/drawers_acacia_wood_front_2.png b/mods/drawers/textures/drawers_acacia_wood_front_2.png new file mode 100644 index 00000000..1268b266 Binary files /dev/null and b/mods/drawers/textures/drawers_acacia_wood_front_2.png differ diff --git a/mods/drawers/textures/drawers_acacia_wood_front_4.png b/mods/drawers/textures/drawers_acacia_wood_front_4.png new file mode 100644 index 00000000..3e2c0647 Binary files /dev/null and b/mods/drawers/textures/drawers_acacia_wood_front_4.png differ diff --git a/mods/drawers/textures/drawers_acacia_wood_mcl.png b/mods/drawers/textures/drawers_acacia_wood_mcl.png new file mode 100644 index 00000000..71f8a2c6 Binary files /dev/null and b/mods/drawers/textures/drawers_acacia_wood_mcl.png differ diff --git a/mods/drawers/textures/drawers_acacia_wood_mcl_front_1.png b/mods/drawers/textures/drawers_acacia_wood_mcl_front_1.png new file mode 100644 index 00000000..fbeb7a3f Binary files /dev/null and b/mods/drawers/textures/drawers_acacia_wood_mcl_front_1.png differ diff --git a/mods/drawers/textures/drawers_acacia_wood_mcl_front_2.png b/mods/drawers/textures/drawers_acacia_wood_mcl_front_2.png new file mode 100644 index 00000000..1268b266 Binary files /dev/null and b/mods/drawers/textures/drawers_acacia_wood_mcl_front_2.png differ diff --git a/mods/drawers/textures/drawers_acacia_wood_mcl_front_4.png b/mods/drawers/textures/drawers_acacia_wood_mcl_front_4.png new file mode 100644 index 00000000..3e2c0647 Binary files /dev/null and b/mods/drawers/textures/drawers_acacia_wood_mcl_front_4.png differ diff --git a/mods/drawers/textures/drawers_aspen_wood.png b/mods/drawers/textures/drawers_aspen_wood.png new file mode 100644 index 00000000..a3ca3142 Binary files /dev/null and b/mods/drawers/textures/drawers_aspen_wood.png differ diff --git a/mods/drawers/textures/drawers_aspen_wood_front_1.png b/mods/drawers/textures/drawers_aspen_wood_front_1.png new file mode 100644 index 00000000..68d16084 Binary files /dev/null and b/mods/drawers/textures/drawers_aspen_wood_front_1.png differ diff --git a/mods/drawers/textures/drawers_aspen_wood_front_2.png b/mods/drawers/textures/drawers_aspen_wood_front_2.png new file mode 100644 index 00000000..164858ed Binary files /dev/null and b/mods/drawers/textures/drawers_aspen_wood_front_2.png differ diff --git a/mods/drawers/textures/drawers_aspen_wood_front_4.png b/mods/drawers/textures/drawers_aspen_wood_front_4.png new file mode 100644 index 00000000..cd6ac961 Binary files /dev/null and b/mods/drawers/textures/drawers_aspen_wood_front_4.png differ diff --git a/mods/drawers/textures/drawers_birch_wood.png b/mods/drawers/textures/drawers_birch_wood.png new file mode 100644 index 00000000..7756f07f Binary files /dev/null and b/mods/drawers/textures/drawers_birch_wood.png differ diff --git a/mods/drawers/textures/drawers_birch_wood_front_1.png b/mods/drawers/textures/drawers_birch_wood_front_1.png new file mode 100644 index 00000000..d571633e Binary files /dev/null and b/mods/drawers/textures/drawers_birch_wood_front_1.png differ diff --git a/mods/drawers/textures/drawers_birch_wood_front_2.png b/mods/drawers/textures/drawers_birch_wood_front_2.png new file mode 100644 index 00000000..9a874e1c Binary files /dev/null and b/mods/drawers/textures/drawers_birch_wood_front_2.png differ diff --git a/mods/drawers/textures/drawers_birch_wood_front_4.png b/mods/drawers/textures/drawers_birch_wood_front_4.png new file mode 100644 index 00000000..83cf1850 Binary files /dev/null and b/mods/drawers/textures/drawers_birch_wood_front_4.png differ diff --git a/mods/drawers/textures/drawers_controller_front.png b/mods/drawers/textures/drawers_controller_front.png new file mode 100644 index 00000000..37240900 Binary files /dev/null and b/mods/drawers/textures/drawers_controller_front.png differ diff --git a/mods/drawers/textures/drawers_controller_side.png b/mods/drawers/textures/drawers_controller_side.png new file mode 100644 index 00000000..8645f6e2 Binary files /dev/null and b/mods/drawers/textures/drawers_controller_side.png differ diff --git a/mods/drawers/textures/drawers_controller_top.png b/mods/drawers/textures/drawers_controller_top.png new file mode 100644 index 00000000..774bc6a2 Binary files /dev/null and b/mods/drawers/textures/drawers_controller_top.png differ diff --git a/mods/drawers/textures/drawers_dark_oak_wood.png b/mods/drawers/textures/drawers_dark_oak_wood.png new file mode 100644 index 00000000..f4e45adf Binary files /dev/null and b/mods/drawers/textures/drawers_dark_oak_wood.png differ diff --git a/mods/drawers/textures/drawers_dark_oak_wood_front_1.png b/mods/drawers/textures/drawers_dark_oak_wood_front_1.png new file mode 100644 index 00000000..349985cf Binary files /dev/null and b/mods/drawers/textures/drawers_dark_oak_wood_front_1.png differ diff --git a/mods/drawers/textures/drawers_dark_oak_wood_front_2.png b/mods/drawers/textures/drawers_dark_oak_wood_front_2.png new file mode 100644 index 00000000..45f6d78f Binary files /dev/null and b/mods/drawers/textures/drawers_dark_oak_wood_front_2.png differ diff --git a/mods/drawers/textures/drawers_dark_oak_wood_front_4.png b/mods/drawers/textures/drawers_dark_oak_wood_front_4.png new file mode 100644 index 00000000..68480919 Binary files /dev/null and b/mods/drawers/textures/drawers_dark_oak_wood_front_4.png differ diff --git a/mods/drawers/textures/drawers_junglewood.png b/mods/drawers/textures/drawers_junglewood.png new file mode 100644 index 00000000..f4e45adf Binary files /dev/null and b/mods/drawers/textures/drawers_junglewood.png differ diff --git a/mods/drawers/textures/drawers_junglewood_front_1.png b/mods/drawers/textures/drawers_junglewood_front_1.png new file mode 100644 index 00000000..349985cf Binary files /dev/null and b/mods/drawers/textures/drawers_junglewood_front_1.png differ diff --git a/mods/drawers/textures/drawers_junglewood_front_2.png b/mods/drawers/textures/drawers_junglewood_front_2.png new file mode 100644 index 00000000..45f6d78f Binary files /dev/null and b/mods/drawers/textures/drawers_junglewood_front_2.png differ diff --git a/mods/drawers/textures/drawers_junglewood_front_4.png b/mods/drawers/textures/drawers_junglewood_front_4.png new file mode 100644 index 00000000..68480919 Binary files /dev/null and b/mods/drawers/textures/drawers_junglewood_front_4.png differ diff --git a/mods/drawers/textures/drawers_junglewood_mcl.png b/mods/drawers/textures/drawers_junglewood_mcl.png new file mode 100644 index 00000000..84f08e38 Binary files /dev/null and b/mods/drawers/textures/drawers_junglewood_mcl.png differ diff --git a/mods/drawers/textures/drawers_junglewood_mcl_front_1.png b/mods/drawers/textures/drawers_junglewood_mcl_front_1.png new file mode 100644 index 00000000..dcbcd504 Binary files /dev/null and b/mods/drawers/textures/drawers_junglewood_mcl_front_1.png differ diff --git a/mods/drawers/textures/drawers_junglewood_mcl_front_2.png b/mods/drawers/textures/drawers_junglewood_mcl_front_2.png new file mode 100644 index 00000000..df0e6837 Binary files /dev/null and b/mods/drawers/textures/drawers_junglewood_mcl_front_2.png differ diff --git a/mods/drawers/textures/drawers_junglewood_mcl_front_4.png b/mods/drawers/textures/drawers_junglewood_mcl_front_4.png new file mode 100644 index 00000000..06f71bb6 Binary files /dev/null and b/mods/drawers/textures/drawers_junglewood_mcl_front_4.png differ diff --git a/mods/drawers/textures/drawers_oak_wood.png b/mods/drawers/textures/drawers_oak_wood.png new file mode 100644 index 00000000..350fe01d Binary files /dev/null and b/mods/drawers/textures/drawers_oak_wood.png differ diff --git a/mods/drawers/textures/drawers_oak_wood_front_1.png b/mods/drawers/textures/drawers_oak_wood_front_1.png new file mode 100644 index 00000000..d4f22770 Binary files /dev/null and b/mods/drawers/textures/drawers_oak_wood_front_1.png differ diff --git a/mods/drawers/textures/drawers_oak_wood_front_2.png b/mods/drawers/textures/drawers_oak_wood_front_2.png new file mode 100644 index 00000000..2835d1a8 Binary files /dev/null and b/mods/drawers/textures/drawers_oak_wood_front_2.png differ diff --git a/mods/drawers/textures/drawers_oak_wood_front_4.png b/mods/drawers/textures/drawers_oak_wood_front_4.png new file mode 100644 index 00000000..b6f63ab4 Binary files /dev/null and b/mods/drawers/textures/drawers_oak_wood_front_4.png differ diff --git a/mods/drawers/textures/drawers_pine_wood.png b/mods/drawers/textures/drawers_pine_wood.png new file mode 100644 index 00000000..9f2a6dea Binary files /dev/null and b/mods/drawers/textures/drawers_pine_wood.png differ diff --git a/mods/drawers/textures/drawers_pine_wood_front_1.png b/mods/drawers/textures/drawers_pine_wood_front_1.png new file mode 100644 index 00000000..51a0edf1 Binary files /dev/null and b/mods/drawers/textures/drawers_pine_wood_front_1.png differ diff --git a/mods/drawers/textures/drawers_pine_wood_front_2.png b/mods/drawers/textures/drawers_pine_wood_front_2.png new file mode 100644 index 00000000..a6cee5c1 Binary files /dev/null and b/mods/drawers/textures/drawers_pine_wood_front_2.png differ diff --git a/mods/drawers/textures/drawers_pine_wood_front_4.png b/mods/drawers/textures/drawers_pine_wood_front_4.png new file mode 100644 index 00000000..f15313ef Binary files /dev/null and b/mods/drawers/textures/drawers_pine_wood_front_4.png differ diff --git a/mods/drawers/textures/drawers_spruce_wood.png b/mods/drawers/textures/drawers_spruce_wood.png new file mode 100644 index 00000000..7abf2c45 Binary files /dev/null and b/mods/drawers/textures/drawers_spruce_wood.png differ diff --git a/mods/drawers/textures/drawers_spruce_wood_front_1.png b/mods/drawers/textures/drawers_spruce_wood_front_1.png new file mode 100644 index 00000000..87f0f573 Binary files /dev/null and b/mods/drawers/textures/drawers_spruce_wood_front_1.png differ diff --git a/mods/drawers/textures/drawers_spruce_wood_front_2.png b/mods/drawers/textures/drawers_spruce_wood_front_2.png new file mode 100644 index 00000000..19ecb454 Binary files /dev/null and b/mods/drawers/textures/drawers_spruce_wood_front_2.png differ diff --git a/mods/drawers/textures/drawers_spruce_wood_front_4.png b/mods/drawers/textures/drawers_spruce_wood_front_4.png new file mode 100644 index 00000000..ea77052e Binary files /dev/null and b/mods/drawers/textures/drawers_spruce_wood_front_4.png differ diff --git a/mods/drawers/textures/drawers_trim.png b/mods/drawers/textures/drawers_trim.png new file mode 100644 index 00000000..ab398c47 Binary files /dev/null and b/mods/drawers/textures/drawers_trim.png differ diff --git a/mods/drawers/textures/drawers_upgrade_diamond.png b/mods/drawers/textures/drawers_upgrade_diamond.png new file mode 100644 index 00000000..13ecd60f Binary files /dev/null and b/mods/drawers/textures/drawers_upgrade_diamond.png differ diff --git a/mods/drawers/textures/drawers_upgrade_emerald.png b/mods/drawers/textures/drawers_upgrade_emerald.png new file mode 100644 index 00000000..35fb6ffe Binary files /dev/null and b/mods/drawers/textures/drawers_upgrade_emerald.png differ diff --git a/mods/drawers/textures/drawers_upgrade_gold.png b/mods/drawers/textures/drawers_upgrade_gold.png new file mode 100644 index 00000000..be74af02 Binary files /dev/null and b/mods/drawers/textures/drawers_upgrade_gold.png differ diff --git a/mods/drawers/textures/drawers_upgrade_iron.png b/mods/drawers/textures/drawers_upgrade_iron.png new file mode 100644 index 00000000..25c74df5 Binary files /dev/null and b/mods/drawers/textures/drawers_upgrade_iron.png differ diff --git a/mods/drawers/textures/drawers_upgrade_mithril.png b/mods/drawers/textures/drawers_upgrade_mithril.png new file mode 100644 index 00000000..dcdd13eb Binary files /dev/null and b/mods/drawers/textures/drawers_upgrade_mithril.png differ diff --git a/mods/drawers/textures/drawers_upgrade_obsidian.png b/mods/drawers/textures/drawers_upgrade_obsidian.png new file mode 100644 index 00000000..8c241280 Binary files /dev/null and b/mods/drawers/textures/drawers_upgrade_obsidian.png differ diff --git a/mods/drawers/textures/drawers_upgrade_slot_bg.png b/mods/drawers/textures/drawers_upgrade_slot_bg.png new file mode 100644 index 00000000..97bad37d Binary files /dev/null and b/mods/drawers/textures/drawers_upgrade_slot_bg.png differ diff --git a/mods/drawers/textures/drawers_upgrade_steel.png b/mods/drawers/textures/drawers_upgrade_steel.png new file mode 100644 index 00000000..25c74df5 Binary files /dev/null and b/mods/drawers/textures/drawers_upgrade_steel.png differ diff --git a/mods/drawers/textures/drawers_upgrade_template.png b/mods/drawers/textures/drawers_upgrade_template.png new file mode 100644 index 00000000..d6cf9b3e Binary files /dev/null and b/mods/drawers/textures/drawers_upgrade_template.png differ diff --git a/mods/drawers/textures/drawers_wood.png b/mods/drawers/textures/drawers_wood.png new file mode 100644 index 00000000..350fe01d Binary files /dev/null and b/mods/drawers/textures/drawers_wood.png differ diff --git a/mods/drawers/textures/drawers_wood_front_1.png b/mods/drawers/textures/drawers_wood_front_1.png new file mode 100644 index 00000000..d4f22770 Binary files /dev/null and b/mods/drawers/textures/drawers_wood_front_1.png differ diff --git a/mods/drawers/textures/drawers_wood_front_2.png b/mods/drawers/textures/drawers_wood_front_2.png new file mode 100644 index 00000000..2835d1a8 Binary files /dev/null and b/mods/drawers/textures/drawers_wood_front_2.png differ diff --git a/mods/drawers/textures/drawers_wood_front_4.png b/mods/drawers/textures/drawers_wood_front_4.png new file mode 100644 index 00000000..b6f63ab4 Binary files /dev/null and b/mods/drawers/textures/drawers_wood_front_4.png differ diff --git a/mods/farming/.gitignore b/mods/farming/.gitignore new file mode 100644 index 00000000..3e88fa7e --- /dev/null +++ b/mods/farming/.gitignore @@ -0,0 +1 @@ +farming.conf diff --git a/mods/farming/README.md b/mods/farming/README.md index ec4143e1..a8508243 100644 --- a/mods/farming/README.md +++ b/mods/farming/README.md @@ -217,7 +217,7 @@ on an older map are enabled and growing properly. ### Changelog: -- 1.49 - Added {eatable=1} groups to food items with the value giving HP when eaten, improved mineclone support, separated foods from crop files., hoes can deal damage. +- 1.49 - Added {eatable=1} groups to food items with the value giving HP when eaten, improved mineclone support, separated foods from crop files, hoes can deal damage. Add weed and weed bale (with setting to disable weed growth). - 1.48 - added 'farming_use_utensils' setting to enable/disable utensils in recipes, added mayonnaise (thx felfa), added gingerbread man, Added MineClone2 compatibility - 1.47 - Now blueberries can make blue dye, tweak soil types to work better with older 0.4.x clients and add spanish translation (thx mckaygerhard), add trellis setting to registered_crops and fix pea and soy crop names (thx nixnoxus), add strawberries if ethereal mod not active, added asparagus; spinach; eggplant (thx Atlante for new textures), Sugar Cube - 1.46 - Added min/max default light settings, added lettuce and blackberries with food items (thanks OgelGames), added soya, vanilla and sunflowers (thanks Felfa), added tofu, added salt crystals (thanks gorlock) diff --git a/mods/farming/compatibility.lua b/mods/farming/compatibility.lua index 6895326e..06da9bdf 100644 --- a/mods/farming/compatibility.lua +++ b/mods/farming/compatibility.lua @@ -34,12 +34,9 @@ else sunlight_propagates = true, walkable = false, selection_box = { - type = "fixed", - fixed = {-0.2, -0.5, -0.2, 0.2, 0.2, 0.2} - }, - groups = { - food_banana = 1, fleshy = 3, dig_immediate = 3 + type = "fixed", fixed = {-0.2, -0.5, -0.2, 0.2, 0.2, 0.2} }, + groups = {food_banana = 1, fleshy = 3, dig_immediate = 3}, is_ground_content = false, on_use = minetest.item_eat(2), sounds = farming.node_sound_leaves_defaults() @@ -101,12 +98,9 @@ else sunlight_propagates = true, walkable = false, selection_box = { - type = "fixed", - fixed = {-0.2, -0.3, -0.2, 0.2, 0.2, 0.2} - }, - groups = { - food_orange = 1, fleshy = 3, dig_immediate = 3, flammable = 2 + type = "fixed", fixed = {-0.2, -0.3, -0.2, 0.2, 0.2, 0.2} }, + groups = {food_orange = 1, fleshy = 3, dig_immediate = 3, flammable = 2}, is_ground_content = false, on_use = minetest.item_eat(4), sounds = farming.node_sound_leaves_defaults() @@ -165,7 +159,3 @@ alias("farming_plus:tomato_1", "farming:tomato_2") alias("farming_plus:tomato_2", "farming:tomato_4") alias("farming_plus:tomato_3", "farming:tomato_6") alias("farming_plus:tomato", "farming:tomato_8") - --- Weeds - -alias("farming:weed", "default:grass_2") diff --git a/mods/farming/crops/artichoke.lua b/mods/farming/crops/artichoke.lua index 43e8d9dc..edf497a0 100644 --- a/mods/farming/crops/artichoke.lua +++ b/mods/farming/crops/artichoke.lua @@ -55,6 +55,11 @@ minetest.register_node("farming:artichoke_3", table.copy(def)) -- stage 4 def.tiles = {"farming_artichoke_4.png"} +def.drop = { + items = { + {items = {"farming:artichoke"}, rarity = 1} + } +} minetest.register_node("farming:artichoke_4", table.copy(def)) -- stage 5 (final) @@ -81,4 +86,22 @@ farming.registered_plants["farming:artichoke"] = { } -- mapgen -farming.register_decoration("artichoke",5) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:grove_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.artichoke, + spread = {x = 100, y = 100, z = 100}, + seed = 123, + octaves = 3, + persist = 0.6 + }, + y_min = 1, y_max = 13, + decoration = "farming:artichoke_4", + spawn_by = "group:tree", num_spawn_by = 1 +}) diff --git a/mods/farming/crops/asparagus.lua b/mods/farming/crops/asparagus.lua index 6f31f00d..cc9f3efd 100644 --- a/mods/farming/crops/asparagus.lua +++ b/mods/farming/crops/asparagus.lua @@ -59,7 +59,7 @@ minetest.register_node("farming:asparagus_3", table.copy(def)) def.tiles = {"farming_asparagus_4.png"} def.drop = { items = { - {items = {"farming:asparagus"}, rarity = 2} + {items = {"farming:asparagus"}, rarity = 1} } } minetest.register_node("farming:asparagus_4", table.copy(def)) @@ -71,8 +71,8 @@ def.groups.growing = nil def.selection_box = farming.select_final def.drop = { items = { - {items = {"farming:asparagus"}, rarity = 1}, - {items = {"farming:asparagus 2"}, rarity = 2} + {items = {"farming:asparagus 2"}, rarity = 1}, + {items = {"farming:asparagus"}, rarity = 2} } } minetest.register_node("farming:asparagus_5", table.copy(def)) @@ -88,4 +88,21 @@ farming.registered_plants["farming:asparagus"] = { } -- mapgen -farming.register_decoration("asparagus",5) + +minetest.register_decoration({ + name = "farming:asparagus_5", + deco_type = "simple", + place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.asparagus, + spread = {x = 100, y = 100, z = 100}, + seed = 234, + octaves = 3, + persist = 0.6 + }, + y_min = 8, y_max = 32, + decoration = "farming:asparagus_4", + param2 = 3 +}) diff --git a/mods/farming/crops/barley.lua b/mods/farming/crops/barley.lua index ca654565..f82e0a9a 100644 --- a/mods/farming/crops/barley.lua +++ b/mods/farming/crops/barley.lua @@ -116,10 +116,10 @@ def.groups.growing = nil def.selection_box = farming.select_final def.drop = { items = { - {items = {"farming:barley"}, rarity = 1}, - {items = {"farming:barley"}, rarity = 3}, - {items = {"farming:seed_barley"}, rarity = 1}, - {items = {"farming:seed_barley"}, rarity = 3} + {items = {"farming:barley 2"}, rarity = 1}, + {items = {"farming:barley"}, rarity = 2}, + {items = {"farming:seed_barley 2"}, rarity = 1}, + {items = {"farming:seed_barley"}, rarity = 2} } } minetest.register_node("farming:barley_8", table.copy(def)) diff --git a/mods/farming/crops/beans.lua b/mods/farming/crops/beans.lua index 78a1513b..1bb9f623 100644 --- a/mods/farming/crops/beans.lua +++ b/mods/farming/crops/beans.lua @@ -190,8 +190,8 @@ def.drop = { items = { {items = {"farming:beanpole"}, rarity = 1}, {items = {"farming:beans 3"}, rarity = 1}, - {items = {"farming:beans 2"}, rarity = 2}, - {items = {"farming:beans 2"}, rarity = 3} + {items = {"farming:beans"}, rarity = 2}, + {items = {"farming:beans"}, rarity = 3} } } minetest.register_node("farming:beanpole_5", table.copy(def)) @@ -234,4 +234,19 @@ minetest.register_node("farming:beanbush", { }) -- mapgen -farming.register_decoration("beans",5,"farming:beanbush") + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.beans, + spread = {x = 100, y = 100, z = 100}, + seed = 345, + octaves = 3, + persist = 0.6 + }, + y_min = 18, y_max = 38, + decoration = "farming:beanbush" +}) diff --git a/mods/farming/crops/beetroot.lua b/mods/farming/crops/beetroot.lua index 6804c29d..43ffdf46 100644 --- a/mods/farming/crops/beetroot.lua +++ b/mods/farming/crops/beetroot.lua @@ -64,11 +64,10 @@ def.tiles = {"farming_beetroot_5.png"} def.groups.growing = nil def.selection_box = farming.select_final def.drop = { - max_items = 4, items = { - {items = {"farming:beetroot"}, rarity = 1}, + items = { + {items = {"farming:beetroot 2"}, rarity = 1}, {items = {"farming:beetroot"}, rarity = 2}, - {items = {"farming:beetroot"}, rarity = 3}, - {items = {"farming:beetroot"}, rarity = 4} + {items = {"farming:beetroot"}, rarity = 3} } } minetest.register_node("farming:beetroot_5", table.copy(def)) @@ -84,4 +83,25 @@ farming.registered_plants["farming:beetroot"] = { } -- mapgen -farming.register_decoration("beetroot",5) + +local spawn_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"} + +if farming.eth then + spawn_on = {"ethereal:prairie_dirt"} +end + +minetest.register_decoration({ + deco_type = "simple", + place_on = spawn_on, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.beetroot, + spread = {x = 100, y = 100, z = 100}, + seed = 456, + octaves = 3, + persist = 0.6 + }, + y_min = 1, y_max = 20, + decoration = "farming:beetroot_5" +}) diff --git a/mods/farming/crops/blackberry.lua b/mods/farming/crops/blackberry.lua index e9d63bd4..de61f8d3 100644 --- a/mods/farming/crops/blackberry.lua +++ b/mods/farming/crops/blackberry.lua @@ -61,9 +61,9 @@ def.groups.growing = nil def.selection_box = farming.select_final def.drop = { items = { - {items = {'farming:blackberry 2'}, rarity = 1}, - {items = {'farming:blackberry'}, rarity = 2}, - {items = {'farming:blackberry'}, rarity = 3}, + {items = {"farming:blackberry 2"}, rarity = 1}, + {items = {"farming:blackberry"}, rarity = 2}, + {items = {"farming:blackberry"}, rarity = 3}, } } minetest.register_node("farming:blackberry_4", table.copy(def)) @@ -79,4 +79,21 @@ farming.registered_plants["farming:blackberry"] = { } -- mapgen -farming.register_decoration("blackberry",4) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.blackberry, + spread = {x = 100, y = 100, z = 100}, + seed = 567, + octaves = 3, + persist = 0.6 + }, + y_min = 3, y_max = 20, + decoration = "farming:blackberry_4" +}) diff --git a/mods/farming/crops/blueberry.lua b/mods/farming/crops/blueberry.lua index d37b0a0c..f4f3b3a2 100644 --- a/mods/farming/crops/blueberry.lua +++ b/mods/farming/crops/blueberry.lua @@ -78,4 +78,21 @@ farming.registered_plants["farming:blueberries"] = { } -- mapgen -farming.register_decoration("blueberry",4) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.blueberry, + spread = {x = 100, y = 100, z = 100}, + seed = 678, + octaves = 3, + persist = 0.6 + }, + y_min = 3, y_max = 15, + decoration = "farming:blueberry_4" +}) diff --git a/mods/farming/crops/cabbage.lua b/mods/farming/crops/cabbage.lua index 1d24d853..884dacfd 100644 --- a/mods/farming/crops/cabbage.lua +++ b/mods/farming/crops/cabbage.lua @@ -68,9 +68,9 @@ def.tiles = {"farming_cabbage_6.png"} def.groups.growing = nil def.selection_box = farming.select_final def.drop = { - max_items = 2, items = { + items = { {items = {"farming:cabbage 2"}, rarity = 1}, - {items = {"farming:cabbage 1"}, rarity = 2} + {items = {"farming:cabbage"}, rarity = 3} } } minetest.register_node("farming:cabbage_6", table.copy(def)) @@ -86,4 +86,19 @@ farming.registered_plants["farming:cabbage"] = { } -- mapgen -farming.register_decoration("cabbage",6) + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.cabbage, + spread = {x = 100, y = 100, z = 100}, + seed = 789, + octaves = 3, + persist = 0.6 + }, + y_min = 2, y_max = 15, + decoration = "farming:cabbage_6" +}) diff --git a/mods/farming/crops/carrot.lua b/mods/farming/crops/carrot.lua index 6b1c65d2..c0feb912 100644 --- a/mods/farming/crops/carrot.lua +++ b/mods/farming/crops/carrot.lua @@ -77,7 +77,7 @@ def.tiles = {"farming_carrot_7.png"} def.drop = { items = { {items = {"farming:carrot"}, rarity = 1}, - {items = {"farming:carrot 2"}, rarity = 3} + {items = {"farming:carrot"}, rarity = 3} } } minetest.register_node("farming:carrot_7", table.copy(def)) @@ -90,7 +90,8 @@ def.selection_box = farming.select_final def.drop = { items = { {items = {"farming:carrot 2"}, rarity = 1}, - {items = {"farming:carrot 3"}, rarity = 2} + {items = {"farming:carrot"}, rarity = 2}, + {items = {"farming:carrot"}, rarity = 3}, } } minetest.register_node("farming:carrot_8", table.copy(def)) @@ -106,4 +107,21 @@ farming.registered_plants["farming:carrot"] = { } -- mapgen -farming.register_decoration("carrot",8) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.carrot, + spread = {x = 100, y = 100, z = 100}, + seed = 890, + octaves = 3, + persist = 0.6 + }, + y_min = 1, y_max = 30, + decoration = "farming:carrot_7" +}) diff --git a/mods/farming/crops/chili.lua b/mods/farming/crops/chili.lua index a875fa94..b42956cb 100644 --- a/mods/farming/crops/chili.lua +++ b/mods/farming/crops/chili.lua @@ -80,8 +80,10 @@ def.groups.growing = nil def.selection_box = farming.select_final def.drop = { items = { - {items = {"farming:chili_pepper 3"}, rarity = 1}, - {items = {"farming:chili_pepper 2"}, rarity = 2} + {items = {"farming:chili_pepper 2"}, rarity = 1}, + {items = {"farming:chili_pepper"}, rarity = 2}, + {items = {"farming:chili_pepper"}, rarity = 3}, + {items = {"farming:chili_pepper"}, rarity = 4} } } minetest.register_node("farming:chili_8", table.copy(def)) @@ -97,4 +99,23 @@ farming.registered_plants["farming:chili_pepper"] = { } -- mapgen -farming.register_decoration("chili",8) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "default:dirt_with_rainforest_litter", + "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.chili, + spread = {x = 100, y = 100, z = 100}, + seed = 901, + octaves = 3, + persist = 0.6 + }, + y_min = 5, y_max = 45, + decoration = "farming:chili_8", + spawn_by = "group:tree", num_spawn_by = 1 +}) diff --git a/mods/farming/crops/cocoa.lua b/mods/farming/crops/cocoa.lua index ee1cfce4..b1adc278 100644 --- a/mods/farming/crops/cocoa.lua +++ b/mods/farming/crops/cocoa.lua @@ -113,7 +113,7 @@ minetest.register_node("farming:cocoa_2", table.copy(def)) def.tiles = {"farming_cocoa_3.png"} def.drop = { items = { - {items = {"farming:cocoa_beans_raw 1"}, rarity = 1} + {items = {"farming:cocoa_beans_raw"}, rarity = 1} } } minetest.register_node("farming:cocoa_3", table.copy(def)) @@ -126,8 +126,8 @@ def.growth_check = nil def.drop = { items = { {items = {"farming:cocoa_beans_raw 2"}, rarity = 1}, - {items = {"farming:cocoa_beans_raw 1"}, rarity = 2}, - {items = {"farming:cocoa_beans_raw 1"}, rarity = 4} + {items = {"farming:cocoa_beans_raw"}, rarity = 2}, + {items = {"farming:cocoa_beans_raw"}, rarity = 3} } } minetest.register_node("farming:cocoa_4", table.copy(def)) diff --git a/mods/farming/crops/coffee.lua b/mods/farming/crops/coffee.lua index 6b9f024b..124aa5e3 100644 --- a/mods/farming/crops/coffee.lua +++ b/mods/farming/crops/coffee.lua @@ -62,8 +62,8 @@ def.selection_box = farming.select_final def.drop = { items = { {items = {"farming:coffee_beans 2"}, rarity = 1}, - {items = {"farming:coffee_beans 2"}, rarity = 2}, - {items = {"farming:coffee_beans 2"}, rarity = 3} + {items = {"farming:coffee_beans"}, rarity = 2}, + {items = {"farming:coffee_beans"}, rarity = 3} } } minetest.register_node("farming:coffee_5", table.copy(def)) diff --git a/mods/farming/crops/corn.lua b/mods/farming/crops/corn.lua index 7dcbbb24..4876925e 100644 --- a/mods/farming/crops/corn.lua +++ b/mods/farming/crops/corn.lua @@ -79,7 +79,6 @@ def.tiles = {"farming_corn_7.png"} def.drop = { items = { {items = {"farming:corn"}, rarity = 1}, - {items = {"farming:corn"}, rarity = 2}, {items = {"farming:corn"}, rarity = 3} } } @@ -93,8 +92,8 @@ def.selection_box = farming.select_final def.drop = { items = { {items = {"farming:corn 2"}, rarity = 1}, - {items = {"farming:corn 2"}, rarity = 2}, - {items = {"farming:corn 2"}, rarity = 2} + {items = {"farming:corn"}, rarity = 2}, + {items = {"farming:corn"}, rarity = 3} } } minetest.register_node("farming:corn_8", table.copy(def)) diff --git a/mods/farming/crops/cotton.lua b/mods/farming/crops/cotton.lua index 13e170fa..8531ef23 100644 --- a/mods/farming/crops/cotton.lua +++ b/mods/farming/crops/cotton.lua @@ -93,12 +93,6 @@ minetest.register_node("farming:cotton_5", table.copy(def)) -- stage 6 def.tiles = {"farming_cotton_6.png"} -def.drop = { - items = { - {items = {"farming:cotton"}, rarity = 1}, - {items = {"farming:cotton"}, rarity = 2} - } -} minetest.register_node("farming:cotton_6", table.copy(def)) -- stage 7 @@ -106,10 +100,8 @@ minetest.register_node("farming:cotton_6", table.copy(def)) def.tiles = {"farming_cotton_7.png"} def.drop = { items = { - {items = {"farming:cotton"}, rarity = 1}, {items = {"farming:cotton"}, rarity = 2}, - {items = {"farming:seed_cotton"}, rarity = 1}, - {items = {"farming:seed_cotton"}, rarity = 2} + {items = {"farming:seed_cotton"}, rarity = 1} } } minetest.register_node("farming:cotton_7", table.copy(def)) @@ -171,4 +163,37 @@ minetest.register_node("farming:cotton_wild", { }) -- mapgen -farming.register_decoration("cotton",8) + +local spawn_on = { + "default:dry_dirt_with_dry_grass", "default:dirt_with_dry_grass", + "mcl_core:dirt_with_grass" +} + +if farming.mapgen == "v6" then + spawn_on = {"default:dirt_with_grass"} +end + +minetest.register_decoration({ + name = "farming:cotton_wild", + deco_type = "simple", + place_on = spawn_on, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.cotton, + spread = {x = 100, y = 100, z = 100}, + seed = 4242, + octaves = 3, + persist = 0.6 + }, + y_min = 1, y_max = 120, + decoration = "farming:cotton_wild" +}) + +--[[ Cotton using api +farming.register_plant("farming:cotton", { + description = "Cotton seed", + inventory_image = "farming_cotton_seed.png", + groups = {flammable = 2}, + steps = 8, +})]] diff --git a/mods/farming/crops/cucumber.lua b/mods/farming/crops/cucumber.lua index d37ec42f..c6cf1eb9 100644 --- a/mods/farming/crops/cucumber.lua +++ b/mods/farming/crops/cucumber.lua @@ -63,7 +63,7 @@ def.selection_box = farming.select_final def.drop = { items = { {items = {"farming:cucumber 2"}, rarity = 1}, - {items = {"farming:cucumber 2"}, rarity = 2} + {items = {"farming:cucumber"}, rarity = 2} } } minetest.register_node("farming:cucumber_4", table.copy(def)) @@ -79,4 +79,22 @@ farming.registered_plants["farming:cucumber"] = { } -- mapgen -farming.register_decoration("cucumber",4) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.cucumber, + spread = {x = 100, y = 100, z = 100}, + seed = 245, + octaves = 3, + persist = 0.6 + }, + y_min = 1, y_max = 20, + decoration = "farming:cucumber_4", + spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1 +}) diff --git a/mods/farming/crops/eggplant.lua b/mods/farming/crops/eggplant.lua index 6e60259f..0794f636 100644 --- a/mods/farming/crops/eggplant.lua +++ b/mods/farming/crops/eggplant.lua @@ -67,7 +67,7 @@ def.selection_box = farming.select_final def.drop = { items = { {items = {"farming:eggplant 2"}, rarity = 1}, - {items = {"farming:eggplant 2"}, rarity = 2} + {items = {"farming:eggplant"}, rarity = 2} } } minetest.register_node("farming:eggplant_4", table.copy(def)) @@ -83,4 +83,20 @@ farming.registered_plants["farming:eggplant"] = { } -- mapgen -farming.register_decoration("eggplant",4) + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.eggplant, + spread = {x = 100, y = 100, z = 100}, + seed = 356, + octaves = 3, + persist = 0.6 + }, + y_min = 1, y_max = 40, + decoration = "farming:eggplant_3", + param2 = 3 +}) diff --git a/mods/farming/crops/garlic.lua b/mods/farming/crops/garlic.lua index 58af259c..f552d3ec 100644 --- a/mods/farming/crops/garlic.lua +++ b/mods/farming/crops/garlic.lua @@ -63,9 +63,9 @@ def.groups.growing = nil def.selection_box = farming.select_final def.drop = { items = { - {items = {"farming:garlic 3"}, rarity = 1}, + {items = {"farming:garlic 2"}, rarity = 1}, {items = {"farming:garlic"}, rarity = 2}, - {items = {"farming:garlic"}, rarity = 5} + {items = {"farming:garlic"}, rarity = 3} } } minetest.register_node("farming:garlic_5", table.copy(def)) @@ -81,4 +81,23 @@ farming.registered_plants["farming:garlic"] = { } -- mapgen -farming.register_decoration("garlic",5) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt", + "default:dirt_with_rainforest_litter" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.garlic, + spread = {x = 100, y = 100, z = 100}, + seed = 467, + octaves = 3, + persist = 0.6 + }, + y_min = 3, y_max = 45, + decoration = "farming:garlic_5", + spawn_by = "group:tree", num_spawn_by = 1 +}) diff --git a/mods/farming/crops/ginger.lua b/mods/farming/crops/ginger.lua index dfab19a3..2f845a29 100644 --- a/mods/farming/crops/ginger.lua +++ b/mods/farming/crops/ginger.lua @@ -66,7 +66,8 @@ def.selection_box = farming.select_final def.drop = { items = { {items = {"farming:ginger 2"}, rarity = 1}, - {items = {"farming:ginger 2"}, rarity = 2} + {items = {"farming:ginger"}, rarity = 2}, + {items = {"farming:ginger"}, rarity = 3} } } minetest.register_node("farming:ginger_4", table.copy(def)) @@ -82,4 +83,24 @@ farming.registered_plants["farming:ginger"] = { } -- mapgen -farming.register_decoration("ginger",5) + +minetest.register_decoration({ + name = "farming:ginger_4", + deco_type = "simple", + place_on = { + "default:dirt_with_rainforest_litter", "mcl_core:dirt_with_grass", + "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.ginger, + spread = {x = 100, y = 100, z = 100}, + seed = 999, + octaves = 3, + persist = 0.6 + }, + y_min = 1, y_max = 80, + decoration = "farming:ginger_3", + param2 = 3 +}) diff --git a/mods/farming/crops/grapes.lua b/mods/farming/crops/grapes.lua index f94b1439..cc5b6c89 100644 --- a/mods/farming/crops/grapes.lua +++ b/mods/farming/crops/grapes.lua @@ -202,9 +202,10 @@ def.selection_box = farming.select_final def.drop = { items = { {items = {"farming:trellis"}, rarity = 1}, - {items = {"farming:grapes 3"}, rarity = 1}, - {items = {"farming:grapes 1"}, rarity = 2}, - {items = {"farming:grapes 1"}, rarity = 3} + {items = {"farming:grapes 2"}, rarity = 1}, + {items = {"farming:grapes"}, rarity = 2}, + {items = {"farming:grapes"}, rarity = 3}, + {items = {"farming:grapes"}, rarity = 4} } } minetest.register_node("farming:grapes_8", table.copy(def)) @@ -232,9 +233,9 @@ minetest.register_node("farming:grapebush", { sunlight_propagates = true, drop = { items = { - {items = {"farming:grapes 1"}, rarity = 1}, - {items = {"farming:grapes 1"}, rarity = 2}, - {items = {"farming:grapes 1"}, rarity = 3} + {items = {"farming:grapes"}, rarity = 1}, + {items = {"farming:grapes"}, rarity = 2}, + {items = {"farming:grapes"}, rarity = 3} } }, selection_box = farming.select, @@ -247,4 +248,21 @@ minetest.register_node("farming:grapebush", { }) -- mapgen -farming.register_decoration("grapes",8,"farming:grapebush") + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.grapes, + spread = {x = 100, y = 100, z = 100}, + seed = 578, + octaves = 3, + persist = 0.6 + }, + y_min = 25, y_max = 50, + decoration = "farming:grapebush" +}) diff --git a/mods/farming/crops/hemp.lua b/mods/farming/crops/hemp.lua index 1ab9c998..15c1ea0f 100644 --- a/mods/farming/crops/hemp.lua +++ b/mods/farming/crops/hemp.lua @@ -118,7 +118,7 @@ def.drop = { items = { {items = {"farming:hemp_leaf 2"}, rarity = 1}, {items = {"farming:hemp_leaf"}, rarity = 2}, - {items = {"farming:seed_hemp"}, rarity = 1}, + {items = {"farming:seed_hemp 2"}, rarity = 1}, {items = {"farming:seed_hemp"}, rarity = 2} } } @@ -135,4 +135,23 @@ farming.registered_plants["farming:hemp"] = { } -- mapgen -farming.register_decoration("hemp",7) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "default:dirt_with_rainforest_litter", + "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.hemp, + spread = {x = 100, y = 100, z = 100}, + seed = 420, + octaves = 3, + persist = 0.6 + }, + y_min = 3, y_max = 45, + decoration = "farming:hemp_7", + spawn_by = "group:tree", num_spawn_by = 1 +}) diff --git a/mods/farming/crops/lettuce.lua b/mods/farming/crops/lettuce.lua index f0ff998c..649a0b4f 100644 --- a/mods/farming/crops/lettuce.lua +++ b/mods/farming/crops/lettuce.lua @@ -64,7 +64,7 @@ def.selection_box = farming.select_final def.drop = { items = { {items = {"farming:lettuce 2"}, rarity = 1}, - {items = {"farming:lettuce 1"}, rarity = 2} + {items = {"farming:lettuce"}, rarity = 3} } } minetest.register_node("farming:lettuce_5", table.copy(def)) @@ -80,4 +80,21 @@ farming.registered_plants["farming:lettuce"] = { } -- mapgen -farming.register_decoration("lettuce",5) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.lettuce, + spread = {x = 100, y = 100, z = 100}, + seed = 689, + octaves = 3, + persist = 0.6 + }, + y_min = 5, y_max = 35, + decoration = "farming:lettuce_5" +}) diff --git a/mods/farming/crops/melon.lua b/mods/farming/crops/melon.lua index c21e40d2..83d4451e 100644 --- a/mods/farming/crops/melon.lua +++ b/mods/farming/crops/melon.lua @@ -105,4 +105,22 @@ farming.registered_plants["farming:melon"] = { -- mapgen -farming.register_decoration("melon",8) +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "default:dirt_with_dry_grass", + "default:dirt_with_rainforest_litter", "mcl_core:dirt_with_grass" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.melon, + spread = {x = 100, y = 100, z = 100}, + seed = 790, + octaves = 3, + persist = 0.6 + }, + y_min = 1, y_max = 3, + decoration = "farming:melon_8", + spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1 +}) diff --git a/mods/farming/crops/mint.lua b/mods/farming/crops/mint.lua index ac875946..decaaefb 100644 --- a/mods/farming/crops/mint.lua +++ b/mods/farming/crops/mint.lua @@ -82,9 +82,9 @@ def.selection_box = farming.select_final def.drop = { items = { {items = {"farming:mint_leaf 2"}, rarity = 1}, - {items = {"farming:mint_leaf 2"}, rarity = 2}, - {items = {"farming:seed_mint 1"}, rarity = 1}, - {items = {"farming:seed_mint 2"}, rarity = 2} + {items = {"farming:mint_leaf"}, rarity = 2}, + {items = {"farming:seed_mint 2"}, rarity = 1}, + {items = {"farming:seed_mint"}, rarity = 2} } } minetest.register_node("farming:mint_4", table.copy(def)) @@ -100,4 +100,23 @@ farming.registered_plants["farming:mint"] = { } -- mapgen -farming.register_decoration("mint",4) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "default:dirt_with_coniferous_litter", + "mcl_core:dirt_with_grass", "ethereal:bamboo_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.mint, + spread = {x = 100, y = 100, z = 100}, + seed = 801, + octaves = 3, + persist = 0.6 + }, + y_min = 1, y_max = 75, + decoration = "farming:mint_4", + spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1 +}) diff --git a/mods/farming/crops/onion.lua b/mods/farming/crops/onion.lua index 7473464e..78ec214b 100644 --- a/mods/farming/crops/onion.lua +++ b/mods/farming/crops/onion.lua @@ -72,12 +72,10 @@ def.tiles = {"crops_onion_plant_5.png"} def.groups.growing = nil def.selection_box = farming.select_final def.drop = { - max_items = 5, items = { - {items = {"farming:onion"}, rarity = 1}, - {items = {"farming:onion"}, rarity = 1}, + items = { + {items = {"farming:onion 2"}, rarity = 1}, {items = {"farming:onion"}, rarity = 2}, - {items = {"farming:onion"}, rarity = 2}, - {items = {"farming:onion"}, rarity = 5} + {items = {"farming:onion"}, rarity = 4} } } minetest.register_node("farming:onion_5", table.copy(def)) @@ -93,4 +91,21 @@ farming.registered_plants["farming:onion"] = { } -- mapgen -farming.register_decoration("onion",5) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.onion, + spread = {x = 100, y = 100, z = 100}, + seed = 912, + octaves = 3, + persist = 0.6 + }, + y_min = 5, y_max = 28, + decoration = "farming:onion_5" +}) diff --git a/mods/farming/crops/parsley.lua b/mods/farming/crops/parsley.lua index 6c7a2d16..b63b96a3 100644 --- a/mods/farming/crops/parsley.lua +++ b/mods/farming/crops/parsley.lua @@ -72,4 +72,22 @@ farming.registered_plants["farming:parsley"] = { } -- mapgen -farming.register_decoration("parsley",5) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt", + "ethereal:grove_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.parsley, + spread = {x = 100, y = 100, z = 100}, + seed = 23, + octaves = 3, + persist = 0.6 + }, + y_min = 10, y_max = 40, + decoration = "farming:parsley_3" +}) diff --git a/mods/farming/crops/peas.lua b/mods/farming/crops/peas.lua index 85605a7f..fe61ef28 100644 --- a/mods/farming/crops/peas.lua +++ b/mods/farming/crops/peas.lua @@ -71,11 +71,10 @@ def.tiles = {"farming_pea_5.png"} def.groups.growing = nil def.selection_box = farming.select_final def.drop = { - max_items = 5, items = { - {items = {"farming:pea_pod"}, rarity = 1}, + items = { + {items = {"farming:pea_pod 2"}, rarity = 1}, {items = {"farming:pea_pod"}, rarity = 2}, - {items = {"farming:pea_pod"}, rarity = 3}, - {items = {"farming:pea_pod"}, rarity = 5} + {items = {"farming:pea_pod"}, rarity = 3} } } minetest.register_node("farming:pea_5", table.copy(def)) @@ -91,4 +90,21 @@ farming.registered_plants["farming:pea_pod"] = { } -- mapgen -farming.register_decoration("pea",5) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.peas, + spread = {x = 100, y = 100, z = 100}, + seed = 132, + octaves = 3, + persist = 0.6 + }, + y_min = 25, y_max = 55, + decoration = "farming:pea_5" +}) diff --git a/mods/farming/crops/pepper.lua b/mods/farming/crops/pepper.lua index a5cf9021..d09d372e 100644 --- a/mods/farming/crops/pepper.lua +++ b/mods/farming/crops/pepper.lua @@ -107,7 +107,7 @@ minetest.register_node("farming:pepper_4", table.copy(def)) def.tiles = {"crops_pepper_plant_5.png"} def.selection_box = farming.select_final def.drop = { - max_items = 2, items = { + items = { {items = {"farming:pepper 2"}, rarity = 1}, {items = {"farming:pepper"}, rarity = 2}, {items = {"farming:pepper"}, rarity = 3} @@ -119,7 +119,7 @@ minetest.register_node("farming:pepper_5", table.copy(def)) def.tiles = {"crops_pepper_plant_6.png"} def.drop = { - max_items = 2, items = { + items = { {items = {"farming:pepper_yellow 2"}, rarity = 1}, {items = {"farming:pepper_yellow"}, rarity = 2}, {items = {"farming:pepper_yellow"}, rarity = 3} @@ -132,7 +132,7 @@ minetest.register_node("farming:pepper_6", table.copy(def)) def.tiles = {"crops_pepper_plant_7.png"} def.groups.growing = nil def.drop = { - max_items = 2, items = { + items = { {items = {"farming:pepper_red 2"}, rarity = 1}, {items = {"farming:pepper_red"}, rarity = 2}, {items = {"farming:pepper_red"}, rarity = 3} @@ -147,8 +147,27 @@ farming.registered_plants["farming:pepper"] = { seed = "farming:peppercorn", minlight = farming.min_light, maxlight = farming.max_light, - steps = 7 + steps = 5 } -- mapgen -farming.register_decoration("pepper",7) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "default:dirt_with_rainforest_litter", + "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.pepper, + spread = {x = 100, y = 100, z = 100}, + seed = 243, + octaves = 3, + persist = 0.6 + }, + y_min = 5, y_max = 35, + decoration = {"farming:pepper_5", "farming:pepper_6", "farming:pepper_7"}, + spawn_by = "group:tree", num_spawn_by = 1 +}) diff --git a/mods/farming/crops/pineapple.lua b/mods/farming/crops/pineapple.lua index 26c329fd..9a633f8f 100644 --- a/mods/farming/crops/pineapple.lua +++ b/mods/farming/crops/pineapple.lua @@ -100,7 +100,7 @@ def.selection_box = farming.select_final def.drop = { items = { {items = {"farming:pineapple"}, rarity = 1}, - {items = {"farming:pineapple"}, rarity = 2} + {items = {"farming:pineapple"}, rarity = 3} } } minetest.register_node("farming:pineapple_8", table.copy(def)) @@ -116,4 +116,28 @@ farming.registered_plants["farming:pineapple"] = { } -- mapgen -farming.register_decoration("pineapple",8) + +local spawn_on = { + "default:dirt_with_dry_grass", "default:dry_dirt_with_dry_grass", + "mcl_core:dirt_with_grass" +} + +if farming.mapgen == "v6" then + spawn_on = {"default:dirt_with_grass"} +end + +minetest.register_decoration({ + deco_type = "simple", + place_on = spawn_on, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.pineapple, + spread = {x = 100, y = 100, z = 100}, + seed = 354, + octaves = 3, + persist = 0.6 + }, + y_min = 11, y_max = 30, + decoration = "farming:pineapple_8" +}) diff --git a/mods/farming/crops/potato.lua b/mods/farming/crops/potato.lua index 77caeeae..6d654446 100644 --- a/mods/farming/crops/potato.lua +++ b/mods/farming/crops/potato.lua @@ -83,7 +83,8 @@ def.selection_box = farming.select_final def.drop = { items = { {items = {"farming:potato 2"}, rarity = 1}, - {items = {"farming:potato 3"}, rarity = 2} + {items = {"farming:potato"}, rarity = 2}, + {items = {"farming:potato"}, rarity = 3} } } minetest.register_node("farming:potato_4", table.copy(def)) @@ -99,4 +100,22 @@ farming.registered_plants["farming:potato"] = { } -- mapgen -farming.register_decoration("potato",3) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "default:dirt_with_rainforest_litter", + "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.potato, + spread = {x = 100, y = 100, z = 100}, + seed = 465, + octaves = 3, + persist = 0.6 + }, + y_min = 5, y_max = 40, + decoration = "farming:potato_3" +}) diff --git a/mods/farming/crops/pumpkin.lua b/mods/farming/crops/pumpkin.lua index 70816bd4..d133dfec 100644 --- a/mods/farming/crops/pumpkin.lua +++ b/mods/farming/crops/pumpkin.lua @@ -107,4 +107,23 @@ farming.registered_plants["farming:pumpkin"] = { } -- mapgen -farming.register_decoration("pumpkin",8) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "default:dirt_with_rainforest_litter", + "mcl_core:dirt_with_grass" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.pumpkin, + spread = {x = 100, y = 100, z = 100}, + seed = 576, + octaves = 3, + persist = 0.6 + }, + y_min = 1, y_max = 3, + decoration = "farming:pumpkin_8", + spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1 +}) diff --git a/mods/farming/crops/raspberry.lua b/mods/farming/crops/raspberry.lua index 771ceea8..6e04e6bf 100644 --- a/mods/farming/crops/raspberry.lua +++ b/mods/farming/crops/raspberry.lua @@ -79,4 +79,21 @@ farming.registered_plants["farming:raspberries"] = { } -- mapgen -farming.register_decoration("raspberry",4) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.raspberry, + spread = {x = 100, y = 100, z = 100}, + seed = 687, + octaves = 3, + persist = 0.6 + }, + y_min = 3, y_max = 15, + decoration = "farming:raspberry_4" +}) diff --git a/mods/farming/crops/rhubarb.lua b/mods/farming/crops/rhubarb.lua index 26044e17..c662b238 100644 --- a/mods/farming/crops/rhubarb.lua +++ b/mods/farming/crops/rhubarb.lua @@ -55,6 +55,7 @@ def.tiles = {"farming_rhubarb_3.png"} def.drop = { items = { {items = {"farming:rhubarb"}, rarity = 1}, + {items = {"farming:rhubarb"}, rarity = 3} } } minetest.register_node("farming:rhubarb_3", table.copy(def)) @@ -84,4 +85,21 @@ farming.registered_plants["farming:rhubarb"] = { } -- mapgen -farming.register_decoration("rhubarb",3) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.rhubarb, + spread = {x = 100, y = 100, z = 100}, + seed = 798, + octaves = 3, + persist = 0.6 + }, + y_min = 3, y_max = 20, + decoration = "farming:rhubarb_3" +}) diff --git a/mods/farming/crops/rice.lua b/mods/farming/crops/rice.lua index d363f638..80084d61 100644 --- a/mods/farming/crops/rice.lua +++ b/mods/farming/crops/rice.lua @@ -94,11 +94,6 @@ minetest.register_node("farming:rice_4", table.copy(def)) -- stage 5 def.tiles = {"farming_rice_5.png"} -def.drop = { - items = { - {items = {"farming:rice"}, rarity = 2} - } -} minetest.register_node("farming:rice_5", table.copy(def)) -- stage 6 @@ -106,7 +101,7 @@ minetest.register_node("farming:rice_5", table.copy(def)) def.tiles = {"farming_rice_6.png"} def.drop = { items = { - {items = {"farming:rice"}, rarity = 2} + {items = {"farming:seed_rice"}, rarity = 2} } } minetest.register_node("farming:rice_6", table.copy(def)) @@ -117,7 +112,6 @@ def.tiles = {"farming_rice_7.png"} def.drop = { items = { {items = {"farming:seed_rice"}, rarity = 1}, - {items = {"farming:seed_rice"}, rarity = 2}, {items = {"farming:seed_rice"}, rarity = 3} } } @@ -131,8 +125,9 @@ def.selection_box = farming.select_final def.drop = { items = { {items = {"farming:seed_rice 2"}, rarity = 1}, - {items = {"farming:seed_rice 2"}, rarity = 2}, - {items = {"farming:seed_rice"}, rarity = 3} + {items = {"farming:seed_rice"}, rarity = 2}, + {items = {"farming:seed_rice"}, rarity = 3}, + {items = {"farming:seed_rice"}, rarity = 4} } } minetest.register_node("farming:rice_8", table.copy(def)) @@ -146,6 +141,3 @@ farming.registered_plants["farming:rice"] = { maxlight = farming.max_light, steps = 8 } - --- mapgen -farming.register_decoration("rice",8) diff --git a/mods/farming/crops/rye_oat.lua b/mods/farming/crops/rye_oat.lua index 3fd93c14..1e3f0253 100644 --- a/mods/farming/crops/rye_oat.lua +++ b/mods/farming/crops/rye_oat.lua @@ -25,6 +25,8 @@ minetest.override_item("farming:rye", { minetest.override_item("farming:rye_1", {drop = {}}) minetest.override_item("farming:rye_2", {drop = {}}) minetest.override_item("farming:rye_3", {drop = {}}) +minetest.override_item("farming:rye_4", {drop = {}}) +minetest.override_item("farming:rye_5", {drop = {}}) -- Oats @@ -48,3 +50,5 @@ minetest.override_item("farming:oat", { minetest.override_item("farming:oat_1", {drop = {}}) minetest.override_item("farming:oat_2", {drop = {}}) minetest.override_item("farming:oat_3", {drop = {}}) +minetest.override_item("farming:oat_4", {drop = {}}) +minetest.override_item("farming:oat_5", {drop = {}}) diff --git a/mods/farming/crops/soy.lua b/mods/farming/crops/soy.lua index 88c1980a..ee35cde4 100644 --- a/mods/farming/crops/soy.lua +++ b/mods/farming/crops/soy.lua @@ -64,8 +64,8 @@ minetest.register_node("farming:soy_4", table.copy(def)) def.tiles = {"farming_soy_5.png"} def.drop = { - max_items = 1, items = { - {items = {"farming:soy_pod"}, rarity = 1}, + items = { + {items = {"farming:soy_pod"}, rarity = 2} } } minetest.register_node("farming:soy_5", table.copy(def)) @@ -74,9 +74,8 @@ minetest.register_node("farming:soy_5", table.copy(def)) def.tiles = {"farming_soy_6.png"} def.drop = { - max_items = 3, items = { + items = { {items = {"farming:soy_pod"}, rarity = 1}, - {items = {"farming:soy_pod"}, rarity = 2}, {items = {"farming:soy_pod"}, rarity = 3} } } @@ -88,12 +87,11 @@ def.tiles = {"farming_soy_7.png"} def.groups.growing = nil def.selection_box = farming.select_final def.drop = { - max_items = 5, items = { - {items = {"farming:soy_pod"}, rarity = 1}, + items = { + {items = {"farming:soy_pod 2"}, rarity = 1}, {items = {"farming:soy_pod"}, rarity = 2}, {items = {"farming:soy_pod"}, rarity = 3}, - {items = {"farming:soy_pod"}, rarity = 4}, - {items = {"farming:soy_pod"}, rarity = 5} + {items = {"farming:soy_pod"}, rarity = 4} } } minetest.register_node("farming:soy_7", table.copy(def)) @@ -109,4 +107,23 @@ farming.registered_plants["farming:soy_pod"] = { } -- mapgen -farming.register_decoration("soy",7) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "default:dirt_with_dry_grass", + "default:dirt_with_rainforest_litter", "default:dry_dirt_with_dry_grass", + "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.soy, + spread = {x = 100, y = 100, z = 100}, + seed = 809, + octaves = 3, + persist = 0.6 + }, + y_min = 20, y_max = 50, + decoration = "farming:soy_6" +}) diff --git a/mods/farming/crops/spinach.lua b/mods/farming/crops/spinach.lua index 29ac27ea..8077d413 100644 --- a/mods/farming/crops/spinach.lua +++ b/mods/farming/crops/spinach.lua @@ -66,8 +66,9 @@ def.selection_box = farming.select_final def.drop = { items = { {items = {"farming:spinach 2"}, rarity = 1}, - {items = {"farming:spinach 2"}, rarity = 2}, - {items = {"farming:spinach 2"}, rarity = 3} + {items = {"farming:spinach"}, rarity = 2}, + {items = {"farming:spinach"}, rarity = 3}, + {items = {"farming:spinach"}, rarity = 4} } } minetest.register_node("farming:spinach_4", table.copy(def)) @@ -83,4 +84,20 @@ farming.registered_plants["farming:spinach"] = { } -- mapgen -farming.register_decoration("spinach",4) + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.spinach, + spread = {x = 100, y = 100, z = 100}, + seed = 910, + octaves = 3, + persist = 0.6 + }, + y_min = 1, y_max = 100, + decoration = "farming:spinach_3", + param2 = 3 +}) diff --git a/mods/farming/crops/strawberry.lua b/mods/farming/crops/strawberry.lua index 66c987c8..495770cf 100644 --- a/mods/farming/crops/strawberry.lua +++ b/mods/farming/crops/strawberry.lua @@ -68,12 +68,6 @@ minetest.register_node(":ethereal:strawberry_5", table.copy(def)) -- stage 6 def.tiles = {"ethereal_strawberry_6.png"} -def.drop = { - items = { - {items = {"ethereal:strawberry 1"}, rarity = 2}, - {items = {"ethereal:strawberry 2"}, rarity = 3} - } -} minetest.register_node(":ethereal:strawberry_6", table.copy(def)) -- stage 7 @@ -81,8 +75,8 @@ minetest.register_node(":ethereal:strawberry_6", table.copy(def)) def.tiles = {"ethereal_strawberry_7.png"} def.drop = { items = { - {items = {"ethereal:strawberry 1"}, rarity = 1}, - {items = {"ethereal:strawberry 2"}, rarity = 3} + {items = {"ethereal:strawberry"}, rarity = 1}, + {items = {"ethereal:strawberry"}, rarity = 3} } } minetest.register_node(":ethereal:strawberry_7", table.copy(def)) @@ -95,7 +89,9 @@ def.selection_box = farming.select_final def.drop = { items = { {items = {"ethereal:strawberry 2"}, rarity = 1}, - {items = {"ethereal:strawberry 3"}, rarity = 3} + {items = {"ethereal:strawberry"}, rarity = 2}, + {items = {"ethereal:strawberry"}, rarity = 3}, + {items = {"ethereal:strawberry"}, rarity = 4}, } } minetest.register_node(":ethereal:strawberry_8", table.copy(def)) @@ -111,4 +107,21 @@ farming.registered_plants["ethereal:strawberry"] = { } -- mapgen -farming.register_decoration("strawberry",7) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.strawberry, + spread = {x = 100, y = 100, z = 100}, + seed = 143, + octaves = 3, + persist = 0.6 + }, + y_min = 15, y_max = 55, + decoration = "ethereal:strawberry_7" +}) diff --git a/mods/farming/crops/sunflower.lua b/mods/farming/crops/sunflower.lua index 09ef5dec..55e0fdb3 100644 --- a/mods/farming/crops/sunflower.lua +++ b/mods/farming/crops/sunflower.lua @@ -129,4 +129,21 @@ farming.registered_plants["farming:sunflower"] = { } -- mapgen -farming.register_decoration("sunflower",8) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.sunflower, + spread = {x = 100, y = 100, z = 100}, + seed = 254, + octaves = 3, + persist = 0.6 + }, + y_min = 10, y_max = 40, + decoration = "farming:sunflower_8" +}) diff --git a/mods/farming/crops/tomato.lua b/mods/farming/crops/tomato.lua index d0e94f45..946dbee5 100644 --- a/mods/farming/crops/tomato.lua +++ b/mods/farming/crops/tomato.lua @@ -90,9 +90,10 @@ def.groups.growing = nil def.selection_box = farming.select_final def.drop = { items = { - {items = {"farming:tomato 3"}, rarity = 1}, - {items = {"farming:tomato 2"}, rarity = 2}, - {items = {"farming:tomato 1"}, rarity = 3} + {items = {"farming:tomato 2"}, rarity = 1}, + {items = {"farming:tomato"}, rarity = 2}, + {items = {"farming:tomato"}, rarity = 3}, + {items = {"farming:tomato"}, rarity = 4} } } minetest.register_node("farming:tomato_8", table.copy(def)) @@ -108,4 +109,21 @@ farming.registered_plants["farming:tomato"] = { } -- mapgen -farming.register_decoration("tomato",8) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.tomato, + spread = {x = 100, y = 100, z = 100}, + seed = 365, + octaves = 3, + persist = 0.6 + }, + y_min = 5, y_max = 25, + decoration = "farming:tomato_7" +}) diff --git a/mods/farming/crops/vanilla.lua b/mods/farming/crops/vanilla.lua index 507020ee..a03ad401 100644 --- a/mods/farming/crops/vanilla.lua +++ b/mods/farming/crops/vanilla.lua @@ -74,7 +74,6 @@ def.tiles = {"farming_vanilla_7.png"} def.drop = { items = { {items = {"farming:vanilla"}, rarity = 1}, - {items = {"farming:vanilla"}, rarity = 2}, {items = {"farming:vanilla"}, rarity = 3} } } @@ -88,9 +87,9 @@ def.selection_box = farming.select_final def.drop = { items = { {items = {"farming:vanilla 2"}, rarity = 1}, - {items = {"farming:vanilla 2"}, rarity = 2}, - {items = {"farming:vanilla 2"}, rarity = 2}, - {items = {"farming:vanilla 2"}, rarity = 3} + {items = {"farming:vanilla"}, rarity = 2}, + {items = {"farming:vanilla"}, rarity = 3}, + {items = {"farming:vanilla"}, rarity = 4} } } minetest.register_node("farming:vanilla_8", table.copy(def)) @@ -106,4 +105,21 @@ farming.registered_plants["farming:vanilla"] = { } -- mapgen -farming.register_decoration("vanilla",8) + +minetest.register_decoration({ + deco_type = "simple", + place_on = { + "default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:grove_dirt" + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = farming.vanilla, + spread = {x = 100, y = 100, z = 100}, + seed = 476, + octaves = 3, + persist = 0.6 + }, + y_min = 5, y_max = 35, + decoration = "farming:vanilla_7" +}) diff --git a/mods/farming/crops/wheat.lua b/mods/farming/crops/wheat.lua index db6644ec..993fefe8 100644 --- a/mods/farming/crops/wheat.lua +++ b/mods/farming/crops/wheat.lua @@ -84,12 +84,6 @@ minetest.register_node("farming:wheat_4", table.copy(def)) -- stage 5 def.tiles = {"farming_wheat_5.png"} -def.drop = { - items = { - {items = {"farming:wheat"}, rarity = 2}, - {items = {"farming:seed_wheat"}, rarity = 2} - } -} minetest.register_node("farming:wheat_5", table.copy(def)) -- stage 6 @@ -98,7 +92,7 @@ def.tiles = {"farming_wheat_6.png"} def.drop = { items = { {items = {"farming:wheat"}, rarity = 2}, - {items = {"farming:seed_wheat"}, rarity = 1} + {items = {"farming:seed_wheat"}, rarity = 2} } } minetest.register_node("farming:wheat_6", table.copy(def)) @@ -108,10 +102,8 @@ minetest.register_node("farming:wheat_6", table.copy(def)) def.tiles = {"farming_wheat_7.png"} def.drop = { items = { - {items = {"farming:wheat"}, rarity = 1}, - {items = {"farming:wheat"}, rarity = 3}, - {items = {"farming:seed_wheat"}, rarity = 1}, - {items = {"farming:seed_wheat"}, rarity = 3} + {items = {"farming:wheat"}, rarity = 2}, + {items = {"farming:seed_wheat"}, rarity = 1} } } minetest.register_node("farming:wheat_7", table.copy(def)) @@ -123,10 +115,10 @@ def.groups.growing = nil def.selection_box = farming.select_final def.drop = { items = { - {items = {"farming:wheat"}, rarity = 1}, - {items = {"farming:wheat"}, rarity = 3}, - {items = {"farming:seed_wheat"}, rarity = 1}, - {items = {"farming:seed_wheat"}, rarity = 3} + {items = {"farming:wheat 2"}, rarity = 1}, + {items = {"farming:wheat"}, rarity = 2}, + {items = {"farming:seed_wheat 2"}, rarity = 1}, + {items = {"farming:seed_wheat"}, rarity = 2} } } minetest.register_node("farming:wheat_8", table.copy(def)) @@ -140,5 +132,3 @@ farming.registered_plants["farming:wheat"] = { maxlight = farming.max_light, steps = 8 } --- mapgen -farming.register_decoration("wheat",8) diff --git a/mods/farming/hoes.lua b/mods/farming/hoes.lua index e6865754..4968928a 100644 --- a/mods/farming/hoes.lua +++ b/mods/farming/hoes.lua @@ -244,7 +244,8 @@ local function hoe_area(pos, player) -- remove flora (grass, flowers etc.) local res = minetest.find_nodes_in_area( {x = pos.x - r, y = pos.y - 1, z = pos.z - r}, - {x = pos.x + r, y = pos.y + 2, z = pos.z + r}, {"group:flora"}) + {x = pos.x + r, y = pos.y + 2, z = pos.z + r}, + {"group:flora", "default:dry_shrub"}) for n = 1, #res do minetest.swap_node(res[n], {name = "air"}) @@ -252,9 +253,9 @@ local function hoe_area(pos, player) -- replace dirt with tilled soil res = minetest.find_nodes_in_area_under_air( - {x = pos.x - r, y = pos.y - 1, z = pos.z - r}, - {x = pos.x + r, y = pos.y + 2, z = pos.z + r}, - {"group:soil"}) + {x = pos.x - r, y = pos.y - 1, z = pos.z - r}, + {x = pos.x + r, y = pos.y + 2, z = pos.z + r}, + {"group:soil", "ethereal:dry_dirt"}) for n = 1, #res do minetest.swap_node(res[n], {name = "farming:soil"}) diff --git a/mods/farming/init.lua b/mods/farming/init.lua index 8b658eb7..a5cc6399 100644 --- a/mods/farming/init.lua +++ b/mods/farming/init.lua @@ -12,7 +12,7 @@ local S = minetest.get_translator("farming") farming = { mod = "redo", - version = "20240924", + version = "20250417", path = minetest.get_modpath("farming"), select = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}}, select_final = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5}}, @@ -23,49 +23,6 @@ farming = { mtg = minetest.get_modpath("default"), eth = minetest.get_modpath("ethereal"), mcl = minetest.get_modpath("mcl_core"), - sounds = {}, - register_decoration = function(crop,steps,alt_source) - biomes = asuna.features.crops[crop] - if not biomes then - return - end - - local decor - if alt_source then - decor = alt_source - else - decor = {} - for i = 0, (steps > 4 and 2 or 0) do - decor[i + 1] = "farming:" .. crop .. "_" .. (steps - i) - end - end - - local chars = {crop:byte()} - local seed = 11111 - for _,c in ipairs(chars) do - seed = seed + c - end - seed = seed + #crop - - minetest.register_decoration(biomes.inject_decoration({ - name = "farming:" .. crop, - deco_type = "simple", - place_on = "group:soil", - sidelen = 8, - noise_params = { - offset = -0.4125, - scale = 0.3575, - spread = {x = 14, y = 14, z = 14}, - seed = seed, - octaves = 2, - persist = 0.62, - lacunarity = 0.675, - }, - y_max = 31000, - y_min = 1, - decoration = decor, - })) - end, mcl_hardness = 0.01, translate = S } @@ -338,6 +295,23 @@ end) -- Just in case a growing type or added node is missed (also catches existing -- nodes added to map before timers were incorporated). +minetest.register_lbm({ + label = "Start crop timer", + name = "farming:start_crop_timer", + nodenames = {"group:growing"}, + run_at_every_load = false, + + action = function(pos, node, dtime_s) + + local timer = minetest.get_node_timer(pos) + + if timer:is_started() then return end + + farming.start_seed_timer(pos) + end +}) + +--[[ minetest.register_abm({ label = "Start crop timer", nodenames = {"group:growing"}, @@ -376,7 +350,7 @@ minetest.register_abm({ farming.handle_growth(pos, node) -- start normal crop timer end end -}) +})]] -- default check crop is on wet soil @@ -559,7 +533,7 @@ end -- Function to register plants (default farming compatibility) -farming.register_plant = function(name, def) +function farming.register_plant(name, def) if not def.steps then return nil end @@ -599,7 +573,7 @@ farming.register_plant = function(name, def) local def = minetest.registered_nodes[mname .. ":" .. pname .. "_1"] if def then - minetest.swap_node(pos, {name = def.next_plant, param2 = def.place_param2}) + minetest.set_node(pos, {name = def.name, param2 = def.place_param2}) end end, diff --git a/mods/farming/item_food.lua b/mods/farming/item_food.lua index 3842e5ab..36ae280e 100644 --- a/mods/farming/item_food.lua +++ b/mods/farming/item_food.lua @@ -2,27 +2,9 @@ local S = minetest.get_translator("farming") local a = farming.recipe_items -local function register_craftitem(condition,eatable,name,def) - if condition then - core.register_craftitem(name,def) - if eatable then - farming.add_eatable(eatable) - end - end -end - -local function register_node(condition,eatable,name,def) - if condition then - core.register_node(name,def) - if eatable then - farming.add_eatable(eatable) - end - end -end - -- Flour -register_craftitem(true,nil,"farming:flour", { +minetest.register_craftitem("farming:flour", { description = S("Flour"), inventory_image = "farming_flour.png", groups = {food_flour = 1, flammable = 1} @@ -30,16 +12,18 @@ register_craftitem(true,nil,"farming:flour", { -- Garlic bulb -register_craftitem(farming.garlic,1,"farming:garlic", { +minetest.register_craftitem("farming:garlic", { description = S("Garlic"), inventory_image = "crops_garlic.png", on_use = minetest.item_eat(1), groups = {food_garlic = 1, compostability = 55} }) +farming.add_eatable("farming:garlic", 1) + -- Garlic braid -register_node(farming.garlic,nil,"farming:garlic_braid", { +minetest.register_node("farming:garlic_braid", { description = S("Garlic Braid"), inventory_image = "crops_garlic_braid.png", wield_image = "crops_garlic_braid.png", @@ -65,25 +49,29 @@ register_node(farming.garlic,nil,"farming:garlic_braid", { -- Corn on the cob (texture by TenPlus1) -register_craftitem(farming.corn,5,"farming:corn_cob", { +minetest.register_craftitem("farming:corn_cob", { description = S("Corn on the Cob"), inventory_image = "farming_corn_cob.png", groups = {compostability = 65, food_corn_cooked = 1}, on_use = minetest.item_eat(5) }) +farming.add_eatable("farming:corn_cob", 5) + -- Popcorn -register_craftitem(farming.corn,4,"farming:popcorn", { +minetest.register_craftitem("farming:popcorn", { description = S("Popcorn"), inventory_image = "farming_popcorn.png", groups = {compostability = 55, food_popcorn = 1}, on_use = minetest.item_eat(4) }) +farming.add_eatable("farming:popcorn", 4) + -- Cornstarch -register_craftitem(farming.corn,nil,"farming:cornstarch", { +minetest.register_craftitem("farming:cornstarch", { description = S("Cornstarch"), inventory_image = "farming_cornstarch.png", groups = {food_cornstarch = 1, food_gelatin = 1, flammable = 2, compostability = 65} @@ -91,7 +79,7 @@ register_craftitem(farming.corn,nil,"farming:cornstarch", { -- Cup of coffee -register_node(farming.coffee,2,"farming:coffee_cup", { +minetest.register_node("farming:coffee_cup", { description = S("Cup of Coffee"), drawtype = "torchlike", tiles = {"farming_coffee_cup.png"}, @@ -109,20 +97,24 @@ register_node(farming.coffee,2,"farming:coffee_cup", { sounds = farming.node_sound_glass_defaults() }) +farming.add_eatable("farming:coffee_cup", 2) + minetest.register_alias("farming:coffee_cup_hot", "farming:coffee_cup") minetest.register_alias("farming:drinking_cup", "vessels:drinking_glass") -- Bar of of dark chocolate (thx to Ice Pandora for her deviantart.com chocolate tutorial) -register_craftitem(farming.cocoa,3,"farming:chocolate_dark", { +minetest.register_craftitem("farming:chocolate_dark", { description = S("Bar of Dark Chocolate"), inventory_image = "farming_chocolate_dark.png", on_use = minetest.item_eat(3) }) +farming.add_eatable("farming:chocolate_dark", 3) + -- Chocolate block (not edible) -register_node(farming.cocoa,nil,"farming:chocolate_block", { +minetest.register_node("farming:chocolate_block", { description = S("Chocolate Block"), tiles = {"farming_chocolate_block.png"}, is_ground_content = false, @@ -132,16 +124,18 @@ register_node(farming.cocoa,nil,"farming:chocolate_block", { -- Bowl of chili -register_craftitem(farming.chili,8,"farming:chili_bowl", { +minetest.register_craftitem("farming:chili_bowl", { description = S("Bowl of Chili"), inventory_image = "farming_chili_bowl.png", on_use = minetest.item_eat(8, a.bowl), groups = {compostability = 65} }) +farming.add_eatable("farming:chili_bowl", 8) + -- Chili powder -register_craftitem(farming.chili,nil,"farming:chili_powder", { +minetest.register_craftitem("farming:chili_powder", { description = S("Chili Powder"), on_use = minetest.item_eat(-1), inventory_image = "farming_chili_powder.png", @@ -150,70 +144,84 @@ register_craftitem(farming.chili,nil,"farming:chili_powder", { -- Carrot juice -register_craftitem(farming.carrot,4,"farming:carrot_juice", { +minetest.register_craftitem("farming:carrot_juice", { description = S("Carrot Juice"), inventory_image = "farming_carrot_juice.png", on_use = minetest.item_eat(4, "vessels:drinking_glass"), groups = {vessel = 1, drink = 1} }) +farming.add_eatable("farming:carrot_juice", 4) + -- Blueberry Pie -register_craftitem(farming.blueberry or core.registered_items["default:blueberries"],6,"farming:blueberry_pie", { +minetest.register_craftitem("farming:blueberry_pie", { description = S("Blueberry Pie"), inventory_image = "farming_blueberry_pie.png", on_use = minetest.item_eat(6), groups = {compostability = 75} }) +farming.add_eatable("farming:blueberry_pie", 6) + -- Blueberry muffin (thanks to sosogirl123 @ deviantart.com for muffin image) -register_craftitem(farming.blueberry or core.registered_items["default:blueberries"],2,"farming:muffin_blueberry", { +minetest.register_craftitem("farming:muffin_blueberry", { description = S("Blueberry Muffin"), inventory_image = "farming_blueberry_muffin.png", on_use = minetest.item_eat(2), groups = {compostability = 65} }) +farming.add_eatable("farming:muffin_blueberry", 2) + -- Tomato soup -register_craftitem(farming.tomato,8,"farming:tomato_soup", { +minetest.register_craftitem("farming:tomato_soup", { description = S("Tomato Soup"), inventory_image = "farming_tomato_soup.png", groups = {compostability = 65, drink = 1}, on_use = minetest.item_eat(8, "farming:bowl") }) +farming.add_eatable("farming:tomato_soup", 8) + -- sliced bread -register_craftitem(true,1,"farming:bread_slice", { +minetest.register_craftitem("farming:bread_slice", { description = S("Sliced Bread"), inventory_image = "farming_bread_slice.png", on_use = minetest.item_eat(1), groups = {food_bread_slice = 1, compostability = 65} }) +farming.add_eatable("farming:bread_slice", 1) + -- toast -register_craftitem(true,1,"farming:toast", { +minetest.register_craftitem("farming:toast", { description = S("Toast"), inventory_image = "farming_toast.png", on_use = minetest.item_eat(1), groups = {food_toast = 1, compostability = 65} }) +farming.add_eatable("farming:toast", 1) + -- toast sandwich -register_craftitem(true,4,"farming:toast_sandwich", { +minetest.register_craftitem("farming:toast_sandwich", { description = S("Toast Sandwich"), inventory_image = "farming_toast_sandwich.png", on_use = minetest.item_eat(4), groups = {compostability = 85} }) +farming.add_eatable("farming:toast_sandwich", 4) + -- glass of water -register_craftitem(true,nil,"farming:glass_water", { +minetest.register_craftitem("farming:glass_water", { description = S("Glass of Water"), inventory_image = "farming_water_glass.png", groups = {food_glass_water = 1, flammable = 3, vessel = 1} @@ -221,7 +229,7 @@ register_craftitem(true,nil,"farming:glass_water", { -- Sugar cube -register_node(true,nil,"farming:sugar_cube", { +minetest.register_node("farming:sugar_cube", { description = S("Sugar Cube"), tiles = {"farming_sugar_cube.png"}, groups = {shovely = 1, handy = 1, crumbly = 2}, @@ -234,7 +242,7 @@ register_node(true,nil,"farming:sugar_cube", { -- Sugar caramel -register_craftitem(true,nil,"farming:caramel", { +minetest.register_craftitem("farming:caramel", { description = S("Caramel"), inventory_image = "farming_caramel.png", groups = {compostability = 40} @@ -242,7 +250,7 @@ register_craftitem(true,nil,"farming:caramel", { -- Salt -register_node(true,nil,"farming:salt", { +minetest.register_node("farming:salt", { description = S("Salt"), inventory_image = "farming_salt.png", wield_image = "farming_salt.png", @@ -300,7 +308,7 @@ register_node(true,nil,"farming:salt", { -- Salt Crystal -register_node(true,nil,"farming:salt_crystal", { +minetest.register_node("farming:salt_crystal", { description = S("Salt crystal"), inventory_image = "farming_salt_crystal.png", wield_image = "farming_salt_crystal.png", @@ -321,7 +329,7 @@ register_node(true,nil,"farming:salt_crystal", { -- Mayonnaise -register_node(true,3,"farming:mayonnaise", { +minetest.register_node("farming:mayonnaise", { description = S("Mayonnaise"), drawtype = "plantlike", tiles = {"farming_mayo.png"}, @@ -342,9 +350,11 @@ register_node(true,3,"farming:mayonnaise", { sounds = farming.node_sound_glass_defaults() }) +farming.add_eatable("farming:mayonnaise", 3) + -- Rose Water -register_node(true,nil,"farming:rose_water", { +minetest.register_node("farming:rose_water", { description = S("Rose Water"), inventory_image = "farming_rose_water.png", wield_image = "farming_rose_water.png", @@ -364,75 +374,91 @@ register_node(true,nil,"farming:rose_water", { -- Turkish Delight -register_craftitem(true,2,"farming:turkish_delight", { +minetest.register_craftitem("farming:turkish_delight", { description = S("Turkish Delight"), inventory_image = "farming_turkish_delight.png", groups = {compostability = 85}, on_use = minetest.item_eat(2) }) +farming.add_eatable("farming:turkish_delight", 2) + -- Garlic Bread -register_craftitem(farming.garlic,2,"farming:garlic_bread", { +minetest.register_craftitem("farming:garlic_bread", { description = S("Garlic Bread"), inventory_image = "farming_garlic_bread.png", groups = {compostability = 65}, on_use = minetest.item_eat(2) }) +farming.add_eatable("farming:garlic_bread", 2) + -- Donuts (thanks to Bockwurst for making the donut images) -register_craftitem(true,4,"farming:donut", { +minetest.register_craftitem("farming:donut", { description = S("Donut"), inventory_image = "farming_donut.png", on_use = minetest.item_eat(4), groups = {compostability = 65} }) -register_craftitem(farming.cocoa,6,"farming:donut_chocolate", { +farming.add_eatable("farming:donut", 4) + +minetest.register_craftitem("farming:donut_chocolate", { description = S("Chocolate Donut"), inventory_image = "farming_donut_chocolate.png", on_use = minetest.item_eat(6), groups = {compostability = 65} }) -register_craftitem(true,6,"farming:donut_apple", { +farming.add_eatable("farming:donut_chocolate", 6) + +minetest.register_craftitem("farming:donut_apple", { description = S("Apple Donut"), inventory_image = "farming_donut_apple.png", on_use = minetest.item_eat(6), groups = {compostability = 65} }) +farming.add_eatable("farming:donut_apple", 6) + -- Porridge Oats -register_craftitem(farming.grains and farming.soy,6,"farming:porridge", { +minetest.register_craftitem("farming:porridge", { description = S("Porridge"), inventory_image = "farming_porridge.png", on_use = minetest.item_eat(6, a.bowl), groups = {compostability = 65} }) +farming.add_eatable("farming:porridge", 6) + -- Jaffa Cake -register_craftitem(farming.soy,6,"farming:jaffa_cake", { +minetest.register_craftitem("farming:jaffa_cake", { description = S("Jaffa Cake"), inventory_image = "farming_jaffa_cake.png", on_use = minetest.item_eat(6), groups = {compostability = 65} }) +farming.add_eatable("farming:jaffa_cake", 6) + -- Apple Pie -register_craftitem(true,6,"farming:apple_pie", { +minetest.register_craftitem("farming:apple_pie", { description = S("Apple Pie"), inventory_image = "farming_apple_pie.png", on_use = minetest.item_eat(6), groups = {compostability = 75} }) +farming.add_eatable("farming:apple_pie", 6) + -- Cactus Juice -register_craftitem(true,1,"farming:cactus_juice", { +minetest.register_craftitem("farming:cactus_juice", { description = S("Cactus Juice"), inventory_image = "farming_cactus_juice.png", groups = {vessel = 1, drink = 1, compostability = 55}, @@ -449,9 +475,11 @@ register_craftitem(true,1,"farming:cactus_juice", { end }) +farming.add_eatable("farming:cactus_juice", 1) + -- Pasta -register_craftitem(true,nil,"farming:pasta", { +minetest.register_craftitem("farming:pasta", { description = S("Pasta"), inventory_image = "farming_pasta.png", groups = {compostability = 65, food_pasta = 1} @@ -459,106 +487,128 @@ register_craftitem(true,nil,"farming:pasta", { -- Mac & Cheese -register_craftitem(true,6,"farming:mac_and_cheese", { +minetest.register_craftitem("farming:mac_and_cheese", { description = S("Mac & Cheese"), inventory_image = "farming_mac_and_cheese.png", on_use = minetest.item_eat(6, a.bowl), groups = {compostability = 65} }) +farming.add_eatable("farming:mac_and_cheese", 6) + -- Spaghetti -register_craftitem(farming.garlic and farming.tomato,8,"farming:spaghetti", { +minetest.register_craftitem("farming:spaghetti", { description = S("Spaghetti"), inventory_image = "farming_spaghetti.png", on_use = minetest.item_eat(8), groups = {compostability = 65} }) +farming.add_eatable("farming:spaghetti", 8) + -- Korean Bibimbap -register_craftitem(farming.chili and farming.rice and farming.chili and farming.cabbage,8,"farming:bibimbap", { +minetest.register_craftitem("farming:bibimbap", { description = S("Bibimbap"), inventory_image = "farming_bibimbap.png", on_use = minetest.item_eat(8, a.bowl), groups = {compostability = 65} }) +farming.add_eatable("farming:bibimbap", 8) + -- Burger -register_craftitem(farming.lettuce and farming.tomato,16,"farming:burger", { +minetest.register_craftitem("farming:burger", { description = S("Burger"), inventory_image = "farming_burger.png", on_use = minetest.item_eat(16), groups = {compostability = 95} }) +farming.add_eatable("farming:burger", 16) + -- Salad -register_craftitem(farming.lettuce and farming.tomato,8,"farming:salad", { +minetest.register_craftitem("farming:salad", { description = S("Salad"), inventory_image = "farming_salad.png", on_use = minetest.item_eat(8, a.bowl), groups = {compostability = 45} }) +farming.add_eatable("farming:salad", 8) + -- Triple Berry Smoothie -register_craftitem(farming.raspberry and farming.blackberry and farming.strawberry,6,"farming:smoothie_berry", { +minetest.register_craftitem("farming:smoothie_berry", { description = S("Triple Berry Smoothie"), inventory_image = "farming_berry_smoothie.png", on_use = minetest.item_eat(6, "vessels:drinking_glass"), groups = {vessel = 1, drink = 1, compostability = 65} }) +farming.add_eatable("farming:smoothie_berry", 6) + -- Patatas a la importancia -register_craftitem(farming.garlic and farming.parsley and farming.potato and farming.onion,8,"farming:spanish_potatoes", { +minetest.register_craftitem("farming:spanish_potatoes", { description = S("Spanish Potatoes"), inventory_image = "farming_spanish_potatoes.png", on_use = minetest.item_eat(8, a.bowl), groups = {compostability = 65} }) +farming.add_eatable("farming:spanish_potatoes", 8) + -- Potato omelette -register_craftitem(farming.onion and farming.potato,6,"farming:potato_omelet", { +minetest.register_craftitem("farming:potato_omelet", { description = S("Potato omelette"), inventory_image = "farming_potato_omelet.png", on_use = minetest.item_eat(6, a.bowl), groups = {compostability = 65} }) +farming.add_eatable("farming:potato_omelet", 6) + -- Paella -register_craftitem(farming.peas and farming.pepper and farming.rice,8,"farming:paella", { +minetest.register_craftitem("farming:paella", { description = S("Paella"), inventory_image = "farming_paella.png", on_use = minetest.item_eat(8, a.bowl), groups = {compostability = 65} }) +farming.add_eatable("farming:paella", 8) + -- Vanilla Flan -register_craftitem(farming.vanilla and farming.soy,6,"farming:flan", { +minetest.register_craftitem("farming:flan", { description = S("Vanilla Flan"), inventory_image = "farming_vanilla_flan.png", on_use = minetest.item_eat(6), groups = {compostability = 65} }) +farming.add_eatable("farming:flan", 6) + -- Vegan Cheese -register_craftitem(farming.corn and farming.pepper and farming.soy,2,"farming:cheese_vegan", { +minetest.register_craftitem("farming:cheese_vegan", { description = S("Vegan Cheese"), inventory_image = "farming_cheese_vegan.png", on_use = minetest.item_eat(2), groups = {compostability = 65, food_cheese = 1} }) +farming.add_eatable("farming:cheese_vegan", 2) + -- Vegan Butter -register_craftitem(farming.soy and farming.sunflower,nil,"farming:butter_vegan", { +minetest.register_craftitem("farming:butter_vegan", { description = S("Vegan Butter"), inventory_image = "farming_vegan_butter.png", groups = {food_butter = 1} @@ -566,68 +616,82 @@ register_craftitem(farming.soy and farming.sunflower,nil,"farming:butter_vegan", -- Onigiri -register_craftitem(farming.rice,2,"farming:onigiri", { +minetest.register_craftitem("farming:onigiri", { description = S("Onigiri"), inventory_image = "farming_onigiri.png", on_use = minetest.item_eat(2), groups = {compostability = 65} }) +farming.add_eatable("farming:onigiri", 2) + -- Gyoza -register_craftitem(farming.cabbage and farming.garlic and farming.onion,4,"farming:gyoza", { +minetest.register_craftitem("farming:gyoza", { description = S("Gyoza"), inventory_image = "farming_gyoza.png", on_use = minetest.item_eat(4), groups = {compostability = 65} }) +farming.add_eatable("farming:gyoza", 4) + -- Mochi -register_craftitem(farming.rice,3,"farming:mochi", { +minetest.register_craftitem("farming:mochi", { description = S("Mochi"), inventory_image = "farming_mochi.png", on_use = minetest.item_eat(3), groups = {compostability = 65} }) +farming.add_eatable("farming:mochi", 3) + -- Gingerbread Man -register_craftitem(farming.ginger,2,"farming:gingerbread_man", { +minetest.register_craftitem("farming:gingerbread_man", { description = S("Gingerbread Man"), inventory_image = "farming_gingerbread_man.png", on_use = minetest.item_eat(2), groups = {compostability = 85} }) +farming.add_eatable("farming:gingerbread_man", 2) + -- Mint tea -register_craftitem(farming.mint,2,"farming:mint_tea", { +minetest.register_craftitem("farming:mint_tea", { description = S("Mint Tea"), inventory_image = "farming_mint_tea.png", on_use = minetest.item_eat(2, a.drinking_glass), groups = {drink = 1} }) +farming.add_eatable("farming:mint_tea", 2) + -- Onion soup -register_craftitem(farming.onion,6,"farming:onion_soup", { +minetest.register_craftitem("farming:onion_soup", { description = S("Onion Soup"), inventory_image = "farming_onion_soup.png", groups = {compostability = 65, drink = 1}, on_use = minetest.item_eat(6, a.bowl) }) +farming.add_eatable("farming:onion_soup", 6) + -- Pea soup -register_craftitem(farming.peas,4,"farming:pea_soup", { +minetest.register_craftitem("farming:pea_soup", { description = S("Pea Soup"), inventory_image = "farming_pea_soup.png", groups = {compostability = 65, drink = 1}, on_use = minetest.item_eat(4, a.bowl) }) +farming.add_eatable("farming:pea_soup", 4) + -- Ground pepper -register_node(farming.pepper,nil,"farming:pepper_ground", { +minetest.register_node("farming:pepper_ground", { description = S("Ground Pepper"), inventory_image = "crops_pepper_ground.png", wield_image = "crops_pepper_ground.png", @@ -648,67 +712,79 @@ register_node(farming.pepper,nil,"farming:pepper_ground", { -- pineapple ring -register_craftitem(farming.pineapple,1,"farming:pineapple_ring", { +minetest.register_craftitem("farming:pineapple_ring", { description = S("Pineapple Ring"), inventory_image = "farming_pineapple_ring.png", groups = {food_pineapple_ring = 1, compostability = 45}, on_use = minetest.item_eat(1) }) +farming.add_eatable("farming:pineapple_ring", 1) + -- Pineapple juice -register_craftitem(farming.pineapple,4,"farming:pineapple_juice", { +minetest.register_craftitem("farming:pineapple_juice", { description = S("Pineapple Juice"), inventory_image = "farming_pineapple_juice.png", on_use = minetest.item_eat(4, "vessels:drinking_glass"), groups = {vessel = 1, drink = 1, compostability = 35} }) +farming.add_eatable("farming:pineapple_juice", 4) + -- Potato & cucumber Salad -register_craftitem(farming.potato,10,"farming:potato_salad", { +minetest.register_craftitem("farming:potato_salad", { description = S("Cucumber and Potato Salad"), inventory_image = "farming_potato_salad.png", on_use = minetest.item_eat(10, "farming:bowl") }) +farming.add_eatable("farming:potato_salad", 10) + -- Pumpkin dough -register_craftitem(farming.pumpkin,nil,"farming:pumpkin_dough", { +minetest.register_craftitem("farming:pumpkin_dough", { description = S("Pumpkin Dough"), inventory_image = "farming_pumpkin_dough.png" }) -- Pumpkin bread -register_craftitem(farming.pumpkin,8,"farming:pumpkin_bread", { +minetest.register_craftitem("farming:pumpkin_bread", { description = S("Pumpkin Bread"), inventory_image = "farming_pumpkin_bread.png", on_use = minetest.item_eat(8), groups = {food_bread = 1} }) +farming.add_eatable("farming:pumpkin_bread", 8) + -- Raspberry smoothie -register_craftitem(farming.raspberry,2,"farming:smoothie_raspberry", { +minetest.register_craftitem("farming:smoothie_raspberry", { description = S("Raspberry Smoothie"), inventory_image = "farming_raspberry_smoothie.png", on_use = minetest.item_eat(2, "vessels:drinking_glass"), groups = {vessel = 1, drink = 1, compostability = 65} }) +farming.add_eatable("farming:smoothie_raspberry", 2) + -- Rhubarb pie -register_craftitem(farming.rhubarb,6,"farming:rhubarb_pie", { +minetest.register_craftitem("farming:rhubarb_pie", { description = S("Rhubarb Pie"), inventory_image = "farming_rhubarb_pie.png", on_use = minetest.item_eat(6), groups = {compostability = 65} }) +farming.add_eatable("farming:rhubarb_pie", 6) + -- Rice flour -register_craftitem(farming.rice,nil,"farming:rice_flour", { +minetest.register_craftitem("farming:rice_flour", { description = S("Rice Flour"), inventory_image = "farming_rice_flour.png", groups = {food_rice_flour = 1, flammable = 1, compostability = 65} @@ -716,16 +792,18 @@ register_craftitem(farming.rice,nil,"farming:rice_flour", { -- Rice bread -register_craftitem(farming.rice,5,"farming:rice_bread", { +minetest.register_craftitem("farming:rice_bread", { description = S("Rice Bread"), inventory_image = "farming_rice_bread.png", on_use = minetest.item_eat(5), groups = {food_rice_bread = 1, compostability = 65} }) +farming.add_eatable("farming:rice_bread", 5) + -- Multigrain flour -register_craftitem(farming.grains,nil,"farming:flour_multigrain", { +minetest.register_craftitem("farming:flour_multigrain", { description = S("Multigrain Flour"), inventory_image = "farming_flour_multigrain.png", groups = {food_flour = 1, flammable = 1}, @@ -734,16 +812,18 @@ register_craftitem(farming.grains,nil,"farming:flour_multigrain", { -- Multigrain bread -register_craftitem(farming.grains,7,"farming:bread_multigrain", { +minetest.register_craftitem("farming:bread_multigrain", { description = S("Multigrain Bread"), inventory_image = "farming_bread_multigrain.png", on_use = minetest.item_eat(7), groups = {food_bread = 1, compostability = 65} }) +farming.add_eatable("farming:bread_multigrain", 7) + -- Soy sauce -register_node(farming.soy,nil,"farming:soy_sauce", { +minetest.register_node("farming:soy_sauce", { description = S("Soy Sauce"), drawtype = "plantlike", tiles = {"farming_soy_sauce.png"}, @@ -764,7 +844,7 @@ register_node(farming.soy,nil,"farming:soy_sauce", { -- Soy milk -register_node(farming.soy,2,"farming:soy_milk", { +minetest.register_node("farming:soy_milk", { description = S("Soy Milk"), drawtype = "plantlike", tiles = {"farming_soy_milk_glass.png"}, @@ -784,9 +864,11 @@ register_node(farming.soy,2,"farming:soy_milk", { sounds = farming.node_sound_glass_defaults() }) +farming.add_eatable("farming:soy_milk", 2) + -- Tofu -register_craftitem(farming.soy,3,"farming:tofu", { +minetest.register_craftitem("farming:tofu", { description = S("Tofu"), inventory_image = "farming_tofu.png", groups = { @@ -795,27 +877,33 @@ register_craftitem(farming.soy,3,"farming:tofu", { on_use = minetest.item_eat(3) }) +farming.add_eatable("farming:tofu", 3) + -- Cooked tofu -register_craftitem(farming.soy,6,"farming:tofu_cooked", { +minetest.register_craftitem("farming:tofu_cooked", { description = S("Cooked Tofu"), inventory_image = "farming_tofu_cooked.png", groups = {food_meat = 1, compostability = 65}, on_use = minetest.item_eat(6) }) +farming.add_eatable("farming:tofu_cooked", 6) + -- Toasted sunflower seeds -register_craftitem(farming.sunflower,1,"farming:sunflower_seeds_toasted", { +minetest.register_craftitem("farming:sunflower_seeds_toasted", { description = S("Toasted Sunflower Seeds"), inventory_image = "farming_sunflower_seeds_toasted.png", groups = {food_sunflower_seeds_toasted = 1, compostability = 65}, on_use = minetest.item_eat(1) }) +farming.add_eatable("farming:sunflower_seeds_toasted", 1) + -- Sunflower oil -register_node(farming.sunflower,nil,"farming:sunflower_oil", { +minetest.register_node("farming:sunflower_oil", { description = S("Bottle of Sunflower Oil"), drawtype = "plantlike", tiles = {"farming_sunflower_oil.png"}, @@ -836,16 +924,18 @@ register_node(farming.sunflower,nil,"farming:sunflower_oil", { -- Sunflower seed bread -register_craftitem(farming.sunflower,8,"farming:sunflower_bread", { +minetest.register_craftitem("farming:sunflower_bread", { description = S("Sunflower Seed Bread"), inventory_image = "farming_sunflower_bread.png", on_use = minetest.item_eat(8), groups = {food_bread = 1} }) +farming.add_eatable("farming:sunflower_bread", 8) + -- Vanilla extract -register_node(farming.vanilla and farming.corn,nil,"farming:vanilla_extract", { +minetest.register_node("farming:vanilla_extract", { description = S("Vanilla Extract"), drawtype = "plantlike", tiles = {"farming_vanilla_extract.png"}, @@ -863,28 +953,32 @@ register_node(farming.vanilla and farming.corn,nil,"farming:vanilla_extract", { -- Jerusalem Artichokes with miso butter -register_craftitem(farming.artichoke and farming.soy and farming.garlic,11,"farming:jerusalem_artichokes", { +minetest.register_craftitem("farming:jerusalem_artichokes", { description = S("Jerusalem Artichokes"), inventory_image = "farming_jerusalem_artichokes.png", on_use = minetest.item_eat(11, a.bowl) }) +farming.add_eatable("ethereal:jerusalem_artichokes", 11) + --= Foods we shouldn't add when using Mineclonia/VoxeLibre if not farming.mcl then -- Bread - register_craftitem(true,5,"farming:bread", { + minetest.register_craftitem("farming:bread", { description = S("Bread"), inventory_image = "farming_bread.png", on_use = minetest.item_eat(5), groups = {food_bread = 1} }) + farming.add_eatable("farming:bread", 5) + -- Cocoa beans - register_craftitem(farming.cocoa,nil,"farming:cocoa_beans", { + minetest.register_craftitem("farming:cocoa_beans", { description = S("Cocoa Beans"), inventory_image = "farming_cocoa_beans.png", groups = {compostability = 65, food_cocoa = 1, flammable = 2} @@ -892,32 +986,38 @@ if not farming.mcl then -- Chocolate cookie - register_craftitem(farming.cocoa,2,"farming:cookie", { + minetest.register_craftitem("farming:cookie", { description = S("Cookie"), inventory_image = "farming_cookie.png", on_use = minetest.item_eat(2) }) + farming.add_eatable("farming:cookie", 2) + -- Golden carrot - register_craftitem(farming.carrot,10,"farming:carrot_gold", { + minetest.register_craftitem("farming:carrot_gold", { description = S("Golden Carrot"), inventory_image = "farming_carrot_gold.png", on_use = minetest.item_eat(10) }) + farming.add_eatable("farming:carrot_gold", 10) + -- Beetroot soup - register_craftitem(farming.beetroot,6,"farming:beetroot_soup", { + minetest.register_craftitem("farming:beetroot_soup", { description = S("Beetroot Soup"), inventory_image = "farming_beetroot_soup.png", on_use = minetest.item_eat(6, "farming:bowl"), groups = {drink = 1} }) + farming.add_eatable("farming:beetroot_soup", 6) + -- Sugar - register_craftitem(true,nil,"farming:sugar", { + minetest.register_craftitem("farming:sugar", { description = S("Sugar"), inventory_image = "farming_sugar.png", groups = {food_sugar = 1, flammable = 3} @@ -925,9 +1025,11 @@ if not farming.mcl then -- Baked potato - register_craftitem(farming.potato,6,"farming:baked_potato", { + minetest.register_craftitem("farming:baked_potato", { description = S("Baked Potato"), inventory_image = "farming_baked_potato.png", on_use = minetest.item_eat(6) }) + + farming.add_eatable("farming:baked_potato", 6) end diff --git a/mods/farming/item_non_food.lua b/mods/farming/item_non_food.lua index bfe2a2cf..d118bf3d 100644 --- a/mods/farming/item_non_food.lua +++ b/mods/farming/item_non_food.lua @@ -1,21 +1,9 @@ local S = minetest.get_translator("farming") -local function register_craftitem(condition,name,def) - if condition then - core.register_craftitem(name,def) - end -end - -local function register_node(condition,name,def) - if condition then - core.register_node(name,def) - end -end - -- saucepan -register_craftitem(true,"farming:saucepan", { +minetest.register_craftitem("farming:saucepan", { description = S("Saucepan"), inventory_image = "farming_saucepan.png", groups = {food_saucepan = 1, flammable = 2} @@ -23,7 +11,7 @@ register_craftitem(true,"farming:saucepan", { -- cooking pot -register_craftitem(true,"farming:pot", { +minetest.register_craftitem("farming:pot", { description = S("Cooking Pot"), inventory_image = "farming_pot.png", groups = {food_pot = 1, flammable = 2} @@ -31,7 +19,7 @@ register_craftitem(true,"farming:pot", { -- baking tray -register_craftitem(true,"farming:baking_tray", { +minetest.register_craftitem("farming:baking_tray", { description = S("Baking Tray"), inventory_image = "farming_baking_tray.png", groups = {food_baking_tray = 1, flammable = 2} @@ -39,7 +27,7 @@ register_craftitem(true,"farming:baking_tray", { -- skillet -register_craftitem(true,"farming:skillet", { +minetest.register_craftitem("farming:skillet", { description = S("Skillet"), inventory_image = "farming_skillet.png", groups = {food_skillet = 1, flammable = 2} @@ -47,7 +35,7 @@ register_craftitem(true,"farming:skillet", { -- mortar & pestle -register_craftitem(true,"farming:mortar_pestle", { +minetest.register_craftitem("farming:mortar_pestle", { description = S("Mortar and Pestle"), inventory_image = "farming_mortar_pestle.png", groups = {food_mortar_pestle = 1, flammable = 2} @@ -55,7 +43,7 @@ register_craftitem(true,"farming:mortar_pestle", { -- cutting board -register_craftitem(true,"farming:cutting_board", { +minetest.register_craftitem("farming:cutting_board", { description = S("Cutting Board"), inventory_image = "farming_cutting_board.png", groups = {food_cutting_board = 1, flammable = 2} @@ -63,7 +51,7 @@ register_craftitem(true,"farming:cutting_board", { -- juicer -register_craftitem(true,"farming:juicer", { +minetest.register_craftitem("farming:juicer", { description = S("Juicer"), inventory_image = "farming_juicer.png", groups = {food_juicer = 1, flammable = 2} @@ -71,7 +59,7 @@ register_craftitem(true,"farming:juicer", { -- glass mixing bowl -register_craftitem(true,"farming:mixing_bowl", { +minetest.register_craftitem("farming:mixing_bowl", { description = S("Glass Mixing Bowl"), inventory_image = "farming_mixing_bowl.png", groups = {food_mixing_bowl = 1, flammable = 2} @@ -79,7 +67,7 @@ register_craftitem(true,"farming:mixing_bowl", { -- Ethanol (thanks to JKMurray for this idea) -register_node(farming.corn,"farming:bottle_ethanol", { +minetest.register_node("farming:bottle_ethanol", { description = S("Bottle of Ethanol"), drawtype = "plantlike", tiles = {"farming_bottle_ethanol.png"}, @@ -98,7 +86,7 @@ register_node(farming.corn,"farming:bottle_ethanol", { -- straw -register_node(true,"farming:straw", { +minetest.register_node("farming:straw", { description = S("Straw"), tiles = {"farming_straw.png"}, is_ground_content = false, @@ -108,9 +96,45 @@ register_node(true,"farming:straw", { _mcl_blast_resistance = 1 }) +-- weed + +minetest.register_node("farming:weed", { + description = S("Weed"), + drawtype = "plantlike", + tiles = {"farming_weed.png"}, + inventory_image = "farming_weed.png", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 2, + sunlight_propagates = true, + walkable = false, + buildable_to = true, + waving = 1, + selection_box = farming.select, + groups = {snappy = 3, flammable = 4, plant = 1, attached_node = 1}, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() +}) + +-- weed bale + +minetest.register_node("farming:weed_bale", { + description = S("Weed Bale"), + tiles = { + "farming_weed_bale_top.png", "farming_weed_bale_top.png", + "farming_weed_bale_side.png" + }, + paramtype2 = "facedir", + groups = {handy = 1, snappy = 3, flammable = 4, fall_damage_add_percent = -30}, + sounds = farming.node_sound_leaves_defaults(), + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 +}) + -- hemp oil -register_node(farming.hemp,"farming:hemp_oil", { +minetest.register_node("farming:hemp_oil", { description = S("Bottle of Hemp Oil"), drawtype = "plantlike", tiles = {"farming_hemp_oil.png"}, @@ -120,8 +144,7 @@ register_node(farming.hemp,"farming:hemp_oil", { is_ground_content = false, walkable = false, selection_box = { - type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} }, groups = { food_oil = 1, vessel = 1, dig_immediate = 3, attached_node = 1, @@ -132,7 +155,7 @@ register_node(farming.hemp,"farming:hemp_oil", { -- hemp fibre -register_craftitem(farming.hemp,"farming:hemp_fibre", { +minetest.register_craftitem("farming:hemp_fibre", { description = S("Hemp Fibre"), inventory_image = "farming_hemp_fibre.png", groups = {compostability = 55} @@ -140,7 +163,7 @@ register_craftitem(farming.hemp,"farming:hemp_fibre", { -- hemp block -register_node(farming.hemp,"farming:hemp_block", { +minetest.register_node("farming:hemp_block", { description = S("Hemp Block"), tiles = {"farming_hemp_block.png"}, paramtype = "light", @@ -156,7 +179,7 @@ register_node(farming.hemp,"farming:hemp_block", { -- hemp rope -register_node(false,"farming:hemp_rope", { +minetest.register_node("farming:hemp_rope", { description = S("Hemp Rope"), walkable = false, climbable = true, @@ -173,8 +196,7 @@ register_node(false,"farming:hemp_rope", { is_ground_content = false, sounds = farming.node_sound_leaves_defaults(), selection_box = { - type = "fixed", - fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7} + type = "fixed", fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7} }, _mcl_hardness = 0.8, _mcl_blast_resistance = 1 @@ -182,7 +204,7 @@ register_node(false,"farming:hemp_rope", { --- Wooden scarecrow base -register_node(false,"farming:scarecrow_bottom", { +minetest.register_node("farming:scarecrow_bottom", { description = S("Scarecrow Bottom"), paramtype = "light", sunlight_propagates = true, @@ -208,7 +230,7 @@ if not farming.mcl then -- Wooden bowl - register_craftitem(true,"farming:bowl", { + minetest.register_craftitem("farming:bowl", { description = S("Wooden Bowl"), inventory_image = "farming_bowl.png", groups = {food_bowl = 1, flammable = 2} @@ -216,7 +238,7 @@ if not farming.mcl then -- String - register_craftitem(true,"farming:string", { + minetest.register_craftitem("farming:string", { description = S("String"), inventory_image = "farming_string.png", groups = {flammable = 2} @@ -224,7 +246,7 @@ if not farming.mcl then -- Jack 'O Lantern - register_node(farming.pumpkin,"farming:jackolantern", { + minetest.register_node("farming:jackolantern", { description = S("Jack 'O Lantern (punch to turn on and off)"), tiles = { "farming_pumpkin_bottom.png^farming_pumpkin_top.png", @@ -251,7 +273,7 @@ if not farming.mcl then _mcl_blast_resistance = 1 }) - register_node(farming.pumpkin,"farming:jackolantern_on", { + minetest.register_node("farming:jackolantern_on", { tiles = { "farming_pumpkin_bottom.png^farming_pumpkin_top.png", "farming_pumpkin_bottom.png", diff --git a/mods/farming/item_recipes.lua b/mods/farming/item_recipes.lua index 2b51729e..69aa770d 100644 --- a/mods/farming/item_recipes.lua +++ b/mods/farming/item_recipes.lua @@ -1,15 +1,9 @@ local a = farming.recipe_items -local function register_craft(condition,def) - if condition then - core.register_craft(def) - end -end - -- flour recipes -register_craft(farming.grains,{ +minetest.register_craft({ output = "farming:flour", recipe = { {"farming:rye", "farming:rye", "farming:rye"}, @@ -18,7 +12,7 @@ register_craft(farming.grains,{ replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} }) -register_craft(farming.barley,{ +minetest.register_craft({ output = "farming:flour", recipe = { {"farming:barley", "farming:barley", "farming:barley"}, @@ -27,7 +21,7 @@ register_craft(farming.barley,{ replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} }) -register_craft(farming.grains,{ +minetest.register_craft({ output = "farming:flour", recipe = { {"farming:oat", "farming:oat", "farming:oat"}, @@ -38,7 +32,7 @@ register_craft(farming.grains,{ -- multigrain flour -register_craft(farming.barley and farming.grains,{ +minetest.register_craft({ type = "shapeless", output = "farming:flour_multigrain", recipe = { @@ -50,7 +44,7 @@ register_craft(farming.barley and farming.grains,{ -- multigrain bread -register_craft(farming.grains,{ +minetest.register_craft({ type = "cooking", cooktime = 15, output = "farming:bread_multigrain", @@ -59,7 +53,7 @@ register_craft(farming.grains,{ -- sliced bread -register_craft(true,{ +minetest.register_craft({ output = "farming:bread_slice 5", recipe = {{"group:food_bread", a.cutting_board}}, replacements = {{"group:food_cutting_board", "farming:cutting_board"}} @@ -67,7 +61,7 @@ register_craft(true,{ -- toast -register_craft(true,{ +minetest.register_craft({ type = "cooking", cooktime = 3, output = "farming:toast", @@ -76,7 +70,7 @@ register_craft(true,{ -- toast sandwich -register_craft(true,{ +minetest.register_craft({ output = "farming:toast_sandwich", recipe = { {"farming:bread_slice"}, @@ -87,12 +81,12 @@ register_craft(true,{ -- garlic bulb -register_craft(farming.garlic,{ +minetest.register_craft({ output = "farming:garlic_clove 8", recipe = {{"farming:garlic"}} }) -register_craft(farming.garlic,{ +minetest.register_craft({ output = "farming:garlic", recipe = { {"farming:garlic_clove", "farming:garlic_clove", "farming:garlic_clove"}, @@ -103,7 +97,7 @@ register_craft(farming.garlic,{ -- garlic braid -register_craft(farming.garlic,{ +minetest.register_craft({ output = "farming:garlic_braid", recipe = { {"farming:garlic", "farming:garlic", "farming:garlic"}, @@ -112,7 +106,7 @@ register_craft(farming.garlic,{ } }) -register_craft(farming.garlic,{ +minetest.register_craft({ type = "shapeless", output = "farming:garlic 9", recipe = {"farming:garlic_braid"} @@ -120,7 +114,7 @@ register_craft(farming.garlic,{ -- corn on the cob -register_craft(farming.corn,{ +minetest.register_craft({ type = "cooking", cooktime = 10, output = "farming:corn_cob", @@ -129,7 +123,7 @@ register_craft(farming.corn,{ -- popcorn -register_craft(farming.corn,{ +minetest.register_craft({ output = "farming:popcorn", recipe = { {"group:food_oil", "group:food_corn", a.pot} @@ -142,7 +136,7 @@ register_craft(farming.corn,{ -- cornstarch -register_craft(farming.corn,{ +minetest.register_craft({ output = "farming:cornstarch", recipe = { {a.mortar_pestle, "group:food_corn_cooked", a.baking_tray}, @@ -156,7 +150,7 @@ register_craft(farming.corn,{ -- ethanol -register_craft(farming.corn, { +minetest.register_craft( { output = "farming:bottle_ethanol", recipe = { {"group:food_corn", "group:food_corn", "group:food_corn"}, @@ -167,7 +161,7 @@ register_craft(farming.corn, { -- cup of coffee -register_craft(farming.coffee, { +minetest.register_craft( { output = "farming:coffee_cup", recipe = { {"group:food_coffee", "group:food_glass_water", a.saucepan} @@ -179,7 +173,7 @@ register_craft(farming.coffee, { -- bar of dark chocolate -register_craft(farming.cocoa, { +minetest.register_craft( { output = "farming:chocolate_dark", recipe = { {"group:food_cocoa", "group:food_cocoa", "group:food_cocoa"} @@ -188,7 +182,7 @@ register_craft(farming.cocoa, { -- chocolate block -register_craft(farming.cocoa,{ +minetest.register_craft({ output = "farming:chocolate_block", recipe = { {"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"}, @@ -197,14 +191,14 @@ register_craft(farming.cocoa,{ } }) -register_craft(farming.cocoa,{ +minetest.register_craft({ output = "farming:chocolate_dark 9", recipe = {{"farming:chocolate_block"}} }) -- chili powder -register_craft(farming.chili,{ +minetest.register_craft({ output = "farming:chili_powder", recipe = { {"farming:chili_pepper", a.mortar_pestle} @@ -214,7 +208,7 @@ register_craft(farming.chili,{ -- bowl of chili -register_craft(farming.chili and farming.rice and farming.tomato and farming.chili and farming.beans,{ +minetest.register_craft({ output = "farming:chili_bowl", recipe = { {"group:food_chili_pepper", "group:food_rice", "group:food_tomato"}, @@ -224,7 +218,7 @@ register_craft(farming.chili and farming.rice and farming.tomato and farming.chi -- carrot juice -register_craft(farming.carrot,{ +minetest.register_craft({ output = "farming:carrot_juice", recipe = { {a.juicer}, @@ -238,7 +232,7 @@ register_craft(farming.carrot,{ -- blueberry pie -register_craft(farming.blueberry or core.registered_items["default:blueberries"],{ +minetest.register_craft({ output = "farming:blueberry_pie", recipe = { {"group:food_flour", "group:food_sugar", "group:food_blueberries"}, @@ -249,7 +243,7 @@ register_craft(farming.blueberry or core.registered_items["default:blueberries"] -- blueberry muffin -register_craft(farming.blueberry or core.registered_items["default:blueberries"],{ +minetest.register_craft({ output = "farming:muffin_blueberry 2", recipe = { {"group:food_blueberries", "group:food_bread", "group:food_blueberries"} @@ -258,7 +252,7 @@ register_craft(farming.blueberry or core.registered_items["default:blueberries"] -- tomato soup -register_craft(farming.tomato,{ +minetest.register_craft({ output = "farming:tomato_soup", recipe = { {"group:food_tomato"}, @@ -269,7 +263,7 @@ register_craft(farming.tomato,{ -- filter sea water into river water -register_craft(farming.hemp,{ +minetest.register_craft({ output = a.bucket_river_water, recipe = { {"farming:hemp_fibre"}, @@ -280,7 +274,7 @@ register_craft(farming.hemp,{ if farming.mcl then - register_craft(farming.hemp,{ + minetest.register_craft({ output = "mcl_potions:river_water", recipe = { {"farming:hemp_fibre"}, @@ -291,7 +285,7 @@ end -- glass of water -register_craft(true,{ +minetest.register_craft({ output = "farming:glass_water 4", recipe = { {a.drinking_glass, a.drinking_glass}, @@ -301,7 +295,7 @@ register_craft(true,{ replacements = {{a.bucket_river_water, a.bucket_empty}} }) -register_craft(true,{ +minetest.register_craft({ output = "farming:glass_water 4", recipe = { {a.drinking_glass, a.drinking_glass}, @@ -313,7 +307,7 @@ register_craft(true,{ if minetest.get_modpath("bucket_wooden") then - register_craft(farming.hemp,{ + minetest.register_craft({ output = "farming:glass_water 4", recipe = { {a.drinking_glass, a.drinking_glass}, @@ -326,7 +320,7 @@ end -- sugar cube -register_craft(true,{ +minetest.register_craft({ output = "farming:sugar_cube", recipe = { {a.sugar, a.sugar, a.sugar}, @@ -335,14 +329,14 @@ register_craft(true,{ } }) -register_craft(true,{ +minetest.register_craft({ output = a.sugar .. " 9", recipe = {{"farming:sugar_cube"}} }) -- caramel -register_craft(true,{ +minetest.register_craft({ type = "cooking", cooktime = 6, output = "farming:caramel", @@ -351,7 +345,7 @@ register_craft(true,{ -- salt -register_craft(true,{ +minetest.register_craft({ type = "cooking", cooktime = 15, output = "farming:salt", @@ -361,7 +355,7 @@ register_craft(true,{ -- salt crystal -register_craft(true,{ +minetest.register_craft({ output = "farming:salt 9", recipe = { {"farming:salt_crystal", a.mortar_pestle} @@ -369,7 +363,7 @@ register_craft(true,{ replacements = {{"farming:mortar_pestle", "farming:mortar_pestle"}} }) -register_craft(true,{ +minetest.register_craft({ output = "farming:salt_crystal", recipe = { {"farming:salt", "farming:salt", "farming:salt"}, @@ -380,7 +374,7 @@ register_craft(true,{ -- mayonnaise -register_craft(true,{ +minetest.register_craft({ output = "farming:mayonnaise", recipe = { {"group:food_olive_oil", "group:food_lemon"}, @@ -391,7 +385,7 @@ register_craft(true,{ -- rose water -register_craft(true,{ +minetest.register_craft({ output = "farming:rose_water", recipe = { {a.rose, a.rose, a.rose}, @@ -406,7 +400,7 @@ register_craft(true,{ -- turkish delight -register_craft(true,{ +minetest.register_craft({ output = "farming:turkish_delight 4", recipe = { {"group:food_gelatin", "group:food_sugar", "group:food_gelatin"}, @@ -422,7 +416,7 @@ register_craft(true,{ -- garlic bread -register_craft(farming.garlic,{ +minetest.register_craft({ output = "farming:garlic_bread", recipe = { {"group:food_toast", "group:food_garlic_clove", "group:food_garlic_clove"} @@ -431,7 +425,7 @@ register_craft(farming.garlic,{ -- donuts -register_craft(true,{ +minetest.register_craft({ output = "farming:donut 3", recipe = { {"", "group:food_wheat", ""}, @@ -440,7 +434,7 @@ register_craft(true,{ } }) -register_craft(farming.cocoa,{ +minetest.register_craft({ output = "farming:donut_chocolate", recipe = { {"group:food_cocoa"}, @@ -448,7 +442,7 @@ register_craft(farming.cocoa,{ } }) -register_craft(true,{ +minetest.register_craft({ output = "farming:donut_apple", recipe = { {"group:food_apple"}, @@ -458,7 +452,7 @@ register_craft(true,{ -- porridge oats -register_craft(farming.grains and farming.soy,{ +minetest.register_craft({ output = "farming:porridge", recipe = { {"group:food_oats", "group:food_oats", "group:food_oats"}, @@ -472,7 +466,7 @@ register_craft(farming.grains and farming.soy,{ -- jaffa cake -register_craft(farming.soy,{ +minetest.register_craft({ output = "farming:jaffa_cake 3", recipe = { {a.baking_tray, "group:food_egg", "group:food_sugar"}, @@ -489,7 +483,7 @@ register_craft(farming.soy,{ -- apple pie -register_craft(true,{ +minetest.register_craft({ output = "farming:apple_pie", recipe = { {a.flour, "group:food_sugar", "group:food_apple"}, @@ -500,7 +494,7 @@ register_craft(true,{ -- cactus juice -register_craft(true,{ +minetest.register_craft({ output = "farming:cactus_juice", recipe = { {a.juicer}, @@ -514,7 +508,7 @@ register_craft(true,{ -- pasta -register_craft(true,{ +minetest.register_craft({ output = "farming:pasta", recipe = { {a.flour, "group:food_butter", a.mixing_bowl} @@ -522,7 +516,7 @@ register_craft(true,{ replacements = {{"group:food_mixing_bowl", "farming:mixing_bowl"}} }) -register_craft(true,{ +minetest.register_craft({ output = "farming:pasta", recipe = { {a.flour, "group:food_oil", a.mixing_bowl} @@ -535,7 +529,7 @@ register_craft(true,{ -- mac & cheese -register_craft(true,{ +minetest.register_craft({ output = "farming:mac_and_cheese", recipe = { {"group:food_pasta", "group:food_cheese", "group:food_bowl"} @@ -544,7 +538,7 @@ register_craft(true,{ -- spaghetti -register_craft(farming.garlic and farming.tomato,{ +minetest.register_craft({ output = "farming:spaghetti", recipe = { {"group:food_pasta", "group:food_tomato", a.saucepan}, @@ -555,7 +549,7 @@ register_craft(farming.garlic and farming.tomato,{ -- korean bibimbap -register_craft(farming.chili and farming.rice and farming.chili and farming.cabbage,{ +minetest.register_craft({ output = "farming:bibimbap", recipe = { {a.skillet, "group:food_bowl", "group:food_egg"}, @@ -565,7 +559,7 @@ register_craft(farming.chili and farming.rice and farming.chili and farming.cabb replacements = {{"group:food_skillet", "farming:skillet"}} }) -register_craft(farming.chili and farming.cabbage and farming.carrot and farming.chili,{ +minetest.register_craft({ output = "farming:bibimbap", type = "shapeless", recipe = { @@ -578,7 +572,7 @@ register_craft(farming.chili and farming.cabbage and farming.carrot and farming. -- burger -register_craft(farming.lettuce and farming.tomato,{ +minetest.register_craft({ output = "farming:burger", recipe = { {a.bread, "group:food_meat", "group:food_cheese"}, @@ -589,7 +583,7 @@ register_craft(farming.lettuce and farming.tomato,{ -- salad -register_craft(farming.lettuce and farming.tomato,{ +minetest.register_craft({ output = "farming:salad", type = "shapeless", recipe = { @@ -600,7 +594,7 @@ register_craft(farming.lettuce and farming.tomato,{ -- triple berry smoothie -register_craft(farming.raspberry and farming.blackberry and farming.strawberry,{ +minetest.register_craft({ output = "farming:smoothie_berry", type = "shapeless", recipe = { @@ -612,7 +606,7 @@ register_craft(farming.raspberry and farming.blackberry and farming.strawberry,{ -- patatas a la importancia -register_craft(farming.garlic and farming.parsley and farming.potato and farming.onion,{ +minetest.register_craft({ output = "farming:spanish_potatoes", recipe = { {"group:food_potato", "group:food_parsley", "group:food_potato"}, @@ -624,7 +618,7 @@ register_craft(farming.garlic and farming.parsley and farming.potato and farming -- potato omelette -register_craft(farming.onion and farming.potato,{ +minetest.register_craft({ output = "farming:potato_omelet", recipe = { {"group:food_egg", "group:food_potato", "group:food_onion"}, @@ -635,7 +629,7 @@ register_craft(farming.onion and farming.potato,{ -- paella -register_craft(farming.peas and farming.pepper and farming.rice,{ +minetest.register_craft({ output = "farming:paella", recipe = { {"group:food_rice", a.dye_orange, "farming:pepper_red"}, @@ -647,7 +641,7 @@ register_craft(farming.peas and farming.pepper and farming.rice,{ -- vanilla flan -register_craft(farming.vanilla and farming.soy,{ +minetest.register_craft({ output = "farming:flan", recipe = { {"group:food_sugar", "group:food_milk", "farming:caramel"}, @@ -663,7 +657,7 @@ register_craft(farming.vanilla and farming.soy,{ -- vegan cheese -register_craft(farming.corn and farming.pepper and farming.soy,{ +minetest.register_craft({ output = "farming:cheese_vegan", recipe = { {"farming:soy_milk", "farming:soy_milk", "farming:soy_milk"}, @@ -677,7 +671,7 @@ register_craft(farming.corn and farming.pepper and farming.soy,{ } }) -register_craft(farming.pepper and farming.soy,{ +minetest.register_craft({ output = "farming:cheese_vegan", recipe = { {"farming:soy_milk", "farming:soy_milk", "farming:soy_milk"}, @@ -692,7 +686,7 @@ register_craft(farming.pepper and farming.soy,{ -- vegan butter -register_craft(farming.soy and farming.sunflower,{ +minetest.register_craft({ output = "farming:butter_vegan", recipe = { {"farming:soy_milk", "farming:sunflower_oil", "farming:soy_milk"}, @@ -707,7 +701,7 @@ register_craft(farming.soy and farming.sunflower,{ -- onigiri -register_craft(farming.rice,{ +minetest.register_craft({ output = "farming:onigiri", recipe = { {"group:food_rice", "group:food_salt", "group:food_rice"}, @@ -717,7 +711,7 @@ register_craft(farming.rice,{ -- gyoza -register_craft(farming.cabbage and farming.garlic and farming.onion,{ +minetest.register_craft({ output = "farming:gyoza 4", recipe = { {"group:food_cabbage", "group:food_garlic_clove", "group:food_onion"}, @@ -732,7 +726,7 @@ register_craft(farming.cabbage and farming.garlic and farming.onion,{ -- mochi -register_craft(farming.rice,{ +minetest.register_craft({ output = "farming:mochi", recipe = { {"", a.mortar_pestle, ""}, @@ -747,7 +741,7 @@ register_craft(farming.rice,{ -- gingerbread man -register_craft(farming.ginger,{ +minetest.register_craft({ output = "farming:gingerbread_man 3", recipe = { {"", "group:food_egg", ""}, @@ -758,7 +752,7 @@ register_craft(farming.ginger,{ -- mint tea -register_craft(farming.mint,{ +minetest.register_craft({ output = "farming:mint_tea", recipe = { {"group:food_mint", "group:food_mint", "group:food_mint"}, @@ -771,7 +765,7 @@ register_craft(farming.mint,{ -- onion soup -register_craft(farming.onion,{ +minetest.register_craft({ output = "farming:onion_soup", recipe = { {"group:food_onion", "group:food_onion", "group:food_onion"}, @@ -783,7 +777,7 @@ register_craft(farming.onion,{ -- pea soup -register_craft(farming.peas,{ +minetest.register_craft({ output = "farming:pea_soup", recipe = { {"group:food_peas"}, @@ -794,7 +788,7 @@ register_craft(farming.peas,{ -- ground pepper -register_craft(farming.pepper, { +minetest.register_craft( { output = "farming:pepper_ground", recipe = { {"group:food_peppercorn"}, @@ -806,7 +800,7 @@ register_craft(farming.pepper, { -- pineapple ring -register_craft(farming.pineapple, { +minetest.register_craft( { output = "farming:pineapple_ring 5", recipe = {{"group:food_pineapple"}}, replacements = {{"farming:pineapple", "farming:pineapple_top"}} @@ -814,7 +808,7 @@ register_craft(farming.pineapple, { -- pineapple juice -register_craft(farming.pineapple,{ +minetest.register_craft({ output = "farming:pineapple_juice", recipe = { {"group:food_pineapple_ring", "group:food_pineapple_ring", @@ -827,7 +821,7 @@ register_craft(farming.pineapple,{ } }) -register_craft(farming.pineapple,{ +minetest.register_craft({ output = "farming:pineapple_juice 2", recipe = { {a.drinking_glass, "group:food_pineapple", a.drinking_glass}, @@ -840,7 +834,7 @@ register_craft(farming.pineapple,{ -- potato & cucumber salad -register_craft(farming.cucumber and farming.potato,{ +minetest.register_craft({ output = "farming:potato_salad", recipe = { {"group:food_cucumber"}, @@ -851,7 +845,7 @@ register_craft(farming.cucumber and farming.potato,{ -- melon slice / block -register_craft(farming.melon,{ +minetest.register_craft({ output = "farming:melon_8", recipe = { {"farming:melon_slice", "farming:melon_slice"}, @@ -859,7 +853,7 @@ register_craft(farming.melon,{ } }) -register_craft(farming.melon,{ +minetest.register_craft({ output = "farming:melon_slice 4", recipe = {{"farming:melon_8", a.cutting_board}}, replacements = {{"farming:cutting_board", "farming:cutting_board"}} @@ -867,7 +861,7 @@ register_craft(farming.melon,{ -- pumpkin slice / block -register_craft(farming.pumpkin,{ +minetest.register_craft({ output = "farming:pumpkin", recipe = { {"farming:pumpkin_slice", "farming:pumpkin_slice"}, @@ -875,7 +869,7 @@ register_craft(farming.pumpkin,{ } }) -register_craft(farming.pumpkin,{ +minetest.register_craft({ output = "farming:pumpkin_slice 4", recipe = {{"farming:pumpkin", a.cutting_board}}, replacements = {{"farming:cutting_board", "farming:cutting_board"}} @@ -883,7 +877,7 @@ register_craft(farming.pumpkin,{ -- pumpkin dough -register_craft(farming.pumpkin,{ +minetest.register_craft({ output = "farming:pumpkin_dough", recipe = { {"group:food_pumpkin_slice", "group:food_flour", "group:food_pumpkin_slice"} @@ -892,7 +886,7 @@ register_craft(farming.pumpkin,{ -- pumpkin bread -register_craft(farming.pumpkin,{ +minetest.register_craft({ type = "cooking", output = "farming:pumpkin_bread", recipe = "farming:pumpkin_dough", @@ -901,7 +895,7 @@ register_craft(farming.pumpkin,{ -- raspberry smoothie -register_craft(farming.raspberry,{ +minetest.register_craft({ output = "farming:smoothie_raspberry", recipe = { {a.snow}, @@ -912,7 +906,7 @@ register_craft(farming.raspberry,{ -- rhubarb pie -register_craft(farming.rhubarb,{ +minetest.register_craft({ output = "farming:rhubarb_pie", recipe = { {a.baking_tray, "group:food_sugar", ""}, @@ -924,7 +918,7 @@ register_craft(farming.rhubarb,{ -- rice flour -register_craft(farming.rice,{ +minetest.register_craft({ output = "farming:rice_flour", recipe = { {"farming:rice", "farming:rice", "farming:rice"}, @@ -935,7 +929,7 @@ register_craft(farming.rice,{ -- rice bread -register_craft(farming.rice,{ +minetest.register_craft({ type = "cooking", cooktime = 15, output = "farming:rice_bread", @@ -944,7 +938,7 @@ register_craft(farming.rice,{ -- soy sauce -register_craft(farming.soy, { +minetest.register_craft( { output = "farming:soy_sauce", recipe = { {"group:food_soy", "group:food_salt", "group:food_soy"}, @@ -958,7 +952,7 @@ register_craft(farming.soy, { -- soy milk -register_craft(farming.soy and farming.vanilla and farming.corn, { +minetest.register_craft( { output = "farming:soy_milk", recipe = { {"group:food_soy", "group:food_soy", "group:food_soy"}, @@ -972,7 +966,7 @@ register_craft(farming.soy and farming.vanilla and farming.corn, { -- tofu -register_craft(farming.soy,{ +minetest.register_craft({ output = "farming:tofu", recipe = { {"group:food_soy", "group:food_soy", "group:food_soy"}, @@ -983,7 +977,7 @@ register_craft(farming.soy,{ -- cooked tofu -register_craft(true,{ +minetest.register_craft({ type = "cooking", output = "farming:tofu_cooked", recipe = "farming:tofu", @@ -992,7 +986,7 @@ register_craft(true,{ -- vanilla extract -register_craft(farming.corn and farming.vanilla, { +minetest.register_craft( { output = "farming:vanilla_extract", recipe = { {"group:food_vanilla", "group:food_vanilla", "group:food_vanilla"}, @@ -1005,7 +999,7 @@ register_craft(farming.corn and farming.vanilla, { -- jerusalem artichokes -register_craft(farming.artichoke and farming.soy and farming.garlic,{ +minetest.register_craft({ output = "farming:jerusalem_artichokes", recipe = { {"group:food_artichoke", "group:food_garlic_clove", "group:food_artichoke"}, @@ -1017,7 +1011,7 @@ register_craft(farming.artichoke and farming.soy and farming.garlic,{ -- wooden scarecrow base -register_craft(farming.pumpkin,{ +minetest.register_craft({ output = "farming:scarecrow_bottom", recipe = { {"", "group:stick", ""}, @@ -1028,7 +1022,7 @@ register_craft(farming.pumpkin,{ -- beanpole -register_craft(farming.beans,{ +minetest.register_craft({ output = "farming:beanpole", recipe = { {"", "", ""}, @@ -1039,7 +1033,7 @@ register_craft(farming.beans,{ -- trellis -register_craft(farming.grapes,{ +minetest.register_craft({ output = "farming:trellis", recipe = { {"group:stick", "group:stick", "group:stick"}, @@ -1050,7 +1044,7 @@ register_craft(farming.grapes,{ -- cotton to wool -register_craft(true,{ +minetest.register_craft({ output = a.wool, recipe = { {"farming:cotton", "farming:cotton"}, @@ -1060,7 +1054,7 @@ register_craft(true,{ -- string -register_craft(true,{ +minetest.register_craft({ output = a.string .. " 2", recipe = { {"farming:cotton"}, @@ -1068,9 +1062,18 @@ register_craft(true,{ } }) +minetest.register_craft( { + output = "farming:cotton 3", + recipe = { + {"farming:hemp_fibre"}, + {"farming:hemp_fibre"}, + {"farming:hemp_fibre"} + } +}) + -- saucepan -register_craft(true,{ +minetest.register_craft({ output = "farming:saucepan", recipe = { {a.steel_ingot, "", ""}, @@ -1080,7 +1083,7 @@ register_craft(true,{ -- cooking pot -register_craft(true,{ +minetest.register_craft({ output = "farming:pot", recipe = { {"group:stick", a.steel_ingot, a.steel_ingot}, @@ -1090,7 +1093,7 @@ register_craft(true,{ -- baking tray -register_craft(true,{ +minetest.register_craft({ output = "farming:baking_tray", recipe = { {a.clay_brick, a.clay_brick, a.clay_brick}, @@ -1101,7 +1104,7 @@ register_craft(true,{ -- skillet -register_craft(true,{ +minetest.register_craft({ output = "farming:skillet", recipe = { {a.steel_ingot, "", ""}, @@ -1112,7 +1115,7 @@ register_craft(true,{ -- mortar & pestle -register_craft(true,{ +minetest.register_craft({ output = "farming:mortar_pestle", recipe = { {"group:stone", "group:stick", "group:stone"}, @@ -1122,7 +1125,7 @@ register_craft(true,{ -- cutting board -register_craft(true,{ +minetest.register_craft({ output = "farming:cutting_board", recipe = { {a.steel_ingot, "", ""}, @@ -1133,7 +1136,7 @@ register_craft(true,{ -- juicer -register_craft(true,{ +minetest.register_craft({ output = "farming:juicer", recipe = { {"", "group:stone", ""}, @@ -1143,7 +1146,7 @@ register_craft(true,{ -- glass mixing bowl -register_craft(true,{ +minetest.register_craft({ output = "farming:mixing_bowl", recipe = { {a.glass, "group:stick", a.glass}, @@ -1151,14 +1154,14 @@ register_craft(true,{ } }) -register_craft(true, { +minetest.register_craft( { output = "vessels:glass_fragments", recipe = {{"farming:mixing_bowl"}} }) -- hemp oil -register_craft(farming.hemp, { +minetest.register_craft( { output = "farming:hemp_oil", recipe = { {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}, @@ -1167,7 +1170,7 @@ register_craft(farming.hemp, { } }) -register_craft(farming.hemp, { +minetest.register_craft( { output = "farming:hemp_oil", recipe = { {"farming:seed_hemp", "farming:seed_hemp", "farming:seed_hemp"}, @@ -1178,7 +1181,7 @@ register_craft(farming.hemp, { -- hemp fibre -register_craft(farming.hemp, { +minetest.register_craft( { output = "farming:hemp_fibre 8", recipe = { {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}, @@ -1190,7 +1193,7 @@ register_craft(farming.hemp, { if minetest.get_modpath("bucket_wooden") then - register_craft(farming.hemp, { + minetest.register_craft( { output = "farming:hemp_fibre 8", recipe = { {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}, @@ -1203,7 +1206,7 @@ end -- hemp block -register_craft(farming.hemp, { +minetest.register_craft( { output = "farming:hemp_block", recipe = { {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"}, @@ -1214,7 +1217,7 @@ register_craft(farming.hemp, { -- hemp rope -register_craft(farming.hemp, { +minetest.register_craft( { output = "farming:hemp_rope 6", recipe = { {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"}, @@ -1225,7 +1228,7 @@ register_craft(farming.hemp, { -- paper -register_craft(farming.hemp, { +minetest.register_craft( { output = a.paper .. " 3", recipe = { {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"} @@ -1236,7 +1239,7 @@ register_craft(farming.hemp, { local tmp = farming.mcl and "farming:rye" or "farming:wheat" -register_craft(true,{ +minetest.register_craft({ output = "farming:straw 3", recipe = { {tmp, tmp, tmp}, @@ -1245,18 +1248,37 @@ register_craft(true,{ } }) -register_craft(true,{ +minetest.register_craft({ output = tmp .. " 3", recipe = {{"farming:straw"}} }) + +-- weed bale + +local tmp = "farming:weed" + +minetest.register_craft({ + output = "farming:weed_bale", + recipe = { + {tmp, tmp, tmp}, + {tmp, tmp, tmp}, + {tmp, tmp, tmp} + } +}) + +minetest.register_craft({ + output = tmp .. " 9", + recipe = {{"farming:weed_bale"}} +}) + --= Recipes we shouldn't add when using Mineclonia/VoxeLibre if not farming.mcl then -- Wheat flour - register_craft(true,{ + minetest.register_craft({ output = "farming:flour", recipe = { {"farming:wheat", "farming:wheat", "farming:wheat"}, @@ -1267,7 +1289,7 @@ if not farming.mcl then -- Bread - register_craft(true,{ + minetest.register_craft({ type = "cooking", cooktime = 15, output = "farming:bread", @@ -1276,7 +1298,7 @@ if not farming.mcl then -- Cocoa beans - register_craft(farming.cocoa,{ + minetest.register_craft({ type = "cooking", cooktime = 5, output = "farming:cocoa_beans", @@ -1285,7 +1307,7 @@ if not farming.mcl then -- Chocolate cookie - register_craft(farming.cocoa, { + minetest.register_craft( { output = "farming:cookie 8", recipe = { {"group:food_wheat", "group:food_cocoa", "group:food_wheat" } @@ -1294,14 +1316,14 @@ if not farming.mcl then -- Golden carrot - register_craft(farming.carrot,{ + minetest.register_craft({ output = "farming:carrot_gold", recipe = {{"group:food_carrot", "default:gold_lump"}} }) -- Beetroot soup - register_craft(farming.beetroot,{ + minetest.register_craft({ output = "farming:beetroot_soup", recipe = { {"group:food_beetroot", "group:food_beetroot", "group:food_beetroot"}, @@ -1311,7 +1333,7 @@ if not farming.mcl then -- Sugar - register_craft(true,{ + minetest.register_craft({ type = "cooking", cooktime = 3, output = "farming:sugar 2", @@ -1320,7 +1342,7 @@ if not farming.mcl then -- Baked potato - register_craft(farming.potato,{ + minetest.register_craft({ type = "cooking", cooktime = 10, output = "farming:baked_potato", @@ -1329,7 +1351,7 @@ if not farming.mcl then -- Toasted sunflower seeds - register_craft(farming.sunflower,{ + minetest.register_craft({ type = "cooking", cooktime = 10, output = "farming:sunflower_seeds_toasted", @@ -1340,7 +1362,7 @@ if not farming.mcl then local tmp = "group:food_sunflower_seeds" - register_craft(farming.sunflower, { + minetest.register_craft( { output = "farming:sunflower_oil", recipe = { {tmp, tmp, tmp}, @@ -1351,7 +1373,7 @@ if not farming.mcl then -- Sunflower seed bread - register_craft(farming.sunflower,{ + minetest.register_craft({ output = "farming:sunflower_bread", recipe = { { @@ -1364,7 +1386,7 @@ if not farming.mcl then -- Jack 'o lantern - register_craft(farming.pumpkin,{ + minetest.register_craft({ output = "farming:jackolantern", recipe = { {"default:torch"}, @@ -1374,7 +1396,7 @@ if not farming.mcl then -- Wooden bowl - register_craft(true,{ + minetest.register_craft({ output = "farming:bowl 4", recipe = { {"group:wood", "", "group:wood"}, @@ -1385,34 +1407,36 @@ end -- dye recipes -register_craft(farming.beans,{output = a.dye_green, recipe = {{"farming:beans"}}}) -register_craft(farming.beetroot,{output = a.dye_red, recipe = {{"group:food_beetroot"}}}) -register_craft(farming.blueberry,{output = a.dye_blue, recipe = {{"farming:blueberries"}}}) -register_craft(farming.chili,{output = a.dye_red, recipe = {{"farming:chili_pepper"}}}) -register_craft(farming.cocoa,{output = a.dye_brown, recipe = {{"farming:cocoa_beans"}}}) -register_craft(farming.grapes,{output = a.dye_violet, recipe = {{"farming:grapes"}}}) -register_craft(farming.onion,{output = a.dye_yellow, recipe = {{"group:food_onion"}}}) +minetest.register_craft({output = a.dye_green, recipe = {{"farming:beans"}}}) +minetest.register_craft({output = a.dye_red, recipe = {{"group:food_beetroot"}}}) +minetest.register_craft({output = a.dye_blue, recipe = {{"farming:blueberries"}}}) +minetest.register_craft({output = a.dye_red, recipe = {{"farming:chili_pepper"}}}) +minetest.register_craft({output = a.dye_brown, recipe = {{"farming:cocoa_beans"}}}) +minetest.register_craft({output = a.dye_violet, recipe = {{"farming:grapes"}}}) +minetest.register_craft({output = a.dye_yellow, recipe = {{"group:food_onion"}}}) -- fuel items -register_craft(true,{type = "fuel", recipe = "farming:straw", burntime = 3}) -register_craft(true,{type = "fuel", recipe = "farming:wheat", burntime = 1}) -register_craft(true,{type = "fuel", recipe = "farming:bowl",burntime = 10}) -register_craft(true,{type = "fuel", recipe = "farming:string", burntime = 1}) -register_craft(true,{type = "fuel", recipe = "farming:cotton", burntime = 1}) -register_craft(farming.barley,{type = "fuel", recipe = "farming:barley", burntime = 1}) -register_craft(farming.beans,{type = "fuel", recipe = "farming:beanpole", burntime = 10}) -register_craft(farming.grapes,{type = "fuel", recipe = "farming:trellis", burntime = 15}) -register_craft(farming.rice,{type = "fuel", recipe = "farming:rice", burntime = 1}) -register_craft(farming.rice,{type = "fuel", recipe = "farming:rice_bread", burntime = 1}) -register_craft(farming.grains,{type = "fuel", recipe = "farming:bread_multigrain", burntime = 1}) -register_craft(farming.grains,{type = "fuel", recipe = "farming:rye", burntime = 1}) -register_craft(farming.grains,{type = "fuel", recipe = "farming:oat", burntime = 1}) -register_craft(farming.hemp,{type = "fuel", recipe = "farming:hemp_oil", +minetest.register_craft({type = "fuel", recipe = "farming:straw", burntime = 3}) +minetest.register_craft({type = "fuel", recipe = "farming:wheat", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:weed_bale", burntime = 3}) +minetest.register_craft({type = "fuel", recipe = "farming:weed", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:bowl",burntime = 10}) +minetest.register_craft({type = "fuel", recipe = "farming:string", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:cotton", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:barley", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:beanpole", burntime = 10}) +minetest.register_craft({type = "fuel", recipe = "farming:trellis", burntime = 15}) +minetest.register_craft({type = "fuel", recipe = "farming:rice", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:rice_bread", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:bread_multigrain", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:rye", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:oat", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:hemp_oil", burntime = 20, replacements = {{"farming:hemp_oil", a.glass_bottle}}}) -register_craft(farming.corn,{type = "fuel", recipe = "farming:bottle_ethanol", +minetest.register_craft({type = "fuel", recipe = "farming:bottle_ethanol", burntime = 80, replacements = {{"farming:bottle_ethanol", a.glass_bottle}}}) -register_craft(farming.sunflower,{type = "fuel", recipe = "farming:sunflower_oil", +minetest.register_craft({type = "fuel", recipe = "farming:sunflower_oil", burntime = 30, replacements = {{"farming:sunflower_oil", a.glass_bottle}}}) -register_craft(farming.vanilla and farming.corn,{type = "fuel", recipe = "farming:vanilla_extract", +minetest.register_craft({type = "fuel", recipe = "farming:vanilla_extract", burntime = 25, replacements = {{"farming:vanilla_extract", a.glass_bottle}}}) diff --git a/mods/farming/lucky_block.lua b/mods/farming/lucky_block.lua index 5aa5f4c9..5d5f7247 100644 --- a/mods/farming/lucky_block.lua +++ b/mods/farming/lucky_block.lua @@ -105,5 +105,6 @@ lucky_block:add_blocks({ {name = "farming:grapebush", max = 5}, {name = "farming:asparagus", max = 7} }}, - {"dro", {"farming:chili_powder"}, 5} + {"dro", {"farming:chili_powder"}, 5}, + {"dro", {"farming:weed"}, 9}, }) diff --git a/mods/farming/mod.conf b/mods/farming/mod.conf index bcaba216..9e1d4d63 100644 --- a/mods/farming/mod.conf +++ b/mods/farming/mod.conf @@ -2,3 +2,6 @@ name = farming description = Adds many new plants and food into Minetest. optional_depends = default, flowers, mcl_core, mcl_sounds, mcl_farming, mcl_stairs, mcl_flowers, stairs, lucky_block, toolranks min_minetest_version = 5.0 +release = 30697 +author = TenPlus1 +title = Farming Redo diff --git a/mods/farming/settingtypes.txt b/mods/farming/settingtypes.txt index 7573de9d..6eded44d 100644 --- a/mods/farming/settingtypes.txt +++ b/mods/farming/settingtypes.txt @@ -2,3 +2,5 @@ farming_stage_length (Farming Stage Length) float 160.0 farming_use_utensils (Use utensil recipes) bool true + +farming_disable_weeds (Disable Weed growth) bool false diff --git a/mods/farming/soil.lua b/mods/farming/soil.lua index 7572d572..aa6a2c9e 100644 --- a/mods/farming/soil.lua +++ b/mods/farming/soil.lua @@ -194,3 +194,30 @@ minetest.register_abm({ end end }) + +-- those darn weeds + +if minetest.settings:get_bool("farming_disable_weeds") ~= true then + + minetest.register_abm({ + nodenames = {"group:field"}, + neighbors = {"air"}, + interval = 50, + chance = 35, + catch_up = false, + + action = function(pos, node) + + if minetest.find_node_near(pos, 4, {"farming:scarecrow_bottom"}) then + return + end + + pos.y = pos.y + 1 + + if minetest.get_node(pos).name == "air" then + minetest.set_node(pos, {name = "farming:weed", param2 = 2}) + end + end + }) +end + diff --git a/mods/farming/textures/farming_weed.png b/mods/farming/textures/farming_weed.png new file mode 100644 index 00000000..8d65d182 Binary files /dev/null and b/mods/farming/textures/farming_weed.png differ diff --git a/mods/farming/textures/farming_weed_bale_side.png b/mods/farming/textures/farming_weed_bale_side.png new file mode 100644 index 00000000..7344c22a Binary files /dev/null and b/mods/farming/textures/farming_weed_bale_side.png differ diff --git a/mods/farming/textures/farming_weed_bale_top.png b/mods/farming/textures/farming_weed_bale_top.png new file mode 100644 index 00000000..648423b9 Binary files /dev/null and b/mods/farming/textures/farming_weed_bale_top.png differ diff --git a/mods/leads/CHANGELOG.md b/mods/leads/CHANGELOG.md new file mode 100644 index 00000000..afeed4eb --- /dev/null +++ b/mods/leads/CHANGELOG.md @@ -0,0 +1,155 @@ +Leads Changelog +=============== + +0.3.2 (2024-01-18) +------------------ + +### Additions + +- Added German translation (contributed by Kyoushi). + + +### Changes + +- Increased default pull force. + + +### Fixes + +- Leads can no longer be attached to fence gates (reported by Nathan Salapat). +- Lead knots now break when the post is removed (reported by Nathan Salapat). + + +0.3.1 (2023-12-27) +------------------ + +### Fixes + +- Fixed a bug causing MineClone to crash whenever an enderman places a block (reported by Kyoushi). + + +0.3.0 (2023-12-21) +------------------ + +### Additions + +- Added slack models, which can be enabled or disabled in the settings. +- Added a setting to change lead strength. +- Added a ‘Symmetrical physics’ setting. +- You can now hold Sneak to attach a new lead to a fence instead of tying the lead you're holding. + + +### Changes + +- Object mass is now taken into account during physics calculations. +- Right-clicking a leashable entity while holding a knotted lead now attaches the entity to the lead instead of making a new lead (suggested by erlehmann). +- Tweaked lead physics. +- Leads now have an overextension timer instead of breaking immediately. +- Lead entities now preserve the metadata of the lead item, not just the name. +- Changed the scale of lead models. +- Improved performance by eliminating unnecessary property updates for lead entities. +- Improved protection and ownership logic. +- Protection now applies to all objects, not just knots. +- Reduced the impact of lag by limiting dtime in physics calculations. +- Lead length is now limited to avoid generating extremely large textures (suggested by my computer crashing). +- Improved performance when finding leads attached to an object. +- Protection no longer applies to players with the `protection_bypass` privilege. + + +### Fixes + +- Leads can no longer be knotted to fence rails (reported by erlehmann). +- You can now break a lead or knot while holding a lead item (reported by erlehmann). +- Fixed lead items preventing nodes' right-click handlers. +- Breaking a lead in creative mode no longer gives you a lead item if you already have one. +- Aux1+clicking an entity no longer requires the player to be holding a lead item. +- Fixed a bug preventing leads from working on players. + + +### API Changes + +- Custom lead items can now specify the texture of the lead entity with `_leads_texture`. +- Custom lead items can now override the lead's strength with `_leads_strength`. +- Entities can now customise behaviour when punched or right-clicked while holding a lead item with `_leads_on_interact`. + + +0.2.2 (2023-11-27) +------------------ + +### Fixes + +- Fixed a bug preventing custom placement behaviour when placing nodes against fences (reported by laireia). +- Fixed a crash when another mod registers a node with a forced name after Leads is loaded. + + +0.2.1 (2023-10-08) +------------------ + + +### Additions + +- Added ‘Item drop mode’ setting. + + +### Fixes + +- Fixed missing `settingtypes.txt`. +- Fixed lead items not dropping when broken on MineClone. +- Fixed lead items being consumed when clicking on a non-knottable node. + + +0.2.0 (2023-07-26) +------------------ + +### Additions + +- Added item documentation. +- Added Asuna to the list of supported games. +- Added a setting to prevent players from leashing mobs owned by other players (suggested by fluxionary). +- Added a setting to prevent players from leashing unowned mobs. +- Added settings to allow or disallow leashing each object type (suggested by fluxionary). + + +### Changes + +- Added Object UUIDs support. Objects are now identified by UUID where possible.| +- The 5.7+ selection box is now enabled by default. +- Cropped the in-game screenshot to 3:2. +- Tweaked the texture mapping on lead objects to improve shading. +- Leads can now be tied to bamboo from Bamboo Forest. +- Adding and removing knots now respects protection (suggested by fluxionary). This can be disabled in the settings. +- The ‘Allow leashing any entity’ setting has been renamed to ‘Allow leashing any object’, as it now includes players. + + +0.1.0 (2023-03-26) +------------------ + +### Additions + +- Added more chat messages when failing to use a lead. +- Added sound effects (suggested by Wuzzy). +- Added a list of supported games to mod.conf. +- Added Hades Revisited support. +- Added Exile support. + + +### Changes + +- Chat messages are now disabled by default (suggested by Wuzzy). +- Leads no longer break instantly when placed in an overly stretched position. +- Players are now blocked from interacting with the world for a moment after breaking a lead or knot, to prevent accidentally breaking the node behind it. +- Leads can now be tied to mechanical railway signals. + + +### Fixes + +- Fixed smoke puffs when removing a lead or knot in multiplayer (reported by Wuzzy). +- Fixed lead items being consumed even if the lead failed to spawn. +- Fixed leads jumping to another knot when untied. +- Added a workaround for a bug in Lord of the Test preventing fences from being supported. + + +0.0.0 (2023-03-20) +------------------ + +- Initial release. diff --git a/mods/leads/LICENCE.md b/mods/leads/LICENCE.md new file mode 100644 index 00000000..de095d67 --- /dev/null +++ b/mods/leads/LICENCE.md @@ -0,0 +1,110 @@ +Leads Licence +============= + +Licence of Code +--------------- + +Copyright © 2023, Silver Sandstone <@SilverSandstone@craftodon.social> + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + + +Licence of Assets +----------------- + +- `leads_lead_inv.png` +- `leads_lead_knot.png` + - From [Pixel Perfection Legacy] by [XSSheep], [freejusticehere], and [Nova_Wostra], + licensed under the [Creative Commons Attribution-ShareAlike 4.0 International Licence][CC BY-SA 4.0]. + +- `leads_lead.png` + - Based on `lead_knot.png` from [Pixel Perfection Legacy] by [XSSheep], [freejusticehere], and [Nova_Wostra], + licensed under the [Creative Commons Attribution-ShareAlike 4.0 International Licence][CC BY-SA 4.0]. + - Modifications: + - Converted from knot to lead. + +- `leads_attach.ogg` +- `leads_remove.ogg` + - Based on [leather rustle 3] by [Samulis], + licensed under the [Creative Commons Attribution 3.0 Unported Licence][CC BY 3.0]. + - Modifications: + - Slowed down. + - Cropped. + - Applied envelope. + +- `leads_stretch.1.ogg` +- `leads_stretch.2.ogg` + - Based on [Leather Creak / Stretching] by [IENBA], + dedicated to the public domain via [Creative Commons Zero][CC0 1.0]. + - Modifications: + - Cropped. + +- `leads_break.ogg` + - Based on [Twigs snapping] by [giddster], + dedicated to the public domain via [Creative Commons Zero][CC0 1.0]. + - Based on [Wooden Twangs--2.flac] by [D.jones], + dedicated to the public domain via [Creative Commons Zero][CC0 1.0]. + - Modifications: + - Cropped. + - Combined. + - Applied envelope. + - Changed speed. + +- `leads_lead.bbmodel` * +- `leads_lead.obj` +- `leads_lead_knot.bbmodel` * +- `leads_lead_knot.obj` +- `leads_lead_slack.bbmodel` * +- `leads_lead_slack1.obj` +- `leads_lead_slack2.obj` +- `leads_lead_slack3.obj` +- `leads_lead_slack4.obj` +- `leads_lead_slack5.obj` +- `leads_lead_slack6.obj` +- `leads_lead_slack7.obj` +- `leads_lead_slack8.obj` +- `leads_lead_slack9.obj` +- `leads_lead_slack10.obj` +- `leads_lead_slack11.obj` +- `leads_lead_slack12.obj` + - Created by [Silver Sandstone], + dedicated to the public domain via [Creative Commons Zero][CC0 1.0]. + +(* Excluding embedded textures, which are listed above.) + + +[Pixel Perfection]: https://www.planetminecraft.com/texture-pack/131pixel-perfection/ "Pixel Perfection on Planet Minecraft" +[Pixel Perfection Legacy]: https://www.planetminecraft.com/texture-pack/pixel-perfection-chorus-edit/ "Pixel Perfection Legacy on Planet Minecraft" +[leather rustle 3]: https://freesound.org/people/Samulis/sounds/209397/ "leather rustle 3 on Freesound" +[Leather Creak / Stretching]: https://freesound.org/people/IENBA/sounds/536187/ "Leather Creak / Stretching on Freesound" +[Twigs snapping]: https://freesound.org/people/giddster/sounds/437360/ "Twigs snapping on Freesound" +[Wooden Twangs--2.flac]: https://freesound.org/people/D.jones/sounds/521938/ "Wooden Twangs--2.flac on Freesound" + +[Silver Sandstone]: https://content.minetest.net/users/SilverSandstone/ "Silver Sandstone on Minetest ContentDB" +[XSSheep]: https://www.planetminecraft.com/member/xssheep/ "XSSheep on Planet Minecraft" +[freejusticehere]: https://www.minecraftforum.net/members/freejusticehere "freejusticehere on Minecraft Forum" +[Nova_Wostra]: https://www.minecraftforum.net/members/Nova_Wostra "Nova_Wostra on Minecraft Forum" +[Samulis]: https://freesound.org/people/Samulis/ "Samulis on Freesound" +[IENBA]: https://freesound.org/people/IENBA/ "IENBA on Freesound" +[giddster]: https://freesound.org/people/giddster/ "giddster on Freesound" +[D.jones]: https://freesound.org/people/D.jones/ "D.jones on Freesound" + +[CC BY 3.0]: https://creativecommons.org/licenses/by/3.0/ "Creative Commons Attribution 3.0 Unported" +[CC BY-SA 4.0]: https://creativecommons.org/licenses/by-sa/4.0/ "Creative Commons Attribution-ShareAlike 4.0 International" +[CC0 1.0]: https://creativecommons.org/publicdomain/zero/1.0/ "Creative Commons Zero 1.0" diff --git a/mods/leads/README.md b/mods/leads/README.md new file mode 100644 index 00000000..aa8c5800 --- /dev/null +++ b/mods/leads/README.md @@ -0,0 +1,47 @@ +Leads +===== + +[ContentDB](https://content.minetest.net/packages/SilverSandstone/leads/) · +[Codeberg](https://codeberg.org/SilverSandstone/leads) + +This Minetest mod adds leads which can be used for moving animals or +for tethering animals to fence posts. + +Leads can also be attached between two fence posts for decoration. + +Consider installing [Object UUIDs] to prevent leads from disconnecting from mobs when unloaded. + + +Instructions +------------ + +Right-click on an animal with a lead to attach it. +When you're finished, punch the lead to release the animal. + +You can tether a leashed animal by right-clicking a fence post. +Punch the knot to take the lead back, or shift-punch to break it. + +By default, leads can be used on animals, monsters, NPCs, players, and boats. +You can customise this in the settings. + + +Compatibility +------------- + +This mod supports Mobs Redo, Creatura, MineClone2, Mineclonia, Repixture, and Exile. +Other games and mob frameworks may also work. + +Minetest 5.5.0+ server required, Minetest 5.7.0+ client recommended. +If you want to support older clients, disable ‘Long selection box’ in the settings. + + +Licence +------- + +Leads by Silver Sandstone is licensed under the MIT licence, with assets by +various authors under CC BY-SA 4.0 or compatible. + +See `LICENCE.md` for more information. + + +[Object UUIDs]: https://content.minetest.net/packages/SilverSandstone/objectuuids/ "Object UUIDs on Minetest ContentDB" diff --git a/mods/leads/api.lua b/mods/leads/api.lua new file mode 100644 index 00000000..8ad02496 --- /dev/null +++ b/mods/leads/api.lua @@ -0,0 +1,453 @@ +--[[ + Leads — Adds leads for transporting animals to Minetest. + Copyright © 2023, Silver Sandstone <@SilverSandstone@craftodon.social> + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +]] + + +--- Public API functions. +-- @module api + + +local S = leads.S; + + +--- An enumerator of object types. +leads.ObjectType = +{ + PLAYER = 'player'; + ANIMAL = 'animal'; + MONSTER = 'monster'; + NPC = 'npc'; + VEHICLE = 'vehicle'; + OTHER = 'other'; +}; + + +--- Overrides the leashable property of entities. +leads.custom_leashable_entities = +{ + ['boats:boat'] = true; +}; + +--- Overrides the object type of entities. +leads.custom_object_types = +{ + ['boats:boat'] = leads.ObjectType.VEHICLE; +}; + +--- Overrides the knottable property of nodes. +leads.custom_knottable_nodes = +{ + ['ferns:fern_trunk'] = true; + ['ethereal:bamboo'] = true; + ['bambooforest:bamboo'] = true; + ['advtrains:signal_off'] = true; + ['advtrains:signal_on'] = true; + ['advtrains:retrosignal_off'] = true; + ['advtrains:retrosignal_on'] = true; + ['nodes_nature:mahal'] = true; + ['hades_furniture:binding_rusty_bars'] = true; +}; + +--- A table of sound effects for lead events. +leads.sounds = +{ + attach = {name = 'leads_attach', gain = 0.5, pitch = 0.75}; + remove = {name = 'leads_remove', gain = 0.5, pitch = 0.75}; + stretch = {name = 'leads_stretch', gain = 0.25, pitch = 1.25, duration = 2.5}; + snap = {name = 'leads_break', gain = 0.75}; +}; + + +local weak_key_mt = {__mode = 'k'}; +local leads_by_connector_mt = +{ + __mode = 'k'; + __index = function(self, key) + local result = setmetatable({}, weak_key_mt); + self[key] = result; + return result; + end; +}; +leads.leads_by_connector = setmetatable({}, leads_by_connector_mt); + + +--- Creates a lead between two objects. +-- @param leader [ObjectRef] The leader object. +-- @param follower [ObjectRef] The follower object. +-- @param item [string|ItemStack|nil] The lead item, if any. +-- @return [ObjectRef|nil] The lead object, or nil on failure. +-- @return [string|nil] A string describing the error, or nil on success. +function leads.connect_objects(leader, follower, item) + if leads.util.is_same_object(leader, follower) then + return nil, S'You cannot leash something to itself.'; + end; + + item = ItemStack(item); + local item_def = item:get_definition(); + + local l_pos = leader:get_pos(); + local f_pos = follower:get_pos(); + + if leads.settings.debug then + minetest.log(debug.traceback(('[Leads] Connecting L:%s to F:%s.'):format(leads.util.describe_object(leader), leads.util.describe_object(follower)))); + end; + + local centre = (l_pos + f_pos) / 2; + + local object = minetest.add_entity(centre, 'leads:lead'); + if not object then + return nil, S'Failed to create lead.'; + end; + + local entity = object:get_luaentity(); + entity.leader = leader; + entity.follower = follower; + entity:set_item(item); + entity:update_visuals(); + entity:update_objref_ids(); + entity:notify_connector_added(leader, true); + entity:notify_connector_added(follower, false); + minetest.sound_play(leads.sounds.attach, {pos = centre}, true); + return object, nil; +end; + + +--- Checks if the object can be attached to a lead. +-- @param object [ObjectRef] The object to check. +-- @return [boolean] true if the object can be attached to a lead. +function leads.is_leashable(object) + -- All entities allowed in settings: + if leads.settings.allow_leash_all then + return true; + end; + + -- Check settings: + local obj_type = leads.util.get_object_type(object); + if not leads.settings['allow_leash_' .. obj_type] then + return false; + end; + + -- Get entity: + local entity = object:get_luaentity(); + if not entity then + return obj_type == leads.ObjectType.PLAYER; + end; + + -- Custom leashable: + local leashable = entity._leads_leashable or leads.custom_leashable_entities[entity.name]; + if leashable ~= nil then + return leashable; + end; + + -- Mobs: + return leads.util.is_mob(object); +end; + + +--- Checks if the node can have lead knots tied to it. +-- @param name [string] The name of a node. +-- @return [boolean] true if the node is knottable. +function leads.is_knottable(name) + local def = minetest.registered_nodes[name]; + if not def then + return false; + end; + + -- Custom knottable: + local knottable = def._leads_knottable or leads.custom_knottable_nodes[name]; + if knottable ~= nil then + return knottable; + end; + + -- Fence: + if def.drawtype == 'fencelike' or (minetest.get_item_group(name, 'fence') > 0 and not (name:match('.*:fence_rail_.*') or name:match('.*:gate_.*'))) then + return true; + end; + + -- Mese post: + if name:match('.*:mese_post_.*') then + return true; + end; + + -- Lord of the Test fences: + -- (These aren't in group:fence due to a bug.) + if name:match('^lottblocks:fence_.*') then + return true; + end; + + return false; +end; + + +--- Finds a lead connected to the specified leader. +-- If there are multiple matching leads, one is chosen arbitrarily. +-- @param leader [ObjectRef] The player or entity to find leads connected to. +-- @return [ObjectRef|nil] The lead, if any. +function leads.find_lead_by_leader(leader) + for lead in leads.find_connected_leads(leader, true, false) do + return lead; + end; + return nil; +end; + + +--- Finds leads connected to the specified object. +-- @param connector [ObjectRef] The player or entity to find leads connected to. +-- @param accept_leader [boolean] Find leads where the specified object is the leader. +-- @param accept_follower [boolean] Find leads where the specified object is the follower. +-- @return [function] An iterator of (lead: ObjectRef, is_leader: boolean). +function leads.find_connected_leads(connector, accept_leader, accept_follower) + local function _iter() + for lead in pairs(leads.leads_by_connector[connector]) do + local entity = lead:get_luaentity(); + if accept_leader and entity.leader and leads.util.is_same_object(entity.leader, connector) then + coroutine.yield(lead, true); + elseif accept_follower and entity.follower and leads.util.is_same_object(entity.follower, connector) then + coroutine.yield(lead, false); + end; + end; + end; + + return coroutine.wrap(_iter); +end; + + +--- Ties the leader's lead to a post. +-- @param leader [ObjectRef] The leader whose lead to tie. +-- @param pos [vector] Where to tie the knot. +-- @return [ObjectRef|nil] The knot object, or nil on failure. +function leads.knot(leader, pos) + pos = vector.round(pos); + + -- Check protection: + if leads.settings.respect_protection and not minetest.check_player_privs(leader, 'protection_bypass') then + local name = leader and leader:get_player_name() or ''; + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name); + return nil; + end; + end; + + -- Find a lead attached to the player: + local lead = leads.find_lead_by_leader(leader); + if not lead then + return nil; + end; + + -- Create a knot: + local knot = leads.add_knot(pos); + if not knot then + return nil; + end; + + -- Play sound: + minetest.sound_play(leads.sounds.attach, {pos = pos}, true); + + -- Attach the lead to the knot: + lead:get_luaentity():set_leader(knot); + return knot; +end; + + +--- Adds a knot on a fence post, or finds an existing one. +-- @param pos [vector] Where to tie the knot. +-- @return [ObjectRef|nil] A new or existing knot, or nil if creating the knot failed. +function leads.add_knot(pos) + pos = pos:round(); + + for __, object in ipairs(minetest.get_objects_in_area(pos, pos)) do + local entity = object:get_luaentity(); + if entity and entity.name == 'leads:knot' then + return object; + end; + end; + + return minetest.add_entity(pos, 'leads:knot'); +end; + + +--- Checks if the specified object is immobile (cannot be moved with a lead). +-- @param object [ObjectRef|nil] The object to check. +-- @return [boolean] true if the object is immobile. +function leads.is_immobile(object) + local entity = object and object:get_luaentity(); + return entity and entity._leads_immobile or false; +end; + + +--- Checks if the player is allowed to leash the object, according to ownership and mod settings. +-- @param object [ObjectRef|nil] The object to check. +-- @param player [ObjectRef|string|nil] The player trying to leash the object. +-- @return [boolean] true if the player is allowed to leash the object. +function leads.allowed_to_leash(object, player) + local name = ''; + if player == nil then + name = ''; + elseif type(player) == 'string' then + name = player; + else + name = player:get_player_name() or ''; + end; + + -- Players with the 'protection_bypass' privilege can bypass protection and ownership: + if minetest.check_player_privs(name, 'protection_bypass') then + return true; + end; + + -- Players can always leash their own animals: + local owner = leads.util.get_object_owner(object); + if owner == name then + return true; + end; + + -- Players can't leash anything else in protected areas if protection support is enabled: + if leads.settings.respect_protection then + local pos = object:get_pos():round(); + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name); + return false; + end; + end; + + -- Otherwise, use the appropriate setting: + if owner == '' then + return leads.settings.allow_leash_unowned or not leads.util.is_mob(object); + else + return leads.settings.allow_leash_owned_other; + end; +end; + + +--- Implements lead item use. +-- @param itemstack [ItemStack] The player's held item. +-- @param user [ObjectRef] The player using the lead. +-- @param pointed_thing [PointedThing] The pointed-thing. +-- @param is_punch [boolean] true if the interaction is a punch. +-- @return [ItemStack|nil] The leftover itemstack, or nil for no change. +function leads.on_lead_interact(itemstack, user, pointed_thing, is_punch) + local function _message(message) + if leads.settings.chat_messages then + minetest.chat_send_player(user:get_player_name(), message); + end; + end; + + + if pointed_thing.under then + -- Clicking on a node: + local pos = pointed_thing.under; + local node = minetest.get_node(pos); + if not leads.is_knottable(node.name) then + return nil; + end; + + -- Check protection: + if leads.settings.respect_protection and not minetest.check_player_privs(user, 'protection_bypass') then + local name = user and user:get_player_name() or ''; + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name); + return nil; + end; + end; + + -- Create new lead with knot: + local knot = leads.add_knot(pos); + if not knot then + return nil; + end; + leads.connect_objects(user, knot, itemstack:peek_item()); + + else + -- Clicking on an object: + local object = pointed_thing.ref; + if not object then + return nil; + end; + + -- Try the entity's custom lead interact callback: + local entity = object:get_luaentity(); + if entity and entity._leads_on_interact then + local override, result = entity:_leads_on_interact(itemstack, user, pointed_thing, is_punch); + if override then + return result; + end; + end; + + -- The player right-clicked on a knot — try knotting their lead before making a new one: + if entity and entity.name == 'leads:knot' then + if leads.knot(user, object:get_pos()) then + return nil; + end; + end; + + -- Make sure the object is leashable: + if not leads.is_leashable(object) then + _message(S'You cannot leash this.'); + return nil; + end; + + -- Make sure the player is allowed to leash the object: + if not leads.allowed_to_leash(object, user) then + _message(S'You do not own this.'); + return nil; + end; + + -- Create the lead: + local lead, message = leads.connect_objects(user, pointed_thing.ref, itemstack:peek_item()); + if not lead then + _message(message); + return nil; + end; + end; + + -- Consume the lead item: + if not (minetest.is_player(user) and minetest.is_creative_enabled(user:get_player_name())) then + itemstack:take_item(1); + end; + return itemstack; +end; + + +--- The `on_secondary_use`/`on_rightclick` handler for lead items. +-- @param itemstack [ItemStack] The player's held item. +-- @param user [ObjectRef] The player using the lead. +-- @param pointed_thing [PointedThing] The pointed-thing. +-- @return [ItemStack|nil] The leftover itemstack, or nil for no change. +function leads.on_lead_use(itemstack, user, pointed_thing) + local result = leads.on_lead_interact(itemstack, user, pointed_thing, false); + if (not result) and pointed_thing.under then + -- Fallback to the node's right-click handler: + local node = minetest.get_node(pointed_thing.under); + local def = minetest.registered_nodes[node.name] or {}; + return def.on_rightclick and def.on_rightclick(pointed_thing.under, node, user, itemstack, pointed_thing) or nil; + end; + return result; +end; + + +--- The `on_use` handler for lead items. +-- @param itemstack [ItemStack] The player's held item. +-- @param user [ObjectRef] The player using the lead. +-- @param pointed_thing [PointedThing] The pointed-thing. +-- @return [ItemStack|nil] The leftover itemstack, or nil for no change. +function leads.on_lead_punch(itemstack, user, pointed_thing) + return leads.on_lead_interact(itemstack, user, pointed_thing, true); +end; diff --git a/mods/leads/init.lua b/mods/leads/init.lua new file mode 100644 index 00000000..484e9e2b --- /dev/null +++ b/mods/leads/init.lua @@ -0,0 +1,44 @@ +--[[ + Leads — Adds leads for transporting animals to Minetest. + Copyright © 2023, Silver Sandstone <@SilverSandstone@craftodon.social> + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +]] + + +--- Mod entry point. +-- @module init + + +leads = {}; + + +leads.S = minetest.get_translator('leads'); + +leads.DEFAULT_LEAD_TEXTURE = 'leads_lead.png'; + + +local modpath = minetest.get_modpath(minetest.get_current_modname()); +dofile(modpath .. '/util.lua'); +dofile(modpath .. '/api.lua'); +dofile(modpath .. '/settings.lua'); +dofile(modpath .. '/internal.lua'); +dofile(modpath .. '/items.lua'); +dofile(modpath .. '/leads.lua'); +dofile(modpath .. '/knots.lua'); diff --git a/mods/leads/internal.lua b/mods/leads/internal.lua new file mode 100644 index 00000000..eb07baea --- /dev/null +++ b/mods/leads/internal.lua @@ -0,0 +1,104 @@ +--[[ + Leads — Adds leads for transporting animals to Minetest. + Copyright © 2023, Silver Sandstone <@SilverSandstone@craftodon.social> + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +]] + + +--- Internal functions and overrides. +-- @module internal + + +leads.interaction_blockers = {}; + + +function leads._after_register_item(name, def) + local old_on_place = def.on_place; + local old_on_secondary_use = def.on_secondary_use; + + local overrides = {}; + + function overrides.on_place(itemstack, placer, pointed_thing, ...) + -- Try knotting the placer's held lead: + if placer and not placer:get_player_control().sneak then + local node = pointed_thing.under and minetest.get_node_or_nil(pointed_thing.under); + if node and leads.is_knottable(node.name) then + if leads.knot(placer, pointed_thing.under) then + return nil; + end; + end; + end; + + -- Fallback to the item's old on_place function: + return (old_on_place or minetest.item_place)(itemstack, placer, pointed_thing, ...); + end; + + function overrides.on_secondary_use(itemstack, user, pointed_thing, ...) + local object = pointed_thing and pointed_thing.ref; + local keys = user:get_player_control(); + + -- If the player is holding a knotted lead, tie it to the object instead: + if user and object and leads.is_leashable(object) and not leads.is_immobile(object) and not keys.sneak then + for lead in leads.find_connected_leads(user, true, false) do + local lead_entity = lead:get_luaentity(); + local follower = lead_entity:get_follower(); + if follower and leads.is_immobile(follower) then + lead_entity:reverse(); -- Reverse the lead so the knot becomes the leader. + if lead_entity:set_follower(object) then + return nil; + end; + end; + end; + end; + + -- Hold Aux1 to leash an animal to another animal: + if object and keys.aux1 and leads.is_leashable(object) then + for lead in leads.find_connected_leads(user, true, false) do + if lead:get_luaentity():set_leader(object) then + return nil; + end; + end; + end; + + return (old_on_secondary_use or minetest.item_secondary_use)(itemstack, user, pointed_thing, ...); + end; + + minetest.override_item(name, overrides); +end; + + +local old_is_protected = minetest.is_protected; +function minetest.is_protected(pos, name) + if leads.interaction_blockers[name] then + return true; + end; + return old_is_protected(pos, name); +end; + + +for name, def in pairs(minetest.registered_items) do + leads._after_register_item(name, def); +end; + +local old_register_item = minetest.register_item; +function minetest.register_item(name, def) + old_register_item(name, def); + leads._after_register_item(string.gsub(name, '^:+', ''), def); +end; diff --git a/mods/leads/items.lua b/mods/leads/items.lua new file mode 100644 index 00000000..ce6f2cce --- /dev/null +++ b/mods/leads/items.lua @@ -0,0 +1,58 @@ +--[[ + Leads — Adds leads for transporting animals to Minetest. + Copyright © 2023, Silver Sandstone <@SilverSandstone@craftodon.social> + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +]] + + +--- Item definitions. +-- @module items + + +local S = leads.S; + + +minetest.register_craftitem('leads:lead', +{ + description = S'Lead'; + inventory_image = 'leads_lead_inv.png'; + groups = {leads_lead = 1}; + on_use = leads.on_lead_punch; + on_secondary_use = leads.on_lead_use; + on_place = leads.on_lead_use; + _leads_length = leads.settings.lead_length; + _leads_texture = leads.DEFAULT_LEAD_TEXTURE; + _doc_items_longdesc = S'Leads can be used for moving and tethering animals. They can also be attached between two fences for decoration.'; + _doc_items_usagehelp = S'Right-click on an animal or fence to attach a lead. Punch the lead to release it, or right-click on a fence to tether it.'; +}); + + +local rope = leads.util.first_available_item('farming:string', 'mcl_mobitems:string', 'rp_default:rope', 'hades_farming:cotton', 'nodes_nature:chalin') or 'group:string'; +local glue = leads.util.first_available_item('mesecons_materials:glue', 'mcl_mobitems:slimeball', 'mobs_mc:slimeball', 'rp_default:fiber') or rope; +minetest.register_craft( +{ + output = 'leads:lead'; + recipe = + { + {rope, rope, ''}, + {rope, glue, ''}, + {'', '', rope}, + }; +}); diff --git a/mods/leads/knots.lua b/mods/leads/knots.lua new file mode 100644 index 00000000..26cbb31e --- /dev/null +++ b/mods/leads/knots.lua @@ -0,0 +1,166 @@ +--[[ + Leads — Adds leads for transporting animals to Minetest. + Copyright © 2023, Silver Sandstone <@SilverSandstone@craftodon.social> + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +]] + + +--- Knot entity definition. +-- @module knots + + +local S = leads.S; + + +--- Ties a lead to a post. +-- @type KnotEntity +leads.KnotEntity = {}; + +leads.KnotEntity.description = S'Lead Knot'; +leads.KnotEntity._leads_immobile = true; +leads.KnotEntity._leads_leashable = true; + +leads.KnotEntity.initial_properties = +{ + visual = 'mesh'; + visual_size = vector.new(10, 10, 10); + mesh = 'leads_lead_knot.obj'; + textures = {'leads_lead_knot.png'}; + physical = false; + selectionbox = {-3/16, -4/16, -3/16, 3/16, 4/16, 3/16}; +}; + +--- Spawns or loads a knot. +function leads.KnotEntity:on_activate(staticdata, dtime_s) + self.num_connections = 0; + + local data = minetest.deserialize(staticdata); + if data then + self.num_connections = data.num_connections or 0; + end; + + self.object:set_armor_groups{fleshy = 0}; +end; + +--- Steps the knot. +function leads.KnotEntity:on_step(dtime, moveresult) + if self.num_connections <= 0 then + self.object:remove(); + return; + end; + + local node = minetest.get_node(self.object:get_pos()); + if not leads.is_knottable(node.name) then + self.object:remove(); + return; + end; +end; + +--- Returns the knot's state as a table. +function leads.KnotEntity:get_staticdata() + local data = {num_connections = self.num_connections}; + return minetest.serialize(data); +end; + +--- Handles the knot being punched. +function leads.KnotEntity:on_punch(puncher, time_from_last_punch, tool_capabilities, dir, damage) + -- Check protection: + if leads.settings.respect_protection and not minetest.check_player_privs(puncher, 'protection_bypass') then + local pos = self.object:get_pos():round(); + local name = puncher and puncher:get_player_name() or ''; + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name); + return true; + end; + end; + + -- Check if the puncher is holding Shift, and get a list of leads if necessary: + local break_leads = puncher and puncher:get_player_control().sneak; + local connected_leads; + if break_leads then + connected_leads = {}; + for lead in leads.find_connected_leads(self.object, true, true) do + table.insert(connected_leads, lead); + end; + else + minetest.sound_play(leads.sounds.remove, {pos = self.object:get_pos()}, true); + end; + + -- Transfer all connected leads to the puncher: + if puncher then + self:transfer_leads(puncher); + end; + + -- Remove leads if holding Shift: + if break_leads then + for __, lead in ipairs(connected_leads) do + lead:get_luaentity():break_lead(puncher); + end; + end; + + -- Prevent the player from breaking the post: + local name = puncher and puncher:get_player_name(); + if name and name ~= '' then + leads.util.block_player_interaction(name, 0.25); + end; + + -- Remove this knot: + self.object:remove(); + return true; +end; + +--- Handles the knot being right-clicked. +function leads.KnotEntity:on_rightclick(clicker) + local pos = self.object:get_pos(); + leads.knot(clicker, pos); +end; + +--- Handles the knot being interacted with while holding a lead item. +function leads.KnotEntity:_leads_on_interact(itemstack, user, pointed_thing, is_punch) + if is_punch then + self:on_punch(user); + return true, nil; + end; + return false, nil; +end; + +--- Transfers all leads attached to this knot to another object. +-- @param leader [ObjectRef] The new leader. +function leads.KnotEntity:transfer_leads(leader) + for lead, is_leader in leads.find_connected_leads(self.object, true, true) do + local entity = lead:get_luaentity(); + if not is_leader then + entity:reverse(); + end; + entity:set_leader(leader); + end; +end; + +--- Called when a lead is added. +function leads.KnotEntity:_leads_lead_add(lead, is_leader) + self.num_connections = self.num_connections + 1; +end; + +--- Called when a lead is removed. +function leads.KnotEntity:_leads_lead_remove(lead, is_leader) + self.num_connections = self.num_connections - 1; +end; + +minetest.register_entity('leads:knot', leads.KnotEntity); diff --git a/mods/leads/leads.lua b/mods/leads/leads.lua new file mode 100644 index 00000000..f829ae6c --- /dev/null +++ b/mods/leads/leads.lua @@ -0,0 +1,536 @@ +--[[ + Leads — Adds leads for transporting animals to Minetest. + Copyright © 2023, Silver Sandstone <@SilverSandstone@craftodon.social> + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +]] + + +--- Lead entity definition. +-- @module leads + + +local S = leads.S; + + +leads.SLACK_MODELS = +{ + [0] = 'leads_lead.obj', + 'leads_lead_slack1.obj', + 'leads_lead_slack2.obj', + 'leads_lead_slack3.obj', + 'leads_lead_slack4.obj', + 'leads_lead_slack5.obj', + 'leads_lead_slack6.obj', + 'leads_lead_slack7.obj', + 'leads_lead_slack8.obj', + 'leads_lead_slack9.obj', + 'leads_lead_slack10.obj', + 'leads_lead_slack11.obj', + 'leads_lead_slack12.obj', +}; + +leads.STRETCH_SOUND_INTERVAL = 2.0; + +if leads.settings.drop_mode == 'drop' then + leads.DROP_ITEM = true; +elseif leads.settings.drop_mode == 'give' then + leads.DROP_ITEM = false; +else + leads.DROP_ITEM = (minetest.get_modpath('mcl_core') or minetest.get_modpath('rp_default') or minetest.get_modpath('item_drop')) ~= nil; +end; + + +--- The main lead entity. +-- @type LeadEntity +leads.LeadEntity = {}; + +leads.LeadEntity.description = S'Lead'; +leads.LeadEntity._leads_immobile = true; + +leads.LeadEntity.initial_properties = +{ + visual = 'mesh'; + mesh = 'leads_lead.obj'; + textures = {leads.DEFAULT_LEAD_TEXTURE}; + physical = false; + selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}; +}; + +--- Spawns or unloads a lead. +function leads.LeadEntity:on_activate(staticdata, dtime_s) + self.current_length = 0.24; + self.max_length = leads.settings.lead_length; + self.rotation = vector.zero(); + self.leader_attach_offset = vector.zero(); + self.follower_attach_offset = vector.zero(); + self.sound_timer = 0.0; + self.item = ItemStack(); + self.texture = leads.DEFAULT_LEAD_TEXTURE; + self.strength = leads.settings.lead_strength; + self.breaking = 0.0; + + local data = minetest.deserialize(staticdata); + if data then + self:load_from_data(data); + end; + + self.object:set_armor_groups{fleshy = 0}; +end; + +--- Initialises the lead's state from a table. +function leads.LeadEntity:load_from_data(data) + self.max_length = data.max_length or self.max_length; + self.leader_id = data.leader_id or {}; + self.follower_id = data.follower_id or {}; + self.leader_attach_offset = data.leader_attach_offset or self.leader_attach_offset; + self.follower_attach_offset = data.follower_attach_offset or self.follower_attach_offset; + + self.leader_id.pos = vector.new(self.leader_id.pos); + self.follower_id.pos = vector.new(self.follower_id.pos); + + if data.item then + self:set_item(data.item); + end; + + self:update_visuals(); +end; + +--- Sets the lead's item, updating relevant properties. +function leads.LeadEntity:set_item(item) + item = ItemStack(item); + self.item = item; + local def = item:get_definition(); + + self.strength = def._leads_strength or leads.settings.lead_strength; + self.max_length = def._leads_length or leads.settings.lead_length; + self.texture = def._leads_texture or leads.DEFAULT_LEAD_TEXTURE; + + if not leads.settings.dynamic_textures then + self.object:set_properties{textures = {self.texture}}; + end; +end; + +--- Steps the knot. +function leads.LeadEntity:on_step(dtime) + self:_update_connectors(); + local success, pos, offset = self:step_physics(dtime); + if success then + self.current_length = leads.util.clamp(offset:length(), 0.25, 256); + self.rotation = offset:dir_to_rotation(); + self.object:move_to(pos, true); + self:update_visuals(); + end; +end; + +--- Simulates the lead's physics. +-- @param dtime [number] The time elapsed since the last tick, in seconds. +-- @return [boolean] true if the lead is functioning correctly, or false if it should break. +-- @return [vector|nil] The centre position of the lead, or nil on failure. +-- @return [vector|nil] The offset between the leader and the follower, or nil on failure. +function leads.LeadEntity:step_physics(dtime) + dtime = math.min(dtime, 0.125); + + local l_pos = self.leader_pos; + local f_pos = self.follower_pos; + if not (l_pos and f_pos) then + self:break_lead(); + return false, nil, nil; + end; + + l_pos = l_pos + self.leader_attach_offset; + f_pos = f_pos + self.follower_attach_offset; + + local pull_distance = self.max_length; + local break_distance = pull_distance * 2; + local distance = l_pos:distance(f_pos); + if distance > break_distance then + -- Lead is too long, break: + local overextension = distance - break_distance; + self.breaking = self.breaking + overextension * dtime; + if self.breaking > self.strength then + self:break_lead(nil, true); + return false, nil, nil; + end; + else + self.breaking = 0.0; + end; + + local pos = (f_pos + l_pos) / 2; + if self.leader and self.follower and distance > pull_distance then + local base_force; + + local function _pull_connector(connector, this_pos, other_pos) + if leads.is_immobile(connector) then + return; + end; + + if not base_force then + base_force = (distance - pull_distance) * leads.settings.pull_force / pull_distance; + end; + + local force = base_force / math.sqrt(leads.util.get_object_mass(connector)); + local pull_direction = (other_pos - this_pos):normalize(); + connector:add_velocity(pull_direction * dtime * force ^ 1.5); + end; + + -- Pull follower: + _pull_connector(self.follower, f_pos, l_pos); + + -- Pull leader if symmetrical mode is enabled: + if leads.settings.symmetrical then + _pull_connector(self.leader, l_pos, f_pos); + end; + + -- Play stretching sound: + self.sound_timer = self.sound_timer + dtime; + if self.sound_timer >= leads.STRETCH_SOUND_INTERVAL then + self.sound_timer = self.sound_timer - leads.STRETCH_SOUND_INTERVAL; + if leads.util.rng:next(0, 8) == 0 then + minetest.sound_play(leads.sounds.stretch, {pos = pos}, true); + end; + end; + end; + return true, pos, f_pos - l_pos; +end; + +--- Updates the connector references and stored positions. +-- @local +function leads.LeadEntity:_update_connectors() + local function _get_pos(key) + local object = self[key]; + local pos = object and object:get_pos(); + local id = self[key .. '_id']; + if not pos then + pos = id.pos; + if not pos then + return nil; + end; + + local object = leads.util.deserialise_objref(id); + if object then + pos = object:get_pos(); + self[key] = object; + self[key .. '_attach_offset'] = leads.util.get_attach_offset(object); + leads.leads_by_connector[object][self.object] = true; + else + -- The object reference is invalid, and deserialising the + -- object failed. This could mean that the object has been + -- removed and the lead should break, or it could mean that + -- the object's mapblock has been unloaded, and the lead + -- should just wait until it gets loaded again. We can figure + -- out which one by checking if the mapblock is active. + if minetest.compare_block_status(pos, 'active') then + return nil; + end; + end; + end; + id.pos = pos or id.pos; + return pos; + end; + + self.leader_pos = _get_pos('leader'); + self.follower_pos = _get_pos('follower'); +end; + +--- Handles the lead being punched. +function leads.LeadEntity:on_punch(puncher, time_from_last_punch, tool_capabilities, dir, damage) + local name = puncher and puncher:get_player_name() or ''; + + -- Check protection: + local is_protected, protected_pos = self:is_protected(name); + if is_protected then + minetest.record_protection_violation(protected_pos, name); + return true; + end; + + -- Break the lead: + self:break_lead(puncher); + + -- Block the player's interaction for a moment to prevent accidentally breaking the node behind the lead: + if name ~= '' then + leads.util.block_player_interaction(name, 0.25); + end; + + return true; +end; + +--- Handles the lead being interacted with while holding a lead item. +function leads.LeadEntity:_leads_on_interact(itemstack, user, pointed_thing, is_punch) + if is_punch then + self:on_punch(user); + return true, nil; + end; + return false, nil; +end; + +--- Handles the lead being ‘killed’. +function leads.LeadEntity:on_death(killer) + self:break_lead(killer); +end; + +--- Returns the lead's state as a table. +function leads.LeadEntity:get_staticdata() + local data = {}; + data.item = self.item:to_string(); + data.max_length = self.max_length; + data.leader_id = self.leader_id; + data.follower_id = self.follower_id; + data.leader_attach_offset = self.leader_attach_offset; + data.follower_attach_offset = self.follower_attach_offset; + return minetest.serialize(data); +end; + +--- Breaks the lead, possibly giving/dropping an item. +-- @param breaker [ObjectRef|nil] The object breaking the lead. +-- @param snap [boolean|nil] true if the lead is breaking due to tension. +function leads.LeadEntity:break_lead(breaker, snap) + if leads.settings.debug then + minetest.log(debug.traceback(('[Leads] Breaking lead %s at %s.'):format(self, self.object:get_pos()))); + end; + + -- Notify leader and follower: + self:notify_connector_removed(self.leader, true); + self:notify_connector_removed(self.follower, false); + + -- Give or drop item: + if not self.item:is_empty() then + local owner = breaker; + if not minetest.is_player(owner) then + owner = self.leader; + end; + local pos = self.object:get_pos(); + local item = self.item; + if not leads.DROP_ITEM then + local inventory = minetest.is_player(owner) and owner:get_inventory(); + if inventory then + if minetest.is_creative_enabled(owner) and inventory:contains_item('main', item, true) then + item = ItemStack(); + else + item = inventory:add_item('main', item); + end; + end; + end; + minetest.add_item(pos, item); + end; + + -- Play sound: + if snap then + minetest.sound_play(leads.sounds.snap, {pos = self.object:get_pos()}, true); + else + minetest.sound_play(leads.sounds.remove, {pos = self.object:get_pos()}, true); + end; + + -- Remove lead: + self.object:remove(); + self.item = ItemStack(); +end; + +--- Checks if either end of the lead is in an area protected from the specified player. +-- If protection support is disabled, this always returns false. +-- @param player [string|ObjectRef] A player object or username. +-- @return [boolean] true if the player is not allowed to break the lead due to protection. +-- @return [vector|nil] The protected position, if any. +function leads.LeadEntity:is_protected(player) + if not leads.settings.respect_protection then + return false, nil; -- Protection support is disabled. + end; + + local name; + if type(player) == 'string' then + name = player; + else + name = player:get_player_name(); + end; + name = name or ''; + + if minetest.check_player_privs(name, 'protection_bypass') then + return false, nil; -- The player is exempt from protection. + end; + + if name == self.leader_id.player_name then + return false, nil; -- The player is holding the lead. + end; + + for __, connector_id in ipairs{self.leader_id, self.follower_id} do + if connector_id and connector_id.pos then + local pos = vector.round(connector_id.pos); + if minetest.is_protected(pos, name) then + return true, pos; -- An end of the lead is in a protected area. + end; + end; + end; + + return false, nil; +end; + +--- Updates the visual properties of the lead to show its current state. +function leads.LeadEntity:update_visuals() + local SCALE = 8; + + if self.current_length == self.old_length then + return; + end; + self.old_length = self.current_length; + + local properties = {visual_size = vector.new(1, 1, self.current_length)}; + local selbox_offset = 0; + -- Dynamic textures: + if leads.settings.dynamic_textures then + local texture = leads.util.tile_texture(self.texture, 96 * SCALE, 2 * SCALE, math.floor(self.current_length * 16 * SCALE), 2 * SCALE); + properties.textures = {texture}; + elseif self.texture ~= self.old_texture then + self.old_texture = self.texture; + properties.textures = {self.texture}; + end; + -- Slack model: + if leads.settings.enable_slack then + if self.leader_pos and self.follower_pos then + local slack, mesh = self:get_slack(); + properties.mesh = mesh; + selbox_offset = selbox_offset - slack / 12; + end; + end; + -- Selection box: + if leads.settings.rotate_selection_box then + properties.selectionbox = {-0.0625, -0.0625 + selbox_offset, -self.current_length / 2, + 0.0625, 0.0625 + selbox_offset, self.current_length / 2, rotate = true}; + end; + self.object:set_properties(properties); + self.object:set_rotation(self.rotation); +end; + +--- Calculates the slack value and chooses a model to represent it. +-- @return [number] The current slack value. +-- @return [string] A model name. +function leads.LeadEntity:get_slack() + local span = self.follower_pos - self.leader_pos; + local slack = 0.5 + 1 - span:length() / self.max_length; + + -- Scale the slack by how horizontal the lead is, otherwise it would droop sideways when vertical. + slack = slack * (1 - math.abs(span:normalize().y)); + + slack = leads.util.clamp(slack, 0.0, 1.0) + local model_index = math.floor(slack * #leads.SLACK_MODELS); + return slack, leads.SLACK_MODELS[model_index]; +end; + +--- Updates the connector IDs to reflect the current connectors. +function leads.LeadEntity:update_objref_ids() + self.leader_id = leads.util.serialise_objref(self.leader) or self.leader_id; + self.follower_id = leads.util.serialise_objref(self.follower) or self.follower_id; + self:update_attach_offsets(); +end; + +--- Updates the attachment offsets to reflect the current connectors' properties. +function leads.LeadEntity:update_attach_offsets() + self.leader_attach_offset = leads.util.get_attach_offset(self.leader) or self.leader_attach_offset; + self.follower_attach_offset = leads.util.get_attach_offset(self.follower) or self.follower_attach_offset; +end; + +--- Transfers this lead to a new leader. +-- @param leader [ObjectRef] The new leader object. +-- @return [boolean] true on success. +function leads.LeadEntity:set_leader(leader) + return self:set_connector(leader, true); +end; + +--- Transfers this lead to a new follower. +-- @param follower [ObjectRef] The new follower object. +-- @return [boolean] true on success. +function leads.LeadEntity:set_follower(follower) + return self:set_connector(follower, false); +end; + +--- Transfers this lead to a new leader or follower. +-- @param object [ObjectRef] The new connector. +-- @param is_leader [boolean] true to set the leader, false to set the follower. +-- @return [boolean] true on success. +function leads.LeadEntity:set_connector(object, is_leader) + if (self.leader and leads.util.is_same_object(object, self.leader)) or + (self.follower and leads.util.is_same_object(object, self.follower)) then + return false; + end; + + local key = is_leader and 'leader' or 'follower'; + local old_object = self[key]; + self:notify_connector_removed(old_object, is_leader); + self[key] = object; + self:notify_connector_added(object, is_leader); + self:update_objref_ids(); + return true; +end; + +--- Reverses the direction of the lead, swapping the leader and follower. +function leads.LeadEntity:reverse() + self.leader, self.follower = self.follower, self.leader; + self.leader_id, self.follower_id = self.follower_id, self.leader_id; +end; + +--- Notifies the connector that this lead has been added. +-- @param object [ObjectRef|nil] The connector to notify. +-- @param is_leader [boolean] true if the connector is the leader. +function leads.LeadEntity:notify_connector_added(object, is_leader) + if not object then + return; + end; + + leads.leads_by_connector[object][self.object] = true; + + local entity = object:get_luaentity(); + if entity and entity._leads_lead_add then + entity:_leads_lead_add(self, is_leader or false); + end; +end; + +--- Notifies the connector that this lead has been removed. +-- @param object [ObjectRef|nil] The connector to notify. +-- @param is_leader [boolean] true if the connector was the leader. +function leads.LeadEntity:notify_connector_removed(object, is_leader) + if not object then + return; + end; + + leads.leads_by_connector[object][self.object] = nil; + + local entity = object:get_luaentity(); + if entity and entity._leads_lead_remove then + entity:_leads_lead_remove(self, is_leader or false); + end; +end; + +--- Gets the lead's leader if it's loaded. +-- @return [ObjectRef|nil] The leader object. +function leads.LeadEntity:get_leader() + if self.leader and self.leader:get_pos() then + return self.leader; + end; + return nil; +end; + +--- Gets the lead's follower if it's loaded. +-- @return [ObjectRef|nil] The follower object. +function leads.LeadEntity:get_follower() + if self.leader and self.follower:get_pos() then + return self.follower; + end; + return nil; +end; + +minetest.register_entity('leads:lead', leads.LeadEntity); diff --git a/mods/leads/locale/leads.de.tr b/mods/leads/locale/leads.de.tr new file mode 100644 index 00000000..ce03961a --- /dev/null +++ b/mods/leads/locale/leads.de.tr @@ -0,0 +1,100 @@ +# Generated by MTTranslate. + +# textdomain: leads + +##[ api.lua:101 ]## +You cannot leash something to itself.=Du kannst nichts an sich selbst anbinden. + +##[ api.lua:118 ]## +Failed to create lead.=Konnte die Leine nicht erzeugen. + +##[ api.lua:403 ]## +You cannot leash this.=Das kannst Du nicht anbinden. + +##[ api.lua:409 ]## +You do not own this.=Das gehört Dir nicht. + +##[ items.lua:34 ]## +##[ leads.lua:64 ]## +Lead=Leine + +##[ items.lua:42 ]## +Leads can be used for moving and tethering animals. They can also be attached between two fences for decoration.=Leinen können zum Bewegen und Anbinden von Tieren verwendet werden. Sie können auch zur Dekoration zwischen zwei Zäunen angebracht werden. + +##[ items.lua:43 ]## +Right-click on an animal or fence to attach a lead. Punch the lead to release it, or right-click on a fence to tether it.=Klicke mit der rechten Maustaste auf ein Tier oder einen Zaun, um eine Leine anzubinden. Schlage die Leine (Linksklick), um sie zu lösen. Mit einem Rechtsklick kannst Du ein an Deiner Leine befindliches Tier an einen Zaun anbinden. + +##[ knots.lua:36 ]## +Lead Knot=Leinenknoten + +##[ settingtypes.txt:2 ]## +Lead length=Leinenlänge + +##[ settingtypes.txt:5 ]## +Lead strength=Leinenstärke + +##[ settingtypes.txt:11 ]## +Item drop mode=Modus zum Fallenlassen von Gegenständen + +##[ settingtypes.txt:15 ]## +Symmetrical physics=Symmetrische Physik + +##[ settingtypes.txt:18 ]## +Visuals=Visuals + +##[ settingtypes.txt:21 ]## +Dynamic textures=Dynamische Texturen + +##[ settingtypes.txt:25 ]## +Long selection box=Langes Auswahlfeld + +##[ settingtypes.txt:29 ]## +Enable visual slack=Erlaube sichtbares Durchhängen + +##[ settingtypes.txt:32 ]## +Show chat messages=Zeige Chat-Nachrichten + +##[ settingtypes.txt:35 ]## +Protection and Ownership=Schutz und Eigentum + +##[ settingtypes.txt:38 ]## +Respect protection=Berücksichtige Schutzeinstellungen + +##[ settingtypes.txt:41 ]## +Allow leashing unowned mobs=Erlaube das Anbinden eigentümerloser Mobs + +##[ settingtypes.txt:44 ]## +Allow leashing mobs owned by others=Erlaube das Anbinden von Mobs im Besitz anderer Spieler + +##[ settingtypes.txt:47 ]## +Object Types=Objekttypen + +##[ settingtypes.txt:50 ]## +Allow leashing players=Erlaube das Anbinden von Spielern + +##[ settingtypes.txt:53 ]## +Allow leashing animals=Erlaube das Anbinden von Tieren + +##[ settingtypes.txt:56 ]## +Allow leashing monsters=Erlaube das Anbinden von Monstern + +##[ settingtypes.txt:59 ]## +Allow leashing NPCs=Erlaube das Anbinden von NPCs (z. B. Dorfbewohner) + +##[ settingtypes.txt:62 ]## +Allow leashing vehicles=Erlaube das Anbinden von Fahrzeugen + +##[ settingtypes.txt:65 ]## +Allow leashing other=Erlaube das Anbinden anderer Dinge + +##[ settingtypes.txt:68 ]## +Advanced=Erweitert + +##[ settingtypes.txt:73 ]## +Allow leashing any object=Erlaube das Anbinden beliebiger Objekte + +##[ settingtypes.txt:76 ]## +Pull force=Zugkraft + +##[ settingtypes.txt:79 ]## +Debug mode=Entwicklermodus (Debug) diff --git a/mods/leads/locale/poconvert/leads.de.po b/mods/leads/locale/poconvert/leads.de.po new file mode 100644 index 00000000..a3cf758b --- /dev/null +++ b/mods/leads/locale/poconvert/leads.de.po @@ -0,0 +1,147 @@ +# Generated by mttranslate. +msgid "" +msgstr "" +"PO-Revision-Date: 2024-01-02 23:40+0000\n" +"Last-Translator: Kyoushi \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.3.1\n" + +#: api.lua:101 +msgid "You cannot leash something to itself." +msgstr "Du kannst nichts an sich selbst anbinden." + +#: api.lua:118 +msgid "Failed to create lead." +msgstr "Konnte die Leine nicht erzeugen." + +#: api.lua:403 +msgid "You cannot leash this." +msgstr "Das kannst Du nicht anbinden." + +#: api.lua:409 +msgid "You do not own this." +msgstr "Das gehört Dir nicht." + +#: items.lua:34 +#: leads.lua:64 +msgid "Lead" +msgstr "Leine" + +#: items.lua:42 +msgid "Leads can be used for moving and tethering animals. They can also be attached between two fences for decoration." +msgstr "" +"Leinen können zum Bewegen und Anbinden von Tieren verwendet werden. Sie " +"können auch zur Dekoration zwischen zwei Zäunen angebracht werden." + +#: items.lua:43 +msgid "Right-click on an animal or fence to attach a lead. Punch the lead to release it, or right-click on a fence to tether it." +msgstr "" +"Klicke mit der rechten Maustaste auf ein Tier oder einen Zaun, um eine Leine " +"anzubinden. Schlage die Leine (Linksklick), um sie zu lösen. Mit einem " +"Rechtsklick kannst Du ein an Deiner Leine befindliches Tier an einen Zaun " +"anbinden." + +#: knots.lua:36 +msgid "Lead Knot" +msgstr "Leinenknoten" + +#: settingtypes.txt:2 +msgid "Lead length" +msgstr "Leinenlänge" + +#: settingtypes.txt:5 +msgid "Lead strength" +msgstr "Leinenstärke" + +#: settingtypes.txt:11 +msgid "Item drop mode" +msgstr "Modus zum Fallenlassen von Gegenständen" + +#: settingtypes.txt:15 +msgid "Symmetrical physics" +msgstr "Symmetrische Physik" + +#: settingtypes.txt:18 +msgid "Visuals" +msgstr "Visuals" + +#: settingtypes.txt:21 +msgid "Dynamic textures" +msgstr "Dynamische Texturen" + +#: settingtypes.txt:25 +msgid "Long selection box" +msgstr "Langes Auswahlfeld" + +#: settingtypes.txt:29 +msgid "Enable visual slack" +msgstr "Erlaube sichtbares Durchhängen" + +#: settingtypes.txt:32 +msgid "Show chat messages" +msgstr "Zeige Chat-Nachrichten" + +#: settingtypes.txt:35 +msgid "Protection and Ownership" +msgstr "Schutz und Eigentum" + +#: settingtypes.txt:38 +msgid "Respect protection" +msgstr "Berücksichtige Schutzeinstellungen" + +#: settingtypes.txt:41 +msgid "Allow leashing unowned mobs" +msgstr "Erlaube das Anbinden eigentümerloser Mobs" + +#: settingtypes.txt:44 +msgid "Allow leashing mobs owned by others" +msgstr "Erlaube das Anbinden von Mobs im Besitz anderer Spieler" + +#: settingtypes.txt:47 +msgid "Object Types" +msgstr "Objekttypen" + +#: settingtypes.txt:50 +msgid "Allow leashing players" +msgstr "Erlaube das Anbinden von Spielern" + +#: settingtypes.txt:53 +msgid "Allow leashing animals" +msgstr "Erlaube das Anbinden von Tieren" + +#: settingtypes.txt:56 +msgid "Allow leashing monsters" +msgstr "Erlaube das Anbinden von Monstern" + +#: settingtypes.txt:59 +msgid "Allow leashing NPCs" +msgstr "Erlaube das Anbinden von NPCs (z. B. Dorfbewohner)" + +#: settingtypes.txt:62 +msgid "Allow leashing vehicles" +msgstr "Erlaube das Anbinden von Fahrzeugen" + +#: settingtypes.txt:65 +msgid "Allow leashing other" +msgstr "Erlaube das Anbinden anderer Dinge" + +#: settingtypes.txt:68 +msgid "Advanced" +msgstr "Erweitert" + +#: settingtypes.txt:73 +msgid "Allow leashing any object" +msgstr "Erlaube das Anbinden beliebiger Objekte" + +#: settingtypes.txt:76 +msgid "Pull force" +msgstr "Zugkraft" + +#: settingtypes.txt:79 +msgid "Debug mode" +msgstr "Entwicklermodus (Debug)" diff --git a/mods/leads/locale/poconvert/leads.nl.po b/mods/leads/locale/poconvert/leads.nl.po new file mode 100644 index 00000000..1e1d9cd5 --- /dev/null +++ b/mods/leads/locale/poconvert/leads.nl.po @@ -0,0 +1,135 @@ +# Generated by mttranslate. +msgid "" +msgstr "" +"Language: nl\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: api.lua:101 +msgid "You cannot leash something to itself." +msgstr "" + +#: api.lua:118 +msgid "Failed to create lead." +msgstr "" + +#: api.lua:403 +msgid "You cannot leash this." +msgstr "" + +#: api.lua:409 +msgid "You do not own this." +msgstr "" + +#: items.lua:34 +#: leads.lua:64 +msgid "Lead" +msgstr "" + +#: items.lua:42 +msgid "Leads can be used for moving and tethering animals. They can also be attached between two fences for decoration." +msgstr "" + +#: items.lua:43 +msgid "Right-click on an animal or fence to attach a lead. Punch the lead to release it, or right-click on a fence to tether it." +msgstr "" + +#: knots.lua:36 +msgid "Lead Knot" +msgstr "" + +#: settingtypes.txt:2 +msgid "Lead length" +msgstr "" + +#: settingtypes.txt:5 +msgid "Lead strength" +msgstr "" + +#: settingtypes.txt:11 +msgid "Item drop mode" +msgstr "" + +#: settingtypes.txt:15 +msgid "Symmetrical physics" +msgstr "" + +#: settingtypes.txt:18 +msgid "Visuals" +msgstr "" + +#: settingtypes.txt:21 +msgid "Dynamic textures" +msgstr "" + +#: settingtypes.txt:25 +msgid "Long selection box" +msgstr "" + +#: settingtypes.txt:29 +msgid "Enable visual slack" +msgstr "" + +#: settingtypes.txt:32 +msgid "Show chat messages" +msgstr "" + +#: settingtypes.txt:35 +msgid "Protection and Ownership" +msgstr "" + +#: settingtypes.txt:38 +msgid "Respect protection" +msgstr "" + +#: settingtypes.txt:41 +msgid "Allow leashing unowned mobs" +msgstr "" + +#: settingtypes.txt:44 +msgid "Allow leashing mobs owned by others" +msgstr "" + +#: settingtypes.txt:47 +msgid "Object Types" +msgstr "" + +#: settingtypes.txt:50 +msgid "Allow leashing players" +msgstr "" + +#: settingtypes.txt:53 +msgid "Allow leashing animals" +msgstr "" + +#: settingtypes.txt:56 +msgid "Allow leashing monsters" +msgstr "" + +#: settingtypes.txt:59 +msgid "Allow leashing NPCs" +msgstr "" + +#: settingtypes.txt:62 +msgid "Allow leashing vehicles" +msgstr "" + +#: settingtypes.txt:65 +msgid "Allow leashing other" +msgstr "" + +#: settingtypes.txt:68 +msgid "Advanced" +msgstr "" + +#: settingtypes.txt:73 +msgid "Allow leashing any object" +msgstr "" + +#: settingtypes.txt:76 +msgid "Pull force" +msgstr "" + +#: settingtypes.txt:79 +msgid "Debug mode" +msgstr "" diff --git a/mods/leads/locale/poconvert/messages.pot b/mods/leads/locale/poconvert/messages.pot new file mode 100644 index 00000000..009c6e4c --- /dev/null +++ b/mods/leads/locale/poconvert/messages.pot @@ -0,0 +1,158 @@ +# Generated by MTTranslate. + +msgid "" +msgstr "" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: MTTranslate\n" + +#: api.lua:101 +msgid "You cannot leash something to itself." +msgstr "" + +#: api.lua:118 +msgid "Failed to create lead." +msgstr "" + +#: api.lua:403 +msgid "You cannot leash this." +msgstr "" + +#: api.lua:409 +msgid "You do not own this." +msgstr "" + +#: items.lua:34 +#: leads.lua:64 +msgid "Lead" +msgstr "" + +#: items.lua:42 +msgid "Leads can be used for moving and tethering animals. They can also be attached between two fences for decoration." +msgstr "" + +#: items.lua:43 +msgid "Right-click on an animal or fence to attach a lead. Punch the lead to release it, or right-click on a fence to tether it." +msgstr "" + +#: knots.lua:36 +msgid "Lead Knot" +msgstr "" + +#: settingtypes.txt:2 +#. Setting: leads.lead_length (float) +msgid "Lead length" +msgstr "" + +#: settingtypes.txt:5 +#. Setting: leads.lead_strength (float) +msgid "Lead strength" +msgstr "" + +#: settingtypes.txt:11 +#. Setting: leads.drop_mode (enum) +msgid "Item drop mode" +msgstr "" + +#: settingtypes.txt:15 +#. Setting: leads.symmetrical (bool) +msgid "Symmetrical physics" +msgstr "" + +#: settingtypes.txt:18 +msgid "Visuals" +msgstr "" + +#: settingtypes.txt:21 +#. Setting: leads.dynamic_textures (bool) +msgid "Dynamic textures" +msgstr "" + +#: settingtypes.txt:25 +#. Setting: leads.rotate_selection_box (bool) +msgid "Long selection box" +msgstr "" + +#: settingtypes.txt:29 +#. Setting: leads.enable_slack (bool) +msgid "Enable visual slack" +msgstr "" + +#: settingtypes.txt:32 +#. Setting: leads.chat_messages (bool) +msgid "Show chat messages" +msgstr "" + +#: settingtypes.txt:35 +msgid "Protection and Ownership" +msgstr "" + +#: settingtypes.txt:38 +#. Setting: leads.respect_protection (bool) +msgid "Respect protection" +msgstr "" + +#: settingtypes.txt:41 +#. Setting: leads.allow_leash_unowned (bool) +msgid "Allow leashing unowned mobs" +msgstr "" + +#: settingtypes.txt:44 +#. Setting: leads.allow_leash_owned_other (bool) +msgid "Allow leashing mobs owned by others" +msgstr "" + +#: settingtypes.txt:47 +msgid "Object Types" +msgstr "" + +#: settingtypes.txt:50 +#. Setting: leads.allow_leash_player (bool) +msgid "Allow leashing players" +msgstr "" + +#: settingtypes.txt:53 +#. Setting: leads.allow_leash_animal (bool) +msgid "Allow leashing animals" +msgstr "" + +#: settingtypes.txt:56 +#. Setting: leads.allow_leash_monster (bool) +msgid "Allow leashing monsters" +msgstr "" + +#: settingtypes.txt:59 +#. Setting: leads.allow_leash_npc (bool) +msgid "Allow leashing NPCs" +msgstr "" + +#: settingtypes.txt:62 +#. Setting: leads.allow_leash_vehicle (bool) +msgid "Allow leashing vehicles" +msgstr "" + +#: settingtypes.txt:65 +#. Setting: leads.allow_leash_other (bool) +msgid "Allow leashing other" +msgstr "" + +#: settingtypes.txt:68 +msgid "Advanced" +msgstr "" + +#: settingtypes.txt:73 +#. Setting: leads.allow_leash_all (bool) +msgid "Allow leashing any object" +msgstr "" + +#: settingtypes.txt:76 +#. Setting: leads.pull_force (float) +msgid "Pull force" +msgstr "" + +#: settingtypes.txt:79 +#. Setting: leads.debug (bool) +msgid "Debug mode" +msgstr "" diff --git a/mods/leads/mod.conf b/mods/leads/mod.conf new file mode 100644 index 00000000..f904c695 --- /dev/null +++ b/mods/leads/mod.conf @@ -0,0 +1,8 @@ +name = leads +title = Leads +description = Adds leads for moving and tethering animals. +author = SilverSandstone +optional_depends = advtrains, bambooforest, default, farming, ferns, hades_farming, hades_furniture, mcl_mobitems, mesecons_materials, mobs_mc, nodes_nature, objectuuids, rp_default +supported_games = asuna, dreambuilder, exile, hades_revisited, lordofthetest, mesecraft, mineclone2, mineclone5, mineclonia, minetest_game, repixture, survivetest, voxelgarden, worstblockgame +min_minetest_version = 5.5.0 +release = 23044 diff --git a/mods/leads/models/leads_lead.bbmodel b/mods/leads/models/leads_lead.bbmodel new file mode 100644 index 00000000..bd856350 --- /dev/null +++ b/mods/leads/models/leads_lead.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"4.5","model_format":"free","box_uv":false},"name":"leads_lead","model_identifier":"","visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":16,"height":16},"elements":[{"name":"cube","box_uv":false,"rescale":false,"locked":false,"from":[-0.5,-0.5,-8],"to":[0.5,0.5,8],"autouv":0,"color":9,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,0,16],"texture":0},"east":{"uv":[0,16,16,0],"rotation":180,"texture":0},"south":{"uv":[0,0,0,16],"texture":0},"west":{"uv":[0,0,16,16],"texture":0},"up":{"uv":[0,0,16,16],"rotation":90,"texture":0},"down":{"uv":[0,0,16,16],"rotation":270,"texture":0}},"type":"cube","uuid":"1a9ce081-420a-2225-9177-22d3e9f18f78"}],"outliner":["1a9ce081-420a-2225-9177-22d3e9f18f78"],"textures":[{"path":"../textures/leads_lead.png","name":"leads_lead.png","folder":"","namespace":"","id":"0","particle":false,"render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"23be694f-bb73-ca4f-4e50-c3ef0f3838f0","relative_path":"../../textures/leads_lead.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAACCAYAAACnpNlpAAAAAXNSR0IArs4c6QAAAH9JREFUOE9jnNgQ///lk9cMyEBcRhSFD+PA1KHLo+sHqYepIcZsYvQj24msHiSOTT+yG0BsXGpwqSPGj4T04vMXLEwZ4xwN/oM4/AI8KIH+8cMXFD66PHoMIauHqQWJ4TKXkH3Y3IQtVcDsxec+bG7DmsKggvj8Tsg+UsINpBYAeQRMQAAW8RcAAAAASUVORK5CYII="}]} diff --git a/mods/leads/models/leads_lead.obj b/mods/leads/models/leads_lead.obj new file mode 100644 index 00000000..09d8722e --- /dev/null +++ b/mods/leads/models/leads_lead.obj @@ -0,0 +1,49 @@ +# Made in Blockbench 4.8.3 +mtllib leads_lead.mtl + +o cube +v 0.3125 0.3125 5 +v 0.3125 0.3125 -5 +v 0.3125 -0.3125 5 +v 0.3125 -0.3125 -5 +v -0.3125 0.3125 -5 +v -0.3125 0.3125 5 +v -0.3125 -0.3125 -5 +v -0.3125 -0.3125 5 +vt 0 1 +vt 0 1 +vt 0 0 +vt 0 0 +vt 1 1 +vt 0 1 +vt 0 0 +vt 1 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 0 0 +vt 0 1 +vt 1 1 +vt 1 0 +vt 0 0 +vt 0 0 +vt 0 1 +vt 1 1 +vt 1 0 +vt 1 1 +vt 1 0 +vt 0 0 +vt 0 1 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +f 4/4/1 7/3/1 5/2/1 2/1/1 +f 3/8/2 4/7/2 2/6/2 1/5/2 +f 8/12/3 3/11/3 1/10/3 6/9/3 +f 7/16/4 8/15/4 6/14/4 5/13/4 +f 6/20/5 1/19/5 2/18/5 5/17/5 +f 7/24/6 4/23/6 3/22/6 8/21/6 \ No newline at end of file diff --git a/mods/leads/models/leads_lead_knot.bbmodel b/mods/leads/models/leads_lead_knot.bbmodel new file mode 100644 index 00000000..40dcdf09 --- /dev/null +++ b/mods/leads/models/leads_lead_knot.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"4.5","model_format":"free","box_uv":false},"name":"leads_lead_knot","model_identifier":"","visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":16,"height":16},"elements":[{"name":"cube","box_uv":false,"rescale":false,"locked":false,"from":[-3,-4,-3],"to":[3,4,3],"autouv":0,"color":7,"origin":[0,0,0],"faces":{"north":{"uv":[9,3,12,7],"texture":0},"east":{"uv":[6,3,9,7],"texture":0},"south":{"uv":[3,3,6,7],"texture":0},"west":{"uv":[0,3,3,7],"texture":0},"up":{"uv":[3,0,6,3],"texture":0},"down":{"uv":[6,0,9,3],"texture":0}},"type":"cube","uuid":"6218272c-4067-e2a2-7806-276765b710cd"}],"outliner":["6218272c-4067-e2a2-7806-276765b710cd"],"textures":[{"path":"../textures/leads_lead_knot.png","name":"leads_lead_knot.png","folder":"","namespace":"","id":"0","particle":false,"render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"c2841755-3646-e7ae-2b5d-ff26cb2dcb0d","relative_path":"../../textures/leads_lead_knot.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAU5JREFUWEdjZMABJjbE/79z8S5Y9uOHLwz8Ajxgtoq+MgOyOEz7ov0XGHGZhU8cpyaYA3iF+eD6P7/9BHcAyCEvn7wGyz25+4yBJg44e/Aig4yyFAPMYnz8yeuPUDcEqlK8/oN8hh70oBABOQgWNTAH0sQBsLAXlxEFM0FxD4sSmBhIHBQyVI+COEeD/zAHwEIB5mt0cVAiJdsBoMQGS0zoPkZPvTB1yL4HqUHXDxKDqclvWIg3bTDCfIrsS3Sfgvjo8uiOA4UCOSHDCEpsyIah+46QD7GFCnKItM3Zhj8EcgNtUBwA8wmhECEmVEBqCOUORmxpAFtawBbP+NRRnAaQowVb/OIrXpHVE8od4BDAFc/IqRlZDcx3+FI/zIFE5QJs+RxXqkf2HaF0QEz5QFb5jS/4SZUbdcBoCIyGwGgIjIbAaAiMhsBoCAx4CAAAU0bCITmYIR0AAAAASUVORK5CYII="}]} diff --git a/mods/leads/models/leads_lead_knot.obj b/mods/leads/models/leads_lead_knot.obj new file mode 100644 index 00000000..b2163666 --- /dev/null +++ b/mods/leads/models/leads_lead_knot.obj @@ -0,0 +1,49 @@ +# Made in Blockbench 4.6.4 +mtllib leads_lead_knot.mtl + +o cube +v 0.1875 0.25 0.1875 +v 0.1875 0.25 -0.1875 +v 0.1875 -0.25 0.1875 +v 0.1875 -0.25 -0.1875 +v -0.1875 0.25 -0.1875 +v -0.1875 0.25 0.1875 +v -0.1875 -0.25 -0.1875 +v -0.1875 -0.25 0.1875 +vt 0.5625 0.8125 +vt 0.75 0.8125 +vt 0.75 0.5625 +vt 0.5625 0.5625 +vt 0.375 0.8125 +vt 0.5625 0.8125 +vt 0.5625 0.5625 +vt 0.375 0.5625 +vt 0.1875 0.8125 +vt 0.375 0.8125 +vt 0.375 0.5625 +vt 0.1875 0.5625 +vt 0 0.8125 +vt 0.1875 0.8125 +vt 0.1875 0.5625 +vt 0 0.5625 +vt 0.1875 1 +vt 0.375 1 +vt 0.375 0.8125 +vt 0.1875 0.8125 +vt 0.375 1 +vt 0.5625 1 +vt 0.5625 0.8125 +vt 0.375 0.8125 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl m_c2841755-3646-e7ae-2b5d-ff26cb2dcb0d +f 4/4/1 7/3/1 5/2/1 2/1/1 +f 3/8/2 4/7/2 2/6/2 1/5/2 +f 8/12/3 3/11/3 1/10/3 6/9/3 +f 7/16/4 8/15/4 6/14/4 5/13/4 +f 6/20/5 1/19/5 2/18/5 5/17/5 +f 7/24/6 4/23/6 3/22/6 8/21/6 \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack.bbmodel b/mods/leads/models/leads_lead_slack.bbmodel new file mode 100644 index 00000000..9ad4143c --- /dev/null +++ b/mods/leads/models/leads_lead_slack.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"4.5","model_format":"free","box_uv":false},"name":"leads_lead_slack","model_identifier":"","visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":16,"height":16},"elements":[{"name":"9 (Original)","color":9,"origin":[0,0,0],"rotation":[0,0,0],"visibility":true,"locked":false,"render_order":"default","allow_mirror_modeling":true,"vertices":{"tKmB":[0.5,0.5,8],"UDcH":[0.5,0.5,-8],"p9gB":[0.5,-0.5,8],"2jsq":[0.5,-0.5,-8],"3h3r":[-0.5,0.5,8],"rFEr":[-0.5,0.5,-8],"CNsI":[-0.5,-0.5,8],"nwmP":[-0.5,-0.5,-8],"SFbE":[-0.5,5.551115123125783e-17,7],"fvfn":[-0.5,-1,7],"tbKp":[-0.5,-0.39999999999999997,6],"iUCR":[-0.5,-1.4000000000000004,6],"FYa7":[-0.5,-0.7,5],"LW3H":[-0.5,-1.700000000000001,5],"Nt89":[-0.5,-0.8999999999999999,4],"o2vx":[-0.5,-1.9000000000000004,4],"kisU":[-0.5,-1.0499999999999998,3],"Uy9h":[-0.5,-2.0500000000000007,3],"5HEv":[-0.5,-1.15,2],"cVL2":[-0.5,-2.1500000000000004,2],"YAxu":[-0.5,-1.1999999999999997,1],"06eU":[-0.5,-2.200000000000001,1],"ugNs":[-0.5,-1.2249999999999996,0],"B5py":[-0.5,-2.2250000000000014,0],"mt0e":[-0.5,-1.1999999999999997,-1],"FUSY":[-0.5,-2.200000000000001,-1],"tlTa":[-0.5,-1.15,-2],"wIT4":[-0.5,-2.1500000000000004,-2],"87SW":[-0.5,-1.0499999999999998,-3],"yK6M":[-0.5,-2.0500000000000007,-3],"9hXH":[-0.5,-0.8999999999999999,-4],"dIeG":[-0.5,-1.9000000000000004,-4],"70F6":[-0.5,-0.7,-5],"nH6s":[-0.5,-1.700000000000001,-5],"knCG":[-0.5,-0.39999999999999997,-6],"Oy5q":[-0.5,-1.4000000000000004,-6],"p8Ei":[-0.5,5.551115123125783e-17,-7],"VEP1":[-0.5,-1,-7],"SJnT":[0.5,-1,7],"sJVe":[0.5,-1.4000000000000004,6],"ED1K":[0.5,-1.700000000000001,5],"0w2S":[0.5,-1.9000000000000004,4],"TE75":[0.5,-2.0500000000000007,3],"8x1L":[0.5,-2.1500000000000004,2],"SAGT":[0.5,-2.200000000000001,1],"IAUs":[0.5,-2.2250000000000014,0],"DXhf":[0.5,-2.200000000000001,-1],"rttD":[0.5,-2.1500000000000004,-2],"3nux":[0.5,-2.0500000000000007,-3],"IRCx":[0.5,-1.9000000000000004,-4],"5jkP":[0.5,-1.700000000000001,-5],"XqDN":[0.5,-1.4000000000000004,-6],"DBbG":[0.5,-1,-7],"6gi1":[0.5,5.551115123125783e-17,7],"cL7l":[0.5,-0.39999999999999997,6],"6JJV":[0.5,-0.7,5],"ibGc":[0.5,-0.8999999999999999,4],"8sh8":[0.5,-1.0499999999999998,3],"y3bM":[0.5,-1.15,2],"ymVT":[0.5,-1.1999999999999997,1],"Jfyg":[0.5,-1.2249999999999996,0],"NgdR":[0.5,-1.1999999999999997,-1],"iobY":[0.5,-1.15,-2],"OuGn":[0.5,-1.0499999999999998,-3],"uEW2":[0.5,-0.8999999999999999,-4],"EXF4":[0.5,-0.7,-5],"Rhp5":[0.5,-0.39999999999999997,-6],"oolz":[0.5,5.551115123125783e-17,-7]},"faces":{"eITncMg3":{"uv":{"UDcH":[16,0],"DBbG":[15,16],"oolz":[15,0],"2jsq":[16,16]},"vertices":["UDcH","DBbG","oolz","2jsq"],"texture":0},"JOcBafJR":{"uv":{"nwmP":[0,16],"p8Ei":[1,0],"VEP1":[1,16],"rFEr":[0,0]},"vertices":["nwmP","p8Ei","VEP1","rFEr"],"texture":0},"Oa0IlY2d":{"uv":{"rFEr":[0,16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"UDcH":[8.881784197001252e-16,0]},"vertices":["rFEr","oolz","p8Ei","UDcH"],"texture":0},"Dq3qTzzZ":{"uv":{"2jsq":[16,8.881784197001252e-16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"nwmP":[16,16]},"vertices":["2jsq","VEP1","DBbG","nwmP"],"texture":0},"PH1WbY6P":{"uv":{"tKmB":[0,0],"3h3r":[0,0],"p9gB":[0,16],"CNsI":[0,16]},"vertices":["tKmB","3h3r","p9gB","CNsI"],"texture":0},"xW5eAbyB":{"uv":{"rFEr":[0,0],"UDcH":[0,0],"nwmP":[0,16],"2jsq":[0,16]},"vertices":["rFEr","UDcH","nwmP","2jsq"],"texture":0},"XDldXQU4":{"uv":{"3h3r":[16,0],"SFbE":[15,0],"fvfn":[15,16],"CNsI":[16,16]},"vertices":["3h3r","SFbE","fvfn","CNsI"],"texture":0},"eA1h4BU4":{"uv":{"SFbE":[15,0],"tbKp":[14,0],"iUCR":[14,16],"fvfn":[15,16]},"vertices":["SFbE","tbKp","iUCR","fvfn"],"texture":0},"uSD0Om3G":{"uv":{"tbKp":[14,0],"FYa7":[13,0],"LW3H":[13,16],"iUCR":[14,16]},"vertices":["tbKp","FYa7","LW3H","iUCR"],"texture":0},"XUJsEiJ0":{"uv":{"FYa7":[13,0],"Nt89":[12,0],"o2vx":[12,16],"LW3H":[13,16]},"vertices":["FYa7","Nt89","o2vx","LW3H"],"texture":0},"y02gowWc":{"uv":{"Nt89":[12,0],"kisU":[11,0],"Uy9h":[11,16],"o2vx":[12,16]},"vertices":["Nt89","kisU","Uy9h","o2vx"],"texture":0},"QhztUvIs":{"uv":{"kisU":[11,0],"5HEv":[10,0],"cVL2":[10,16],"Uy9h":[11,16]},"vertices":["kisU","5HEv","cVL2","Uy9h"],"texture":0},"mpzwf6fa":{"uv":{"5HEv":[10,0],"YAxu":[9,0],"06eU":[9,16],"cVL2":[10,16]},"vertices":["5HEv","YAxu","06eU","cVL2"],"texture":0},"VG4jxVT2":{"uv":{"YAxu":[9,0],"ugNs":[8,0],"B5py":[8,16],"06eU":[9,16]},"vertices":["YAxu","ugNs","B5py","06eU"],"texture":0},"BqBmGDlB":{"uv":{"ugNs":[8,0],"mt0e":[7,0],"FUSY":[7,16],"B5py":[8,16]},"vertices":["ugNs","mt0e","FUSY","B5py"],"texture":0},"ARH8IPJY":{"uv":{"mt0e":[7,0],"tlTa":[6,0],"wIT4":[6,16],"FUSY":[7,16]},"vertices":["mt0e","tlTa","wIT4","FUSY"],"texture":0},"RTGFVLdN":{"uv":{"tlTa":[6,0],"87SW":[5,0],"yK6M":[5,16],"wIT4":[6,16]},"vertices":["tlTa","87SW","yK6M","wIT4"],"texture":0},"u0CU1ucj":{"uv":{"87SW":[5,0],"9hXH":[4,0],"dIeG":[4,16],"yK6M":[5,16]},"vertices":["87SW","9hXH","dIeG","yK6M"],"texture":0},"PQRFApPq":{"uv":{"9hXH":[4,0],"70F6":[3,0],"nH6s":[3,16],"dIeG":[4,16]},"vertices":["9hXH","70F6","nH6s","dIeG"],"texture":0},"XUHSZGer":{"uv":{"70F6":[3,0],"knCG":[2,0],"Oy5q":[2,16],"nH6s":[3,16]},"vertices":["70F6","knCG","Oy5q","nH6s"],"texture":0},"M7mz6Eao":{"uv":{"knCG":[2,0],"p8Ei":[1,0],"VEP1":[1,16],"Oy5q":[2,16]},"vertices":["knCG","p8Ei","VEP1","Oy5q"],"texture":0},"o4r0CUL2":{"uv":{"CNsI":[0,16],"fvfn":[1,16],"SJnT":[1,5.551115123125783e-17],"p9gB":[8.881784197001252e-16,0]},"vertices":["CNsI","fvfn","SJnT","p9gB"],"texture":0},"UdoHZMuX":{"uv":{"fvfn":[1,16],"iUCR":[2,16],"sJVe":[2,1.1102230246251565e-16],"SJnT":[1,5.551115123125783e-17]},"vertices":["fvfn","iUCR","sJVe","SJnT"],"texture":0},"4masZPS8":{"uv":{"iUCR":[2,16],"LW3H":[3,16],"ED1K":[3,1.6653345369377348e-16],"sJVe":[2,1.1102230246251565e-16]},"vertices":["iUCR","LW3H","ED1K","sJVe"],"texture":0},"H4YLQD2g":{"uv":{"LW3H":[3,16],"o2vx":[4,16],"0w2S":[4,2.220446049250313e-16],"ED1K":[3,1.6653345369377348e-16]},"vertices":["LW3H","o2vx","0w2S","ED1K"],"texture":0},"OSnCz0xS":{"uv":{"o2vx":[4,16],"Uy9h":[5,16],"TE75":[5,2.7755575615628914e-16],"0w2S":[4,2.220446049250313e-16]},"vertices":["o2vx","Uy9h","TE75","0w2S"],"texture":0},"FUPxqsVj":{"uv":{"Uy9h":[5,16],"cVL2":[6,16],"8x1L":[6,3.3306690738754696e-16],"TE75":[5,2.7755575615628914e-16]},"vertices":["Uy9h","cVL2","8x1L","TE75"],"texture":0},"NKQJD9pt":{"uv":{"cVL2":[6,16],"06eU":[7,16],"SAGT":[7,3.885780586188048e-16],"8x1L":[6,3.3306690738754696e-16]},"vertices":["cVL2","06eU","SAGT","8x1L"],"texture":0},"eqKGrbAs":{"uv":{"06eU":[7,16],"B5py":[8,16],"IAUs":[8,4.440892098500626e-16],"SAGT":[7,3.885780586188048e-16]},"vertices":["06eU","B5py","IAUs","SAGT"],"texture":0},"wRHJ930z":{"uv":{"B5py":[8,16],"FUSY":[9,16],"DXhf":[9,4.996003610813204e-16],"IAUs":[8,4.440892098500626e-16]},"vertices":["B5py","FUSY","DXhf","IAUs"],"texture":0},"zXy2ZEbZ":{"uv":{"FUSY":[9,16],"wIT4":[10,16],"rttD":[10,5.551115123125783e-16],"DXhf":[9,4.996003610813204e-16]},"vertices":["FUSY","wIT4","rttD","DXhf"],"texture":0},"Mwl7aT2C":{"uv":{"wIT4":[10,16],"yK6M":[11,16],"3nux":[11,6.106226635438361e-16],"rttD":[10,5.551115123125783e-16]},"vertices":["wIT4","yK6M","3nux","rttD"],"texture":0},"SXEnA76S":{"uv":{"yK6M":[11,16],"dIeG":[12,16],"IRCx":[12,6.661338147750939e-16],"3nux":[11,6.106226635438361e-16]},"vertices":["yK6M","dIeG","IRCx","3nux"],"texture":0},"GnV3CIGg":{"uv":{"dIeG":[12,16],"nH6s":[13,16],"5jkP":[13,7.216449660063518e-16],"IRCx":[12,6.661338147750939e-16]},"vertices":["dIeG","nH6s","5jkP","IRCx"],"texture":0},"afcNfj1z":{"uv":{"nH6s":[13,16],"Oy5q":[14,16],"XqDN":[14,7.771561172376096e-16],"5jkP":[13,7.216449660063518e-16]},"vertices":["nH6s","Oy5q","XqDN","5jkP"],"texture":0},"IsiRrfDg":{"uv":{"Oy5q":[14,16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"XqDN":[14,7.771561172376096e-16]},"vertices":["Oy5q","VEP1","DBbG","XqDN"],"texture":0},"rqiZjeQd":{"uv":{"p9gB":[0,16],"SJnT":[1,16],"6gi1":[1,0],"tKmB":[0,0]},"vertices":["p9gB","SJnT","6gi1","tKmB"],"texture":0},"sxW9BuZf":{"uv":{"SJnT":[1,16],"sJVe":[2,16],"cL7l":[2,0],"6gi1":[1,0]},"vertices":["SJnT","sJVe","cL7l","6gi1"],"texture":0},"I8jCTYuJ":{"uv":{"sJVe":[2,16],"ED1K":[3,16],"6JJV":[3,0],"cL7l":[2,0]},"vertices":["sJVe","ED1K","6JJV","cL7l"],"texture":0},"NoXS3wZA":{"uv":{"ED1K":[3,16],"0w2S":[4,16],"ibGc":[4,0],"6JJV":[3,0]},"vertices":["ED1K","0w2S","ibGc","6JJV"],"texture":0},"vTMI1uEJ":{"uv":{"0w2S":[4,16],"TE75":[5,16],"8sh8":[5,0],"ibGc":[4,0]},"vertices":["0w2S","TE75","8sh8","ibGc"],"texture":0},"kew3bNtO":{"uv":{"TE75":[5,16],"8x1L":[6,16],"y3bM":[6,0],"8sh8":[5,0]},"vertices":["TE75","8x1L","y3bM","8sh8"],"texture":0},"PjampPoR":{"uv":{"8x1L":[6,16],"SAGT":[7,16],"ymVT":[7,0],"y3bM":[6,0]},"vertices":["8x1L","SAGT","ymVT","y3bM"],"texture":0},"aHkuMvbE":{"uv":{"SAGT":[7,16],"IAUs":[8,16],"Jfyg":[8,0],"ymVT":[7,0]},"vertices":["SAGT","IAUs","Jfyg","ymVT"],"texture":0},"3ogf3fBm":{"uv":{"IAUs":[8,16],"DXhf":[9,16],"NgdR":[9,0],"Jfyg":[8,0]},"vertices":["IAUs","DXhf","NgdR","Jfyg"],"texture":0},"KnPoUAkI":{"uv":{"DXhf":[9,16],"rttD":[10,16],"iobY":[10,0],"NgdR":[9,0]},"vertices":["DXhf","rttD","iobY","NgdR"],"texture":0},"7VPdmk1e":{"uv":{"rttD":[10,16],"3nux":[11,16],"OuGn":[11,0],"iobY":[10,0]},"vertices":["rttD","3nux","OuGn","iobY"],"texture":0},"cBk4f2Wx":{"uv":{"3nux":[11,16],"IRCx":[12,16],"uEW2":[12,0],"OuGn":[11,0]},"vertices":["3nux","IRCx","uEW2","OuGn"],"texture":0},"i7LmGJIf":{"uv":{"IRCx":[12,16],"5jkP":[13,16],"EXF4":[13,0],"uEW2":[12,0]},"vertices":["IRCx","5jkP","EXF4","uEW2"],"texture":0},"BAIZ6z3V":{"uv":{"5jkP":[13,16],"XqDN":[14,16],"Rhp5":[14,0],"EXF4":[13,0]},"vertices":["5jkP","XqDN","Rhp5","EXF4"],"texture":0},"U1aetQB8":{"uv":{"XqDN":[14,16],"DBbG":[15,16],"oolz":[15,0],"Rhp5":[14,0]},"vertices":["XqDN","DBbG","oolz","Rhp5"],"texture":0},"ZwjO1nJB":{"uv":{"tKmB":[16,8.881784197001252e-16],"6gi1":[15,8.326672684688674e-16],"SFbE":[15,16],"3h3r":[16,16]},"vertices":["tKmB","6gi1","SFbE","3h3r"],"texture":0},"htNxfqGw":{"uv":{"6gi1":[15,8.326672684688674e-16],"cL7l":[14,7.771561172376096e-16],"tbKp":[14,16],"SFbE":[15,16]},"vertices":["6gi1","cL7l","tbKp","SFbE"],"texture":0},"ThXXcHHP":{"uv":{"cL7l":[14,7.771561172376096e-16],"6JJV":[13,7.216449660063518e-16],"FYa7":[13,16],"tbKp":[14,16]},"vertices":["cL7l","6JJV","FYa7","tbKp"],"texture":0},"s1i8wocb":{"uv":{"6JJV":[13,7.216449660063518e-16],"ibGc":[12,6.661338147750939e-16],"Nt89":[12,16],"FYa7":[13,16]},"vertices":["6JJV","ibGc","Nt89","FYa7"],"texture":0},"6kiGkEc5":{"uv":{"ibGc":[12,6.661338147750939e-16],"8sh8":[11,6.106226635438361e-16],"kisU":[11,16],"Nt89":[12,16]},"vertices":["ibGc","8sh8","kisU","Nt89"],"texture":0},"cSBcnKjJ":{"uv":{"8sh8":[11,6.106226635438361e-16],"y3bM":[10,5.551115123125783e-16],"5HEv":[10,16],"kisU":[11,16]},"vertices":["8sh8","y3bM","5HEv","kisU"],"texture":0},"S5sisQS8":{"uv":{"y3bM":[10,5.551115123125783e-16],"ymVT":[9,4.996003610813204e-16],"YAxu":[9,16],"5HEv":[10,16]},"vertices":["y3bM","ymVT","YAxu","5HEv"],"texture":0},"W9n88rxF":{"uv":{"ymVT":[9,4.996003610813204e-16],"Jfyg":[8,4.440892098500626e-16],"ugNs":[8,16],"YAxu":[9,16]},"vertices":["ymVT","Jfyg","ugNs","YAxu"],"texture":0},"xdxBfdPZ":{"uv":{"Jfyg":[8,4.440892098500626e-16],"NgdR":[7,3.885780586188048e-16],"mt0e":[7,16],"ugNs":[8,16]},"vertices":["Jfyg","NgdR","mt0e","ugNs"],"texture":0},"FylxCigO":{"uv":{"NgdR":[7,3.885780586188048e-16],"iobY":[6.000000000000001,3.3306690738754696e-16],"tlTa":[6,16],"mt0e":[7,16]},"vertices":["NgdR","iobY","tlTa","mt0e"],"texture":0},"tRPuOI6P":{"uv":{"iobY":[6.000000000000001,3.3306690738754696e-16],"OuGn":[5.000000000000001,2.7755575615628914e-16],"87SW":[5,16],"tlTa":[6,16]},"vertices":["iobY","OuGn","87SW","tlTa"],"texture":0},"QXOgiCNa":{"uv":{"OuGn":[5.000000000000001,2.7755575615628914e-16],"uEW2":[4.000000000000001,2.220446049250313e-16],"9hXH":[4,16],"87SW":[5,16]},"vertices":["OuGn","uEW2","9hXH","87SW"],"texture":0},"Q04gzYJ7":{"uv":{"uEW2":[4.000000000000001,2.220446049250313e-16],"EXF4":[3.000000000000001,1.6653345369377348e-16],"70F6":[3,16],"9hXH":[4,16]},"vertices":["uEW2","EXF4","70F6","9hXH"],"texture":0},"uxbqt6qs":{"uv":{"EXF4":[3.000000000000001,1.6653345369377348e-16],"Rhp5":[2.000000000000001,1.1102230246251565e-16],"knCG":[2,16],"70F6":[3,16]},"vertices":["EXF4","Rhp5","knCG","70F6"],"texture":0},"AP53gWa3":{"uv":{"Rhp5":[2.000000000000001,1.1102230246251565e-16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"knCG":[2,16]},"vertices":["Rhp5","oolz","p8Ei","knCG"],"texture":0}},"type":"mesh","uuid":"4ef29334-1757-9147-e314-74b89c1e7d07"},{"name":"8","color":9,"origin":[0,0,0],"rotation":[0,0,0],"visibility":true,"locked":false,"render_order":"default","allow_mirror_modeling":true,"vertices":{"tKmB":[0.5,0.5,26],"UDcH":[0.5,0.5,10],"p9gB":[0.5,-0.5,26],"2jsq":[0.5,-0.5,10],"3h3r":[-0.5,0.5,26],"rFEr":[-0.5,0.5,10],"CNsI":[-0.5,-0.5,26],"nwmP":[-0.5,-0.5,10],"SFbE":[-0.5,0.05797101449275366,25],"fvfn":[-0.5,-0.9420289855072461,25],"tbKp":[-0.5,-0.29565217391304344,24],"iUCR":[-0.5,-1.2956521739130444,24],"FYa7":[-0.5,-0.5608695652173914,23],"LW3H":[-0.5,-1.5608695652173932,23],"Nt89":[-0.5,-0.7376811594202899,22],"o2vx":[-0.5,-1.7376811594202906,22],"kisU":[-0.5,-0.8702898550724636,21],"Uy9h":[-0.5,-1.870289855072464,21],"5HEv":[-0.5,-0.958695652173913,20],"cVL2":[-0.5,-1.9586956521739136,20],"YAxu":[-0.5,-1.0028985507246375,19],"06eU":[-0.5,-2.0028985507246393,19],"ugNs":[-0.5,-1.0249999999999997,18],"B5py":[-0.5,-2.025000000000002,18],"mt0e":[-0.5,-1.0028985507246375,17],"FUSY":[-0.5,-2.0028985507246393,17],"tlTa":[-0.5,-0.958695652173913,16],"wIT4":[-0.5,-1.9586956521739136,16],"87SW":[-0.5,-0.8702898550724636,15],"yK6M":[-0.5,-1.870289855072464,15],"9hXH":[-0.5,-0.7376811594202899,14],"dIeG":[-0.5,-1.7376811594202906,14],"70F6":[-0.5,-0.5608695652173914,13],"nH6s":[-0.5,-1.5608695652173932,13],"knCG":[-0.5,-0.29565217391304344,12],"Oy5q":[-0.5,-1.2956521739130444,12],"p8Ei":[-0.5,0.05797101449275366,11],"VEP1":[-0.5,-0.9420289855072461,11],"SJnT":[0.5,-0.9420289855072461,25],"sJVe":[0.5,-1.2956521739130444,24],"ED1K":[0.5,-1.5608695652173932,23],"0w2S":[0.5,-1.7376811594202906,22],"TE75":[0.5,-1.870289855072464,21],"8x1L":[0.5,-1.9586956521739136,20],"SAGT":[0.5,-2.0028985507246393,19],"IAUs":[0.5,-2.025000000000002,18],"DXhf":[0.5,-2.0028985507246393,17],"rttD":[0.5,-1.9586956521739136,16],"3nux":[0.5,-1.870289855072464,15],"IRCx":[0.5,-1.7376811594202906,14],"5jkP":[0.5,-1.5608695652173932,13],"XqDN":[0.5,-1.2956521739130444,12],"DBbG":[0.5,-0.9420289855072461,11],"6gi1":[0.5,0.05797101449275366,25],"cL7l":[0.5,-0.29565217391304344,24],"6JJV":[0.5,-0.5608695652173914,23],"ibGc":[0.5,-0.7376811594202899,22],"8sh8":[0.5,-0.8702898550724636,21],"y3bM":[0.5,-0.958695652173913,20],"ymVT":[0.5,-1.0028985507246375,19],"Jfyg":[0.5,-1.0249999999999997,18],"NgdR":[0.5,-1.0028985507246375,17],"iobY":[0.5,-0.958695652173913,16],"OuGn":[0.5,-0.8702898550724636,15],"uEW2":[0.5,-0.7376811594202899,14],"EXF4":[0.5,-0.5608695652173914,13],"Rhp5":[0.5,-0.29565217391304344,12],"oolz":[0.5,0.05797101449275366,11]},"faces":{"eITncMg3":{"uv":{"UDcH":[16,0],"DBbG":[15,16],"oolz":[15,0],"2jsq":[16,16]},"vertices":["UDcH","DBbG","oolz","2jsq"],"texture":0},"JOcBafJR":{"uv":{"nwmP":[0,16],"p8Ei":[1,0],"VEP1":[1,16],"rFEr":[0,0]},"vertices":["nwmP","p8Ei","VEP1","rFEr"],"texture":0},"Oa0IlY2d":{"uv":{"rFEr":[0,16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"UDcH":[8.881784197001252e-16,0]},"vertices":["rFEr","oolz","p8Ei","UDcH"],"texture":0},"Dq3qTzzZ":{"uv":{"2jsq":[16,8.881784197001252e-16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"nwmP":[16,16]},"vertices":["2jsq","VEP1","DBbG","nwmP"],"texture":0},"PH1WbY6P":{"uv":{"tKmB":[0,0],"3h3r":[0,0],"p9gB":[0,16],"CNsI":[0,16]},"vertices":["tKmB","3h3r","p9gB","CNsI"],"texture":0},"xW5eAbyB":{"uv":{"rFEr":[0,0],"UDcH":[0,0],"nwmP":[0,16],"2jsq":[0,16]},"vertices":["rFEr","UDcH","nwmP","2jsq"],"texture":0},"XDldXQU4":{"uv":{"3h3r":[16,0],"SFbE":[15,0],"fvfn":[15,16],"CNsI":[16,16]},"vertices":["3h3r","SFbE","fvfn","CNsI"],"texture":0},"eA1h4BU4":{"uv":{"SFbE":[15,0],"tbKp":[14,0],"iUCR":[14,16],"fvfn":[15,16]},"vertices":["SFbE","tbKp","iUCR","fvfn"],"texture":0},"uSD0Om3G":{"uv":{"tbKp":[14,0],"FYa7":[13,0],"LW3H":[13,16],"iUCR":[14,16]},"vertices":["tbKp","FYa7","LW3H","iUCR"],"texture":0},"XUJsEiJ0":{"uv":{"FYa7":[13,0],"Nt89":[12,0],"o2vx":[12,16],"LW3H":[13,16]},"vertices":["FYa7","Nt89","o2vx","LW3H"],"texture":0},"y02gowWc":{"uv":{"Nt89":[12,0],"kisU":[11,0],"Uy9h":[11,16],"o2vx":[12,16]},"vertices":["Nt89","kisU","Uy9h","o2vx"],"texture":0},"QhztUvIs":{"uv":{"kisU":[11,0],"5HEv":[10,0],"cVL2":[10,16],"Uy9h":[11,16]},"vertices":["kisU","5HEv","cVL2","Uy9h"],"texture":0},"mpzwf6fa":{"uv":{"5HEv":[10,0],"YAxu":[9,0],"06eU":[9,16],"cVL2":[10,16]},"vertices":["5HEv","YAxu","06eU","cVL2"],"texture":0},"VG4jxVT2":{"uv":{"YAxu":[9,0],"ugNs":[8,0],"B5py":[8,16],"06eU":[9,16]},"vertices":["YAxu","ugNs","B5py","06eU"],"texture":0},"BqBmGDlB":{"uv":{"ugNs":[8,0],"mt0e":[7,0],"FUSY":[7,16],"B5py":[8,16]},"vertices":["ugNs","mt0e","FUSY","B5py"],"texture":0},"ARH8IPJY":{"uv":{"mt0e":[7,0],"tlTa":[6,0],"wIT4":[6,16],"FUSY":[7,16]},"vertices":["mt0e","tlTa","wIT4","FUSY"],"texture":0},"RTGFVLdN":{"uv":{"tlTa":[6,0],"87SW":[5,0],"yK6M":[5,16],"wIT4":[6,16]},"vertices":["tlTa","87SW","yK6M","wIT4"],"texture":0},"u0CU1ucj":{"uv":{"87SW":[5,0],"9hXH":[4,0],"dIeG":[4,16],"yK6M":[5,16]},"vertices":["87SW","9hXH","dIeG","yK6M"],"texture":0},"PQRFApPq":{"uv":{"9hXH":[4,0],"70F6":[3,0],"nH6s":[3,16],"dIeG":[4,16]},"vertices":["9hXH","70F6","nH6s","dIeG"],"texture":0},"XUHSZGer":{"uv":{"70F6":[3,0],"knCG":[2,0],"Oy5q":[2,16],"nH6s":[3,16]},"vertices":["70F6","knCG","Oy5q","nH6s"],"texture":0},"M7mz6Eao":{"uv":{"knCG":[2,0],"p8Ei":[1,0],"VEP1":[1,16],"Oy5q":[2,16]},"vertices":["knCG","p8Ei","VEP1","Oy5q"],"texture":0},"o4r0CUL2":{"uv":{"CNsI":[0,16],"fvfn":[1,16],"SJnT":[1,5.551115123125783e-17],"p9gB":[8.881784197001252e-16,0]},"vertices":["CNsI","fvfn","SJnT","p9gB"],"texture":0},"UdoHZMuX":{"uv":{"fvfn":[1,16],"iUCR":[2,16],"sJVe":[2,1.1102230246251565e-16],"SJnT":[1,5.551115123125783e-17]},"vertices":["fvfn","iUCR","sJVe","SJnT"],"texture":0},"4masZPS8":{"uv":{"iUCR":[2,16],"LW3H":[3,16],"ED1K":[3,1.6653345369377348e-16],"sJVe":[2,1.1102230246251565e-16]},"vertices":["iUCR","LW3H","ED1K","sJVe"],"texture":0},"H4YLQD2g":{"uv":{"LW3H":[3,16],"o2vx":[4,16],"0w2S":[4,2.220446049250313e-16],"ED1K":[3,1.6653345369377348e-16]},"vertices":["LW3H","o2vx","0w2S","ED1K"],"texture":0},"OSnCz0xS":{"uv":{"o2vx":[4,16],"Uy9h":[5,16],"TE75":[5,2.7755575615628914e-16],"0w2S":[4,2.220446049250313e-16]},"vertices":["o2vx","Uy9h","TE75","0w2S"],"texture":0},"FUPxqsVj":{"uv":{"Uy9h":[5,16],"cVL2":[6,16],"8x1L":[6,3.3306690738754696e-16],"TE75":[5,2.7755575615628914e-16]},"vertices":["Uy9h","cVL2","8x1L","TE75"],"texture":0},"NKQJD9pt":{"uv":{"cVL2":[6,16],"06eU":[7,16],"SAGT":[7,3.885780586188048e-16],"8x1L":[6,3.3306690738754696e-16]},"vertices":["cVL2","06eU","SAGT","8x1L"],"texture":0},"eqKGrbAs":{"uv":{"06eU":[7,16],"B5py":[8,16],"IAUs":[8,4.440892098500626e-16],"SAGT":[7,3.885780586188048e-16]},"vertices":["06eU","B5py","IAUs","SAGT"],"texture":0},"wRHJ930z":{"uv":{"B5py":[8,16],"FUSY":[9,16],"DXhf":[9,4.996003610813204e-16],"IAUs":[8,4.440892098500626e-16]},"vertices":["B5py","FUSY","DXhf","IAUs"],"texture":0},"zXy2ZEbZ":{"uv":{"FUSY":[9,16],"wIT4":[10,16],"rttD":[10,5.551115123125783e-16],"DXhf":[9,4.996003610813204e-16]},"vertices":["FUSY","wIT4","rttD","DXhf"],"texture":0},"Mwl7aT2C":{"uv":{"wIT4":[10,16],"yK6M":[11,16],"3nux":[11,6.106226635438361e-16],"rttD":[10,5.551115123125783e-16]},"vertices":["wIT4","yK6M","3nux","rttD"],"texture":0},"SXEnA76S":{"uv":{"yK6M":[11,16],"dIeG":[12,16],"IRCx":[12,6.661338147750939e-16],"3nux":[11,6.106226635438361e-16]},"vertices":["yK6M","dIeG","IRCx","3nux"],"texture":0},"GnV3CIGg":{"uv":{"dIeG":[12,16],"nH6s":[13,16],"5jkP":[13,7.216449660063518e-16],"IRCx":[12,6.661338147750939e-16]},"vertices":["dIeG","nH6s","5jkP","IRCx"],"texture":0},"afcNfj1z":{"uv":{"nH6s":[13,16],"Oy5q":[14,16],"XqDN":[14,7.771561172376096e-16],"5jkP":[13,7.216449660063518e-16]},"vertices":["nH6s","Oy5q","XqDN","5jkP"],"texture":0},"IsiRrfDg":{"uv":{"Oy5q":[14,16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"XqDN":[14,7.771561172376096e-16]},"vertices":["Oy5q","VEP1","DBbG","XqDN"],"texture":0},"rqiZjeQd":{"uv":{"p9gB":[0,16],"SJnT":[1,16],"6gi1":[1,0],"tKmB":[0,0]},"vertices":["p9gB","SJnT","6gi1","tKmB"],"texture":0},"sxW9BuZf":{"uv":{"SJnT":[1,16],"sJVe":[2,16],"cL7l":[2,0],"6gi1":[1,0]},"vertices":["SJnT","sJVe","cL7l","6gi1"],"texture":0},"I8jCTYuJ":{"uv":{"sJVe":[2,16],"ED1K":[3,16],"6JJV":[3,0],"cL7l":[2,0]},"vertices":["sJVe","ED1K","6JJV","cL7l"],"texture":0},"NoXS3wZA":{"uv":{"ED1K":[3,16],"0w2S":[4,16],"ibGc":[4,0],"6JJV":[3,0]},"vertices":["ED1K","0w2S","ibGc","6JJV"],"texture":0},"vTMI1uEJ":{"uv":{"0w2S":[4,16],"TE75":[5,16],"8sh8":[5,0],"ibGc":[4,0]},"vertices":["0w2S","TE75","8sh8","ibGc"],"texture":0},"kew3bNtO":{"uv":{"TE75":[5,16],"8x1L":[6,16],"y3bM":[6,0],"8sh8":[5,0]},"vertices":["TE75","8x1L","y3bM","8sh8"],"texture":0},"PjampPoR":{"uv":{"8x1L":[6,16],"SAGT":[7,16],"ymVT":[7,0],"y3bM":[6,0]},"vertices":["8x1L","SAGT","ymVT","y3bM"],"texture":0},"aHkuMvbE":{"uv":{"SAGT":[7,16],"IAUs":[8,16],"Jfyg":[8,0],"ymVT":[7,0]},"vertices":["SAGT","IAUs","Jfyg","ymVT"],"texture":0},"3ogf3fBm":{"uv":{"IAUs":[8,16],"DXhf":[9,16],"NgdR":[9,0],"Jfyg":[8,0]},"vertices":["IAUs","DXhf","NgdR","Jfyg"],"texture":0},"KnPoUAkI":{"uv":{"DXhf":[9,16],"rttD":[10,16],"iobY":[10,0],"NgdR":[9,0]},"vertices":["DXhf","rttD","iobY","NgdR"],"texture":0},"7VPdmk1e":{"uv":{"rttD":[10,16],"3nux":[11,16],"OuGn":[11,0],"iobY":[10,0]},"vertices":["rttD","3nux","OuGn","iobY"],"texture":0},"cBk4f2Wx":{"uv":{"3nux":[11,16],"IRCx":[12,16],"uEW2":[12,0],"OuGn":[11,0]},"vertices":["3nux","IRCx","uEW2","OuGn"],"texture":0},"i7LmGJIf":{"uv":{"IRCx":[12,16],"5jkP":[13,16],"EXF4":[13,0],"uEW2":[12,0]},"vertices":["IRCx","5jkP","EXF4","uEW2"],"texture":0},"BAIZ6z3V":{"uv":{"5jkP":[13,16],"XqDN":[14,16],"Rhp5":[14,0],"EXF4":[13,0]},"vertices":["5jkP","XqDN","Rhp5","EXF4"],"texture":0},"U1aetQB8":{"uv":{"XqDN":[14,16],"DBbG":[15,16],"oolz":[15,0],"Rhp5":[14,0]},"vertices":["XqDN","DBbG","oolz","Rhp5"],"texture":0},"ZwjO1nJB":{"uv":{"tKmB":[16,8.881784197001252e-16],"6gi1":[15,8.326672684688674e-16],"SFbE":[15,16],"3h3r":[16,16]},"vertices":["tKmB","6gi1","SFbE","3h3r"],"texture":0},"htNxfqGw":{"uv":{"6gi1":[15,8.326672684688674e-16],"cL7l":[14,7.771561172376096e-16],"tbKp":[14,16],"SFbE":[15,16]},"vertices":["6gi1","cL7l","tbKp","SFbE"],"texture":0},"ThXXcHHP":{"uv":{"cL7l":[14,7.771561172376096e-16],"6JJV":[13,7.216449660063518e-16],"FYa7":[13,16],"tbKp":[14,16]},"vertices":["cL7l","6JJV","FYa7","tbKp"],"texture":0},"s1i8wocb":{"uv":{"6JJV":[13,7.216449660063518e-16],"ibGc":[12,6.661338147750939e-16],"Nt89":[12,16],"FYa7":[13,16]},"vertices":["6JJV","ibGc","Nt89","FYa7"],"texture":0},"6kiGkEc5":{"uv":{"ibGc":[12,6.661338147750939e-16],"8sh8":[11,6.106226635438361e-16],"kisU":[11,16],"Nt89":[12,16]},"vertices":["ibGc","8sh8","kisU","Nt89"],"texture":0},"cSBcnKjJ":{"uv":{"8sh8":[11,6.106226635438361e-16],"y3bM":[10,5.551115123125783e-16],"5HEv":[10,16],"kisU":[11,16]},"vertices":["8sh8","y3bM","5HEv","kisU"],"texture":0},"S5sisQS8":{"uv":{"y3bM":[10,5.551115123125783e-16],"ymVT":[9,4.996003610813204e-16],"YAxu":[9,16],"5HEv":[10,16]},"vertices":["y3bM","ymVT","YAxu","5HEv"],"texture":0},"W9n88rxF":{"uv":{"ymVT":[9,4.996003610813204e-16],"Jfyg":[8,4.440892098500626e-16],"ugNs":[8,16],"YAxu":[9,16]},"vertices":["ymVT","Jfyg","ugNs","YAxu"],"texture":0},"xdxBfdPZ":{"uv":{"Jfyg":[8,4.440892098500626e-16],"NgdR":[7,3.885780586188048e-16],"mt0e":[7,16],"ugNs":[8,16]},"vertices":["Jfyg","NgdR","mt0e","ugNs"],"texture":0},"FylxCigO":{"uv":{"NgdR":[7,3.885780586188048e-16],"iobY":[6.000000000000001,3.3306690738754696e-16],"tlTa":[6,16],"mt0e":[7,16]},"vertices":["NgdR","iobY","tlTa","mt0e"],"texture":0},"tRPuOI6P":{"uv":{"iobY":[6.000000000000001,3.3306690738754696e-16],"OuGn":[5.000000000000001,2.7755575615628914e-16],"87SW":[5,16],"tlTa":[6,16]},"vertices":["iobY","OuGn","87SW","tlTa"],"texture":0},"QXOgiCNa":{"uv":{"OuGn":[5.000000000000001,2.7755575615628914e-16],"uEW2":[4.000000000000001,2.220446049250313e-16],"9hXH":[4,16],"87SW":[5,16]},"vertices":["OuGn","uEW2","9hXH","87SW"],"texture":0},"Q04gzYJ7":{"uv":{"uEW2":[4.000000000000001,2.220446049250313e-16],"EXF4":[3.000000000000001,1.6653345369377348e-16],"70F6":[3,16],"9hXH":[4,16]},"vertices":["uEW2","EXF4","70F6","9hXH"],"texture":0},"uxbqt6qs":{"uv":{"EXF4":[3.000000000000001,1.6653345369377348e-16],"Rhp5":[2.000000000000001,1.1102230246251565e-16],"knCG":[2,16],"70F6":[3,16]},"vertices":["EXF4","Rhp5","knCG","70F6"],"texture":0},"AP53gWa3":{"uv":{"Rhp5":[2.000000000000001,1.1102230246251565e-16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"knCG":[2,16]},"vertices":["Rhp5","oolz","p8Ei","knCG"],"texture":0}},"type":"mesh","uuid":"1b0e9480-0af1-7937-7619-bb9ed6e8fea5"},{"name":"7","color":9,"origin":[0,0,0],"rotation":[0,0,0],"visibility":true,"locked":false,"render_order":"default","allow_mirror_modeling":true,"vertices":{"tKmB":[0.5,0.5,44],"UDcH":[0.5,0.5,28],"p9gB":[0.5,-0.5,44],"2jsq":[0.5,-0.5,28],"3h3r":[-0.5,0.5,44],"rFEr":[-0.5,0.5,28],"CNsI":[-0.5,-0.5,44],"nwmP":[-0.5,-0.5,28],"SFbE":[-0.5,0.11594202898550732,43],"fvfn":[-0.5,-0.8840579710144922,43],"tbKp":[-0.5,-0.19130434782608685,42],"iUCR":[-0.5,-1.1913043478260885,42],"FYa7":[-0.5,-0.4217391304347826,41],"LW3H":[-0.5,-1.4217391304347835,41],"Nt89":[-0.5,-0.5753623188405796,40],"o2vx":[-0.5,-1.5753623188405808,40],"kisU":[-0.5,-0.6905797101449274,39],"Uy9h":[-0.5,-1.6905797101449274,39],"5HEv":[-0.5,-0.767391304347826,38],"cVL2":[-0.5,-1.7673913043478269,38],"YAxu":[-0.5,-0.8057971014492751,37],"06eU":[-0.5,-1.8057971014492775,37],"ugNs":[-0.5,-0.8249999999999997,36],"B5py":[-0.5,-1.8250000000000028,36],"mt0e":[-0.5,-0.8057971014492751,35],"FUSY":[-0.5,-1.8057971014492775,35],"tlTa":[-0.5,-0.767391304347826,34],"wIT4":[-0.5,-1.7673913043478269,34],"87SW":[-0.5,-0.6905797101449274,33],"yK6M":[-0.5,-1.6905797101449274,33],"9hXH":[-0.5,-0.5753623188405796,32],"dIeG":[-0.5,-1.5753623188405808,32],"70F6":[-0.5,-0.4217391304347826,31],"nH6s":[-0.5,-1.4217391304347835,31],"knCG":[-0.5,-0.19130434782608685,30],"Oy5q":[-0.5,-1.1913043478260885,30],"p8Ei":[-0.5,0.11594202898550732,29],"VEP1":[-0.5,-0.8840579710144922,29],"SJnT":[0.5,-0.8840579710144922,43],"sJVe":[0.5,-1.1913043478260885,42],"ED1K":[0.5,-1.4217391304347835,41],"0w2S":[0.5,-1.5753623188405808,40],"TE75":[0.5,-1.6905797101449274,39],"8x1L":[0.5,-1.7673913043478269,38],"SAGT":[0.5,-1.8057971014492775,37],"IAUs":[0.5,-1.8250000000000028,36],"DXhf":[0.5,-1.8057971014492775,35],"rttD":[0.5,-1.7673913043478269,34],"3nux":[0.5,-1.6905797101449274,33],"IRCx":[0.5,-1.5753623188405808,32],"5jkP":[0.5,-1.4217391304347835,31],"XqDN":[0.5,-1.1913043478260885,30],"DBbG":[0.5,-0.8840579710144922,29],"6gi1":[0.5,0.11594202898550732,43],"cL7l":[0.5,-0.19130434782608685,42],"6JJV":[0.5,-0.4217391304347826,41],"ibGc":[0.5,-0.5753623188405796,40],"8sh8":[0.5,-0.6905797101449274,39],"y3bM":[0.5,-0.767391304347826,38],"ymVT":[0.5,-0.8057971014492751,37],"Jfyg":[0.5,-0.8249999999999997,36],"NgdR":[0.5,-0.8057971014492751,35],"iobY":[0.5,-0.767391304347826,34],"OuGn":[0.5,-0.6905797101449274,33],"uEW2":[0.5,-0.5753623188405796,32],"EXF4":[0.5,-0.4217391304347826,31],"Rhp5":[0.5,-0.19130434782608685,30],"oolz":[0.5,0.11594202898550732,29]},"faces":{"eITncMg3":{"uv":{"UDcH":[16,0],"DBbG":[15,16],"oolz":[15,0],"2jsq":[16,16]},"vertices":["UDcH","DBbG","oolz","2jsq"],"texture":0},"JOcBafJR":{"uv":{"nwmP":[0,16],"p8Ei":[1,0],"VEP1":[1,16],"rFEr":[0,0]},"vertices":["nwmP","p8Ei","VEP1","rFEr"],"texture":0},"Oa0IlY2d":{"uv":{"rFEr":[0,16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"UDcH":[8.881784197001252e-16,0]},"vertices":["rFEr","oolz","p8Ei","UDcH"],"texture":0},"Dq3qTzzZ":{"uv":{"2jsq":[16,8.881784197001252e-16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"nwmP":[16,16]},"vertices":["2jsq","VEP1","DBbG","nwmP"],"texture":0},"PH1WbY6P":{"uv":{"tKmB":[0,0],"3h3r":[0,0],"p9gB":[0,16],"CNsI":[0,16]},"vertices":["tKmB","3h3r","p9gB","CNsI"],"texture":0},"xW5eAbyB":{"uv":{"rFEr":[0,0],"UDcH":[0,0],"nwmP":[0,16],"2jsq":[0,16]},"vertices":["rFEr","UDcH","nwmP","2jsq"],"texture":0},"XDldXQU4":{"uv":{"3h3r":[16,0],"SFbE":[15,0],"fvfn":[15,16],"CNsI":[16,16]},"vertices":["3h3r","SFbE","fvfn","CNsI"],"texture":0},"eA1h4BU4":{"uv":{"SFbE":[15,0],"tbKp":[14,0],"iUCR":[14,16],"fvfn":[15,16]},"vertices":["SFbE","tbKp","iUCR","fvfn"],"texture":0},"uSD0Om3G":{"uv":{"tbKp":[14,0],"FYa7":[13,0],"LW3H":[13,16],"iUCR":[14,16]},"vertices":["tbKp","FYa7","LW3H","iUCR"],"texture":0},"XUJsEiJ0":{"uv":{"FYa7":[13,0],"Nt89":[12,0],"o2vx":[12,16],"LW3H":[13,16]},"vertices":["FYa7","Nt89","o2vx","LW3H"],"texture":0},"y02gowWc":{"uv":{"Nt89":[12,0],"kisU":[11,0],"Uy9h":[11,16],"o2vx":[12,16]},"vertices":["Nt89","kisU","Uy9h","o2vx"],"texture":0},"QhztUvIs":{"uv":{"kisU":[11,0],"5HEv":[10,0],"cVL2":[10,16],"Uy9h":[11,16]},"vertices":["kisU","5HEv","cVL2","Uy9h"],"texture":0},"mpzwf6fa":{"uv":{"5HEv":[10,0],"YAxu":[9,0],"06eU":[9,16],"cVL2":[10,16]},"vertices":["5HEv","YAxu","06eU","cVL2"],"texture":0},"VG4jxVT2":{"uv":{"YAxu":[9,0],"ugNs":[8,0],"B5py":[8,16],"06eU":[9,16]},"vertices":["YAxu","ugNs","B5py","06eU"],"texture":0},"BqBmGDlB":{"uv":{"ugNs":[8,0],"mt0e":[7,0],"FUSY":[7,16],"B5py":[8,16]},"vertices":["ugNs","mt0e","FUSY","B5py"],"texture":0},"ARH8IPJY":{"uv":{"mt0e":[7,0],"tlTa":[6,0],"wIT4":[6,16],"FUSY":[7,16]},"vertices":["mt0e","tlTa","wIT4","FUSY"],"texture":0},"RTGFVLdN":{"uv":{"tlTa":[6,0],"87SW":[5,0],"yK6M":[5,16],"wIT4":[6,16]},"vertices":["tlTa","87SW","yK6M","wIT4"],"texture":0},"u0CU1ucj":{"uv":{"87SW":[5,0],"9hXH":[4,0],"dIeG":[4,16],"yK6M":[5,16]},"vertices":["87SW","9hXH","dIeG","yK6M"],"texture":0},"PQRFApPq":{"uv":{"9hXH":[4,0],"70F6":[3,0],"nH6s":[3,16],"dIeG":[4,16]},"vertices":["9hXH","70F6","nH6s","dIeG"],"texture":0},"XUHSZGer":{"uv":{"70F6":[3,0],"knCG":[2,0],"Oy5q":[2,16],"nH6s":[3,16]},"vertices":["70F6","knCG","Oy5q","nH6s"],"texture":0},"M7mz6Eao":{"uv":{"knCG":[2,0],"p8Ei":[1,0],"VEP1":[1,16],"Oy5q":[2,16]},"vertices":["knCG","p8Ei","VEP1","Oy5q"],"texture":0},"o4r0CUL2":{"uv":{"CNsI":[0,16],"fvfn":[1,16],"SJnT":[1,5.551115123125783e-17],"p9gB":[8.881784197001252e-16,0]},"vertices":["CNsI","fvfn","SJnT","p9gB"],"texture":0},"UdoHZMuX":{"uv":{"fvfn":[1,16],"iUCR":[2,16],"sJVe":[2,1.1102230246251565e-16],"SJnT":[1,5.551115123125783e-17]},"vertices":["fvfn","iUCR","sJVe","SJnT"],"texture":0},"4masZPS8":{"uv":{"iUCR":[2,16],"LW3H":[3,16],"ED1K":[3,1.6653345369377348e-16],"sJVe":[2,1.1102230246251565e-16]},"vertices":["iUCR","LW3H","ED1K","sJVe"],"texture":0},"H4YLQD2g":{"uv":{"LW3H":[3,16],"o2vx":[4,16],"0w2S":[4,2.220446049250313e-16],"ED1K":[3,1.6653345369377348e-16]},"vertices":["LW3H","o2vx","0w2S","ED1K"],"texture":0},"OSnCz0xS":{"uv":{"o2vx":[4,16],"Uy9h":[5,16],"TE75":[5,2.7755575615628914e-16],"0w2S":[4,2.220446049250313e-16]},"vertices":["o2vx","Uy9h","TE75","0w2S"],"texture":0},"FUPxqsVj":{"uv":{"Uy9h":[5,16],"cVL2":[6,16],"8x1L":[6,3.3306690738754696e-16],"TE75":[5,2.7755575615628914e-16]},"vertices":["Uy9h","cVL2","8x1L","TE75"],"texture":0},"NKQJD9pt":{"uv":{"cVL2":[6,16],"06eU":[7,16],"SAGT":[7,3.885780586188048e-16],"8x1L":[6,3.3306690738754696e-16]},"vertices":["cVL2","06eU","SAGT","8x1L"],"texture":0},"eqKGrbAs":{"uv":{"06eU":[7,16],"B5py":[8,16],"IAUs":[8,4.440892098500626e-16],"SAGT":[7,3.885780586188048e-16]},"vertices":["06eU","B5py","IAUs","SAGT"],"texture":0},"wRHJ930z":{"uv":{"B5py":[8,16],"FUSY":[9,16],"DXhf":[9,4.996003610813204e-16],"IAUs":[8,4.440892098500626e-16]},"vertices":["B5py","FUSY","DXhf","IAUs"],"texture":0},"zXy2ZEbZ":{"uv":{"FUSY":[9,16],"wIT4":[10,16],"rttD":[10,5.551115123125783e-16],"DXhf":[9,4.996003610813204e-16]},"vertices":["FUSY","wIT4","rttD","DXhf"],"texture":0},"Mwl7aT2C":{"uv":{"wIT4":[10,16],"yK6M":[11,16],"3nux":[11,6.106226635438361e-16],"rttD":[10,5.551115123125783e-16]},"vertices":["wIT4","yK6M","3nux","rttD"],"texture":0},"SXEnA76S":{"uv":{"yK6M":[11,16],"dIeG":[12,16],"IRCx":[12,6.661338147750939e-16],"3nux":[11,6.106226635438361e-16]},"vertices":["yK6M","dIeG","IRCx","3nux"],"texture":0},"GnV3CIGg":{"uv":{"dIeG":[12,16],"nH6s":[13,16],"5jkP":[13,7.216449660063518e-16],"IRCx":[12,6.661338147750939e-16]},"vertices":["dIeG","nH6s","5jkP","IRCx"],"texture":0},"afcNfj1z":{"uv":{"nH6s":[13,16],"Oy5q":[14,16],"XqDN":[14,7.771561172376096e-16],"5jkP":[13,7.216449660063518e-16]},"vertices":["nH6s","Oy5q","XqDN","5jkP"],"texture":0},"IsiRrfDg":{"uv":{"Oy5q":[14,16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"XqDN":[14,7.771561172376096e-16]},"vertices":["Oy5q","VEP1","DBbG","XqDN"],"texture":0},"rqiZjeQd":{"uv":{"p9gB":[0,16],"SJnT":[1,16],"6gi1":[1,0],"tKmB":[0,0]},"vertices":["p9gB","SJnT","6gi1","tKmB"],"texture":0},"sxW9BuZf":{"uv":{"SJnT":[1,16],"sJVe":[2,16],"cL7l":[2,0],"6gi1":[1,0]},"vertices":["SJnT","sJVe","cL7l","6gi1"],"texture":0},"I8jCTYuJ":{"uv":{"sJVe":[2,16],"ED1K":[3,16],"6JJV":[3,0],"cL7l":[2,0]},"vertices":["sJVe","ED1K","6JJV","cL7l"],"texture":0},"NoXS3wZA":{"uv":{"ED1K":[3,16],"0w2S":[4,16],"ibGc":[4,0],"6JJV":[3,0]},"vertices":["ED1K","0w2S","ibGc","6JJV"],"texture":0},"vTMI1uEJ":{"uv":{"0w2S":[4,16],"TE75":[5,16],"8sh8":[5,0],"ibGc":[4,0]},"vertices":["0w2S","TE75","8sh8","ibGc"],"texture":0},"kew3bNtO":{"uv":{"TE75":[5,16],"8x1L":[6,16],"y3bM":[6,0],"8sh8":[5,0]},"vertices":["TE75","8x1L","y3bM","8sh8"],"texture":0},"PjampPoR":{"uv":{"8x1L":[6,16],"SAGT":[7,16],"ymVT":[7,0],"y3bM":[6,0]},"vertices":["8x1L","SAGT","ymVT","y3bM"],"texture":0},"aHkuMvbE":{"uv":{"SAGT":[7,16],"IAUs":[8,16],"Jfyg":[8,0],"ymVT":[7,0]},"vertices":["SAGT","IAUs","Jfyg","ymVT"],"texture":0},"3ogf3fBm":{"uv":{"IAUs":[8,16],"DXhf":[9,16],"NgdR":[9,0],"Jfyg":[8,0]},"vertices":["IAUs","DXhf","NgdR","Jfyg"],"texture":0},"KnPoUAkI":{"uv":{"DXhf":[9,16],"rttD":[10,16],"iobY":[10,0],"NgdR":[9,0]},"vertices":["DXhf","rttD","iobY","NgdR"],"texture":0},"7VPdmk1e":{"uv":{"rttD":[10,16],"3nux":[11,16],"OuGn":[11,0],"iobY":[10,0]},"vertices":["rttD","3nux","OuGn","iobY"],"texture":0},"cBk4f2Wx":{"uv":{"3nux":[11,16],"IRCx":[12,16],"uEW2":[12,0],"OuGn":[11,0]},"vertices":["3nux","IRCx","uEW2","OuGn"],"texture":0},"i7LmGJIf":{"uv":{"IRCx":[12,16],"5jkP":[13,16],"EXF4":[13,0],"uEW2":[12,0]},"vertices":["IRCx","5jkP","EXF4","uEW2"],"texture":0},"BAIZ6z3V":{"uv":{"5jkP":[13,16],"XqDN":[14,16],"Rhp5":[14,0],"EXF4":[13,0]},"vertices":["5jkP","XqDN","Rhp5","EXF4"],"texture":0},"U1aetQB8":{"uv":{"XqDN":[14,16],"DBbG":[15,16],"oolz":[15,0],"Rhp5":[14,0]},"vertices":["XqDN","DBbG","oolz","Rhp5"],"texture":0},"ZwjO1nJB":{"uv":{"tKmB":[16,8.881784197001252e-16],"6gi1":[15,8.326672684688674e-16],"SFbE":[15,16],"3h3r":[16,16]},"vertices":["tKmB","6gi1","SFbE","3h3r"],"texture":0},"htNxfqGw":{"uv":{"6gi1":[15,8.326672684688674e-16],"cL7l":[14,7.771561172376096e-16],"tbKp":[14,16],"SFbE":[15,16]},"vertices":["6gi1","cL7l","tbKp","SFbE"],"texture":0},"ThXXcHHP":{"uv":{"cL7l":[14,7.771561172376096e-16],"6JJV":[13,7.216449660063518e-16],"FYa7":[13,16],"tbKp":[14,16]},"vertices":["cL7l","6JJV","FYa7","tbKp"],"texture":0},"s1i8wocb":{"uv":{"6JJV":[13,7.216449660063518e-16],"ibGc":[12,6.661338147750939e-16],"Nt89":[12,16],"FYa7":[13,16]},"vertices":["6JJV","ibGc","Nt89","FYa7"],"texture":0},"6kiGkEc5":{"uv":{"ibGc":[12,6.661338147750939e-16],"8sh8":[11,6.106226635438361e-16],"kisU":[11,16],"Nt89":[12,16]},"vertices":["ibGc","8sh8","kisU","Nt89"],"texture":0},"cSBcnKjJ":{"uv":{"8sh8":[11,6.106226635438361e-16],"y3bM":[10,5.551115123125783e-16],"5HEv":[10,16],"kisU":[11,16]},"vertices":["8sh8","y3bM","5HEv","kisU"],"texture":0},"S5sisQS8":{"uv":{"y3bM":[10,5.551115123125783e-16],"ymVT":[9,4.996003610813204e-16],"YAxu":[9,16],"5HEv":[10,16]},"vertices":["y3bM","ymVT","YAxu","5HEv"],"texture":0},"W9n88rxF":{"uv":{"ymVT":[9,4.996003610813204e-16],"Jfyg":[8,4.440892098500626e-16],"ugNs":[8,16],"YAxu":[9,16]},"vertices":["ymVT","Jfyg","ugNs","YAxu"],"texture":0},"xdxBfdPZ":{"uv":{"Jfyg":[8,4.440892098500626e-16],"NgdR":[7,3.885780586188048e-16],"mt0e":[7,16],"ugNs":[8,16]},"vertices":["Jfyg","NgdR","mt0e","ugNs"],"texture":0},"FylxCigO":{"uv":{"NgdR":[7,3.885780586188048e-16],"iobY":[6.000000000000001,3.3306690738754696e-16],"tlTa":[6,16],"mt0e":[7,16]},"vertices":["NgdR","iobY","tlTa","mt0e"],"texture":0},"tRPuOI6P":{"uv":{"iobY":[6.000000000000001,3.3306690738754696e-16],"OuGn":[5.000000000000001,2.7755575615628914e-16],"87SW":[5,16],"tlTa":[6,16]},"vertices":["iobY","OuGn","87SW","tlTa"],"texture":0},"QXOgiCNa":{"uv":{"OuGn":[5.000000000000001,2.7755575615628914e-16],"uEW2":[4.000000000000001,2.220446049250313e-16],"9hXH":[4,16],"87SW":[5,16]},"vertices":["OuGn","uEW2","9hXH","87SW"],"texture":0},"Q04gzYJ7":{"uv":{"uEW2":[4.000000000000001,2.220446049250313e-16],"EXF4":[3.000000000000001,1.6653345369377348e-16],"70F6":[3,16],"9hXH":[4,16]},"vertices":["uEW2","EXF4","70F6","9hXH"],"texture":0},"uxbqt6qs":{"uv":{"EXF4":[3.000000000000001,1.6653345369377348e-16],"Rhp5":[2.000000000000001,1.1102230246251565e-16],"knCG":[2,16],"70F6":[3,16]},"vertices":["EXF4","Rhp5","knCG","70F6"],"texture":0},"AP53gWa3":{"uv":{"Rhp5":[2.000000000000001,1.1102230246251565e-16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"knCG":[2,16]},"vertices":["Rhp5","oolz","p8Ei","knCG"],"texture":0}},"type":"mesh","uuid":"f6f53439-c59d-7750-9955-45b44503736d"},{"name":"6","color":9,"origin":[0,0,0],"rotation":[0,0,0],"visibility":true,"locked":false,"render_order":"default","allow_mirror_modeling":true,"vertices":{"tKmB":[0.5,0.5,62],"UDcH":[0.5,0.5,46],"p9gB":[0.5,-0.5,62],"2jsq":[0.5,-0.5,46],"3h3r":[-0.5,0.5,62],"rFEr":[-0.5,0.5,46],"CNsI":[-0.5,-0.5,62],"nwmP":[-0.5,-0.5,46],"SFbE":[-0.5,0.17391304347826092,61],"fvfn":[-0.5,-0.8260869565217384,61],"tbKp":[-0.5,-0.08695652173913038,60],"iUCR":[-0.5,-1.0869565217391326,60],"FYa7":[-0.5,-0.28260869565217395,59],"LW3H":[-0.5,-1.2826086956521756,59],"Nt89":[-0.5,-0.4130434782608695,58],"o2vx":[-0.5,-1.413043478260871,58],"kisU":[-0.5,-0.5108695652173911,57],"Uy9h":[-0.5,-1.5108695652173907,57],"5HEv":[-0.5,-0.576086956521739,56],"cVL2":[-0.5,-1.5760869565217401,56],"YAxu":[-0.5,-0.6086956521739129,55],"06eU":[-0.5,-1.6086956521739157,55],"ugNs":[-0.5,-0.6249999999999998,54],"B5py":[-0.5,-1.6250000000000036,54],"mt0e":[-0.5,-0.6086956521739129,53],"FUSY":[-0.5,-1.6086956521739157,53],"tlTa":[-0.5,-0.576086956521739,52],"wIT4":[-0.5,-1.5760869565217401,52],"87SW":[-0.5,-0.5108695652173911,51],"yK6M":[-0.5,-1.5108695652173907,51],"9hXH":[-0.5,-0.4130434782608695,50],"dIeG":[-0.5,-1.413043478260871,50],"70F6":[-0.5,-0.28260869565217395,49],"nH6s":[-0.5,-1.2826086956521756,49],"knCG":[-0.5,-0.08695652173913038,48],"Oy5q":[-0.5,-1.0869565217391326,48],"p8Ei":[-0.5,0.17391304347826092,47],"VEP1":[-0.5,-0.8260869565217384,47],"SJnT":[0.5,-0.8260869565217384,61],"sJVe":[0.5,-1.0869565217391326,60],"ED1K":[0.5,-1.2826086956521756,59],"0w2S":[0.5,-1.413043478260871,58],"TE75":[0.5,-1.5108695652173907,57],"8x1L":[0.5,-1.5760869565217401,56],"SAGT":[0.5,-1.6086956521739157,55],"IAUs":[0.5,-1.6250000000000036,54],"DXhf":[0.5,-1.6086956521739157,53],"rttD":[0.5,-1.5760869565217401,52],"3nux":[0.5,-1.5108695652173907,51],"IRCx":[0.5,-1.413043478260871,50],"5jkP":[0.5,-1.2826086956521756,49],"XqDN":[0.5,-1.0869565217391326,48],"DBbG":[0.5,-0.8260869565217384,47],"6gi1":[0.5,0.17391304347826092,61],"cL7l":[0.5,-0.08695652173913038,60],"6JJV":[0.5,-0.28260869565217395,59],"ibGc":[0.5,-0.4130434782608695,58],"8sh8":[0.5,-0.5108695652173911,57],"y3bM":[0.5,-0.576086956521739,56],"ymVT":[0.5,-0.6086956521739129,55],"Jfyg":[0.5,-0.6249999999999998,54],"NgdR":[0.5,-0.6086956521739129,53],"iobY":[0.5,-0.576086956521739,52],"OuGn":[0.5,-0.5108695652173911,51],"uEW2":[0.5,-0.4130434782608695,50],"EXF4":[0.5,-0.28260869565217395,49],"Rhp5":[0.5,-0.08695652173913038,48],"oolz":[0.5,0.17391304347826092,47]},"faces":{"eITncMg3":{"uv":{"UDcH":[16,0],"DBbG":[15,16],"oolz":[15,0],"2jsq":[16,16]},"vertices":["UDcH","DBbG","oolz","2jsq"],"texture":0},"JOcBafJR":{"uv":{"nwmP":[0,16],"p8Ei":[1,0],"VEP1":[1,16],"rFEr":[0,0]},"vertices":["nwmP","p8Ei","VEP1","rFEr"],"texture":0},"Oa0IlY2d":{"uv":{"rFEr":[0,16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"UDcH":[8.881784197001252e-16,0]},"vertices":["rFEr","oolz","p8Ei","UDcH"],"texture":0},"Dq3qTzzZ":{"uv":{"2jsq":[16,8.881784197001252e-16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"nwmP":[16,16]},"vertices":["2jsq","VEP1","DBbG","nwmP"],"texture":0},"PH1WbY6P":{"uv":{"tKmB":[0,0],"3h3r":[0,0],"p9gB":[0,16],"CNsI":[0,16]},"vertices":["tKmB","3h3r","p9gB","CNsI"],"texture":0},"xW5eAbyB":{"uv":{"rFEr":[0,0],"UDcH":[0,0],"nwmP":[0,16],"2jsq":[0,16]},"vertices":["rFEr","UDcH","nwmP","2jsq"],"texture":0},"XDldXQU4":{"uv":{"3h3r":[16,0],"SFbE":[15,0],"fvfn":[15,16],"CNsI":[16,16]},"vertices":["3h3r","SFbE","fvfn","CNsI"],"texture":0},"eA1h4BU4":{"uv":{"SFbE":[15,0],"tbKp":[14,0],"iUCR":[14,16],"fvfn":[15,16]},"vertices":["SFbE","tbKp","iUCR","fvfn"],"texture":0},"uSD0Om3G":{"uv":{"tbKp":[14,0],"FYa7":[13,0],"LW3H":[13,16],"iUCR":[14,16]},"vertices":["tbKp","FYa7","LW3H","iUCR"],"texture":0},"XUJsEiJ0":{"uv":{"FYa7":[13,0],"Nt89":[12,0],"o2vx":[12,16],"LW3H":[13,16]},"vertices":["FYa7","Nt89","o2vx","LW3H"],"texture":0},"y02gowWc":{"uv":{"Nt89":[12,0],"kisU":[11,0],"Uy9h":[11,16],"o2vx":[12,16]},"vertices":["Nt89","kisU","Uy9h","o2vx"],"texture":0},"QhztUvIs":{"uv":{"kisU":[11,0],"5HEv":[10,0],"cVL2":[10,16],"Uy9h":[11,16]},"vertices":["kisU","5HEv","cVL2","Uy9h"],"texture":0},"mpzwf6fa":{"uv":{"5HEv":[10,0],"YAxu":[9,0],"06eU":[9,16],"cVL2":[10,16]},"vertices":["5HEv","YAxu","06eU","cVL2"],"texture":0},"VG4jxVT2":{"uv":{"YAxu":[9,0],"ugNs":[8,0],"B5py":[8,16],"06eU":[9,16]},"vertices":["YAxu","ugNs","B5py","06eU"],"texture":0},"BqBmGDlB":{"uv":{"ugNs":[8,0],"mt0e":[7,0],"FUSY":[7,16],"B5py":[8,16]},"vertices":["ugNs","mt0e","FUSY","B5py"],"texture":0},"ARH8IPJY":{"uv":{"mt0e":[7,0],"tlTa":[6,0],"wIT4":[6,16],"FUSY":[7,16]},"vertices":["mt0e","tlTa","wIT4","FUSY"],"texture":0},"RTGFVLdN":{"uv":{"tlTa":[6,0],"87SW":[5,0],"yK6M":[5,16],"wIT4":[6,16]},"vertices":["tlTa","87SW","yK6M","wIT4"],"texture":0},"u0CU1ucj":{"uv":{"87SW":[5,0],"9hXH":[4,0],"dIeG":[4,16],"yK6M":[5,16]},"vertices":["87SW","9hXH","dIeG","yK6M"],"texture":0},"PQRFApPq":{"uv":{"9hXH":[4,0],"70F6":[3,0],"nH6s":[3,16],"dIeG":[4,16]},"vertices":["9hXH","70F6","nH6s","dIeG"],"texture":0},"XUHSZGer":{"uv":{"70F6":[3,0],"knCG":[2,0],"Oy5q":[2,16],"nH6s":[3,16]},"vertices":["70F6","knCG","Oy5q","nH6s"],"texture":0},"M7mz6Eao":{"uv":{"knCG":[2,0],"p8Ei":[1,0],"VEP1":[1,16],"Oy5q":[2,16]},"vertices":["knCG","p8Ei","VEP1","Oy5q"],"texture":0},"o4r0CUL2":{"uv":{"CNsI":[0,16],"fvfn":[1,16],"SJnT":[1,5.551115123125783e-17],"p9gB":[8.881784197001252e-16,0]},"vertices":["CNsI","fvfn","SJnT","p9gB"],"texture":0},"UdoHZMuX":{"uv":{"fvfn":[1,16],"iUCR":[2,16],"sJVe":[2,1.1102230246251565e-16],"SJnT":[1,5.551115123125783e-17]},"vertices":["fvfn","iUCR","sJVe","SJnT"],"texture":0},"4masZPS8":{"uv":{"iUCR":[2,16],"LW3H":[3,16],"ED1K":[3,1.6653345369377348e-16],"sJVe":[2,1.1102230246251565e-16]},"vertices":["iUCR","LW3H","ED1K","sJVe"],"texture":0},"H4YLQD2g":{"uv":{"LW3H":[3,16],"o2vx":[4,16],"0w2S":[4,2.220446049250313e-16],"ED1K":[3,1.6653345369377348e-16]},"vertices":["LW3H","o2vx","0w2S","ED1K"],"texture":0},"OSnCz0xS":{"uv":{"o2vx":[4,16],"Uy9h":[5,16],"TE75":[5,2.7755575615628914e-16],"0w2S":[4,2.220446049250313e-16]},"vertices":["o2vx","Uy9h","TE75","0w2S"],"texture":0},"FUPxqsVj":{"uv":{"Uy9h":[5,16],"cVL2":[6,16],"8x1L":[6,3.3306690738754696e-16],"TE75":[5,2.7755575615628914e-16]},"vertices":["Uy9h","cVL2","8x1L","TE75"],"texture":0},"NKQJD9pt":{"uv":{"cVL2":[6,16],"06eU":[7,16],"SAGT":[7,3.885780586188048e-16],"8x1L":[6,3.3306690738754696e-16]},"vertices":["cVL2","06eU","SAGT","8x1L"],"texture":0},"eqKGrbAs":{"uv":{"06eU":[7,16],"B5py":[8,16],"IAUs":[8,4.440892098500626e-16],"SAGT":[7,3.885780586188048e-16]},"vertices":["06eU","B5py","IAUs","SAGT"],"texture":0},"wRHJ930z":{"uv":{"B5py":[8,16],"FUSY":[9,16],"DXhf":[9,4.996003610813204e-16],"IAUs":[8,4.440892098500626e-16]},"vertices":["B5py","FUSY","DXhf","IAUs"],"texture":0},"zXy2ZEbZ":{"uv":{"FUSY":[9,16],"wIT4":[10,16],"rttD":[10,5.551115123125783e-16],"DXhf":[9,4.996003610813204e-16]},"vertices":["FUSY","wIT4","rttD","DXhf"],"texture":0},"Mwl7aT2C":{"uv":{"wIT4":[10,16],"yK6M":[11,16],"3nux":[11,6.106226635438361e-16],"rttD":[10,5.551115123125783e-16]},"vertices":["wIT4","yK6M","3nux","rttD"],"texture":0},"SXEnA76S":{"uv":{"yK6M":[11,16],"dIeG":[12,16],"IRCx":[12,6.661338147750939e-16],"3nux":[11,6.106226635438361e-16]},"vertices":["yK6M","dIeG","IRCx","3nux"],"texture":0},"GnV3CIGg":{"uv":{"dIeG":[12,16],"nH6s":[13,16],"5jkP":[13,7.216449660063518e-16],"IRCx":[12,6.661338147750939e-16]},"vertices":["dIeG","nH6s","5jkP","IRCx"],"texture":0},"afcNfj1z":{"uv":{"nH6s":[13,16],"Oy5q":[14,16],"XqDN":[14,7.771561172376096e-16],"5jkP":[13,7.216449660063518e-16]},"vertices":["nH6s","Oy5q","XqDN","5jkP"],"texture":0},"IsiRrfDg":{"uv":{"Oy5q":[14,16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"XqDN":[14,7.771561172376096e-16]},"vertices":["Oy5q","VEP1","DBbG","XqDN"],"texture":0},"rqiZjeQd":{"uv":{"p9gB":[0,16],"SJnT":[1,16],"6gi1":[1,0],"tKmB":[0,0]},"vertices":["p9gB","SJnT","6gi1","tKmB"],"texture":0},"sxW9BuZf":{"uv":{"SJnT":[1,16],"sJVe":[2,16],"cL7l":[2,0],"6gi1":[1,0]},"vertices":["SJnT","sJVe","cL7l","6gi1"],"texture":0},"I8jCTYuJ":{"uv":{"sJVe":[2,16],"ED1K":[3,16],"6JJV":[3,0],"cL7l":[2,0]},"vertices":["sJVe","ED1K","6JJV","cL7l"],"texture":0},"NoXS3wZA":{"uv":{"ED1K":[3,16],"0w2S":[4,16],"ibGc":[4,0],"6JJV":[3,0]},"vertices":["ED1K","0w2S","ibGc","6JJV"],"texture":0},"vTMI1uEJ":{"uv":{"0w2S":[4,16],"TE75":[5,16],"8sh8":[5,0],"ibGc":[4,0]},"vertices":["0w2S","TE75","8sh8","ibGc"],"texture":0},"kew3bNtO":{"uv":{"TE75":[5,16],"8x1L":[6,16],"y3bM":[6,0],"8sh8":[5,0]},"vertices":["TE75","8x1L","y3bM","8sh8"],"texture":0},"PjampPoR":{"uv":{"8x1L":[6,16],"SAGT":[7,16],"ymVT":[7,0],"y3bM":[6,0]},"vertices":["8x1L","SAGT","ymVT","y3bM"],"texture":0},"aHkuMvbE":{"uv":{"SAGT":[7,16],"IAUs":[8,16],"Jfyg":[8,0],"ymVT":[7,0]},"vertices":["SAGT","IAUs","Jfyg","ymVT"],"texture":0},"3ogf3fBm":{"uv":{"IAUs":[8,16],"DXhf":[9,16],"NgdR":[9,0],"Jfyg":[8,0]},"vertices":["IAUs","DXhf","NgdR","Jfyg"],"texture":0},"KnPoUAkI":{"uv":{"DXhf":[9,16],"rttD":[10,16],"iobY":[10,0],"NgdR":[9,0]},"vertices":["DXhf","rttD","iobY","NgdR"],"texture":0},"7VPdmk1e":{"uv":{"rttD":[10,16],"3nux":[11,16],"OuGn":[11,0],"iobY":[10,0]},"vertices":["rttD","3nux","OuGn","iobY"],"texture":0},"cBk4f2Wx":{"uv":{"3nux":[11,16],"IRCx":[12,16],"uEW2":[12,0],"OuGn":[11,0]},"vertices":["3nux","IRCx","uEW2","OuGn"],"texture":0},"i7LmGJIf":{"uv":{"IRCx":[12,16],"5jkP":[13,16],"EXF4":[13,0],"uEW2":[12,0]},"vertices":["IRCx","5jkP","EXF4","uEW2"],"texture":0},"BAIZ6z3V":{"uv":{"5jkP":[13,16],"XqDN":[14,16],"Rhp5":[14,0],"EXF4":[13,0]},"vertices":["5jkP","XqDN","Rhp5","EXF4"],"texture":0},"U1aetQB8":{"uv":{"XqDN":[14,16],"DBbG":[15,16],"oolz":[15,0],"Rhp5":[14,0]},"vertices":["XqDN","DBbG","oolz","Rhp5"],"texture":0},"ZwjO1nJB":{"uv":{"tKmB":[16,8.881784197001252e-16],"6gi1":[15,8.326672684688674e-16],"SFbE":[15,16],"3h3r":[16,16]},"vertices":["tKmB","6gi1","SFbE","3h3r"],"texture":0},"htNxfqGw":{"uv":{"6gi1":[15,8.326672684688674e-16],"cL7l":[14,7.771561172376096e-16],"tbKp":[14,16],"SFbE":[15,16]},"vertices":["6gi1","cL7l","tbKp","SFbE"],"texture":0},"ThXXcHHP":{"uv":{"cL7l":[14,7.771561172376096e-16],"6JJV":[13,7.216449660063518e-16],"FYa7":[13,16],"tbKp":[14,16]},"vertices":["cL7l","6JJV","FYa7","tbKp"],"texture":0},"s1i8wocb":{"uv":{"6JJV":[13,7.216449660063518e-16],"ibGc":[12,6.661338147750939e-16],"Nt89":[12,16],"FYa7":[13,16]},"vertices":["6JJV","ibGc","Nt89","FYa7"],"texture":0},"6kiGkEc5":{"uv":{"ibGc":[12,6.661338147750939e-16],"8sh8":[11,6.106226635438361e-16],"kisU":[11,16],"Nt89":[12,16]},"vertices":["ibGc","8sh8","kisU","Nt89"],"texture":0},"cSBcnKjJ":{"uv":{"8sh8":[11,6.106226635438361e-16],"y3bM":[10,5.551115123125783e-16],"5HEv":[10,16],"kisU":[11,16]},"vertices":["8sh8","y3bM","5HEv","kisU"],"texture":0},"S5sisQS8":{"uv":{"y3bM":[10,5.551115123125783e-16],"ymVT":[9,4.996003610813204e-16],"YAxu":[9,16],"5HEv":[10,16]},"vertices":["y3bM","ymVT","YAxu","5HEv"],"texture":0},"W9n88rxF":{"uv":{"ymVT":[9,4.996003610813204e-16],"Jfyg":[8,4.440892098500626e-16],"ugNs":[8,16],"YAxu":[9,16]},"vertices":["ymVT","Jfyg","ugNs","YAxu"],"texture":0},"xdxBfdPZ":{"uv":{"Jfyg":[8,4.440892098500626e-16],"NgdR":[7,3.885780586188048e-16],"mt0e":[7,16],"ugNs":[8,16]},"vertices":["Jfyg","NgdR","mt0e","ugNs"],"texture":0},"FylxCigO":{"uv":{"NgdR":[7,3.885780586188048e-16],"iobY":[6.000000000000001,3.3306690738754696e-16],"tlTa":[6,16],"mt0e":[7,16]},"vertices":["NgdR","iobY","tlTa","mt0e"],"texture":0},"tRPuOI6P":{"uv":{"iobY":[6.000000000000001,3.3306690738754696e-16],"OuGn":[5.000000000000001,2.7755575615628914e-16],"87SW":[5,16],"tlTa":[6,16]},"vertices":["iobY","OuGn","87SW","tlTa"],"texture":0},"QXOgiCNa":{"uv":{"OuGn":[5.000000000000001,2.7755575615628914e-16],"uEW2":[4.000000000000001,2.220446049250313e-16],"9hXH":[4,16],"87SW":[5,16]},"vertices":["OuGn","uEW2","9hXH","87SW"],"texture":0},"Q04gzYJ7":{"uv":{"uEW2":[4.000000000000001,2.220446049250313e-16],"EXF4":[3.000000000000001,1.6653345369377348e-16],"70F6":[3,16],"9hXH":[4,16]},"vertices":["uEW2","EXF4","70F6","9hXH"],"texture":0},"uxbqt6qs":{"uv":{"EXF4":[3.000000000000001,1.6653345369377348e-16],"Rhp5":[2.000000000000001,1.1102230246251565e-16],"knCG":[2,16],"70F6":[3,16]},"vertices":["EXF4","Rhp5","knCG","70F6"],"texture":0},"AP53gWa3":{"uv":{"Rhp5":[2.000000000000001,1.1102230246251565e-16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"knCG":[2,16]},"vertices":["Rhp5","oolz","p8Ei","knCG"],"texture":0}},"type":"mesh","uuid":"49efb538-cb5a-50ae-e07b-28f81506658a"},{"name":"4","color":9,"origin":[0,0,0],"rotation":[0,0,0],"visibility":true,"locked":false,"render_order":"default","allow_mirror_modeling":true,"vertices":{"tKmB":[0.5,0.5,98],"UDcH":[0.5,0.5,82],"p9gB":[0.5,-0.5,98],"2jsq":[0.5,-0.5,82],"3h3r":[-0.5,0.5,98],"rFEr":[-0.5,0.5,82],"CNsI":[-0.5,-0.5,98],"nwmP":[-0.5,-0.5,82],"SFbE":[-0.5,0.2898550724637682,97],"fvfn":[-0.5,-0.7101449275362306,97],"tbKp":[-0.5,0.12173913043478268,96],"iUCR":[-0.5,-0.8782608695652208,96],"FYa7":[-0.5,-0.004347826086956497,95],"LW3H":[-0.5,-1.0043478260869598,95],"Nt89":[-0.5,-0.08840579710144925,94],"o2vx":[-0.5,-1.0884057971014514,94],"kisU":[-0.5,-0.15144927536231867,93],"Uy9h":[-0.5,-1.151449275362321,93],"5HEv":[-0.5,-0.1934782608695651,92],"cVL2":[-0.5,-1.1934782608695667,92],"YAxu":[-0.5,-0.2144927536231882,91],"06eU":[-0.5,-1.2144927536231922,91],"ugNs":[-0.5,-0.22499999999999987,90],"B5py":[-0.5,-1.225000000000005,90],"mt0e":[-0.5,-0.2144927536231882,89],"FUSY":[-0.5,-1.2144927536231922,89],"tlTa":[-0.5,-0.1934782608695651,88],"wIT4":[-0.5,-1.1934782608695667,88],"87SW":[-0.5,-0.15144927536231867,87],"yK6M":[-0.5,-1.151449275362321,87],"9hXH":[-0.5,-0.08840579710144925,86],"dIeG":[-0.5,-1.0884057971014514,86],"70F6":[-0.5,-0.004347826086956497,85],"nH6s":[-0.5,-1.0043478260869598,85],"knCG":[-0.5,0.12173913043478268,84],"Oy5q":[-0.5,-0.8782608695652208,84],"p8Ei":[-0.5,0.2898550724637682,83],"VEP1":[-0.5,-0.7101449275362306,83],"SJnT":[0.5,-0.7101449275362306,97],"sJVe":[0.5,-0.8782608695652208,96],"ED1K":[0.5,-1.0043478260869598,95],"0w2S":[0.5,-1.0884057971014514,94],"TE75":[0.5,-1.151449275362321,93],"8x1L":[0.5,-1.1934782608695667,92],"SAGT":[0.5,-1.2144927536231922,91],"IAUs":[0.5,-1.225000000000005,90],"DXhf":[0.5,-1.2144927536231922,89],"rttD":[0.5,-1.1934782608695667,88],"3nux":[0.5,-1.151449275362321,87],"IRCx":[0.5,-1.0884057971014514,86],"5jkP":[0.5,-1.0043478260869598,85],"XqDN":[0.5,-0.8782608695652208,84],"DBbG":[0.5,-0.7101449275362306,83],"6gi1":[0.5,0.2898550724637682,97],"cL7l":[0.5,0.12173913043478268,96],"6JJV":[0.5,-0.004347826086956497,95],"ibGc":[0.5,-0.08840579710144925,94],"8sh8":[0.5,-0.15144927536231867,93],"y3bM":[0.5,-0.1934782608695651,92],"ymVT":[0.5,-0.2144927536231882,91],"Jfyg":[0.5,-0.22499999999999987,90],"NgdR":[0.5,-0.2144927536231882,89],"iobY":[0.5,-0.1934782608695651,88],"OuGn":[0.5,-0.15144927536231867,87],"uEW2":[0.5,-0.08840579710144925,86],"EXF4":[0.5,-0.004347826086956497,85],"Rhp5":[0.5,0.12173913043478268,84],"oolz":[0.5,0.2898550724637682,83]},"faces":{"eITncMg3":{"uv":{"UDcH":[16,0],"DBbG":[15,16],"oolz":[15,0],"2jsq":[16,16]},"vertices":["UDcH","DBbG","oolz","2jsq"],"texture":0},"JOcBafJR":{"uv":{"nwmP":[0,16],"p8Ei":[1,0],"VEP1":[1,16],"rFEr":[0,0]},"vertices":["nwmP","p8Ei","VEP1","rFEr"],"texture":0},"Oa0IlY2d":{"uv":{"rFEr":[0,16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"UDcH":[8.881784197001252e-16,0]},"vertices":["rFEr","oolz","p8Ei","UDcH"],"texture":0},"Dq3qTzzZ":{"uv":{"2jsq":[16,8.881784197001252e-16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"nwmP":[16,16]},"vertices":["2jsq","VEP1","DBbG","nwmP"],"texture":0},"PH1WbY6P":{"uv":{"tKmB":[0,0],"3h3r":[0,0],"p9gB":[0,16],"CNsI":[0,16]},"vertices":["tKmB","3h3r","p9gB","CNsI"],"texture":0},"xW5eAbyB":{"uv":{"rFEr":[0,0],"UDcH":[0,0],"nwmP":[0,16],"2jsq":[0,16]},"vertices":["rFEr","UDcH","nwmP","2jsq"],"texture":0},"XDldXQU4":{"uv":{"3h3r":[16,0],"SFbE":[15,0],"fvfn":[15,16],"CNsI":[16,16]},"vertices":["3h3r","SFbE","fvfn","CNsI"],"texture":0},"eA1h4BU4":{"uv":{"SFbE":[15,0],"tbKp":[14,0],"iUCR":[14,16],"fvfn":[15,16]},"vertices":["SFbE","tbKp","iUCR","fvfn"],"texture":0},"uSD0Om3G":{"uv":{"tbKp":[14,0],"FYa7":[13,0],"LW3H":[13,16],"iUCR":[14,16]},"vertices":["tbKp","FYa7","LW3H","iUCR"],"texture":0},"XUJsEiJ0":{"uv":{"FYa7":[13,0],"Nt89":[12,0],"o2vx":[12,16],"LW3H":[13,16]},"vertices":["FYa7","Nt89","o2vx","LW3H"],"texture":0},"y02gowWc":{"uv":{"Nt89":[12,0],"kisU":[11,0],"Uy9h":[11,16],"o2vx":[12,16]},"vertices":["Nt89","kisU","Uy9h","o2vx"],"texture":0},"QhztUvIs":{"uv":{"kisU":[11,0],"5HEv":[10,0],"cVL2":[10,16],"Uy9h":[11,16]},"vertices":["kisU","5HEv","cVL2","Uy9h"],"texture":0},"mpzwf6fa":{"uv":{"5HEv":[10,0],"YAxu":[9,0],"06eU":[9,16],"cVL2":[10,16]},"vertices":["5HEv","YAxu","06eU","cVL2"],"texture":0},"VG4jxVT2":{"uv":{"YAxu":[9,0],"ugNs":[8,0],"B5py":[8,16],"06eU":[9,16]},"vertices":["YAxu","ugNs","B5py","06eU"],"texture":0},"BqBmGDlB":{"uv":{"ugNs":[8,0],"mt0e":[7,0],"FUSY":[7,16],"B5py":[8,16]},"vertices":["ugNs","mt0e","FUSY","B5py"],"texture":0},"ARH8IPJY":{"uv":{"mt0e":[7,0],"tlTa":[6,0],"wIT4":[6,16],"FUSY":[7,16]},"vertices":["mt0e","tlTa","wIT4","FUSY"],"texture":0},"RTGFVLdN":{"uv":{"tlTa":[6,0],"87SW":[5,0],"yK6M":[5,16],"wIT4":[6,16]},"vertices":["tlTa","87SW","yK6M","wIT4"],"texture":0},"u0CU1ucj":{"uv":{"87SW":[5,0],"9hXH":[4,0],"dIeG":[4,16],"yK6M":[5,16]},"vertices":["87SW","9hXH","dIeG","yK6M"],"texture":0},"PQRFApPq":{"uv":{"9hXH":[4,0],"70F6":[3,0],"nH6s":[3,16],"dIeG":[4,16]},"vertices":["9hXH","70F6","nH6s","dIeG"],"texture":0},"XUHSZGer":{"uv":{"70F6":[3,0],"knCG":[2,0],"Oy5q":[2,16],"nH6s":[3,16]},"vertices":["70F6","knCG","Oy5q","nH6s"],"texture":0},"M7mz6Eao":{"uv":{"knCG":[2,0],"p8Ei":[1,0],"VEP1":[1,16],"Oy5q":[2,16]},"vertices":["knCG","p8Ei","VEP1","Oy5q"],"texture":0},"o4r0CUL2":{"uv":{"CNsI":[0,16],"fvfn":[1,16],"SJnT":[1,5.551115123125783e-17],"p9gB":[8.881784197001252e-16,0]},"vertices":["CNsI","fvfn","SJnT","p9gB"],"texture":0},"UdoHZMuX":{"uv":{"fvfn":[1,16],"iUCR":[2,16],"sJVe":[2,1.1102230246251565e-16],"SJnT":[1,5.551115123125783e-17]},"vertices":["fvfn","iUCR","sJVe","SJnT"],"texture":0},"4masZPS8":{"uv":{"iUCR":[2,16],"LW3H":[3,16],"ED1K":[3,1.6653345369377348e-16],"sJVe":[2,1.1102230246251565e-16]},"vertices":["iUCR","LW3H","ED1K","sJVe"],"texture":0},"H4YLQD2g":{"uv":{"LW3H":[3,16],"o2vx":[4,16],"0w2S":[4,2.220446049250313e-16],"ED1K":[3,1.6653345369377348e-16]},"vertices":["LW3H","o2vx","0w2S","ED1K"],"texture":0},"OSnCz0xS":{"uv":{"o2vx":[4,16],"Uy9h":[5,16],"TE75":[5,2.7755575615628914e-16],"0w2S":[4,2.220446049250313e-16]},"vertices":["o2vx","Uy9h","TE75","0w2S"],"texture":0},"FUPxqsVj":{"uv":{"Uy9h":[5,16],"cVL2":[6,16],"8x1L":[6,3.3306690738754696e-16],"TE75":[5,2.7755575615628914e-16]},"vertices":["Uy9h","cVL2","8x1L","TE75"],"texture":0},"NKQJD9pt":{"uv":{"cVL2":[6,16],"06eU":[7,16],"SAGT":[7,3.885780586188048e-16],"8x1L":[6,3.3306690738754696e-16]},"vertices":["cVL2","06eU","SAGT","8x1L"],"texture":0},"eqKGrbAs":{"uv":{"06eU":[7,16],"B5py":[8,16],"IAUs":[8,4.440892098500626e-16],"SAGT":[7,3.885780586188048e-16]},"vertices":["06eU","B5py","IAUs","SAGT"],"texture":0},"wRHJ930z":{"uv":{"B5py":[8,16],"FUSY":[9,16],"DXhf":[9,4.996003610813204e-16],"IAUs":[8,4.440892098500626e-16]},"vertices":["B5py","FUSY","DXhf","IAUs"],"texture":0},"zXy2ZEbZ":{"uv":{"FUSY":[9,16],"wIT4":[10,16],"rttD":[10,5.551115123125783e-16],"DXhf":[9,4.996003610813204e-16]},"vertices":["FUSY","wIT4","rttD","DXhf"],"texture":0},"Mwl7aT2C":{"uv":{"wIT4":[10,16],"yK6M":[11,16],"3nux":[11,6.106226635438361e-16],"rttD":[10,5.551115123125783e-16]},"vertices":["wIT4","yK6M","3nux","rttD"],"texture":0},"SXEnA76S":{"uv":{"yK6M":[11,16],"dIeG":[12,16],"IRCx":[12,6.661338147750939e-16],"3nux":[11,6.106226635438361e-16]},"vertices":["yK6M","dIeG","IRCx","3nux"],"texture":0},"GnV3CIGg":{"uv":{"dIeG":[12,16],"nH6s":[13,16],"5jkP":[13,7.216449660063518e-16],"IRCx":[12,6.661338147750939e-16]},"vertices":["dIeG","nH6s","5jkP","IRCx"],"texture":0},"afcNfj1z":{"uv":{"nH6s":[13,16],"Oy5q":[14,16],"XqDN":[14,7.771561172376096e-16],"5jkP":[13,7.216449660063518e-16]},"vertices":["nH6s","Oy5q","XqDN","5jkP"],"texture":0},"IsiRrfDg":{"uv":{"Oy5q":[14,16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"XqDN":[14,7.771561172376096e-16]},"vertices":["Oy5q","VEP1","DBbG","XqDN"],"texture":0},"rqiZjeQd":{"uv":{"p9gB":[0,16],"SJnT":[1,16],"6gi1":[1,0],"tKmB":[0,0]},"vertices":["p9gB","SJnT","6gi1","tKmB"],"texture":0},"sxW9BuZf":{"uv":{"SJnT":[1,16],"sJVe":[2,16],"cL7l":[2,0],"6gi1":[1,0]},"vertices":["SJnT","sJVe","cL7l","6gi1"],"texture":0},"I8jCTYuJ":{"uv":{"sJVe":[2,16],"ED1K":[3,16],"6JJV":[3,0],"cL7l":[2,0]},"vertices":["sJVe","ED1K","6JJV","cL7l"],"texture":0},"NoXS3wZA":{"uv":{"ED1K":[3,16],"0w2S":[4,16],"ibGc":[4,0],"6JJV":[3,0]},"vertices":["ED1K","0w2S","ibGc","6JJV"],"texture":0},"vTMI1uEJ":{"uv":{"0w2S":[4,16],"TE75":[5,16],"8sh8":[5,0],"ibGc":[4,0]},"vertices":["0w2S","TE75","8sh8","ibGc"],"texture":0},"kew3bNtO":{"uv":{"TE75":[5,16],"8x1L":[6,16],"y3bM":[6,0],"8sh8":[5,0]},"vertices":["TE75","8x1L","y3bM","8sh8"],"texture":0},"PjampPoR":{"uv":{"8x1L":[6,16],"SAGT":[7,16],"ymVT":[7,0],"y3bM":[6,0]},"vertices":["8x1L","SAGT","ymVT","y3bM"],"texture":0},"aHkuMvbE":{"uv":{"SAGT":[7,16],"IAUs":[8,16],"Jfyg":[8,0],"ymVT":[7,0]},"vertices":["SAGT","IAUs","Jfyg","ymVT"],"texture":0},"3ogf3fBm":{"uv":{"IAUs":[8,16],"DXhf":[9,16],"NgdR":[9,0],"Jfyg":[8,0]},"vertices":["IAUs","DXhf","NgdR","Jfyg"],"texture":0},"KnPoUAkI":{"uv":{"DXhf":[9,16],"rttD":[10,16],"iobY":[10,0],"NgdR":[9,0]},"vertices":["DXhf","rttD","iobY","NgdR"],"texture":0},"7VPdmk1e":{"uv":{"rttD":[10,16],"3nux":[11,16],"OuGn":[11,0],"iobY":[10,0]},"vertices":["rttD","3nux","OuGn","iobY"],"texture":0},"cBk4f2Wx":{"uv":{"3nux":[11,16],"IRCx":[12,16],"uEW2":[12,0],"OuGn":[11,0]},"vertices":["3nux","IRCx","uEW2","OuGn"],"texture":0},"i7LmGJIf":{"uv":{"IRCx":[12,16],"5jkP":[13,16],"EXF4":[13,0],"uEW2":[12,0]},"vertices":["IRCx","5jkP","EXF4","uEW2"],"texture":0},"BAIZ6z3V":{"uv":{"5jkP":[13,16],"XqDN":[14,16],"Rhp5":[14,0],"EXF4":[13,0]},"vertices":["5jkP","XqDN","Rhp5","EXF4"],"texture":0},"U1aetQB8":{"uv":{"XqDN":[14,16],"DBbG":[15,16],"oolz":[15,0],"Rhp5":[14,0]},"vertices":["XqDN","DBbG","oolz","Rhp5"],"texture":0},"ZwjO1nJB":{"uv":{"tKmB":[16,8.881784197001252e-16],"6gi1":[15,8.326672684688674e-16],"SFbE":[15,16],"3h3r":[16,16]},"vertices":["tKmB","6gi1","SFbE","3h3r"],"texture":0},"htNxfqGw":{"uv":{"6gi1":[15,8.326672684688674e-16],"cL7l":[14,7.771561172376096e-16],"tbKp":[14,16],"SFbE":[15,16]},"vertices":["6gi1","cL7l","tbKp","SFbE"],"texture":0},"ThXXcHHP":{"uv":{"cL7l":[14,7.771561172376096e-16],"6JJV":[13,7.216449660063518e-16],"FYa7":[13,16],"tbKp":[14,16]},"vertices":["cL7l","6JJV","FYa7","tbKp"],"texture":0},"s1i8wocb":{"uv":{"6JJV":[13,7.216449660063518e-16],"ibGc":[12,6.661338147750939e-16],"Nt89":[12,16],"FYa7":[13,16]},"vertices":["6JJV","ibGc","Nt89","FYa7"],"texture":0},"6kiGkEc5":{"uv":{"ibGc":[12,6.661338147750939e-16],"8sh8":[11,6.106226635438361e-16],"kisU":[11,16],"Nt89":[12,16]},"vertices":["ibGc","8sh8","kisU","Nt89"],"texture":0},"cSBcnKjJ":{"uv":{"8sh8":[11,6.106226635438361e-16],"y3bM":[10,5.551115123125783e-16],"5HEv":[10,16],"kisU":[11,16]},"vertices":["8sh8","y3bM","5HEv","kisU"],"texture":0},"S5sisQS8":{"uv":{"y3bM":[10,5.551115123125783e-16],"ymVT":[9,4.996003610813204e-16],"YAxu":[9,16],"5HEv":[10,16]},"vertices":["y3bM","ymVT","YAxu","5HEv"],"texture":0},"W9n88rxF":{"uv":{"ymVT":[9,4.996003610813204e-16],"Jfyg":[8,4.440892098500626e-16],"ugNs":[8,16],"YAxu":[9,16]},"vertices":["ymVT","Jfyg","ugNs","YAxu"],"texture":0},"xdxBfdPZ":{"uv":{"Jfyg":[8,4.440892098500626e-16],"NgdR":[7,3.885780586188048e-16],"mt0e":[7,16],"ugNs":[8,16]},"vertices":["Jfyg","NgdR","mt0e","ugNs"],"texture":0},"FylxCigO":{"uv":{"NgdR":[7,3.885780586188048e-16],"iobY":[6.000000000000001,3.3306690738754696e-16],"tlTa":[6,16],"mt0e":[7,16]},"vertices":["NgdR","iobY","tlTa","mt0e"],"texture":0},"tRPuOI6P":{"uv":{"iobY":[6.000000000000001,3.3306690738754696e-16],"OuGn":[5.000000000000001,2.7755575615628914e-16],"87SW":[5,16],"tlTa":[6,16]},"vertices":["iobY","OuGn","87SW","tlTa"],"texture":0},"QXOgiCNa":{"uv":{"OuGn":[5.000000000000001,2.7755575615628914e-16],"uEW2":[4.000000000000001,2.220446049250313e-16],"9hXH":[4,16],"87SW":[5,16]},"vertices":["OuGn","uEW2","9hXH","87SW"],"texture":0},"Q04gzYJ7":{"uv":{"uEW2":[4.000000000000001,2.220446049250313e-16],"EXF4":[3.000000000000001,1.6653345369377348e-16],"70F6":[3,16],"9hXH":[4,16]},"vertices":["uEW2","EXF4","70F6","9hXH"],"texture":0},"uxbqt6qs":{"uv":{"EXF4":[3.000000000000001,1.6653345369377348e-16],"Rhp5":[2.000000000000001,1.1102230246251565e-16],"knCG":[2,16],"70F6":[3,16]},"vertices":["EXF4","Rhp5","knCG","70F6"],"texture":0},"AP53gWa3":{"uv":{"Rhp5":[2.000000000000001,1.1102230246251565e-16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"knCG":[2,16]},"vertices":["Rhp5","oolz","p8Ei","knCG"],"texture":0}},"type":"mesh","uuid":"ee84715f-6b25-7994-98cd-2170bccdaef6"},{"name":"5","color":9,"origin":[0,0,0],"rotation":[0,0,0],"visibility":true,"locked":false,"render_order":"default","allow_mirror_modeling":true,"vertices":{"tKmB":[0.5,0.5,80],"UDcH":[0.5,0.5,64],"p9gB":[0.5,-0.5,80],"2jsq":[0.5,-0.5,64],"3h3r":[-0.5,0.5,80],"rFEr":[-0.5,0.5,64],"CNsI":[-0.5,-0.5,80],"nwmP":[-0.5,-0.5,64],"SFbE":[-0.5,0.23188405797101452,79],"fvfn":[-0.5,-0.7681159420289845,79],"tbKp":[-0.5,0.017391304347826153,78],"iUCR":[-0.5,-0.9826086956521767,78],"FYa7":[-0.5,-0.14347826086956517,77],"LW3H":[-0.5,-1.1434782608695677,77],"Nt89":[-0.5,-0.2507246376811594,76],"o2vx":[-0.5,-1.2507246376811612,76],"kisU":[-0.5,-0.3311594202898549,75],"Uy9h":[-0.5,-1.3311594202898558,75],"5HEv":[-0.5,-0.38478260869565206,74],"cVL2":[-0.5,-1.3847826086956534,74],"YAxu":[-0.5,-0.41159420289855053,73],"06eU":[-0.5,-1.411594202898554,73],"ugNs":[-0.5,-0.4249999999999998,72],"B5py":[-0.5,-1.4250000000000043,72],"mt0e":[-0.5,-0.41159420289855053,71],"FUSY":[-0.5,-1.411594202898554,71],"tlTa":[-0.5,-0.38478260869565206,70],"wIT4":[-0.5,-1.3847826086956534,70],"87SW":[-0.5,-0.3311594202898549,69],"yK6M":[-0.5,-1.3311594202898558,69],"9hXH":[-0.5,-0.2507246376811594,68],"dIeG":[-0.5,-1.2507246376811612,68],"70F6":[-0.5,-0.14347826086956517,67],"nH6s":[-0.5,-1.1434782608695677,67],"knCG":[-0.5,0.017391304347826153,66],"Oy5q":[-0.5,-0.9826086956521767,66],"p8Ei":[-0.5,0.23188405797101452,65],"VEP1":[-0.5,-0.7681159420289845,65],"SJnT":[0.5,-0.7681159420289845,79],"sJVe":[0.5,-0.9826086956521767,78],"ED1K":[0.5,-1.1434782608695677,77],"0w2S":[0.5,-1.2507246376811612,76],"TE75":[0.5,-1.3311594202898558,75],"8x1L":[0.5,-1.3847826086956534,74],"SAGT":[0.5,-1.411594202898554,73],"IAUs":[0.5,-1.4250000000000043,72],"DXhf":[0.5,-1.411594202898554,71],"rttD":[0.5,-1.3847826086956534,70],"3nux":[0.5,-1.3311594202898558,69],"IRCx":[0.5,-1.2507246376811612,68],"5jkP":[0.5,-1.1434782608695677,67],"XqDN":[0.5,-0.9826086956521767,66],"DBbG":[0.5,-0.7681159420289845,65],"6gi1":[0.5,0.23188405797101452,79],"cL7l":[0.5,0.017391304347826153,78],"6JJV":[0.5,-0.14347826086956517,77],"ibGc":[0.5,-0.2507246376811594,76],"8sh8":[0.5,-0.3311594202898549,75],"y3bM":[0.5,-0.38478260869565206,74],"ymVT":[0.5,-0.41159420289855053,73],"Jfyg":[0.5,-0.4249999999999998,72],"NgdR":[0.5,-0.41159420289855053,71],"iobY":[0.5,-0.38478260869565206,70],"OuGn":[0.5,-0.3311594202898549,69],"uEW2":[0.5,-0.2507246376811594,68],"EXF4":[0.5,-0.14347826086956517,67],"Rhp5":[0.5,0.017391304347826153,66],"oolz":[0.5,0.23188405797101452,65]},"faces":{"eITncMg3":{"uv":{"UDcH":[16,0],"DBbG":[15,16],"oolz":[15,0],"2jsq":[16,16]},"vertices":["UDcH","DBbG","oolz","2jsq"],"texture":0},"JOcBafJR":{"uv":{"nwmP":[0,16],"p8Ei":[1,0],"VEP1":[1,16],"rFEr":[0,0]},"vertices":["nwmP","p8Ei","VEP1","rFEr"],"texture":0},"Oa0IlY2d":{"uv":{"rFEr":[0,16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"UDcH":[8.881784197001252e-16,0]},"vertices":["rFEr","oolz","p8Ei","UDcH"],"texture":0},"Dq3qTzzZ":{"uv":{"2jsq":[16,8.881784197001252e-16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"nwmP":[16,16]},"vertices":["2jsq","VEP1","DBbG","nwmP"],"texture":0},"PH1WbY6P":{"uv":{"tKmB":[0,0],"3h3r":[0,0],"p9gB":[0,16],"CNsI":[0,16]},"vertices":["tKmB","3h3r","p9gB","CNsI"],"texture":0},"xW5eAbyB":{"uv":{"rFEr":[0,0],"UDcH":[0,0],"nwmP":[0,16],"2jsq":[0,16]},"vertices":["rFEr","UDcH","nwmP","2jsq"],"texture":0},"XDldXQU4":{"uv":{"3h3r":[16,0],"SFbE":[15,0],"fvfn":[15,16],"CNsI":[16,16]},"vertices":["3h3r","SFbE","fvfn","CNsI"],"texture":0},"eA1h4BU4":{"uv":{"SFbE":[15,0],"tbKp":[14,0],"iUCR":[14,16],"fvfn":[15,16]},"vertices":["SFbE","tbKp","iUCR","fvfn"],"texture":0},"uSD0Om3G":{"uv":{"tbKp":[14,0],"FYa7":[13,0],"LW3H":[13,16],"iUCR":[14,16]},"vertices":["tbKp","FYa7","LW3H","iUCR"],"texture":0},"XUJsEiJ0":{"uv":{"FYa7":[13,0],"Nt89":[12,0],"o2vx":[12,16],"LW3H":[13,16]},"vertices":["FYa7","Nt89","o2vx","LW3H"],"texture":0},"y02gowWc":{"uv":{"Nt89":[12,0],"kisU":[11,0],"Uy9h":[11,16],"o2vx":[12,16]},"vertices":["Nt89","kisU","Uy9h","o2vx"],"texture":0},"QhztUvIs":{"uv":{"kisU":[11,0],"5HEv":[10,0],"cVL2":[10,16],"Uy9h":[11,16]},"vertices":["kisU","5HEv","cVL2","Uy9h"],"texture":0},"mpzwf6fa":{"uv":{"5HEv":[10,0],"YAxu":[9,0],"06eU":[9,16],"cVL2":[10,16]},"vertices":["5HEv","YAxu","06eU","cVL2"],"texture":0},"VG4jxVT2":{"uv":{"YAxu":[9,0],"ugNs":[8,0],"B5py":[8,16],"06eU":[9,16]},"vertices":["YAxu","ugNs","B5py","06eU"],"texture":0},"BqBmGDlB":{"uv":{"ugNs":[8,0],"mt0e":[7,0],"FUSY":[7,16],"B5py":[8,16]},"vertices":["ugNs","mt0e","FUSY","B5py"],"texture":0},"ARH8IPJY":{"uv":{"mt0e":[7,0],"tlTa":[6,0],"wIT4":[6,16],"FUSY":[7,16]},"vertices":["mt0e","tlTa","wIT4","FUSY"],"texture":0},"RTGFVLdN":{"uv":{"tlTa":[6,0],"87SW":[5,0],"yK6M":[5,16],"wIT4":[6,16]},"vertices":["tlTa","87SW","yK6M","wIT4"],"texture":0},"u0CU1ucj":{"uv":{"87SW":[5,0],"9hXH":[4,0],"dIeG":[4,16],"yK6M":[5,16]},"vertices":["87SW","9hXH","dIeG","yK6M"],"texture":0},"PQRFApPq":{"uv":{"9hXH":[4,0],"70F6":[3,0],"nH6s":[3,16],"dIeG":[4,16]},"vertices":["9hXH","70F6","nH6s","dIeG"],"texture":0},"XUHSZGer":{"uv":{"70F6":[3,0],"knCG":[2,0],"Oy5q":[2,16],"nH6s":[3,16]},"vertices":["70F6","knCG","Oy5q","nH6s"],"texture":0},"M7mz6Eao":{"uv":{"knCG":[2,0],"p8Ei":[1,0],"VEP1":[1,16],"Oy5q":[2,16]},"vertices":["knCG","p8Ei","VEP1","Oy5q"],"texture":0},"o4r0CUL2":{"uv":{"CNsI":[0,16],"fvfn":[1,16],"SJnT":[1,5.551115123125783e-17],"p9gB":[8.881784197001252e-16,0]},"vertices":["CNsI","fvfn","SJnT","p9gB"],"texture":0},"UdoHZMuX":{"uv":{"fvfn":[1,16],"iUCR":[2,16],"sJVe":[2,1.1102230246251565e-16],"SJnT":[1,5.551115123125783e-17]},"vertices":["fvfn","iUCR","sJVe","SJnT"],"texture":0},"4masZPS8":{"uv":{"iUCR":[2,16],"LW3H":[3,16],"ED1K":[3,1.6653345369377348e-16],"sJVe":[2,1.1102230246251565e-16]},"vertices":["iUCR","LW3H","ED1K","sJVe"],"texture":0},"H4YLQD2g":{"uv":{"LW3H":[3,16],"o2vx":[4,16],"0w2S":[4,2.220446049250313e-16],"ED1K":[3,1.6653345369377348e-16]},"vertices":["LW3H","o2vx","0w2S","ED1K"],"texture":0},"OSnCz0xS":{"uv":{"o2vx":[4,16],"Uy9h":[5,16],"TE75":[5,2.7755575615628914e-16],"0w2S":[4,2.220446049250313e-16]},"vertices":["o2vx","Uy9h","TE75","0w2S"],"texture":0},"FUPxqsVj":{"uv":{"Uy9h":[5,16],"cVL2":[6,16],"8x1L":[6,3.3306690738754696e-16],"TE75":[5,2.7755575615628914e-16]},"vertices":["Uy9h","cVL2","8x1L","TE75"],"texture":0},"NKQJD9pt":{"uv":{"cVL2":[6,16],"06eU":[7,16],"SAGT":[7,3.885780586188048e-16],"8x1L":[6,3.3306690738754696e-16]},"vertices":["cVL2","06eU","SAGT","8x1L"],"texture":0},"eqKGrbAs":{"uv":{"06eU":[7,16],"B5py":[8,16],"IAUs":[8,4.440892098500626e-16],"SAGT":[7,3.885780586188048e-16]},"vertices":["06eU","B5py","IAUs","SAGT"],"texture":0},"wRHJ930z":{"uv":{"B5py":[8,16],"FUSY":[9,16],"DXhf":[9,4.996003610813204e-16],"IAUs":[8,4.440892098500626e-16]},"vertices":["B5py","FUSY","DXhf","IAUs"],"texture":0},"zXy2ZEbZ":{"uv":{"FUSY":[9,16],"wIT4":[10,16],"rttD":[10,5.551115123125783e-16],"DXhf":[9,4.996003610813204e-16]},"vertices":["FUSY","wIT4","rttD","DXhf"],"texture":0},"Mwl7aT2C":{"uv":{"wIT4":[10,16],"yK6M":[11,16],"3nux":[11,6.106226635438361e-16],"rttD":[10,5.551115123125783e-16]},"vertices":["wIT4","yK6M","3nux","rttD"],"texture":0},"SXEnA76S":{"uv":{"yK6M":[11,16],"dIeG":[12,16],"IRCx":[12,6.661338147750939e-16],"3nux":[11,6.106226635438361e-16]},"vertices":["yK6M","dIeG","IRCx","3nux"],"texture":0},"GnV3CIGg":{"uv":{"dIeG":[12,16],"nH6s":[13,16],"5jkP":[13,7.216449660063518e-16],"IRCx":[12,6.661338147750939e-16]},"vertices":["dIeG","nH6s","5jkP","IRCx"],"texture":0},"afcNfj1z":{"uv":{"nH6s":[13,16],"Oy5q":[14,16],"XqDN":[14,7.771561172376096e-16],"5jkP":[13,7.216449660063518e-16]},"vertices":["nH6s","Oy5q","XqDN","5jkP"],"texture":0},"IsiRrfDg":{"uv":{"Oy5q":[14,16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"XqDN":[14,7.771561172376096e-16]},"vertices":["Oy5q","VEP1","DBbG","XqDN"],"texture":0},"rqiZjeQd":{"uv":{"p9gB":[0,16],"SJnT":[1,16],"6gi1":[1,0],"tKmB":[0,0]},"vertices":["p9gB","SJnT","6gi1","tKmB"],"texture":0},"sxW9BuZf":{"uv":{"SJnT":[1,16],"sJVe":[2,16],"cL7l":[2,0],"6gi1":[1,0]},"vertices":["SJnT","sJVe","cL7l","6gi1"],"texture":0},"I8jCTYuJ":{"uv":{"sJVe":[2,16],"ED1K":[3,16],"6JJV":[3,0],"cL7l":[2,0]},"vertices":["sJVe","ED1K","6JJV","cL7l"],"texture":0},"NoXS3wZA":{"uv":{"ED1K":[3,16],"0w2S":[4,16],"ibGc":[4,0],"6JJV":[3,0]},"vertices":["ED1K","0w2S","ibGc","6JJV"],"texture":0},"vTMI1uEJ":{"uv":{"0w2S":[4,16],"TE75":[5,16],"8sh8":[5,0],"ibGc":[4,0]},"vertices":["0w2S","TE75","8sh8","ibGc"],"texture":0},"kew3bNtO":{"uv":{"TE75":[5,16],"8x1L":[6,16],"y3bM":[6,0],"8sh8":[5,0]},"vertices":["TE75","8x1L","y3bM","8sh8"],"texture":0},"PjampPoR":{"uv":{"8x1L":[6,16],"SAGT":[7,16],"ymVT":[7,0],"y3bM":[6,0]},"vertices":["8x1L","SAGT","ymVT","y3bM"],"texture":0},"aHkuMvbE":{"uv":{"SAGT":[7,16],"IAUs":[8,16],"Jfyg":[8,0],"ymVT":[7,0]},"vertices":["SAGT","IAUs","Jfyg","ymVT"],"texture":0},"3ogf3fBm":{"uv":{"IAUs":[8,16],"DXhf":[9,16],"NgdR":[9,0],"Jfyg":[8,0]},"vertices":["IAUs","DXhf","NgdR","Jfyg"],"texture":0},"KnPoUAkI":{"uv":{"DXhf":[9,16],"rttD":[10,16],"iobY":[10,0],"NgdR":[9,0]},"vertices":["DXhf","rttD","iobY","NgdR"],"texture":0},"7VPdmk1e":{"uv":{"rttD":[10,16],"3nux":[11,16],"OuGn":[11,0],"iobY":[10,0]},"vertices":["rttD","3nux","OuGn","iobY"],"texture":0},"cBk4f2Wx":{"uv":{"3nux":[11,16],"IRCx":[12,16],"uEW2":[12,0],"OuGn":[11,0]},"vertices":["3nux","IRCx","uEW2","OuGn"],"texture":0},"i7LmGJIf":{"uv":{"IRCx":[12,16],"5jkP":[13,16],"EXF4":[13,0],"uEW2":[12,0]},"vertices":["IRCx","5jkP","EXF4","uEW2"],"texture":0},"BAIZ6z3V":{"uv":{"5jkP":[13,16],"XqDN":[14,16],"Rhp5":[14,0],"EXF4":[13,0]},"vertices":["5jkP","XqDN","Rhp5","EXF4"],"texture":0},"U1aetQB8":{"uv":{"XqDN":[14,16],"DBbG":[15,16],"oolz":[15,0],"Rhp5":[14,0]},"vertices":["XqDN","DBbG","oolz","Rhp5"],"texture":0},"ZwjO1nJB":{"uv":{"tKmB":[16,8.881784197001252e-16],"6gi1":[15,8.326672684688674e-16],"SFbE":[15,16],"3h3r":[16,16]},"vertices":["tKmB","6gi1","SFbE","3h3r"],"texture":0},"htNxfqGw":{"uv":{"6gi1":[15,8.326672684688674e-16],"cL7l":[14,7.771561172376096e-16],"tbKp":[14,16],"SFbE":[15,16]},"vertices":["6gi1","cL7l","tbKp","SFbE"],"texture":0},"ThXXcHHP":{"uv":{"cL7l":[14,7.771561172376096e-16],"6JJV":[13,7.216449660063518e-16],"FYa7":[13,16],"tbKp":[14,16]},"vertices":["cL7l","6JJV","FYa7","tbKp"],"texture":0},"s1i8wocb":{"uv":{"6JJV":[13,7.216449660063518e-16],"ibGc":[12,6.661338147750939e-16],"Nt89":[12,16],"FYa7":[13,16]},"vertices":["6JJV","ibGc","Nt89","FYa7"],"texture":0},"6kiGkEc5":{"uv":{"ibGc":[12,6.661338147750939e-16],"8sh8":[11,6.106226635438361e-16],"kisU":[11,16],"Nt89":[12,16]},"vertices":["ibGc","8sh8","kisU","Nt89"],"texture":0},"cSBcnKjJ":{"uv":{"8sh8":[11,6.106226635438361e-16],"y3bM":[10,5.551115123125783e-16],"5HEv":[10,16],"kisU":[11,16]},"vertices":["8sh8","y3bM","5HEv","kisU"],"texture":0},"S5sisQS8":{"uv":{"y3bM":[10,5.551115123125783e-16],"ymVT":[9,4.996003610813204e-16],"YAxu":[9,16],"5HEv":[10,16]},"vertices":["y3bM","ymVT","YAxu","5HEv"],"texture":0},"W9n88rxF":{"uv":{"ymVT":[9,4.996003610813204e-16],"Jfyg":[8,4.440892098500626e-16],"ugNs":[8,16],"YAxu":[9,16]},"vertices":["ymVT","Jfyg","ugNs","YAxu"],"texture":0},"xdxBfdPZ":{"uv":{"Jfyg":[8,4.440892098500626e-16],"NgdR":[7,3.885780586188048e-16],"mt0e":[7,16],"ugNs":[8,16]},"vertices":["Jfyg","NgdR","mt0e","ugNs"],"texture":0},"FylxCigO":{"uv":{"NgdR":[7,3.885780586188048e-16],"iobY":[6.000000000000001,3.3306690738754696e-16],"tlTa":[6,16],"mt0e":[7,16]},"vertices":["NgdR","iobY","tlTa","mt0e"],"texture":0},"tRPuOI6P":{"uv":{"iobY":[6.000000000000001,3.3306690738754696e-16],"OuGn":[5.000000000000001,2.7755575615628914e-16],"87SW":[5,16],"tlTa":[6,16]},"vertices":["iobY","OuGn","87SW","tlTa"],"texture":0},"QXOgiCNa":{"uv":{"OuGn":[5.000000000000001,2.7755575615628914e-16],"uEW2":[4.000000000000001,2.220446049250313e-16],"9hXH":[4,16],"87SW":[5,16]},"vertices":["OuGn","uEW2","9hXH","87SW"],"texture":0},"Q04gzYJ7":{"uv":{"uEW2":[4.000000000000001,2.220446049250313e-16],"EXF4":[3.000000000000001,1.6653345369377348e-16],"70F6":[3,16],"9hXH":[4,16]},"vertices":["uEW2","EXF4","70F6","9hXH"],"texture":0},"uxbqt6qs":{"uv":{"EXF4":[3.000000000000001,1.6653345369377348e-16],"Rhp5":[2.000000000000001,1.1102230246251565e-16],"knCG":[2,16],"70F6":[3,16]},"vertices":["EXF4","Rhp5","knCG","70F6"],"texture":0},"AP53gWa3":{"uv":{"Rhp5":[2.000000000000001,1.1102230246251565e-16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"knCG":[2,16]},"vertices":["Rhp5","oolz","p8Ei","knCG"],"texture":0}},"type":"mesh","uuid":"69ee684d-c844-1573-1e66-a30bb410f474"},{"name":"3","color":9,"origin":[0,0,0],"rotation":[0,0,0],"visibility":true,"locked":false,"render_order":"default","allow_mirror_modeling":true,"vertices":{"tKmB":[0.5,0.5,116],"UDcH":[0.5,0.5,100],"p9gB":[0.5,-0.5,116],"2jsq":[0.5,-0.5,100],"3h3r":[-0.5,0.5,116],"rFEr":[-0.5,0.5,100],"CNsI":[-0.5,-0.5,116],"nwmP":[-0.5,-0.5,100],"SFbE":[-0.5,0.3478260869565218,115],"fvfn":[-0.5,-0.6521739130434785,115],"tbKp":[-0.5,0.22608695652173916,114],"iUCR":[-0.5,-0.7739130434782648,114],"FYa7":[-0.5,0.13478260869565217,113],"LW3H":[-0.5,-0.8652173913043519,113],"Nt89":[-0.5,0.07391304347826089,112],"o2vx":[-0.5,-0.9260869565217416,112],"kisU":[-0.5,0.028260869565217506,111],"Uy9h":[-0.5,-0.971739130434786,111],"5HEv":[-0.5,-0.0021739130434781373,110],"cVL2":[-0.5,-1.00217391304348,110],"YAxu":[-0.5,-0.017391304347825987,109],"06eU":[-0.5,-1.0173913043478304,109],"ugNs":[-0.5,-0.02499999999999991,108],"B5py":[-0.5,-1.0250000000000057,108],"mt0e":[-0.5,-0.017391304347825987,107],"FUSY":[-0.5,-1.0173913043478304,107],"tlTa":[-0.5,-0.0021739130434781373,106],"wIT4":[-0.5,-1.00217391304348,106],"87SW":[-0.5,0.028260869565217506,105],"yK6M":[-0.5,-0.971739130434786,105],"9hXH":[-0.5,0.07391304347826089,104],"dIeG":[-0.5,-0.9260869565217416,104],"70F6":[-0.5,0.13478260869565217,103],"nH6s":[-0.5,-0.8652173913043519,103],"knCG":[-0.5,0.22608695652173916,102],"Oy5q":[-0.5,-0.7739130434782648,102],"p8Ei":[-0.5,0.3478260869565218,101],"VEP1":[-0.5,-0.6521739130434785,101],"SJnT":[0.5,-0.6521739130434785,115],"sJVe":[0.5,-0.7739130434782648,114],"ED1K":[0.5,-0.8652173913043519,113],"0w2S":[0.5,-0.9260869565217416,112],"TE75":[0.5,-0.971739130434786,111],"8x1L":[0.5,-1.00217391304348,110],"SAGT":[0.5,-1.0173913043478304,109],"IAUs":[0.5,-1.0250000000000057,108],"DXhf":[0.5,-1.0173913043478304,107],"rttD":[0.5,-1.00217391304348,106],"3nux":[0.5,-0.971739130434786,105],"IRCx":[0.5,-0.9260869565217416,104],"5jkP":[0.5,-0.8652173913043519,103],"XqDN":[0.5,-0.7739130434782648,102],"DBbG":[0.5,-0.6521739130434785,101],"6gi1":[0.5,0.3478260869565218,115],"cL7l":[0.5,0.22608695652173916,114],"6JJV":[0.5,0.13478260869565217,113],"ibGc":[0.5,0.07391304347826089,112],"8sh8":[0.5,0.028260869565217506,111],"y3bM":[0.5,-0.0021739130434781373,110],"ymVT":[0.5,-0.017391304347825987,109],"Jfyg":[0.5,-0.02499999999999991,108],"NgdR":[0.5,-0.017391304347825987,107],"iobY":[0.5,-0.0021739130434781373,106],"OuGn":[0.5,0.028260869565217506,105],"uEW2":[0.5,0.07391304347826089,104],"EXF4":[0.5,0.13478260869565217,103],"Rhp5":[0.5,0.22608695652173916,102],"oolz":[0.5,0.3478260869565218,101]},"faces":{"eITncMg3":{"uv":{"UDcH":[16,0],"DBbG":[15,16],"oolz":[15,0],"2jsq":[16,16]},"vertices":["UDcH","DBbG","oolz","2jsq"],"texture":0},"JOcBafJR":{"uv":{"nwmP":[0,16],"p8Ei":[1,0],"VEP1":[1,16],"rFEr":[0,0]},"vertices":["nwmP","p8Ei","VEP1","rFEr"],"texture":0},"Oa0IlY2d":{"uv":{"rFEr":[0,16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"UDcH":[8.881784197001252e-16,0]},"vertices":["rFEr","oolz","p8Ei","UDcH"],"texture":0},"Dq3qTzzZ":{"uv":{"2jsq":[16,8.881784197001252e-16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"nwmP":[16,16]},"vertices":["2jsq","VEP1","DBbG","nwmP"],"texture":0},"PH1WbY6P":{"uv":{"tKmB":[0,0],"3h3r":[0,0],"p9gB":[0,16],"CNsI":[0,16]},"vertices":["tKmB","3h3r","p9gB","CNsI"],"texture":0},"xW5eAbyB":{"uv":{"rFEr":[0,0],"UDcH":[0,0],"nwmP":[0,16],"2jsq":[0,16]},"vertices":["rFEr","UDcH","nwmP","2jsq"],"texture":0},"XDldXQU4":{"uv":{"3h3r":[16,0],"SFbE":[15,0],"fvfn":[15,16],"CNsI":[16,16]},"vertices":["3h3r","SFbE","fvfn","CNsI"],"texture":0},"eA1h4BU4":{"uv":{"SFbE":[15,0],"tbKp":[14,0],"iUCR":[14,16],"fvfn":[15,16]},"vertices":["SFbE","tbKp","iUCR","fvfn"],"texture":0},"uSD0Om3G":{"uv":{"tbKp":[14,0],"FYa7":[13,0],"LW3H":[13,16],"iUCR":[14,16]},"vertices":["tbKp","FYa7","LW3H","iUCR"],"texture":0},"XUJsEiJ0":{"uv":{"FYa7":[13,0],"Nt89":[12,0],"o2vx":[12,16],"LW3H":[13,16]},"vertices":["FYa7","Nt89","o2vx","LW3H"],"texture":0},"y02gowWc":{"uv":{"Nt89":[12,0],"kisU":[11,0],"Uy9h":[11,16],"o2vx":[12,16]},"vertices":["Nt89","kisU","Uy9h","o2vx"],"texture":0},"QhztUvIs":{"uv":{"kisU":[11,0],"5HEv":[10,0],"cVL2":[10,16],"Uy9h":[11,16]},"vertices":["kisU","5HEv","cVL2","Uy9h"],"texture":0},"mpzwf6fa":{"uv":{"5HEv":[10,0],"YAxu":[9,0],"06eU":[9,16],"cVL2":[10,16]},"vertices":["5HEv","YAxu","06eU","cVL2"],"texture":0},"VG4jxVT2":{"uv":{"YAxu":[9,0],"ugNs":[8,0],"B5py":[8,16],"06eU":[9,16]},"vertices":["YAxu","ugNs","B5py","06eU"],"texture":0},"BqBmGDlB":{"uv":{"ugNs":[8,0],"mt0e":[7,0],"FUSY":[7,16],"B5py":[8,16]},"vertices":["ugNs","mt0e","FUSY","B5py"],"texture":0},"ARH8IPJY":{"uv":{"mt0e":[7,0],"tlTa":[6,0],"wIT4":[6,16],"FUSY":[7,16]},"vertices":["mt0e","tlTa","wIT4","FUSY"],"texture":0},"RTGFVLdN":{"uv":{"tlTa":[6,0],"87SW":[5,0],"yK6M":[5,16],"wIT4":[6,16]},"vertices":["tlTa","87SW","yK6M","wIT4"],"texture":0},"u0CU1ucj":{"uv":{"87SW":[5,0],"9hXH":[4,0],"dIeG":[4,16],"yK6M":[5,16]},"vertices":["87SW","9hXH","dIeG","yK6M"],"texture":0},"PQRFApPq":{"uv":{"9hXH":[4,0],"70F6":[3,0],"nH6s":[3,16],"dIeG":[4,16]},"vertices":["9hXH","70F6","nH6s","dIeG"],"texture":0},"XUHSZGer":{"uv":{"70F6":[3,0],"knCG":[2,0],"Oy5q":[2,16],"nH6s":[3,16]},"vertices":["70F6","knCG","Oy5q","nH6s"],"texture":0},"M7mz6Eao":{"uv":{"knCG":[2,0],"p8Ei":[1,0],"VEP1":[1,16],"Oy5q":[2,16]},"vertices":["knCG","p8Ei","VEP1","Oy5q"],"texture":0},"o4r0CUL2":{"uv":{"CNsI":[0,16],"fvfn":[1,16],"SJnT":[1,5.551115123125783e-17],"p9gB":[8.881784197001252e-16,0]},"vertices":["CNsI","fvfn","SJnT","p9gB"],"texture":0},"UdoHZMuX":{"uv":{"fvfn":[1,16],"iUCR":[2,16],"sJVe":[2,1.1102230246251565e-16],"SJnT":[1,5.551115123125783e-17]},"vertices":["fvfn","iUCR","sJVe","SJnT"],"texture":0},"4masZPS8":{"uv":{"iUCR":[2,16],"LW3H":[3,16],"ED1K":[3,1.6653345369377348e-16],"sJVe":[2,1.1102230246251565e-16]},"vertices":["iUCR","LW3H","ED1K","sJVe"],"texture":0},"H4YLQD2g":{"uv":{"LW3H":[3,16],"o2vx":[4,16],"0w2S":[4,2.220446049250313e-16],"ED1K":[3,1.6653345369377348e-16]},"vertices":["LW3H","o2vx","0w2S","ED1K"],"texture":0},"OSnCz0xS":{"uv":{"o2vx":[4,16],"Uy9h":[5,16],"TE75":[5,2.7755575615628914e-16],"0w2S":[4,2.220446049250313e-16]},"vertices":["o2vx","Uy9h","TE75","0w2S"],"texture":0},"FUPxqsVj":{"uv":{"Uy9h":[5,16],"cVL2":[6,16],"8x1L":[6,3.3306690738754696e-16],"TE75":[5,2.7755575615628914e-16]},"vertices":["Uy9h","cVL2","8x1L","TE75"],"texture":0},"NKQJD9pt":{"uv":{"cVL2":[6,16],"06eU":[7,16],"SAGT":[7,3.885780586188048e-16],"8x1L":[6,3.3306690738754696e-16]},"vertices":["cVL2","06eU","SAGT","8x1L"],"texture":0},"eqKGrbAs":{"uv":{"06eU":[7,16],"B5py":[8,16],"IAUs":[8,4.440892098500626e-16],"SAGT":[7,3.885780586188048e-16]},"vertices":["06eU","B5py","IAUs","SAGT"],"texture":0},"wRHJ930z":{"uv":{"B5py":[8,16],"FUSY":[9,16],"DXhf":[9,4.996003610813204e-16],"IAUs":[8,4.440892098500626e-16]},"vertices":["B5py","FUSY","DXhf","IAUs"],"texture":0},"zXy2ZEbZ":{"uv":{"FUSY":[9,16],"wIT4":[10,16],"rttD":[10,5.551115123125783e-16],"DXhf":[9,4.996003610813204e-16]},"vertices":["FUSY","wIT4","rttD","DXhf"],"texture":0},"Mwl7aT2C":{"uv":{"wIT4":[10,16],"yK6M":[11,16],"3nux":[11,6.106226635438361e-16],"rttD":[10,5.551115123125783e-16]},"vertices":["wIT4","yK6M","3nux","rttD"],"texture":0},"SXEnA76S":{"uv":{"yK6M":[11,16],"dIeG":[12,16],"IRCx":[12,6.661338147750939e-16],"3nux":[11,6.106226635438361e-16]},"vertices":["yK6M","dIeG","IRCx","3nux"],"texture":0},"GnV3CIGg":{"uv":{"dIeG":[12,16],"nH6s":[13,16],"5jkP":[13,7.216449660063518e-16],"IRCx":[12,6.661338147750939e-16]},"vertices":["dIeG","nH6s","5jkP","IRCx"],"texture":0},"afcNfj1z":{"uv":{"nH6s":[13,16],"Oy5q":[14,16],"XqDN":[14,7.771561172376096e-16],"5jkP":[13,7.216449660063518e-16]},"vertices":["nH6s","Oy5q","XqDN","5jkP"],"texture":0},"IsiRrfDg":{"uv":{"Oy5q":[14,16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"XqDN":[14,7.771561172376096e-16]},"vertices":["Oy5q","VEP1","DBbG","XqDN"],"texture":0},"rqiZjeQd":{"uv":{"p9gB":[0,16],"SJnT":[1,16],"6gi1":[1,0],"tKmB":[0,0]},"vertices":["p9gB","SJnT","6gi1","tKmB"],"texture":0},"sxW9BuZf":{"uv":{"SJnT":[1,16],"sJVe":[2,16],"cL7l":[2,0],"6gi1":[1,0]},"vertices":["SJnT","sJVe","cL7l","6gi1"],"texture":0},"I8jCTYuJ":{"uv":{"sJVe":[2,16],"ED1K":[3,16],"6JJV":[3,0],"cL7l":[2,0]},"vertices":["sJVe","ED1K","6JJV","cL7l"],"texture":0},"NoXS3wZA":{"uv":{"ED1K":[3,16],"0w2S":[4,16],"ibGc":[4,0],"6JJV":[3,0]},"vertices":["ED1K","0w2S","ibGc","6JJV"],"texture":0},"vTMI1uEJ":{"uv":{"0w2S":[4,16],"TE75":[5,16],"8sh8":[5,0],"ibGc":[4,0]},"vertices":["0w2S","TE75","8sh8","ibGc"],"texture":0},"kew3bNtO":{"uv":{"TE75":[5,16],"8x1L":[6,16],"y3bM":[6,0],"8sh8":[5,0]},"vertices":["TE75","8x1L","y3bM","8sh8"],"texture":0},"PjampPoR":{"uv":{"8x1L":[6,16],"SAGT":[7,16],"ymVT":[7,0],"y3bM":[6,0]},"vertices":["8x1L","SAGT","ymVT","y3bM"],"texture":0},"aHkuMvbE":{"uv":{"SAGT":[7,16],"IAUs":[8,16],"Jfyg":[8,0],"ymVT":[7,0]},"vertices":["SAGT","IAUs","Jfyg","ymVT"],"texture":0},"3ogf3fBm":{"uv":{"IAUs":[8,16],"DXhf":[9,16],"NgdR":[9,0],"Jfyg":[8,0]},"vertices":["IAUs","DXhf","NgdR","Jfyg"],"texture":0},"KnPoUAkI":{"uv":{"DXhf":[9,16],"rttD":[10,16],"iobY":[10,0],"NgdR":[9,0]},"vertices":["DXhf","rttD","iobY","NgdR"],"texture":0},"7VPdmk1e":{"uv":{"rttD":[10,16],"3nux":[11,16],"OuGn":[11,0],"iobY":[10,0]},"vertices":["rttD","3nux","OuGn","iobY"],"texture":0},"cBk4f2Wx":{"uv":{"3nux":[11,16],"IRCx":[12,16],"uEW2":[12,0],"OuGn":[11,0]},"vertices":["3nux","IRCx","uEW2","OuGn"],"texture":0},"i7LmGJIf":{"uv":{"IRCx":[12,16],"5jkP":[13,16],"EXF4":[13,0],"uEW2":[12,0]},"vertices":["IRCx","5jkP","EXF4","uEW2"],"texture":0},"BAIZ6z3V":{"uv":{"5jkP":[13,16],"XqDN":[14,16],"Rhp5":[14,0],"EXF4":[13,0]},"vertices":["5jkP","XqDN","Rhp5","EXF4"],"texture":0},"U1aetQB8":{"uv":{"XqDN":[14,16],"DBbG":[15,16],"oolz":[15,0],"Rhp5":[14,0]},"vertices":["XqDN","DBbG","oolz","Rhp5"],"texture":0},"ZwjO1nJB":{"uv":{"tKmB":[16,8.881784197001252e-16],"6gi1":[15,8.326672684688674e-16],"SFbE":[15,16],"3h3r":[16,16]},"vertices":["tKmB","6gi1","SFbE","3h3r"],"texture":0},"htNxfqGw":{"uv":{"6gi1":[15,8.326672684688674e-16],"cL7l":[14,7.771561172376096e-16],"tbKp":[14,16],"SFbE":[15,16]},"vertices":["6gi1","cL7l","tbKp","SFbE"],"texture":0},"ThXXcHHP":{"uv":{"cL7l":[14,7.771561172376096e-16],"6JJV":[13,7.216449660063518e-16],"FYa7":[13,16],"tbKp":[14,16]},"vertices":["cL7l","6JJV","FYa7","tbKp"],"texture":0},"s1i8wocb":{"uv":{"6JJV":[13,7.216449660063518e-16],"ibGc":[12,6.661338147750939e-16],"Nt89":[12,16],"FYa7":[13,16]},"vertices":["6JJV","ibGc","Nt89","FYa7"],"texture":0},"6kiGkEc5":{"uv":{"ibGc":[12,6.661338147750939e-16],"8sh8":[11,6.106226635438361e-16],"kisU":[11,16],"Nt89":[12,16]},"vertices":["ibGc","8sh8","kisU","Nt89"],"texture":0},"cSBcnKjJ":{"uv":{"8sh8":[11,6.106226635438361e-16],"y3bM":[10,5.551115123125783e-16],"5HEv":[10,16],"kisU":[11,16]},"vertices":["8sh8","y3bM","5HEv","kisU"],"texture":0},"S5sisQS8":{"uv":{"y3bM":[10,5.551115123125783e-16],"ymVT":[9,4.996003610813204e-16],"YAxu":[9,16],"5HEv":[10,16]},"vertices":["y3bM","ymVT","YAxu","5HEv"],"texture":0},"W9n88rxF":{"uv":{"ymVT":[9,4.996003610813204e-16],"Jfyg":[8,4.440892098500626e-16],"ugNs":[8,16],"YAxu":[9,16]},"vertices":["ymVT","Jfyg","ugNs","YAxu"],"texture":0},"xdxBfdPZ":{"uv":{"Jfyg":[8,4.440892098500626e-16],"NgdR":[7,3.885780586188048e-16],"mt0e":[7,16],"ugNs":[8,16]},"vertices":["Jfyg","NgdR","mt0e","ugNs"],"texture":0},"FylxCigO":{"uv":{"NgdR":[7,3.885780586188048e-16],"iobY":[6.000000000000001,3.3306690738754696e-16],"tlTa":[6,16],"mt0e":[7,16]},"vertices":["NgdR","iobY","tlTa","mt0e"],"texture":0},"tRPuOI6P":{"uv":{"iobY":[6.000000000000001,3.3306690738754696e-16],"OuGn":[5.000000000000001,2.7755575615628914e-16],"87SW":[5,16],"tlTa":[6,16]},"vertices":["iobY","OuGn","87SW","tlTa"],"texture":0},"QXOgiCNa":{"uv":{"OuGn":[5.000000000000001,2.7755575615628914e-16],"uEW2":[4.000000000000001,2.220446049250313e-16],"9hXH":[4,16],"87SW":[5,16]},"vertices":["OuGn","uEW2","9hXH","87SW"],"texture":0},"Q04gzYJ7":{"uv":{"uEW2":[4.000000000000001,2.220446049250313e-16],"EXF4":[3.000000000000001,1.6653345369377348e-16],"70F6":[3,16],"9hXH":[4,16]},"vertices":["uEW2","EXF4","70F6","9hXH"],"texture":0},"uxbqt6qs":{"uv":{"EXF4":[3.000000000000001,1.6653345369377348e-16],"Rhp5":[2.000000000000001,1.1102230246251565e-16],"knCG":[2,16],"70F6":[3,16]},"vertices":["EXF4","Rhp5","knCG","70F6"],"texture":0},"AP53gWa3":{"uv":{"Rhp5":[2.000000000000001,1.1102230246251565e-16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"knCG":[2,16]},"vertices":["Rhp5","oolz","p8Ei","knCG"],"texture":0}},"type":"mesh","uuid":"3afbca50-8ced-23cc-3ee5-cd791039ccd9"},{"name":"2","color":9,"origin":[0,0,0],"rotation":[0,0,0],"visibility":true,"locked":false,"render_order":"default","allow_mirror_modeling":true,"vertices":{"tKmB":[0.5,0.5,134],"UDcH":[0.5,0.5,118],"p9gB":[0.5,-0.5,134],"2jsq":[0.5,-0.5,118],"3h3r":[-0.5,0.5,134],"rFEr":[-0.5,0.5,118],"CNsI":[-0.5,-0.5,134],"nwmP":[-0.5,-0.5,118],"SFbE":[-0.5,0.4057971014492754,133],"fvfn":[-0.5,-0.5942028985507246,133],"tbKp":[-0.5,0.3304347826086957,132],"iUCR":[-0.5,-0.6695652173913071,132],"FYa7":[-0.5,0.2739130434782609,131],"LW3H":[-0.5,-0.726086956521744,131],"Nt89":[-0.5,0.23623188405797108,130],"o2vx":[-0.5,-0.7637681159420318,130],"kisU":[-0.5,0.20797101449275374,129],"Uy9h":[-0.5,-0.7920289855072511,129],"5HEv":[-0.5,0.18913043478260883,128],"cVL2":[-0.5,-0.810869565217395,128],"YAxu":[-0.5,0.17971014492753634,127],"06eU":[-0.5,-0.8202898550724687,127],"ugNs":[-0.5,0.1750000000000001,126],"B5py":[-0.5,-0.8250000000000064,126],"mt0e":[-0.5,0.17971014492753634,125],"FUSY":[-0.5,-0.8202898550724687,125],"tlTa":[-0.5,0.18913043478260883,124],"wIT4":[-0.5,-0.810869565217395,124],"87SW":[-0.5,0.20797101449275374,123],"yK6M":[-0.5,-0.7920289855072511,123],"9hXH":[-0.5,0.23623188405797108,122],"dIeG":[-0.5,-0.7637681159420318,122],"70F6":[-0.5,0.2739130434782609,121],"nH6s":[-0.5,-0.726086956521744,121],"knCG":[-0.5,0.3304347826086957,120],"Oy5q":[-0.5,-0.6695652173913071,120],"p8Ei":[-0.5,0.4057971014492754,119],"VEP1":[-0.5,-0.5942028985507246,119],"SJnT":[0.5,-0.5942028985507246,133],"sJVe":[0.5,-0.6695652173913071,132],"ED1K":[0.5,-0.726086956521744,131],"0w2S":[0.5,-0.7637681159420318,130],"TE75":[0.5,-0.7920289855072511,129],"8x1L":[0.5,-0.810869565217395,128],"SAGT":[0.5,-0.8202898550724687,127],"IAUs":[0.5,-0.8250000000000064,126],"DXhf":[0.5,-0.8202898550724687,125],"rttD":[0.5,-0.810869565217395,124],"3nux":[0.5,-0.7920289855072511,123],"IRCx":[0.5,-0.7637681159420318,122],"5jkP":[0.5,-0.726086956521744,121],"XqDN":[0.5,-0.6695652173913071,120],"DBbG":[0.5,-0.5942028985507246,119],"6gi1":[0.5,0.4057971014492754,133],"cL7l":[0.5,0.3304347826086957,132],"6JJV":[0.5,0.2739130434782609,131],"ibGc":[0.5,0.23623188405797108,130],"8sh8":[0.5,0.20797101449275374,129],"y3bM":[0.5,0.18913043478260883,128],"ymVT":[0.5,0.17971014492753634,127],"Jfyg":[0.5,0.1750000000000001,126],"NgdR":[0.5,0.17971014492753634,125],"iobY":[0.5,0.18913043478260883,124],"OuGn":[0.5,0.20797101449275374,123],"uEW2":[0.5,0.23623188405797108,122],"EXF4":[0.5,0.2739130434782609,121],"Rhp5":[0.5,0.3304347826086957,120],"oolz":[0.5,0.4057971014492754,119]},"faces":{"eITncMg3":{"uv":{"UDcH":[16,0],"DBbG":[15,16],"oolz":[15,0],"2jsq":[16,16]},"vertices":["UDcH","DBbG","oolz","2jsq"],"texture":0},"JOcBafJR":{"uv":{"nwmP":[0,16],"p8Ei":[1,0],"VEP1":[1,16],"rFEr":[0,0]},"vertices":["nwmP","p8Ei","VEP1","rFEr"],"texture":0},"Oa0IlY2d":{"uv":{"rFEr":[0,16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"UDcH":[8.881784197001252e-16,0]},"vertices":["rFEr","oolz","p8Ei","UDcH"],"texture":0},"Dq3qTzzZ":{"uv":{"2jsq":[16,8.881784197001252e-16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"nwmP":[16,16]},"vertices":["2jsq","VEP1","DBbG","nwmP"],"texture":0},"PH1WbY6P":{"uv":{"tKmB":[0,0],"3h3r":[0,0],"p9gB":[0,16],"CNsI":[0,16]},"vertices":["tKmB","3h3r","p9gB","CNsI"],"texture":0},"xW5eAbyB":{"uv":{"rFEr":[0,0],"UDcH":[0,0],"nwmP":[0,16],"2jsq":[0,16]},"vertices":["rFEr","UDcH","nwmP","2jsq"],"texture":0},"XDldXQU4":{"uv":{"3h3r":[16,0],"SFbE":[15,0],"fvfn":[15,16],"CNsI":[16,16]},"vertices":["3h3r","SFbE","fvfn","CNsI"],"texture":0},"eA1h4BU4":{"uv":{"SFbE":[15,0],"tbKp":[14,0],"iUCR":[14,16],"fvfn":[15,16]},"vertices":["SFbE","tbKp","iUCR","fvfn"],"texture":0},"uSD0Om3G":{"uv":{"tbKp":[14,0],"FYa7":[13,0],"LW3H":[13,16],"iUCR":[14,16]},"vertices":["tbKp","FYa7","LW3H","iUCR"],"texture":0},"XUJsEiJ0":{"uv":{"FYa7":[13,0],"Nt89":[12,0],"o2vx":[12,16],"LW3H":[13,16]},"vertices":["FYa7","Nt89","o2vx","LW3H"],"texture":0},"y02gowWc":{"uv":{"Nt89":[12,0],"kisU":[11,0],"Uy9h":[11,16],"o2vx":[12,16]},"vertices":["Nt89","kisU","Uy9h","o2vx"],"texture":0},"QhztUvIs":{"uv":{"kisU":[11,0],"5HEv":[10,0],"cVL2":[10,16],"Uy9h":[11,16]},"vertices":["kisU","5HEv","cVL2","Uy9h"],"texture":0},"mpzwf6fa":{"uv":{"5HEv":[10,0],"YAxu":[9,0],"06eU":[9,16],"cVL2":[10,16]},"vertices":["5HEv","YAxu","06eU","cVL2"],"texture":0},"VG4jxVT2":{"uv":{"YAxu":[9,0],"ugNs":[8,0],"B5py":[8,16],"06eU":[9,16]},"vertices":["YAxu","ugNs","B5py","06eU"],"texture":0},"BqBmGDlB":{"uv":{"ugNs":[8,0],"mt0e":[7,0],"FUSY":[7,16],"B5py":[8,16]},"vertices":["ugNs","mt0e","FUSY","B5py"],"texture":0},"ARH8IPJY":{"uv":{"mt0e":[7,0],"tlTa":[6,0],"wIT4":[6,16],"FUSY":[7,16]},"vertices":["mt0e","tlTa","wIT4","FUSY"],"texture":0},"RTGFVLdN":{"uv":{"tlTa":[6,0],"87SW":[5,0],"yK6M":[5,16],"wIT4":[6,16]},"vertices":["tlTa","87SW","yK6M","wIT4"],"texture":0},"u0CU1ucj":{"uv":{"87SW":[5,0],"9hXH":[4,0],"dIeG":[4,16],"yK6M":[5,16]},"vertices":["87SW","9hXH","dIeG","yK6M"],"texture":0},"PQRFApPq":{"uv":{"9hXH":[4,0],"70F6":[3,0],"nH6s":[3,16],"dIeG":[4,16]},"vertices":["9hXH","70F6","nH6s","dIeG"],"texture":0},"XUHSZGer":{"uv":{"70F6":[3,0],"knCG":[2,0],"Oy5q":[2,16],"nH6s":[3,16]},"vertices":["70F6","knCG","Oy5q","nH6s"],"texture":0},"M7mz6Eao":{"uv":{"knCG":[2,0],"p8Ei":[1,0],"VEP1":[1,16],"Oy5q":[2,16]},"vertices":["knCG","p8Ei","VEP1","Oy5q"],"texture":0},"o4r0CUL2":{"uv":{"CNsI":[0,16],"fvfn":[1,16],"SJnT":[1,5.551115123125783e-17],"p9gB":[8.881784197001252e-16,0]},"vertices":["CNsI","fvfn","SJnT","p9gB"],"texture":0},"UdoHZMuX":{"uv":{"fvfn":[1,16],"iUCR":[2,16],"sJVe":[2,1.1102230246251565e-16],"SJnT":[1,5.551115123125783e-17]},"vertices":["fvfn","iUCR","sJVe","SJnT"],"texture":0},"4masZPS8":{"uv":{"iUCR":[2,16],"LW3H":[3,16],"ED1K":[3,1.6653345369377348e-16],"sJVe":[2,1.1102230246251565e-16]},"vertices":["iUCR","LW3H","ED1K","sJVe"],"texture":0},"H4YLQD2g":{"uv":{"LW3H":[3,16],"o2vx":[4,16],"0w2S":[4,2.220446049250313e-16],"ED1K":[3,1.6653345369377348e-16]},"vertices":["LW3H","o2vx","0w2S","ED1K"],"texture":0},"OSnCz0xS":{"uv":{"o2vx":[4,16],"Uy9h":[5,16],"TE75":[5,2.7755575615628914e-16],"0w2S":[4,2.220446049250313e-16]},"vertices":["o2vx","Uy9h","TE75","0w2S"],"texture":0},"FUPxqsVj":{"uv":{"Uy9h":[5,16],"cVL2":[6,16],"8x1L":[6,3.3306690738754696e-16],"TE75":[5,2.7755575615628914e-16]},"vertices":["Uy9h","cVL2","8x1L","TE75"],"texture":0},"NKQJD9pt":{"uv":{"cVL2":[6,16],"06eU":[7,16],"SAGT":[7,3.885780586188048e-16],"8x1L":[6,3.3306690738754696e-16]},"vertices":["cVL2","06eU","SAGT","8x1L"],"texture":0},"eqKGrbAs":{"uv":{"06eU":[7,16],"B5py":[8,16],"IAUs":[8,4.440892098500626e-16],"SAGT":[7,3.885780586188048e-16]},"vertices":["06eU","B5py","IAUs","SAGT"],"texture":0},"wRHJ930z":{"uv":{"B5py":[8,16],"FUSY":[9,16],"DXhf":[9,4.996003610813204e-16],"IAUs":[8,4.440892098500626e-16]},"vertices":["B5py","FUSY","DXhf","IAUs"],"texture":0},"zXy2ZEbZ":{"uv":{"FUSY":[9,16],"wIT4":[10,16],"rttD":[10,5.551115123125783e-16],"DXhf":[9,4.996003610813204e-16]},"vertices":["FUSY","wIT4","rttD","DXhf"],"texture":0},"Mwl7aT2C":{"uv":{"wIT4":[10,16],"yK6M":[11,16],"3nux":[11,6.106226635438361e-16],"rttD":[10,5.551115123125783e-16]},"vertices":["wIT4","yK6M","3nux","rttD"],"texture":0},"SXEnA76S":{"uv":{"yK6M":[11,16],"dIeG":[12,16],"IRCx":[12,6.661338147750939e-16],"3nux":[11,6.106226635438361e-16]},"vertices":["yK6M","dIeG","IRCx","3nux"],"texture":0},"GnV3CIGg":{"uv":{"dIeG":[12,16],"nH6s":[13,16],"5jkP":[13,7.216449660063518e-16],"IRCx":[12,6.661338147750939e-16]},"vertices":["dIeG","nH6s","5jkP","IRCx"],"texture":0},"afcNfj1z":{"uv":{"nH6s":[13,16],"Oy5q":[14,16],"XqDN":[14,7.771561172376096e-16],"5jkP":[13,7.216449660063518e-16]},"vertices":["nH6s","Oy5q","XqDN","5jkP"],"texture":0},"IsiRrfDg":{"uv":{"Oy5q":[14,16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"XqDN":[14,7.771561172376096e-16]},"vertices":["Oy5q","VEP1","DBbG","XqDN"],"texture":0},"rqiZjeQd":{"uv":{"p9gB":[0,16],"SJnT":[1,16],"6gi1":[1,0],"tKmB":[0,0]},"vertices":["p9gB","SJnT","6gi1","tKmB"],"texture":0},"sxW9BuZf":{"uv":{"SJnT":[1,16],"sJVe":[2,16],"cL7l":[2,0],"6gi1":[1,0]},"vertices":["SJnT","sJVe","cL7l","6gi1"],"texture":0},"I8jCTYuJ":{"uv":{"sJVe":[2,16],"ED1K":[3,16],"6JJV":[3,0],"cL7l":[2,0]},"vertices":["sJVe","ED1K","6JJV","cL7l"],"texture":0},"NoXS3wZA":{"uv":{"ED1K":[3,16],"0w2S":[4,16],"ibGc":[4,0],"6JJV":[3,0]},"vertices":["ED1K","0w2S","ibGc","6JJV"],"texture":0},"vTMI1uEJ":{"uv":{"0w2S":[4,16],"TE75":[5,16],"8sh8":[5,0],"ibGc":[4,0]},"vertices":["0w2S","TE75","8sh8","ibGc"],"texture":0},"kew3bNtO":{"uv":{"TE75":[5,16],"8x1L":[6,16],"y3bM":[6,0],"8sh8":[5,0]},"vertices":["TE75","8x1L","y3bM","8sh8"],"texture":0},"PjampPoR":{"uv":{"8x1L":[6,16],"SAGT":[7,16],"ymVT":[7,0],"y3bM":[6,0]},"vertices":["8x1L","SAGT","ymVT","y3bM"],"texture":0},"aHkuMvbE":{"uv":{"SAGT":[7,16],"IAUs":[8,16],"Jfyg":[8,0],"ymVT":[7,0]},"vertices":["SAGT","IAUs","Jfyg","ymVT"],"texture":0},"3ogf3fBm":{"uv":{"IAUs":[8,16],"DXhf":[9,16],"NgdR":[9,0],"Jfyg":[8,0]},"vertices":["IAUs","DXhf","NgdR","Jfyg"],"texture":0},"KnPoUAkI":{"uv":{"DXhf":[9,16],"rttD":[10,16],"iobY":[10,0],"NgdR":[9,0]},"vertices":["DXhf","rttD","iobY","NgdR"],"texture":0},"7VPdmk1e":{"uv":{"rttD":[10,16],"3nux":[11,16],"OuGn":[11,0],"iobY":[10,0]},"vertices":["rttD","3nux","OuGn","iobY"],"texture":0},"cBk4f2Wx":{"uv":{"3nux":[11,16],"IRCx":[12,16],"uEW2":[12,0],"OuGn":[11,0]},"vertices":["3nux","IRCx","uEW2","OuGn"],"texture":0},"i7LmGJIf":{"uv":{"IRCx":[12,16],"5jkP":[13,16],"EXF4":[13,0],"uEW2":[12,0]},"vertices":["IRCx","5jkP","EXF4","uEW2"],"texture":0},"BAIZ6z3V":{"uv":{"5jkP":[13,16],"XqDN":[14,16],"Rhp5":[14,0],"EXF4":[13,0]},"vertices":["5jkP","XqDN","Rhp5","EXF4"],"texture":0},"U1aetQB8":{"uv":{"XqDN":[14,16],"DBbG":[15,16],"oolz":[15,0],"Rhp5":[14,0]},"vertices":["XqDN","DBbG","oolz","Rhp5"],"texture":0},"ZwjO1nJB":{"uv":{"tKmB":[16,8.881784197001252e-16],"6gi1":[15,8.326672684688674e-16],"SFbE":[15,16],"3h3r":[16,16]},"vertices":["tKmB","6gi1","SFbE","3h3r"],"texture":0},"htNxfqGw":{"uv":{"6gi1":[15,8.326672684688674e-16],"cL7l":[14,7.771561172376096e-16],"tbKp":[14,16],"SFbE":[15,16]},"vertices":["6gi1","cL7l","tbKp","SFbE"],"texture":0},"ThXXcHHP":{"uv":{"cL7l":[14,7.771561172376096e-16],"6JJV":[13,7.216449660063518e-16],"FYa7":[13,16],"tbKp":[14,16]},"vertices":["cL7l","6JJV","FYa7","tbKp"],"texture":0},"s1i8wocb":{"uv":{"6JJV":[13,7.216449660063518e-16],"ibGc":[12,6.661338147750939e-16],"Nt89":[12,16],"FYa7":[13,16]},"vertices":["6JJV","ibGc","Nt89","FYa7"],"texture":0},"6kiGkEc5":{"uv":{"ibGc":[12,6.661338147750939e-16],"8sh8":[11,6.106226635438361e-16],"kisU":[11,16],"Nt89":[12,16]},"vertices":["ibGc","8sh8","kisU","Nt89"],"texture":0},"cSBcnKjJ":{"uv":{"8sh8":[11,6.106226635438361e-16],"y3bM":[10,5.551115123125783e-16],"5HEv":[10,16],"kisU":[11,16]},"vertices":["8sh8","y3bM","5HEv","kisU"],"texture":0},"S5sisQS8":{"uv":{"y3bM":[10,5.551115123125783e-16],"ymVT":[9,4.996003610813204e-16],"YAxu":[9,16],"5HEv":[10,16]},"vertices":["y3bM","ymVT","YAxu","5HEv"],"texture":0},"W9n88rxF":{"uv":{"ymVT":[9,4.996003610813204e-16],"Jfyg":[8,4.440892098500626e-16],"ugNs":[8,16],"YAxu":[9,16]},"vertices":["ymVT","Jfyg","ugNs","YAxu"],"texture":0},"xdxBfdPZ":{"uv":{"Jfyg":[8,4.440892098500626e-16],"NgdR":[7,3.885780586188048e-16],"mt0e":[7,16],"ugNs":[8,16]},"vertices":["Jfyg","NgdR","mt0e","ugNs"],"texture":0},"FylxCigO":{"uv":{"NgdR":[7,3.885780586188048e-16],"iobY":[6.000000000000001,3.3306690738754696e-16],"tlTa":[6,16],"mt0e":[7,16]},"vertices":["NgdR","iobY","tlTa","mt0e"],"texture":0},"tRPuOI6P":{"uv":{"iobY":[6.000000000000001,3.3306690738754696e-16],"OuGn":[5.000000000000001,2.7755575615628914e-16],"87SW":[5,16],"tlTa":[6,16]},"vertices":["iobY","OuGn","87SW","tlTa"],"texture":0},"QXOgiCNa":{"uv":{"OuGn":[5.000000000000001,2.7755575615628914e-16],"uEW2":[4.000000000000001,2.220446049250313e-16],"9hXH":[4,16],"87SW":[5,16]},"vertices":["OuGn","uEW2","9hXH","87SW"],"texture":0},"Q04gzYJ7":{"uv":{"uEW2":[4.000000000000001,2.220446049250313e-16],"EXF4":[3.000000000000001,1.6653345369377348e-16],"70F6":[3,16],"9hXH":[4,16]},"vertices":["uEW2","EXF4","70F6","9hXH"],"texture":0},"uxbqt6qs":{"uv":{"EXF4":[3.000000000000001,1.6653345369377348e-16],"Rhp5":[2.000000000000001,1.1102230246251565e-16],"knCG":[2,16],"70F6":[3,16]},"vertices":["EXF4","Rhp5","knCG","70F6"],"texture":0},"AP53gWa3":{"uv":{"Rhp5":[2.000000000000001,1.1102230246251565e-16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"knCG":[2,16]},"vertices":["Rhp5","oolz","p8Ei","knCG"],"texture":0}},"type":"mesh","uuid":"b387bbe6-7d70-614c-cce9-afb6cfc1ce28"},{"name":"1","color":9,"origin":[0,0,0],"rotation":[0,0,0],"visibility":true,"locked":false,"render_order":"default","allow_mirror_modeling":true,"vertices":{"tKmB":[0.5,0.5,152],"UDcH":[0.5,0.5,136],"p9gB":[0.5,-0.5,152],"2jsq":[0.5,-0.5,136],"3h3r":[-0.5,0.5,152],"rFEr":[-0.5,0.5,136],"CNsI":[-0.5,-0.5,152],"nwmP":[-0.5,-0.5,136],"SFbE":[-0.5,0.463768115942029,151],"fvfn":[-0.5,-0.5362318840579725,151],"tbKp":[-0.5,0.4347826086956522,150],"iUCR":[-0.5,-0.5652173913043512,150],"FYa7":[-0.5,0.4130434782608696,149],"LW3H":[-0.5,-0.5869565217391344,149],"Nt89":[-0.5,0.39855072463768126,148],"o2vx":[-0.5,-0.6014492753623237,148],"kisU":[-0.5,0.38768115942028997,147],"Uy9h":[-0.5,-0.6123188405797162,147],"5HEv":[-0.5,0.3804347826086958,146],"cVL2":[-0.5,-0.61956521739131,146],"YAxu":[-0.5,0.37681159420289867,145],"06eU":[-0.5,-0.6231884057971069,145],"ugNs":[-0.5,0.3750000000000001,144],"B5py":[-0.5,-0.6250000000000071,144],"mt0e":[-0.5,0.37681159420289867,143],"FUSY":[-0.5,-0.6231884057971069,143],"tlTa":[-0.5,0.3804347826086958,142],"wIT4":[-0.5,-0.61956521739131,142],"87SW":[-0.5,0.38768115942028997,141],"yK6M":[-0.5,-0.6123188405797162,141],"9hXH":[-0.5,0.39855072463768126,140],"dIeG":[-0.5,-0.6014492753623237,140],"70F6":[-0.5,0.4130434782608696,139],"nH6s":[-0.5,-0.5869565217391344,139],"knCG":[-0.5,0.4347826086956522,138],"Oy5q":[-0.5,-0.5652173913043512,138],"p8Ei":[-0.5,0.463768115942029,137],"VEP1":[-0.5,-0.5362318840579725,137],"SJnT":[0.5,-0.5362318840579725,151],"sJVe":[0.5,-0.5652173913043512,150],"ED1K":[0.5,-0.5869565217391344,149],"0w2S":[0.5,-0.6014492753623237,148],"TE75":[0.5,-0.6123188405797162,147],"8x1L":[0.5,-0.61956521739131,146],"SAGT":[0.5,-0.6231884057971069,145],"IAUs":[0.5,-0.6250000000000071,144],"DXhf":[0.5,-0.6231884057971069,143],"rttD":[0.5,-0.61956521739131,142],"3nux":[0.5,-0.6123188405797162,141],"IRCx":[0.5,-0.6014492753623237,140],"5jkP":[0.5,-0.5869565217391344,139],"XqDN":[0.5,-0.5652173913043512,138],"DBbG":[0.5,-0.5362318840579725,137],"6gi1":[0.5,0.463768115942029,151],"cL7l":[0.5,0.4347826086956522,150],"6JJV":[0.5,0.4130434782608696,149],"ibGc":[0.5,0.39855072463768126,148],"8sh8":[0.5,0.38768115942028997,147],"y3bM":[0.5,0.3804347826086958,146],"ymVT":[0.5,0.37681159420289867,145],"Jfyg":[0.5,0.3750000000000001,144],"NgdR":[0.5,0.37681159420289867,143],"iobY":[0.5,0.3804347826086958,142],"OuGn":[0.5,0.38768115942028997,141],"uEW2":[0.5,0.39855072463768126,140],"EXF4":[0.5,0.4130434782608696,139],"Rhp5":[0.5,0.4347826086956522,138],"oolz":[0.5,0.463768115942029,137]},"faces":{"eITncMg3":{"uv":{"UDcH":[16,0],"DBbG":[15,16],"oolz":[15,0],"2jsq":[16,16]},"vertices":["UDcH","DBbG","oolz","2jsq"],"texture":0},"JOcBafJR":{"uv":{"nwmP":[0,16],"p8Ei":[1,0],"VEP1":[1,16],"rFEr":[0,0]},"vertices":["nwmP","p8Ei","VEP1","rFEr"],"texture":0},"Oa0IlY2d":{"uv":{"rFEr":[0,16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"UDcH":[8.881784197001252e-16,0]},"vertices":["rFEr","oolz","p8Ei","UDcH"],"texture":0},"Dq3qTzzZ":{"uv":{"2jsq":[16,8.881784197001252e-16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"nwmP":[16,16]},"vertices":["2jsq","VEP1","DBbG","nwmP"],"texture":0},"PH1WbY6P":{"uv":{"tKmB":[0,0],"3h3r":[0,0],"p9gB":[0,16],"CNsI":[0,16]},"vertices":["tKmB","3h3r","p9gB","CNsI"],"texture":0},"xW5eAbyB":{"uv":{"rFEr":[0,0],"UDcH":[0,0],"nwmP":[0,16],"2jsq":[0,16]},"vertices":["rFEr","UDcH","nwmP","2jsq"],"texture":0},"XDldXQU4":{"uv":{"3h3r":[16,0],"SFbE":[15,0],"fvfn":[15,16],"CNsI":[16,16]},"vertices":["3h3r","SFbE","fvfn","CNsI"],"texture":0},"eA1h4BU4":{"uv":{"SFbE":[15,0],"tbKp":[14,0],"iUCR":[14,16],"fvfn":[15,16]},"vertices":["SFbE","tbKp","iUCR","fvfn"],"texture":0},"uSD0Om3G":{"uv":{"tbKp":[14,0],"FYa7":[13,0],"LW3H":[13,16],"iUCR":[14,16]},"vertices":["tbKp","FYa7","LW3H","iUCR"],"texture":0},"XUJsEiJ0":{"uv":{"FYa7":[13,0],"Nt89":[12,0],"o2vx":[12,16],"LW3H":[13,16]},"vertices":["FYa7","Nt89","o2vx","LW3H"],"texture":0},"y02gowWc":{"uv":{"Nt89":[12,0],"kisU":[11,0],"Uy9h":[11,16],"o2vx":[12,16]},"vertices":["Nt89","kisU","Uy9h","o2vx"],"texture":0},"QhztUvIs":{"uv":{"kisU":[11,0],"5HEv":[10,0],"cVL2":[10,16],"Uy9h":[11,16]},"vertices":["kisU","5HEv","cVL2","Uy9h"],"texture":0},"mpzwf6fa":{"uv":{"5HEv":[10,0],"YAxu":[9,0],"06eU":[9,16],"cVL2":[10,16]},"vertices":["5HEv","YAxu","06eU","cVL2"],"texture":0},"VG4jxVT2":{"uv":{"YAxu":[9,0],"ugNs":[8,0],"B5py":[8,16],"06eU":[9,16]},"vertices":["YAxu","ugNs","B5py","06eU"],"texture":0},"BqBmGDlB":{"uv":{"ugNs":[8,0],"mt0e":[7,0],"FUSY":[7,16],"B5py":[8,16]},"vertices":["ugNs","mt0e","FUSY","B5py"],"texture":0},"ARH8IPJY":{"uv":{"mt0e":[7,0],"tlTa":[6,0],"wIT4":[6,16],"FUSY":[7,16]},"vertices":["mt0e","tlTa","wIT4","FUSY"],"texture":0},"RTGFVLdN":{"uv":{"tlTa":[6,0],"87SW":[5,0],"yK6M":[5,16],"wIT4":[6,16]},"vertices":["tlTa","87SW","yK6M","wIT4"],"texture":0},"u0CU1ucj":{"uv":{"87SW":[5,0],"9hXH":[4,0],"dIeG":[4,16],"yK6M":[5,16]},"vertices":["87SW","9hXH","dIeG","yK6M"],"texture":0},"PQRFApPq":{"uv":{"9hXH":[4,0],"70F6":[3,0],"nH6s":[3,16],"dIeG":[4,16]},"vertices":["9hXH","70F6","nH6s","dIeG"],"texture":0},"XUHSZGer":{"uv":{"70F6":[3,0],"knCG":[2,0],"Oy5q":[2,16],"nH6s":[3,16]},"vertices":["70F6","knCG","Oy5q","nH6s"],"texture":0},"M7mz6Eao":{"uv":{"knCG":[2,0],"p8Ei":[1,0],"VEP1":[1,16],"Oy5q":[2,16]},"vertices":["knCG","p8Ei","VEP1","Oy5q"],"texture":0},"o4r0CUL2":{"uv":{"CNsI":[0,16],"fvfn":[1,16],"SJnT":[1,5.551115123125783e-17],"p9gB":[8.881784197001252e-16,0]},"vertices":["CNsI","fvfn","SJnT","p9gB"],"texture":0},"UdoHZMuX":{"uv":{"fvfn":[1,16],"iUCR":[2,16],"sJVe":[2,1.1102230246251565e-16],"SJnT":[1,5.551115123125783e-17]},"vertices":["fvfn","iUCR","sJVe","SJnT"],"texture":0},"4masZPS8":{"uv":{"iUCR":[2,16],"LW3H":[3,16],"ED1K":[3,1.6653345369377348e-16],"sJVe":[2,1.1102230246251565e-16]},"vertices":["iUCR","LW3H","ED1K","sJVe"],"texture":0},"H4YLQD2g":{"uv":{"LW3H":[3,16],"o2vx":[4,16],"0w2S":[4,2.220446049250313e-16],"ED1K":[3,1.6653345369377348e-16]},"vertices":["LW3H","o2vx","0w2S","ED1K"],"texture":0},"OSnCz0xS":{"uv":{"o2vx":[4,16],"Uy9h":[5,16],"TE75":[5,2.7755575615628914e-16],"0w2S":[4,2.220446049250313e-16]},"vertices":["o2vx","Uy9h","TE75","0w2S"],"texture":0},"FUPxqsVj":{"uv":{"Uy9h":[5,16],"cVL2":[6,16],"8x1L":[6,3.3306690738754696e-16],"TE75":[5,2.7755575615628914e-16]},"vertices":["Uy9h","cVL2","8x1L","TE75"],"texture":0},"NKQJD9pt":{"uv":{"cVL2":[6,16],"06eU":[7,16],"SAGT":[7,3.885780586188048e-16],"8x1L":[6,3.3306690738754696e-16]},"vertices":["cVL2","06eU","SAGT","8x1L"],"texture":0},"eqKGrbAs":{"uv":{"06eU":[7,16],"B5py":[8,16],"IAUs":[8,4.440892098500626e-16],"SAGT":[7,3.885780586188048e-16]},"vertices":["06eU","B5py","IAUs","SAGT"],"texture":0},"wRHJ930z":{"uv":{"B5py":[8,16],"FUSY":[9,16],"DXhf":[9,4.996003610813204e-16],"IAUs":[8,4.440892098500626e-16]},"vertices":["B5py","FUSY","DXhf","IAUs"],"texture":0},"zXy2ZEbZ":{"uv":{"FUSY":[9,16],"wIT4":[10,16],"rttD":[10,5.551115123125783e-16],"DXhf":[9,4.996003610813204e-16]},"vertices":["FUSY","wIT4","rttD","DXhf"],"texture":0},"Mwl7aT2C":{"uv":{"wIT4":[10,16],"yK6M":[11,16],"3nux":[11,6.106226635438361e-16],"rttD":[10,5.551115123125783e-16]},"vertices":["wIT4","yK6M","3nux","rttD"],"texture":0},"SXEnA76S":{"uv":{"yK6M":[11,16],"dIeG":[12,16],"IRCx":[12,6.661338147750939e-16],"3nux":[11,6.106226635438361e-16]},"vertices":["yK6M","dIeG","IRCx","3nux"],"texture":0},"GnV3CIGg":{"uv":{"dIeG":[12,16],"nH6s":[13,16],"5jkP":[13,7.216449660063518e-16],"IRCx":[12,6.661338147750939e-16]},"vertices":["dIeG","nH6s","5jkP","IRCx"],"texture":0},"afcNfj1z":{"uv":{"nH6s":[13,16],"Oy5q":[14,16],"XqDN":[14,7.771561172376096e-16],"5jkP":[13,7.216449660063518e-16]},"vertices":["nH6s","Oy5q","XqDN","5jkP"],"texture":0},"IsiRrfDg":{"uv":{"Oy5q":[14,16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"XqDN":[14,7.771561172376096e-16]},"vertices":["Oy5q","VEP1","DBbG","XqDN"],"texture":0},"rqiZjeQd":{"uv":{"p9gB":[0,16],"SJnT":[1,16],"6gi1":[1,0],"tKmB":[0,0]},"vertices":["p9gB","SJnT","6gi1","tKmB"],"texture":0},"sxW9BuZf":{"uv":{"SJnT":[1,16],"sJVe":[2,16],"cL7l":[2,0],"6gi1":[1,0]},"vertices":["SJnT","sJVe","cL7l","6gi1"],"texture":0},"I8jCTYuJ":{"uv":{"sJVe":[2,16],"ED1K":[3,16],"6JJV":[3,0],"cL7l":[2,0]},"vertices":["sJVe","ED1K","6JJV","cL7l"],"texture":0},"NoXS3wZA":{"uv":{"ED1K":[3,16],"0w2S":[4,16],"ibGc":[4,0],"6JJV":[3,0]},"vertices":["ED1K","0w2S","ibGc","6JJV"],"texture":0},"vTMI1uEJ":{"uv":{"0w2S":[4,16],"TE75":[5,16],"8sh8":[5,0],"ibGc":[4,0]},"vertices":["0w2S","TE75","8sh8","ibGc"],"texture":0},"kew3bNtO":{"uv":{"TE75":[5,16],"8x1L":[6,16],"y3bM":[6,0],"8sh8":[5,0]},"vertices":["TE75","8x1L","y3bM","8sh8"],"texture":0},"PjampPoR":{"uv":{"8x1L":[6,16],"SAGT":[7,16],"ymVT":[7,0],"y3bM":[6,0]},"vertices":["8x1L","SAGT","ymVT","y3bM"],"texture":0},"aHkuMvbE":{"uv":{"SAGT":[7,16],"IAUs":[8,16],"Jfyg":[8,0],"ymVT":[7,0]},"vertices":["SAGT","IAUs","Jfyg","ymVT"],"texture":0},"3ogf3fBm":{"uv":{"IAUs":[8,16],"DXhf":[9,16],"NgdR":[9,0],"Jfyg":[8,0]},"vertices":["IAUs","DXhf","NgdR","Jfyg"],"texture":0},"KnPoUAkI":{"uv":{"DXhf":[9,16],"rttD":[10,16],"iobY":[10,0],"NgdR":[9,0]},"vertices":["DXhf","rttD","iobY","NgdR"],"texture":0},"7VPdmk1e":{"uv":{"rttD":[10,16],"3nux":[11,16],"OuGn":[11,0],"iobY":[10,0]},"vertices":["rttD","3nux","OuGn","iobY"],"texture":0},"cBk4f2Wx":{"uv":{"3nux":[11,16],"IRCx":[12,16],"uEW2":[12,0],"OuGn":[11,0]},"vertices":["3nux","IRCx","uEW2","OuGn"],"texture":0},"i7LmGJIf":{"uv":{"IRCx":[12,16],"5jkP":[13,16],"EXF4":[13,0],"uEW2":[12,0]},"vertices":["IRCx","5jkP","EXF4","uEW2"],"texture":0},"BAIZ6z3V":{"uv":{"5jkP":[13,16],"XqDN":[14,16],"Rhp5":[14,0],"EXF4":[13,0]},"vertices":["5jkP","XqDN","Rhp5","EXF4"],"texture":0},"U1aetQB8":{"uv":{"XqDN":[14,16],"DBbG":[15,16],"oolz":[15,0],"Rhp5":[14,0]},"vertices":["XqDN","DBbG","oolz","Rhp5"],"texture":0},"ZwjO1nJB":{"uv":{"tKmB":[16,8.881784197001252e-16],"6gi1":[15,8.326672684688674e-16],"SFbE":[15,16],"3h3r":[16,16]},"vertices":["tKmB","6gi1","SFbE","3h3r"],"texture":0},"htNxfqGw":{"uv":{"6gi1":[15,8.326672684688674e-16],"cL7l":[14,7.771561172376096e-16],"tbKp":[14,16],"SFbE":[15,16]},"vertices":["6gi1","cL7l","tbKp","SFbE"],"texture":0},"ThXXcHHP":{"uv":{"cL7l":[14,7.771561172376096e-16],"6JJV":[13,7.216449660063518e-16],"FYa7":[13,16],"tbKp":[14,16]},"vertices":["cL7l","6JJV","FYa7","tbKp"],"texture":0},"s1i8wocb":{"uv":{"6JJV":[13,7.216449660063518e-16],"ibGc":[12,6.661338147750939e-16],"Nt89":[12,16],"FYa7":[13,16]},"vertices":["6JJV","ibGc","Nt89","FYa7"],"texture":0},"6kiGkEc5":{"uv":{"ibGc":[12,6.661338147750939e-16],"8sh8":[11,6.106226635438361e-16],"kisU":[11,16],"Nt89":[12,16]},"vertices":["ibGc","8sh8","kisU","Nt89"],"texture":0},"cSBcnKjJ":{"uv":{"8sh8":[11,6.106226635438361e-16],"y3bM":[10,5.551115123125783e-16],"5HEv":[10,16],"kisU":[11,16]},"vertices":["8sh8","y3bM","5HEv","kisU"],"texture":0},"S5sisQS8":{"uv":{"y3bM":[10,5.551115123125783e-16],"ymVT":[9,4.996003610813204e-16],"YAxu":[9,16],"5HEv":[10,16]},"vertices":["y3bM","ymVT","YAxu","5HEv"],"texture":0},"W9n88rxF":{"uv":{"ymVT":[9,4.996003610813204e-16],"Jfyg":[8,4.440892098500626e-16],"ugNs":[8,16],"YAxu":[9,16]},"vertices":["ymVT","Jfyg","ugNs","YAxu"],"texture":0},"xdxBfdPZ":{"uv":{"Jfyg":[8,4.440892098500626e-16],"NgdR":[7,3.885780586188048e-16],"mt0e":[7,16],"ugNs":[8,16]},"vertices":["Jfyg","NgdR","mt0e","ugNs"],"texture":0},"FylxCigO":{"uv":{"NgdR":[7,3.885780586188048e-16],"iobY":[6.000000000000001,3.3306690738754696e-16],"tlTa":[6,16],"mt0e":[7,16]},"vertices":["NgdR","iobY","tlTa","mt0e"],"texture":0},"tRPuOI6P":{"uv":{"iobY":[6.000000000000001,3.3306690738754696e-16],"OuGn":[5.000000000000001,2.7755575615628914e-16],"87SW":[5,16],"tlTa":[6,16]},"vertices":["iobY","OuGn","87SW","tlTa"],"texture":0},"QXOgiCNa":{"uv":{"OuGn":[5.000000000000001,2.7755575615628914e-16],"uEW2":[4.000000000000001,2.220446049250313e-16],"9hXH":[4,16],"87SW":[5,16]},"vertices":["OuGn","uEW2","9hXH","87SW"],"texture":0},"Q04gzYJ7":{"uv":{"uEW2":[4.000000000000001,2.220446049250313e-16],"EXF4":[3.000000000000001,1.6653345369377348e-16],"70F6":[3,16],"9hXH":[4,16]},"vertices":["uEW2","EXF4","70F6","9hXH"],"texture":0},"uxbqt6qs":{"uv":{"EXF4":[3.000000000000001,1.6653345369377348e-16],"Rhp5":[2.000000000000001,1.1102230246251565e-16],"knCG":[2,16],"70F6":[3,16]},"vertices":["EXF4","Rhp5","knCG","70F6"],"texture":0},"AP53gWa3":{"uv":{"Rhp5":[2.000000000000001,1.1102230246251565e-16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"knCG":[2,16]},"vertices":["Rhp5","oolz","p8Ei","knCG"],"texture":0}},"type":"mesh","uuid":"43cf9db6-664b-b498-a2a1-3d28472fdd2d"},{"name":"10","color":9,"origin":[0,0,0],"rotation":[0,0,0],"visibility":true,"locked":false,"render_order":"default","allow_mirror_modeling":true,"vertices":{"tKmB":[0.5,0.5,-10],"UDcH":[0.5,0.5,-26],"p9gB":[0.5,-0.5,-10],"2jsq":[0.5,-0.5,-26],"3h3r":[-0.5,0.5,-10],"rFEr":[-0.5,0.5,-26],"CNsI":[-0.5,-0.5,-10],"nwmP":[-0.5,-0.5,-26],"SFbE":[-0.5,-0.05797101449275355,-11],"fvfn":[-0.5,-1.0579710144927539,-11],"tbKp":[-0.5,-0.5043478260869565,-12],"iUCR":[-0.5,-1.5043478260869563,-12],"FYa7":[-0.5,-0.8391304347826087,-13],"LW3H":[-0.5,-1.8391304347826107,-13],"Nt89":[-0.5,-1.0623188405797102,-14],"o2vx":[-0.5,-2.0623188405797066,-14],"kisU":[-0.5,-1.229710144927536,-15],"Uy9h":[-0.5,-2.2297101449275374,-15],"5HEv":[-0.5,-1.3413043478260869,-16],"cVL2":[-0.5,-2.3413043478260853,-16],"YAxu":[-0.5,-1.3971014492753622,-17],"06eU":[-0.5,-2.3971014492753646,-17],"ugNs":[-0.5,-1.4249999999999998,-18],"B5py":[-0.5,-2.4250000000000007,-18],"mt0e":[-0.5,-1.3971014492753622,-19],"FUSY":[-0.5,-2.3971014492753646,-19],"tlTa":[-0.5,-1.3413043478260869,-20],"wIT4":[-0.5,-2.3413043478260853,-20],"87SW":[-0.5,-1.229710144927536,-21],"yK6M":[-0.5,-2.2297101449275374,-21],"9hXH":[-0.5,-1.0623188405797102,-22],"dIeG":[-0.5,-2.0623188405797066,-22],"70F6":[-0.5,-0.8391304347826087,-23],"nH6s":[-0.5,-1.8391304347826107,-23],"knCG":[-0.5,-0.5043478260869565,-24],"Oy5q":[-0.5,-1.5043478260869563,-24],"p8Ei":[-0.5,-0.05797101449275355,-25],"VEP1":[-0.5,-1.0579710144927539,-25],"SJnT":[0.5,-1.0579710144927539,-11],"sJVe":[0.5,-1.5043478260869563,-12],"ED1K":[0.5,-1.8391304347826107,-13],"0w2S":[0.5,-2.0623188405797066,-14],"TE75":[0.5,-2.2297101449275374,-15],"8x1L":[0.5,-2.3413043478260853,-16],"SAGT":[0.5,-2.3971014492753646,-17],"IAUs":[0.5,-2.4250000000000007,-18],"DXhf":[0.5,-2.3971014492753646,-19],"rttD":[0.5,-2.3413043478260853,-20],"3nux":[0.5,-2.2297101449275374,-21],"IRCx":[0.5,-2.0623188405797066,-22],"5jkP":[0.5,-1.8391304347826107,-23],"XqDN":[0.5,-1.5043478260869563,-24],"DBbG":[0.5,-1.0579710144927539,-25],"6gi1":[0.5,-0.05797101449275355,-11],"cL7l":[0.5,-0.5043478260869565,-12],"6JJV":[0.5,-0.8391304347826087,-13],"ibGc":[0.5,-1.0623188405797102,-14],"8sh8":[0.5,-1.229710144927536,-15],"y3bM":[0.5,-1.3413043478260869,-16],"ymVT":[0.5,-1.3971014492753622,-17],"Jfyg":[0.5,-1.4249999999999998,-18],"NgdR":[0.5,-1.3971014492753622,-19],"iobY":[0.5,-1.3413043478260869,-20],"OuGn":[0.5,-1.229710144927536,-21],"uEW2":[0.5,-1.0623188405797102,-22],"EXF4":[0.5,-0.8391304347826087,-23],"Rhp5":[0.5,-0.5043478260869565,-24],"oolz":[0.5,-0.05797101449275355,-25]},"faces":{"eITncMg3":{"uv":{"UDcH":[16,0],"DBbG":[15,16],"oolz":[15,0],"2jsq":[16,16]},"vertices":["UDcH","DBbG","oolz","2jsq"],"texture":0},"JOcBafJR":{"uv":{"nwmP":[0,16],"p8Ei":[1,0],"VEP1":[1,16],"rFEr":[0,0]},"vertices":["nwmP","p8Ei","VEP1","rFEr"],"texture":0},"Oa0IlY2d":{"uv":{"rFEr":[0,16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"UDcH":[8.881784197001252e-16,0]},"vertices":["rFEr","oolz","p8Ei","UDcH"],"texture":0},"Dq3qTzzZ":{"uv":{"2jsq":[16,8.881784197001252e-16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"nwmP":[16,16]},"vertices":["2jsq","VEP1","DBbG","nwmP"],"texture":0},"PH1WbY6P":{"uv":{"tKmB":[0,0],"3h3r":[0,0],"p9gB":[0,16],"CNsI":[0,16]},"vertices":["tKmB","3h3r","p9gB","CNsI"],"texture":0},"xW5eAbyB":{"uv":{"rFEr":[0,0],"UDcH":[0,0],"nwmP":[0,16],"2jsq":[0,16]},"vertices":["rFEr","UDcH","nwmP","2jsq"],"texture":0},"XDldXQU4":{"uv":{"3h3r":[16,0],"SFbE":[15,0],"fvfn":[15,16],"CNsI":[16,16]},"vertices":["3h3r","SFbE","fvfn","CNsI"],"texture":0},"eA1h4BU4":{"uv":{"SFbE":[15,0],"tbKp":[14,0],"iUCR":[14,16],"fvfn":[15,16]},"vertices":["SFbE","tbKp","iUCR","fvfn"],"texture":0},"uSD0Om3G":{"uv":{"tbKp":[14,0],"FYa7":[13,0],"LW3H":[13,16],"iUCR":[14,16]},"vertices":["tbKp","FYa7","LW3H","iUCR"],"texture":0},"XUJsEiJ0":{"uv":{"FYa7":[13,0],"Nt89":[12,0],"o2vx":[12,16],"LW3H":[13,16]},"vertices":["FYa7","Nt89","o2vx","LW3H"],"texture":0},"y02gowWc":{"uv":{"Nt89":[12,0],"kisU":[11,0],"Uy9h":[11,16],"o2vx":[12,16]},"vertices":["Nt89","kisU","Uy9h","o2vx"],"texture":0},"QhztUvIs":{"uv":{"kisU":[11,0],"5HEv":[10,0],"cVL2":[10,16],"Uy9h":[11,16]},"vertices":["kisU","5HEv","cVL2","Uy9h"],"texture":0},"mpzwf6fa":{"uv":{"5HEv":[10,0],"YAxu":[9,0],"06eU":[9,16],"cVL2":[10,16]},"vertices":["5HEv","YAxu","06eU","cVL2"],"texture":0},"VG4jxVT2":{"uv":{"YAxu":[9,0],"ugNs":[8,0],"B5py":[8,16],"06eU":[9,16]},"vertices":["YAxu","ugNs","B5py","06eU"],"texture":0},"BqBmGDlB":{"uv":{"ugNs":[8,0],"mt0e":[7,0],"FUSY":[7,16],"B5py":[8,16]},"vertices":["ugNs","mt0e","FUSY","B5py"],"texture":0},"ARH8IPJY":{"uv":{"mt0e":[7,0],"tlTa":[6,0],"wIT4":[6,16],"FUSY":[7,16]},"vertices":["mt0e","tlTa","wIT4","FUSY"],"texture":0},"RTGFVLdN":{"uv":{"tlTa":[6,0],"87SW":[5,0],"yK6M":[5,16],"wIT4":[6,16]},"vertices":["tlTa","87SW","yK6M","wIT4"],"texture":0},"u0CU1ucj":{"uv":{"87SW":[5,0],"9hXH":[4,0],"dIeG":[4,16],"yK6M":[5,16]},"vertices":["87SW","9hXH","dIeG","yK6M"],"texture":0},"PQRFApPq":{"uv":{"9hXH":[4,0],"70F6":[3,0],"nH6s":[3,16],"dIeG":[4,16]},"vertices":["9hXH","70F6","nH6s","dIeG"],"texture":0},"XUHSZGer":{"uv":{"70F6":[3,0],"knCG":[2,0],"Oy5q":[2,16],"nH6s":[3,16]},"vertices":["70F6","knCG","Oy5q","nH6s"],"texture":0},"M7mz6Eao":{"uv":{"knCG":[2,0],"p8Ei":[1,0],"VEP1":[1,16],"Oy5q":[2,16]},"vertices":["knCG","p8Ei","VEP1","Oy5q"],"texture":0},"o4r0CUL2":{"uv":{"CNsI":[0,16],"fvfn":[1,16],"SJnT":[1,5.551115123125783e-17],"p9gB":[8.881784197001252e-16,0]},"vertices":["CNsI","fvfn","SJnT","p9gB"],"texture":0},"UdoHZMuX":{"uv":{"fvfn":[1,16],"iUCR":[2,16],"sJVe":[2,1.1102230246251565e-16],"SJnT":[1,5.551115123125783e-17]},"vertices":["fvfn","iUCR","sJVe","SJnT"],"texture":0},"4masZPS8":{"uv":{"iUCR":[2,16],"LW3H":[3,16],"ED1K":[3,1.6653345369377348e-16],"sJVe":[2,1.1102230246251565e-16]},"vertices":["iUCR","LW3H","ED1K","sJVe"],"texture":0},"H4YLQD2g":{"uv":{"LW3H":[3,16],"o2vx":[4,16],"0w2S":[4,2.220446049250313e-16],"ED1K":[3,1.6653345369377348e-16]},"vertices":["LW3H","o2vx","0w2S","ED1K"],"texture":0},"OSnCz0xS":{"uv":{"o2vx":[4,16],"Uy9h":[5,16],"TE75":[5,2.7755575615628914e-16],"0w2S":[4,2.220446049250313e-16]},"vertices":["o2vx","Uy9h","TE75","0w2S"],"texture":0},"FUPxqsVj":{"uv":{"Uy9h":[5,16],"cVL2":[6,16],"8x1L":[6,3.3306690738754696e-16],"TE75":[5,2.7755575615628914e-16]},"vertices":["Uy9h","cVL2","8x1L","TE75"],"texture":0},"NKQJD9pt":{"uv":{"cVL2":[6,16],"06eU":[7,16],"SAGT":[7,3.885780586188048e-16],"8x1L":[6,3.3306690738754696e-16]},"vertices":["cVL2","06eU","SAGT","8x1L"],"texture":0},"eqKGrbAs":{"uv":{"06eU":[7,16],"B5py":[8,16],"IAUs":[8,4.440892098500626e-16],"SAGT":[7,3.885780586188048e-16]},"vertices":["06eU","B5py","IAUs","SAGT"],"texture":0},"wRHJ930z":{"uv":{"B5py":[8,16],"FUSY":[9,16],"DXhf":[9,4.996003610813204e-16],"IAUs":[8,4.440892098500626e-16]},"vertices":["B5py","FUSY","DXhf","IAUs"],"texture":0},"zXy2ZEbZ":{"uv":{"FUSY":[9,16],"wIT4":[10,16],"rttD":[10,5.551115123125783e-16],"DXhf":[9,4.996003610813204e-16]},"vertices":["FUSY","wIT4","rttD","DXhf"],"texture":0},"Mwl7aT2C":{"uv":{"wIT4":[10,16],"yK6M":[11,16],"3nux":[11,6.106226635438361e-16],"rttD":[10,5.551115123125783e-16]},"vertices":["wIT4","yK6M","3nux","rttD"],"texture":0},"SXEnA76S":{"uv":{"yK6M":[11,16],"dIeG":[12,16],"IRCx":[12,6.661338147750939e-16],"3nux":[11,6.106226635438361e-16]},"vertices":["yK6M","dIeG","IRCx","3nux"],"texture":0},"GnV3CIGg":{"uv":{"dIeG":[12,16],"nH6s":[13,16],"5jkP":[13,7.216449660063518e-16],"IRCx":[12,6.661338147750939e-16]},"vertices":["dIeG","nH6s","5jkP","IRCx"],"texture":0},"afcNfj1z":{"uv":{"nH6s":[13,16],"Oy5q":[14,16],"XqDN":[14,7.771561172376096e-16],"5jkP":[13,7.216449660063518e-16]},"vertices":["nH6s","Oy5q","XqDN","5jkP"],"texture":0},"IsiRrfDg":{"uv":{"Oy5q":[14,16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"XqDN":[14,7.771561172376096e-16]},"vertices":["Oy5q","VEP1","DBbG","XqDN"],"texture":0},"rqiZjeQd":{"uv":{"p9gB":[0,16],"SJnT":[1,16],"6gi1":[1,0],"tKmB":[0,0]},"vertices":["p9gB","SJnT","6gi1","tKmB"],"texture":0},"sxW9BuZf":{"uv":{"SJnT":[1,16],"sJVe":[2,16],"cL7l":[2,0],"6gi1":[1,0]},"vertices":["SJnT","sJVe","cL7l","6gi1"],"texture":0},"I8jCTYuJ":{"uv":{"sJVe":[2,16],"ED1K":[3,16],"6JJV":[3,0],"cL7l":[2,0]},"vertices":["sJVe","ED1K","6JJV","cL7l"],"texture":0},"NoXS3wZA":{"uv":{"ED1K":[3,16],"0w2S":[4,16],"ibGc":[4,0],"6JJV":[3,0]},"vertices":["ED1K","0w2S","ibGc","6JJV"],"texture":0},"vTMI1uEJ":{"uv":{"0w2S":[4,16],"TE75":[5,16],"8sh8":[5,0],"ibGc":[4,0]},"vertices":["0w2S","TE75","8sh8","ibGc"],"texture":0},"kew3bNtO":{"uv":{"TE75":[5,16],"8x1L":[6,16],"y3bM":[6,0],"8sh8":[5,0]},"vertices":["TE75","8x1L","y3bM","8sh8"],"texture":0},"PjampPoR":{"uv":{"8x1L":[6,16],"SAGT":[7,16],"ymVT":[7,0],"y3bM":[6,0]},"vertices":["8x1L","SAGT","ymVT","y3bM"],"texture":0},"aHkuMvbE":{"uv":{"SAGT":[7,16],"IAUs":[8,16],"Jfyg":[8,0],"ymVT":[7,0]},"vertices":["SAGT","IAUs","Jfyg","ymVT"],"texture":0},"3ogf3fBm":{"uv":{"IAUs":[8,16],"DXhf":[9,16],"NgdR":[9,0],"Jfyg":[8,0]},"vertices":["IAUs","DXhf","NgdR","Jfyg"],"texture":0},"KnPoUAkI":{"uv":{"DXhf":[9,16],"rttD":[10,16],"iobY":[10,0],"NgdR":[9,0]},"vertices":["DXhf","rttD","iobY","NgdR"],"texture":0},"7VPdmk1e":{"uv":{"rttD":[10,16],"3nux":[11,16],"OuGn":[11,0],"iobY":[10,0]},"vertices":["rttD","3nux","OuGn","iobY"],"texture":0},"cBk4f2Wx":{"uv":{"3nux":[11,16],"IRCx":[12,16],"uEW2":[12,0],"OuGn":[11,0]},"vertices":["3nux","IRCx","uEW2","OuGn"],"texture":0},"i7LmGJIf":{"uv":{"IRCx":[12,16],"5jkP":[13,16],"EXF4":[13,0],"uEW2":[12,0]},"vertices":["IRCx","5jkP","EXF4","uEW2"],"texture":0},"BAIZ6z3V":{"uv":{"5jkP":[13,16],"XqDN":[14,16],"Rhp5":[14,0],"EXF4":[13,0]},"vertices":["5jkP","XqDN","Rhp5","EXF4"],"texture":0},"U1aetQB8":{"uv":{"XqDN":[14,16],"DBbG":[15,16],"oolz":[15,0],"Rhp5":[14,0]},"vertices":["XqDN","DBbG","oolz","Rhp5"],"texture":0},"ZwjO1nJB":{"uv":{"tKmB":[16,8.881784197001252e-16],"6gi1":[15,8.326672684688674e-16],"SFbE":[15,16],"3h3r":[16,16]},"vertices":["tKmB","6gi1","SFbE","3h3r"],"texture":0},"htNxfqGw":{"uv":{"6gi1":[15,8.326672684688674e-16],"cL7l":[14,7.771561172376096e-16],"tbKp":[14,16],"SFbE":[15,16]},"vertices":["6gi1","cL7l","tbKp","SFbE"],"texture":0},"ThXXcHHP":{"uv":{"cL7l":[14,7.771561172376096e-16],"6JJV":[13,7.216449660063518e-16],"FYa7":[13,16],"tbKp":[14,16]},"vertices":["cL7l","6JJV","FYa7","tbKp"],"texture":0},"s1i8wocb":{"uv":{"6JJV":[13,7.216449660063518e-16],"ibGc":[12,6.661338147750939e-16],"Nt89":[12,16],"FYa7":[13,16]},"vertices":["6JJV","ibGc","Nt89","FYa7"],"texture":0},"6kiGkEc5":{"uv":{"ibGc":[12,6.661338147750939e-16],"8sh8":[11,6.106226635438361e-16],"kisU":[11,16],"Nt89":[12,16]},"vertices":["ibGc","8sh8","kisU","Nt89"],"texture":0},"cSBcnKjJ":{"uv":{"8sh8":[11,6.106226635438361e-16],"y3bM":[10,5.551115123125783e-16],"5HEv":[10,16],"kisU":[11,16]},"vertices":["8sh8","y3bM","5HEv","kisU"],"texture":0},"S5sisQS8":{"uv":{"y3bM":[10,5.551115123125783e-16],"ymVT":[9,4.996003610813204e-16],"YAxu":[9,16],"5HEv":[10,16]},"vertices":["y3bM","ymVT","YAxu","5HEv"],"texture":0},"W9n88rxF":{"uv":{"ymVT":[9,4.996003610813204e-16],"Jfyg":[8,4.440892098500626e-16],"ugNs":[8,16],"YAxu":[9,16]},"vertices":["ymVT","Jfyg","ugNs","YAxu"],"texture":0},"xdxBfdPZ":{"uv":{"Jfyg":[8,4.440892098500626e-16],"NgdR":[7,3.885780586188048e-16],"mt0e":[7,16],"ugNs":[8,16]},"vertices":["Jfyg","NgdR","mt0e","ugNs"],"texture":0},"FylxCigO":{"uv":{"NgdR":[7,3.885780586188048e-16],"iobY":[6.000000000000001,3.3306690738754696e-16],"tlTa":[6,16],"mt0e":[7,16]},"vertices":["NgdR","iobY","tlTa","mt0e"],"texture":0},"tRPuOI6P":{"uv":{"iobY":[6.000000000000001,3.3306690738754696e-16],"OuGn":[5.000000000000001,2.7755575615628914e-16],"87SW":[5,16],"tlTa":[6,16]},"vertices":["iobY","OuGn","87SW","tlTa"],"texture":0},"QXOgiCNa":{"uv":{"OuGn":[5.000000000000001,2.7755575615628914e-16],"uEW2":[4.000000000000001,2.220446049250313e-16],"9hXH":[4,16],"87SW":[5,16]},"vertices":["OuGn","uEW2","9hXH","87SW"],"texture":0},"Q04gzYJ7":{"uv":{"uEW2":[4.000000000000001,2.220446049250313e-16],"EXF4":[3.000000000000001,1.6653345369377348e-16],"70F6":[3,16],"9hXH":[4,16]},"vertices":["uEW2","EXF4","70F6","9hXH"],"texture":0},"uxbqt6qs":{"uv":{"EXF4":[3.000000000000001,1.6653345369377348e-16],"Rhp5":[2.000000000000001,1.1102230246251565e-16],"knCG":[2,16],"70F6":[3,16]},"vertices":["EXF4","Rhp5","knCG","70F6"],"texture":0},"AP53gWa3":{"uv":{"Rhp5":[2.000000000000001,1.1102230246251565e-16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"knCG":[2,16]},"vertices":["Rhp5","oolz","p8Ei","knCG"],"texture":0}},"type":"mesh","uuid":"a7a264e6-7a6c-ee30-473a-f8edca2f0c33"},{"name":"11","color":9,"origin":[0,0,0],"rotation":[0,0,0],"visibility":true,"locked":false,"render_order":"default","allow_mirror_modeling":true,"vertices":{"tKmB":[0.5,0.5,-28],"UDcH":[0.5,0.5,-44],"p9gB":[0.5,-0.5,-28],"2jsq":[0.5,-0.5,-44],"3h3r":[-0.5,0.5,-28],"rFEr":[-0.5,0.5,-44],"CNsI":[-0.5,-0.5,-28],"nwmP":[-0.5,-0.5,-44],"SFbE":[-0.5,-0.1159420289855072,-29],"fvfn":[-0.5,-1.1159420289855078,-29],"tbKp":[-0.5,-0.6086956521739131,-30],"iUCR":[-0.5,-1.608695652173914,-30],"FYa7":[-0.5,-0.9782608695652175,-31],"LW3H":[-0.5,-1.9782608695652186,-31],"Nt89":[-0.5,-1.2246376811594204,-32],"o2vx":[-0.5,-2.2246376811594146,-32],"kisU":[-0.5,-1.4094202898550723,-33],"Uy9h":[-0.5,-2.409420289855074,-33],"5HEv":[-0.5,-1.5326086956521738,-34],"cVL2":[-0.5,-2.532608695652172,-34],"YAxu":[-0.5,-1.5942028985507246,-35],"06eU":[-0.5,-2.5942028985507264,-35],"ugNs":[-0.5,-1.625,-36],"B5py":[-0.5,-2.625,-36],"mt0e":[-0.5,-1.5942028985507246,-37],"FUSY":[-0.5,-2.5942028985507264,-37],"tlTa":[-0.5,-1.5326086956521738,-38],"wIT4":[-0.5,-2.532608695652172,-38],"87SW":[-0.5,-1.4094202898550723,-39],"yK6M":[-0.5,-2.409420289855074,-39],"9hXH":[-0.5,-1.2246376811594204,-40],"dIeG":[-0.5,-2.2246376811594146,-40],"70F6":[-0.5,-0.9782608695652175,-41],"nH6s":[-0.5,-1.9782608695652186,-41],"knCG":[-0.5,-0.6086956521739131,-42],"Oy5q":[-0.5,-1.608695652173914,-42],"p8Ei":[-0.5,-0.1159420289855072,-43],"VEP1":[-0.5,-1.1159420289855078,-43],"SJnT":[0.5,-1.1159420289855078,-29],"sJVe":[0.5,-1.608695652173914,-30],"ED1K":[0.5,-1.9782608695652186,-31],"0w2S":[0.5,-2.2246376811594146,-32],"TE75":[0.5,-2.409420289855074,-33],"8x1L":[0.5,-2.532608695652172,-34],"SAGT":[0.5,-2.5942028985507264,-35],"IAUs":[0.5,-2.625,-36],"DXhf":[0.5,-2.5942028985507264,-37],"rttD":[0.5,-2.532608695652172,-38],"3nux":[0.5,-2.409420289855074,-39],"IRCx":[0.5,-2.2246376811594146,-40],"5jkP":[0.5,-1.9782608695652186,-41],"XqDN":[0.5,-1.608695652173914,-42],"DBbG":[0.5,-1.1159420289855078,-43],"6gi1":[0.5,-0.1159420289855072,-29],"cL7l":[0.5,-0.6086956521739131,-30],"6JJV":[0.5,-0.9782608695652175,-31],"ibGc":[0.5,-1.2246376811594204,-32],"8sh8":[0.5,-1.4094202898550723,-33],"y3bM":[0.5,-1.5326086956521738,-34],"ymVT":[0.5,-1.5942028985507246,-35],"Jfyg":[0.5,-1.625,-36],"NgdR":[0.5,-1.5942028985507246,-37],"iobY":[0.5,-1.5326086956521738,-38],"OuGn":[0.5,-1.4094202898550723,-39],"uEW2":[0.5,-1.2246376811594204,-40],"EXF4":[0.5,-0.9782608695652175,-41],"Rhp5":[0.5,-0.6086956521739131,-42],"oolz":[0.5,-0.1159420289855072,-43]},"faces":{"eITncMg3":{"uv":{"UDcH":[16,0],"DBbG":[15,16],"oolz":[15,0],"2jsq":[16,16]},"vertices":["UDcH","DBbG","oolz","2jsq"],"texture":0},"JOcBafJR":{"uv":{"nwmP":[0,16],"p8Ei":[1,0],"VEP1":[1,16],"rFEr":[0,0]},"vertices":["nwmP","p8Ei","VEP1","rFEr"],"texture":0},"Oa0IlY2d":{"uv":{"rFEr":[0,16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"UDcH":[8.881784197001252e-16,0]},"vertices":["rFEr","oolz","p8Ei","UDcH"],"texture":0},"Dq3qTzzZ":{"uv":{"2jsq":[16,8.881784197001252e-16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"nwmP":[16,16]},"vertices":["2jsq","VEP1","DBbG","nwmP"],"texture":0},"PH1WbY6P":{"uv":{"tKmB":[0,0],"3h3r":[0,0],"p9gB":[0,16],"CNsI":[0,16]},"vertices":["tKmB","3h3r","p9gB","CNsI"],"texture":0},"xW5eAbyB":{"uv":{"rFEr":[0,0],"UDcH":[0,0],"nwmP":[0,16],"2jsq":[0,16]},"vertices":["rFEr","UDcH","nwmP","2jsq"],"texture":0},"XDldXQU4":{"uv":{"3h3r":[16,0],"SFbE":[15,0],"fvfn":[15,16],"CNsI":[16,16]},"vertices":["3h3r","SFbE","fvfn","CNsI"],"texture":0},"eA1h4BU4":{"uv":{"SFbE":[15,0],"tbKp":[14,0],"iUCR":[14,16],"fvfn":[15,16]},"vertices":["SFbE","tbKp","iUCR","fvfn"],"texture":0},"uSD0Om3G":{"uv":{"tbKp":[14,0],"FYa7":[13,0],"LW3H":[13,16],"iUCR":[14,16]},"vertices":["tbKp","FYa7","LW3H","iUCR"],"texture":0},"XUJsEiJ0":{"uv":{"FYa7":[13,0],"Nt89":[12,0],"o2vx":[12,16],"LW3H":[13,16]},"vertices":["FYa7","Nt89","o2vx","LW3H"],"texture":0},"y02gowWc":{"uv":{"Nt89":[12,0],"kisU":[11,0],"Uy9h":[11,16],"o2vx":[12,16]},"vertices":["Nt89","kisU","Uy9h","o2vx"],"texture":0},"QhztUvIs":{"uv":{"kisU":[11,0],"5HEv":[10,0],"cVL2":[10,16],"Uy9h":[11,16]},"vertices":["kisU","5HEv","cVL2","Uy9h"],"texture":0},"mpzwf6fa":{"uv":{"5HEv":[10,0],"YAxu":[9,0],"06eU":[9,16],"cVL2":[10,16]},"vertices":["5HEv","YAxu","06eU","cVL2"],"texture":0},"VG4jxVT2":{"uv":{"YAxu":[9,0],"ugNs":[8,0],"B5py":[8,16],"06eU":[9,16]},"vertices":["YAxu","ugNs","B5py","06eU"],"texture":0},"BqBmGDlB":{"uv":{"ugNs":[8,0],"mt0e":[7,0],"FUSY":[7,16],"B5py":[8,16]},"vertices":["ugNs","mt0e","FUSY","B5py"],"texture":0},"ARH8IPJY":{"uv":{"mt0e":[7,0],"tlTa":[6,0],"wIT4":[6,16],"FUSY":[7,16]},"vertices":["mt0e","tlTa","wIT4","FUSY"],"texture":0},"RTGFVLdN":{"uv":{"tlTa":[6,0],"87SW":[5,0],"yK6M":[5,16],"wIT4":[6,16]},"vertices":["tlTa","87SW","yK6M","wIT4"],"texture":0},"u0CU1ucj":{"uv":{"87SW":[5,0],"9hXH":[4,0],"dIeG":[4,16],"yK6M":[5,16]},"vertices":["87SW","9hXH","dIeG","yK6M"],"texture":0},"PQRFApPq":{"uv":{"9hXH":[4,0],"70F6":[3,0],"nH6s":[3,16],"dIeG":[4,16]},"vertices":["9hXH","70F6","nH6s","dIeG"],"texture":0},"XUHSZGer":{"uv":{"70F6":[3,0],"knCG":[2,0],"Oy5q":[2,16],"nH6s":[3,16]},"vertices":["70F6","knCG","Oy5q","nH6s"],"texture":0},"M7mz6Eao":{"uv":{"knCG":[2,0],"p8Ei":[1,0],"VEP1":[1,16],"Oy5q":[2,16]},"vertices":["knCG","p8Ei","VEP1","Oy5q"],"texture":0},"o4r0CUL2":{"uv":{"CNsI":[0,16],"fvfn":[1,16],"SJnT":[1,5.551115123125783e-17],"p9gB":[8.881784197001252e-16,0]},"vertices":["CNsI","fvfn","SJnT","p9gB"],"texture":0},"UdoHZMuX":{"uv":{"fvfn":[1,16],"iUCR":[2,16],"sJVe":[2,1.1102230246251565e-16],"SJnT":[1,5.551115123125783e-17]},"vertices":["fvfn","iUCR","sJVe","SJnT"],"texture":0},"4masZPS8":{"uv":{"iUCR":[2,16],"LW3H":[3,16],"ED1K":[3,1.6653345369377348e-16],"sJVe":[2,1.1102230246251565e-16]},"vertices":["iUCR","LW3H","ED1K","sJVe"],"texture":0},"H4YLQD2g":{"uv":{"LW3H":[3,16],"o2vx":[4,16],"0w2S":[4,2.220446049250313e-16],"ED1K":[3,1.6653345369377348e-16]},"vertices":["LW3H","o2vx","0w2S","ED1K"],"texture":0},"OSnCz0xS":{"uv":{"o2vx":[4,16],"Uy9h":[5,16],"TE75":[5,2.7755575615628914e-16],"0w2S":[4,2.220446049250313e-16]},"vertices":["o2vx","Uy9h","TE75","0w2S"],"texture":0},"FUPxqsVj":{"uv":{"Uy9h":[5,16],"cVL2":[6,16],"8x1L":[6,3.3306690738754696e-16],"TE75":[5,2.7755575615628914e-16]},"vertices":["Uy9h","cVL2","8x1L","TE75"],"texture":0},"NKQJD9pt":{"uv":{"cVL2":[6,16],"06eU":[7,16],"SAGT":[7,3.885780586188048e-16],"8x1L":[6,3.3306690738754696e-16]},"vertices":["cVL2","06eU","SAGT","8x1L"],"texture":0},"eqKGrbAs":{"uv":{"06eU":[7,16],"B5py":[8,16],"IAUs":[8,4.440892098500626e-16],"SAGT":[7,3.885780586188048e-16]},"vertices":["06eU","B5py","IAUs","SAGT"],"texture":0},"wRHJ930z":{"uv":{"B5py":[8,16],"FUSY":[9,16],"DXhf":[9,4.996003610813204e-16],"IAUs":[8,4.440892098500626e-16]},"vertices":["B5py","FUSY","DXhf","IAUs"],"texture":0},"zXy2ZEbZ":{"uv":{"FUSY":[9,16],"wIT4":[10,16],"rttD":[10,5.551115123125783e-16],"DXhf":[9,4.996003610813204e-16]},"vertices":["FUSY","wIT4","rttD","DXhf"],"texture":0},"Mwl7aT2C":{"uv":{"wIT4":[10,16],"yK6M":[11,16],"3nux":[11,6.106226635438361e-16],"rttD":[10,5.551115123125783e-16]},"vertices":["wIT4","yK6M","3nux","rttD"],"texture":0},"SXEnA76S":{"uv":{"yK6M":[11,16],"dIeG":[12,16],"IRCx":[12,6.661338147750939e-16],"3nux":[11,6.106226635438361e-16]},"vertices":["yK6M","dIeG","IRCx","3nux"],"texture":0},"GnV3CIGg":{"uv":{"dIeG":[12,16],"nH6s":[13,16],"5jkP":[13,7.216449660063518e-16],"IRCx":[12,6.661338147750939e-16]},"vertices":["dIeG","nH6s","5jkP","IRCx"],"texture":0},"afcNfj1z":{"uv":{"nH6s":[13,16],"Oy5q":[14,16],"XqDN":[14,7.771561172376096e-16],"5jkP":[13,7.216449660063518e-16]},"vertices":["nH6s","Oy5q","XqDN","5jkP"],"texture":0},"IsiRrfDg":{"uv":{"Oy5q":[14,16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"XqDN":[14,7.771561172376096e-16]},"vertices":["Oy5q","VEP1","DBbG","XqDN"],"texture":0},"rqiZjeQd":{"uv":{"p9gB":[0,16],"SJnT":[1,16],"6gi1":[1,0],"tKmB":[0,0]},"vertices":["p9gB","SJnT","6gi1","tKmB"],"texture":0},"sxW9BuZf":{"uv":{"SJnT":[1,16],"sJVe":[2,16],"cL7l":[2,0],"6gi1":[1,0]},"vertices":["SJnT","sJVe","cL7l","6gi1"],"texture":0},"I8jCTYuJ":{"uv":{"sJVe":[2,16],"ED1K":[3,16],"6JJV":[3,0],"cL7l":[2,0]},"vertices":["sJVe","ED1K","6JJV","cL7l"],"texture":0},"NoXS3wZA":{"uv":{"ED1K":[3,16],"0w2S":[4,16],"ibGc":[4,0],"6JJV":[3,0]},"vertices":["ED1K","0w2S","ibGc","6JJV"],"texture":0},"vTMI1uEJ":{"uv":{"0w2S":[4,16],"TE75":[5,16],"8sh8":[5,0],"ibGc":[4,0]},"vertices":["0w2S","TE75","8sh8","ibGc"],"texture":0},"kew3bNtO":{"uv":{"TE75":[5,16],"8x1L":[6,16],"y3bM":[6,0],"8sh8":[5,0]},"vertices":["TE75","8x1L","y3bM","8sh8"],"texture":0},"PjampPoR":{"uv":{"8x1L":[6,16],"SAGT":[7,16],"ymVT":[7,0],"y3bM":[6,0]},"vertices":["8x1L","SAGT","ymVT","y3bM"],"texture":0},"aHkuMvbE":{"uv":{"SAGT":[7,16],"IAUs":[8,16],"Jfyg":[8,0],"ymVT":[7,0]},"vertices":["SAGT","IAUs","Jfyg","ymVT"],"texture":0},"3ogf3fBm":{"uv":{"IAUs":[8,16],"DXhf":[9,16],"NgdR":[9,0],"Jfyg":[8,0]},"vertices":["IAUs","DXhf","NgdR","Jfyg"],"texture":0},"KnPoUAkI":{"uv":{"DXhf":[9,16],"rttD":[10,16],"iobY":[10,0],"NgdR":[9,0]},"vertices":["DXhf","rttD","iobY","NgdR"],"texture":0},"7VPdmk1e":{"uv":{"rttD":[10,16],"3nux":[11,16],"OuGn":[11,0],"iobY":[10,0]},"vertices":["rttD","3nux","OuGn","iobY"],"texture":0},"cBk4f2Wx":{"uv":{"3nux":[11,16],"IRCx":[12,16],"uEW2":[12,0],"OuGn":[11,0]},"vertices":["3nux","IRCx","uEW2","OuGn"],"texture":0},"i7LmGJIf":{"uv":{"IRCx":[12,16],"5jkP":[13,16],"EXF4":[13,0],"uEW2":[12,0]},"vertices":["IRCx","5jkP","EXF4","uEW2"],"texture":0},"BAIZ6z3V":{"uv":{"5jkP":[13,16],"XqDN":[14,16],"Rhp5":[14,0],"EXF4":[13,0]},"vertices":["5jkP","XqDN","Rhp5","EXF4"],"texture":0},"U1aetQB8":{"uv":{"XqDN":[14,16],"DBbG":[15,16],"oolz":[15,0],"Rhp5":[14,0]},"vertices":["XqDN","DBbG","oolz","Rhp5"],"texture":0},"ZwjO1nJB":{"uv":{"tKmB":[16,8.881784197001252e-16],"6gi1":[15,8.326672684688674e-16],"SFbE":[15,16],"3h3r":[16,16]},"vertices":["tKmB","6gi1","SFbE","3h3r"],"texture":0},"htNxfqGw":{"uv":{"6gi1":[15,8.326672684688674e-16],"cL7l":[14,7.771561172376096e-16],"tbKp":[14,16],"SFbE":[15,16]},"vertices":["6gi1","cL7l","tbKp","SFbE"],"texture":0},"ThXXcHHP":{"uv":{"cL7l":[14,7.771561172376096e-16],"6JJV":[13,7.216449660063518e-16],"FYa7":[13,16],"tbKp":[14,16]},"vertices":["cL7l","6JJV","FYa7","tbKp"],"texture":0},"s1i8wocb":{"uv":{"6JJV":[13,7.216449660063518e-16],"ibGc":[12,6.661338147750939e-16],"Nt89":[12,16],"FYa7":[13,16]},"vertices":["6JJV","ibGc","Nt89","FYa7"],"texture":0},"6kiGkEc5":{"uv":{"ibGc":[12,6.661338147750939e-16],"8sh8":[11,6.106226635438361e-16],"kisU":[11,16],"Nt89":[12,16]},"vertices":["ibGc","8sh8","kisU","Nt89"],"texture":0},"cSBcnKjJ":{"uv":{"8sh8":[11,6.106226635438361e-16],"y3bM":[10,5.551115123125783e-16],"5HEv":[10,16],"kisU":[11,16]},"vertices":["8sh8","y3bM","5HEv","kisU"],"texture":0},"S5sisQS8":{"uv":{"y3bM":[10,5.551115123125783e-16],"ymVT":[9,4.996003610813204e-16],"YAxu":[9,16],"5HEv":[10,16]},"vertices":["y3bM","ymVT","YAxu","5HEv"],"texture":0},"W9n88rxF":{"uv":{"ymVT":[9,4.996003610813204e-16],"Jfyg":[8,4.440892098500626e-16],"ugNs":[8,16],"YAxu":[9,16]},"vertices":["ymVT","Jfyg","ugNs","YAxu"],"texture":0},"xdxBfdPZ":{"uv":{"Jfyg":[8,4.440892098500626e-16],"NgdR":[7,3.885780586188048e-16],"mt0e":[7,16],"ugNs":[8,16]},"vertices":["Jfyg","NgdR","mt0e","ugNs"],"texture":0},"FylxCigO":{"uv":{"NgdR":[7,3.885780586188048e-16],"iobY":[6.000000000000001,3.3306690738754696e-16],"tlTa":[6,16],"mt0e":[7,16]},"vertices":["NgdR","iobY","tlTa","mt0e"],"texture":0},"tRPuOI6P":{"uv":{"iobY":[6.000000000000001,3.3306690738754696e-16],"OuGn":[5.000000000000001,2.7755575615628914e-16],"87SW":[5,16],"tlTa":[6,16]},"vertices":["iobY","OuGn","87SW","tlTa"],"texture":0},"QXOgiCNa":{"uv":{"OuGn":[5.000000000000001,2.7755575615628914e-16],"uEW2":[4.000000000000001,2.220446049250313e-16],"9hXH":[4,16],"87SW":[5,16]},"vertices":["OuGn","uEW2","9hXH","87SW"],"texture":0},"Q04gzYJ7":{"uv":{"uEW2":[4.000000000000001,2.220446049250313e-16],"EXF4":[3.000000000000001,1.6653345369377348e-16],"70F6":[3,16],"9hXH":[4,16]},"vertices":["uEW2","EXF4","70F6","9hXH"],"texture":0},"uxbqt6qs":{"uv":{"EXF4":[3.000000000000001,1.6653345369377348e-16],"Rhp5":[2.000000000000001,1.1102230246251565e-16],"knCG":[2,16],"70F6":[3,16]},"vertices":["EXF4","Rhp5","knCG","70F6"],"texture":0},"AP53gWa3":{"uv":{"Rhp5":[2.000000000000001,1.1102230246251565e-16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"knCG":[2,16]},"vertices":["Rhp5","oolz","p8Ei","knCG"],"texture":0}},"type":"mesh","uuid":"654e6380-65c5-7b3b-6615-8138cd17bbe5"},{"name":"12","color":9,"origin":[0,0,0],"rotation":[0,0,0],"visibility":true,"locked":false,"render_order":"default","allow_mirror_modeling":true,"vertices":{"tKmB":[0.5,0.5,-46],"UDcH":[0.5,0.5,-62],"p9gB":[0.5,-0.5,-46],"2jsq":[0.5,-0.5,-62],"3h3r":[-0.5,0.5,-46],"rFEr":[-0.5,0.5,-62],"CNsI":[-0.5,-0.5,-46],"nwmP":[-0.5,-0.5,-62],"SFbE":[-0.5,-0.17391304347826086,-47],"fvfn":[-0.5,-1.1739130434782616,-47],"tbKp":[-0.5,-0.7130434782608697,-48],"iUCR":[-0.5,-1.7130434782608717,-48],"FYa7":[-0.5,-1.1173913043478263,-49],"LW3H":[-0.5,-2.1173913043478265,-49],"Nt89":[-0.5,-1.3869565217391306,-50],"o2vx":[-0.5,-2.3869565217391226,-50],"kisU":[-0.5,-1.5891304347826085,-51],"Uy9h":[-0.5,-2.5891304347826107,-51],"5HEv":[-0.5,-1.723913043478261,-52],"cVL2":[-0.5,-2.723913043478259,-52],"YAxu":[-0.5,-1.7913043478260873,-53],"06eU":[-0.5,-2.791304347826088,-53],"ugNs":[-0.5,-1.8250000000000002,-54],"B5py":[-0.5,-2.8249999999999993,-54],"mt0e":[-0.5,-1.7913043478260873,-55],"FUSY":[-0.5,-2.791304347826088,-55],"tlTa":[-0.5,-1.723913043478261,-56],"wIT4":[-0.5,-2.723913043478259,-56],"87SW":[-0.5,-1.5891304347826085,-57],"yK6M":[-0.5,-2.5891304347826107,-57],"9hXH":[-0.5,-1.3869565217391306,-58],"dIeG":[-0.5,-2.3869565217391226,-58],"70F6":[-0.5,-1.1173913043478263,-59],"nH6s":[-0.5,-2.1173913043478265,-59],"knCG":[-0.5,-0.7130434782608697,-60],"Oy5q":[-0.5,-1.7130434782608717,-60],"p8Ei":[-0.5,-0.17391304347826086,-61],"VEP1":[-0.5,-1.1739130434782616,-61],"SJnT":[0.5,-1.1739130434782616,-47],"sJVe":[0.5,-1.7130434782608717,-48],"ED1K":[0.5,-2.1173913043478265,-49],"0w2S":[0.5,-2.3869565217391226,-50],"TE75":[0.5,-2.5891304347826107,-51],"8x1L":[0.5,-2.723913043478259,-52],"SAGT":[0.5,-2.791304347826088,-53],"IAUs":[0.5,-2.8249999999999993,-54],"DXhf":[0.5,-2.791304347826088,-55],"rttD":[0.5,-2.723913043478259,-56],"3nux":[0.5,-2.5891304347826107,-57],"IRCx":[0.5,-2.3869565217391226,-58],"5jkP":[0.5,-2.1173913043478265,-59],"XqDN":[0.5,-1.7130434782608717,-60],"DBbG":[0.5,-1.1739130434782616,-61],"6gi1":[0.5,-0.17391304347826086,-47],"cL7l":[0.5,-0.7130434782608697,-48],"6JJV":[0.5,-1.1173913043478263,-49],"ibGc":[0.5,-1.3869565217391306,-50],"8sh8":[0.5,-1.5891304347826085,-51],"y3bM":[0.5,-1.723913043478261,-52],"ymVT":[0.5,-1.7913043478260873,-53],"Jfyg":[0.5,-1.8250000000000002,-54],"NgdR":[0.5,-1.7913043478260873,-55],"iobY":[0.5,-1.723913043478261,-56],"OuGn":[0.5,-1.5891304347826085,-57],"uEW2":[0.5,-1.3869565217391306,-58],"EXF4":[0.5,-1.1173913043478263,-59],"Rhp5":[0.5,-0.7130434782608697,-60],"oolz":[0.5,-0.17391304347826086,-61]},"faces":{"eITncMg3":{"uv":{"UDcH":[16,0],"DBbG":[15,16],"oolz":[15,0],"2jsq":[16,16]},"vertices":["UDcH","DBbG","oolz","2jsq"],"texture":0},"JOcBafJR":{"uv":{"nwmP":[0,16],"p8Ei":[1,0],"VEP1":[1,16],"rFEr":[0,0]},"vertices":["nwmP","p8Ei","VEP1","rFEr"],"texture":0},"Oa0IlY2d":{"uv":{"rFEr":[0,16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"UDcH":[8.881784197001252e-16,0]},"vertices":["rFEr","oolz","p8Ei","UDcH"],"texture":0},"Dq3qTzzZ":{"uv":{"2jsq":[16,8.881784197001252e-16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"nwmP":[16,16]},"vertices":["2jsq","VEP1","DBbG","nwmP"],"texture":0},"PH1WbY6P":{"uv":{"tKmB":[0,0],"3h3r":[0,0],"p9gB":[0,16],"CNsI":[0,16]},"vertices":["tKmB","3h3r","p9gB","CNsI"],"texture":0},"xW5eAbyB":{"uv":{"rFEr":[0,0],"UDcH":[0,0],"nwmP":[0,16],"2jsq":[0,16]},"vertices":["rFEr","UDcH","nwmP","2jsq"],"texture":0},"XDldXQU4":{"uv":{"3h3r":[16,0],"SFbE":[15,0],"fvfn":[15,16],"CNsI":[16,16]},"vertices":["3h3r","SFbE","fvfn","CNsI"],"texture":0},"eA1h4BU4":{"uv":{"SFbE":[15,0],"tbKp":[14,0],"iUCR":[14,16],"fvfn":[15,16]},"vertices":["SFbE","tbKp","iUCR","fvfn"],"texture":0},"uSD0Om3G":{"uv":{"tbKp":[14,0],"FYa7":[13,0],"LW3H":[13,16],"iUCR":[14,16]},"vertices":["tbKp","FYa7","LW3H","iUCR"],"texture":0},"XUJsEiJ0":{"uv":{"FYa7":[13,0],"Nt89":[12,0],"o2vx":[12,16],"LW3H":[13,16]},"vertices":["FYa7","Nt89","o2vx","LW3H"],"texture":0},"y02gowWc":{"uv":{"Nt89":[12,0],"kisU":[11,0],"Uy9h":[11,16],"o2vx":[12,16]},"vertices":["Nt89","kisU","Uy9h","o2vx"],"texture":0},"QhztUvIs":{"uv":{"kisU":[11,0],"5HEv":[10,0],"cVL2":[10,16],"Uy9h":[11,16]},"vertices":["kisU","5HEv","cVL2","Uy9h"],"texture":0},"mpzwf6fa":{"uv":{"5HEv":[10,0],"YAxu":[9,0],"06eU":[9,16],"cVL2":[10,16]},"vertices":["5HEv","YAxu","06eU","cVL2"],"texture":0},"VG4jxVT2":{"uv":{"YAxu":[9,0],"ugNs":[8,0],"B5py":[8,16],"06eU":[9,16]},"vertices":["YAxu","ugNs","B5py","06eU"],"texture":0},"BqBmGDlB":{"uv":{"ugNs":[8,0],"mt0e":[7,0],"FUSY":[7,16],"B5py":[8,16]},"vertices":["ugNs","mt0e","FUSY","B5py"],"texture":0},"ARH8IPJY":{"uv":{"mt0e":[7,0],"tlTa":[6,0],"wIT4":[6,16],"FUSY":[7,16]},"vertices":["mt0e","tlTa","wIT4","FUSY"],"texture":0},"RTGFVLdN":{"uv":{"tlTa":[6,0],"87SW":[5,0],"yK6M":[5,16],"wIT4":[6,16]},"vertices":["tlTa","87SW","yK6M","wIT4"],"texture":0},"u0CU1ucj":{"uv":{"87SW":[5,0],"9hXH":[4,0],"dIeG":[4,16],"yK6M":[5,16]},"vertices":["87SW","9hXH","dIeG","yK6M"],"texture":0},"PQRFApPq":{"uv":{"9hXH":[4,0],"70F6":[3,0],"nH6s":[3,16],"dIeG":[4,16]},"vertices":["9hXH","70F6","nH6s","dIeG"],"texture":0},"XUHSZGer":{"uv":{"70F6":[3,0],"knCG":[2,0],"Oy5q":[2,16],"nH6s":[3,16]},"vertices":["70F6","knCG","Oy5q","nH6s"],"texture":0},"M7mz6Eao":{"uv":{"knCG":[2,0],"p8Ei":[1,0],"VEP1":[1,16],"Oy5q":[2,16]},"vertices":["knCG","p8Ei","VEP1","Oy5q"],"texture":0},"o4r0CUL2":{"uv":{"CNsI":[0,16],"fvfn":[1,16],"SJnT":[1,5.551115123125783e-17],"p9gB":[8.881784197001252e-16,0]},"vertices":["CNsI","fvfn","SJnT","p9gB"],"texture":0},"UdoHZMuX":{"uv":{"fvfn":[1,16],"iUCR":[2,16],"sJVe":[2,1.1102230246251565e-16],"SJnT":[1,5.551115123125783e-17]},"vertices":["fvfn","iUCR","sJVe","SJnT"],"texture":0},"4masZPS8":{"uv":{"iUCR":[2,16],"LW3H":[3,16],"ED1K":[3,1.6653345369377348e-16],"sJVe":[2,1.1102230246251565e-16]},"vertices":["iUCR","LW3H","ED1K","sJVe"],"texture":0},"H4YLQD2g":{"uv":{"LW3H":[3,16],"o2vx":[4,16],"0w2S":[4,2.220446049250313e-16],"ED1K":[3,1.6653345369377348e-16]},"vertices":["LW3H","o2vx","0w2S","ED1K"],"texture":0},"OSnCz0xS":{"uv":{"o2vx":[4,16],"Uy9h":[5,16],"TE75":[5,2.7755575615628914e-16],"0w2S":[4,2.220446049250313e-16]},"vertices":["o2vx","Uy9h","TE75","0w2S"],"texture":0},"FUPxqsVj":{"uv":{"Uy9h":[5,16],"cVL2":[6,16],"8x1L":[6,3.3306690738754696e-16],"TE75":[5,2.7755575615628914e-16]},"vertices":["Uy9h","cVL2","8x1L","TE75"],"texture":0},"NKQJD9pt":{"uv":{"cVL2":[6,16],"06eU":[7,16],"SAGT":[7,3.885780586188048e-16],"8x1L":[6,3.3306690738754696e-16]},"vertices":["cVL2","06eU","SAGT","8x1L"],"texture":0},"eqKGrbAs":{"uv":{"06eU":[7,16],"B5py":[8,16],"IAUs":[8,4.440892098500626e-16],"SAGT":[7,3.885780586188048e-16]},"vertices":["06eU","B5py","IAUs","SAGT"],"texture":0},"wRHJ930z":{"uv":{"B5py":[8,16],"FUSY":[9,16],"DXhf":[9,4.996003610813204e-16],"IAUs":[8,4.440892098500626e-16]},"vertices":["B5py","FUSY","DXhf","IAUs"],"texture":0},"zXy2ZEbZ":{"uv":{"FUSY":[9,16],"wIT4":[10,16],"rttD":[10,5.551115123125783e-16],"DXhf":[9,4.996003610813204e-16]},"vertices":["FUSY","wIT4","rttD","DXhf"],"texture":0},"Mwl7aT2C":{"uv":{"wIT4":[10,16],"yK6M":[11,16],"3nux":[11,6.106226635438361e-16],"rttD":[10,5.551115123125783e-16]},"vertices":["wIT4","yK6M","3nux","rttD"],"texture":0},"SXEnA76S":{"uv":{"yK6M":[11,16],"dIeG":[12,16],"IRCx":[12,6.661338147750939e-16],"3nux":[11,6.106226635438361e-16]},"vertices":["yK6M","dIeG","IRCx","3nux"],"texture":0},"GnV3CIGg":{"uv":{"dIeG":[12,16],"nH6s":[13,16],"5jkP":[13,7.216449660063518e-16],"IRCx":[12,6.661338147750939e-16]},"vertices":["dIeG","nH6s","5jkP","IRCx"],"texture":0},"afcNfj1z":{"uv":{"nH6s":[13,16],"Oy5q":[14,16],"XqDN":[14,7.771561172376096e-16],"5jkP":[13,7.216449660063518e-16]},"vertices":["nH6s","Oy5q","XqDN","5jkP"],"texture":0},"IsiRrfDg":{"uv":{"Oy5q":[14,16],"VEP1":[15,16],"DBbG":[15,8.326672684688674e-16],"XqDN":[14,7.771561172376096e-16]},"vertices":["Oy5q","VEP1","DBbG","XqDN"],"texture":0},"rqiZjeQd":{"uv":{"p9gB":[0,16],"SJnT":[1,16],"6gi1":[1,0],"tKmB":[0,0]},"vertices":["p9gB","SJnT","6gi1","tKmB"],"texture":0},"sxW9BuZf":{"uv":{"SJnT":[1,16],"sJVe":[2,16],"cL7l":[2,0],"6gi1":[1,0]},"vertices":["SJnT","sJVe","cL7l","6gi1"],"texture":0},"I8jCTYuJ":{"uv":{"sJVe":[2,16],"ED1K":[3,16],"6JJV":[3,0],"cL7l":[2,0]},"vertices":["sJVe","ED1K","6JJV","cL7l"],"texture":0},"NoXS3wZA":{"uv":{"ED1K":[3,16],"0w2S":[4,16],"ibGc":[4,0],"6JJV":[3,0]},"vertices":["ED1K","0w2S","ibGc","6JJV"],"texture":0},"vTMI1uEJ":{"uv":{"0w2S":[4,16],"TE75":[5,16],"8sh8":[5,0],"ibGc":[4,0]},"vertices":["0w2S","TE75","8sh8","ibGc"],"texture":0},"kew3bNtO":{"uv":{"TE75":[5,16],"8x1L":[6,16],"y3bM":[6,0],"8sh8":[5,0]},"vertices":["TE75","8x1L","y3bM","8sh8"],"texture":0},"PjampPoR":{"uv":{"8x1L":[6,16],"SAGT":[7,16],"ymVT":[7,0],"y3bM":[6,0]},"vertices":["8x1L","SAGT","ymVT","y3bM"],"texture":0},"aHkuMvbE":{"uv":{"SAGT":[7,16],"IAUs":[8,16],"Jfyg":[8,0],"ymVT":[7,0]},"vertices":["SAGT","IAUs","Jfyg","ymVT"],"texture":0},"3ogf3fBm":{"uv":{"IAUs":[8,16],"DXhf":[9,16],"NgdR":[9,0],"Jfyg":[8,0]},"vertices":["IAUs","DXhf","NgdR","Jfyg"],"texture":0},"KnPoUAkI":{"uv":{"DXhf":[9,16],"rttD":[10,16],"iobY":[10,0],"NgdR":[9,0]},"vertices":["DXhf","rttD","iobY","NgdR"],"texture":0},"7VPdmk1e":{"uv":{"rttD":[10,16],"3nux":[11,16],"OuGn":[11,0],"iobY":[10,0]},"vertices":["rttD","3nux","OuGn","iobY"],"texture":0},"cBk4f2Wx":{"uv":{"3nux":[11,16],"IRCx":[12,16],"uEW2":[12,0],"OuGn":[11,0]},"vertices":["3nux","IRCx","uEW2","OuGn"],"texture":0},"i7LmGJIf":{"uv":{"IRCx":[12,16],"5jkP":[13,16],"EXF4":[13,0],"uEW2":[12,0]},"vertices":["IRCx","5jkP","EXF4","uEW2"],"texture":0},"BAIZ6z3V":{"uv":{"5jkP":[13,16],"XqDN":[14,16],"Rhp5":[14,0],"EXF4":[13,0]},"vertices":["5jkP","XqDN","Rhp5","EXF4"],"texture":0},"U1aetQB8":{"uv":{"XqDN":[14,16],"DBbG":[15,16],"oolz":[15,0],"Rhp5":[14,0]},"vertices":["XqDN","DBbG","oolz","Rhp5"],"texture":0},"ZwjO1nJB":{"uv":{"tKmB":[16,8.881784197001252e-16],"6gi1":[15,8.326672684688674e-16],"SFbE":[15,16],"3h3r":[16,16]},"vertices":["tKmB","6gi1","SFbE","3h3r"],"texture":0},"htNxfqGw":{"uv":{"6gi1":[15,8.326672684688674e-16],"cL7l":[14,7.771561172376096e-16],"tbKp":[14,16],"SFbE":[15,16]},"vertices":["6gi1","cL7l","tbKp","SFbE"],"texture":0},"ThXXcHHP":{"uv":{"cL7l":[14,7.771561172376096e-16],"6JJV":[13,7.216449660063518e-16],"FYa7":[13,16],"tbKp":[14,16]},"vertices":["cL7l","6JJV","FYa7","tbKp"],"texture":0},"s1i8wocb":{"uv":{"6JJV":[13,7.216449660063518e-16],"ibGc":[12,6.661338147750939e-16],"Nt89":[12,16],"FYa7":[13,16]},"vertices":["6JJV","ibGc","Nt89","FYa7"],"texture":0},"6kiGkEc5":{"uv":{"ibGc":[12,6.661338147750939e-16],"8sh8":[11,6.106226635438361e-16],"kisU":[11,16],"Nt89":[12,16]},"vertices":["ibGc","8sh8","kisU","Nt89"],"texture":0},"cSBcnKjJ":{"uv":{"8sh8":[11,6.106226635438361e-16],"y3bM":[10,5.551115123125783e-16],"5HEv":[10,16],"kisU":[11,16]},"vertices":["8sh8","y3bM","5HEv","kisU"],"texture":0},"S5sisQS8":{"uv":{"y3bM":[10,5.551115123125783e-16],"ymVT":[9,4.996003610813204e-16],"YAxu":[9,16],"5HEv":[10,16]},"vertices":["y3bM","ymVT","YAxu","5HEv"],"texture":0},"W9n88rxF":{"uv":{"ymVT":[9,4.996003610813204e-16],"Jfyg":[8,4.440892098500626e-16],"ugNs":[8,16],"YAxu":[9,16]},"vertices":["ymVT","Jfyg","ugNs","YAxu"],"texture":0},"xdxBfdPZ":{"uv":{"Jfyg":[8,4.440892098500626e-16],"NgdR":[7,3.885780586188048e-16],"mt0e":[7,16],"ugNs":[8,16]},"vertices":["Jfyg","NgdR","mt0e","ugNs"],"texture":0},"FylxCigO":{"uv":{"NgdR":[7,3.885780586188048e-16],"iobY":[6.000000000000001,3.3306690738754696e-16],"tlTa":[6,16],"mt0e":[7,16]},"vertices":["NgdR","iobY","tlTa","mt0e"],"texture":0},"tRPuOI6P":{"uv":{"iobY":[6.000000000000001,3.3306690738754696e-16],"OuGn":[5.000000000000001,2.7755575615628914e-16],"87SW":[5,16],"tlTa":[6,16]},"vertices":["iobY","OuGn","87SW","tlTa"],"texture":0},"QXOgiCNa":{"uv":{"OuGn":[5.000000000000001,2.7755575615628914e-16],"uEW2":[4.000000000000001,2.220446049250313e-16],"9hXH":[4,16],"87SW":[5,16]},"vertices":["OuGn","uEW2","9hXH","87SW"],"texture":0},"Q04gzYJ7":{"uv":{"uEW2":[4.000000000000001,2.220446049250313e-16],"EXF4":[3.000000000000001,1.6653345369377348e-16],"70F6":[3,16],"9hXH":[4,16]},"vertices":["uEW2","EXF4","70F6","9hXH"],"texture":0},"uxbqt6qs":{"uv":{"EXF4":[3.000000000000001,1.6653345369377348e-16],"Rhp5":[2.000000000000001,1.1102230246251565e-16],"knCG":[2,16],"70F6":[3,16]},"vertices":["EXF4","Rhp5","knCG","70F6"],"texture":0},"AP53gWa3":{"uv":{"Rhp5":[2.000000000000001,1.1102230246251565e-16],"oolz":[1.0000000000000009,5.551115123125783e-17],"p8Ei":[1,16],"knCG":[2,16]},"vertices":["Rhp5","oolz","p8Ei","knCG"],"texture":0}},"type":"mesh","uuid":"53a77f6b-f468-2f49-2c97-1aaba17c3c30"}],"outliner":["43cf9db6-664b-b498-a2a1-3d28472fdd2d","b387bbe6-7d70-614c-cce9-afb6cfc1ce28","3afbca50-8ced-23cc-3ee5-cd791039ccd9","ee84715f-6b25-7994-98cd-2170bccdaef6","69ee684d-c844-1573-1e66-a30bb410f474","49efb538-cb5a-50ae-e07b-28f81506658a","f6f53439-c59d-7750-9955-45b44503736d","1b0e9480-0af1-7937-7619-bb9ed6e8fea5","4ef29334-1757-9147-e314-74b89c1e7d07","a7a264e6-7a6c-ee30-473a-f8edca2f0c33","654e6380-65c5-7b3b-6615-8138cd17bbe5","53a77f6b-f468-2f49-2c97-1aaba17c3c30"],"textures":[{"path":"../textures/leads_lead.png","name":"leads_lead.png","folder":"","namespace":"","id":"0","width":96,"height":2,"uv_width":16,"uv_height":16,"particle":false,"layers_enabled":false,"sync_to_project":"","render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":false,"uuid":"23be694f-bb73-ca4f-4e50-c3ef0f3838f0","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAACCAYAAACnpNlpAAAAAXNSR0IArs4c6QAAAH9JREFUOE9jnNgQ///lk9cMyEBcRhSFD+PA1KHLo+sHqYepIcZsYvQj24msHiSOTT+yG0BsXGpwqSPGj4T04vMXLEwZ4xwN/oM4/AI8KIH+8cMXFD66PHoMIauHqQWJ4TKXkH3Y3IQtVcDsxec+bG7DmsKggvj8Tsg+UsINpBYAeQRMQAAW8RcAAAAASUVORK5CYII="}]} \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack1.obj b/mods/leads/models/leads_lead_slack1.obj new file mode 100644 index 00000000..4748f4bb --- /dev/null +++ b/mods/leads/models/leads_lead_slack1.obj @@ -0,0 +1,469 @@ +# Made in Blockbench 4.8.3 +mtllib leads_lead_slack1.mtl + +o cube +v 0.3125 0.3125 5 +v 0.3125 0.3125 -5 +v 0.3125 -0.3125 5 +v 0.3125 -0.3125 -5 +v -0.3125 0.3125 5 +v -0.3125 0.3125 -5 +v -0.3125 -0.3125 5 +v -0.3125 -0.3125 -5 +v -0.3125 0.2898550724637681 4.375 +v -0.3125 -0.3351449275362328 4.375 +v -0.3125 0.27173913043478265 3.75 +v -0.3125 -0.3532608695652195 3.75 +v -0.3125 0.2581521739130435 3.125 +v -0.3125 -0.366847826086959 3.125 +v -0.3125 0.24909420289855078 2.5 +v -0.3125 -0.37590579710145233 2.5 +v -0.3125 0.24230072463768124 1.875 +v -0.3125 -0.3826992753623226 1.875 +v -0.3125 0.23777173913043487 1.25 +v -0.3125 -0.38722826086956874 1.25 +v -0.3125 0.23550724637681167 0.625 +v -0.3125 -0.3894927536231918 0.625 +v -0.3125 0.23437500000000006 0 +v -0.3125 -0.39062500000000444 0 +v -0.3125 0.23550724637681167 -0.625 +v -0.3125 -0.3894927536231918 -0.625 +v -0.3125 0.23777173913043487 -1.25 +v -0.3125 -0.38722826086956874 -1.25 +v -0.3125 0.24230072463768124 -1.875 +v -0.3125 -0.3826992753623226 -1.875 +v -0.3125 0.24909420289855078 -2.5 +v -0.3125 -0.37590579710145233 -2.5 +v -0.3125 0.2581521739130435 -3.125 +v -0.3125 -0.366847826086959 -3.125 +v -0.3125 0.27173913043478265 -3.75 +v -0.3125 -0.3532608695652195 -3.75 +v -0.3125 0.2898550724637681 -4.375 +v -0.3125 -0.3351449275362328 -4.375 +v 0.3125 -0.3351449275362328 4.375 +v 0.3125 -0.3532608695652195 3.75 +v 0.3125 -0.366847826086959 3.125 +v 0.3125 -0.37590579710145233 2.5 +v 0.3125 -0.3826992753623226 1.875 +v 0.3125 -0.38722826086956874 1.25 +v 0.3125 -0.3894927536231918 0.625 +v 0.3125 -0.39062500000000444 0 +v 0.3125 -0.3894927536231918 -0.625 +v 0.3125 -0.38722826086956874 -1.25 +v 0.3125 -0.3826992753623226 -1.875 +v 0.3125 -0.37590579710145233 -2.5 +v 0.3125 -0.366847826086959 -3.125 +v 0.3125 -0.3532608695652195 -3.75 +v 0.3125 -0.3351449275362328 -4.375 +v 0.3125 0.2898550724637681 4.375 +v 0.3125 0.27173913043478265 3.75 +v 0.3125 0.2581521739130435 3.125 +v 0.3125 0.24909420289855078 2.5 +v 0.3125 0.24230072463768124 1.875 +v 0.3125 0.23777173913043487 1.25 +v 0.3125 0.23550724637681167 0.625 +v 0.3125 0.23437500000000006 0 +v 0.3125 0.23550724637681167 -0.625 +v 0.3125 0.23777173913043487 -1.25 +v 0.3125 0.24230072463768124 -1.875 +v 0.3125 0.24909420289855078 -2.5 +v 0.3125 0.2581521739130435 -3.125 +v 0.3125 0.27173913043478265 -3.75 +v 0.3125 0.2898550724637681 -4.375 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0 0 +vt 0.0625 0 +vt 0.06250000000000006 1 +vt 5.551115123125783e-17 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.0625 0 +vt 0.125 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 5.551115123125783e-17 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.37500000000000006 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.37500000000000006 1 +vt 0.31250000000000006 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.31250000000000006 1 +vt 0.25000000000000006 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25000000000000006 1 +vt 0.18750000000000006 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.18750000000000006 1 +vt 0.12500000000000006 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.12500000000000006 1 +vt 0.06250000000000006 1 +vt 0.0625 0 +vt 0.125 0 +vn 1 0 0 +vn -1 0 0 +vn 0 0.9993442708242972 0.036208125754503516 +vn 0 -0.9993442708242972 -0.036208125754505015 +vn 0 0 1 +vn 0 0 -1 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 -0.9993442708242972 0.036208125754505015 +vn 0 -0.9995801847002224 0.02897333868696487 +vn 0 -0.9997637888239164 0.02173399540921611 +vn 0 -0.9998949965870997 0.014491231834596599 +vn 0 -0.9999409315100345 0.01086892316858849 +vn 0 -0.9999737460454936 0.007246186565546643 +vn 0 -0.9999934363175116 0.003623164624338604 +vn 0 -0.9999983590672611 0.001811591230195987 +vn 0 -0.9999983590672611 -0.001811591230195987 +vn 0 -0.9999934363175116 -0.003623164624338604 +vn 0 -0.9999737460454936 -0.007246186565546643 +vn 0 -0.9999409315100345 -0.01086892316858849 +vn 0 -0.9998949965870997 -0.014491231834596599 +vn 0 -0.9997637888239164 -0.02173399540921611 +vn 0 -0.9995801847002224 -0.02897333868696487 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 0 0.9993442708242972 -0.036208125754503516 +vn 0 0.9995801847002224 -0.028973338686962932 +vn 0 0.9997637888239164 -0.021733995409215556 +vn 0 0.9998949965870997 -0.0144912318345956 +vn 0 0.9999409315100345 -0.010868923168587324 +vn 0 0.9999737460454936 -0.007246186565547032 +vn 0 0.9999934363175116 -0.003623164624338826 +vn 0 0.9999983590672611 -0.0018115912301943217 +vn 0 0.9999983590672611 0.0018115912301943217 +vn 0 0.9999934363175116 0.003623164624338826 +vn 0 0.9999737460454936 0.007246186565547032 +vn 0 0.9999409315100345 0.010868923168587324 +vn 0 0.9998949965870997 0.0144912318345956 +vn 0 0.9997637888239164 0.021733995409215556 +vn 0 0.9995801847002224 0.028973338686962932 +usemtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +f 2/1/1 68/2/1 53/3/1 4/4/1 +f 8/5/2 38/6/2 37/7/2 6/8/2 +f 6/9/3 37/10/3 68/11/3 2/12/3 +f 4/13/4 53/14/4 38/15/4 8/16/4 +f 3/17/5 1/18/5 5/19/5 7/20/5 +f 8/21/6 6/22/6 2/23/6 4/24/6 +f 5/25/7 9/26/7 10/27/7 7/28/7 +f 9/29/8 11/30/8 12/31/8 10/32/8 +f 11/33/9 13/34/9 14/35/9 12/36/9 +f 13/37/10 15/38/10 16/39/10 14/40/10 +f 15/41/11 17/42/11 18/43/11 16/44/11 +f 17/45/12 19/46/12 20/47/12 18/48/12 +f 19/49/13 21/50/13 22/51/13 20/52/13 +f 21/53/14 23/54/14 24/55/14 22/56/14 +f 23/57/15 25/58/15 26/59/15 24/60/15 +f 25/61/16 27/62/16 28/63/16 26/64/16 +f 27/65/17 29/66/17 30/67/17 28/68/17 +f 29/69/18 31/70/18 32/71/18 30/72/18 +f 31/73/19 33/74/19 34/75/19 32/76/19 +f 33/77/20 35/78/20 36/79/20 34/80/20 +f 35/81/21 37/82/21 38/83/21 36/84/21 +f 7/85/22 10/86/22 39/87/22 3/88/22 +f 10/89/23 12/90/23 40/91/23 39/92/23 +f 12/93/24 14/94/24 41/95/24 40/96/24 +f 14/97/25 16/98/25 42/99/25 41/100/25 +f 16/101/26 18/102/26 43/103/26 42/104/26 +f 18/105/27 20/106/27 44/107/27 43/108/27 +f 20/109/28 22/110/28 45/111/28 44/112/28 +f 22/113/29 24/114/29 46/115/29 45/116/29 +f 24/117/30 26/118/30 47/119/30 46/120/30 +f 26/121/31 28/122/31 48/123/31 47/124/31 +f 28/125/32 30/126/32 49/127/32 48/128/32 +f 30/129/33 32/130/33 50/131/33 49/132/33 +f 32/133/34 34/134/34 51/135/34 50/136/34 +f 34/137/35 36/138/35 52/139/35 51/140/35 +f 36/141/36 38/142/36 53/143/36 52/144/36 +f 3/145/37 39/146/37 54/147/37 1/148/37 +f 39/149/38 40/150/38 55/151/38 54/152/38 +f 40/153/39 41/154/39 56/155/39 55/156/39 +f 41/157/40 42/158/40 57/159/40 56/160/40 +f 42/161/41 43/162/41 58/163/41 57/164/41 +f 43/165/42 44/166/42 59/167/42 58/168/42 +f 44/169/43 45/170/43 60/171/43 59/172/43 +f 45/173/44 46/174/44 61/175/44 60/176/44 +f 46/177/45 47/178/45 62/179/45 61/180/45 +f 47/181/46 48/182/46 63/183/46 62/184/46 +f 48/185/47 49/186/47 64/187/47 63/188/47 +f 49/189/48 50/190/48 65/191/48 64/192/48 +f 50/193/49 51/194/49 66/195/49 65/196/49 +f 51/197/50 52/198/50 67/199/50 66/200/50 +f 52/201/51 53/202/51 68/203/51 67/204/51 +f 1/205/52 54/206/52 9/207/52 5/208/52 +f 54/209/53 55/210/53 11/211/53 9/212/53 +f 55/213/54 56/214/54 13/215/54 11/216/54 +f 56/217/55 57/218/55 15/219/55 13/220/55 +f 57/221/56 58/222/56 17/223/56 15/224/56 +f 58/225/57 59/226/57 19/227/57 17/228/57 +f 59/229/58 60/230/58 21/231/58 19/232/58 +f 60/233/59 61/234/59 23/235/59 21/236/59 +f 61/237/60 62/238/60 25/239/60 23/240/60 +f 62/241/61 63/242/61 27/243/61 25/244/61 +f 63/245/62 64/246/62 29/247/62 27/248/62 +f 64/249/63 65/250/63 31/251/63 29/252/63 +f 65/253/64 66/254/64 33/255/64 31/256/64 +f 66/257/65 67/258/65 35/259/65 33/260/65 +f 67/261/66 68/262/66 37/263/66 35/264/66 \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack10.mtl b/mods/leads/models/leads_lead_slack10.mtl new file mode 100644 index 00000000..23a8bc11 --- /dev/null +++ b/mods/leads/models/leads_lead_slack10.mtl @@ -0,0 +1,4 @@ +# Made in Blockbench 4.9.0 +newmtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +map_Kd leads_lead.png +newmtl none \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack10.obj b/mods/leads/models/leads_lead_slack10.obj new file mode 100644 index 00000000..a547de58 --- /dev/null +++ b/mods/leads/models/leads_lead_slack10.obj @@ -0,0 +1,469 @@ +# Made in Blockbench 4.9.0 +mtllib leads_lead_slack10.mtl + +o 10 +v 0.3125 0.3125 5 +v 0.3125 0.3125 -5 +v 0.3125 -0.3125 5 +v 0.3125 -0.3125 -5 +v -0.3125 0.3125 5 +v -0.3125 0.3125 -5 +v -0.3125 -0.3125 5 +v -0.3125 -0.3125 -5 +v -0.3125 -0.03623188405797097 4.375 +v -0.3125 -0.6612318840579712 4.375 +v -0.3125 -0.3152173913043478 3.75 +v -0.3125 -0.9402173913043477 3.75 +v -0.3125 -0.5244565217391305 3.125 +v -0.3125 -1.1494565217391317 3.125 +v -0.3125 -0.6639492753623188 2.5 +v -0.3125 -1.2889492753623166 2.5 +v -0.3125 -0.76856884057971 1.875 +v -0.3125 -1.3935688405797109 1.875 +v -0.3125 -0.8383152173913043 1.25 +v -0.3125 -1.4633152173913033 1.25 +v -0.3125 -0.8731884057971013 0.625 +v -0.3125 -1.4981884057971029 0.625 +v -0.3125 -0.8906249999999999 0 +v -0.3125 -1.5156250000000004 0 +v -0.3125 -0.8731884057971013 -0.625 +v -0.3125 -1.4981884057971029 -0.625 +v -0.3125 -0.8383152173913043 -1.25 +v -0.3125 -1.4633152173913033 -1.25 +v -0.3125 -0.76856884057971 -1.875 +v -0.3125 -1.3935688405797109 -1.875 +v -0.3125 -0.6639492753623188 -2.5 +v -0.3125 -1.2889492753623166 -2.5 +v -0.3125 -0.5244565217391305 -3.125 +v -0.3125 -1.1494565217391317 -3.125 +v -0.3125 -0.3152173913043478 -3.75 +v -0.3125 -0.9402173913043477 -3.75 +v -0.3125 -0.03623188405797097 -4.375 +v -0.3125 -0.6612318840579712 -4.375 +v 0.3125 -0.6612318840579712 4.375 +v 0.3125 -0.9402173913043477 3.75 +v 0.3125 -1.1494565217391317 3.125 +v 0.3125 -1.2889492753623166 2.5 +v 0.3125 -1.3935688405797109 1.875 +v 0.3125 -1.4633152173913033 1.25 +v 0.3125 -1.4981884057971029 0.625 +v 0.3125 -1.5156250000000004 0 +v 0.3125 -1.4981884057971029 -0.625 +v 0.3125 -1.4633152173913033 -1.25 +v 0.3125 -1.3935688405797109 -1.875 +v 0.3125 -1.2889492753623166 -2.5 +v 0.3125 -1.1494565217391317 -3.125 +v 0.3125 -0.9402173913043477 -3.75 +v 0.3125 -0.6612318840579712 -4.375 +v 0.3125 -0.03623188405797097 4.375 +v 0.3125 -0.3152173913043478 3.75 +v 0.3125 -0.5244565217391305 3.125 +v 0.3125 -0.6639492753623188 2.5 +v 0.3125 -0.76856884057971 1.875 +v 0.3125 -0.8383152173913043 1.25 +v 0.3125 -0.8731884057971013 0.625 +v 0.3125 -0.8906249999999999 0 +v 0.3125 -0.8731884057971013 -0.625 +v 0.3125 -0.8383152173913043 -1.25 +v 0.3125 -0.76856884057971 -1.875 +v 0.3125 -0.6639492753623188 -2.5 +v 0.3125 -0.5244565217391305 -3.125 +v 0.3125 -0.3152173913043478 -3.75 +v 0.3125 -0.03623188405797097 -4.375 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0 0 +vt 0.0625 0 +vt 0.06250000000000006 1 +vt 5.551115123125783e-17 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.0625 0 +vt 0.125 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 5.551115123125783e-17 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.37500000000000006 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.37500000000000006 1 +vt 0.31250000000000006 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.31250000000000006 1 +vt 0.25000000000000006 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25000000000000006 1 +vt 0.18750000000000006 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.18750000000000006 1 +vt 0.12500000000000006 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.12500000000000006 1 +vt 0.06250000000000006 1 +vt 0.0625 0 +vt 0.125 0 +vn 1 0 0 +vn -1 0 0 +vn 0 0.8732603221705998 0.48725394787779835 +vn 0 -0.8732603221705997 -0.4872539478777986 +vn 0 0 1 +vn 0 0 -1 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 -0.8732603221705997 0.4872539478777986 +vn 0 -0.9131554754946897 0.40761142964110736 +vn 0 -0.9482702003528958 0.3174643714224934 +vn 0 -0.9759869561619184 0.21782897282453867 +vn 0 -0.9862777823901936 0.1650943244435805 +vn 0 -0.993830926350846 0.11090577004204817 +vn 0 -0.9984469671078011 0.055710446715439205 +vn 0 -0.9996110624600758 0.027887699930949805 +vn 0 -0.9996110624600758 -0.027887699930949805 +vn 0 -0.9984469671078011 -0.055710446715439205 +vn 0 -0.993830926350846 -0.11090577004204817 +vn 0 -0.9862777823901936 -0.1650943244435805 +vn 0 -0.9759869561619184 -0.21782897282453867 +vn 0 -0.9482702003528958 -0.3174643714224934 +vn 0 -0.9131554754946897 -0.40761142964110736 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 0 0.8732603221705998 -0.48725394787779835 +vn 0 0.9131554754946895 -0.4076114296411078 +vn 0 0.9482702003528964 -0.31746437142249145 +vn 0 0.9759869561619173 -0.21782897282454386 +vn 0 0.9862777823901943 -0.1650943244435758 +vn 0 0.9938309263508456 -0.11090577004205099 +vn 0 0.9984469671078013 -0.05571044671543523 +vn 0 0.9996110624600758 -0.02788769993095136 +vn 0 0.9996110624600758 0.02788769993095136 +vn 0 0.9984469671078013 0.05571044671543523 +vn 0 0.9938309263508456 0.11090577004205099 +vn 0 0.9862777823901943 0.1650943244435758 +vn 0 0.9759869561619173 0.21782897282454386 +vn 0 0.9482702003528964 0.31746437142249145 +vn 0 0.9131554754946895 0.4076114296411078 +usemtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +f 2/1/1 68/2/1 53/3/1 4/4/1 +f 8/5/2 38/6/2 37/7/2 6/8/2 +f 6/9/3 37/10/3 68/11/3 2/12/3 +f 4/13/4 53/14/4 38/15/4 8/16/4 +f 3/17/5 1/18/5 5/19/5 7/20/5 +f 8/21/6 6/22/6 2/23/6 4/24/6 +f 5/25/7 9/26/7 10/27/7 7/28/7 +f 9/29/8 11/30/8 12/31/8 10/32/8 +f 11/33/9 13/34/9 14/35/9 12/36/9 +f 13/37/10 15/38/10 16/39/10 14/40/10 +f 15/41/11 17/42/11 18/43/11 16/44/11 +f 17/45/12 19/46/12 20/47/12 18/48/12 +f 19/49/13 21/50/13 22/51/13 20/52/13 +f 21/53/14 23/54/14 24/55/14 22/56/14 +f 23/57/15 25/58/15 26/59/15 24/60/15 +f 25/61/16 27/62/16 28/63/16 26/64/16 +f 27/65/17 29/66/17 30/67/17 28/68/17 +f 29/69/18 31/70/18 32/71/18 30/72/18 +f 31/73/19 33/74/19 34/75/19 32/76/19 +f 33/77/20 35/78/20 36/79/20 34/80/20 +f 35/81/21 37/82/21 38/83/21 36/84/21 +f 7/85/22 10/86/22 39/87/22 3/88/22 +f 10/89/23 12/90/23 40/91/23 39/92/23 +f 12/93/24 14/94/24 41/95/24 40/96/24 +f 14/97/25 16/98/25 42/99/25 41/100/25 +f 16/101/26 18/102/26 43/103/26 42/104/26 +f 18/105/27 20/106/27 44/107/27 43/108/27 +f 20/109/28 22/110/28 45/111/28 44/112/28 +f 22/113/29 24/114/29 46/115/29 45/116/29 +f 24/117/30 26/118/30 47/119/30 46/120/30 +f 26/121/31 28/122/31 48/123/31 47/124/31 +f 28/125/32 30/126/32 49/127/32 48/128/32 +f 30/129/33 32/130/33 50/131/33 49/132/33 +f 32/133/34 34/134/34 51/135/34 50/136/34 +f 34/137/35 36/138/35 52/139/35 51/140/35 +f 36/141/36 38/142/36 53/143/36 52/144/36 +f 3/145/37 39/146/37 54/147/37 1/148/37 +f 39/149/38 40/150/38 55/151/38 54/152/38 +f 40/153/39 41/154/39 56/155/39 55/156/39 +f 41/157/40 42/158/40 57/159/40 56/160/40 +f 42/161/41 43/162/41 58/163/41 57/164/41 +f 43/165/42 44/166/42 59/167/42 58/168/42 +f 44/169/43 45/170/43 60/171/43 59/172/43 +f 45/173/44 46/174/44 61/175/44 60/176/44 +f 46/177/45 47/178/45 62/179/45 61/180/45 +f 47/181/46 48/182/46 63/183/46 62/184/46 +f 48/185/47 49/186/47 64/187/47 63/188/47 +f 49/189/48 50/190/48 65/191/48 64/192/48 +f 50/193/49 51/194/49 66/195/49 65/196/49 +f 51/197/50 52/198/50 67/199/50 66/200/50 +f 52/201/51 53/202/51 68/203/51 67/204/51 +f 1/205/52 54/206/52 9/207/52 5/208/52 +f 54/209/53 55/210/53 11/211/53 9/212/53 +f 55/213/54 56/214/54 13/215/54 11/216/54 +f 56/217/55 57/218/55 15/219/55 13/220/55 +f 57/221/56 58/222/56 17/223/56 15/224/56 +f 58/225/57 59/226/57 19/227/57 17/228/57 +f 59/229/58 60/230/58 21/231/58 19/232/58 +f 60/233/59 61/234/59 23/235/59 21/236/59 +f 61/237/60 62/238/60 25/239/60 23/240/60 +f 62/241/61 63/242/61 27/243/61 25/244/61 +f 63/245/62 64/246/62 29/247/62 27/248/62 +f 64/249/63 65/250/63 31/251/63 29/252/63 +f 65/253/64 66/254/64 33/255/64 31/256/64 +f 66/257/65 67/258/65 35/259/65 33/260/65 +f 67/261/66 68/262/66 37/263/66 35/264/66 \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack11.mtl b/mods/leads/models/leads_lead_slack11.mtl new file mode 100644 index 00000000..23a8bc11 --- /dev/null +++ b/mods/leads/models/leads_lead_slack11.mtl @@ -0,0 +1,4 @@ +# Made in Blockbench 4.9.0 +newmtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +map_Kd leads_lead.png +newmtl none \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack11.obj b/mods/leads/models/leads_lead_slack11.obj new file mode 100644 index 00000000..c5f2b50a --- /dev/null +++ b/mods/leads/models/leads_lead_slack11.obj @@ -0,0 +1,469 @@ +# Made in Blockbench 4.9.0 +mtllib leads_lead_slack11.mtl + +o 11 +v 0.3125 0.3125 5 +v 0.3125 0.3125 -5 +v 0.3125 -0.3125 5 +v 0.3125 -0.3125 -5 +v -0.3125 0.3125 5 +v -0.3125 0.3125 -5 +v -0.3125 -0.3125 5 +v -0.3125 -0.3125 -5 +v -0.3125 -0.072463768115942 4.375 +v -0.3125 -0.6974637681159424 4.375 +v -0.3125 -0.3804347826086957 3.75 +v -0.3125 -1.0054347826086962 3.75 +v -0.3125 -0.611413043478261 3.125 +v -0.3125 -1.2364130434782616 3.125 +v -0.3125 -0.7653985507246377 2.5 +v -0.3125 -1.3903985507246341 2.5 +v -0.3125 -0.8808876811594202 1.875 +v -0.3125 -1.5058876811594213 1.875 +v -0.3125 -0.9578804347826086 1.25 +v -0.3125 -1.5828804347826075 1.25 +v -0.3125 -0.9963768115942029 0.625 +v -0.3125 -1.621376811594204 0.625 +v -0.3125 -1.015625 0 +v -0.3125 -1.640625 0 +v -0.3125 -0.9963768115942029 -0.625 +v -0.3125 -1.621376811594204 -0.625 +v -0.3125 -0.9578804347826086 -1.25 +v -0.3125 -1.5828804347826075 -1.25 +v -0.3125 -0.8808876811594202 -1.875 +v -0.3125 -1.5058876811594213 -1.875 +v -0.3125 -0.7653985507246377 -2.5 +v -0.3125 -1.3903985507246341 -2.5 +v -0.3125 -0.611413043478261 -3.125 +v -0.3125 -1.2364130434782616 -3.125 +v -0.3125 -0.3804347826086957 -3.75 +v -0.3125 -1.0054347826086962 -3.75 +v -0.3125 -0.072463768115942 -4.375 +v -0.3125 -0.6974637681159424 -4.375 +v 0.3125 -0.6974637681159424 4.375 +v 0.3125 -1.0054347826086962 3.75 +v 0.3125 -1.2364130434782616 3.125 +v 0.3125 -1.3903985507246341 2.5 +v 0.3125 -1.5058876811594213 1.875 +v 0.3125 -1.5828804347826075 1.25 +v 0.3125 -1.621376811594204 0.625 +v 0.3125 -1.640625 0 +v 0.3125 -1.621376811594204 -0.625 +v 0.3125 -1.5828804347826075 -1.25 +v 0.3125 -1.5058876811594213 -1.875 +v 0.3125 -1.3903985507246341 -2.5 +v 0.3125 -1.2364130434782616 -3.125 +v 0.3125 -1.0054347826086962 -3.75 +v 0.3125 -0.6974637681159424 -4.375 +v 0.3125 -0.072463768115942 4.375 +v 0.3125 -0.3804347826086957 3.75 +v 0.3125 -0.611413043478261 3.125 +v 0.3125 -0.7653985507246377 2.5 +v 0.3125 -0.8808876811594202 1.875 +v 0.3125 -0.9578804347826086 1.25 +v 0.3125 -0.9963768115942029 0.625 +v 0.3125 -1.015625 0 +v 0.3125 -0.9963768115942029 -0.625 +v 0.3125 -0.9578804347826086 -1.25 +v 0.3125 -0.8808876811594202 -1.875 +v 0.3125 -0.7653985507246377 -2.5 +v 0.3125 -0.611413043478261 -3.125 +v 0.3125 -0.3804347826086957 -3.75 +v 0.3125 -0.072463768115942 -4.375 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0 0 +vt 0.0625 0 +vt 0.06250000000000006 1 +vt 5.551115123125783e-17 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.0625 0 +vt 0.125 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 5.551115123125783e-17 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.37500000000000006 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.37500000000000006 1 +vt 0.31250000000000006 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.31250000000000006 1 +vt 0.25000000000000006 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25000000000000006 1 +vt 0.18750000000000006 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.18750000000000006 1 +vt 0.12500000000000006 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.12500000000000006 1 +vt 0.06250000000000006 1 +vt 0.0625 0 +vt 0.125 0 +vn 1 0 0 +vn -1 0 0 +vn 0 0.8514464050212137 0.5244416262811823 +vn 0 -0.8514464050212136 -0.5244416262811827 +vn 0 0 1 +vn 0 0 -1 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 -0.8514464050212136 0.5244416262811827 +vn 0 -0.8970121097452229 0.44200596712083484 +vn 0 -0.9379944988291135 0.34665014087162915 +vn 0 -0.9709646117278045 0.23922316520829295 +vn 0 -0.9833528099170955 0.1817064974846878 +vn 0 -0.9924975901253333 0.12226419588500141 +vn 0 -0.9981084575515975 0.06147769484919619 +vn 0 -0.9995261063469288 0.030782506898363815 +vn 0 -0.9995261063469288 -0.030782506898363815 +vn 0 -0.9981084575515975 -0.06147769484919619 +vn 0 -0.9924975901253333 -0.12226419588500141 +vn 0 -0.9833528099170955 -0.1817064974846878 +vn 0 -0.9709646117278045 -0.23922316520829295 +vn 0 -0.9379944988291135 -0.34665014087162915 +vn 0 -0.8970121097452229 -0.44200596712083484 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 0 0.8514464050212137 -0.5244416262811823 +vn 0 0.8970121097452229 -0.44200596712083456 +vn 0 0.9379944988291135 -0.346650140871629 +vn 0 0.9709646117278028 -0.23922316520829923 +vn 0 0.9833528099170967 -0.18170649748468062 +vn 0 0.9924975901253329 -0.12226419588500488 +vn 0 0.9981084575515977 -0.06147769484919266 +vn 0 0.9995261063469288 -0.030782506898365588 +vn 0 0.9995261063469288 0.030782506898365588 +vn 0 0.9981084575515977 0.06147769484919266 +vn 0 0.9924975901253329 0.12226419588500488 +vn 0 0.9833528099170967 0.18170649748468062 +vn 0 0.9709646117278028 0.23922316520829923 +vn 0 0.9379944988291135 0.346650140871629 +vn 0 0.8970121097452229 0.44200596712083456 +usemtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +f 2/1/1 68/2/1 53/3/1 4/4/1 +f 8/5/2 38/6/2 37/7/2 6/8/2 +f 6/9/3 37/10/3 68/11/3 2/12/3 +f 4/13/4 53/14/4 38/15/4 8/16/4 +f 3/17/5 1/18/5 5/19/5 7/20/5 +f 8/21/6 6/22/6 2/23/6 4/24/6 +f 5/25/7 9/26/7 10/27/7 7/28/7 +f 9/29/8 11/30/8 12/31/8 10/32/8 +f 11/33/9 13/34/9 14/35/9 12/36/9 +f 13/37/10 15/38/10 16/39/10 14/40/10 +f 15/41/11 17/42/11 18/43/11 16/44/11 +f 17/45/12 19/46/12 20/47/12 18/48/12 +f 19/49/13 21/50/13 22/51/13 20/52/13 +f 21/53/14 23/54/14 24/55/14 22/56/14 +f 23/57/15 25/58/15 26/59/15 24/60/15 +f 25/61/16 27/62/16 28/63/16 26/64/16 +f 27/65/17 29/66/17 30/67/17 28/68/17 +f 29/69/18 31/70/18 32/71/18 30/72/18 +f 31/73/19 33/74/19 34/75/19 32/76/19 +f 33/77/20 35/78/20 36/79/20 34/80/20 +f 35/81/21 37/82/21 38/83/21 36/84/21 +f 7/85/22 10/86/22 39/87/22 3/88/22 +f 10/89/23 12/90/23 40/91/23 39/92/23 +f 12/93/24 14/94/24 41/95/24 40/96/24 +f 14/97/25 16/98/25 42/99/25 41/100/25 +f 16/101/26 18/102/26 43/103/26 42/104/26 +f 18/105/27 20/106/27 44/107/27 43/108/27 +f 20/109/28 22/110/28 45/111/28 44/112/28 +f 22/113/29 24/114/29 46/115/29 45/116/29 +f 24/117/30 26/118/30 47/119/30 46/120/30 +f 26/121/31 28/122/31 48/123/31 47/124/31 +f 28/125/32 30/126/32 49/127/32 48/128/32 +f 30/129/33 32/130/33 50/131/33 49/132/33 +f 32/133/34 34/134/34 51/135/34 50/136/34 +f 34/137/35 36/138/35 52/139/35 51/140/35 +f 36/141/36 38/142/36 53/143/36 52/144/36 +f 3/145/37 39/146/37 54/147/37 1/148/37 +f 39/149/38 40/150/38 55/151/38 54/152/38 +f 40/153/39 41/154/39 56/155/39 55/156/39 +f 41/157/40 42/158/40 57/159/40 56/160/40 +f 42/161/41 43/162/41 58/163/41 57/164/41 +f 43/165/42 44/166/42 59/167/42 58/168/42 +f 44/169/43 45/170/43 60/171/43 59/172/43 +f 45/173/44 46/174/44 61/175/44 60/176/44 +f 46/177/45 47/178/45 62/179/45 61/180/45 +f 47/181/46 48/182/46 63/183/46 62/184/46 +f 48/185/47 49/186/47 64/187/47 63/188/47 +f 49/189/48 50/190/48 65/191/48 64/192/48 +f 50/193/49 51/194/49 66/195/49 65/196/49 +f 51/197/50 52/198/50 67/199/50 66/200/50 +f 52/201/51 53/202/51 68/203/51 67/204/51 +f 1/205/52 54/206/52 9/207/52 5/208/52 +f 54/209/53 55/210/53 11/211/53 9/212/53 +f 55/213/54 56/214/54 13/215/54 11/216/54 +f 56/217/55 57/218/55 15/219/55 13/220/55 +f 57/221/56 58/222/56 17/223/56 15/224/56 +f 58/225/57 59/226/57 19/227/57 17/228/57 +f 59/229/58 60/230/58 21/231/58 19/232/58 +f 60/233/59 61/234/59 23/235/59 21/236/59 +f 61/237/60 62/238/60 25/239/60 23/240/60 +f 62/241/61 63/242/61 27/243/61 25/244/61 +f 63/245/62 64/246/62 29/247/62 27/248/62 +f 64/249/63 65/250/63 31/251/63 29/252/63 +f 65/253/64 66/254/64 33/255/64 31/256/64 +f 66/257/65 67/258/65 35/259/65 33/260/65 +f 67/261/66 68/262/66 37/263/66 35/264/66 \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack12.mtl b/mods/leads/models/leads_lead_slack12.mtl new file mode 100644 index 00000000..23a8bc11 --- /dev/null +++ b/mods/leads/models/leads_lead_slack12.mtl @@ -0,0 +1,4 @@ +# Made in Blockbench 4.9.0 +newmtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +map_Kd leads_lead.png +newmtl none \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack12.obj b/mods/leads/models/leads_lead_slack12.obj new file mode 100644 index 00000000..51400000 --- /dev/null +++ b/mods/leads/models/leads_lead_slack12.obj @@ -0,0 +1,469 @@ +# Made in Blockbench 4.9.0 +mtllib leads_lead_slack12.mtl + +o 12 +v 0.3125 0.3125 5 +v 0.3125 0.3125 -5 +v 0.3125 -0.3125 5 +v 0.3125 -0.3125 -5 +v -0.3125 0.3125 5 +v -0.3125 0.3125 -5 +v -0.3125 -0.3125 5 +v -0.3125 -0.3125 -5 +v -0.3125 -0.10869565217391304 4.375 +v -0.3125 -0.7336956521739135 4.375 +v -0.3125 -0.44565217391304357 3.75 +v -0.3125 -1.0706521739130448 3.75 +v -0.3125 -0.6983695652173915 3.125 +v -0.3125 -1.3233695652173916 3.125 +v -0.3125 -0.8668478260869567 2.5 +v -0.3125 -1.4918478260869517 2.5 +v -0.3125 -0.9932065217391304 1.875 +v -0.3125 -1.6182065217391317 1.875 +v -0.3125 -1.077445652173913 1.25 +v -0.3125 -1.7024456521739117 1.25 +v -0.3125 -1.1195652173913047 0.625 +v -0.3125 -1.744565217391305 0.625 +v -0.3125 -1.140625 0 +v -0.3125 -1.7656249999999996 0 +v -0.3125 -1.1195652173913047 -0.625 +v -0.3125 -1.744565217391305 -0.625 +v -0.3125 -1.077445652173913 -1.25 +v -0.3125 -1.7024456521739117 -1.25 +v -0.3125 -0.9932065217391304 -1.875 +v -0.3125 -1.6182065217391317 -1.875 +v -0.3125 -0.8668478260869567 -2.5 +v -0.3125 -1.4918478260869517 -2.5 +v -0.3125 -0.6983695652173915 -3.125 +v -0.3125 -1.3233695652173916 -3.125 +v -0.3125 -0.44565217391304357 -3.75 +v -0.3125 -1.0706521739130448 -3.75 +v -0.3125 -0.10869565217391304 -4.375 +v -0.3125 -0.7336956521739135 -4.375 +v 0.3125 -0.7336956521739135 4.375 +v 0.3125 -1.0706521739130448 3.75 +v 0.3125 -1.3233695652173916 3.125 +v 0.3125 -1.4918478260869517 2.5 +v 0.3125 -1.6182065217391317 1.875 +v 0.3125 -1.7024456521739117 1.25 +v 0.3125 -1.744565217391305 0.625 +v 0.3125 -1.7656249999999996 0 +v 0.3125 -1.744565217391305 -0.625 +v 0.3125 -1.7024456521739117 -1.25 +v 0.3125 -1.6182065217391317 -1.875 +v 0.3125 -1.4918478260869517 -2.5 +v 0.3125 -1.3233695652173916 -3.125 +v 0.3125 -1.0706521739130448 -3.75 +v 0.3125 -0.7336956521739135 -4.375 +v 0.3125 -0.10869565217391304 4.375 +v 0.3125 -0.44565217391304357 3.75 +v 0.3125 -0.6983695652173915 3.125 +v 0.3125 -0.8668478260869567 2.5 +v 0.3125 -0.9932065217391304 1.875 +v 0.3125 -1.077445652173913 1.25 +v 0.3125 -1.1195652173913047 0.625 +v 0.3125 -1.140625 0 +v 0.3125 -1.1195652173913047 -0.625 +v 0.3125 -1.077445652173913 -1.25 +v 0.3125 -0.9932065217391304 -1.875 +v 0.3125 -0.8668478260869567 -2.5 +v 0.3125 -0.6983695652173915 -3.125 +v 0.3125 -0.44565217391304357 -3.75 +v 0.3125 -0.10869565217391304 -4.375 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0 0 +vt 0.0625 0 +vt 0.06250000000000006 1 +vt 5.551115123125783e-17 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.0625 0 +vt 0.125 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 5.551115123125783e-17 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.37500000000000006 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.37500000000000006 1 +vt 0.31250000000000006 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.31250000000000006 1 +vt 0.25000000000000006 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25000000000000006 1 +vt 0.18750000000000006 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.18750000000000006 1 +vt 0.12500000000000006 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.12500000000000006 1 +vt 0.06250000000000006 1 +vt 0.0625 0 +vt 0.125 0 +vn 1 0 0 +vn -1 0 0 +vn 0 0.8292664275911584 0.5588534620723024 +vn 0 -0.829266427591158 -0.5588534620723027 +vn 0 0 1 +vn 0 0 -1 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 -0.829266427591158 0.5588534620723027 +vn 0 -0.8802252067242207 0.47455619840784186 +vn 0 -0.9270802632050156 0.37486288903507 +vn 0 -0.9655346471988956 0.2602745570709987 +vn 0 -0.9801687656829663 0.19816455480113107 +vn 0 -0.991038736124258 0.1335747861732655 +vn 0 -0.9977369116493539 0.06723879187202494 +vn 0 -0.999432784477704 0.0336765394769642 +vn 0 -0.999432784477704 -0.0336765394769642 +vn 0 -0.9977369116493539 -0.06723879187202494 +vn 0 -0.991038736124258 -0.1335747861732655 +vn 0 -0.9801687656829663 -0.19816455480113107 +vn 0 -0.9655346471988956 -0.2602745570709987 +vn 0 -0.9270802632050156 -0.37486288903507 +vn 0 -0.8802252067242207 -0.47455619840784186 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 0 0.8292664275911584 -0.5588534620723024 +vn 0 0.8802252067242212 -0.4745561984078411 +vn 0 0.9270802632050149 -0.37486288903507137 +vn 0 0.9655346471988935 -0.26027455707100605 +vn 0 0.9801687656829682 -0.19816455480112144 +vn 0 0.9910387361242573 -0.1335747861732698 +vn 0 0.9977369116493541 -0.06723879187202185 +vn 0 0.9994327844777038 -0.033676539476965965 +vn 0 0.9994327844777038 0.033676539476965965 +vn 0 0.9977369116493541 0.06723879187202185 +vn 0 0.9910387361242573 0.1335747861732698 +vn 0 0.9801687656829682 0.19816455480112144 +vn 0 0.9655346471988935 0.26027455707100605 +vn 0 0.9270802632050149 0.37486288903507137 +vn 0 0.8802252067242212 0.4745561984078411 +usemtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +f 2/1/1 68/2/1 53/3/1 4/4/1 +f 8/5/2 38/6/2 37/7/2 6/8/2 +f 6/9/3 37/10/3 68/11/3 2/12/3 +f 4/13/4 53/14/4 38/15/4 8/16/4 +f 3/17/5 1/18/5 5/19/5 7/20/5 +f 8/21/6 6/22/6 2/23/6 4/24/6 +f 5/25/7 9/26/7 10/27/7 7/28/7 +f 9/29/8 11/30/8 12/31/8 10/32/8 +f 11/33/9 13/34/9 14/35/9 12/36/9 +f 13/37/10 15/38/10 16/39/10 14/40/10 +f 15/41/11 17/42/11 18/43/11 16/44/11 +f 17/45/12 19/46/12 20/47/12 18/48/12 +f 19/49/13 21/50/13 22/51/13 20/52/13 +f 21/53/14 23/54/14 24/55/14 22/56/14 +f 23/57/15 25/58/15 26/59/15 24/60/15 +f 25/61/16 27/62/16 28/63/16 26/64/16 +f 27/65/17 29/66/17 30/67/17 28/68/17 +f 29/69/18 31/70/18 32/71/18 30/72/18 +f 31/73/19 33/74/19 34/75/19 32/76/19 +f 33/77/20 35/78/20 36/79/20 34/80/20 +f 35/81/21 37/82/21 38/83/21 36/84/21 +f 7/85/22 10/86/22 39/87/22 3/88/22 +f 10/89/23 12/90/23 40/91/23 39/92/23 +f 12/93/24 14/94/24 41/95/24 40/96/24 +f 14/97/25 16/98/25 42/99/25 41/100/25 +f 16/101/26 18/102/26 43/103/26 42/104/26 +f 18/105/27 20/106/27 44/107/27 43/108/27 +f 20/109/28 22/110/28 45/111/28 44/112/28 +f 22/113/29 24/114/29 46/115/29 45/116/29 +f 24/117/30 26/118/30 47/119/30 46/120/30 +f 26/121/31 28/122/31 48/123/31 47/124/31 +f 28/125/32 30/126/32 49/127/32 48/128/32 +f 30/129/33 32/130/33 50/131/33 49/132/33 +f 32/133/34 34/134/34 51/135/34 50/136/34 +f 34/137/35 36/138/35 52/139/35 51/140/35 +f 36/141/36 38/142/36 53/143/36 52/144/36 +f 3/145/37 39/146/37 54/147/37 1/148/37 +f 39/149/38 40/150/38 55/151/38 54/152/38 +f 40/153/39 41/154/39 56/155/39 55/156/39 +f 41/157/40 42/158/40 57/159/40 56/160/40 +f 42/161/41 43/162/41 58/163/41 57/164/41 +f 43/165/42 44/166/42 59/167/42 58/168/42 +f 44/169/43 45/170/43 60/171/43 59/172/43 +f 45/173/44 46/174/44 61/175/44 60/176/44 +f 46/177/45 47/178/45 62/179/45 61/180/45 +f 47/181/46 48/182/46 63/183/46 62/184/46 +f 48/185/47 49/186/47 64/187/47 63/188/47 +f 49/189/48 50/190/48 65/191/48 64/192/48 +f 50/193/49 51/194/49 66/195/49 65/196/49 +f 51/197/50 52/198/50 67/199/50 66/200/50 +f 52/201/51 53/202/51 68/203/51 67/204/51 +f 1/205/52 54/206/52 9/207/52 5/208/52 +f 54/209/53 55/210/53 11/211/53 9/212/53 +f 55/213/54 56/214/54 13/215/54 11/216/54 +f 56/217/55 57/218/55 15/219/55 13/220/55 +f 57/221/56 58/222/56 17/223/56 15/224/56 +f 58/225/57 59/226/57 19/227/57 17/228/57 +f 59/229/58 60/230/58 21/231/58 19/232/58 +f 60/233/59 61/234/59 23/235/59 21/236/59 +f 61/237/60 62/238/60 25/239/60 23/240/60 +f 62/241/61 63/242/61 27/243/61 25/244/61 +f 63/245/62 64/246/62 29/247/62 27/248/62 +f 64/249/63 65/250/63 31/251/63 29/252/63 +f 65/253/64 66/254/64 33/255/64 31/256/64 +f 66/257/65 67/258/65 35/259/65 33/260/65 +f 67/261/66 68/262/66 37/263/66 35/264/66 \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack2.obj b/mods/leads/models/leads_lead_slack2.obj new file mode 100644 index 00000000..04ee8e13 --- /dev/null +++ b/mods/leads/models/leads_lead_slack2.obj @@ -0,0 +1,469 @@ +# Made in Blockbench 4.8.3 +mtllib leads_lead_slack2.mtl + +o cube +v 0.3125 0.3125 5 +v 0.3125 0.3125 -5 +v 0.3125 -0.3125 5 +v 0.3125 -0.3125 -5 +v -0.3125 0.3125 5 +v -0.3125 0.3125 -5 +v -0.3125 -0.3125 5 +v -0.3125 -0.3125 -5 +v -0.3125 0.2536231884057971 4.375 +v -0.3125 -0.3713768115942029 4.375 +v -0.3125 0.2065217391304348 3.75 +v -0.3125 -0.41847826086956696 3.75 +v -0.3125 0.17119565217391305 3.125 +v -0.3125 -0.45380434782609 3.125 +v -0.3125 0.14764492753623193 2.5 +v -0.3125 -0.47735507246376985 2.5 +v -0.3125 0.1299818840579711 1.875 +v -0.3125 -0.49501811594203193 1.875 +v -0.3125 0.11820652173913052 1.25 +v -0.3125 -0.5067934782608718 1.25 +v -0.3125 0.11231884057971021 0.625 +v -0.3125 -0.5126811594202929 0.625 +v -0.3125 0.10937500000000006 0 +v -0.3125 -0.515625000000004 0 +v -0.3125 0.11231884057971021 -0.625 +v -0.3125 -0.5126811594202929 -0.625 +v -0.3125 0.11820652173913052 -1.25 +v -0.3125 -0.5067934782608718 -1.25 +v -0.3125 0.1299818840579711 -1.875 +v -0.3125 -0.49501811594203193 -1.875 +v -0.3125 0.14764492753623193 -2.5 +v -0.3125 -0.47735507246376985 -2.5 +v -0.3125 0.17119565217391305 -3.125 +v -0.3125 -0.45380434782609 -3.125 +v -0.3125 0.2065217391304348 -3.75 +v -0.3125 -0.41847826086956696 -3.75 +v -0.3125 0.2536231884057971 -4.375 +v -0.3125 -0.3713768115942029 -4.375 +v 0.3125 -0.3713768115942029 4.375 +v 0.3125 -0.41847826086956696 3.75 +v 0.3125 -0.45380434782609 3.125 +v 0.3125 -0.47735507246376985 2.5 +v 0.3125 -0.49501811594203193 1.875 +v 0.3125 -0.5067934782608718 1.25 +v 0.3125 -0.5126811594202929 0.625 +v 0.3125 -0.515625000000004 0 +v 0.3125 -0.5126811594202929 -0.625 +v 0.3125 -0.5067934782608718 -1.25 +v 0.3125 -0.49501811594203193 -1.875 +v 0.3125 -0.47735507246376985 -2.5 +v 0.3125 -0.45380434782609 -3.125 +v 0.3125 -0.41847826086956696 -3.75 +v 0.3125 -0.3713768115942029 -4.375 +v 0.3125 0.2536231884057971 4.375 +v 0.3125 0.2065217391304348 3.75 +v 0.3125 0.17119565217391305 3.125 +v 0.3125 0.14764492753623193 2.5 +v 0.3125 0.1299818840579711 1.875 +v 0.3125 0.11820652173913052 1.25 +v 0.3125 0.11231884057971021 0.625 +v 0.3125 0.10937500000000006 0 +v 0.3125 0.11231884057971021 -0.625 +v 0.3125 0.11820652173913052 -1.25 +v 0.3125 0.1299818840579711 -1.875 +v 0.3125 0.14764492753623193 -2.5 +v 0.3125 0.17119565217391305 -3.125 +v 0.3125 0.2065217391304348 -3.75 +v 0.3125 0.2536231884057971 -4.375 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0 0 +vt 0.0625 0 +vt 0.06250000000000006 1 +vt 5.551115123125783e-17 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.0625 0 +vt 0.125 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 5.551115123125783e-17 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.37500000000000006 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.37500000000000006 1 +vt 0.31250000000000006 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.31250000000000006 1 +vt 0.25000000000000006 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25000000000000006 1 +vt 0.18750000000000006 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.18750000000000006 1 +vt 0.12500000000000006 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.12500000000000006 1 +vt 0.06250000000000006 1 +vt 0.0625 0 +vt 0.125 0 +vn 1 0 0 +vn -1 0 0 +vn 0 0.995592221935305 0.09378767308086206 +vn 0 -0.995592221935305 -0.09378767308086206 +vn 0 0 1 +vn 0 0 -1 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 -0.995592221935305 0.09378767308086206 +vn 0 -0.9971722996636108 0.07514921678624595 +vn 0 -0.9984064636492579 0.05643166968452539 +vn 0 -0.999290820230267 0.03765443670432676 +vn 0 -0.9996009006733184 0.028249590671204423 +vn 0 -0.9998225635148275 0.018837236703901476 +vn 0 -0.9999556320224742 0.009419871895865128 +vn 0 -0.9999889074519506 0.004710092680028812 +vn 0 -0.9999889074519506 -0.004710092680028812 +vn 0 -0.9999556320224742 -0.009419871895865128 +vn 0 -0.9998225635148275 -0.018837236703901476 +vn 0 -0.9996009006733184 -0.028249590671204423 +vn 0 -0.999290820230267 -0.03765443670432676 +vn 0 -0.9984064636492579 -0.05643166968452539 +vn 0 -0.9971722996636108 -0.07514921678624595 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 0 0.995592221935305 -0.09378767308086206 +vn 0 0.997172299663611 -0.07514921678624313 +vn 0 0.9984064636492579 -0.05643166968452328 +vn 0 0.999290820230267 -0.03765443670432887 +vn 0 0.9996009006733186 -0.028249590671202432 +vn 0 0.9998225635148275 -0.01883723670390253 +vn 0 0.9999556320224742 -0.009419871895863907 +vn 0 0.9999889074519506 -0.004710092680027313 +vn 0 0.9999889074519506 0.004710092680027313 +vn 0 0.9999556320224742 0.009419871895863907 +vn 0 0.9998225635148275 0.01883723670390253 +vn 0 0.9996009006733186 0.028249590671202432 +vn 0 0.999290820230267 0.03765443670432887 +vn 0 0.9984064636492579 0.05643166968452328 +vn 0 0.997172299663611 0.07514921678624313 +usemtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +f 2/1/1 68/2/1 53/3/1 4/4/1 +f 8/5/2 38/6/2 37/7/2 6/8/2 +f 6/9/3 37/10/3 68/11/3 2/12/3 +f 4/13/4 53/14/4 38/15/4 8/16/4 +f 3/17/5 1/18/5 5/19/5 7/20/5 +f 8/21/6 6/22/6 2/23/6 4/24/6 +f 5/25/7 9/26/7 10/27/7 7/28/7 +f 9/29/8 11/30/8 12/31/8 10/32/8 +f 11/33/9 13/34/9 14/35/9 12/36/9 +f 13/37/10 15/38/10 16/39/10 14/40/10 +f 15/41/11 17/42/11 18/43/11 16/44/11 +f 17/45/12 19/46/12 20/47/12 18/48/12 +f 19/49/13 21/50/13 22/51/13 20/52/13 +f 21/53/14 23/54/14 24/55/14 22/56/14 +f 23/57/15 25/58/15 26/59/15 24/60/15 +f 25/61/16 27/62/16 28/63/16 26/64/16 +f 27/65/17 29/66/17 30/67/17 28/68/17 +f 29/69/18 31/70/18 32/71/18 30/72/18 +f 31/73/19 33/74/19 34/75/19 32/76/19 +f 33/77/20 35/78/20 36/79/20 34/80/20 +f 35/81/21 37/82/21 38/83/21 36/84/21 +f 7/85/22 10/86/22 39/87/22 3/88/22 +f 10/89/23 12/90/23 40/91/23 39/92/23 +f 12/93/24 14/94/24 41/95/24 40/96/24 +f 14/97/25 16/98/25 42/99/25 41/100/25 +f 16/101/26 18/102/26 43/103/26 42/104/26 +f 18/105/27 20/106/27 44/107/27 43/108/27 +f 20/109/28 22/110/28 45/111/28 44/112/28 +f 22/113/29 24/114/29 46/115/29 45/116/29 +f 24/117/30 26/118/30 47/119/30 46/120/30 +f 26/121/31 28/122/31 48/123/31 47/124/31 +f 28/125/32 30/126/32 49/127/32 48/128/32 +f 30/129/33 32/130/33 50/131/33 49/132/33 +f 32/133/34 34/134/34 51/135/34 50/136/34 +f 34/137/35 36/138/35 52/139/35 51/140/35 +f 36/141/36 38/142/36 53/143/36 52/144/36 +f 3/145/37 39/146/37 54/147/37 1/148/37 +f 39/149/38 40/150/38 55/151/38 54/152/38 +f 40/153/39 41/154/39 56/155/39 55/156/39 +f 41/157/40 42/158/40 57/159/40 56/160/40 +f 42/161/41 43/162/41 58/163/41 57/164/41 +f 43/165/42 44/166/42 59/167/42 58/168/42 +f 44/169/43 45/170/43 60/171/43 59/172/43 +f 45/173/44 46/174/44 61/175/44 60/176/44 +f 46/177/45 47/178/45 62/179/45 61/180/45 +f 47/181/46 48/182/46 63/183/46 62/184/46 +f 48/185/47 49/186/47 64/187/47 63/188/47 +f 49/189/48 50/190/48 65/191/48 64/192/48 +f 50/193/49 51/194/49 66/195/49 65/196/49 +f 51/197/50 52/198/50 67/199/50 66/200/50 +f 52/201/51 53/202/51 68/203/51 67/204/51 +f 1/205/52 54/206/52 9/207/52 5/208/52 +f 54/209/53 55/210/53 11/211/53 9/212/53 +f 55/213/54 56/214/54 13/215/54 11/216/54 +f 56/217/55 57/218/55 15/219/55 13/220/55 +f 57/221/56 58/222/56 17/223/56 15/224/56 +f 58/225/57 59/226/57 19/227/57 17/228/57 +f 59/229/58 60/230/58 21/231/58 19/232/58 +f 60/233/59 61/234/59 23/235/59 21/236/59 +f 61/237/60 62/238/60 25/239/60 23/240/60 +f 62/241/61 63/242/61 27/243/61 25/244/61 +f 63/245/62 64/246/62 29/247/62 27/248/62 +f 64/249/63 65/250/63 31/251/63 29/252/63 +f 65/253/64 66/254/64 33/255/64 31/256/64 +f 66/257/65 67/258/65 35/259/65 33/260/65 +f 67/261/66 68/262/66 37/263/66 35/264/66 \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack3.obj b/mods/leads/models/leads_lead_slack3.obj new file mode 100644 index 00000000..c6032b14 --- /dev/null +++ b/mods/leads/models/leads_lead_slack3.obj @@ -0,0 +1,469 @@ +# Made in Blockbench 4.8.3 +mtllib leads_lead_slack3.mtl + +o cube +v 0.3125 0.3125 5 +v 0.3125 0.3125 -5 +v 0.3125 -0.3125 5 +v 0.3125 -0.3125 -5 +v -0.3125 0.3125 5 +v -0.3125 0.3125 -5 +v -0.3125 -0.3125 5 +v -0.3125 -0.3125 -5 +v -0.3125 0.2173913043478261 4.375 +v -0.3125 -0.40760869565217406 4.375 +v -0.3125 0.14130434782608697 3.75 +v -0.3125 -0.4836956521739155 3.75 +v -0.3125 0.08423913043478261 3.125 +v -0.3125 -0.54076086956522 3.125 +v -0.3125 0.046195652173913054 2.5 +v -0.3125 -0.5788043478260885 2.5 +v -0.3125 0.01766304347826094 1.875 +v -0.3125 -0.6073369565217412 1.875 +v -0.3125 -0.0013586956521738358 1.25 +v -0.3125 -0.626358695652175 1.25 +v -0.3125 -0.010869565217391242 0.625 +v -0.3125 -0.635869565217394 0.625 +v -0.3125 -0.015624999999999944 0 +v -0.3125 -0.6406250000000036 0 +v -0.3125 -0.010869565217391242 -0.625 +v -0.3125 -0.635869565217394 -0.625 +v -0.3125 -0.0013586956521738358 -1.25 +v -0.3125 -0.626358695652175 -1.25 +v -0.3125 0.01766304347826094 -1.875 +v -0.3125 -0.6073369565217412 -1.875 +v -0.3125 0.046195652173913054 -2.5 +v -0.3125 -0.5788043478260885 -2.5 +v -0.3125 0.08423913043478261 -3.125 +v -0.3125 -0.54076086956522 -3.125 +v -0.3125 0.14130434782608697 -3.75 +v -0.3125 -0.4836956521739155 -3.75 +v -0.3125 0.2173913043478261 -4.375 +v -0.3125 -0.40760869565217406 -4.375 +v 0.3125 -0.40760869565217406 4.375 +v 0.3125 -0.4836956521739155 3.75 +v 0.3125 -0.54076086956522 3.125 +v 0.3125 -0.5788043478260885 2.5 +v 0.3125 -0.6073369565217412 1.875 +v 0.3125 -0.626358695652175 1.25 +v 0.3125 -0.635869565217394 0.625 +v 0.3125 -0.6406250000000036 0 +v 0.3125 -0.635869565217394 -0.625 +v 0.3125 -0.626358695652175 -1.25 +v 0.3125 -0.6073369565217412 -1.875 +v 0.3125 -0.5788043478260885 -2.5 +v 0.3125 -0.54076086956522 -3.125 +v 0.3125 -0.4836956521739155 -3.75 +v 0.3125 -0.40760869565217406 -4.375 +v 0.3125 0.2173913043478261 4.375 +v 0.3125 0.14130434782608697 3.75 +v 0.3125 0.08423913043478261 3.125 +v 0.3125 0.046195652173913054 2.5 +v 0.3125 0.01766304347826094 1.875 +v 0.3125 -0.0013586956521738358 1.25 +v 0.3125 -0.010869565217391242 0.625 +v 0.3125 -0.015624999999999944 0 +v 0.3125 -0.010869565217391242 -0.625 +v 0.3125 -0.0013586956521738358 -1.25 +v 0.3125 0.01766304347826094 -1.875 +v 0.3125 0.046195652173913054 -2.5 +v 0.3125 0.08423913043478261 -3.125 +v 0.3125 0.14130434782608697 -3.75 +v 0.3125 0.2173913043478261 -4.375 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0 0 +vt 0.0625 0 +vt 0.06250000000000006 1 +vt 5.551115123125783e-17 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.0625 0 +vt 0.125 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 5.551115123125783e-17 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.37500000000000006 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.37500000000000006 1 +vt 0.31250000000000006 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.31250000000000006 1 +vt 0.25000000000000006 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25000000000000006 1 +vt 0.18750000000000006 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.18750000000000006 1 +vt 0.12500000000000006 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.12500000000000006 1 +vt 0.06250000000000006 1 +vt 0.0625 0 +vt 0.125 0 +vn 1 0 0 +vn -1 0 0 +vn 0 0.9886188373396116 0.1504419969864626 +vn 0 -0.9886188373396114 -0.15044199698646285 +vn 0 0 1 +vn 0 0 -1 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 -0.9886188373396114 0.15044199698646285 +vn 0 -0.992671154592933 0.12084692316783903 +vn 0 -0.9958576396563775 0.09092613231645198 +vn 0 -0.9981525800951077 0.06075711357100487 +vn 0 -0.9989595655198498 0.04560467581721149 +vn 0 -0.9995371835008333 0.030420696889154067 +vn 0 -0.9998842356061407 0.015215629672270047 +vn 0 -0.9999710551319929 0.007608475419483899 +vn 0 -0.9999710551319929 -0.007608475419483899 +vn 0 -0.9998842356061407 -0.015215629672270047 +vn 0 -0.9995371835008333 -0.030420696889154067 +vn 0 -0.9989595655198498 -0.04560467581721149 +vn 0 -0.9981525800951077 -0.06075711357100487 +vn 0 -0.9958576396563775 -0.09092613231645198 +vn 0 -0.992671154592933 -0.12084692316783903 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 0 0.9886188373396116 -0.1504419969864626 +vn 0 0.9926711545929334 -0.1208469231678354 +vn 0 0.9958576396563775 -0.09092613231645189 +vn 0 0.9981525800951074 -0.06075711357100652 +vn 0 0.99895956551985 -0.04560467581721044 +vn 0 0.9995371835008331 -0.03042069688915578 +vn 0 0.9998842356061409 -0.015215629672267385 +vn 0 0.9999710551319929 -0.007608475419482567 +vn 0 0.9999710551319929 0.007608475419482567 +vn 0 0.9998842356061409 0.015215629672267385 +vn 0 0.9995371835008331 0.03042069688915578 +vn 0 0.99895956551985 0.04560467581721044 +vn 0 0.9981525800951074 0.06075711357100652 +vn 0 0.9958576396563775 0.09092613231645189 +vn 0 0.9926711545929334 0.1208469231678354 +usemtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +f 2/1/1 68/2/1 53/3/1 4/4/1 +f 8/5/2 38/6/2 37/7/2 6/8/2 +f 6/9/3 37/10/3 68/11/3 2/12/3 +f 4/13/4 53/14/4 38/15/4 8/16/4 +f 3/17/5 1/18/5 5/19/5 7/20/5 +f 8/21/6 6/22/6 2/23/6 4/24/6 +f 5/25/7 9/26/7 10/27/7 7/28/7 +f 9/29/8 11/30/8 12/31/8 10/32/8 +f 11/33/9 13/34/9 14/35/9 12/36/9 +f 13/37/10 15/38/10 16/39/10 14/40/10 +f 15/41/11 17/42/11 18/43/11 16/44/11 +f 17/45/12 19/46/12 20/47/12 18/48/12 +f 19/49/13 21/50/13 22/51/13 20/52/13 +f 21/53/14 23/54/14 24/55/14 22/56/14 +f 23/57/15 25/58/15 26/59/15 24/60/15 +f 25/61/16 27/62/16 28/63/16 26/64/16 +f 27/65/17 29/66/17 30/67/17 28/68/17 +f 29/69/18 31/70/18 32/71/18 30/72/18 +f 31/73/19 33/74/19 34/75/19 32/76/19 +f 33/77/20 35/78/20 36/79/20 34/80/20 +f 35/81/21 37/82/21 38/83/21 36/84/21 +f 7/85/22 10/86/22 39/87/22 3/88/22 +f 10/89/23 12/90/23 40/91/23 39/92/23 +f 12/93/24 14/94/24 41/95/24 40/96/24 +f 14/97/25 16/98/25 42/99/25 41/100/25 +f 16/101/26 18/102/26 43/103/26 42/104/26 +f 18/105/27 20/106/27 44/107/27 43/108/27 +f 20/109/28 22/110/28 45/111/28 44/112/28 +f 22/113/29 24/114/29 46/115/29 45/116/29 +f 24/117/30 26/118/30 47/119/30 46/120/30 +f 26/121/31 28/122/31 48/123/31 47/124/31 +f 28/125/32 30/126/32 49/127/32 48/128/32 +f 30/129/33 32/130/33 50/131/33 49/132/33 +f 32/133/34 34/134/34 51/135/34 50/136/34 +f 34/137/35 36/138/35 52/139/35 51/140/35 +f 36/141/36 38/142/36 53/143/36 52/144/36 +f 3/145/37 39/146/37 54/147/37 1/148/37 +f 39/149/38 40/150/38 55/151/38 54/152/38 +f 40/153/39 41/154/39 56/155/39 55/156/39 +f 41/157/40 42/158/40 57/159/40 56/160/40 +f 42/161/41 43/162/41 58/163/41 57/164/41 +f 43/165/42 44/166/42 59/167/42 58/168/42 +f 44/169/43 45/170/43 60/171/43 59/172/43 +f 45/173/44 46/174/44 61/175/44 60/176/44 +f 46/177/45 47/178/45 62/179/45 61/180/45 +f 47/181/46 48/182/46 63/183/46 62/184/46 +f 48/185/47 49/186/47 64/187/47 63/188/47 +f 49/189/48 50/190/48 65/191/48 64/192/48 +f 50/193/49 51/194/49 66/195/49 65/196/49 +f 51/197/50 52/198/50 67/199/50 66/200/50 +f 52/201/51 53/202/51 68/203/51 67/204/51 +f 1/205/52 54/206/52 9/207/52 5/208/52 +f 54/209/53 55/210/53 11/211/53 9/212/53 +f 55/213/54 56/214/54 13/215/54 11/216/54 +f 56/217/55 57/218/55 15/219/55 13/220/55 +f 57/221/56 58/222/56 17/223/56 15/224/56 +f 58/225/57 59/226/57 19/227/57 17/228/57 +f 59/229/58 60/230/58 21/231/58 19/232/58 +f 60/233/59 61/234/59 23/235/59 21/236/59 +f 61/237/60 62/238/60 25/239/60 23/240/60 +f 62/241/61 63/242/61 27/243/61 25/244/61 +f 63/245/62 64/246/62 29/247/62 27/248/62 +f 64/249/63 65/250/63 31/251/63 29/252/63 +f 65/253/64 66/254/64 33/255/64 31/256/64 +f 66/257/65 67/258/65 35/259/65 33/260/65 +f 67/261/66 68/262/66 37/263/66 35/264/66 \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack4.obj b/mods/leads/models/leads_lead_slack4.obj new file mode 100644 index 00000000..9d5f3ad1 --- /dev/null +++ b/mods/leads/models/leads_lead_slack4.obj @@ -0,0 +1,469 @@ +# Made in Blockbench 4.8.3 +mtllib leads_lead_slack4.mtl + +o cube +v 0.3125 0.3125 5 +v 0.3125 0.3125 -5 +v 0.3125 -0.3125 5 +v 0.3125 -0.3125 -5 +v -0.3125 0.3125 5 +v -0.3125 0.3125 -5 +v -0.3125 -0.3125 5 +v -0.3125 -0.3125 -5 +v -0.3125 0.1811594202898551 4.375 +v -0.3125 -0.4438405797101441 4.375 +v -0.3125 0.07608695652173918 3.75 +v -0.3125 -0.548913043478263 3.75 +v -0.3125 -0.0027173913043478104 3.125 +v -0.3125 -0.6277173913043499 3.125 +v -0.3125 -0.05525362318840578 2.5 +v -0.3125 -0.6802536231884071 2.5 +v -0.3125 -0.09465579710144917 1.875 +v -0.3125 -0.7196557971014506 1.875 +v -0.3125 -0.12092391304347819 1.25 +v -0.3125 -0.7459239130434792 1.25 +v -0.3125 -0.13405797101449263 0.625 +v -0.3125 -0.7590579710144951 0.625 +v -0.3125 -0.14062499999999992 0 +v -0.3125 -0.7656250000000031 0 +v -0.3125 -0.13405797101449263 -0.625 +v -0.3125 -0.7590579710144951 -0.625 +v -0.3125 -0.12092391304347819 -1.25 +v -0.3125 -0.7459239130434792 -1.25 +v -0.3125 -0.09465579710144917 -1.875 +v -0.3125 -0.7196557971014506 -1.875 +v -0.3125 -0.05525362318840578 -2.5 +v -0.3125 -0.6802536231884071 -2.5 +v -0.3125 -0.0027173913043478104 -3.125 +v -0.3125 -0.6277173913043499 -3.125 +v -0.3125 0.07608695652173918 -3.75 +v -0.3125 -0.548913043478263 -3.75 +v -0.3125 0.1811594202898551 -4.375 +v -0.3125 -0.4438405797101441 -4.375 +v 0.3125 -0.4438405797101441 4.375 +v 0.3125 -0.548913043478263 3.75 +v 0.3125 -0.6277173913043499 3.125 +v 0.3125 -0.6802536231884071 2.5 +v 0.3125 -0.7196557971014506 1.875 +v 0.3125 -0.7459239130434792 1.25 +v 0.3125 -0.7590579710144951 0.625 +v 0.3125 -0.7656250000000031 0 +v 0.3125 -0.7590579710144951 -0.625 +v 0.3125 -0.7459239130434792 -1.25 +v 0.3125 -0.7196557971014506 -1.875 +v 0.3125 -0.6802536231884071 -2.5 +v 0.3125 -0.6277173913043499 -3.125 +v 0.3125 -0.548913043478263 -3.75 +v 0.3125 -0.4438405797101441 -4.375 +v 0.3125 0.1811594202898551 4.375 +v 0.3125 0.07608695652173918 3.75 +v 0.3125 -0.0027173913043478104 3.125 +v 0.3125 -0.05525362318840578 2.5 +v 0.3125 -0.09465579710144917 1.875 +v 0.3125 -0.12092391304347819 1.25 +v 0.3125 -0.13405797101449263 0.625 +v 0.3125 -0.14062499999999992 0 +v 0.3125 -0.13405797101449263 -0.625 +v 0.3125 -0.12092391304347819 -1.25 +v 0.3125 -0.09465579710144917 -1.875 +v 0.3125 -0.05525362318840578 -2.5 +v 0.3125 -0.0027173913043478104 -3.125 +v 0.3125 0.07608695652173918 -3.75 +v 0.3125 0.1811594202898551 -4.375 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0 0 +vt 0.0625 0 +vt 0.06250000000000006 1 +vt 5.551115123125783e-17 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.0625 0 +vt 0.125 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 5.551115123125783e-17 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.37500000000000006 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.37500000000000006 1 +vt 0.31250000000000006 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.31250000000000006 1 +vt 0.25000000000000006 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25000000000000006 1 +vt 0.18750000000000006 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.18750000000000006 1 +vt 0.12500000000000006 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.12500000000000006 1 +vt 0.06250000000000006 1 +vt 0.0625 0 +vt 0.125 0 +vn 1 0 0 +vn -1 0 0 +vn 0 0.9786249609434372 0.20565307150260628 +vn 0 -0.9786249609434374 -0.20565307150260514 +vn 0 0 1 +vn 0 0 -1 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 -0.9786249609434374 0.20565307150260514 +vn 0 -0.986161178363107 0.16578941549293272 +vn 0 -0.9921445802161726 0.1250964905489956 +vn 0 -0.9964857409645524 0.08376256953035247 +vn 0 -0.998018664057411 0.06291856795144544 +vn 0 -0.9991179505793901 0.04199191386493028 +vn 0 -0.9997792686521608 0.02100985419631588 +vn 0 -0.9999448034571123 0.010506666413137505 +vn 0 -0.9999448034571123 -0.010506666413137505 +vn 0 -0.9997792686521608 -0.02100985419631588 +vn 0 -0.9991179505793901 -0.04199191386493028 +vn 0 -0.998018664057411 -0.06291856795144544 +vn 0 -0.9964857409645524 -0.08376256953035247 +vn 0 -0.9921445802161726 -0.1250964905489956 +vn 0 -0.986161178363107 -0.16578941549293272 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 0 0.9786249609434372 -0.20565307150260628 +vn 0 0.9861611783631079 -0.16578941549292828 +vn 0 0.9921445802161726 -0.12509649054899571 +vn 0 0.9964857409645522 -0.08376256953035366 +vn 0 0.998018664057411 -0.06291856795144533 +vn 0 0.9991179505793899 -0.04199191386493094 +vn 0 0.9997792686521608 -0.021009854196313443 +vn 0 0.9999448034571123 -0.010506666413136394 +vn 0 0.9999448034571123 0.010506666413136394 +vn 0 0.9997792686521608 0.021009854196313443 +vn 0 0.9991179505793899 0.04199191386493094 +vn 0 0.998018664057411 0.06291856795144533 +vn 0 0.9964857409645522 0.08376256953035366 +vn 0 0.9921445802161726 0.12509649054899571 +vn 0 0.9861611783631079 0.16578941549292828 +usemtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +f 2/1/1 68/2/1 53/3/1 4/4/1 +f 8/5/2 38/6/2 37/7/2 6/8/2 +f 6/9/3 37/10/3 68/11/3 2/12/3 +f 4/13/4 53/14/4 38/15/4 8/16/4 +f 3/17/5 1/18/5 5/19/5 7/20/5 +f 8/21/6 6/22/6 2/23/6 4/24/6 +f 5/25/7 9/26/7 10/27/7 7/28/7 +f 9/29/8 11/30/8 12/31/8 10/32/8 +f 11/33/9 13/34/9 14/35/9 12/36/9 +f 13/37/10 15/38/10 16/39/10 14/40/10 +f 15/41/11 17/42/11 18/43/11 16/44/11 +f 17/45/12 19/46/12 20/47/12 18/48/12 +f 19/49/13 21/50/13 22/51/13 20/52/13 +f 21/53/14 23/54/14 24/55/14 22/56/14 +f 23/57/15 25/58/15 26/59/15 24/60/15 +f 25/61/16 27/62/16 28/63/16 26/64/16 +f 27/65/17 29/66/17 30/67/17 28/68/17 +f 29/69/18 31/70/18 32/71/18 30/72/18 +f 31/73/19 33/74/19 34/75/19 32/76/19 +f 33/77/20 35/78/20 36/79/20 34/80/20 +f 35/81/21 37/82/21 38/83/21 36/84/21 +f 7/85/22 10/86/22 39/87/22 3/88/22 +f 10/89/23 12/90/23 40/91/23 39/92/23 +f 12/93/24 14/94/24 41/95/24 40/96/24 +f 14/97/25 16/98/25 42/99/25 41/100/25 +f 16/101/26 18/102/26 43/103/26 42/104/26 +f 18/105/27 20/106/27 44/107/27 43/108/27 +f 20/109/28 22/110/28 45/111/28 44/112/28 +f 22/113/29 24/114/29 46/115/29 45/116/29 +f 24/117/30 26/118/30 47/119/30 46/120/30 +f 26/121/31 28/122/31 48/123/31 47/124/31 +f 28/125/32 30/126/32 49/127/32 48/128/32 +f 30/129/33 32/130/33 50/131/33 49/132/33 +f 32/133/34 34/134/34 51/135/34 50/136/34 +f 34/137/35 36/138/35 52/139/35 51/140/35 +f 36/141/36 38/142/36 53/143/36 52/144/36 +f 3/145/37 39/146/37 54/147/37 1/148/37 +f 39/149/38 40/150/38 55/151/38 54/152/38 +f 40/153/39 41/154/39 56/155/39 55/156/39 +f 41/157/40 42/158/40 57/159/40 56/160/40 +f 42/161/41 43/162/41 58/163/41 57/164/41 +f 43/165/42 44/166/42 59/167/42 58/168/42 +f 44/169/43 45/170/43 60/171/43 59/172/43 +f 45/173/44 46/174/44 61/175/44 60/176/44 +f 46/177/45 47/178/45 62/179/45 61/180/45 +f 47/181/46 48/182/46 63/183/46 62/184/46 +f 48/185/47 49/186/47 64/187/47 63/188/47 +f 49/189/48 50/190/48 65/191/48 64/192/48 +f 50/193/49 51/194/49 66/195/49 65/196/49 +f 51/197/50 52/198/50 67/199/50 66/200/50 +f 52/201/51 53/202/51 68/203/51 67/204/51 +f 1/205/52 54/206/52 9/207/52 5/208/52 +f 54/209/53 55/210/53 11/211/53 9/212/53 +f 55/213/54 56/214/54 13/215/54 11/216/54 +f 56/217/55 57/218/55 15/219/55 13/220/55 +f 57/221/56 58/222/56 17/223/56 15/224/56 +f 58/225/57 59/226/57 19/227/57 17/228/57 +f 59/229/58 60/230/58 21/231/58 19/232/58 +f 60/233/59 61/234/59 23/235/59 21/236/59 +f 61/237/60 62/238/60 25/239/60 23/240/60 +f 62/241/61 63/242/61 27/243/61 25/244/61 +f 63/245/62 64/246/62 29/247/62 27/248/62 +f 64/249/63 65/250/63 31/251/63 29/252/63 +f 65/253/64 66/254/64 33/255/64 31/256/64 +f 66/257/65 67/258/65 35/259/65 33/260/65 +f 67/261/66 68/262/66 37/263/66 35/264/66 \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack5.obj b/mods/leads/models/leads_lead_slack5.obj new file mode 100644 index 00000000..f4928864 --- /dev/null +++ b/mods/leads/models/leads_lead_slack5.obj @@ -0,0 +1,469 @@ +# Made in Blockbench 4.8.3 +mtllib leads_lead_slack5.mtl + +o cube +v 0.3125 0.3125 5 +v 0.3125 0.3125 -5 +v 0.3125 -0.3125 5 +v 0.3125 -0.3125 -5 +v -0.3125 0.3125 5 +v -0.3125 0.3125 -5 +v -0.3125 -0.3125 5 +v -0.3125 -0.3125 -5 +v -0.3125 0.1449275362318841 4.375 +v -0.3125 -0.4800724637681153 4.375 +v -0.3125 0.010869565217391346 3.75 +v -0.3125 -0.6141304347826104 3.75 +v -0.3125 -0.08967391304347823 3.125 +v -0.3125 -0.7146739130434798 3.125 +v -0.3125 -0.1567028985507246 2.5 +v -0.3125 -0.7817028985507257 2.5 +v -0.3125 -0.2069746376811593 1.875 +v -0.3125 -0.8319746376811599 1.875 +v -0.3125 -0.24048913043478254 1.25 +v -0.3125 -0.8654891304347834 1.25 +v -0.3125 -0.25724637681159407 0.625 +v -0.3125 -0.8822463768115962 0.625 +v -0.3125 -0.2656249999999999 0 +v -0.3125 -0.8906250000000027 0 +v -0.3125 -0.25724637681159407 -0.625 +v -0.3125 -0.8822463768115962 -0.625 +v -0.3125 -0.24048913043478254 -1.25 +v -0.3125 -0.8654891304347834 -1.25 +v -0.3125 -0.2069746376811593 -1.875 +v -0.3125 -0.8319746376811599 -1.875 +v -0.3125 -0.1567028985507246 -2.5 +v -0.3125 -0.7817028985507257 -2.5 +v -0.3125 -0.08967391304347823 -3.125 +v -0.3125 -0.7146739130434798 -3.125 +v -0.3125 0.010869565217391346 -3.75 +v -0.3125 -0.6141304347826104 -3.75 +v -0.3125 0.1449275362318841 -4.375 +v -0.3125 -0.4800724637681153 -4.375 +v 0.3125 -0.4800724637681153 4.375 +v 0.3125 -0.6141304347826104 3.75 +v 0.3125 -0.7146739130434798 3.125 +v 0.3125 -0.7817028985507257 2.5 +v 0.3125 -0.8319746376811599 1.875 +v 0.3125 -0.8654891304347834 1.25 +v 0.3125 -0.8822463768115962 0.625 +v 0.3125 -0.8906250000000027 0 +v 0.3125 -0.8822463768115962 -0.625 +v 0.3125 -0.8654891304347834 -1.25 +v 0.3125 -0.8319746376811599 -1.875 +v 0.3125 -0.7817028985507257 -2.5 +v 0.3125 -0.7146739130434798 -3.125 +v 0.3125 -0.6141304347826104 -3.75 +v 0.3125 -0.4800724637681153 -4.375 +v 0.3125 0.1449275362318841 4.375 +v 0.3125 0.010869565217391346 3.75 +v 0.3125 -0.08967391304347823 3.125 +v 0.3125 -0.1567028985507246 2.5 +v 0.3125 -0.2069746376811593 1.875 +v 0.3125 -0.24048913043478254 1.25 +v 0.3125 -0.25724637681159407 0.625 +v 0.3125 -0.2656249999999999 0 +v 0.3125 -0.25724637681159407 -0.625 +v 0.3125 -0.24048913043478254 -1.25 +v 0.3125 -0.2069746376811593 -1.875 +v 0.3125 -0.1567028985507246 -2.5 +v 0.3125 -0.08967391304347823 -3.125 +v 0.3125 0.010869565217391346 -3.75 +v 0.3125 0.1449275362318841 -4.375 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0 0 +vt 0.0625 0 +vt 0.06250000000000006 1 +vt 5.551115123125783e-17 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.0625 0 +vt 0.125 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 5.551115123125783e-17 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.37500000000000006 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.37500000000000006 1 +vt 0.31250000000000006 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.31250000000000006 1 +vt 0.25000000000000006 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25000000000000006 1 +vt 0.18750000000000006 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.18750000000000006 1 +vt 0.12500000000000006 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.12500000000000006 1 +vt 0.06250000000000006 1 +vt 0.0625 0 +vt 0.125 0 +vn 1 0 0 +vn -1 0 0 +vn 0 0.9658855493432027 0.2589693139543369 +vn 0 -0.9658855493432028 -0.258969313954336 +vn 0 0 1 +vn 0 0 -1 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 -0.9658855493432028 0.258969313954336 +vn 0 -0.977760920439559 0.20972263221022797 +vn 0 -0.987306341485171 0.15882754189109247 +vn 0 -0.9942982457217026 0.10663488432377603 +vn 0 -0.9967807353668278 0.08017584175776557 +vn 0 -0.9985653699934954 0.053546258970666206 +vn 0 -0.9996407628778761 0.026801962482959577 +vn 0 -0.9999101544118326 0.013404592649724857 +vn 0 -0.9999101544118326 -0.013404592649724857 +vn 0 -0.9996407628778761 -0.026801962482959577 +vn 0 -0.9985653699934954 -0.053546258970666206 +vn 0 -0.9967807353668278 -0.08017584175776557 +vn 0 -0.9942982457217026 -0.10663488432377603 +vn 0 -0.987306341485171 -0.15882754189109247 +vn 0 -0.977760920439559 -0.20972263221022797 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 0 0.9658855493432027 -0.2589693139543369 +vn 0 0.9777609204395599 -0.20972263221022439 +vn 0 0.987306341485171 -0.15882754189109274 +vn 0 0.9942982457217023 -0.10663488432377678 +vn 0 0.9967807353668278 -0.08017584175776644 +vn 0 0.9985653699934954 -0.05354625897066576 +vn 0 0.9996407628778763 -0.026801962482957475 +vn 0 0.9999101544118328 -0.013404592649723861 +vn 0 0.9999101544118328 0.013404592649723861 +vn 0 0.9996407628778763 0.026801962482957475 +vn 0 0.9985653699934954 0.05354625897066576 +vn 0 0.9967807353668278 0.08017584175776644 +vn 0 0.9942982457217023 0.10663488432377678 +vn 0 0.987306341485171 0.15882754189109274 +vn 0 0.9777609204395599 0.20972263221022439 +usemtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +f 2/1/1 68/2/1 53/3/1 4/4/1 +f 8/5/2 38/6/2 37/7/2 6/8/2 +f 6/9/3 37/10/3 68/11/3 2/12/3 +f 4/13/4 53/14/4 38/15/4 8/16/4 +f 3/17/5 1/18/5 5/19/5 7/20/5 +f 8/21/6 6/22/6 2/23/6 4/24/6 +f 5/25/7 9/26/7 10/27/7 7/28/7 +f 9/29/8 11/30/8 12/31/8 10/32/8 +f 11/33/9 13/34/9 14/35/9 12/36/9 +f 13/37/10 15/38/10 16/39/10 14/40/10 +f 15/41/11 17/42/11 18/43/11 16/44/11 +f 17/45/12 19/46/12 20/47/12 18/48/12 +f 19/49/13 21/50/13 22/51/13 20/52/13 +f 21/53/14 23/54/14 24/55/14 22/56/14 +f 23/57/15 25/58/15 26/59/15 24/60/15 +f 25/61/16 27/62/16 28/63/16 26/64/16 +f 27/65/17 29/66/17 30/67/17 28/68/17 +f 29/69/18 31/70/18 32/71/18 30/72/18 +f 31/73/19 33/74/19 34/75/19 32/76/19 +f 33/77/20 35/78/20 36/79/20 34/80/20 +f 35/81/21 37/82/21 38/83/21 36/84/21 +f 7/85/22 10/86/22 39/87/22 3/88/22 +f 10/89/23 12/90/23 40/91/23 39/92/23 +f 12/93/24 14/94/24 41/95/24 40/96/24 +f 14/97/25 16/98/25 42/99/25 41/100/25 +f 16/101/26 18/102/26 43/103/26 42/104/26 +f 18/105/27 20/106/27 44/107/27 43/108/27 +f 20/109/28 22/110/28 45/111/28 44/112/28 +f 22/113/29 24/114/29 46/115/29 45/116/29 +f 24/117/30 26/118/30 47/119/30 46/120/30 +f 26/121/31 28/122/31 48/123/31 47/124/31 +f 28/125/32 30/126/32 49/127/32 48/128/32 +f 30/129/33 32/130/33 50/131/33 49/132/33 +f 32/133/34 34/134/34 51/135/34 50/136/34 +f 34/137/35 36/138/35 52/139/35 51/140/35 +f 36/141/36 38/142/36 53/143/36 52/144/36 +f 3/145/37 39/146/37 54/147/37 1/148/37 +f 39/149/38 40/150/38 55/151/38 54/152/38 +f 40/153/39 41/154/39 56/155/39 55/156/39 +f 41/157/40 42/158/40 57/159/40 56/160/40 +f 42/161/41 43/162/41 58/163/41 57/164/41 +f 43/165/42 44/166/42 59/167/42 58/168/42 +f 44/169/43 45/170/43 60/171/43 59/172/43 +f 45/173/44 46/174/44 61/175/44 60/176/44 +f 46/177/45 47/178/45 62/179/45 61/180/45 +f 47/181/46 48/182/46 63/183/46 62/184/46 +f 48/185/47 49/186/47 64/187/47 63/188/47 +f 49/189/48 50/190/48 65/191/48 64/192/48 +f 50/193/49 51/194/49 66/195/49 65/196/49 +f 51/197/50 52/198/50 67/199/50 66/200/50 +f 52/201/51 53/202/51 68/203/51 67/204/51 +f 1/205/52 54/206/52 9/207/52 5/208/52 +f 54/209/53 55/210/53 11/211/53 9/212/53 +f 55/213/54 56/214/54 13/215/54 11/216/54 +f 56/217/55 57/218/55 15/219/55 13/220/55 +f 57/221/56 58/222/56 17/223/56 15/224/56 +f 58/225/57 59/226/57 19/227/57 17/228/57 +f 59/229/58 60/230/58 21/231/58 19/232/58 +f 60/233/59 61/234/59 23/235/59 21/236/59 +f 61/237/60 62/238/60 25/239/60 23/240/60 +f 62/241/61 63/242/61 27/243/61 25/244/61 +f 63/245/62 64/246/62 29/247/62 27/248/62 +f 64/249/63 65/250/63 31/251/63 29/252/63 +f 65/253/64 66/254/64 33/255/64 31/256/64 +f 66/257/65 67/258/65 35/259/65 33/260/65 +f 67/261/66 68/262/66 37/263/66 35/264/66 \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack6.obj b/mods/leads/models/leads_lead_slack6.obj new file mode 100644 index 00000000..9700cb6d --- /dev/null +++ b/mods/leads/models/leads_lead_slack6.obj @@ -0,0 +1,469 @@ +# Made in Blockbench 4.8.3 +mtllib leads_lead_slack6.mtl + +o cube +v 0.3125 0.3125 5 +v 0.3125 0.3125 -5 +v 0.3125 -0.3125 5 +v 0.3125 -0.3125 -5 +v -0.3125 0.3125 5 +v -0.3125 0.3125 -5 +v -0.3125 -0.3125 5 +v -0.3125 -0.3125 -5 +v -0.3125 0.10869565217391308 4.375 +v -0.3125 -0.5163043478260865 4.375 +v -0.3125 -0.054347826086956486 3.75 +v -0.3125 -0.6793478260869579 3.75 +v -0.3125 -0.1766304347826087 3.125 +v -0.3125 -0.8016304347826098 3.125 +v -0.3125 -0.25815217391304346 2.5 +v -0.3125 -0.8831521739130443 2.5 +v -0.3125 -0.31929347826086946 1.875 +v -0.3125 -0.9442934782608692 1.875 +v -0.3125 -0.3600543478260869 1.25 +v -0.3125 -0.9850543478260876 1.25 +v -0.3125 -0.38043478260869557 0.625 +v -0.3125 -1.0054347826086973 0.625 +v -0.3125 -0.3906249999999999 0 +v -0.3125 -1.0156250000000022 0 +v -0.3125 -0.38043478260869557 -0.625 +v -0.3125 -1.0054347826086973 -0.625 +v -0.3125 -0.3600543478260869 -1.25 +v -0.3125 -0.9850543478260876 -1.25 +v -0.3125 -0.31929347826086946 -1.875 +v -0.3125 -0.9442934782608692 -1.875 +v -0.3125 -0.25815217391304346 -2.5 +v -0.3125 -0.8831521739130443 -2.5 +v -0.3125 -0.1766304347826087 -3.125 +v -0.3125 -0.8016304347826098 -3.125 +v -0.3125 -0.054347826086956486 -3.75 +v -0.3125 -0.6793478260869579 -3.75 +v -0.3125 0.10869565217391308 -4.375 +v -0.3125 -0.5163043478260865 -4.375 +v 0.3125 -0.5163043478260865 4.375 +v 0.3125 -0.6793478260869579 3.75 +v 0.3125 -0.8016304347826098 3.125 +v 0.3125 -0.8831521739130443 2.5 +v 0.3125 -0.9442934782608692 1.875 +v 0.3125 -0.9850543478260876 1.25 +v 0.3125 -1.0054347826086973 0.625 +v 0.3125 -1.0156250000000022 0 +v 0.3125 -1.0054347826086973 -0.625 +v 0.3125 -0.9850543478260876 -1.25 +v 0.3125 -0.9442934782608692 -1.875 +v 0.3125 -0.8831521739130443 -2.5 +v 0.3125 -0.8016304347826098 -3.125 +v 0.3125 -0.6793478260869579 -3.75 +v 0.3125 -0.5163043478260865 -4.375 +v 0.3125 0.10869565217391308 4.375 +v 0.3125 -0.054347826086956486 3.75 +v 0.3125 -0.1766304347826087 3.125 +v 0.3125 -0.25815217391304346 2.5 +v 0.3125 -0.31929347826086946 1.875 +v 0.3125 -0.3600543478260869 1.25 +v 0.3125 -0.38043478260869557 0.625 +v 0.3125 -0.3906249999999999 0 +v 0.3125 -0.38043478260869557 -0.625 +v 0.3125 -0.3600543478260869 -1.25 +v 0.3125 -0.31929347826086946 -1.875 +v 0.3125 -0.25815217391304346 -2.5 +v 0.3125 -0.1766304347826087 -3.125 +v 0.3125 -0.054347826086956486 -3.75 +v 0.3125 0.10869565217391308 -4.375 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0 0 +vt 0.0625 0 +vt 0.06250000000000006 1 +vt 5.551115123125783e-17 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.0625 0 +vt 0.125 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 5.551115123125783e-17 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.37500000000000006 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.37500000000000006 1 +vt 0.31250000000000006 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.31250000000000006 1 +vt 0.25000000000000006 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25000000000000006 1 +vt 0.18750000000000006 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.18750000000000006 1 +vt 0.12500000000000006 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.12500000000000006 1 +vt 0.06250000000000006 1 +vt 0.0625 0 +vt 0.125 0 +vn 1 0 0 +vn -1 0 0 +vn 0 0.9507298394814788 0.31002059983091695 +vn 0 -0.950729839481479 -0.31002059983091634 +vn 0 0 1 +vn 0 0 -1 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 -0.950729839481479 0.31002059983091634 +vn 0 -0.9676172723968431 0.2524218971470054 +vn 0 -0.9813926548600209 0.19201160638565581 +vn 0 -0.9916004111862218 0.12933918406776776 +vn 0 -0.9952491006685262 0.09736132506539731 +vn 0 -0.9978801059658183 0.06507913734559846 +vn 0 -0.9994687601077146 0.03259137261220978 +vn 0 -0.9998671106150603 0.016302181151333354 +vn 0 -0.9998671106150603 -0.016302181151333354 +vn 0 -0.9994687601077146 -0.03259137261220978 +vn 0 -0.9978801059658183 -0.06507913734559846 +vn 0 -0.9952491006685262 -0.09736132506539731 +vn 0 -0.9916004111862218 -0.12933918406776776 +vn 0 -0.9813926548600209 -0.19201160638565581 +vn 0 -0.9676172723968431 -0.2524218971470054 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 0 0.9507298394814788 -0.31002059983091695 +vn 0 0.9676172723968439 -0.25242189714700275 +vn 0 0.9813926548600209 -0.19201160638565637 +vn 0 0.9916004111862218 -0.12933918406776795 +vn 0 0.995249100668526 -0.09736132506539916 +vn 0 0.9978801059658186 -0.06507913734559692 +vn 0 0.9994687601077146 -0.03259137261220801 +vn 0 0.9998671106150603 -0.016302181151332466 +vn 0 0.9998671106150603 0.016302181151332466 +vn 0 0.9994687601077146 0.03259137261220801 +vn 0 0.9978801059658186 0.06507913734559692 +vn 0 0.995249100668526 0.09736132506539916 +vn 0 0.9916004111862218 0.12933918406776795 +vn 0 0.9813926548600209 0.19201160638565637 +vn 0 0.9676172723968439 0.25242189714700275 +usemtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +f 2/1/1 68/2/1 53/3/1 4/4/1 +f 8/5/2 38/6/2 37/7/2 6/8/2 +f 6/9/3 37/10/3 68/11/3 2/12/3 +f 4/13/4 53/14/4 38/15/4 8/16/4 +f 3/17/5 1/18/5 5/19/5 7/20/5 +f 8/21/6 6/22/6 2/23/6 4/24/6 +f 5/25/7 9/26/7 10/27/7 7/28/7 +f 9/29/8 11/30/8 12/31/8 10/32/8 +f 11/33/9 13/34/9 14/35/9 12/36/9 +f 13/37/10 15/38/10 16/39/10 14/40/10 +f 15/41/11 17/42/11 18/43/11 16/44/11 +f 17/45/12 19/46/12 20/47/12 18/48/12 +f 19/49/13 21/50/13 22/51/13 20/52/13 +f 21/53/14 23/54/14 24/55/14 22/56/14 +f 23/57/15 25/58/15 26/59/15 24/60/15 +f 25/61/16 27/62/16 28/63/16 26/64/16 +f 27/65/17 29/66/17 30/67/17 28/68/17 +f 29/69/18 31/70/18 32/71/18 30/72/18 +f 31/73/19 33/74/19 34/75/19 32/76/19 +f 33/77/20 35/78/20 36/79/20 34/80/20 +f 35/81/21 37/82/21 38/83/21 36/84/21 +f 7/85/22 10/86/22 39/87/22 3/88/22 +f 10/89/23 12/90/23 40/91/23 39/92/23 +f 12/93/24 14/94/24 41/95/24 40/96/24 +f 14/97/25 16/98/25 42/99/25 41/100/25 +f 16/101/26 18/102/26 43/103/26 42/104/26 +f 18/105/27 20/106/27 44/107/27 43/108/27 +f 20/109/28 22/110/28 45/111/28 44/112/28 +f 22/113/29 24/114/29 46/115/29 45/116/29 +f 24/117/30 26/118/30 47/119/30 46/120/30 +f 26/121/31 28/122/31 48/123/31 47/124/31 +f 28/125/32 30/126/32 49/127/32 48/128/32 +f 30/129/33 32/130/33 50/131/33 49/132/33 +f 32/133/34 34/134/34 51/135/34 50/136/34 +f 34/137/35 36/138/35 52/139/35 51/140/35 +f 36/141/36 38/142/36 53/143/36 52/144/36 +f 3/145/37 39/146/37 54/147/37 1/148/37 +f 39/149/38 40/150/38 55/151/38 54/152/38 +f 40/153/39 41/154/39 56/155/39 55/156/39 +f 41/157/40 42/158/40 57/159/40 56/160/40 +f 42/161/41 43/162/41 58/163/41 57/164/41 +f 43/165/42 44/166/42 59/167/42 58/168/42 +f 44/169/43 45/170/43 60/171/43 59/172/43 +f 45/173/44 46/174/44 61/175/44 60/176/44 +f 46/177/45 47/178/45 62/179/45 61/180/45 +f 47/181/46 48/182/46 63/183/46 62/184/46 +f 48/185/47 49/186/47 64/187/47 63/188/47 +f 49/189/48 50/190/48 65/191/48 64/192/48 +f 50/193/49 51/194/49 66/195/49 65/196/49 +f 51/197/50 52/198/50 67/199/50 66/200/50 +f 52/201/51 53/202/51 68/203/51 67/204/51 +f 1/205/52 54/206/52 9/207/52 5/208/52 +f 54/209/53 55/210/53 11/211/53 9/212/53 +f 55/213/54 56/214/54 13/215/54 11/216/54 +f 56/217/55 57/218/55 15/219/55 13/220/55 +f 57/221/56 58/222/56 17/223/56 15/224/56 +f 58/225/57 59/226/57 19/227/57 17/228/57 +f 59/229/58 60/230/58 21/231/58 19/232/58 +f 60/233/59 61/234/59 23/235/59 21/236/59 +f 61/237/60 62/238/60 25/239/60 23/240/60 +f 62/241/61 63/242/61 27/243/61 25/244/61 +f 63/245/62 64/246/62 29/247/62 27/248/62 +f 64/249/63 65/250/63 31/251/63 29/252/63 +f 65/253/64 66/254/64 33/255/64 31/256/64 +f 66/257/65 67/258/65 35/259/65 33/260/65 +f 67/261/66 68/262/66 37/263/66 35/264/66 \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack7.obj b/mods/leads/models/leads_lead_slack7.obj new file mode 100644 index 00000000..7c84af66 --- /dev/null +++ b/mods/leads/models/leads_lead_slack7.obj @@ -0,0 +1,469 @@ +# Made in Blockbench 4.8.3 +mtllib leads_lead_slack7.mtl + +o cube +v 0.3125 0.3125 5 +v 0.3125 0.3125 -5 +v 0.3125 -0.3125 5 +v 0.3125 -0.3125 -5 +v -0.3125 0.3125 5 +v -0.3125 0.3125 -5 +v -0.3125 -0.3125 5 +v -0.3125 -0.3125 -5 +v -0.3125 0.07246376811594207 4.375 +v -0.3125 -0.5525362318840576 4.375 +v -0.3125 -0.11956521739130428 3.75 +v -0.3125 -0.7445652173913053 3.75 +v -0.3125 -0.26358695652173914 3.125 +v -0.3125 -0.8885869565217397 3.125 +v -0.3125 -0.3596014492753623 2.5 +v -0.3125 -0.984601449275363 2.5 +v -0.3125 -0.4316123188405796 1.875 +v -0.3125 -1.0566123188405796 1.875 +v -0.3125 -0.47961956521739124 1.25 +v -0.3125 -1.1046195652173918 1.25 +v -0.3125 -0.5036231884057969 0.625 +v -0.3125 -1.1286231884057984 0.625 +v -0.3125 -0.5156249999999998 0 +v -0.3125 -1.1406250000000018 0 +v -0.3125 -0.5036231884057969 -0.625 +v -0.3125 -1.1286231884057984 -0.625 +v -0.3125 -0.47961956521739124 -1.25 +v -0.3125 -1.1046195652173918 -1.25 +v -0.3125 -0.4316123188405796 -1.875 +v -0.3125 -1.0566123188405796 -1.875 +v -0.3125 -0.3596014492753623 -2.5 +v -0.3125 -0.984601449275363 -2.5 +v -0.3125 -0.26358695652173914 -3.125 +v -0.3125 -0.8885869565217397 -3.125 +v -0.3125 -0.11956521739130428 -3.75 +v -0.3125 -0.7445652173913053 -3.75 +v -0.3125 0.07246376811594207 -4.375 +v -0.3125 -0.5525362318840576 -4.375 +v 0.3125 -0.5525362318840576 4.375 +v 0.3125 -0.7445652173913053 3.75 +v 0.3125 -0.8885869565217397 3.125 +v 0.3125 -0.984601449275363 2.5 +v 0.3125 -1.0566123188405796 1.875 +v 0.3125 -1.1046195652173918 1.25 +v 0.3125 -1.1286231884057984 0.625 +v 0.3125 -1.1406250000000018 0 +v 0.3125 -1.1286231884057984 -0.625 +v 0.3125 -1.1046195652173918 -1.25 +v 0.3125 -1.0566123188405796 -1.875 +v 0.3125 -0.984601449275363 -2.5 +v 0.3125 -0.8885869565217397 -3.125 +v 0.3125 -0.7445652173913053 -3.75 +v 0.3125 -0.5525362318840576 -4.375 +v 0.3125 0.07246376811594207 4.375 +v 0.3125 -0.11956521739130428 3.75 +v 0.3125 -0.26358695652173914 3.125 +v 0.3125 -0.3596014492753623 2.5 +v 0.3125 -0.4316123188405796 1.875 +v 0.3125 -0.47961956521739124 1.25 +v 0.3125 -0.5036231884057969 0.625 +v 0.3125 -0.5156249999999998 0 +v 0.3125 -0.5036231884057969 -0.625 +v 0.3125 -0.47961956521739124 -1.25 +v 0.3125 -0.4316123188405796 -1.875 +v 0.3125 -0.3596014492753623 -2.5 +v 0.3125 -0.26358695652173914 -3.125 +v 0.3125 -0.11956521739130428 -3.75 +v 0.3125 0.07246376811594207 -4.375 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0 0 +vt 0.0625 0 +vt 0.06250000000000006 1 +vt 5.551115123125783e-17 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.0625 0 +vt 0.125 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 5.551115123125783e-17 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.37500000000000006 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.37500000000000006 1 +vt 0.31250000000000006 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.31250000000000006 1 +vt 0.25000000000000006 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25000000000000006 1 +vt 0.18750000000000006 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.18750000000000006 1 +vt 0.12500000000000006 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.12500000000000006 1 +vt 0.06250000000000006 1 +vt 0.0625 0 +vt 0.125 0 +vn 1 0 0 +vn -1 0 0 +vn 0 0.9335198424278247 0.35852573658459924 +vn 0 -0.9335198424278248 -0.3585257365845989 +vn 0 0 1 +vn 0 0 -1 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 -0.9335198424278248 0.3585257365845989 +vn 0 -0.9558987443606234 0.29369642580355587 +vn 0 -0.9744625531989032 0.22455006660670312 +vn 0 -0.9884047949144682 0.15184189603033874 +vn 0 -0.9934278387732237 0.11446016403256586 +vn 0 -0.9970629794889134 0.07658599697523634 +vn 0 -0.9992633122381398 0.03837750402074152 +vn 0 -0.9998156753195351 0.01919935898258596 +vn 0 -0.9998156753195351 -0.01919935898258596 +vn 0 -0.9992633122381398 -0.03837750402074152 +vn 0 -0.9970629794889134 -0.07658599697523634 +vn 0 -0.9934278387732237 -0.11446016403256586 +vn 0 -0.9884047949144682 -0.15184189603033874 +vn 0 -0.9744625531989032 -0.22455006660670312 +vn 0 -0.9558987443606234 -0.29369642580355587 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 0 0.9335198424278247 -0.35852573658459924 +vn 0 0.955898744360624 -0.29369642580355404 +vn 0 0.9744625531989032 -0.2245500666067039 +vn 0 0.9884047949144682 -0.1518418960303385 +vn 0 0.9934278387732237 -0.11446016403256697 +vn 0 0.9970629794889134 -0.07658599697523545 +vn 0 0.9992633122381398 -0.038377504020739965 +vn 0 0.9998156753195351 -0.019199358982585294 +vn 0 0.9998156753195351 0.019199358982585294 +vn 0 0.9992633122381398 0.038377504020739965 +vn 0 0.9970629794889134 0.07658599697523545 +vn 0 0.9934278387732237 0.11446016403256697 +vn 0 0.9884047949144682 0.1518418960303385 +vn 0 0.9744625531989032 0.2245500666067039 +vn 0 0.955898744360624 0.29369642580355404 +usemtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +f 2/1/1 68/2/1 53/3/1 4/4/1 +f 8/5/2 38/6/2 37/7/2 6/8/2 +f 6/9/3 37/10/3 68/11/3 2/12/3 +f 4/13/4 53/14/4 38/15/4 8/16/4 +f 3/17/5 1/18/5 5/19/5 7/20/5 +f 8/21/6 6/22/6 2/23/6 4/24/6 +f 5/25/7 9/26/7 10/27/7 7/28/7 +f 9/29/8 11/30/8 12/31/8 10/32/8 +f 11/33/9 13/34/9 14/35/9 12/36/9 +f 13/37/10 15/38/10 16/39/10 14/40/10 +f 15/41/11 17/42/11 18/43/11 16/44/11 +f 17/45/12 19/46/12 20/47/12 18/48/12 +f 19/49/13 21/50/13 22/51/13 20/52/13 +f 21/53/14 23/54/14 24/55/14 22/56/14 +f 23/57/15 25/58/15 26/59/15 24/60/15 +f 25/61/16 27/62/16 28/63/16 26/64/16 +f 27/65/17 29/66/17 30/67/17 28/68/17 +f 29/69/18 31/70/18 32/71/18 30/72/18 +f 31/73/19 33/74/19 34/75/19 32/76/19 +f 33/77/20 35/78/20 36/79/20 34/80/20 +f 35/81/21 37/82/21 38/83/21 36/84/21 +f 7/85/22 10/86/22 39/87/22 3/88/22 +f 10/89/23 12/90/23 40/91/23 39/92/23 +f 12/93/24 14/94/24 41/95/24 40/96/24 +f 14/97/25 16/98/25 42/99/25 41/100/25 +f 16/101/26 18/102/26 43/103/26 42/104/26 +f 18/105/27 20/106/27 44/107/27 43/108/27 +f 20/109/28 22/110/28 45/111/28 44/112/28 +f 22/113/29 24/114/29 46/115/29 45/116/29 +f 24/117/30 26/118/30 47/119/30 46/120/30 +f 26/121/31 28/122/31 48/123/31 47/124/31 +f 28/125/32 30/126/32 49/127/32 48/128/32 +f 30/129/33 32/130/33 50/131/33 49/132/33 +f 32/133/34 34/134/34 51/135/34 50/136/34 +f 34/137/35 36/138/35 52/139/35 51/140/35 +f 36/141/36 38/142/36 53/143/36 52/144/36 +f 3/145/37 39/146/37 54/147/37 1/148/37 +f 39/149/38 40/150/38 55/151/38 54/152/38 +f 40/153/39 41/154/39 56/155/39 55/156/39 +f 41/157/40 42/158/40 57/159/40 56/160/40 +f 42/161/41 43/162/41 58/163/41 57/164/41 +f 43/165/42 44/166/42 59/167/42 58/168/42 +f 44/169/43 45/170/43 60/171/43 59/172/43 +f 45/173/44 46/174/44 61/175/44 60/176/44 +f 46/177/45 47/178/45 62/179/45 61/180/45 +f 47/181/46 48/182/46 63/183/46 62/184/46 +f 48/185/47 49/186/47 64/187/47 63/188/47 +f 49/189/48 50/190/48 65/191/48 64/192/48 +f 50/193/49 51/194/49 66/195/49 65/196/49 +f 51/197/50 52/198/50 67/199/50 66/200/50 +f 52/201/51 53/202/51 68/203/51 67/204/51 +f 1/205/52 54/206/52 9/207/52 5/208/52 +f 54/209/53 55/210/53 11/211/53 9/212/53 +f 55/213/54 56/214/54 13/215/54 11/216/54 +f 56/217/55 57/218/55 15/219/55 13/220/55 +f 57/221/56 58/222/56 17/223/56 15/224/56 +f 58/225/57 59/226/57 19/227/57 17/228/57 +f 59/229/58 60/230/58 21/231/58 19/232/58 +f 60/233/59 61/234/59 23/235/59 21/236/59 +f 61/237/60 62/238/60 25/239/60 23/240/60 +f 62/241/61 63/242/61 27/243/61 25/244/61 +f 63/245/62 64/246/62 29/247/62 27/248/62 +f 64/249/63 65/250/63 31/251/63 29/252/63 +f 65/253/64 66/254/64 33/255/64 31/256/64 +f 66/257/65 67/258/65 35/259/65 33/260/65 +f 67/261/66 68/262/66 37/263/66 35/264/66 \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack8.obj b/mods/leads/models/leads_lead_slack8.obj new file mode 100644 index 00000000..1256bcea --- /dev/null +++ b/mods/leads/models/leads_lead_slack8.obj @@ -0,0 +1,469 @@ +# Made in Blockbench 4.8.3 +mtllib leads_lead_slack8.mtl + +o cube +v 0.3125 0.3125 5 +v 0.3125 0.3125 -5 +v 0.3125 -0.3125 5 +v 0.3125 -0.3125 -5 +v -0.3125 0.3125 5 +v -0.3125 0.3125 -5 +v -0.3125 -0.3125 5 +v -0.3125 -0.3125 -5 +v -0.3125 0.03623188405797104 4.375 +v -0.3125 -0.5887681159420288 4.375 +v -0.3125 -0.18478260869565216 3.75 +v -0.3125 -0.8097826086956528 3.75 +v -0.3125 -0.3505434782608696 3.125 +v -0.3125 -0.9755434782608707 3.125 +v -0.3125 -0.46105072463768115 2.5 +v -0.3125 -1.0860507246376816 2.5 +v -0.3125 -0.5439311594202898 1.875 +v -0.3125 -1.16893115942029 1.875 +v -0.3125 -0.5991847826086956 1.25 +v -0.3125 -1.224184782608696 1.25 +v -0.3125 -0.6268115942028984 0.625 +v -0.3125 -1.2518115942028996 0.625 +v -0.3125 -0.6406249999999998 0 +v -0.3125 -1.2656250000000013 0 +v -0.3125 -0.6268115942028984 -0.625 +v -0.3125 -1.2518115942028996 -0.625 +v -0.3125 -0.5991847826086956 -1.25 +v -0.3125 -1.224184782608696 -1.25 +v -0.3125 -0.5439311594202898 -1.875 +v -0.3125 -1.16893115942029 -1.875 +v -0.3125 -0.46105072463768115 -2.5 +v -0.3125 -1.0860507246376816 -2.5 +v -0.3125 -0.3505434782608696 -3.125 +v -0.3125 -0.9755434782608707 -3.125 +v -0.3125 -0.18478260869565216 -3.75 +v -0.3125 -0.8097826086956528 -3.75 +v -0.3125 0.03623188405797104 -4.375 +v -0.3125 -0.5887681159420288 -4.375 +v 0.3125 -0.5887681159420288 4.375 +v 0.3125 -0.8097826086956528 3.75 +v 0.3125 -0.9755434782608707 3.125 +v 0.3125 -1.0860507246376816 2.5 +v 0.3125 -1.16893115942029 1.875 +v 0.3125 -1.224184782608696 1.25 +v 0.3125 -1.2518115942028996 0.625 +v 0.3125 -1.2656250000000013 0 +v 0.3125 -1.2518115942028996 -0.625 +v 0.3125 -1.224184782608696 -1.25 +v 0.3125 -1.16893115942029 -1.875 +v 0.3125 -1.0860507246376816 -2.5 +v 0.3125 -0.9755434782608707 -3.125 +v 0.3125 -0.8097826086956528 -3.75 +v 0.3125 -0.5887681159420288 -4.375 +v 0.3125 0.03623188405797104 4.375 +v 0.3125 -0.18478260869565216 3.75 +v 0.3125 -0.3505434782608696 3.125 +v 0.3125 -0.46105072463768115 2.5 +v 0.3125 -0.5439311594202898 1.875 +v 0.3125 -0.5991847826086956 1.25 +v 0.3125 -0.6268115942028984 0.625 +v 0.3125 -0.6406249999999998 0 +v 0.3125 -0.6268115942028984 -0.625 +v 0.3125 -0.5991847826086956 -1.25 +v 0.3125 -0.5439311594202898 -1.875 +v 0.3125 -0.46105072463768115 -2.5 +v 0.3125 -0.3505434782608696 -3.125 +v 0.3125 -0.18478260869565216 -3.75 +v 0.3125 0.03623188405797104 -4.375 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0 0 +vt 0.0625 0 +vt 0.06250000000000006 1 +vt 5.551115123125783e-17 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.0625 0 +vt 0.125 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 5.551115123125783e-17 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.37500000000000006 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.37500000000000006 1 +vt 0.31250000000000006 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.31250000000000006 1 +vt 0.25000000000000006 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25000000000000006 1 +vt 0.18750000000000006 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.18750000000000006 1 +vt 0.12500000000000006 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.12500000000000006 1 +vt 0.06250000000000006 1 +vt 0.0625 0 +vt 0.125 0 +vn 1 0 0 +vn -1 0 0 +vn 0 0.9146296143411422 0.40429280054209904 +vn 0 -0.9146296143411424 -0.404292800542099 +vn 0 0 1 +vn 0 0 -1 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 -0.9146296143411424 0.404292800542099 +vn 0 -0.9427883593879092 0.3333918256386241 +vn 0 -0.9665828124945453 0.25635457200942374 +vn 0 -0.9847260362807801 0.1741109803279049 +vn 0 -0.9913217562692721 0.13145788507049 +vn 0 -0.9961149656074496 0.08806233753920961 +vn 0 -0.999024481194214 0.044159777791919194 +vn 0 -0.9997558524111473 0.022096053259812107 +vn 0 -0.9997558524111473 -0.022096053259812107 +vn 0 -0.999024481194214 -0.044159777791919194 +vn 0 -0.9961149656074496 -0.08806233753920961 +vn 0 -0.9913217562692721 -0.13145788507049 +vn 0 -0.9847260362807801 -0.1741109803279049 +vn 0 -0.9665828124945453 -0.25635457200942374 +vn 0 -0.9427883593879092 -0.3333918256386241 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 0 0.9146296143411422 -0.40429280054209904 +vn 0 0.9427883593879096 -0.3333918256386231 +vn 0 0.9665828124945455 -0.2563545720094231 +vn 0 0.9847260362807797 -0.17411098032790592 +vn 0 0.9913217562692721 -0.13145788507049022 +vn 0 0.9961149656074496 -0.08806233753920939 +vn 0 0.999024481194214 -0.044159777791918084 +vn 0 0.9997558524111473 -0.022096053259811444 +vn 0 0.9997558524111473 0.022096053259811444 +vn 0 0.999024481194214 0.044159777791918084 +vn 0 0.9961149656074496 0.08806233753920939 +vn 0 0.9913217562692721 0.13145788507049022 +vn 0 0.9847260362807797 0.17411098032790592 +vn 0 0.9665828124945455 0.2563545720094231 +vn 0 0.9427883593879096 0.3333918256386231 +usemtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +f 2/1/1 68/2/1 53/3/1 4/4/1 +f 8/5/2 38/6/2 37/7/2 6/8/2 +f 6/9/3 37/10/3 68/11/3 2/12/3 +f 4/13/4 53/14/4 38/15/4 8/16/4 +f 3/17/5 1/18/5 5/19/5 7/20/5 +f 8/21/6 6/22/6 2/23/6 4/24/6 +f 5/25/7 9/26/7 10/27/7 7/28/7 +f 9/29/8 11/30/8 12/31/8 10/32/8 +f 11/33/9 13/34/9 14/35/9 12/36/9 +f 13/37/10 15/38/10 16/39/10 14/40/10 +f 15/41/11 17/42/11 18/43/11 16/44/11 +f 17/45/12 19/46/12 20/47/12 18/48/12 +f 19/49/13 21/50/13 22/51/13 20/52/13 +f 21/53/14 23/54/14 24/55/14 22/56/14 +f 23/57/15 25/58/15 26/59/15 24/60/15 +f 25/61/16 27/62/16 28/63/16 26/64/16 +f 27/65/17 29/66/17 30/67/17 28/68/17 +f 29/69/18 31/70/18 32/71/18 30/72/18 +f 31/73/19 33/74/19 34/75/19 32/76/19 +f 33/77/20 35/78/20 36/79/20 34/80/20 +f 35/81/21 37/82/21 38/83/21 36/84/21 +f 7/85/22 10/86/22 39/87/22 3/88/22 +f 10/89/23 12/90/23 40/91/23 39/92/23 +f 12/93/24 14/94/24 41/95/24 40/96/24 +f 14/97/25 16/98/25 42/99/25 41/100/25 +f 16/101/26 18/102/26 43/103/26 42/104/26 +f 18/105/27 20/106/27 44/107/27 43/108/27 +f 20/109/28 22/110/28 45/111/28 44/112/28 +f 22/113/29 24/114/29 46/115/29 45/116/29 +f 24/117/30 26/118/30 47/119/30 46/120/30 +f 26/121/31 28/122/31 48/123/31 47/124/31 +f 28/125/32 30/126/32 49/127/32 48/128/32 +f 30/129/33 32/130/33 50/131/33 49/132/33 +f 32/133/34 34/134/34 51/135/34 50/136/34 +f 34/137/35 36/138/35 52/139/35 51/140/35 +f 36/141/36 38/142/36 53/143/36 52/144/36 +f 3/145/37 39/146/37 54/147/37 1/148/37 +f 39/149/38 40/150/38 55/151/38 54/152/38 +f 40/153/39 41/154/39 56/155/39 55/156/39 +f 41/157/40 42/158/40 57/159/40 56/160/40 +f 42/161/41 43/162/41 58/163/41 57/164/41 +f 43/165/42 44/166/42 59/167/42 58/168/42 +f 44/169/43 45/170/43 60/171/43 59/172/43 +f 45/173/44 46/174/44 61/175/44 60/176/44 +f 46/177/45 47/178/45 62/179/45 61/180/45 +f 47/181/46 48/182/46 63/183/46 62/184/46 +f 48/185/47 49/186/47 64/187/47 63/188/47 +f 49/189/48 50/190/48 65/191/48 64/192/48 +f 50/193/49 51/194/49 66/195/49 65/196/49 +f 51/197/50 52/198/50 67/199/50 66/200/50 +f 52/201/51 53/202/51 68/203/51 67/204/51 +f 1/205/52 54/206/52 9/207/52 5/208/52 +f 54/209/53 55/210/53 11/211/53 9/212/53 +f 55/213/54 56/214/54 13/215/54 11/216/54 +f 56/217/55 57/218/55 15/219/55 13/220/55 +f 57/221/56 58/222/56 17/223/56 15/224/56 +f 58/225/57 59/226/57 19/227/57 17/228/57 +f 59/229/58 60/230/58 21/231/58 19/232/58 +f 60/233/59 61/234/59 23/235/59 21/236/59 +f 61/237/60 62/238/60 25/239/60 23/240/60 +f 62/241/61 63/242/61 27/243/61 25/244/61 +f 63/245/62 64/246/62 29/247/62 27/248/62 +f 64/249/63 65/250/63 31/251/63 29/252/63 +f 65/253/64 66/254/64 33/255/64 31/256/64 +f 66/257/65 67/258/65 35/259/65 33/260/65 +f 67/261/66 68/262/66 37/263/66 35/264/66 \ No newline at end of file diff --git a/mods/leads/models/leads_lead_slack9.obj b/mods/leads/models/leads_lead_slack9.obj new file mode 100644 index 00000000..32fbe8c3 --- /dev/null +++ b/mods/leads/models/leads_lead_slack9.obj @@ -0,0 +1,469 @@ +# Made in Blockbench 4.8.3 +mtllib leads_lead_slack9.mtl + +o cube +v 0.3125 0.3125 5 +v 0.3125 0.3125 -5 +v 0.3125 -0.3125 5 +v 0.3125 -0.3125 -5 +v -0.3125 0.3125 5 +v -0.3125 0.3125 -5 +v -0.3125 -0.3125 5 +v -0.3125 -0.3125 -5 +v -0.3125 3.469446951953614e-17 4.375 +v -0.3125 -0.625 4.375 +v -0.3125 -0.24999999999999997 3.75 +v -0.3125 -0.8750000000000002 3.75 +v -0.3125 -0.4375 3.125 +v -0.3125 -1.0625000000000007 3.125 +v -0.3125 -0.5625 2.5 +v -0.3125 -1.1875000000000002 2.5 +v -0.3125 -0.6562499999999999 1.875 +v -0.3125 -1.2812500000000004 1.875 +v -0.3125 -0.71875 1.25 +v -0.3125 -1.3437500000000002 1.25 +v -0.3125 -0.7499999999999998 0.625 +v -0.3125 -1.3750000000000007 0.625 +v -0.3125 -0.7656249999999998 0 +v -0.3125 -1.3906250000000009 0 +v -0.3125 -0.7499999999999998 -0.625 +v -0.3125 -1.3750000000000007 -0.625 +v -0.3125 -0.71875 -1.25 +v -0.3125 -1.3437500000000002 -1.25 +v -0.3125 -0.6562499999999999 -1.875 +v -0.3125 -1.2812500000000004 -1.875 +v -0.3125 -0.5625 -2.5 +v -0.3125 -1.1875000000000002 -2.5 +v -0.3125 -0.4375 -3.125 +v -0.3125 -1.0625000000000007 -3.125 +v -0.3125 -0.24999999999999997 -3.75 +v -0.3125 -0.8750000000000002 -3.75 +v -0.3125 3.469446951953614e-17 -4.375 +v -0.3125 -0.625 -4.375 +v 0.3125 -0.625 4.375 +v 0.3125 -0.8750000000000002 3.75 +v 0.3125 -1.0625000000000007 3.125 +v 0.3125 -1.1875000000000002 2.5 +v 0.3125 -1.2812500000000004 1.875 +v 0.3125 -1.3437500000000002 1.25 +v 0.3125 -1.3750000000000007 0.625 +v 0.3125 -1.3906250000000009 0 +v 0.3125 -1.3750000000000007 -0.625 +v 0.3125 -1.3437500000000002 -1.25 +v 0.3125 -1.2812500000000004 -1.875 +v 0.3125 -1.1875000000000002 -2.5 +v 0.3125 -1.0625000000000007 -3.125 +v 0.3125 -0.8750000000000002 -3.75 +v 0.3125 -0.625 -4.375 +v 0.3125 3.469446951953614e-17 4.375 +v 0.3125 -0.24999999999999997 3.75 +v 0.3125 -0.4375 3.125 +v 0.3125 -0.5625 2.5 +v 0.3125 -0.6562499999999999 1.875 +v 0.3125 -0.71875 1.25 +v 0.3125 -0.7499999999999998 0.625 +v 0.3125 -0.7656249999999998 0 +v 0.3125 -0.7499999999999998 -0.625 +v 0.3125 -0.71875 -1.25 +v 0.3125 -0.6562499999999999 -1.875 +v 0.3125 -0.5625 -2.5 +v 0.3125 -0.4375 -3.125 +v 0.3125 -0.24999999999999997 -3.75 +v 0.3125 3.469446951953614e-17 -4.375 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0 0 +vt 0.0625 0 +vt 0.06250000000000006 1 +vt 5.551115123125783e-17 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 0 0 +vt 0 1 +vt 0 1 +vt 0 0 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.0625 0 +vt 0.125 0 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 5.551115123125783e-17 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 0 0 +vt 0.0625 0 +vt 0.0625 1 +vt 0 1 +vt 0.0625 0 +vt 0.125 0 +vt 0.125 1 +vt 0.0625 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.1875 1 +vt 0.125 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.25 1 +vt 0.1875 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.3125 1 +vt 0.25 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.375 1 +vt 0.3125 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.4375 1 +vt 0.375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.9375 1 +vt 0.875 1 +vt 1 1 +vt 0.9375 1 +vt 0.9375 0 +vt 1 0 +vt 0.9375 1 +vt 0.875 1 +vt 0.875 0 +vt 0.9375 0 +vt 0.875 1 +vt 0.8125 1 +vt 0.8125 0 +vt 0.875 0 +vt 0.8125 1 +vt 0.75 1 +vt 0.75 0 +vt 0.8125 0 +vt 0.75 1 +vt 0.6875 1 +vt 0.6875 0 +vt 0.75 0 +vt 0.6875 1 +vt 0.625 1 +vt 0.625 0 +vt 0.6875 0 +vt 0.625 1 +vt 0.5625 1 +vt 0.5625 0 +vt 0.625 0 +vt 0.5625 1 +vt 0.5 1 +vt 0.5 0 +vt 0.5625 0 +vt 0.5 1 +vt 0.4375 1 +vt 0.4375 0 +vt 0.5 0 +vt 0.4375 1 +vt 0.37500000000000006 1 +vt 0.375 0 +vt 0.4375 0 +vt 0.37500000000000006 1 +vt 0.31250000000000006 1 +vt 0.3125 0 +vt 0.375 0 +vt 0.31250000000000006 1 +vt 0.25000000000000006 1 +vt 0.25 0 +vt 0.3125 0 +vt 0.25000000000000006 1 +vt 0.18750000000000006 1 +vt 0.1875 0 +vt 0.25 0 +vt 0.18750000000000006 1 +vt 0.12500000000000006 1 +vt 0.125 0 +vt 0.1875 0 +vt 0.12500000000000006 1 +vt 0.06250000000000006 1 +vt 0.0625 0 +vt 0.125 0 +vn 1 0 0 +vn -1 0 0 +vn 0 0.8944271909999161 0.447213595499958 +vn 0 -0.8944271909999161 -0.44721359549995804 +vn 0 0 1 +vn 0 0 -1 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 -0.8944271909999161 0.44721359549995804 +vn 0 -0.9284766908852594 0.37139067635410405 +vn 0 -0.9578262852211513 0.2873478855663461 +vn 0 -0.9805806756909203 0.19611613513818338 +vn 0 -0.9889363528682975 0.14834045293024498 +vn 0 -0.9950371902099893 0.09950371902099857 +vn 0 -0.9987523388778446 0.04993761694389294 +vn 0 -0.9996876464081228 0.024992191160203427 +vn 0 -0.9996876464081228 -0.024992191160203427 +vn 0 -0.9987523388778446 -0.04993761694389294 +vn 0 -0.9950371902099893 -0.09950371902099857 +vn 0 -0.9889363528682975 -0.14834045293024498 +vn 0 -0.9805806756909203 -0.19611613513818338 +vn 0 -0.9578262852211513 -0.2873478855663461 +vn 0 -0.9284766908852594 -0.37139067635410405 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 0 0.8944271909999161 -0.447213595499958 +vn 0 0.9284766908852594 -0.3713906763541037 +vn 0 0.9578262852211515 -0.28734788556634544 +vn 0 0.9805806756909203 -0.19611613513818404 +vn 0 0.9889363528682977 -0.14834045293024456 +vn 0 0.9950371902099893 -0.09950371902099901 +vn 0 0.9987523388778449 -0.049937616943892066 +vn 0 0.9996876464081228 -0.024992191160202983 +vn 0 0.9996876464081228 0.024992191160202983 +vn 0 0.9987523388778449 0.049937616943892066 +vn 0 0.9950371902099893 0.09950371902099901 +vn 0 0.9889363528682977 0.14834045293024456 +vn 0 0.9805806756909203 0.19611613513818404 +vn 0 0.9578262852211515 0.28734788556634544 +vn 0 0.9284766908852594 0.3713906763541037 +usemtl m_23be694f-bb73-ca4f-4e50-c3ef0f3838f0 +f 2/1/1 68/2/1 53/3/1 4/4/1 +f 8/5/2 38/6/2 37/7/2 6/8/2 +f 6/9/3 37/10/3 68/11/3 2/12/3 +f 4/13/4 53/14/4 38/15/4 8/16/4 +f 3/17/5 1/18/5 5/19/5 7/20/5 +f 8/21/6 6/22/6 2/23/6 4/24/6 +f 5/25/7 9/26/7 10/27/7 7/28/7 +f 9/29/8 11/30/8 12/31/8 10/32/8 +f 11/33/9 13/34/9 14/35/9 12/36/9 +f 13/37/10 15/38/10 16/39/10 14/40/10 +f 15/41/11 17/42/11 18/43/11 16/44/11 +f 17/45/12 19/46/12 20/47/12 18/48/12 +f 19/49/13 21/50/13 22/51/13 20/52/13 +f 21/53/14 23/54/14 24/55/14 22/56/14 +f 23/57/15 25/58/15 26/59/15 24/60/15 +f 25/61/16 27/62/16 28/63/16 26/64/16 +f 27/65/17 29/66/17 30/67/17 28/68/17 +f 29/69/18 31/70/18 32/71/18 30/72/18 +f 31/73/19 33/74/19 34/75/19 32/76/19 +f 33/77/20 35/78/20 36/79/20 34/80/20 +f 35/81/21 37/82/21 38/83/21 36/84/21 +f 7/85/22 10/86/22 39/87/22 3/88/22 +f 10/89/23 12/90/23 40/91/23 39/92/23 +f 12/93/24 14/94/24 41/95/24 40/96/24 +f 14/97/25 16/98/25 42/99/25 41/100/25 +f 16/101/26 18/102/26 43/103/26 42/104/26 +f 18/105/27 20/106/27 44/107/27 43/108/27 +f 20/109/28 22/110/28 45/111/28 44/112/28 +f 22/113/29 24/114/29 46/115/29 45/116/29 +f 24/117/30 26/118/30 47/119/30 46/120/30 +f 26/121/31 28/122/31 48/123/31 47/124/31 +f 28/125/32 30/126/32 49/127/32 48/128/32 +f 30/129/33 32/130/33 50/131/33 49/132/33 +f 32/133/34 34/134/34 51/135/34 50/136/34 +f 34/137/35 36/138/35 52/139/35 51/140/35 +f 36/141/36 38/142/36 53/143/36 52/144/36 +f 3/145/37 39/146/37 54/147/37 1/148/37 +f 39/149/38 40/150/38 55/151/38 54/152/38 +f 40/153/39 41/154/39 56/155/39 55/156/39 +f 41/157/40 42/158/40 57/159/40 56/160/40 +f 42/161/41 43/162/41 58/163/41 57/164/41 +f 43/165/42 44/166/42 59/167/42 58/168/42 +f 44/169/43 45/170/43 60/171/43 59/172/43 +f 45/173/44 46/174/44 61/175/44 60/176/44 +f 46/177/45 47/178/45 62/179/45 61/180/45 +f 47/181/46 48/182/46 63/183/46 62/184/46 +f 48/185/47 49/186/47 64/187/47 63/188/47 +f 49/189/48 50/190/48 65/191/48 64/192/48 +f 50/193/49 51/194/49 66/195/49 65/196/49 +f 51/197/50 52/198/50 67/199/50 66/200/50 +f 52/201/51 53/202/51 68/203/51 67/204/51 +f 1/205/52 54/206/52 9/207/52 5/208/52 +f 54/209/53 55/210/53 11/211/53 9/212/53 +f 55/213/54 56/214/54 13/215/54 11/216/54 +f 56/217/55 57/218/55 15/219/55 13/220/55 +f 57/221/56 58/222/56 17/223/56 15/224/56 +f 58/225/57 59/226/57 19/227/57 17/228/57 +f 59/229/58 60/230/58 21/231/58 19/232/58 +f 60/233/59 61/234/59 23/235/59 21/236/59 +f 61/237/60 62/238/60 25/239/60 23/240/60 +f 62/241/61 63/242/61 27/243/61 25/244/61 +f 63/245/62 64/246/62 29/247/62 27/248/62 +f 64/249/63 65/250/63 31/251/63 29/252/63 +f 65/253/64 66/254/64 33/255/64 31/256/64 +f 66/257/65 67/258/65 35/259/65 33/260/65 +f 67/261/66 68/262/66 37/263/66 35/264/66 \ No newline at end of file diff --git a/mods/leads/screenshot.png b/mods/leads/screenshot.png new file mode 100644 index 00000000..392c0576 Binary files /dev/null and b/mods/leads/screenshot.png differ diff --git a/mods/leads/settings.lua b/mods/leads/settings.lua new file mode 100644 index 00000000..2a35a4dc --- /dev/null +++ b/mods/leads/settings.lua @@ -0,0 +1,69 @@ +--[[ + Leads — Adds leads for transporting animals to Minetest. + Copyright © 2023, Silver Sandstone <@SilverSandstone@craftodon.social> + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +]] + + +--- Mod settings. +-- @module settings + + +local function get_n(key, default) + return tonumber(minetest.settings:get(key)) or default; +end; + +local function get_b(key, default) + return minetest.settings:get_bool(key, default); +end; + +local function get_s(key, default) + return minetest.settings:get(key) or default; +end; + + +--- Mod settings. +leads.settings = +{ + lead_length = get_n('leads.lead_length', 8); + lead_strength = get_n('leads.lead_strength', 4); + chat_messages = get_b('leads.chat_messages', false); + drop_mode = get_s('leads.drop_mode', 'auto'); + symmetrical = get_b('leads.symmetrical', false); + -- Visuals: + dynamic_textures = get_b('leads.dynamic_textures', true); + rotate_selection_box = get_b('leads.rotate_selection_box', true); + enable_slack = get_b('leads.enable_slack', true); + -- Protection and ownership: + respect_protection = get_b('leads.respect_protection', true); + allow_leash_unowned = get_b('leads.allow_leash_unowned', true); + allow_leash_owned_other = get_b('leads.allow_leash_owned_other', true); + -- Object types: + allow_leash_player = get_b('leads.allow_leash_player', true); + allow_leash_animal = get_b('leads.allow_leash_animal', true); + allow_leash_monster = get_b('leads.allow_leash_monster', true); + allow_leash_npc = get_b('leads.allow_leash_npc', true); + allow_leash_vehicle = get_b('leads.allow_leash_vehicle', true); + allow_leash_other = get_b('leads.allow_leash_other', true); + -- Advanced: + allow_leash_all = get_b('leads.allow_leash_all', false); + pull_force = get_n('leads.pull_force', 15); + debug = get_b('leads.debug', false); +}; diff --git a/mods/leads/settingtypes.txt b/mods/leads/settingtypes.txt new file mode 100644 index 00000000..112336d9 --- /dev/null +++ b/mods/leads/settingtypes.txt @@ -0,0 +1,79 @@ +# The length a lead can reach before stretching, in metres. +leads.lead_length (Lead length) float 8 1 16 + +# The strength of a lead. The lower this number is, the more easily leads will break. +leads.lead_strength (Lead strength) float 4 0 256 + +# How to drop leads when broken. +# drop: Drop the lead item. +# give: Put the lead in the player's inventory. +# auto: Matches the node drop behaviour of the game. +leads.drop_mode (Item drop mode) enum auto drop,give,auto + +# If this is enabled, both leads will pull both ends equally. +# Otherwise, only the follower will be pulled. +leads.symmetrical (Symmetrical physics) bool false + + +[Visuals] + +# If this is enabled, lead textures will dynamically update to match the length of the lead. +leads.dynamic_textures (Dynamic textures) bool true + +# If this is enabled, leads will have a lead-shaped selection box. Otherwise, the selection box will be a cube in the middle of the lead. +# This requires a 5.7.0+ client. +leads.rotate_selection_box (Long selection box) bool true + +# If this is enabled, leads will curve downwards instead of being straight. +# This is purely aesthetic. +leads.enable_slack (Enable visual slack) bool true + +# Displays messages in the chat console when failing to use a lead. +leads.chat_messages (Show chat messages) bool false + + +[Protection and Ownership] + +# Disallows adding and removing knots in protected areas. +leads.respect_protection (Respect protection) bool true + +# Allows using leads on mobs with no owner. +leads.allow_leash_unowned (Allow leashing unowned mobs) bool true + +# Allows using leads on mobs owned by other players. +leads.allow_leash_owned_other (Allow leashing mobs owned by others) bool true + + +[Object Types] + +# Allows using leads on other players. +leads.allow_leash_player (Allow leashing players) bool true + +# Allows using leads on animals. +leads.allow_leash_animal (Allow leashing animals) bool true + +# Allows using leads on monsters. +leads.allow_leash_monster (Allow leashing monsters) bool true + +# Allows using leads on NPCs. +leads.allow_leash_npc (Allow leashing NPCs) bool true + +# Allows using leads on vehicles. +leads.allow_leash_vehicle (Allow leashing vehicles) bool true + +# Allows using leads on miscellaneous entities. +leads.allow_leash_other (Allow leashing other) bool true + + +[Advanced] + +# Allows using leads on all entities. +# Leashing an unsupported entity may cause unexpected behaviour. +# This overrides all other leashable settings. +leads.allow_leash_all (Allow leashing any object) bool false + +# How hard leads pull entities. +leads.pull_force (Pull force) float 15 1 1000 + +# Prints verbose debugging information to the chat console. +leads.debug (Debug mode) bool false diff --git a/mods/leads/sounds/leads_attach.ogg b/mods/leads/sounds/leads_attach.ogg new file mode 100644 index 00000000..b8bed498 Binary files /dev/null and b/mods/leads/sounds/leads_attach.ogg differ diff --git a/mods/leads/sounds/leads_break.ogg b/mods/leads/sounds/leads_break.ogg new file mode 100644 index 00000000..97d334fd Binary files /dev/null and b/mods/leads/sounds/leads_break.ogg differ diff --git a/mods/leads/sounds/leads_remove.ogg b/mods/leads/sounds/leads_remove.ogg new file mode 100644 index 00000000..ccc1ce06 Binary files /dev/null and b/mods/leads/sounds/leads_remove.ogg differ diff --git a/mods/leads/sounds/leads_stretch.1.ogg b/mods/leads/sounds/leads_stretch.1.ogg new file mode 100644 index 00000000..7edf0061 Binary files /dev/null and b/mods/leads/sounds/leads_stretch.1.ogg differ diff --git a/mods/leads/sounds/leads_stretch.2.ogg b/mods/leads/sounds/leads_stretch.2.ogg new file mode 100644 index 00000000..ab0ddefc Binary files /dev/null and b/mods/leads/sounds/leads_stretch.2.ogg differ diff --git a/mods/leads/textures/leads_lead.png b/mods/leads/textures/leads_lead.png new file mode 100644 index 00000000..a76bbd81 Binary files /dev/null and b/mods/leads/textures/leads_lead.png differ diff --git a/mods/leads/textures/leads_lead_inv.png b/mods/leads/textures/leads_lead_inv.png new file mode 100644 index 00000000..b203d954 Binary files /dev/null and b/mods/leads/textures/leads_lead_inv.png differ diff --git a/mods/leads/textures/leads_lead_knot.png b/mods/leads/textures/leads_lead_knot.png new file mode 100644 index 00000000..9e0fec63 Binary files /dev/null and b/mods/leads/textures/leads_lead_knot.png differ diff --git a/mods/leads/util.lua b/mods/leads/util.lua new file mode 100644 index 00000000..4314e101 --- /dev/null +++ b/mods/leads/util.lua @@ -0,0 +1,361 @@ +--[[ + Leads — Adds leads for transporting animals to Minetest. + Copyright © 2023, Silver Sandstone <@SilverSandstone@craftodon.social> + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +]] + + +--- Generic utility functions. +-- @module util + + +leads.util = {}; + +leads.util.rng = PseudoRandom(0x4C656164); + +local has_objectuuids = minetest.get_modpath('objectuuids') ~= nil; + + +--- Checks if the object is a mob. +-- @param object [ObjectRef] The object to check. +-- @return [boolean] true if the object is a mob. +function leads.util.is_mob(object) + local entity = object:get_luaentity(); + if not entity then + return false; + end; + + -- Explicitly marked as an animal: + local result = entity._leads_is_mob or entity._leads_is_animal; + if result ~= nil then + return result; + end; + + -- Mobs (Redo) and Repixture: + if entity.health then + return true; + end; + + -- Creatura: + if entity._creatura_mob then + return true; + end; + + -- Exile: + if entity.hp and (entity.max_health or entity.max_hp) then + return true; + end; + + return false; +end; + +leads.util.is_animal = leads.util.is_mob; -- Deprecated alias. + + +--- Tiles a texture to the specified size. +-- @param texture [string] The texture to tile. +-- @param src_width [integer] The input texture's width. +-- @param src_height [integer] The input texture's height. +-- @param out_width [integer] The resulting texture's width. +-- @param out_height [integer] The resulting texture's height. +-- @return [string] A texture string. +function leads.util.tile_texture(texture, src_width, src_height, out_width, out_height) + texture = leads.util.escape_texture(('(%s)^[resize:%dx%d'):format(texture, src_width, src_height)); + local parts = {'[combine:', out_width, 'x', out_height}; + local y = 0; + while y < out_height do + local x = 0; + while x < out_width do + table.insert(parts, (':%d,0=%s'):format(x, texture)); + x = x + src_width; + end; + y = y + src_height; + end; + return table.concat(parts, ''); +end; + + +--- Escapes a texture for use with [combine. +-- @param texture [string] A texture string. +-- @return [string] An escaped texture string. +function leads.util.escape_texture(texture) + return string.gsub(texture, '[\\^:]', function(char) return '\\' .. char; end); +end; + + +--- Serialises the identity (not the state) of an object reference. +-- @param obj [ObjectRef|nil] The object to serialise. +-- @return [table|nil] A table identifying the object, or nil if the reference is invalid. +function leads.util.serialise_objref(obj) + if not obj then + return nil; + end; + + local result = {pos = obj:get_pos()}; + + if has_objectuuids then + result.uuid = objectuuids.get_uuid(obj); + end; + + if minetest.is_player(obj) then + result.player_name = obj:get_player_name(); + else + local entity = obj:get_luaentity(); + if not entity then + return nil; + end; + result.name = entity.name; + end; + + return result; +end; + + +--- Deserialises an object ID previously returned from `serialise_objref()`, trying to identify the original object. +-- @param id [table|nil] A table identifying an object. +-- @return [ObjectRef|nil] An object matching the ID, or nil if no such object was found. +function leads.util.deserialise_objref(id) + if not id then + return nil; + end; + + -- Objects are identified by UUID where possible: + if has_objectuuids and id.uuid then + return objectuuids.get_object_by_uuid(id.uuid); + end; + + -- Without UUIDs, players are identified by name: + if id.player_name then + return minetest.get_player_by_name(id.player_name); + end; + + -- Minetest doesn't provide any way to persistently identify Lua entities, + -- so the best we can do is look for an entity with the correct name near + -- the saved position. + if not id.pos then + return nil; + end; + local pos = vector.new(id.pos); + + local range = 3; + local range_min = pos:offset(-range, -range, -range); + local range_max = pos:offset( range, range, range); + local objects = minetest.get_objects_in_area(range_min, range_max); + local best_object = nil; + local best_distance = math.huge; + for __, object in ipairs(objects) do + local entity = object:get_luaentity(); + if entity and (id.name == nil or entity.name == id.name) then + local distance = object:get_pos():distance(pos); + if distance <= 0.0 then + return object; + elseif distance < best_distance then + best_distance = distance; + best_object = object; + end; + end; + end; + + return best_object; +end; + + +--- Checks if two objrefs refer to the same object, which may be a player or entity. +-- @param obj1 [ObjectRef|nil] The first object to compare. +-- @param obj2 [ObjectRef|nil] The second object to compare. +-- @return [boolean] true if obj1 and obj2 reference the same object. +function leads.util.is_same_object(obj1, obj2) + if not (obj1 and obj2) then + return false; + end; + + local obj1_is_player = minetest.is_player(obj1); + local obj2_is_player = minetest.is_player(obj2); + if obj1_is_player ~= obj2_is_player then + return false; + end; + + if obj1_is_player then + return obj1:get_player_name() == obj2:get_player_name(); + else + return obj1:get_luaentity() == obj2:get_luaentity(); + end; +end; + + +--- Returns the relative attachment position for the specified object. +-- @param object [ObjectRef|nil] The player or entity to check. +-- @return [vector] The attachment offset as a vector relative to the object's origin. +function leads.util.get_attach_offset(object) + local properties = object and object:get_properties(); + if not properties then + return vector.zero(); + end; + local hitbox = (properties.physical and properties.collisionbox) or (properties.pointable and properties.selectionbox) or {}; + local bottom = hitbox[2] or 0; + local top = hitbox[5] or 0; + return vector.new(0, (bottom + top) / 2, 0); +end; + + +--- Finds the first item available for crafting. +-- @param ... [string] Any number of prefixed node/item IDs. +-- @return [string|nil] One of the specified IDs, or nil. +function leads.util.first_available_item(...) + for __, name in ipairs{...} do + if name == '' or string.match(name, '^group:.*') or minetest.registered_items[name] then + return name; + end; + end; + return nil; +end; + + +--- Returns a string describing an object, for debugging. +-- @param object [ObjectRef] An object reference. +-- @return [string] A string describing the object. +function leads.util.describe_object(object) + if minetest.is_player(object) then + return ('[Player %q]'):format(object:get_player_name()); + end; + + local entity = object:get_luaentity(); + if entity then + return ('[LuaEntity %q]'):format(entity.name); + end; + + return '[Unknown object]'; +end; + + +--- Prevents the player from interacting for some time. +-- @param name [string] The name of the player. +-- @param time [number] How long to block interactions, in seconds. +function leads.util.block_player_interaction(name, time) + local function _callback() + leads.interaction_blockers[name] = nil; + end; + + local old_timer = leads.interaction_blockers[name]; + if old_timer then + old_timer:cancel(); + end; + + leads.interaction_blockers[name] = minetest.after(time, _callback); +end; + + +--- Figures out the type of an object. +-- @param object [ObjectRef] The object to check. +-- @return [ObjectType] The type of the object. +function leads.util.get_object_type(object) + -- Check player: + if minetest.is_player(object) then + return leads.ObjectType.PLAYER; + end; + + -- Get entity: + local entity = object:get_luaentity(); + if not entity then + return leads.ObjectType.OTHER; + end; + + -- Custom type override: + local override = entity._leads_type or leads.custom_object_types[entity.name]; + if override then + return override; + end; + + -- Get entity definition: + local def = minetest.registered_entities[entity.name]; + if not def then + return leads.ObjectType.OTHER; + end; + + -- Check Creatura (assumed to be animals): + if entity._creatura_mob then + return leads.ObjectType.ANIMAL; + end; + + -- Check Mobs API type: + if def.type == 'animal' then + return leads.ObjectType.ANIMAL; + elseif def.type == 'monster' then + return leads.ObjectType.MONSTER; + elseif def.type == 'npc' then + return leads.ObjectType.NPC; + end; + + return leads.ObjectType.OTHER; +end; + + +--- Gets the owner of an object. +-- @param object [ObjectRef] The object to check. +-- @return [string] The owner's name, or '' for unowned. +function leads.util.get_object_owner(object) + local entity = object:get_luaentity(); + if not entity then + return ''; + end; + + return entity.owner or ''; +end; + + +--- Calculates the mass of a player or entity. +-- @param object [ObjectRef] The object to check. +-- @return [number] The object's mass, in an abstract unit. +function leads.util.get_object_mass(object) + local entity = object:get_luaentity(); + + local mass = entity and entity._leads_mass; + if mass then + return mass; + end; + + local density = entity and entity._leads_density or 1; + local properties = object:get_properties() or {}; + local hitbox = properties.collisionbox or properties.selectionbox; + if not hitbox then + return density; + end; + + local width = math.abs(hitbox[4] - hitbox[1]); + local height = math.abs(hitbox[5] - hitbox[2]); + local depth = math.abs(hitbox[6] - hitbox[3]); + return width * height * depth * density; +end; + + +--- Clamps a value within the specified range. +-- @param value [number] The value to clamp. +-- @param min [number] The lower bound. +-- @param max [number] The upper bound. +-- @return [number] A number between lower and upper. +function leads.util.clamp(value, min, max) + if value < min then + return min; + elseif value > max then + return max; + else + return value; + end; +end; diff --git a/mods/obsidianstuff/LICENSE.md b/mods/obsidianstuff/LICENSE.md new file mode 100644 index 00000000..a379c28d --- /dev/null +++ b/mods/obsidianstuff/LICENSE.md @@ -0,0 +1,456 @@ +## License + +Except for the exceptions stated below, all code is licensed under the [MIT License](LICENSE.md#mit-license), with all textures, models, sounds, and other media licensed under the [CC BY-SA 4.0 License](LICENSE.md#cc-by-sa-40-license). + +## Exceptions + +- + +## Notes + +- + +## MIT License + +MIT License + +Copyright (c) 2021 OgelGames + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +## CC BY-SA 4.0 License + +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public +License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-ShareAlike 4.0 International Public License ("Public +License"). To the extent this Public License may be interpreted as a +contract, You are granted the Licensed Rights in consideration of Your +acceptance of these terms and conditions, and the Licensor grants You +such rights in consideration of benefits the Licensor receives from +making the Licensed Material available under these terms and +conditions. + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + +Section 2 -- Scope. + + a. License grant. + + 1\. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2\. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3\. Term. The term of this Public License is specified in Section + 6(a). + + 4\. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5\. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6\. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1\. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2\. Patent and trademark rights are not licensed under this + Public License. + + 3\. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1\. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2\. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3\. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1\. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-SA Compatible License. + + 2\. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3\. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + + including for purposes of Section 3(b); and + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1\. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2\. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/mods/obsidianstuff/README.md b/mods/obsidianstuff/README.md new file mode 100644 index 00000000..066af08f --- /dev/null +++ b/mods/obsidianstuff/README.md @@ -0,0 +1,63 @@ +# Obsidianstuff Redo [obsidianstuff] + +[![luacheck](https://github.com/OgelGames/obsidianstuff/workflows/luacheck/badge.svg)](https://github.com/OgelGames/obsidianstuff/actions) +[![License](https://img.shields.io/badge/License-MIT%20and%20CC%20BY--SA%204.0-green.svg)](LICENSE.md) +[![Minetest](https://img.shields.io/badge/Minetest-5.0+-blue.svg)](https://www.minetest.net) +[![ContentDB](https://content.minetest.net/packages/OgelGames/obsidianstuff/shields/downloads/)](https://content.minetest.net/packages/OgelGames/obsidianstuff/) + +## Table of Contents + +- [Overview](#overview) +- [Items](#items) +- [Dependencies](#dependencies) +- [Installation](#installation) +- [License](#license) + +## Overview + +A redo of [ObsidianStuff by SoloSniper](https://content.minetest.net/packages/SoloSniper/obsidianstuff), with better textures, simpler crafting and other improvements. + +![Overview Screenshot](images/overview.png?raw=true "Overview Screenshot") + +## Items + +This mod adds the following tools: + +- **Obsidian Axe** +- **Obsidian Pickaxe** +- **Obsidian Shovel** +- **Obsidian Sword** + +![Obsidian Tools](images/tools.png?raw=true "Obsidian Tools") + +And if `3d_armor` is installed, the following armor pieces: + +- **Obsidian Helmet** +- **Obsidian Chestplate** +- **Obsidian Leggings** +- **Obsidian Boots** +- **Obsidian Shield** + +![Obsidian Armor](images/armor.png?raw=true "Obsidian Armor") + +## Dependencies + +**Required** + +- `default` (included in [Minetest Game](https://github.com/minetest/minetest_game)) + +**Optional** + +- [`3d_armor`](https://github.com/minetest-mods/3d_armor) +- [`toolranks`](https://github.com/lisacvuk/minetest-toolranks) +- [`pick_axe_tweaks`](https://github.com/wsor4035/pick_axe_tweaks) + +## Installation + +Download the [master branch](https://github.com/OgelGames/obsidianstuff/archive/master.zip) or the [latest release](https://github.com/OgelGames/obsidianstuff/releases), and follow [the usual installation steps](https://dev.minetest.net/Installing_Mods). + +Alternatively, you can download and install the mod from [ContentDB](https://content.minetest.net/packages/OgelGames/obsidianstuff) or the online content tab in Minetest. + +## License + +Except for any exceptions stated in [LICENSE.md](LICENSE.md#exceptions), all code is licensed under the [MIT License](LICENSE.md#mit-license), with all textures, models, sounds, and other media licensed under the [CC BY-SA 4.0 License](LICENSE.md#cc-by-sa-40-license). diff --git a/mods/obsidianstuff/armor.lua b/mods/obsidianstuff/armor.lua new file mode 100644 index 00000000..88d18419 --- /dev/null +++ b/mods/obsidianstuff/armor.lua @@ -0,0 +1,101 @@ + +-- Helmet + +armor:register_armor("obsidianstuff:helmet_obsidian", { + description = "Obsidian Helmet", + inventory_image = "obsidianstuff_inv_helmet_obsidian.png", + groups = {armor_head = 1, armor_heal = 10, armor_use = 500, armor_fire = 15}, + armor_groups = {fleshy = 14}, + damage_groups = {cracky = 2, snappy = 2, choppy = 2, level = 2} +}) + +minetest.register_craft({ + output = "obsidianstuff:helmet_obsidian", + recipe = { + {"default:obsidian", "default:obsidian", "default:obsidian"}, + {"default:obsidian", "", "default:obsidian"}, + {"", "", ""} + } +}) + + +-- Chestplate + +armor:register_armor("obsidianstuff:chestplate_obsidian", { + description = "Obsidian Chestplate", + inventory_image = "obsidianstuff_inv_chestplate_obsidian.png", + groups = {armor_torso = 1, armor_heal = 10, armor_use = 500, armor_fire = 15}, + armor_groups = {fleshy = 18}, + damage_groups = {cracky = 2, snappy = 2, choppy = 2, level = 2} +}) + +minetest.register_craft({ + output = "obsidianstuff:chestplate_obsidian", + recipe = { + {"default:obsidian", "", "default:obsidian"}, + {"default:obsidian", "default:obsidian", "default:obsidian"}, + {"default:obsidian", "default:obsidian", "default:obsidian"} + } +}) + + +-- Leggings + +armor:register_armor("obsidianstuff:leggings_obsidian", { + description = "Obsidian Leggings", + inventory_image = "obsidianstuff_inv_leggings_obsidian.png", + groups = {armor_legs = 1, armor_heal = 10, armor_use = 500, armor_fire = 15}, + armor_groups = {fleshy = 18}, + damage_groups = {cracky = 2, snappy = 2, choppy = 2, level = 2} +}) + +minetest.register_craft({ + output = "obsidianstuff:leggings_obsidian", + recipe = { + {"default:obsidian", "default:obsidian", "default:obsidian"}, + {"default:obsidian", "", "default:obsidian"}, + {"default:obsidian", "", "default:obsidian"} + } +}) + + +-- Boots + +armor:register_armor("obsidianstuff:boots_obsidian", { + description = "Obsidian Boots", + inventory_image = "obsidianstuff_inv_boots_obsidian.png", + groups = {armor_feet = 1, armor_heal = 10, armor_use = 500, armor_fire = 15}, + armor_groups = {fleshy = 14}, + damage_groups = {cracky = 2, snappy = 2, choppy = 2, level = 2} +}) + +minetest.register_craft({ + output = "obsidianstuff:boots_obsidian", + recipe = { + {"default:obsidian", "", "default:obsidian"}, + {"default:obsidian", "", "default:obsidian"} + } +}) + + +-- Shield + +if minetest.get_modpath("shields") then + + armor:register_armor("obsidianstuff:shield_obsidian", { + description = "Obsidian Shield", + inventory_image = "obsidianstuff_inv_shield_obsidian.png", + groups = {armor_shield = 1, armor_heal = 10, armor_use = 500, armor_fire = 15}, + armor_groups = {fleshy = 18}, + damage_groups = {cracky = 2, snappy = 2, choppy = 2, level = 2} + }) + + minetest.register_craft({ + output = "obsidianstuff:shield_obsidian", + recipe = { + {"default:obsidian", "default:obsidian", "default:obsidian"}, + {"default:obsidian", "default:obsidian", "default:obsidian"}, + {"", "default:obsidian", ""} + } + }) +end diff --git a/mods/obsidianstuff/images/armor.png b/mods/obsidianstuff/images/armor.png new file mode 100644 index 00000000..216514b9 Binary files /dev/null and b/mods/obsidianstuff/images/armor.png differ diff --git a/mods/obsidianstuff/images/overview.png b/mods/obsidianstuff/images/overview.png new file mode 100644 index 00000000..c877f508 Binary files /dev/null and b/mods/obsidianstuff/images/overview.png differ diff --git a/mods/obsidianstuff/images/tools.png b/mods/obsidianstuff/images/tools.png new file mode 100644 index 00000000..10a02e8d Binary files /dev/null and b/mods/obsidianstuff/images/tools.png differ diff --git a/mods/obsidianstuff/init.lua b/mods/obsidianstuff/init.lua new file mode 100644 index 00000000..5be53d8f --- /dev/null +++ b/mods/obsidianstuff/init.lua @@ -0,0 +1,63 @@ + +local MP = minetest.get_modpath("obsidianstuff") + + +-- Tools + +dofile(MP.."/tools.lua") + + +-- Armor + +if minetest.get_modpath("3d_armor") then + dofile(MP.."/armor.lua") +end + + +-- Toolranks support + +if minetest.get_modpath("toolranks") then + + minetest.override_item("obsidianstuff:sword", { + description = toolranks.create_description("Obsidian Sword", 0, 1), + original_description = "Obsidian Sword", + after_use = toolranks.new_afteruse + }) + + minetest.override_item("obsidianstuff:pick", { + description = toolranks.create_description("Obsidian Pickaxe", 0, 1), + original_description = "Obsidian Pickaxe", + after_use = toolranks.new_afteruse + }) + + minetest.override_item("obsidianstuff:axe", { + description = toolranks.create_description("Obsidian Axe", 0, 1), + original_description = "Obsidian Axe", + after_use = toolranks.new_afteruse + }) + + minetest.override_item("obsidianstuff:shovel", { + description = toolranks.create_description("Obsidian Shovel", 0, 1), + original_description = "Obsidian Shovel", + after_use = toolranks.new_afteruse + }) +end + + +-- Pickaxe-Tweaks support + +if minetest.get_modpath("pick_axe_tweaks") then + pick_axe_tweaks.register_pick_axes({"obsidianstuff:pick"}) +end + + +-- Aliases + +minetest.register_alias("obsidianstuff:helmet", "obsidianstuff:helmet_obsidian") +minetest.register_alias("obsidianstuff:chestplate", "obsidianstuff:chestplate_obsidian") +minetest.register_alias("obsidianstuff:leggings", "obsidianstuff:leggings_obsidian") +minetest.register_alias("obsidianstuff:boots", "obsidianstuff:boots_obsidian") +minetest.register_alias("obsidianstuff:shield", "obsidianstuff:shield_obsidian") + +minetest.register_alias("obsidianstuff:block", "default:obsidian") +minetest.register_alias("obsidianstuff:ingot", "default:obsidian") diff --git a/mods/obsidianstuff/mod.conf b/mods/obsidianstuff/mod.conf new file mode 100644 index 00000000..c27d00e9 --- /dev/null +++ b/mods/obsidianstuff/mod.conf @@ -0,0 +1,8 @@ +name = obsidianstuff +description = Adds obsidian tools and armor +depends = default +optional_depends = 3d_armor, pick_axe_tweaks, toolranks +min_minetest_version = 5.0 +release = 9977 +author = OgelGames +title = Obsidianstuff Redo diff --git a/mods/obsidianstuff/screenshot.png b/mods/obsidianstuff/screenshot.png new file mode 100644 index 00000000..6382b740 Binary files /dev/null and b/mods/obsidianstuff/screenshot.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_axe.png b/mods/obsidianstuff/textures/obsidianstuff_axe.png new file mode 100644 index 00000000..8f1e2077 Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_axe.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_boots_obsidian.png b/mods/obsidianstuff/textures/obsidianstuff_boots_obsidian.png new file mode 100644 index 00000000..9b6b04d6 Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_boots_obsidian.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_boots_obsidian_preview.png b/mods/obsidianstuff/textures/obsidianstuff_boots_obsidian_preview.png new file mode 100644 index 00000000..882d2595 Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_boots_obsidian_preview.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_chestplate_obsidian.png b/mods/obsidianstuff/textures/obsidianstuff_chestplate_obsidian.png new file mode 100644 index 00000000..349f4423 Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_chestplate_obsidian.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_chestplate_obsidian_preview.png b/mods/obsidianstuff/textures/obsidianstuff_chestplate_obsidian_preview.png new file mode 100644 index 00000000..a3fa3f4a Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_chestplate_obsidian_preview.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_helmet_obsidian.png b/mods/obsidianstuff/textures/obsidianstuff_helmet_obsidian.png new file mode 100644 index 00000000..68d65689 Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_helmet_obsidian.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_helmet_obsidian_preview.png b/mods/obsidianstuff/textures/obsidianstuff_helmet_obsidian_preview.png new file mode 100644 index 00000000..e96494cd Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_helmet_obsidian_preview.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_inv_boots_obsidian.png b/mods/obsidianstuff/textures/obsidianstuff_inv_boots_obsidian.png new file mode 100644 index 00000000..a7118b4e Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_inv_boots_obsidian.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_inv_chestplate_obsidian.png b/mods/obsidianstuff/textures/obsidianstuff_inv_chestplate_obsidian.png new file mode 100644 index 00000000..c08a590a Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_inv_chestplate_obsidian.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_inv_helmet_obsidian.png b/mods/obsidianstuff/textures/obsidianstuff_inv_helmet_obsidian.png new file mode 100644 index 00000000..481670c2 Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_inv_helmet_obsidian.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_inv_leggings_obsidian.png b/mods/obsidianstuff/textures/obsidianstuff_inv_leggings_obsidian.png new file mode 100644 index 00000000..8e0c2daa Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_inv_leggings_obsidian.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_inv_shield_obsidian.png b/mods/obsidianstuff/textures/obsidianstuff_inv_shield_obsidian.png new file mode 100644 index 00000000..d0e13b1c Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_inv_shield_obsidian.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_leggings_obsidian.png b/mods/obsidianstuff/textures/obsidianstuff_leggings_obsidian.png new file mode 100644 index 00000000..6d14acd7 Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_leggings_obsidian.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_leggings_obsidian_preview.png b/mods/obsidianstuff/textures/obsidianstuff_leggings_obsidian_preview.png new file mode 100644 index 00000000..ff26a2fa Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_leggings_obsidian_preview.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_pick.png b/mods/obsidianstuff/textures/obsidianstuff_pick.png new file mode 100644 index 00000000..3693c03f Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_pick.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_shield_obsidian.png b/mods/obsidianstuff/textures/obsidianstuff_shield_obsidian.png new file mode 100644 index 00000000..e575e01e Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_shield_obsidian.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_shield_obsidian_preview.png b/mods/obsidianstuff/textures/obsidianstuff_shield_obsidian_preview.png new file mode 100644 index 00000000..4687abff Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_shield_obsidian_preview.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_shovel.png b/mods/obsidianstuff/textures/obsidianstuff_shovel.png new file mode 100644 index 00000000..5e2b6c99 Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_shovel.png differ diff --git a/mods/obsidianstuff/textures/obsidianstuff_sword.png b/mods/obsidianstuff/textures/obsidianstuff_sword.png new file mode 100644 index 00000000..16f1c455 Binary files /dev/null and b/mods/obsidianstuff/textures/obsidianstuff_sword.png differ diff --git a/mods/obsidianstuff/tools.lua b/mods/obsidianstuff/tools.lua new file mode 100644 index 00000000..e20b1876 --- /dev/null +++ b/mods/obsidianstuff/tools.lua @@ -0,0 +1,124 @@ + +-- Pickaxe + +minetest.register_tool("obsidianstuff:pick", { + description = "Obsidian Pickaxe", + inventory_image = "obsidianstuff_pick.png", + tool_capabilities = { + full_punch_interval = 0.9, + max_drop_level = 2, + groupcaps = { + cracky = { + times = {[1] = 2.5, [2] = 1.20, [3] = 0.60}, + uses = 20, + maxlevel = 2 + } + }, + damage_groups = {fleshy = 6}, + }, + sound = {breaks = "default_tool_breaks"}, + groups = {pickaxe = 1} +}) + +minetest.register_craft({ + output = "obsidianstuff:pick", + recipe = { + {"default:obsidian", "default:obsidian", "default:obsidian"}, + {"", "default:stick", ""}, + {"", "default:stick", ""} + } +}) + + +-- Shovel + +minetest.register_tool("obsidianstuff:shovel", { + description = "Obsidian Shovel", + inventory_image = "obsidianstuff_shovel.png", + wield_image = "obsidianstuff_shovel.png^[transformR90", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level = 1, + groupcaps = { + crumbly = { + times = {[1] = 1.20, [2] = 0.60, [3] = 0.30}, + uses = 20, + maxlevel = 2 + } + }, + damage_groups = {fleshy = 4}, + }, + sound = {breaks = "default_tool_breaks"}, + groups = {shovel = 1} +}) + +minetest.register_craft({ + output = "obsidianstuff:shovel", + recipe = { + {"default:obsidian"}, + {"default:stick"}, + {"default:stick"} + } +}) + + +-- Axe + +minetest.register_tool("obsidianstuff:axe", { + description = "Obsidian Axe", + inventory_image = "obsidianstuff_axe.png", + tool_capabilities = { + full_punch_interval = 0.8, + max_drop_level = 1, + groupcaps = { + choppy = { + times = {[1] = 2.20, [2] = 1.00, [3] = 0.60}, + uses = 20, + maxlevel = 2 + } + }, + damage_groups = {fleshy = 8}, + }, + sound = {breaks = "default_tool_breaks"}, + groups = {axe = 1} +}) + +minetest.register_craft({ + output = "obsidianstuff:axe", + recipe = { + {"default:obsidian", "default:obsidian", ""}, + {"default:obsidian", "default:stick", ""}, + {"", "default:stick", ""} + } +}) + + +-- Sword + +minetest.register_tool("obsidianstuff:sword", { + description = "Obsidian Sword", + inventory_image = "obsidianstuff_sword.png", + tool_capabilities = { + full_punch_interval = 0.6, + max_drop_level = 1, + groupcaps = { + snappy = { + times = {[1] = 1.90, [2] = 0.90, [3] = 0.30}, + uses = 20, + maxlevel = 2 + } + }, + damage_groups = {fleshy = 10} + }, + sound = {breaks = "default_tool_breaks"}, + groups = {sword = 1} +}) + +minetest.register_craft({ + output = "obsidianstuff:sword", + recipe = { + {"default:obsidian"}, + {"default:obsidian"}, + {"default:stick"} + } +}) diff --git a/mods/quickstack/LICENSE.md b/mods/quickstack/LICENSE.md new file mode 100644 index 00000000..8ec4b348 --- /dev/null +++ b/mods/quickstack/LICENSE.md @@ -0,0 +1,445 @@ +# MIT License + +MIT License + +Copyright (c) 2023 OgelGames + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +# CC BY-SA 4.0 License + +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public +License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-ShareAlike 4.0 International Public License ("Public +License"). To the extent this Public License may be interpreted as a +contract, You are granted the Licensed Rights in consideration of Your +acceptance of these terms and conditions, and the Licensor grants You +such rights in consideration of benefits the Licensor receives from +making the Licensed Material available under these terms and +conditions. + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + +Section 2 -- Scope. + + a. License grant. + + 1\. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2\. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3\. Term. The term of this Public License is specified in Section + 6(a). + + 4\. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5\. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6\. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1\. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2\. Patent and trademark rights are not licensed under this + Public License. + + 3\. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1\. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2\. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3\. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1\. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-SA Compatible License. + + 2\. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3\. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + + including for purposes of Section 3(b); and + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1\. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2\. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/mods/quickstack/README.md b/mods/quickstack/README.md new file mode 100644 index 00000000..15c08ac9 --- /dev/null +++ b/mods/quickstack/README.md @@ -0,0 +1,39 @@ +# Quick Stack [quickstack] + +[![luacheck](https://github.com/OgelGames/quickstack/workflows/luacheck/badge.svg)](https://github.com/OgelGames/quickstack/actions) +[![License](https://img.shields.io/badge/License-MIT%20and%20CC%20BY--SA%204.0-green.svg)](LICENSE.md) +[![Minetest](https://img.shields.io/badge/Minetest-5.5.0+-blue.svg)](https://www.minetest.net) +[![ContentDB](https://content.minetest.net/packages/OgelGames/quickstack/shields/downloads/)](https://content.minetest.net/packages/OgelGames/quickstack/) + +Adds Terraria's "quick stack to nearby chests" feature to Unified Inventory. + +![](textures/quickstack_button.png?raw=true) + +## Usage + +Performing a quick stack is as simple as clicking the button in your inventory. If any items were successfully quick stacked, you will hear a pop sound. + +In addition to the quick stack button, another button allows you to configure how the quick stack button works. You can choose to lock inventory slots, lock all tools, enable metadata matching, or show locked slots. + +Locking inventory slots functions like Terraria's "favorite" feature, in that any locked slots will not be quick stacked. Locking tools works similarly, preventing any tools from being quick stacked, even if they are not in a locked slot. + +## Settings + +By default, all nodes with "chest" in their name or description will be automatically detected for quick stacking. To remove wrongly detected nodes, or add other nodes, you can use the following settings: + +- `quickstack_exclude_nodes` - A comma separated list of node names to exclude from quick stacking. +- `quickstack_include_nodes` - A comma separated list of node names to include in quick stacking. + +## License + +License for code: [MIT](LICENSE.md#mit-license) + +License for media: [CC BY-SA 4.0](LICENSE.md#cc-by-sa-40-license) + +Derivative sources: +- `quickstack_locked.png`: http://www.clker.com/clipart-2687.html +- `quickstack_unlocked.png`: http://www.clker.com/clipart-2981.html +- `quickstack_lock_*.png`: https://www.kenney.nl/assets/game-icons +- `quickstack_settings.png` (gear): https://github.com/minetest/minetest/blob/master/textures/base/pack/gear_icon.png +- `quickstack_pop.ogg`: https://freesound.org/people/MATRIXXX_/sounds/506545 + diff --git a/mods/quickstack/init.lua b/mods/quickstack/init.lua new file mode 100644 index 00000000..a140226a --- /dev/null +++ b/mods/quickstack/init.lua @@ -0,0 +1,33 @@ + +local S = minetest.get_translator("quickstack") +local MP = minetest.get_modpath("quickstack") + +local function get_settings(player) + local str = player:get_meta():get("quickstack_settings") + if not str then + return {} + end + str = minetest.parse_json(str) + return str or {} +end + +local function save_settings(player, settings) + local str = minetest.write_json(settings) + player:get_meta():set_string("quickstack_settings", str) +end + +local quickstack = loadfile(MP.."/quickstack.lua")(get_settings) + +loadfile(MP.."/ui.lua")(quickstack, get_settings, save_settings) + +minetest.register_chatcommand("qs", { + description = S("Quick stack to nearby chests"), + func = function(name) + local player = minetest.get_player_by_name(name) + if not player then + return false + end + quickstack(player) + return true + end +}) diff --git a/mods/quickstack/locale/quickstack.en.tr b/mods/quickstack/locale/quickstack.en.tr new file mode 100644 index 00000000..3ff4a26d --- /dev/null +++ b/mods/quickstack/locale/quickstack.en.tr @@ -0,0 +1,14 @@ + +# textdomain: quickstack + +Quick stack to nearby chests=Quick stack to nearby chests +Quick stack settings=Quick stack settings +Locked inventory slots are not quick stacked=Locked inventory slots are not quick stacked +Lock all inventory slots=Lock all inventory slots +Unlock all inventory slots=Unlock all inventory slots +Lock tools=Lock tools +Tools are not quick stacked=Tools are not quick stacked +Exact match=Exact match +Only items with matching metadata are quick stacked=Only items with matching metadata are quick stacked +Show locked=Show locked +Locked slots are shown in the inventory=Locked slots are shown in the inventory diff --git a/mods/quickstack/locale/template.txt b/mods/quickstack/locale/template.txt new file mode 100644 index 00000000..486bde85 --- /dev/null +++ b/mods/quickstack/locale/template.txt @@ -0,0 +1,14 @@ + +# textdomain: quickstack + +Quick stack to nearby chests= +Quick stack settings= +Locked inventory slots are not quick stacked= +Lock all inventory slots= +Unlock all inventory slots= +Lock tools= +Tools are not quick stacked= +Exact match= +Only items with matching metadata are quick stacked= +Show locked= +Locked slots are shown in the inventory= diff --git a/mods/quickstack/mod.conf b/mods/quickstack/mod.conf new file mode 100644 index 00000000..0d9588b1 --- /dev/null +++ b/mods/quickstack/mod.conf @@ -0,0 +1,7 @@ +name = quickstack +description = Adds Terraria's quick stack feature to Unified Inventory +depends = unified_inventory +min_minetest_version = 5.5.0 +release = 20269 +author = OgelGames +title = Quick Stack diff --git a/mods/quickstack/quickstack.lua b/mods/quickstack/quickstack.lua new file mode 100644 index 00000000..9be5a23e --- /dev/null +++ b/mods/quickstack/quickstack.lua @@ -0,0 +1,123 @@ + +local get_settings = ... +local chest_nodenames, cooldowns = {}, {} + +local function can_quickstack(settings, index, stack) + if stack:is_empty() or settings["qs_locked_"..index] or + settings.qs_lock_tools and minetest.registered_tools[stack:get_name()] then + return false + end + return true +end + +local function find_nearby_chests(player) + local pos = vector.round(player:get_pos()) + local pos1 = vector.subtract(pos, vector.new(4, 3, 4)) + local pos2 = vector.add(pos, vector.new(4, 3, 4)) + return minetest.find_nodes_in_area(pos1, pos2, chest_nodenames, true) +end + +local function stack_to_chest(settings, pos, player, items, allow_put) + local inv = minetest.get_meta(pos):get_inventory() + if inv:get_size("main") == 0 or inv:is_empty("main") then + return + end + local items_added = false + for _,stack in pairs(items) do + if inv:contains_item("main", stack:peek_item(1), settings.qs_exact_match) then + local count = stack:get_count() + if allow_put then + count = allow_put(pos, "main", nil, stack, player) + end + if count and count > 0 then + local to_add = stack:take_item(count) + local leftover = inv:add_item("main", to_add) + if leftover:get_count() < count then + items_added = true + end + stack:add_item(leftover) + end + end + end + return items_added +end + +local function quickstack(player) + if not player then + return + end + local inv = player:get_inventory() + if inv:is_empty("main") then + return + end + local player_name = player:get_player_name() + local now = os.time() + if cooldowns[player_name] and now < cooldowns[player_name] then + return + end + cooldowns[player_name] = now + 3 + local settings = get_settings(player) + local items = {} + for i, stack in pairs(inv:get_list("main")) do + if can_quickstack(settings, i, stack) then + items[i] = stack + end + end + if next(items) == nil then + return + end + local chests = find_nearby_chests(player) + if next(chests) == nil then + return + end + local items_added = false + for name, positions in pairs(chests) do + local def = minetest.registered_nodes[name] + if def then + local allow_put = def.allow_metadata_inventory_put + for _,pos in pairs(positions) do + if stack_to_chest(settings, pos, player, items, allow_put) then + items_added = true + end + end + end + end + if items_added then + for i, stack in pairs(items) do + inv:set_stack("main", i, stack) + end + minetest.sound_play("quickstack_pop", {to_player = player_name, gain = 0.1}) + end +end + +local function setting_to_table(setting) + local t = {} + local str = minetest.settings:get(setting) + if not str then + return t + end + for _,name in pairs(str:split(",")) do + name = name:trim() + if minetest.registered_nodes[name] then + t[name] = true + end + end + return t +end + +minetest.register_on_mods_loaded(function() + local exclude_nodes = setting_to_table("quickstack_exclude_nodes") + local include_nodes = setting_to_table("quickstack_include_nodes") + for name, def in pairs(minetest.registered_nodes) do + if not exclude_nodes[name] then + if name:find("chest") or def.description and def.description:find("[Cc]hest") then + include_nodes[name] = true + end + end + end + for name in pairs(include_nodes) do + table.insert(chest_nodenames, name) + end +end) + +return quickstack diff --git a/mods/quickstack/screenshot.png b/mods/quickstack/screenshot.png new file mode 100644 index 00000000..31bacfd0 Binary files /dev/null and b/mods/quickstack/screenshot.png differ diff --git a/mods/quickstack/settingtypes.txt b/mods/quickstack/settingtypes.txt new file mode 100644 index 00000000..ab4929a3 --- /dev/null +++ b/mods/quickstack/settingtypes.txt @@ -0,0 +1,7 @@ +# Comma separated list of nodes to exclude from quick stacking. +# Used to exclude nodes that have "chest" in their name, but shouldn't be quick stacked to. +quickstack_exclude_nodes (Exclude nodes) string + +# Comma separated list of nodes to include in quick stacking. +# Used to add support for nodes that don't have "chest" in their name. +quickstack_include_nodes (Include nodes) string diff --git a/mods/quickstack/sounds/quickstack_pop.ogg b/mods/quickstack/sounds/quickstack_pop.ogg new file mode 100644 index 00000000..74b6265a Binary files /dev/null and b/mods/quickstack/sounds/quickstack_pop.ogg differ diff --git a/mods/quickstack/textures/quickstack_button.png b/mods/quickstack/textures/quickstack_button.png new file mode 100644 index 00000000..3372f7ba Binary files /dev/null and b/mods/quickstack/textures/quickstack_button.png differ diff --git a/mods/quickstack/textures/quickstack_lock_icon.png b/mods/quickstack/textures/quickstack_lock_icon.png new file mode 100644 index 00000000..e11a930e Binary files /dev/null and b/mods/quickstack/textures/quickstack_lock_icon.png differ diff --git a/mods/quickstack/textures/quickstack_lock_overlay.png b/mods/quickstack/textures/quickstack_lock_overlay.png new file mode 100644 index 00000000..bfb3fa63 Binary files /dev/null and b/mods/quickstack/textures/quickstack_lock_overlay.png differ diff --git a/mods/quickstack/textures/quickstack_locked.png b/mods/quickstack/textures/quickstack_locked.png new file mode 100644 index 00000000..6ae9f090 Binary files /dev/null and b/mods/quickstack/textures/quickstack_locked.png differ diff --git a/mods/quickstack/textures/quickstack_settings.png b/mods/quickstack/textures/quickstack_settings.png new file mode 100644 index 00000000..feba0855 Binary files /dev/null and b/mods/quickstack/textures/quickstack_settings.png differ diff --git a/mods/quickstack/textures/quickstack_unlocked.png b/mods/quickstack/textures/quickstack_unlocked.png new file mode 100644 index 00000000..4ab795ff Binary files /dev/null and b/mods/quickstack/textures/quickstack_unlocked.png differ diff --git a/mods/quickstack/ui.lua b/mods/quickstack/ui.lua new file mode 100644 index 00000000..0fcdf01c --- /dev/null +++ b/mods/quickstack/ui.lua @@ -0,0 +1,115 @@ + +local S = minetest.get_translator("quickstack") +local FS = function(...) + return minetest.formspec_escape(S(...)) +end +local floor, format, insert, concat = math.floor, string.format, table.insert, table.concat +local quickstack, get_settings, save_settings = ... +local ui = unified_inventory + +ui.register_button("quickstack", { + type = "image", + image = "quickstack_button.png", + tooltip = S("Quick stack to nearby chests"), + action = quickstack, +}) + +ui.register_button("quickstack_settings", { + type = "image", + image = "quickstack_settings.png", + tooltip = S("Quick stack settings"), +}) + +local function get_inventory_overlay(player, style) + local settings = get_settings(player) + if not settings.qs_show_locked then + return "" + end + local overlay = {} + for i=1, 32 do + local x, y = (i-1)%8, floor((i-1)/8) + if settings["qs_locked_"..i] then + insert(overlay, format("image[%f,%f;1.25,1.25;quickstack_lock_overlay.png]", + style.std_inv_x + x*1.25, style.std_inv_y + y*1.25)) + end + end + return concat(overlay) +end + +ui.register_page("quickstack_settings", {get_formspec = function(player, style) + local settings = get_settings(player) + local offset = style.is_lite_mode and 0.7 or 1.0 + local formspec = { + style.standard_inv_bg, + format("label[%f,%f;%s]", style.form_header_x, style.form_header_y, FS("Quick stack settings")), + format("tooltip[%f,%f;6.7,3.3;%s]", + style.std_inv_x + 0.1, offset, FS("Locked inventory slots are not quick stacked")), + format("image_button[%f,%f;0.75,0.75;quickstack_locked.png;qs_lock_all;]tooltip[qs_lock_all;%s]", + style.std_inv_x + 7.35, offset, FS("Lock all inventory slots")), + format("image_button[%f,%f;0.75,0.75;quickstack_unlocked.png;qs_unlock_all;]tooltip[qs_unlock_all;%s]", + style.std_inv_x + 8.2, offset, FS("Unlock all inventory slots")), + } + for i=1, 32 do + local x, y = (i-1)%8, floor((i-1)/8) + if settings["qs_locked_"..i] then + insert(formspec, format("image_button[%f,%f;0.75,0.75;quickstack_lock_icon.png;%s;]", + style.std_inv_x + 0.1 + x*0.85, offset + y*0.85, "qs_unlock_"..i)) + else + insert(formspec, format("button[%f,%f;0.75,0.75;%s;]", + style.std_inv_x + 0.1 + x*0.85, offset + y*0.85, "qs_lock_"..i)) + end + end + local checkboxes = { + {"qs_lock_tools", FS("Lock tools"), FS("Tools are not quick stacked")}, + {"qs_exact_match", FS("Exact match"), FS("Only items with matching metadata are quick stacked")}, + {"qs_show_locked", FS("Show locked"), FS("Locked slots are shown in the inventory")}, + } + for i, box in ipairs(checkboxes) do + local checked = settings[box[1]] and "true" or "false" + insert(formspec, format("checkbox[%f,%f;%s;%s;%s]tooltip[%s;%s]", + style.std_inv_x + 7.35, offset + 1.2 + (i-1)*0.6, box[1], box[2], checked, box[1], box[3])) + end + return {formspec = concat(formspec)} +end}) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if not player or not fields or formname ~= "" then + return + end + local settings = get_settings(player) + local update_formspec = false + for i=1, 32 do + if (fields.qs_lock_all or fields["qs_lock_"..i]) and not settings["qs_locked_"..i] then + settings["qs_locked_"..i] = true + update_formspec = true + elseif (fields.qs_unlock_all or fields["qs_unlock_"..i]) and settings["qs_locked_"..i] then + settings["qs_locked_"..i] = nil + update_formspec = true + end + end + for _,box in pairs({"qs_lock_tools", "qs_exact_match", "qs_show_locked"}) do + if fields[box] then + settings[box] = fields[box] == "true" and true or nil + update_formspec = true + end + end + if update_formspec then + save_settings(player, settings) + minetest.sound_play("ui_click", {to_player=player:get_player_name(), gain = 0.1}) + ui.set_inventory_formspec(player, "quickstack_settings") + end +end) + +minetest.register_on_mods_loaded(function() + for _,page in pairs(ui.pages) do + local old_get_formspec = page.get_formspec + page.get_formspec = function(player, style) + local formspec = old_get_formspec(player, style) + if formspec.draw_inventory ~= false then + local overlay = get_inventory_overlay(player, style) + formspec.formspec = formspec.formspec..overlay + end + return formspec + end + end +end) diff --git a/mods/sandwiches/LICENCE.txt b/mods/sandwiches/LICENCE.txt new file mode 100644 index 00000000..a2ad4d64 --- /dev/null +++ b/mods/sandwiches/LICENCE.txt @@ -0,0 +1,23 @@ +License for Code +---------------- + +Copyright (C) 2018 Annalysa + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +License for Textures +--------------------------------------- + +CC-BY-SA 3.0 UNPORTED. Created by Annalysa \ No newline at end of file diff --git a/mods/sandwiches/README.txt b/mods/sandwiches/README.txt new file mode 100644 index 00000000..f64195c5 --- /dev/null +++ b/mods/sandwiches/README.txt @@ -0,0 +1,36 @@ +Ciao! +This is my first mod, so sorry if there are any errors or english typos. + +This mod adds to your minetest game various type of sandwiches, +including vegetarian, nutella, bacon, pb&j and many more, +if you have supported mods like BBQ and cucina_vegana! +There are also some other related food like a sweet bread pudding, +made from sandwiches crumbs and jam. + +Developed and tested for Minetest 0.4.17 until version 1.7 +Developed and tested for Minetest 5.4.x since 1.8 + +Current version: +v 1.9 - complete overhaul plus added some toasts through the use of farming:skillet +v 1.8 - lost to time (RIP old pc) +v 1.7 - added cucina_vegana compatibility + more sandwiches +v 1.6 - added bbq compatibility + chicken strips +v 1.5 - added ethereal compatibility and lots of sandwiches +v 1.4 - peanut crop and bacon added +v 1.3 - made moretrees optional +v 1.2 - replaced meat with craftable ham +v 1.1 - fixed some on_use values +v 1.0 - the very first release; + +This mod has some dependencies, so some sandwiches might not be present if +some mods are not present. + +default farming or farming-redo by TenPlus1 - (Essential) provides the main feature: transforming bread into slices +mobs by TenPlus1 or any other cow-chicken-pig prividing mod - (Optional) provides access to meat related items +moretrees by VanessaE - (Optional) (thanks R-One) provides Noyella +ethereal by TenPlus1 - (Optional) provides banana related recipes and two fish sandwiches +Your Dad's BBQ Mod (aka bbq) by Grizzly Adam - (Optional) provides special recipes +cucina_vegana by Clyde - (Optional) (thanks friend) provides gourmet recipes +other mods can be found in the mod.conf and provide some minor additional features + +This mod has a LGPL v2.1 Licence. diff --git a/mods/sandwiches/TODO.txt b/mods/sandwiches/TODO.txt new file mode 100644 index 00000000..2bd2e3f3 --- /dev/null +++ b/mods/sandwiches/TODO.txt @@ -0,0 +1,9 @@ +X picnic basket (little storage for group:food_sandwiches) + +cheese support (add bruschetta then?) +"mozzarella", "tomato", "olive_oil", +"garlic_bread", "garlic_bread", "garlic_bread", + +X ketchup and maionesse -- what is their purpose ??? +im not adding them until they have multiple purposes + diff --git a/mods/sandwiches/crops/peanuts.lua b/mods/sandwiches/crops/peanuts.lua new file mode 100644 index 00000000..d539fbad --- /dev/null +++ b/mods/sandwiches/crops/peanuts.lua @@ -0,0 +1,234 @@ +local crop_def = {} +local mope = "sandwiches:mortar_pestle" + +if minetest.global_exists("farming") and farming.mod == "redo" then + mope = "farming:mortar_pestle" + + -- peanut seeds + minetest.register_node("sandwiches:seed_peanut", { + description = "Peanuts Seed", + tiles = {"seed_peanut.png"}, + inventory_image = "sandwiches_seed_peanut.png", + wield_image = "sandwiches_seed_peanut.png", + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1, flammable = 4}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, + }, + }, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "sandwiches:peanut_1") + end, + }) + minetest.register_craftitem("sandwiches:peanuts", { + description = "Peanuts", + on_use = minetest.item_eat(1), + inventory_image = "sandwiches_peanut.png", -- not peanutS due to compatibility with the default farming mod + groups = {food = 1, food_peanut = 1, food_peanuts = 1, flammable = 1}, + }) + + minetest.register_alias("sandwiches:seed_peanuts", "sandwiches:seed_peanut") + --minetest.register_alias("sandwiches:peanuts", "sandwiches:peanut") + + -- peanut plant definition + crop_def = { + drawtype = "plantlike", + tiles = {"sandwiches_peanut_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, + }, + }, + groups = { snappy = 3, flammable = 4, plant = 1, flora = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 }, + sounds = default.node_sound_leaves_defaults() + } + + -- stage 1 + minetest.register_node("sandwiches:peanut_1", table.copy(crop_def)) + + -- stage 2 + crop_def.tiles = {"sandwiches_peanut_2.png"} + minetest.register_node("sandwiches:peanut_2", table.copy(crop_def)) + + -- stage 3 + crop_def.tiles = {"sandwiches_peanut_3.png"} + crop_def.drop = { + items = { + {items = {'sandwiches:peanuts 2'}, rarity = 1}, + {items = {'sandwiches:peanuts'}, rarity = 2}, + } + } + minetest.register_node("sandwiches:peanut_3", table.copy(crop_def)) + + + -- stage 4 + crop_def.tiles = {"sandwiches_peanut_4.png"} + crop_def.drop = { + items = { + {items = {'sandwiches:peanuts 4'}, rarity = 1}, + {items = {'sandwiches:peanuts 2'}, rarity = 2}, + {items = {'sandwiches:peanuts'}, rarity = 4}, + {items = {'sandwiches:seed_peanut 2'}, rarity = 1}, + {items = {'sandwiches:seed_peanut 2'}, rarity = 3}, + } + } + minetest.register_node("sandwiches:peanut_4", table.copy(crop_def)) + + -- stage 5 (spreading stage) + -- as the crop grows to the 5th stage, it has less seeds + -- because they are "used" when spreading + crop_def.tiles = {"sandwiches_peanut_5.png"} + crop_def.drop = { + items = { + {items = {'sandwiches:peanuts 3'}, rarity = 1}, + {items = {'sandwiches:peanuts 2'}, rarity = 2}, + {items = {'sandwiches:peanuts'}, rarity = 4}, + {items = {'sandwiches:seed_peanut'}, rarity = 1}, + {items = {'sandwiches:seed_peanut'}, rarity = 2}, + } + } + minetest.register_node("sandwiches:peanut_5", table.copy(crop_def)) + + -- stage 6 (final) + -- the plant is "exhausted" from the spreading + crop_def.tiles = {"sandwiches_peanut_6.png"} + crop_def.groups.growing = 0 + crop_def.drop = { + items = { + {items = {'sandwiches:peanuts 3'}, rarity = 1}, + {items = {'sandwiches:peanuts 2'}, rarity = 2}, + {items = {'sandwiches:peanuts'}, rarity = 4}, + {items = {'sandwiches:seed_peanut'}, rarity = 1}, + {items = {'sandwiches:seed_peanut'}, rarity = 4}, + } + } + minetest.register_node("sandwiches:peanut_6", table.copy(crop_def)) + + if minetest.get_modpath("bonemeal") then + bonemeal:add_crop({ {"sandwiches:peanut_", 5, "sandwiches:seed_peanut"}, }) + end + +else -- farming-redo not present ----------------------------------------------- + + farming.register_plant("sandwiches:peanut", { + description = "Peanut Seed", + harvest_description = "Peanuts", + inventory_image = "sandwiches_seed_peanut.png", + steps = 6, + minlight = 12, + maxlight = default.LIGHT_MAX, + fertility = {"grassland"}, + groups = {flammable = 4, attached_node = 1, snappy = 3, plant = 1, flora = 1,}, + }) + if minetest.registered_items["sandwiches:peanuts"] then + minetest.override_item("sandwiches:peanuts", { + --description = "Peanuts", + on_use = minetest.item_eat(1), + inventory_image = "sandwiches_peanut.png", + groups = {food = 1, food_peanut = 1, food_peanuts = 1, flammable = 1}, + }) + end + + if minetest.get_modpath("bonemeal") then + bonemeal:add_crop({ {"sandwiches:peanut_", 5, "sandwiches:seed_peanut"}, }) + end + +end -- register different plant nodes + +minetest.register_abm({ + name = "sandwiches:peanut_spreading_abm", + nodenames = {"sandwiches:peanut_5"}, + interval = 5, + chance = 5, + action = function(pos, node) + -- Check 3x3x3 nodes around the currently triggered node + local soil_positions = minetest.find_nodes_in_area_under_air( + vector.add(pos, -1), vector.add(pos, 1), + {"farming:soil_wet", "farming:soil"} + ) + if(next(soil_positions) ~= null) then + local found_soil_pos = soil_positions[math.random(#soil_positions)] + found_soil_pos.y = found_soil_pos.y +1 + minetest.set_node(found_soil_pos, {name="sandwiches:peanut_1"}) + if(math.random(10) > 5) then + minetest.set_node(pos,{name="sandwiches:peanut_6"}) + end + end + end +}) + +-- WILD PEANUTS -- + +minetest.register_node("sandwiches:wild_peanut", { + description = "Wild Peanuts", + paramtype = "light", + walkable = false, + drop = { + items = { + {items = {'sandwiches:peanuts'}, rarity = 1}, + {items = {'sandwiches:peanuts'}, rarity = 2}, + {items = {'sandwiches:seed_peanut 2'}, rarity = 1}, + {items = {'sandwiches:seed_peanut'}, rarity = 3}, + } + }, + drawtype = "plantlike", + paramtype2 = "facedir", + tiles = {"sandwiches_peanut_4.png"}, + inventory_image = "sandwiches_peanut_4.png", + wield_image = "sandwiches_peanut_4.png", + groups = {snappy = 3, dig_immediate=1, flammable=2, plant=1, flora = 1, attached_node = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { {-0.5, -0.5, -0.5, 0.5, -0.35, 0.5}, }, + }, +}) + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:dirt"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.0003, + spread = {x = 70, y = 70, z = 70}, + seed = 2570, + octaves = 3, + persist = 0.6 + }, + y_min = 0, + y_max = 100, + decoration = "sandwiches:wild_peanut", +}) + +-- PEANUT BUTTER -- + +minetest.register_craftitem("sandwiches:peanut_butter", { + description = "Peanut Butter", + on_use = minetest.item_eat(2), + groups = {food = 2, food_peanut_butter = 1, flammable = 1}, + inventory_image = "sandwiches_peanut_butter.png" +}) + +minetest.register_craft({ + output = "sandwiches:peanut_butter 5", + type = "shapeless"; + recipe = {"sandwiches:peanuts", "sandwiches:peanuts", "sandwiches:peanuts", + "sandwiches:peanuts", "sandwiches:peanuts", "sandwiches:peanuts", + "group:food_mortar_pestle","sandwiches:peanuts", "sandwiches:peanuts", + }, + replacements = {{"group:food_mortar_pestle", mope }}, +}) diff --git a/mods/sandwiches/depends.txt b/mods/sandwiches/depends.txt new file mode 100644 index 00000000..1376196c --- /dev/null +++ b/mods/sandwiches/depends.txt @@ -0,0 +1,15 @@ +default +farming +flowers? +mobs? +mobs_animal? +petz? +animalia? +moretrees? +cacaotree? +ethereal? +bbq? +cucina_vegana? +bonemeal? +xdecor? +potted_farming? diff --git a/mods/sandwiches/description.txt b/mods/sandwiches/description.txt new file mode 100644 index 00000000..db4f25d4 --- /dev/null +++ b/mods/sandwiches/description.txt @@ -0,0 +1 @@ +Add Sandwiches to your game! Choose between meat, vegetarian or sweet sandwiches! diff --git a/mods/sandwiches/init.lua b/mods/sandwiches/init.lua new file mode 100644 index 00000000..c7f9bcd2 --- /dev/null +++ b/mods/sandwiches/init.lua @@ -0,0 +1,554 @@ +-- Mod: sandwiches + +sandwiches = {} +sandwiches.version = 1.9 -- complete overhaul +sandwiches.path = minetest.get_modpath("sandwiches") + +sandwiches.ingredient_support = { + ["true"] = true, -- provided by this mod or its dependencies + ["meat"] = false, + ["veggie"] = false, + ["berry"] = false, + ["banana"] = false, + ["choco"] = false, + ["honey"] = minetest.get_modpath("bees") ~= nil or minetest.get_modpath("mobs_animal") ~= nil or minetest.get_modpath("xdecor") ~= nil, + ["fish"] = false, + ["mushroom"] = minetest.get_modpath("flowers") ~= nil, + ["dairy"] = minetest.get_modpath("mobs_animal") ~= nil, + ["herbs"] = minetest.get_modpath("potted_farming") ~= nil, +} + +-- for future improvements (need cuisine) +local pot = "sandwiches:pot" --jam and jelly +local skillet = "sandwiches:skillet" -- toasts and tasty veg +local board = "sandwiches:cutting_board" -- ham bacon chicken_strips +local mope = "sandwiches:mortar_pestle" -- tabasco +local mix = "sandwiches:mixing_bowl" --sprinkles +if minetest.global_exists("farming") and farming.mod == "redo" then + pot = "farming:pot" + skillet = "farming:skillet" + board = "farming:cutting_board" + mope = "farming:mortar_pestle" + mix = "farming:mixing_bowl" + + sandwiches.ingredient_support.veggie = true + sandwiches.ingredient_support.berry = true + sandwiches.ingredient_support.choco = true + +else + dofile(sandwiches.path .. "/luas/tools.lua") +end + +-- BREAD -- + +minetest.register_craftitem("sandwiches:bread_slice", { + description = "Bread slice", + on_use = minetest.item_eat(1), + groups = {food = 1, food_bread_slice = 1, flammable = 1}, + inventory_image = "sandwiches_bread_slice.png" +}) +minetest.register_craft({ + output = "sandwiches:bread_slice 8", + type = "shapeless", + recipe = {"group:food_bread", "group:food_cutting_board", "group:food_bread"}, + replacements = { {"group:food_cutting_board", board }, } +}) + +minetest.register_craftitem("sandwiches:bread_crumbs", { + description = "Bread crumbs", + on_use = minetest.item_eat(1), + groups = {food = 1, food_bread_crumbs = 1, flammable = 1}, + inventory_image = "bread_crumbs.png" +}) +minetest.register_craft({ + output = "sandwiches:bread_crumbs 4", + type = "shapeless", + recipe = {"group:food_bread_slice"}, +}) + +if minetest.get_modpath("animalia") or minetest.get_modpath("mobs") then + if minetest.get_modpath("petz") then + sandwiches.ingredient_support.honey = true + end + dofile(sandwiches.path .. "/luas/meat.lua") + sandwiches.ingredient_support.meat = true + sandwiches.ingredient_support.dairy = true +end +if minetest.get_modpath("cheese") then + sandwiches.ingredient_support.dairy = true +end +if sandwiches.ingredient_support.meat and sandwiches.ingredient_support.dairy and sandwiches.ingredient_support.veggie then + dofile(sandwiches.path .. "/luas/toasts.lua") +end +if minetest.get_modpath("cucina_vegana") then + dofile(sandwiches.path .. "/luas/cucina_vegana.lua") + sandwiches.ingredient_support.banana = true + sandwiches.ingredient_support.veggie = true + sandwiches.ingredient_support.banana = true + sandwiches.ingredient_support.honey = true +end +if minetest.get_modpath("bbq") and sandwiches.ingredient_support.meat then + dofile(sandwiches.path .. "/luas/bbq.lua") +end +if minetest.get_modpath("ethereal") then + dofile(sandwiches.path .. "/luas/fish.lua") + sandwiches.ingredient_support.fish = true + sandwiches.ingredient_support.banana = true + sandwiches.ingredient_support.berry = true +end +if minetest.get_modpath("agriculture") then + dofile(sandwiches.path .. "/luas/agriculture.lua") + sandwiches.ingredient_support.veggie = true + sandwiches.ingredient_support.berry = true +end +if minetest.get_modpath("x_farming") then + dofile(sandwiches.path .. "/luas/xfarming.lua") + sandwiches.ingredient_support.veggie = true + sandwiches.ingredient_support.berry = true + sandwiches.ingredient_support.choco = true +end +if minetest.get_modpath("cacaotree") then + sandwiches.ingredient_support.choco = true +end +if minetest.get_modpath("moretrees") and sandwiches.ingredient_support.choco then + dofile(sandwiches.path .. "/luas/nutella.lua") +end + + +if minetest.get_modpath("bushes_classic") or sandwiches.ingredient_support.berry then + +-- BREAD PUDDING -- + -- no jam, no bread pudding + minetest.register_craftitem("sandwiches:sweet_bread_pudding_raw", { + description = "Uncooked sweet bread pudding", + groups = {food_sweet_bread = 1, flammable = 1}, + inventory_image = "sweet_bread_pudding_raw.png" + }) + minetest.register_craftitem("sandwiches:sweet_bread_pudding", { + description = "Sweet bread pudding", + on_use = minetest.item_eat(10), + groups = {food = 10, food_sweet_bread = 1, flammable = 1}, + inventory_image = "sweet_bread_pudding.png" + }) + minetest.register_craft({ + output = "sandwiches:sweet_bread_pudding_raw", + recipe = { + {"sandwiches:bread_crumbs", "sandwiches:bread_crumbs", "sandwiches:bread_crumbs"}, + {"group:food_jam", "group:food_sugar", "group:food_jam"}, + {"sandwiches:bread_crumbs", "sandwiches:bread_crumbs", "sandwiches:bread_crumbs"}, + } + }) + minetest.register_craft({ + type = "cooking", + output = "sandwiches:sweet_bread_pudding", + recipe = "sandwiches:sweet_bread_pudding_raw", + cooktime = 15, + }) + +-- JAM AND JELLY -- + local jj = { + ["blue"] = { {food_jam = 1, food_blueberry_jam = 1, flammable = 1},}, + ["rasp"] = { {food_jam = 1, food_raspberry_jam = 1, flammable = 1},}, + ["straw"] = { {food_jam = 1, food_strawberry_jam = 1, flammable = 1},}, + ["black"] = { {food_jam = 1, food_blackberry_jam = 1, flammable = 1},}, + } + for k, v in pairs(jj) do + minetest.register_craftitem("sandwiches:".. k .."berry_jam", { + description = k:gsub("(%a)(%a+)", function(a, b) return string.upper(a) .. string.lower(b) end).."berry jam", + on_use = minetest.item_eat(2), + groups = v[1], + inventory_image = "sandwiches_".. k .."berry_jam.png" + }) + + minetest.register_craft({ + output = "sandwiches:".. k .."berry_jam 5", + recipe = { + {"group:food_".. k .."berry", "group:food_sugar", "group:food_".. k .."berry"}, + {"group:food_sugar", "group:food_pot", "group:food_sugar"}, + {"group:food_".. k .."berry", "group:food_sugar", "group:food_".. k .."berry"}, + }, + replacements = {{"group:food_pot", pot }}, + }) + end + + minetest.register_craftitem("sandwiches:grape_jelly", { + description = "Grape jelly", + on_use = minetest.item_eat(2), + groups = {food = 2, food_jam = 1, flammable = 1 }, + inventory_image = "sandwiches_grape_jelly.png" + }) + minetest.register_craft({ + output = "sandwiches:grape_jelly 5", + recipe = { + {"group:food_grapes", "group:food_sugar", "group:food_grapes"}, + {"group:food_sugar", "group:food_pot", "group:food_sugar"}, + {"group:food_grapes", "group:food_sugar", "group:food_grapes"}, + }, + replacements = {{"group:food_pot", "group:food_pot"}}, + }) + + minetest.register_craftitem("sandwiches:multi_jam", { + description = "Multi jam", + on_use = minetest.item_eat(2), + groups = {food = 2, food_jam = 1, flammable = 1}, + inventory_image = "sandwiches_multi_jam.png" + }) + minetest.register_craft({ + output = "sandwiches:multi_jam 5", + recipe = { + {"group:food_berry", "group:food_sugar", "group:food_berry"}, + {"group:food_sugar", "group:food_pot", "group:food_sugar"}, + {"group:food_berry", "group:food_sugar", "group:food_berry"}, + }, + replacements = {{"group:food_pot", "group:food_pot"}}, + }) + minetest.register_craft({ + output = "sandwiches:multi_jam 3", + type = "shapeless"; + recipe = { "group:food_jam", "group:food_jam", "group:food_jam", }, + }) + +end -- if merries are registered + +-- MEAT -- moved + +-- PEANUTS -- moved + +-- SAUCE -- + +minetest.register_node("sandwiches:tabasco", { + description = "Tabasco bottle", + inventory_image = "tabasco.png", + wield_image = "tabasco.png", + drawtype = "plantlike", + paramtype = "light", + is_ground_content = false, + tiles = {"tabasco.png"}, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1, food_hot = 1, food_spicy = 1, food_sauce = 1}, + sounds = default.node_sound_glass_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, +}) +minetest.register_craft({ + output = "sandwiches:tabasco 3", + type = "shapeless"; + recipe = {"group:food_chili_pepper", "group:food_chili_pepper", "group:food_chili_pepper", + "group:food_chili_pepper", "group:food_chili_pepper", "group:food_chili_pepper", + "group:food_mortar_pestle", "vessels:glass_bottle", + }, + replacements = {{"group:food_mortar_pestle", mope }} +}) + +-- TASTY VEGGIES -- +local herb = "group:food_parsley" +local rosm = "group:food_pepper_ground" +if sandwiches.ingredient_support.herbs then + herb = "potted_farming:sage" + rosm = "group:food_rosemary" +end + + minetest.register_craftitem("sandwiches:butter_carrots", { + description = "Butter carrots", + on_use = minetest.item_eat(3), + groups = {food = 3, food_tasty_veggie = 1, flammable = 1}, + inventory_image = "butter_carrots.png" + }) + minetest.register_craft({ + output = "sandwiches:butter_carrots 5", + type = "shapeless", + recipe = { + "group:food_carrot", "group:food_carrot", + "group:food_skillet", "group:food_butter", herb, + }, + replacements = {{"group:food_skillet", skillet }} + }) + + minetest.register_craftitem("sandwiches:roasted_potatoes", { + description = "Roasted potatoes", + on_use = minetest.item_eat(4), + groups = {food = 4, food_tasty_veggie = 1, flammable = 1}, + inventory_image = "roasted_potatoes.png" + }) + minetest.register_craft({ + output = "sandwiches:roasted_potatoes 5", + type = "shapeless", + recipe = { + "group:food_potato", "group:food_potato", + "group:food_skillet", "group:food_oil", rosm, + }, + replacements = { + {"group:food_skillet", skillet }, + {"group:food_pepper_ground", "vessels:glass_bottle"}, + {"group:food_oil", "vessels:glass_bottle"}, } + }) + + minetest.register_craftitem("sandwiches:caramelized_onion", { + description = "Caramelized onion", + on_use = minetest.item_eat(3), + groups = {food = 3, food_tasty_veggie = 1, flammable = 1}, + inventory_image = "caramelized_onion.png" + }) + minetest.register_craft({ + output = "sandwiches:caramelized_onion 4", + type = "shapeless"; + recipe = {"group:food_onion", "group:food_onion", "group:food_sugar", "group:food_skillet"}, + replacements = {{"group:food_skillet", skillet }} + }) + +if sandwiches.ingredient_support.mushroom then + minetest.register_craftitem("sandwiches:trifolat_mushrooms", { + description = "Trifolat Mushrooms", + on_use = minetest.item_eat(3), + groups = {food = 3, food_tasty_veggie = 1, flammable = 1}, + inventory_image = "trifolat_mushrooms.png" + }) + minetest.register_craft({ + output = "sandwiches:trifolat_mushrooms 4", + type = "shapeless", + recipe = { + "group:food_mushroom", "group:food_mushroom", "group:food_garlic_clove", + "group:food_skillet", "group:food_oil", "group:food_parsley", + }, + replacements = {{"group:food_skillet", skillet }, + {"group:food_oil", "vessels:glass_bottle" },} + }) +end + +-- -- + +dofile(sandwiches.path .. "/crops/peanuts.lua") + + +local sandwiches_recipes = { +--[[ name, is definable, fancy name, hunger, + recipe, + alternative recipe (optional), + replacements (optional), +]]-- + ["american"] = {{"veggie", "meat", "dairy"}, "American", 8, + {"group:food_cucumber", "group:food_ham", "group:food_cheese"}, + {"group:food_cucumber", "group:food_bacon", "group:food_cheese"}, + }, + ["veggie"] = {{"veggie", "veggie", "veggie"}, "Veggie", 8, + {"group:food_cucumber", "group:food_tomato", "group:food_potato"}, + {"group:food_carrot", "group:food_onion", "group:food_beetroot"}, + }, + ["classic"] = {{"veggie", "meat", "veggie"}, "Classic", 8, + {"group:food_lettuce", "group:food_ham", "group:food_tomato"}, + {"group:food_lettuce", "farming:tofu_cooked", "group:food_tomato" } + }, + ["blt"] = {{"veggie", "meat", "veggie"}, "BLT", 8, + {"group:food_lettuce", "group:food_bacon" ,"group:food_tomato"}, + }, + ["ham"] = {{"meat", "meat", "meat"}, "Ham", 8, + {"group:food_ham", "group:food_ham", "group:food_ham"}, + }, + ["bacon"] = {{"meat", "meat", "meat"}, "Bacon", 8, + {"group:food_bacon", "group:food_bacon", "group:food_bacon"}, + }, + ["egg_and_bacon"] = {{"meat", "meat", "meat"}, "Egg&Bacon", 10, + {"group:food_bacon", "group:food_egg_fried", "group:food_bacon"}, + }, + ["tasty_meat"] = {{"veggie", "meat", "veggie"}, "Tasty veggie with meat", 10, + {"group:food_tasty_veggie", "group:food_ham", "group:food_tasty_veggie"}, + {"group:food_tasty_veggie", "sandwiches:chicken_strips", "group:food_tasty_veggie"} + }, + ["enhanced_bacon"] = {{"meat", "mushroom", "meat"}, "Enhanced bacon", 10, + {"group:food_bacon", "sandwiches:trifolat_mushrooms", "group:food_bacon"}, + }, + ["tasty_veggie"] = {{"veggie", "veggie", "veggie"}, "Tasty veggie", 10, + {"sandwiches:caramelized_onion", "sandwiches:butter_carrots" ,"sandwiches:roasted_potatoes" }, + {"group:food_tasty_veggie", "group:food_tasty_veggie" ,"group:food_tasty_veggie" }, + }, + ["hot_ham"] = {{"meat", "veggie", "meat"}, "Hot ham", 9, + {"group:food_ham", "sandwiches:tabasco", "group:food_ham"}, + nil, + {{"sandwiches:tabasco", "vessels:glass_bottle"},}, + }, + ["hot_veggie"] = {{"veggie", "veggie", "veggie"}, "Hot veggie", 9, + {"group:food_tomato", "sandwiches:tabasco", "group:food_potato"}, + {"group:food_carrot", "sandwiches:tabasco", "group:food_onion"}, + {{"sandwiches:tabasco", "vessels:glass_bottle"},} + }, + ["italian"] = {{"mushroom", "veggie", "dairy"}, "Italian", 7, + {"flowers:mushroom_brown", "group:food_tomato", "group:food_cheese"}, + }, + ["cheesy"] = {{"dairy", "dairy", "dairy"}, "Cheesy", 8, + {"group:food_cheese","group:food_cheese", "group:food_cheese"}, + }, + ["sweet"] = {{"true", "honey", "true"}, "Sweet", 8, -- apples are from default, a dependant mod + {"default:apple", "group:food_honey", "default:apple"}, + nil, + {{"cucina_vegana:dandelion_honey", "vessels:glass_bottle"}, + {"petz:honey_bottle", "vessels:glass_bottle"}}, + }, + ["blueberry_jam"] = {{"veggie", "veggie", "veggie"}, "Blueberry jam", 7, + {"sandwiches:blueberry_jam", "sandwiches:blueberry_jam", "sandwiches:blueberry_jam"}, + }, + ["raspberry_jam"] = {{"veggie", "veggie", "veggie"}, "Rasperry jam", 7, + {"sandwiches:raspberry_jam", "sandwiches:raspberry_jam", "sandwiches:raspberry_jam"}, + }, + ["strawberry_jam"] = {{"veggie", "veggie", "veggie"}, "Strawberry jam", 7, + {"sandwiches:strawberry_jam", "sandwiches:strawberry_jam", "sandwiches:strawberry_jam"}, + }, + ["blackberry_jam"] = {{"veggie", "veggie", "veggie"}, "Blackberry jam", 7, + {"sandwiches:blackberry_jam", "sandwiches:blackberry_jam", "sandwiches:blackberry_jam"}, + }, + ["grape_jelly"] = {{"veggie", "veggie", "veggie"}, "Grape jelly", 7, + {"sandwiches:grape_jelly", "sandwiches:grape_jelly", "sandwiches:grape_jelly"}, + }, + ["pb_and_j"] = {{"true", "veggie", "true"}, "PeanutButter & Jelly", 10, -- peanut_butter is provided + {"sandwiches:peanut_butter", "sandwiches:grape_jelly", "sandwiches:peanut_butter"}, + }, + ["jam"] = {{"veggie", "veggie", "veggie"}, "Jam", 7, + {"group:food_jam","group:food_jam", "group:food_jam"}, + }, + ["banana_and_chocolate"] = {{"banana", "choco", "banana"}, "Banana&Chocolate", 8, + {"group:food_banana", "farming:chocolate_dark", "group:food_banana"}, + {"group:food_banana", "cacaotree:milk_chocolate", "group:food_banana"}, + }, + ["elvis"] = {{"banana", "true", "meat"}, "Elvis", 9, + {"group:food_banana", "sandwiches:peanut_butter", "group:food_bacon"}, + }, + ["marinated_chicken"] = {{"veggie", "meat", "honey"}, "Marinated chicken", 10, + {"group:food_soy_sauce", "group:food_chicken_strips", "group:food_honey"}, + nil, + {{"cucina_vegana:dandelion_honey", "vessels:glass_bottle"}, + {"petz:honey_bottle", "vessels:glass_bottle"}, + {"farming:soy_sauce", "vessels:glass_bottle"}}, + }, +} + +local function ingredients_registered (ingredient_types) + local s = sandwiches.ingredient_support + local can_register = false + if s[ingredient_types[1]] and s[ingredient_types[2]] and s[ingredient_types[3]] then + can_register = true + end + + return can_register +end + +for k, v in pairs(sandwiches_recipes) do + + if ingredients_registered(v[1]) then + local replace + if v[6] ~= nil then + replace = v[6] + end + minetest.register_craftitem("sandwiches:".. k .."_sandwich", { + description = v[2].." sandwich", + on_use = minetest.item_eat(v[3], "sandwiches:bread_crumbs"), + groups = {food = v[3] ,food_sandwich = 1, flammable = 1}, + inventory_image = k .."_sandwich.png", + }) + + minetest.register_craft({ + output = "sandwiches:".. k .."_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + v[4], + {"", "sandwiches:bread_slice", ""}, + }, + replacements = replace + }) + + if v[5] ~= nil then + minetest.register_craft({ + output = "sandwiches:".. k .."_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + v[5], + {"", "sandwiches:bread_slice", ""}, + }, + replacements = replace + }) + end + + end -- registerable + +end + +-- ALIASES for compatibility, no unknown nodes or items must exist --- + +--minetest.register_alias("name", "convert_to") +minetest.register_alias("sandwiches:rasperry_jam_sandwich", "sandwiches:raspberry_jam_sandwich") +minetest.register_alias("sandwiches:tasty_bacon_sandwich", "sandwiches:tasty_meat_sandwich") +minetest.register_alias("sandwiches:tasty_chicken_sandwich", "sandwiches:tasty_meat_sandwich") +minetest.register_alias("sandwiches:tasty_ham_sandwich", "sandwiches:tasty_meat_sandwich") +minetest.register_alias("sandwiches:classic_vegan_sandwich", "sandwiches:classic_sandwich") + +-- SPECIAL SANDWICHES -- + +minetest.register_craftitem("sandwiches:triple_mega_sandwich", { + description = "Triple Mega sandwich", + on_use = minetest.item_eat(20, "sandwiches:bread_crumbs"), + groups = {food = 20, food_big_sandwich = 1, flammable = 1}, + inventory_image = "triple_mega_sandwich.png" +}) +minetest.register_craft({ + output = "sandwiches:triple_mega_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"group:food_sandwich", "group:food_sandwich","group:food_sandwich"}, + {"", "sandwiches:bread_slice", ""}, + } +}) + +minetest.register_craftitem("sandwiches:sand_sandwich", { + description = "Sand-sandwich", + inventory_image = "sand_sandwich.png", + groups = {food = 5, food_sandwich = 1, flammable = 1}, + on_use = function(itemstack, player, pointed_thing) + if player:get_hp() > 2 then + player:set_hp(player:get_hp() - 2) + minetest.chat_send_player(player:get_player_name(), "Ouch!" ) + end + return minetest.do_item_eat(5, nil, itemstack, player, pointed_thing) + end, +}) +minetest.register_craft({ + output = "sandwiches:sand_sandwich", + recipe = { + {"default:sand", "default:sand", "default:sand"}, + {"default:cactus", "default:cactus", "default:cactus"}, + {"default:sand", "default:sand", "default:sand"}, + } +}) +if sandwiches.ingredient_support.dairy then + +--fairy bread, (butter and sprinkles) +minetest.register_craftitem("sandwiches:sprinkles", { + description = "Sprinkles", + on_use = minetest.item_eat(1), + groups = {food = 1, food_sprinkles = 1, flammable = 1}, + inventory_image = "sugar_sprinkles.png" +}) +minetest.register_craft({ + output = "sandwiches:sprinkles 5", + recipe = { + {"dye:red", "group:food_sugar", "dye:yellow"}, + {"group:food_sugar", "group:food_sugar", "group:food_sugar"}, + {"dye:blue", "group:food_mixing_bowl", "dye:green"}, + }, + replacements = {{"group:food_mixing_bowl", mix }} +}) + +minetest.register_craftitem("sandwiches:fairy_bread", { + description = "Fairy bread", + on_use = minetest.item_eat(6, "sandwiches:bread_crumbs"), + groups = {food = 6, food_fairy_bread = 1, flammable = 1}, + inventory_image = "fairy_bread.png" +}) +minetest.register_craft({ + output = "sandwiches:fairy_bread 2", + recipe = { + {"sandwiches:sprinkles", "sandwiches:sprinkles", "sandwiches:sprinkles"}, + {"sandwiches:sprinkles", "sandwiches:sprinkles", "sandwiches:sprinkles"}, + {"sandwiches:bread_slice", "group:food_butter", "sandwiches:bread_slice"}, + }, +}) + +end -- if dairy is present ( need butter ) diff --git a/mods/sandwiches/luas/TODO.lua b/mods/sandwiches/luas/TODO.lua new file mode 100644 index 00000000..4068de03 --- /dev/null +++ b/mods/sandwiches/luas/TODO.lua @@ -0,0 +1,46 @@ +-- TODO -- + +minetest.register_craftitem("sandwiches:ketchup", { + description = "Ketchup bottle", + inventory_image = "ketchup.png", + groups = {food_sauce = 1, food_ketchup = 1}, +}) +minetest.register_craft({ + output = "sandwiches:ketchup 5", + type = "shapeless"; + recipe = {"group:food_tomato", "group:food_tomato", "group:food_tomato", + "group:food_sugar", "group:food_sugar", "group:food_sugar", + "group:food_pot", "vessels:glass_bottle", + }, + replacements = {{"group:food_pot", "group:food_pot"}} +}) + +minetest.register_craftitem("sandwiches:spicy_ketchup", { +description = "Spicy ketchup bottle", +inventory_image = "ketchup.png", -- colorize more red ? +groups = {food_sauce = 1, food_ketchup = 1, food_spicy = 1, food_hot = 1}, +}) +minetest.register_craft({ + output = "sandwiches:spicy_ketchup 5", + type = "shapeless"; + recipe = {"group:food_tomato", "group:food_tomato", "group:food_tomato", + "group:food_sugar", "group:food_sugar", "group:food_chili_pepper", + "group:food_pot", "vessels:glass_bottle", "group:food_chili_pepper" + }, + replacements = {{"group:food_pot", "group:food_pot"}} +}) + +minetest.register_craftitem("sandwiches:maionaisse", { + description = "Maionaisse", + inventory_image = "maionaisse.png", + groups = {food_sauce = 1, food_maionaisse = 1}, +}) +minetest.register_craft({ + output = "sandwiches:maionaisse 5", + type = "shapeless"; + recipe = {"group:food_egg", "group:food_egg", "group:food_oil", + "group:food_oil", "group:food_lemon", "group:food_lemon", + "group:food_mixing_bowl", "vessels:glass_bottle", + }, + replacements = {{"group:food_mixing_bowl", "group:food_mixing_bowl"}} +}) diff --git a/mods/sandwiches/luas/agriculture.lua b/mods/sandwiches/luas/agriculture.lua new file mode 100644 index 00000000..1aa82a41 --- /dev/null +++ b/mods/sandwiches/luas/agriculture.lua @@ -0,0 +1,148 @@ +local pot = "sandwiches:pot" +local skillet = "sandwiches:skillet" +if minetest.global_exists("farming") and farming.mod == "redo" then + pot = "farming:pot" + skillet = "farming:skillet" +end + +minetest.register_craft({ + output = "sandwiches:classic_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"agriculture:lettuce", "group:food_ham", "agriculture:tomato"}, + {"", "sandwiches:bread_slice", ""}, + }, +}) +minetest.register_craft({ + output = "sandwiches:classic_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"agriculture:lettuce", "farming:tofu_cooked", "agriculture:tomato"}, + {"", "sandwiches:bread_slice", ""}, + }, +}) + +minetest.register_craft({ + output = "sandwiches:blt_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"agriculture:lettuce", "group:food_bacon" ,"agriculture:tomato"}, + {"", "sandwiches:bread_slice", ""}, + }, +}) + + +minetest.register_craft({ + output = "sandwiches:italian_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"flowers:mushroom_brown", "agriculture:tomato", "group:food_cheese"}, + {"", "sandwiches:bread_slice", ""}, + }, +}) + +minetest.register_craft({ + output = "sandwiches:hot_veggie_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"agriculture:tomato", "sandwiches:tabasco", "agriculture:potato"}, + {"", "sandwiches:bread_slice", ""}, + }, + replacements = {{"sandwiches:tabasco", "vessels:glass_bottle"},} +}) +minetest.register_craft({ + output = "sandwiches:hot_veggie_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"agriculture:carrot", "sandwiches:tabasco", "group:food_onion"}, + {"", "sandwiches:bread_slice", ""}, + }, + replacements = {{"sandwiches:tabasco", "vessels:glass_bottle"},} +}) + + +minetest.register_craft({ + output = "sandwiches:veggie_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"group:food_cucumber", "agriculture:tomato", "agriculture:potato"}, + {"", "sandwiches:bread_slice", ""}, + }, +}) +minetest.register_craft({ + output = "sandwiches:veggie_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"agriculture:carrot", "group:food_onion", "agriculture:sugar_beet"}, + {"", "sandwiches:bread_slice", ""}, + }, +}) + +-- NON SANDWICH CRAFTS -- +local herb = "group:food_parsley" +local rosm = "group:food_pepper_ground" +if sandwiches.ingredient_support.herbs then + herb = "potted_farming:sage" + rosm = "group:food_rosemary" +end +minetest.register_craft({ + output = "sandwiches:roasted_potatoes 5", + type = "shapeless", + recipe = { + "agriculture:potato", "agriculture:potato", + "group:food_skillet", "group:food_oil", rosm, + }, + replacements = { + {"group:food_skillet", skillet }, + {"group:food_pepper_ground", "vessels:glass_bottle"}, + {"group:food_oil", "vessels:glass_bottle"}, } +}) +minetest.register_craft({ + output = "sandwiches:butter_carrots 5", + type = "shapeless", + recipe = { + "agriculture:carrot", "agriculture:carrot", + "group:food_skillet", "group:food_butter", herb, + }, + replacements = {{"group:food_skillet", skillet }} +}) + +minetest.register_craft({ + output = "sandwiches:strawberry_jam 5", + recipe = { + {"agriculture:strawberry", "group:food_sugar", "agriculture:strawberry"}, + {"group:food_sugar", "group:food_pot", "group:food_sugar"}, + {"agriculture:strawberry", "group:food_sugar", "agriculture:strawberry"}, + }, + replacements = {{"group:food_pot", pot }}, +}) + +minetest.register_craft({ + output = "sandwiches:blueberry_jam 5", + recipe = { + {"agriculture:huckleberry", "group:food_sugar", "agriculture:huckleberry"}, + {"group:food_sugar", "group:food_pot", "group:food_sugar"}, + {"agriculture:huckleberry", "group:food_sugar", "agriculture:huckleberry"}, + }, + replacements = {{"group:food_pot", pot }}, +}) + +minetest.register_craft({ + output = "sandwiches:strawberry_jam 5", + recipe = { + {"agriculture:strawberry", "agriculture:sugar", "agriculture:strawberry"}, + {"agriculture:sugar", "group:food_pot", "agriculture:sugar"}, + {"agriculture:strawberry", "agriculture:sugar", "agriculture:strawberry"}, + }, + replacements = {{"group:food_pot", pot }}, +}) + +minetest.register_craft({ + output = "sandwiches:blueberry_jam 5", + recipe = { + {"agriculture:huckleberry", "agriculture:sugar", "agriculture:huckleberry"}, + {"agriculture:sugar", "group:food_pot", "agriculture:sugar"}, + {"agriculture:huckleberry", "agriculture:sugar", "agriculture:huckleberry"}, + }, + replacements = {{"group:food_pot", pot }}, +}) diff --git a/mods/sandwiches/luas/bbq.lua b/mods/sandwiches/luas/bbq.lua new file mode 100644 index 00000000..b38a661f --- /dev/null +++ b/mods/sandwiches/luas/bbq.lua @@ -0,0 +1,51 @@ +-- SANDWHICHES -- +if minetest.global_exists("farming") and farming.mod == "redo" then -- need pepper + + minetest.register_craftitem("sandwiches:hamwich", { + description = "Hamwich", + on_use = minetest.item_eat(11, "sandwiches:bread_crumbs"), + groups = {food_sandwich = 1}, + inventory_image = "hamwich.png" + }) + minetest.register_craft({ + output = "sandwiches:hamwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"group:food_pepper", "bbq:hamburger_patty", "group:food_cheese"}, + {"", "sandwiches:bread_slice", ""}, + } + }) + +end + +minetest.register_craftitem("sandwiches:jerky_sandwich", { + description = "Jerky sandwich", + on_use = minetest.item_eat(11, "sandwiches:bread_crumbs"), + groups = {food_sandwich = 1}, + inventory_image = "jerky_sandwich.png" +}) +minetest.register_craft({ + output = "sandwiches:jerky_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"sandwiches:tabasco", "bbq:beef_jerky", "group:food_cheese"}, + {"", "sandwiches:bread_slice", ""}, + }, + replacements = {{"sandwiches:tabasco", "vessels:glass_bottle"},} +}) + +--NON SANDWICH ITEMS CRAFT -- + +minetest.register_craft({ + output = "sandwiches:ham 3", + type = "shapeless"; + recipe = {"bbq:beef", "group:food_cutting_board"}, + replacements = {{"group:food_cutting_board", "farming:cutting_board"}} +}) + +minetest.register_craft({ + output = "sandwiches:caramelized_onion 4", -- added an use to molasses + type = "shapeless"; + recipe = {"group:food_onion", "group:food_onion", "bbq:molasses", "group:food_skillet"}, + replacements = {{"group:food_skillet", "farming:skillet"}} +}) diff --git a/mods/sandwiches/luas/cucina_vegana.lua b/mods/sandwiches/luas/cucina_vegana.lua new file mode 100644 index 00000000..68b4b5c2 --- /dev/null +++ b/mods/sandwiches/luas/cucina_vegana.lua @@ -0,0 +1,262 @@ +local skillet = "sandwiches:skillet" +local mope = "sandwiches:mortar_pestle" +if minetest.global_exists("farming") and farming.mod == "redo" then + mope = "farming:mortar_pestle" + skillet = "farming:skillet" +end + +-- SANDWICHES -- + +minetest.register_craftitem("sandwiches:tasty_asparagus_sandwich", { + description = "Tasty asparagus sandwich", + on_use = minetest.item_eat(7, "sandwiches:bread_crumbs"), + groups = {food = 7, food_sandwich = 1, food_vegan = 1}, + inventory_image = "tasty_asparagus_sandwich.png" +}) +minetest.register_craft({ + output = "sandwiches:tasty_asparagus_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"cucina_vegana:asparagus", "cucina_vegana:sauce_hollandaise", "cucina_vegana:asparagus"}, + {"", "sandwiches:bread_slice", ""}, + } +}) + +if sandwiches.ingredient_support.meat then + + minetest.register_craftitem("sandwiches:ham_and_asparagus_sandwich", { + description = "Ham and asparagus sandwich", + on_use = minetest.item_eat(7, "sandwiches:bread_crumbs"), + groups = {food = 7, food_sandwich = 1}, + inventory_image = "ham_and_asparagus_sandwich.png" + }) + minetest.register_craft({ + output = "sandwiches:ham_and_asparagus_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"cucina_vegana:asparagus", "group:food_ham" ,"cucina_vegana:asparagus"}, + {"", "sandwiches:bread_slice", ""}, + } + }) + + minetest.register_craftitem("sandwiches:club_sandwich", { + description = "Club sandwich", + on_use = minetest.item_eat(18, "sandwiches:bread_crumbs"), + groups = {food = 18, food_sandwich = 1, }, + inventory_image = "club_sandwich.png" + }) + minetest.register_craft({ + output = "sandwiches:club_sandwich", + recipe = { + {"sandwiches:bread_slice", "group:food_tomato" , "sandwiches:bread_slice"}, + {"sandwiches:chicken_strips", "cucina_vegana:sauce_hollandaise" ,"group:food_bacon" }, + {"sandwiches:bread_slice", "group:food_lettuce", "sandwiches:bread_slice"}, + } + }) + + +end -- if ham is present + +minetest.register_craftitem("sandwiches:tasty_tofu_sandwich", { + description = "Tofu and asparagus sandwich", + on_use = minetest.item_eat(8, "sandwiches:bread_crumbs"), + groups = {food = 8, food_sandwich = 1, food_vegan = 1}, + inventory_image = "tasty_tofu_sandwich.png" +}) +minetest.register_craft({ + output = "sandwiches:tasty_tofu_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"cucina_vegana:asparagus", "cucina_vegana:tofu_cooked" ,"cucina_vegana:asparagus"}, + {"", "sandwiches:bread_slice", ""}, + } +}) +minetest.register_craft({ + output = "sandwiches:tasty_tofu_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"cucina_vegana:asparagus", "farming:tofu_cooked" ,"cucina_vegana:asparagus"}, + {"", "sandwiches:bread_slice", ""}, + } +}) + +minetest.register_craftitem("sandwiches:tofu_sandwich", { + description = "Tofu sandwich", + on_use = minetest.item_eat(7, "sandwiches:bread_crumbs"), + groups = {food = 7, food_sandwich = 1, food_vegan = 1}, + inventory_image = "tofu_sandwich.png" +}) +minetest.register_craft({ + output = "sandwiches:tofu_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"cucina_vegana:chives","cucina_vegana:tofu_cooked", "cucina_vegana:rosemary"}, + {"", "sandwiches:bread_slice", ""}, + } +}) +minetest.register_craft({ + output = "sandwiches:tofu_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"cucina_vegana:chives","farming:tofu_cooked", "cucina_vegana:rosemary"}, + {"", "sandwiches:bread_slice", ""}, + } +}) + +minetest.register_craftitem("sandwiches:gourmet_sandwich", { + description = "Gourmet sandwich", + on_use = minetest.item_eat(12, "sandwiches:bread_crumbs"), + groups = {food = 12, food_sandwich = 1}, + inventory_image = "gourmet_vegan_sandwich.png" +}) +minetest.register_alias("sandwiches:gourmet_meat_sandwich", "sandwiches:gourmet_sandwich") +minetest.register_alias("sandwiches:gourmet_vegan_sandwich", "sandwiches:gourmet_sandwich") + +minetest.register_craft({ + output = "sandwiches:gourmet_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"cucina_vegana:chives", "group:food_ham" ,"cucina_vegana:sauce_hollandaise" }, + {"", "sandwiches:bread_slice", ""}, + } +}) +minetest.register_craft({ + output = "sandwiches:gourmet_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"cucina_vegana:chives", "group:food_chicken_strips" ,"cucina_vegana:sauce_hollandaise" }, + {"", "sandwiches:bread_slice", ""}, + } +}) +minetest.register_craft({ + output = "sandwiches:gourmet_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"cucina_vegana:chives", "cucina_vegana:tofu_cooked" ,"cucina_vegana:sauce_hollandaise" }, + {"", "sandwiches:bread_slice", ""}, + } +}) +minetest.register_craft({ + output = "sandwiches:gourmet_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"cucina_vegana:chives", "farming:tofu_cooked" ,"cucina_vegana:sauce_hollandaise" }, + {"", "sandwiches:bread_slice", ""}, + } +}) +minetest.register_craft({ + output = "sandwiches:gourmet_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"cucina_vegana:chives", "cucina_vegana:imitation_meat" ,"cucina_vegana:sauce_hollandaise" }, + {"", "sandwiches:bread_slice", ""}, + } +}) +minetest.register_craft({ + output = "sandwiches:gourmet_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"cucina_vegana:chives", "cucina_vegana:imitation_poultry" ,"cucina_vegana:sauce_hollandaise" }, + {"", "sandwiches:bread_slice", ""}, + } +}) + +-- ALREADY EXISTING SANDWICHES CRAFT -- + +minetest.register_craft({ + output = "sandwiches:classic_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"group:food_lettuce", "cucina_vegana:tofu_cooked", "group:food_tomato" }, + {"", "sandwiches:bread_slice", ""}, + } +}) + +minetest.register_craft({ + output = "sandwiches:hot_veggie_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"cucina_vegana:asparagus", "sandwiches:tabasco", "group:food_lettuce"}, + {"", "sandwiches:bread_slice", ""}, + }, + replacements = {{"sandwiches:tabasco", "vessels:glass_bottle"},} +}) + +minetest.register_craft({ + output = "sandwiches:fancy_garlic_sandwich", + recipe = { + {"", "sandwiches:garlic_bread", ""}, + {"cucina_vegana:tofu_cooked", "sandwiches:trifolat_mushrooms", "group:food_cheese"}, + {"", "sandwiches:garlic_bread", ""}, + }, +}) +minetest.register_craft({ + output = "sandwiches:fancy_garlic_sandwich", + recipe = { + {"", "sandwiches:garlic_bread", ""}, + {"farming:tofu_cooked", "sandwiches:trifolat_mushrooms", "group:food_cheese"}, + {"", "sandwiches:garlic_bread", ""}, + }, +}) + +minetest.register_craft({ + output = "sandwiches:tasty_garlic_sandwich", + recipe = { + {"", "sandwiches:garlic_bread", ""}, + {"group:food_tomato", "cucina_vegana:tofu_cooked", "group:food_cheese"}, + {"", "sandwiches:garlic_bread", ""}, + }, +}) +minetest.register_craft({ + output = "sandwiches:tasty_garlic_sandwich", + recipe = { + {"", "sandwiches:garlic_bread", ""}, + {"group:food_tomato", "farming:tofu_cooked", "group:food_cheese"}, + {"", "sandwiches:garlic_bread", ""}, + }, +}) + +--ALREADY EXISTING NON SANDWICH ITEMS + +minetest.register_craft({ + output = "sandwiches:tabasco 3", + type = "shapeless"; + recipe = {"group:food_chili", "group:food_chili", "group:food_chili", + "group:food_chili", "group:food_chili", "group:food_chili", + "group:food_mortar_pestle", "vessels:glass_bottle", + }, + replacements = {{"group:food_mortar_pestle", mope }} +}) + +minetest.register_craft({ + output = "sandwiches:roasted_potatoes 5", + type = "shapeless", + recipe = { + "group:food_potato", "group:food_potato", + "group:food_skillet", "group:food_oil", "cucina_vegana:rosemary", + }, + replacements = {{"group:food_skillet", "farming:skillet"}, {"group:food_oil", "vessels:glass_bottle"}} +}) + +minetest.register_craft({ + output = "sandwiches:garlic_bread 4", + recipe = { + {"", "cucina_vegana:garlic", ""}, + {"sandwiches:bread_slice", "sandwiches:bread_slice", "sandwiches:bread_slice"}, + {"group:food_skillet", "sandwiches:bread_slice", "group:food_butter"}, + }, + replacements = {{"group:food_skillet", skillet}} +}) + +-- MOLASSES -- + +if minetest.registered_items["sandwiches:caramelized_onion"] then + + minetest.register_craft({ + output = "sandwiches:caramelized_onion 4", + type = "shapeless"; + recipe = {"group:food_onion", "group:food_onion", "cucina_vegana:molasses", "group:food_skillet"}, + replacements = {{"group:food_skillet", "farming:skillet"}} + }) + +end diff --git a/mods/sandwiches/luas/ethereal.lua b/mods/sandwiches/luas/ethereal.lua new file mode 100644 index 00000000..4e82c7fa --- /dev/null +++ b/mods/sandwiches/luas/ethereal.lua @@ -0,0 +1,87 @@ +-- banana_and_chocolate_sandwich, strawberry jam and strawberry_jam_sandwich are added. + +minetest.register_craftitem("sandwiches:strawberry_jam", { + description = "Strawberry jam", + on_use = minetest.item_eat(2), + groups = {food_jam = 1, }, + inventory_image = "strawberry_jam.png" +}) + +minetest.register_craftitem("sandwiches:strawberry_jam_sandwich", { + description = "Strawberry Jam Sandwich", + on_use = minetest.item_eat(7, "sandwiches:bread_crumbs"), + groups = {food_sandwich = 1}, + inventory_image = "strawberry_jam_sandwich.png" +}) + +minetest.register_craftitem("sandwiches:banana_and_chocolate_sandwich", { + description = "Banana and chocolate sandwich", + on_use = minetest.item_eat(7, "sandwiches:bread_crumbs"), + groups = {food_sandwich = 1}, + inventory_image = "banana_and_chocolate_sandwich.png" +}) + +minetest.register_craftitem("sandwiches:elvis_sandwich", { + description = "Elvis sandwich", + on_use = minetest.item_eat(8, "sandwiches:bread_crumbs"), + groups = {food_sandwich = 1}, + inventory_image = "elvis_sandwich.png" +}) + +-- CRAFTS -- + +minetest.register_craft({ + output = "sandwiches:strawberry_jam", + recipe = { + {"group:food_strawberry", "group:food_sugar", "group:food_strawberry"}, + {"group:food_sugar", "group:food_pot", "group:food_sugar"}, + {"group:food_strawberry", "group:food_sugar", "group:food_strawberry"}, + }, + replacements = {{"group:food_pot", "group:food_pot"}} +}) + +minetest.register_craft({ + output = "sandwiches:strawberry_jam", + recipe = { + {"ethereal:strawberry", "group:food_sugar", "ethereal:strawberry"}, + {"group:food_sugar", "group:food_pot", "group:food_sugar"}, + {"ethereal:strawberry", "group:food_sugar", "ethereal:strawberry"}, + }, + replacements = {{"group:food_pot", "group:food_pot"}} +}) + +minetest.register_craft({ + output = "sandwiches:strawberry_jam_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"sandwiches:strawberry_jam", "sandwiches:strawberry_jam", "sandwiches:strawberry_jam"}, + {"", "sandwiches:bread_slice", ""}, + } +}) + +minetest.register_craft({ + output = "sandwiches:banana_and_chocolate_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"group:food_banana", "farming:chocolate_dark", "group:food_banana"}, + {"", "sandwiches:bread_slice", ""}, + } +}) + +minetest.register_craft({ + output = "sandwiches:banana_and_chocolate_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"ethereal:banana", "farming:chocolate_dark", "ethereal:banana"}, + {"", "sandwiches:bread_slice", ""}, + } +}) + +minetest.register_craft({ + output = "sandwiches:elvis_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"ethereal:banana", "sandwiches:peanut_butter", "sandwiches:crispy_bacon"}, + {"", "sandwiches:bread_slice", ""}, + } +}) \ No newline at end of file diff --git a/mods/sandwiches/luas/fish.lua b/mods/sandwiches/luas/fish.lua new file mode 100644 index 00000000..f0eecb51 --- /dev/null +++ b/mods/sandwiches/luas/fish.lua @@ -0,0 +1,68 @@ +minetest.register_craftitem("sandwiches:cooked_salmon", { + description = "Cooked Salmon", + on_use = minetest.item_eat(4), + groups = {food = 4, food_fish_cooked = 1, food_salmon = 1, flammable = 1}, + inventory_image = "sandwiches_salmon_cooked.png" +}) +minetest.register_craft({ + type = "cooking", + output = "sandwiches:cooked_salmon", + recipe = "ethereal:fish_salmon", + cooktime = 5, +}) + +local ingredient = "group:food_tomato" +if minetest.get_modpath("cheese") then + ingredient = "group:food_cream" +end + +if minetest.global_exists("farming") and farming.mod == "redo" then + + minetest.register_craftitem("sandwiches:lox_sandwich", { + description = "Lox sandwich", + on_use = minetest.item_eat(12, "sandwiches:bread_crumbs"), + groups = {food = 12, food_sandwich = 1, flammable = 1}, + inventory_image = "lox_sandwich.png" + }) + minetest.register_craft({ + output = "sandwiches:lox_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {ingredient, "sandwiches:cooked_salmon","group:food_cucumber"}, + {"", "sandwiches:bread_slice", ""}, + } + }) + +end -- it needs cucumber + +if sandwiches.ingredient_support.meat then + +minetest.register_craftitem("sandwiches:cooked_trout", { + description = "Cooked Trout", + on_use = minetest.item_eat(4), + groups = {food = 4, food_fish_cooked = 1, food_trout = 1, flammable = 1}, + inventory_image = "sandwiches_trout_cooked.png" +}) +minetest.register_craft({ + type = "cooking", + output = "sandwiches:cooked_trout", + recipe = "ethereal:fish_trout", + cooktime = 5, +}) + +minetest.register_craftitem("sandwiches:trout_sandwich", { + description = "Trout sandwich", + on_use = minetest.item_eat(13, "sandwiches:bread_crumbs"), + groups = {food = 13, food_sandwich = 1, flammable = 1}, + inventory_image = "trout_sandwich.png" +}) +minetest.register_craft({ + output = "sandwiches:trout_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"group:food_egg", "sandwiches:cooked_trout","group:food_onion"}, + {"", "sandwiches:bread_slice", ""}, + } +}) + +end -- if eggs are present diff --git a/mods/sandwiches/luas/meat.lua b/mods/sandwiches/luas/meat.lua new file mode 100644 index 00000000..cadf0958 --- /dev/null +++ b/mods/sandwiches/luas/meat.lua @@ -0,0 +1,98 @@ +local board = "sandwiches:cutting_board" +if minetest.global_exists("farming") and farming.mod == "redo" then + board = "farming:cutting_board" +end + +minetest.register_craftitem("sandwiches:ham", { + description = "Ham", + on_use = minetest.item_eat(3), + groups = {food = 3, food_ham = 1, food_meat = 1, flammable = 1}, + inventory_image = "sandwiches_ham.png" +}) + +minetest.register_craftitem("sandwiches:chicken_strips", { + description = "Chicken strips", + on_use = minetest.item_eat(2), + groups = {food = 2, food_chicken_strips = 1, food_meat = 1, flammable = 1}, + inventory_image = "sandwiches_chicken_strips.png" +}) +minetest.register_craft({ + output = "sandwiches:chicken_strips 3", + type = "shapeless"; + recipe = {"group:food_chicken", "group:food_cutting_board"}, + replacements = {{"group:food_cutting_board", board }} +}) + +minetest.register_craftitem("sandwiches:raw_bacon", { + description = "Raw Bacon", + on_use = minetest.item_eat(1), + groups = {food = 1, food_bacon_raw = 1, food_meat = 1, flammable = 1}, + inventory_image = "sandwiches_raw_bacon.png" +}) +minetest.register_craftitem("sandwiches:crispy_bacon", { + description = "Crispy Bacon", + on_use = minetest.item_eat(3), + groups = {food = 3, food_bacon = 1, food_meat = 1, flammable = 1}, + inventory_image = "sandwiches_crispy_bacon.png" +}) +minetest.register_craft({ + type = "cooking", + output = "sandwiches:crispy_bacon", + recipe = "sandwiches:raw_bacon", + cooktime = 5, +}) +minetest.register_craft({ + output = "sandwiches:raw_bacon 3", + type = "shapeless"; + recipe = {"group:food_pork_raw", "group:food_cutting_board"}, + replacements = {{"group:food_cutting_board", board }} +}) + +if minetest.get_modpath("mobs") then + minetest.register_craft({ + output = "sandwiches:ham 3", + type = "shapeless"; + recipe = {"mobs:meat", "group:food_cutting_board"}, + replacements = {{"group:food_cutting_board", board }} + }) +end +if minetest.get_modpath("petz") then + minetest.register_craft({ + output = "sandwiches:ham 3", + type = "shapeless"; + recipe = {"petz:steak", "group:food_cutting_board"}, + replacements = {{"group:food_cutting_board", board }} + }) + minetest.register_craft({ + output = "sandwiches:chicken_strips 3", + type = "shapeless"; + recipe = {"petz:roasted_chicken", "group:food_cutting_board"}, + replacements = {{"group:food_cutting_board", board }} + }) + minetest.register_craft({ + output = "sandwiches:raw_bacon 3", + type = "shapeless"; + recipe = {"petz:raw_porkchop", "group:food_cutting_board"}, + replacements = {{"group:food_cutting_board", board }} + }) +end +if minetest.get_modpath("animalia") then + minetest.register_craft({ + output = "sandwiches:ham 3", + type = "shapeless"; + recipe = {"animalia:beef_cooked", "group:food_cutting_board"}, + replacements = {{"group:food_cutting_board", board }} + }) + minetest.register_craft({ + output = "sandwiches:chicken_strips 3", + type = "shapeless"; + recipe = {"animalia:poultry_cooked", "group:food_cutting_board"}, + replacements = {{"group:food_cutting_board", board }} + }) + minetest.register_craft({ + output = "sandwiches:raw_bacon 3", + type = "shapeless"; + recipe = {"animalia:porkchop_raw", "group:food_cutting_board"}, + replacements = {{"group:food_cutting_board", board }} + }) +end diff --git a/mods/sandwiches/luas/nutella.lua b/mods/sandwiches/luas/nutella.lua new file mode 100644 index 00000000..125a8fd1 --- /dev/null +++ b/mods/sandwiches/luas/nutella.lua @@ -0,0 +1,99 @@ +minetest.register_node("sandwiches:noyella_block", { + description = "Noyella block", + groups = {snappy = 1 , oddly_breakable_by_hand = 3, not_in_creative_inventory=1, flammable = 1}, + paramtype2 = "facedir", + tiles = {"noyella_block_top.png", + "noyella_block_bottom.png", + "noyella_block_side.png", + "noyella_block_side.png", + "noyella_block_side.png", + "noyella_block_front.png" + }, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_craftitem("sandwiches:noyella_sandwich", { + description = "noyella sandwich", + on_use = minetest.item_eat(8, "sandwiches:bread_crumbs"), + groups = {food_sandwich = 1}, + inventory_image = "noyella_sandwich.png" +}) + +minetest.register_craftitem("sandwiches:noyella_spread", { + description = "Noyella spread", + on_use = minetest.item_eat(2), + groups = {food_nutella = 1, food_noyella = 1, food_chocolate_spead = 1, flammable = 1}, + inventory_image = "noyella_spread.png" +}) + +-- CRAFTS -- + +minetest.register_craft({ + output = "sandwiches:noyella_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"sandwiches:noyella_spread", "sandwiches:noyella_spread", "sandwiches:noyella_spread"}, + {"", "sandwiches:bread_slice", ""}, + } +}) + +minetest.register_craft({ + output = "sandwiches:noyella_spread 5", + type = "shapeless", + recipe = { + "farming:cocoa_beans", "farming:cocoa_beans", "farming:cocoa_beans", + "group:food_sugar", "group:food_sugar", "group:food_sugar", + "moretrees:acorn", "moretrees:acorn", "moretrees:acorn", + } +}) + +if minetest.get_modpath("x_farming") then + minetest.register_craft({ + output = "sandwiches:noyella_spread 5", + type = "shapeless", + recipe = { + "x_farming:cocoa_bean", "x_farming:cocoa_bean", "x_farming:cocoa_bean", + "group:food_sugar", "group:food_sugar", "group:food_sugar", + "moretrees:acorn", "moretrees:acorn", "moretrees:acorn", + } + }) +end -- if x_farming is present +if minetest.get_modpath("cacaotree")then + minetest.register_craft({ + output = "sandwiches:noyella_spread 5", + type = "shapeless", + recipe = { + "cacaotree:cacao_beans", "cacaotree:cacao_beans", "cacaotree:cacao_beans", + "group:food_sugar", "group:food_sugar", "group:food_sugar", + "moretrees:acorn", "moretrees:acorn", "moretrees:acorn", + } + }) + minetest.register_craft({ + output = "sandwiches:noyella_spread 5", + type = "shapeless", + recipe = { + "cacaotree:cacao_beans", "cacaotree:cacao_beans", "cacaotree:cacao_beans", + "x_farming:sugar", "x_farming:sugar", "x_farming:sugar", + "moretrees:acorn", "moretrees:acorn", "moretrees:acorn", + } + }) +end -- if cool_trees with cacaotree is present + +minetest.register_craft({ + output = "sandwiches:noyella_block", + recipe = { + {"sandwiches:noyella_spread", "sandwiches:noyella_spread", "sandwiches:noyella_spread"}, + {"sandwiches:noyella_spread", "sandwiches:noyella_spread", "sandwiches:noyella_spread"}, + {"sandwiches:noyella_spread", "sandwiches:noyella_spread", "sandwiches:noyella_spread"} + } +}) + +minetest.register_craft({ + output = "sandwiches:noyella_spread 9", + type = "shapeless", + recipe = {"sandwiches:noyella_block"} +}) + +minetest.register_alias("sandwiches:nutella_block", "sandwiches:noyella_block") +minetest.register_alias("sandwiches:acorn_nutella", "sandwiches:noyella_spread") +minetest.register_alias("sandwiches:nutella_sandwich", "sandwiches:noyella_sandwich") diff --git a/mods/sandwiches/luas/toasts.lua b/mods/sandwiches/luas/toasts.lua new file mode 100644 index 00000000..bb4b2e96 --- /dev/null +++ b/mods/sandwiches/luas/toasts.lua @@ -0,0 +1,124 @@ +local skillet = "sandwiches:skillet" +local mix = "sandwiches:mixing_bowl" +if minetest.global_exists("farming") and farming.mod == "redo" then + skillet = "farming:skillet" + mix = "farming:mixing_bowl" +end + +-- food_toasted = 1 means sandwich wich craft uses skillet+butter or uses garlic bread slice + +minetest.register_craftitem("sandwiches:grilled_hot_cheesy_sandwich", { + description = "Grilled hot cheese sandwich", + on_use = minetest.item_eat(10, "sandwiches:bread_crumbs"), + groups = {food = 10, food_sandwich = 1, food_toasted = 1}, + inventory_image = "grilled_hot_cheesy_sandwich.png" +}) +minetest.register_craft({ + output = "sandwiches:grilled_hot_cheesy_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"group:food_cheese", "sandwiches:tabasco", "group:food_cheese"}, + {"group:food_skillet", "sandwiches:bread_slice", "group:food_butter"}, + }, + replacements = {{"group:food_skillet", skillet}, {"sandwiches:tabasco","vessels:glass_bottle"}} +}) + +--garlic bread done right +minetest.register_craftitem("sandwiches:garlic_bread", { + description = "Garlic bread", + on_use = minetest.item_eat(4, "sandwiches:bread_crumbs"), + groups = {food = 4, food_garlic_bread = 1}, + inventory_image = "sandwiches_garlic_bread_slice.png" +}) +minetest.register_craft({ + output = "sandwiches:garlic_bread 2", + recipe = { + {"group:food_garlic_clove", "group:food_garlic_clove", "group:food_garlic_clove"}, + {"group:food_garlic_clove", "sandwiches:bread_slice", "group:food_garlic_clove"}, + {"group:food_skillet", "sandwiches:bread_slice", "group:food_butter"}, + }, + replacements = {{"group:food_skillet", skillet}} +}) + +minetest.register_craftitem("sandwiches:tasty_garlic_sandwich", { + description = "Tasty garlic sandwich", + on_use = minetest.item_eat(16, "sandwiches:bread_crumbs"), + groups = {food = 16, food_sandwich = 1, food_toasted = 1}, + inventory_image = "tasty_garlic_sandwich.png" +}) +minetest.register_craft({ + output = "sandwiches:tasty_garlic_sandwich", + recipe = { + {"", "sandwiches:garlic_bread", ""}, + {"group:food_tomato", "group:food_ham", "group:food_cheese"}, + {"", "sandwiches:garlic_bread", ""}, + }, +}) + +minetest.register_craftitem("sandwiches:fancy_garlic_sandwich", { + description = "Fancy garlic sandwich", + on_use = minetest.item_eat(18, "sandwiches:bread_crumbs"), + groups = {food = 18, food_sandwich = 1, food_toasted = 1}, + inventory_image = "fancy_garlic_sandwich.png" +}) +minetest.register_craft({ + output = "sandwiches:fancy_garlic_sandwich", + recipe = { + {"", "sandwiches:garlic_bread", ""}, + {"group:food_bacon", "sandwiches:trifolat_mushrooms", "group:food_cheese"}, + {"", "sandwiches:garlic_bread", ""}, + }, +}) + +-- croque monsier, croque madame --- need GRUYERE +local cheese = "group:food_cheese" +if minetest.get_modpath("cheese") then + cheese = "cheese:gruyere" +end + +if minetest.registered_items["sandwiches:ham"] then + +minetest.register_craftitem("sandwiches:croque_monsieur", { + description = "Croque Monsier", + on_use = minetest.item_eat(13, "sandwiches:bread_crumbs"), + groups = {food = 13, food_sandwich = 1, food_toasted = 1}, + inventory_image = "croque_monsieur.png" +}) +minetest.register_craft({ + output = "sandwiches:croque_monsieur", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {cheese, "group:food_ham", cheese}, + {"group:food_skillet", "sandwiches:bread_slice", "group:food_butter"}, + }, + replacements = {{"group:food_skillet", skillet}} +}) + +end + +if minetest.registered_items["sandwiches:chicken_strips"] then + +minetest.register_craftitem("sandwiches:croque_madame", { + description = "Croque madame", + on_use = minetest.item_eat(16, "sandwiches:bread_crumbs"), + groups = {food = 16, food_sandwich = 1, food_toasted = 1}, + inventory_image = "croque_madame.png" +}) +minetest.register_craft({ + output = "sandwiches:croque_madame", + recipe = { + {"", "sandwiches:bread_slice", "group:food_egg_fried"}, + {cheese, "sandwiches:chicken_strips", cheese}, + {"group:food_skillet", "sandwiches:bread_slice", "group:food_butter"}, + }, + replacements = {{"group:food_skillet", skillet}} +}) + +end +--[[ +minetest.register_craft({ + output = "sandwiches:croque_madame", + type = "shapeless"; + recipe = {"group:food_egg_fried", "sandwiches:croque_monsieur"}, +}) +]]-- diff --git a/mods/sandwiches/luas/tools.lua b/mods/sandwiches/luas/tools.lua new file mode 100644 index 00000000..824e27e6 --- /dev/null +++ b/mods/sandwiches/luas/tools.lua @@ -0,0 +1,84 @@ +-- same exact recipes as the ones in farming's utensils.lua + +minetest.register_craftitem("sandwiches:pot", { + description = "Cooking Pot", + inventory_image = "cooking_pot.png", + groups = {food_pot = 1} +}) +minetest.register_craft({ + output = "sandwiches:pot", + recipe = { + {"group:stick", "default:steel_ingot", "default:steel_ingot"}, + {"", "default:steel_ingot", "default:steel_ingot"} + } +}) +--[[ +minetest.register_craftitem("sandwiches:baking_tray", { + description = "Baking Tray", + inventory_image = "baking_tray.png", + groups = {food_baking_tray = 1} +}) +minetest.register_craft({ + output = "sandwiches:baking_tray", + recipe = { + {"default:clay_brick", "default:clay_brick", "default:clay_brick"}, + {"default:clay_brick", "", "default:clay_brick"}, + {"default:clay_brick", "default:clay_brick", "default:clay_brick"} + } +}) +]]-- +minetest.register_craftitem("sandwiches:skillet", { + description = "Skillet", + inventory_image = "skillet.png", + groups = {food_skillet = 1} +}) +minetest.register_craft({ + output = "sandwiches:skillet", + recipe = { + {"default:steel_ingot", "", ""}, + {"", "default:steel_ingot", ""}, + {"", "", "group:stick"} + } +}) + +minetest.register_craftitem("sandwiches:mortar_pestle", { + description = "Mortar and Pestle", + inventory_image = "mortar_pestle.png", + groups = {food_mortar_pestle = 1} +}) +minetest.register_craft({ + output = "sandwiches:mortar_pestle", + recipe = { + {"default:stone", "group:stick", "default:stone"}, + {"", "default:stone", ""} + } +}) + +minetest.register_craftitem("sandwiches:cutting_board", { + description = "Cutting Board", + inventory_image = "cutting_board.png", + groups = {food_cutting_board = 1} +}) + +minetest.register_craft({ + output = "sandwiches:cutting_board", + recipe = { + {"default:steel_ingot", "", ""}, + {"", "group:stick", ""}, + {"", "", "group:wood"} + } +}) + +minetest.register_craftitem("sandwiches:mixing_bowl", { + description = "Glass Mixing Bowl", + inventory_image = "mixing_bowl.png", + groups = {food_mixing_bowl = 1,} +}) +minetest.register_craft({ + output = "sandwiches:mixing_bowl", + recipe = { + {"", "", ""}, + {"default:glass", "group:stick", "default:glass"}, + {"", "default:glass", ""} + } +}) diff --git a/mods/sandwiches/luas/xfarming.lua b/mods/sandwiches/luas/xfarming.lua new file mode 100644 index 00000000..9017aacb --- /dev/null +++ b/mods/sandwiches/luas/xfarming.lua @@ -0,0 +1,127 @@ +local ingredient = "group:food_lettuce" + +local pot = "sandwiches:pot" +local skillet = "sandwiches:skillet" +if minetest.global_exists("farming") and farming.mod == "redo" then + pot = "farming:pot" + skillet = "farming:skillet" + + ingredient = "group:food_cucumber" +end + +if sandwiches.ingredient_support.dairy then + ingredient = "group:food_cheese" +end + +-- SANDWICHES -- +minetest.register_craftitem("sandwiches:po_boy_sandwich", { + description = "Po\'boy sandwich", + on_use = minetest.item_eat(7, "sandwiches:bread_crumbs"), + + groups = {food = 7, food_sandwich = 1}, + inventory_image = "po_boy_sandwich.png" +}) +minetest.register_craft({ + output = "sandwiches:po_boy_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {ingredient, "x_farming:shrimp_cooked", "group:food_tomato"}, + {"", "sandwiches:bread_slice", ""}, + } +}) + + +-- ALREADY EXISTING SANDWICHES CRAFT -- + +minetest.register_craft({ + output = "sandwiches:hot_veggie_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"x_farming:carrot", "sandwiches:tabasco", "x_farming:potato"}, + {"", "sandwiches:bread_slice", ""}, + }, + replacements = {{"sandwiches:tabasco", "vessels:glass_bottle"},} +}) +minetest.register_craft({ + output = "sandwiches:hot_veggie_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"x_farming:carrot", "sandwiches:tabasco", "group:food_onion"}, + {"", "sandwiches:bread_slice", ""}, + }, + replacements = {{"sandwiches:tabasco", "vessels:glass_bottle"},} +}) + +minetest.register_craft({ + output = "sandwiches:veggie_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"group:food_cucumber", "x_farming:carrot", "x_farming:potato"}, + {"", "sandwiches:bread_slice", ""}, + }, +}) +minetest.register_craft({ + output = "sandwiches:veggie_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"x_farming:carrot", "group:food_onion", "x_farming:beetroot"}, + {"", "sandwiches:bread_slice", ""}, + }, +}) +minetest.register_craft({ + output = "sandwiches:banana_and_chocolate_sandwich", + recipe = { + {"", "sandwiches:bread_slice", ""}, + {"group:food_banana", "x_farming:chocolate", "group:food_banana"}, + {"", "sandwiches:bread_slice", ""}, + }, +}) + +-- NON SANDWICH CRAFTS -- +local herb = "group:food_parsley" +local rosm = "group:food_pepper_ground" +if sandwiches.ingredient_support.herbs then + herb = "potted_farming:sage" + rosm = "group:food_rosemary" +end +minetest.register_craft({ + output = "sandwiches:roasted_potatoes 5", + type = "shapeless", + recipe = { + "x_farming:potato", "x_farming:potato", + "group:food_skillet", "group:food_oil", rosm, + }, + replacements = { + {"group:food_skillet", skillet }, + {"group:food_pepper_ground", "vessels:glass_bottle"}, + {"group:food_oil", "vessels:glass_bottle"}, } +}) +minetest.register_craft({ + output = "sandwiches:butter_carrots 5", + type = "shapeless", + recipe = { + "x_farming:carrot", "x_farming:carrot", + "group:food_skillet", "group:food_butter", herb, + }, + replacements = {{"group:food_skillet", skillet }} +}) + +minetest.register_craft({ + output = "sandwiches:strawberry_jam 5", + recipe = { + {"x_farming:strawberry", "group:food_sugar", "x_farming:strawberry"}, + {"group:food_sugar", "group:food_pot", "group:food_sugar"}, + {"x_farming:strawberry", "group:food_sugar", "x_farming:strawberry"}, + }, + replacements = {{"group:food_pot", pot }}, +}) + +minetest.register_craft({ + output = "sandwiches:strawberry_jam 5", + recipe = { + {"x_farming:strawberry", "x_farming:sugar", "x_farming:strawberry"}, + {"x_farming:sugar", "group:food_pot", "x_farming:sugar"}, + {"x_farming:strawberry", "x_farming:sugar", "x_farming:strawberry"}, + }, + replacements = {{"group:food_pot", pot }}, +}) diff --git a/mods/sandwiches/mod.conf b/mods/sandwiches/mod.conf new file mode 100644 index 00000000..54d65ab5 --- /dev/null +++ b/mods/sandwiches/mod.conf @@ -0,0 +1,8 @@ +name = sandwiches +depends = default, farming +optional_depends = flowers, mobs, mobs_animal, petz, animalia, moretrees, cacaotree, ethereal, bbq, cucina_vegana, bonemeal, xdecor, potted_farming, +author = Annalysa +version = 1.9 +release = 17426 +description = Add Sandwiches to your game! Choose between meat, vegetarian, jam and many more! +title = Sandwiches! diff --git a/mods/sandwiches/screenshot.png b/mods/sandwiches/screenshot.png new file mode 100644 index 00000000..3e74d453 Binary files /dev/null and b/mods/sandwiches/screenshot.png differ diff --git a/mods/sandwiches/support.lua b/mods/sandwiches/support.lua new file mode 100644 index 00000000..5ce9bd14 --- /dev/null +++ b/mods/sandwiches/support.lua @@ -0,0 +1,18 @@ + +if minetest.registered_craftitems["ethereal:strawberry"] and minetest.registered_nodes["ethereal:banana"] then + dofile(sandwiches.path .. "/luas/ethereal.lua") +end + +if minetest.get_modpath ("moretrees") then + dofile(sandwiches.path .. "/luas/nutella.lua") +end + +if minetest.get_modpath ("cucina_vegana") then + dofile(sandwiches.path .. "/luas/cucina_vegana.lua") + minetest.register_alias("sandwiches:peanuts","cucina_vegana:peanut") + minetest.register_alias("sandwiches:peanut_seed","cucina_vegana:peanut_seed") +end + +if minetest.get_modpath ("bbq") then + dofile(sandwiches.path .. "/luas/bbq.lua") +end \ No newline at end of file diff --git a/mods/sandwiches/textures/.blt_sandwich.png-autosave.kra b/mods/sandwiches/textures/.blt_sandwich.png-autosave.kra new file mode 100644 index 00000000..356d6a20 Binary files /dev/null and b/mods/sandwiches/textures/.blt_sandwich.png-autosave.kra differ diff --git a/mods/sandwiches/textures/.garlic_bread_slice.kra-autosave.kra b/mods/sandwiches/textures/.garlic_bread_slice.kra-autosave.kra new file mode 100644 index 00000000..72fa164f Binary files /dev/null and b/mods/sandwiches/textures/.garlic_bread_slice.kra-autosave.kra differ diff --git a/mods/sandwiches/textures/.ham_sandwich.png-autosave.kra b/mods/sandwiches/textures/.ham_sandwich.png-autosave.kra new file mode 100644 index 00000000..3d5ae37f Binary files /dev/null and b/mods/sandwiches/textures/.ham_sandwich.png-autosave.kra differ diff --git a/mods/sandwiches/textures/.tasty_garlic_sandwich.png-autosave.kra b/mods/sandwiches/textures/.tasty_garlic_sandwich.png-autosave.kra new file mode 100644 index 00000000..3181cc6f Binary files /dev/null and b/mods/sandwiches/textures/.tasty_garlic_sandwich.png-autosave.kra differ diff --git a/mods/sandwiches/textures/american_sandwich.png b/mods/sandwiches/textures/american_sandwich.png new file mode 100644 index 00000000..473e8a22 Binary files /dev/null and b/mods/sandwiches/textures/american_sandwich.png differ diff --git a/mods/sandwiches/textures/bacon_sandwich.png b/mods/sandwiches/textures/bacon_sandwich.png new file mode 100644 index 00000000..03f98737 Binary files /dev/null and b/mods/sandwiches/textures/bacon_sandwich.png differ diff --git a/mods/sandwiches/textures/banana_and_chocolate_sandwich.png b/mods/sandwiches/textures/banana_and_chocolate_sandwich.png new file mode 100644 index 00000000..cb927e5f Binary files /dev/null and b/mods/sandwiches/textures/banana_and_chocolate_sandwich.png differ diff --git a/mods/sandwiches/textures/blackberry_jam_sandwich.png b/mods/sandwiches/textures/blackberry_jam_sandwich.png new file mode 100644 index 00000000..dd0f0747 Binary files /dev/null and b/mods/sandwiches/textures/blackberry_jam_sandwich.png differ diff --git a/mods/sandwiches/textures/blt_sandwich.png b/mods/sandwiches/textures/blt_sandwich.png new file mode 100644 index 00000000..0be3951f Binary files /dev/null and b/mods/sandwiches/textures/blt_sandwich.png differ diff --git a/mods/sandwiches/textures/blueberry_jam.png b/mods/sandwiches/textures/blueberry_jam.png new file mode 100644 index 00000000..13e3f772 Binary files /dev/null and b/mods/sandwiches/textures/blueberry_jam.png differ diff --git a/mods/sandwiches/textures/blueberry_jam_sandwich.png b/mods/sandwiches/textures/blueberry_jam_sandwich.png new file mode 100644 index 00000000..4e1b40f9 Binary files /dev/null and b/mods/sandwiches/textures/blueberry_jam_sandwich.png differ diff --git a/mods/sandwiches/textures/bread_crumbs.png b/mods/sandwiches/textures/bread_crumbs.png new file mode 100644 index 00000000..fa15061b Binary files /dev/null and b/mods/sandwiches/textures/bread_crumbs.png differ diff --git a/mods/sandwiches/textures/bread_slice.png b/mods/sandwiches/textures/bread_slice.png new file mode 100644 index 00000000..a170337f Binary files /dev/null and b/mods/sandwiches/textures/bread_slice.png differ diff --git a/mods/sandwiches/textures/butter_carrots.png b/mods/sandwiches/textures/butter_carrots.png new file mode 100644 index 00000000..b7e12fc2 Binary files /dev/null and b/mods/sandwiches/textures/butter_carrots.png differ diff --git a/mods/sandwiches/textures/caramelized_onion.png b/mods/sandwiches/textures/caramelized_onion.png new file mode 100644 index 00000000..7417c220 Binary files /dev/null and b/mods/sandwiches/textures/caramelized_onion.png differ diff --git a/mods/sandwiches/textures/cheesy_sandwich.png b/mods/sandwiches/textures/cheesy_sandwich.png new file mode 100644 index 00000000..ed941f37 Binary files /dev/null and b/mods/sandwiches/textures/cheesy_sandwich.png differ diff --git a/mods/sandwiches/textures/chicken_strips.png b/mods/sandwiches/textures/chicken_strips.png new file mode 100644 index 00000000..7fd1fdec Binary files /dev/null and b/mods/sandwiches/textures/chicken_strips.png differ diff --git a/mods/sandwiches/textures/classic_sandwich.png b/mods/sandwiches/textures/classic_sandwich.png new file mode 100644 index 00000000..4c350dd5 Binary files /dev/null and b/mods/sandwiches/textures/classic_sandwich.png differ diff --git a/mods/sandwiches/textures/classic_vegan_sandwich.png b/mods/sandwiches/textures/classic_vegan_sandwich.png new file mode 100644 index 00000000..6ca1d1e7 Binary files /dev/null and b/mods/sandwiches/textures/classic_vegan_sandwich.png differ diff --git a/mods/sandwiches/textures/club_sandwich.png b/mods/sandwiches/textures/club_sandwich.png new file mode 100644 index 00000000..7dd27162 Binary files /dev/null and b/mods/sandwiches/textures/club_sandwich.png differ diff --git a/mods/sandwiches/textures/cooking_pot.png b/mods/sandwiches/textures/cooking_pot.png new file mode 100644 index 00000000..1e392a5b Binary files /dev/null and b/mods/sandwiches/textures/cooking_pot.png differ diff --git a/mods/sandwiches/textures/crispy_bacon.png b/mods/sandwiches/textures/crispy_bacon.png new file mode 100644 index 00000000..60c79aba Binary files /dev/null and b/mods/sandwiches/textures/crispy_bacon.png differ diff --git a/mods/sandwiches/textures/croque_madame.png b/mods/sandwiches/textures/croque_madame.png new file mode 100644 index 00000000..52306b6b Binary files /dev/null and b/mods/sandwiches/textures/croque_madame.png differ diff --git a/mods/sandwiches/textures/croque_monsieur.png b/mods/sandwiches/textures/croque_monsieur.png new file mode 100644 index 00000000..b89d14b7 Binary files /dev/null and b/mods/sandwiches/textures/croque_monsieur.png differ diff --git a/mods/sandwiches/textures/cutting_board.png b/mods/sandwiches/textures/cutting_board.png new file mode 100644 index 00000000..48287388 Binary files /dev/null and b/mods/sandwiches/textures/cutting_board.png differ diff --git a/mods/sandwiches/textures/egg_and_bacon_sandwich.png b/mods/sandwiches/textures/egg_and_bacon_sandwich.png new file mode 100644 index 00000000..fdc1ee15 Binary files /dev/null and b/mods/sandwiches/textures/egg_and_bacon_sandwich.png differ diff --git a/mods/sandwiches/textures/elvis_sandwich.png b/mods/sandwiches/textures/elvis_sandwich.png new file mode 100644 index 00000000..74b9a27a Binary files /dev/null and b/mods/sandwiches/textures/elvis_sandwich.png differ diff --git a/mods/sandwiches/textures/enhanced_bacon_sandwich.png b/mods/sandwiches/textures/enhanced_bacon_sandwich.png new file mode 100644 index 00000000..b31183b0 Binary files /dev/null and b/mods/sandwiches/textures/enhanced_bacon_sandwich.png differ diff --git a/mods/sandwiches/textures/fairy_bread.png b/mods/sandwiches/textures/fairy_bread.png new file mode 100644 index 00000000..75c9ef6e Binary files /dev/null and b/mods/sandwiches/textures/fairy_bread.png differ diff --git a/mods/sandwiches/textures/fancy_garlic_sandwich.png b/mods/sandwiches/textures/fancy_garlic_sandwich.png new file mode 100644 index 00000000..81f1fc3b Binary files /dev/null and b/mods/sandwiches/textures/fancy_garlic_sandwich.png differ diff --git a/mods/sandwiches/textures/gourmet_meat_sandwich.png b/mods/sandwiches/textures/gourmet_meat_sandwich.png new file mode 100644 index 00000000..d60d3084 Binary files /dev/null and b/mods/sandwiches/textures/gourmet_meat_sandwich.png differ diff --git a/mods/sandwiches/textures/gourmet_vegan_sandwich.png b/mods/sandwiches/textures/gourmet_vegan_sandwich.png new file mode 100644 index 00000000..03927933 Binary files /dev/null and b/mods/sandwiches/textures/gourmet_vegan_sandwich.png differ diff --git a/mods/sandwiches/textures/grape_jelly.png b/mods/sandwiches/textures/grape_jelly.png new file mode 100644 index 00000000..0c6b4eda Binary files /dev/null and b/mods/sandwiches/textures/grape_jelly.png differ diff --git a/mods/sandwiches/textures/grape_jelly_sandwich.png b/mods/sandwiches/textures/grape_jelly_sandwich.png new file mode 100644 index 00000000..5a6777b6 Binary files /dev/null and b/mods/sandwiches/textures/grape_jelly_sandwich.png differ diff --git a/mods/sandwiches/textures/grilled_hot_cheesy_sandwich.png b/mods/sandwiches/textures/grilled_hot_cheesy_sandwich.png new file mode 100644 index 00000000..619b3ec1 Binary files /dev/null and b/mods/sandwiches/textures/grilled_hot_cheesy_sandwich.png differ diff --git a/mods/sandwiches/textures/ham.png b/mods/sandwiches/textures/ham.png new file mode 100644 index 00000000..f1604624 Binary files /dev/null and b/mods/sandwiches/textures/ham.png differ diff --git a/mods/sandwiches/textures/ham_and_asparagus_sandwich.png b/mods/sandwiches/textures/ham_and_asparagus_sandwich.png new file mode 100644 index 00000000..0347761b Binary files /dev/null and b/mods/sandwiches/textures/ham_and_asparagus_sandwich.png differ diff --git a/mods/sandwiches/textures/ham_sandwich.png b/mods/sandwiches/textures/ham_sandwich.png new file mode 100644 index 00000000..57c7f0cf Binary files /dev/null and b/mods/sandwiches/textures/ham_sandwich.png differ diff --git a/mods/sandwiches/textures/hamwich.png b/mods/sandwiches/textures/hamwich.png new file mode 100644 index 00000000..81cd0f56 Binary files /dev/null and b/mods/sandwiches/textures/hamwich.png differ diff --git a/mods/sandwiches/textures/hot_ham_sandwich.png b/mods/sandwiches/textures/hot_ham_sandwich.png new file mode 100644 index 00000000..4bb5570a Binary files /dev/null and b/mods/sandwiches/textures/hot_ham_sandwich.png differ diff --git a/mods/sandwiches/textures/hot_veggie_sandwich.png b/mods/sandwiches/textures/hot_veggie_sandwich.png new file mode 100644 index 00000000..cdf48769 Binary files /dev/null and b/mods/sandwiches/textures/hot_veggie_sandwich.png differ diff --git a/mods/sandwiches/textures/italian_sandwich.png b/mods/sandwiches/textures/italian_sandwich.png new file mode 100644 index 00000000..0f7fecf5 Binary files /dev/null and b/mods/sandwiches/textures/italian_sandwich.png differ diff --git a/mods/sandwiches/textures/jam_sandwich.png b/mods/sandwiches/textures/jam_sandwich.png new file mode 100644 index 00000000..34e0e5a7 Binary files /dev/null and b/mods/sandwiches/textures/jam_sandwich.png differ diff --git a/mods/sandwiches/textures/jerky_sandwich.png b/mods/sandwiches/textures/jerky_sandwich.png new file mode 100644 index 00000000..13fdb67d Binary files /dev/null and b/mods/sandwiches/textures/jerky_sandwich.png differ diff --git a/mods/sandwiches/textures/lox_sandwich.png b/mods/sandwiches/textures/lox_sandwich.png new file mode 100644 index 00000000..383ab4bf Binary files /dev/null and b/mods/sandwiches/textures/lox_sandwich.png differ diff --git a/mods/sandwiches/textures/marinated_chicken_sandwich.png b/mods/sandwiches/textures/marinated_chicken_sandwich.png new file mode 100644 index 00000000..ca1ee8b8 Binary files /dev/null and b/mods/sandwiches/textures/marinated_chicken_sandwich.png differ diff --git a/mods/sandwiches/textures/mixing_bowl.png b/mods/sandwiches/textures/mixing_bowl.png new file mode 100644 index 00000000..197e39f3 Binary files /dev/null and b/mods/sandwiches/textures/mixing_bowl.png differ diff --git a/mods/sandwiches/textures/mortar_pestle.png b/mods/sandwiches/textures/mortar_pestle.png new file mode 100644 index 00000000..75532c5c Binary files /dev/null and b/mods/sandwiches/textures/mortar_pestle.png differ diff --git a/mods/sandwiches/textures/multi_jam.png b/mods/sandwiches/textures/multi_jam.png new file mode 100644 index 00000000..4b5469e1 Binary files /dev/null and b/mods/sandwiches/textures/multi_jam.png differ diff --git a/mods/sandwiches/textures/noyella_block_bottom.png b/mods/sandwiches/textures/noyella_block_bottom.png new file mode 100644 index 00000000..9401971b Binary files /dev/null and b/mods/sandwiches/textures/noyella_block_bottom.png differ diff --git a/mods/sandwiches/textures/noyella_block_front.png b/mods/sandwiches/textures/noyella_block_front.png new file mode 100644 index 00000000..d3c74464 Binary files /dev/null and b/mods/sandwiches/textures/noyella_block_front.png differ diff --git a/mods/sandwiches/textures/noyella_block_side.png b/mods/sandwiches/textures/noyella_block_side.png new file mode 100644 index 00000000..60503abd Binary files /dev/null and b/mods/sandwiches/textures/noyella_block_side.png differ diff --git a/mods/sandwiches/textures/noyella_block_top.png b/mods/sandwiches/textures/noyella_block_top.png new file mode 100644 index 00000000..442b8c53 Binary files /dev/null and b/mods/sandwiches/textures/noyella_block_top.png differ diff --git a/mods/sandwiches/textures/noyella_sandwich.png b/mods/sandwiches/textures/noyella_sandwich.png new file mode 100644 index 00000000..88bfdcfd Binary files /dev/null and b/mods/sandwiches/textures/noyella_sandwich.png differ diff --git a/mods/sandwiches/textures/noyella_spread.png b/mods/sandwiches/textures/noyella_spread.png new file mode 100644 index 00000000..7d831973 Binary files /dev/null and b/mods/sandwiches/textures/noyella_spread.png differ diff --git a/mods/sandwiches/textures/pb_and_j_sandwich.png b/mods/sandwiches/textures/pb_and_j_sandwich.png new file mode 100644 index 00000000..f66fd973 Binary files /dev/null and b/mods/sandwiches/textures/pb_and_j_sandwich.png differ diff --git a/mods/sandwiches/textures/peanut_butter.png b/mods/sandwiches/textures/peanut_butter.png new file mode 100644 index 00000000..e2e38074 Binary files /dev/null and b/mods/sandwiches/textures/peanut_butter.png differ diff --git a/mods/sandwiches/textures/peanuts.png b/mods/sandwiches/textures/peanuts.png new file mode 100644 index 00000000..4379734c Binary files /dev/null and b/mods/sandwiches/textures/peanuts.png differ diff --git a/mods/sandwiches/textures/po_boy_sandwich.png b/mods/sandwiches/textures/po_boy_sandwich.png new file mode 100644 index 00000000..5cd8990e Binary files /dev/null and b/mods/sandwiches/textures/po_boy_sandwich.png differ diff --git a/mods/sandwiches/textures/raspberry_jam.png b/mods/sandwiches/textures/raspberry_jam.png new file mode 100644 index 00000000..95e134c9 Binary files /dev/null and b/mods/sandwiches/textures/raspberry_jam.png differ diff --git a/mods/sandwiches/textures/raspberry_jam_sandwich.png b/mods/sandwiches/textures/raspberry_jam_sandwich.png new file mode 100644 index 00000000..c0938c14 Binary files /dev/null and b/mods/sandwiches/textures/raspberry_jam_sandwich.png differ diff --git a/mods/sandwiches/textures/rasperry_jam_sandwich.png b/mods/sandwiches/textures/rasperry_jam_sandwich.png new file mode 100644 index 00000000..c0938c14 Binary files /dev/null and b/mods/sandwiches/textures/rasperry_jam_sandwich.png differ diff --git a/mods/sandwiches/textures/raw_bacon.png b/mods/sandwiches/textures/raw_bacon.png new file mode 100644 index 00000000..e49d96d8 Binary files /dev/null and b/mods/sandwiches/textures/raw_bacon.png differ diff --git a/mods/sandwiches/textures/roasted_potatoes.png b/mods/sandwiches/textures/roasted_potatoes.png new file mode 100644 index 00000000..868b3eac Binary files /dev/null and b/mods/sandwiches/textures/roasted_potatoes.png differ diff --git a/mods/sandwiches/textures/sand_sandwich.png b/mods/sandwiches/textures/sand_sandwich.png new file mode 100644 index 00000000..ac308fa8 Binary files /dev/null and b/mods/sandwiches/textures/sand_sandwich.png differ diff --git a/mods/sandwiches/textures/sandwiches_blackberry_jam.png b/mods/sandwiches/textures/sandwiches_blackberry_jam.png new file mode 100644 index 00000000..bbb20b61 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_blackberry_jam.png differ diff --git a/mods/sandwiches/textures/sandwiches_blueberry_jam.png b/mods/sandwiches/textures/sandwiches_blueberry_jam.png new file mode 100644 index 00000000..668f151a Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_blueberry_jam.png differ diff --git a/mods/sandwiches/textures/sandwiches_bread_slice.png b/mods/sandwiches/textures/sandwiches_bread_slice.png new file mode 100644 index 00000000..79dc7323 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_bread_slice.png differ diff --git a/mods/sandwiches/textures/sandwiches_chicken_strips.png b/mods/sandwiches/textures/sandwiches_chicken_strips.png new file mode 100644 index 00000000..7fd1fdec Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_chicken_strips.png differ diff --git a/mods/sandwiches/textures/sandwiches_crispy_bacon.png b/mods/sandwiches/textures/sandwiches_crispy_bacon.png new file mode 100644 index 00000000..60c79aba Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_crispy_bacon.png differ diff --git a/mods/sandwiches/textures/sandwiches_garlic_bread_slice.png b/mods/sandwiches/textures/sandwiches_garlic_bread_slice.png new file mode 100644 index 00000000..35214d35 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_garlic_bread_slice.png differ diff --git a/mods/sandwiches/textures/sandwiches_grape_jelly.png b/mods/sandwiches/textures/sandwiches_grape_jelly.png new file mode 100644 index 00000000..0b31d580 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_grape_jelly.png differ diff --git a/mods/sandwiches/textures/sandwiches_ham.png b/mods/sandwiches/textures/sandwiches_ham.png new file mode 100644 index 00000000..f1604624 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_ham.png differ diff --git a/mods/sandwiches/textures/sandwiches_multi_jam.png b/mods/sandwiches/textures/sandwiches_multi_jam.png new file mode 100644 index 00000000..77111308 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_multi_jam.png differ diff --git a/mods/sandwiches/textures/sandwiches_peanut.png b/mods/sandwiches/textures/sandwiches_peanut.png new file mode 100644 index 00000000..faa23d7b Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_peanut.png differ diff --git a/mods/sandwiches/textures/sandwiches_peanut_1.png b/mods/sandwiches/textures/sandwiches_peanut_1.png new file mode 100644 index 00000000..4831ca86 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_peanut_1.png differ diff --git a/mods/sandwiches/textures/sandwiches_peanut_2.png b/mods/sandwiches/textures/sandwiches_peanut_2.png new file mode 100644 index 00000000..704dc4d4 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_peanut_2.png differ diff --git a/mods/sandwiches/textures/sandwiches_peanut_3.png b/mods/sandwiches/textures/sandwiches_peanut_3.png new file mode 100644 index 00000000..b3e1ea7d Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_peanut_3.png differ diff --git a/mods/sandwiches/textures/sandwiches_peanut_4.png b/mods/sandwiches/textures/sandwiches_peanut_4.png new file mode 100644 index 00000000..90b45687 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_peanut_4.png differ diff --git a/mods/sandwiches/textures/sandwiches_peanut_5.png b/mods/sandwiches/textures/sandwiches_peanut_5.png new file mode 100644 index 00000000..7ea99e94 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_peanut_5.png differ diff --git a/mods/sandwiches/textures/sandwiches_peanut_6.png b/mods/sandwiches/textures/sandwiches_peanut_6.png new file mode 100644 index 00000000..bf0e8659 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_peanut_6.png differ diff --git a/mods/sandwiches/textures/sandwiches_peanut_butter.png b/mods/sandwiches/textures/sandwiches_peanut_butter.png new file mode 100644 index 00000000..e2e38074 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_peanut_butter.png differ diff --git a/mods/sandwiches/textures/sandwiches_peanuts.png b/mods/sandwiches/textures/sandwiches_peanuts.png new file mode 100644 index 00000000..faa23d7b Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_peanuts.png differ diff --git a/mods/sandwiches/textures/sandwiches_raspberry_jam.png b/mods/sandwiches/textures/sandwiches_raspberry_jam.png new file mode 100644 index 00000000..34e3b338 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_raspberry_jam.png differ diff --git a/mods/sandwiches/textures/sandwiches_raw_bacon.png b/mods/sandwiches/textures/sandwiches_raw_bacon.png new file mode 100644 index 00000000..e49d96d8 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_raw_bacon.png differ diff --git a/mods/sandwiches/textures/sandwiches_salmon_cooked.png b/mods/sandwiches/textures/sandwiches_salmon_cooked.png new file mode 100644 index 00000000..87cfc361 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_salmon_cooked.png differ diff --git a/mods/sandwiches/textures/sandwiches_seed_peanut.png b/mods/sandwiches/textures/sandwiches_seed_peanut.png new file mode 100644 index 00000000..bbffdbe2 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_seed_peanut.png differ diff --git a/mods/sandwiches/textures/sandwiches_strawberry_jam.png b/mods/sandwiches/textures/sandwiches_strawberry_jam.png new file mode 100644 index 00000000..2927314e Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_strawberry_jam.png differ diff --git a/mods/sandwiches/textures/sandwiches_trout_cooked.png b/mods/sandwiches/textures/sandwiches_trout_cooked.png new file mode 100644 index 00000000..c4d1e622 Binary files /dev/null and b/mods/sandwiches/textures/sandwiches_trout_cooked.png differ diff --git a/mods/sandwiches/textures/seed_peanut.png b/mods/sandwiches/textures/seed_peanut.png new file mode 100644 index 00000000..bbffdbe2 Binary files /dev/null and b/mods/sandwiches/textures/seed_peanut.png differ diff --git a/mods/sandwiches/textures/seed_peanuts.png b/mods/sandwiches/textures/seed_peanuts.png new file mode 100644 index 00000000..85076da6 Binary files /dev/null and b/mods/sandwiches/textures/seed_peanuts.png differ diff --git a/mods/sandwiches/textures/skillet.png b/mods/sandwiches/textures/skillet.png new file mode 100644 index 00000000..e6105f7c Binary files /dev/null and b/mods/sandwiches/textures/skillet.png differ diff --git a/mods/sandwiches/textures/strawberry_jam.png b/mods/sandwiches/textures/strawberry_jam.png new file mode 100644 index 00000000..ca4c1016 Binary files /dev/null and b/mods/sandwiches/textures/strawberry_jam.png differ diff --git a/mods/sandwiches/textures/strawberry_jam_sandwich.png b/mods/sandwiches/textures/strawberry_jam_sandwich.png new file mode 100644 index 00000000..210f73a2 Binary files /dev/null and b/mods/sandwiches/textures/strawberry_jam_sandwich.png differ diff --git a/mods/sandwiches/textures/sugar_sprinkles.png b/mods/sandwiches/textures/sugar_sprinkles.png new file mode 100644 index 00000000..eb47e625 Binary files /dev/null and b/mods/sandwiches/textures/sugar_sprinkles.png differ diff --git a/mods/sandwiches/textures/sweet_bread_pudding.png b/mods/sandwiches/textures/sweet_bread_pudding.png new file mode 100644 index 00000000..aca7597f Binary files /dev/null and b/mods/sandwiches/textures/sweet_bread_pudding.png differ diff --git a/mods/sandwiches/textures/sweet_bread_pudding_raw.png b/mods/sandwiches/textures/sweet_bread_pudding_raw.png new file mode 100644 index 00000000..74458a0e Binary files /dev/null and b/mods/sandwiches/textures/sweet_bread_pudding_raw.png differ diff --git a/mods/sandwiches/textures/sweet_sandwich.png b/mods/sandwiches/textures/sweet_sandwich.png new file mode 100644 index 00000000..383ccd6f Binary files /dev/null and b/mods/sandwiches/textures/sweet_sandwich.png differ diff --git a/mods/sandwiches/textures/tabasco.png b/mods/sandwiches/textures/tabasco.png new file mode 100644 index 00000000..27662d2b Binary files /dev/null and b/mods/sandwiches/textures/tabasco.png differ diff --git a/mods/sandwiches/textures/tasty_asparagus_sandwich.png b/mods/sandwiches/textures/tasty_asparagus_sandwich.png new file mode 100644 index 00000000..03e179c9 Binary files /dev/null and b/mods/sandwiches/textures/tasty_asparagus_sandwich.png differ diff --git a/mods/sandwiches/textures/tasty_bacon_sandwich.png b/mods/sandwiches/textures/tasty_bacon_sandwich.png new file mode 100644 index 00000000..61d63f2d Binary files /dev/null and b/mods/sandwiches/textures/tasty_bacon_sandwich.png differ diff --git a/mods/sandwiches/textures/tasty_chicken_sandwich.png b/mods/sandwiches/textures/tasty_chicken_sandwich.png new file mode 100644 index 00000000..8d04a61f Binary files /dev/null and b/mods/sandwiches/textures/tasty_chicken_sandwich.png differ diff --git a/mods/sandwiches/textures/tasty_garlic_sandwich.png b/mods/sandwiches/textures/tasty_garlic_sandwich.png new file mode 100644 index 00000000..d528c862 Binary files /dev/null and b/mods/sandwiches/textures/tasty_garlic_sandwich.png differ diff --git a/mods/sandwiches/textures/tasty_ham_sandwich.png b/mods/sandwiches/textures/tasty_ham_sandwich.png new file mode 100644 index 00000000..aa9da7c5 Binary files /dev/null and b/mods/sandwiches/textures/tasty_ham_sandwich.png differ diff --git a/mods/sandwiches/textures/tasty_meat_sandwich.png b/mods/sandwiches/textures/tasty_meat_sandwich.png new file mode 100644 index 00000000..aa9da7c5 Binary files /dev/null and b/mods/sandwiches/textures/tasty_meat_sandwich.png differ diff --git a/mods/sandwiches/textures/tasty_tofu_sandwich.png b/mods/sandwiches/textures/tasty_tofu_sandwich.png new file mode 100644 index 00000000..f77098fc Binary files /dev/null and b/mods/sandwiches/textures/tasty_tofu_sandwich.png differ diff --git a/mods/sandwiches/textures/tasty_veggie_sandwich.png b/mods/sandwiches/textures/tasty_veggie_sandwich.png new file mode 100644 index 00000000..ed65d6e5 Binary files /dev/null and b/mods/sandwiches/textures/tasty_veggie_sandwich.png differ diff --git a/mods/sandwiches/textures/tofu_sandwich.png b/mods/sandwiches/textures/tofu_sandwich.png new file mode 100644 index 00000000..60ffd51f Binary files /dev/null and b/mods/sandwiches/textures/tofu_sandwich.png differ diff --git a/mods/sandwiches/textures/trifolat_mushrooms.png b/mods/sandwiches/textures/trifolat_mushrooms.png new file mode 100644 index 00000000..90d84fee Binary files /dev/null and b/mods/sandwiches/textures/trifolat_mushrooms.png differ diff --git a/mods/sandwiches/textures/triple_mega_sandwich.png b/mods/sandwiches/textures/triple_mega_sandwich.png new file mode 100644 index 00000000..2f8722d5 Binary files /dev/null and b/mods/sandwiches/textures/triple_mega_sandwich.png differ diff --git a/mods/sandwiches/textures/trout_sandwich.png b/mods/sandwiches/textures/trout_sandwich.png new file mode 100644 index 00000000..628cd40d Binary files /dev/null and b/mods/sandwiches/textures/trout_sandwich.png differ diff --git a/mods/sandwiches/textures/veggie_sandwich.png b/mods/sandwiches/textures/veggie_sandwich.png new file mode 100644 index 00000000..cdf703df Binary files /dev/null and b/mods/sandwiches/textures/veggie_sandwich.png differ diff --git a/mods/sandwiches/version1-7update.png b/mods/sandwiches/version1-7update.png new file mode 100644 index 00000000..e4caf55d Binary files /dev/null and b/mods/sandwiches/version1-7update.png differ diff --git a/mods/sandwiches/version1-9update.png b/mods/sandwiches/version1-9update.png new file mode 100644 index 00000000..9f347516 Binary files /dev/null and b/mods/sandwiches/version1-9update.png differ diff --git a/mods/tt_armor/LICENSE.txt b/mods/tt_armor/LICENSE.txt new file mode 100644 index 00000000..50b3119d --- /dev/null +++ b/mods/tt_armor/LICENSE.txt @@ -0,0 +1,12 @@ +MIT License + +Copyright (c) 2024 adikalon + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Code by adikalon \ No newline at end of file diff --git a/mods/tt_armor/README.md b/mods/tt_armor/README.md new file mode 100644 index 00000000..699fcabb --- /dev/null +++ b/mods/tt_armor/README.md @@ -0,0 +1,9 @@ +# Extended Tooltips: Armor [`tt_armor`] + +This is an addition to the [tt](https://codeberg.org/Wuzzy/minetest_tt) + +![Preview](./screenshot.png) + +## Description + +Displays armor properties from 3d_armor mod diff --git a/mods/tt_armor/init.lua b/mods/tt_armor/init.lua new file mode 100644 index 00000000..f95b6e98 --- /dev/null +++ b/mods/tt_armor/init.lua @@ -0,0 +1,70 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +local function physics_recalculation(value) + local new_value = math.floor(value * 100) + + if new_value > 0 then + new_value = "+" .. new_value + end + + return new_value +end + +tt.register_snippet(function(itemstring) + local def = minetest.registered_items[itemstring] + local desc + local armor_heal = def.groups.armor_heal + local armor_use = def.groups.armor_use + local armor_fire = def.groups.armor_fire + local armor_water = def.groups.armor_water + local armor_feather = def.groups.armor_feather + local physics_speed = def.groups.physics_speed + local physics_gravity = def.groups.physics_gravity + local physics_jump = def.groups.physics_jump + + if def.armor_groups then + desc = S("Armor") + + if armor_heal then + desc = desc .. "\n" .. S("Protection: @1%", math.floor(armor_heal)) + end + + if armor_use then + desc = desc .. "\n" .. S("Strength: @1", math.floor(65535 / armor_use)) + end + + if armor_fire then + desc = desc .. "\n" .. S("Fire: @1", armor_fire) + end + + if armor_water then + desc = desc .. "\n" .. S("Water protection") + end + + if armor_feather then + desc = desc .. "\n" .. S("Fall protection") + end + + if physics_speed then + desc = desc .. "\n" .. S("Speed: @1%", physics_recalculation(physics_speed)) + end + + if physics_gravity then + desc = desc .. "\n" .. S("Gravity: @1%", physics_recalculation(physics_gravity)) + end + + if physics_jump then + desc = desc .. "\n" .. S("Jump: @1%", physics_recalculation(physics_jump)) + end + + if def.damage_groups then + desc = desc .. "\n" .. S("Protected groups:") + + for key, value in pairs(def.damage_groups) do + desc = desc .. "\n- " .. key ..": " .. value + end + end + end + + return desc +end) diff --git a/mods/tt_armor/locale/tt_armor.ru.tr b/mods/tt_armor/locale/tt_armor.ru.tr new file mode 100644 index 00000000..3a609956 --- /dev/null +++ b/mods/tt_armor/locale/tt_armor.ru.tr @@ -0,0 +1,12 @@ +# textdomain: tt_armor + +Armor=Броня +Protection: @1%=Защита: @1% +Strength: @1=Прочность: @1 +Fire: @1=Огонь: @1 +Water protection=Защита от воды +Fall protection=Защита при падении +Speed: @1%=Скорость: @1% +Gravity: @1%=Гравитация: @1% +Jump: @1%=Прыжок: @1% +Protected groups:=Защищаемые группы: diff --git a/mods/tt_armor/mod.conf b/mods/tt_armor/mod.conf new file mode 100644 index 00000000..a1a29bc0 --- /dev/null +++ b/mods/tt_armor/mod.conf @@ -0,0 +1,6 @@ +name = tt_armor +title = Extended Tooltips: Armor +description = Adds armor information +depends = tt +author = adikalon +release = 27234 diff --git a/mods/tt_armor/screenshot.png b/mods/tt_armor/screenshot.png new file mode 100644 index 00000000..018c0c71 Binary files /dev/null and b/mods/tt_armor/screenshot.png differ diff --git a/mods/tt_food/LICENSE.txt b/mods/tt_food/LICENSE.txt new file mode 100644 index 00000000..50b3119d --- /dev/null +++ b/mods/tt_food/LICENSE.txt @@ -0,0 +1,12 @@ +MIT License + +Copyright (c) 2024 adikalon + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Code by adikalon \ No newline at end of file diff --git a/mods/tt_food/README.md b/mods/tt_food/README.md new file mode 100644 index 00000000..747c5548 --- /dev/null +++ b/mods/tt_food/README.md @@ -0,0 +1,34 @@ +# Extended Tooltips: Food [`tt_food`] + +This is an addition to the [tt](https://codeberg.org/Wuzzy/minetest_tt) mod for minetest game. + +![Preview](./screenshot.png) + +## Description + +Displays saturation points for food. Supports food items without problems, with the eatable group. For many other mods, this group is added intentionally. + +## Supported mods: + +* Farming Redo +* Mobs Animal +* Ethereal +* Dwarf Fortress +* Animal World +* Aqua Farming +* Extra Biomes +* Goblins +* Hardcore Farming +* Living Caves +* Living Caves Mobs +* Living Desert +* Living Floatlands +* Marinara +* Marinara Mobs +* Native Villages +* Natural Biomes +* People +* Variety +* XNether +* Ocean +* Some others... diff --git a/mods/tt_food/init.lua b/mods/tt_food/init.lua new file mode 100644 index 00000000..6ae7a2c0 --- /dev/null +++ b/mods/tt_food/init.lua @@ -0,0 +1,25 @@ +local path = minetest.get_modpath(minetest.get_current_modname()) + +dofile(path .. "/redistribution.lua") + +local S = minetest.get_translator(minetest.get_current_modname()) + +tt.register_snippet(function(itemstring) + local def = minetest.registered_items[itemstring] + local desc + local eatable = def.groups.eatable + + if eatable and def.on_use then + local prefix = "" + + if eatable > 0 then + prefix = "+" + end + + desc = S("Food item") + local msg = prefix .. S("@1 food points", eatable) + desc = desc .. "\n" .. msg + end + + return desc +end) diff --git a/mods/tt_food/locale/template.txt b/mods/tt_food/locale/template.txt new file mode 100644 index 00000000..d43f13f4 --- /dev/null +++ b/mods/tt_food/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: tt_food + +Food item= +@1 food points= diff --git a/mods/tt_food/locale/tt_food.de.tr b/mods/tt_food/locale/tt_food.de.tr new file mode 100644 index 00000000..ad495538 --- /dev/null +++ b/mods/tt_food/locale/tt_food.de.tr @@ -0,0 +1,4 @@ +# textdomain: tt_food + +Food item=Lebensmittel +@1 food points=@1 Nahrungspunkte diff --git a/mods/tt_food/locale/tt_food.fr.tr b/mods/tt_food/locale/tt_food.fr.tr new file mode 100644 index 00000000..490e66a8 --- /dev/null +++ b/mods/tt_food/locale/tt_food.fr.tr @@ -0,0 +1,4 @@ +# textdomain: tt_food + +Food item=alimentaire +@1 food points=@1 de saturation diff --git a/mods/tt_food/locale/tt_food.ru.tr b/mods/tt_food/locale/tt_food.ru.tr new file mode 100644 index 00000000..6e3e888b --- /dev/null +++ b/mods/tt_food/locale/tt_food.ru.tr @@ -0,0 +1,4 @@ +# textdomain: tt_food + +Food item=Еда +@1 food points=@1 к сытости diff --git a/mods/tt_food/mod.conf b/mods/tt_food/mod.conf new file mode 100644 index 00000000..36de94ce --- /dev/null +++ b/mods/tt_food/mod.conf @@ -0,0 +1,7 @@ +name = tt_food +title = Extended Tooltips: Food +description = Adds food information +depends = tt +optional_depends = animalworld, aqua_farming, goblins, hardcore_farming, livingcaves, livingcavesmobs, livingdesert, livingfloatlands, marinara, marinaramobs, nativevillages, naturalbiomes, people, variety, xnether, xocean +author = adikalon +release = 27545 diff --git a/mods/tt_food/redistribution.lua b/mods/tt_food/redistribution.lua new file mode 100644 index 00000000..5931f14a --- /dev/null +++ b/mods/tt_food/redistribution.lua @@ -0,0 +1,188 @@ +local function add_eatable(name, hp) + local item = minetest.registered_items[name] + + if item and item.groups.eatable == nil then + local groups = table.copy(item.groups) or {} + groups.eatable = hp + minetest.override_item(name, {groups = groups}) + end +end + + + +-- animalworld + +add_eatable("animalworld:anteggs_raw", 2) +add_eatable("animalworld:anteggs_cooked", 6) +add_eatable("animalworld:whalemeat_raw", 4) +add_eatable("animalworld:whalemeat_cooked", 8) +add_eatable("animalworld:pork_raw", 4) +add_eatable("animalworld:pork_cooked", 8) +add_eatable("animalworld:rawfish", 3) +add_eatable("animalworld:cookedfish", 5) +add_eatable("animalworld:roastroach", 2) +add_eatable("animalworld:rabbit_raw", 3) +add_eatable("animalworld:rabbit_cooked", 5) +add_eatable("animalworld:locust_roasted", 8) +add_eatable("animalworld:chicken_egg_fried", 2) +add_eatable("animalworld:chicken_raw", 2) +add_eatable("animalworld:chicken_cooked", 6) +add_eatable("animalworld:bugice", 2) +add_eatable("animalworld:rat_cooked", 3) +add_eatable("animalworld:escargots", 2) +add_eatable("animalworld:raw_athropod", 3) +add_eatable("animalworld:cooked_athropod", 5) +add_eatable("animalworld:rawmollusk", 3) +add_eatable("animalworld:cookedmollusk", 5) +add_eatable("animalworld:termitequeen", 2) +add_eatable("animalworld:bucket_milk", 8) +add_eatable("animalworld:glass_milk", 2) +add_eatable("animalworld:butter", 1) +add_eatable("animalworld:cheese", 4) + + + +-- aqua_farming + +add_eatable("aqua_farming:alga_item", 1) +add_eatable("aqua_farming:sea_anemone_item", 5) +add_eatable("aqua_farming:sea_cucumber_item", 4) +add_eatable("aqua_farming:sea_strawberry_cake_piece", 3) +add_eatable("aqua_farming:sea_strawberry_item", 3) + + + +-- goblins + +add_eatable("goblins:mushroom_goblin", 2) +add_eatable("goblins:mushroom_goblin1", 2) +add_eatable("goblins:mushroom_goblin2", 2) +add_eatable("goblins:mushroom_goblin3", 2) +add_eatable("goblins:mushroom_goblin4", 2) + + + +-- hardcore_farming + +add_eatable("hardcore_farming:locust_roasted", 8) +add_eatable("hardcore_farming:rat_cooked", 3) + + + +-- livingcaves + +add_eatable("livingcaves:healingsoup", 8) +add_eatable("livingcaves:mushroom_edible", 5) + + + +-- livingcavesmobs + +add_eatable("livingcavesmobs:cocoon", 2) +add_eatable("livingcavesmobs:mothegg", 2) + + + +-- livingdesert + +add_eatable("livingdesert:date_palm_fruits", 6) +add_eatable("livingdesert:figcactus_fruit", 6) + + + +-- livingfloatlands + +add_eatable("livingfloatlands:ornithischiaraw", 3) +add_eatable("livingfloatlands:ornithischiacooked", 5) +add_eatable("livingfloatlands:theropodraw", 3) +add_eatable("livingfloatlands:theropodcooked", 5) +add_eatable("livingfloatlands:coldsteppe_bulbous_chervil_root", 2) +add_eatable("livingfloatlands:roasted_pine_nuts", 5) +add_eatable("livingfloatlands:coldsteppe_pine_pinecone", 2) +add_eatable("livingfloatlands:coldsteppe_pine2_pinecone", 2) +add_eatable("livingfloatlands:coldsteppe_pine3_pinecone", 2) +add_eatable("livingfloatlands:largemammalraw", 3) +add_eatable("livingfloatlands:largemammalcooked", 5) +add_eatable("livingfloatlands:giantforest_oaknut_cracked", 5) +add_eatable("livingfloatlands:giantforest_oaknut", 2) +add_eatable("livingfloatlands:sauropodraw", 3) +add_eatable("livingfloatlands:sauropodcooked", 5) +add_eatable("livingfloatlands:paleojungle_clubmoss_fruit", 5) + + + +-- marinara + +add_eatable("marinara:mussels_cooked", 8) +add_eatable("marinara:raw_oisters", 6) + + + +-- marinaramobs + +add_eatable("marinaramobs:octopus_raw", 3) +add_eatable("marinaramobs:octopus_cooked", 5) +add_eatable("marinaramobs:raw_exotic_fish", 3) +add_eatable("marinaramobs:cooked_exotic_fish", 5) +add_eatable("marinaramobs:seaurchin_cooked", 8) + + + +-- nativevillages + +add_eatable("nativevillages:catfish_raw", 4) +add_eatable("nativevillages:catfish_cooked", 8) +add_eatable("nativevillages:bucket_milk", 8) +add_eatable("nativevillages:glass_milk", 2) +add_eatable("nativevillages:butter", 1) +add_eatable("nativevillages:cheese", 4) +add_eatable("nativevillages:driedhumanmeat", 2) +add_eatable("nativevillages:chicken_egg_fried", 2) +add_eatable("nativevillages:chicken_raw", 2) +add_eatable("nativevillages:chicken_cooked", 6) + + + +-- naturalbiomes + +add_eatable("naturalbiomes:cowberry", 2) +add_eatable("naturalbiomes:alpine_mushroom", 1) +add_eatable("naturalbiomes:blackberry", 2) +add_eatable("naturalbiomes:wildrose", 2) +add_eatable("naturalbiomes:hazelnut", 2) +add_eatable("naturalbiomes:hazelnut_cracked", 5) +add_eatable("naturalbiomes:olives", 6) +add_eatable("naturalbiomes:banana_bunch", 6) +add_eatable("naturalbiomes:banana", 2) +add_eatable("naturalbiomes:coconut_slice", 2) +add_eatable("naturalbiomes:coconut", 6) + + + +-- people + +add_eatable("people:dogfood", 2) +add_eatable("people:dogfood_cooked", 6) +add_eatable("people:mutton_raw", 2) +add_eatable("people:mutton_cooked", 6) +add_eatable("people:bandage", 2) + + + +-- variety + +add_eatable("variety:bamboo_cooked", 2) + + + +-- xnether + +add_eatable("xnether:fruit", -3) + + + +-- xocean + +add_eatable("xocean:kelp", 1) +add_eatable("xocean:sushi", 6) +add_eatable("xocean:fish_edible", 3) diff --git a/mods/tt_food/screenshot.png b/mods/tt_food/screenshot.png new file mode 100644 index 00000000..16a0c745 Binary files /dev/null and b/mods/tt_food/screenshot.png differ diff --git a/mods/what_is_this_uwu/LICENSE b/mods/what_is_this_uwu/LICENSE new file mode 100644 index 00000000..fc83ddc8 --- /dev/null +++ b/mods/what_is_this_uwu/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Rotfuchs von Vulpes + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/mods/what_is_this_uwu/README.md b/mods/what_is_this_uwu/README.md new file mode 100644 index 00000000..7dbe40b0 --- /dev/null +++ b/mods/what_is_this_uwu/README.md @@ -0,0 +1,27 @@ +# What is this? UwU +[![ContentDB](https://content.minetest.net/packages/Rotfuchs-von-Vulpes/what_is_this_uwu/shields/title/)](https://content.minetest.net/packages/Rotfuchs-von-Vulpes/what_is_this_uwu/) +[![ContentDB](https://content.minetest.net/packages/Rotfuchs-von-Vulpes/what_is_this_uwu/shields/downloads/)](https://content.minetest.net/packages/Rotfuchs-von-Vulpes/what_is_this_uwu/) + +A mod that says at the top of your screen what you're looking at. + +## Screenshots: + +![](./textures/tree.png) + +![](./textures/bed.png) + +![](./textures/door.png) + +![](./textures/water.png) + +## Chatcommands + +To unshow thw pop-up, typed this in console: + +``` +/wituwu +``` + +And typed again to show. + +Enjoy! 🦊 diff --git a/mods/what_is_this_uwu/help.lua b/mods/what_is_this_uwu/help.lua new file mode 100644 index 00000000..a9992653 --- /dev/null +++ b/mods/what_is_this_uwu/help.lua @@ -0,0 +1,416 @@ +local what_is_this_uwu = { + players = {}, + players_set = {} +} + +local function split (str, sep) + if sep == nil then + sep = "%s" + end + + local t = {} + for char in string.gmatch(str, "([^"..sep.."]+)") do + table.insert(t, char) + end + + return t +end + +local char_width = { + A = 12, + B = 10, + C = 13, + D = 12, + E = 11, + F = 9, + G = 13, + H = 12, + I = 3, + J = 9, + K = 11, + L = 9, + M = 13, + N = 11, + O = 13, + P = 10, + Q = 13, + R = 12, + S = 10, + T = 11, + U = 11, + V = 10, + W = 15, + X = 11, + Y = 11, + Z = 10, + a = 10, + b = 8, + c = 8, + d = 9, + e = 9, + f = 5, + g = 9, + h = 9, + i = 2, + j = 6, + k = 8, + l = 4, + m = 13, + n = 8, + o = 10, + p = 8, + q = 10, + r = 4, + s = 8, + t = 5, + u = 8, + v = 8, + w = 12, + x = 8, + y = 8, + z = 8, +} +char_width[' '] = 5 +char_width['_'] = 9 + +local function is_strange(str) + for char in str:gmatch'.' do + if char == '' then + return true + end + end + + return false +end + +local function string_to_pixels(str) + local size = 0 + + str:gsub('.', function(char) + local pixels = char_width[char] + + if pixels then + size = size + pixels + else + size = size + 14 + end + end) + + return size +end + +local function inventorycube(img1, img2, img3) + if not img1 then return '' end + + img2 = img2 or img1 + img3 = img3 or img1 + + img1 = img1..'^[resize:16x16' + img2 = img2..'^[resize:16x16' + img3 = img3..'^[resize:16x16' + + return "[inventorycube".. + "{"..img1:gsub("%^","&").. + "{"..img2:gsub("%^","&").. + "{"..img3:gsub("%^","&") +end + +local function serialize(val, name, skipnewlines, depth) + skipnewlines = skipnewlines or false + depth = depth or 0 + + local tmp = string.rep(' ', depth) + + if name then tmp = tmp .. name .. ' = ' end + + if type(val) == 'table' then + tmp = tmp .. '{' .. (not skipnewlines and '\n' or '') + + for k, v in pairs(val) do + tmp = tmp .. serialize(v, k, skipnewlines, depth + 1) .. ',' .. (not skipnewlines and '\n' or '') + end + + tmp = tmp .. string.rep(' ', depth) .. '}' + elseif type(val) == 'number' then + tmp = tmp .. tostring(val) + elseif type(val) == 'string' then + tmp = tmp .. string.format('%q', val) + elseif type(val) == 'boolean' then + tmp = tmp .. (val and 'true' or 'false') + else + tmp = tmp .. '\'[inserializeable datatype:' .. type(val) .. ']\'' + end + + return tmp +end + +function what_is_this_uwu.split_item_name(item_name) + local splited = split(item_name, ':') + + return splited[1], splited[2] +end + +function what_is_this_uwu.destrange(str) + local is_strange = is_strange(str); + local ignore = true; + + local temp_str + if is_strange then + local temp_str = '' + local reading = true + local is_special = false + local between_parenthesis = false + + for char in str:gmatch'.' do + if char == '' then + reading = false + elseif reading and not between_parenthesis then + temp_str = temp_str..char + else + reading = true + end + + if between_parenthesis then + if char == ')' then + between_parenthesis = false + end + else + if char == '(' then + between_parenthesis = true + end + end + end + + return temp_str + else + return str + end +end + +function what_is_this_uwu.register_player(player, name) + if not what_is_this_uwu.players_set[name] then + table.insert(what_is_this_uwu.players, player) + what_is_this_uwu.players_set[name] = true + end +end + +function what_is_this_uwu.remove_player(name) + if what_is_this_uwu.players_set[name] then + what_is_this_uwu.players_set[name] = false + + for i, player in ipairs(what_is_this_uwu.players) do + if player == name then + table.remove(what_is_this_uwu.players, i) + break + end + end + end +end + +function what_is_this_uwu.get_pointed_thing(player) + if not what_is_this_uwu.players_set[player:get_player_name()] then return end + + -- get player position + local player_pos = player:get_pos() + local eye_height = player:get_properties().eye_height + local eye_offset = player:get_eye_offset() + player_pos.y = player_pos.y + eye_height + player_pos = vector.add(player_pos, eye_offset) + + -- set liquids vision + local see_liquid = + minetest.registered_nodes[minetest.get_node(player_pos).name].drawtype ~= 'liquid' + + -- get wielded item range 5 is engine default + -- order tool/item range >> hand_range >> fallback 5 + local tool_range = player:get_wielded_item():get_definition().range or nil + local hand_range + for key, val in pairs(minetest.registered_items) do + if key == "" then + hand_range = val.range or nil + end + end + local wield_range = tool_range or hand_range or 5 + + -- determine ray end position + local look_dir = player:get_look_dir() + look_dir = vector.multiply(look_dir, wield_range) + local end_pos = vector.add(look_dir, player_pos) + + -- get pointed_thing + local ray = minetest.raycast(player_pos, end_pos, false, see_liquid) + + return ray:next() +end + +function what_is_this_uwu.get_node_tiles(node_name) + local node = minetest.registered_nodes[node_name] + + if not node then + return 'ignore', 'node', false + end + + if node.groups['not_in_creative_inventory'] then + drop = node.drop + if drop and type(drop) == 'string' then + node_name = drop + node = minetest.registered_nodes[drop] + if not node then + node = minetest.registered_craftitems[drop] + end + end + end + + if not node or not node.tiles and not node.inventory_image then + return 'ignore', 'node', false + end + + local tiles = node.tiles + + local mod_name, item_name = what_is_this_uwu.split_item_name(node_name) + + if node.inventory_image:sub(1, 14) == '[inventorycube' then + return node.inventory_image..'^[resize:146x146', 'node', minetest.registered_nodes[node_name] + elseif node.inventory_image ~= '' then + return node.inventory_image..'^[resize:16x16', 'craft_item', minetest.registered_nodes[node_name] + else + if not tiles[1] then + return '', 'node', minetest.registered_nodes[node_name] + end + + tiles[3] = tiles[3] or tiles[1] + tiles[6] = tiles[6] or tiles[3] + + if type(tiles[1]) == 'table' then + tiles[1] = tiles[1].name + end + if type(tiles[3]) == 'table' then + tiles[3] = tiles[3].name + end + if type(tiles[6]) == 'table' then + tiles[6] = tiles[6].name + end + + return inventorycube(tiles[1], tiles[6], tiles[3]), 'node', minetest.registered_nodes[node_name] + end +end + +function what_is_this_uwu.show_background(player, meta) + player:hud_change( + meta:get_string('wit:background_left'), + 'text', + 'left_side.png' + ) + player:hud_change( + meta:get_string('wit:background_middle'), + 'text', + 'middle.png' + ) + player:hud_change( + meta:get_string('wit:background_right'), + 'text', + 'right_side.png' + ) +end + +function what_is_this_uwu.show(player, meta, form_view, node_description, node_name, item_type, mod_name) + if meta:get_string('wit:pointed_thing') == 'ignore' then + what_is_this_uwu.show_background(player, meta) + end + + meta:set_string('wit:pointed_thing', node_name) + + local size + if #node_description >= #mod_name then + size = string_to_pixels(node_description) + else + size = string_to_pixels(mod_name) + end + + player:hud_change( + meta:get_string('wit:background_middle'), + 'scale', + {x = size / 16 + 2, y = 2} + ) + player:hud_change( + meta:get_string('wit:background_right'), + 'offset', + {x = size, y = 35} + ) + + player:hud_change( + meta:get_string('wit:image'), + 'text', + form_view + ) + player:hud_change( + meta:get_string('wit:name'), + 'text', + node_description + ) + player:hud_change( + meta:get_string('wit:mod'), + 'text', + mod_name + ) + + if meta:get_string('wit:item_type_in_pointer') ~= item_type then + local scale = {} + + meta:set_string('wit:item_type_in_pointer', item_type) + + if item_type == 'node' then + scale.x = 0.3 + scale.y = 0.3 + else + scale.x = 2.5 + scale.y = 2.5 + end + + player:hud_change( + meta:get_string('wit:image'), + 'scale', + scale + ) + end +end + +function what_is_this_uwu.unshow(player, meta) + if not meta then return end + + meta:set_string('wit:pointed_thing', 'ignore') + + player:hud_change( + meta:get_string('wit:background_left'), + 'text', + '' + ) + player:hud_change( + meta:get_string('wit:background_middle'), + 'text', + '' + ) + player:hud_change( + meta:get_string('wit:background_right'), + 'text', + '' + ) + + player:hud_change( + meta:get_string('wit:image'), + 'text', + '' + ) + player:hud_change( + meta:get_string('wit:name'), + 'text', + '' + ) + player:hud_change( + meta:get_string('wit:mod'), + 'text', + '' + ) +end + +return what_is_this_uwu diff --git a/mods/what_is_this_uwu/init.lua b/mods/what_is_this_uwu/init.lua new file mode 100644 index 00000000..fb8d194b --- /dev/null +++ b/mods/what_is_this_uwu/init.lua @@ -0,0 +1,112 @@ +local what_is_this_uwu = dofile(minetest.get_modpath('what_is_this_uwu')..'/help.lua') + +minetest.register_on_joinplayer(function(player) + local meta = player:get_meta() + + local background_id_left = player:hud_add({ + hud_elem_type = "image", + position = {x = 0.5, y = 0}, + scale = {x = 2, y = 2}, + text = '', + offset = {x = -50, y = 35}, + }) + local background_id_middle = player:hud_add({ + hud_elem_type = "image", + position = {x = 0.5, y = 0}, + scale = {x = 2, y = 2}, + text = '', + alignment = {x = 1}, + offset = {x = -37.5, y = 35}, + }) + local background_id_right = player:hud_add({ + hud_elem_type = "image", + position = {x = 0.5, y = 0}, + scale = {x = 2, y = 2}, + text = '', + offset = {x = 0, y = 35}, + }) + + local image_id = player:hud_add({ + hud_elem_type = "image", + position = {x = 0.5, y = 0}, + scale = {x = 0.3, y = 0.3}, + offset = {x = -35, y = 35}, + }) + local name_id = player:hud_add({ + hud_elem_type = "text", + position = {x = 0.5, y = 0}, + scale = {x = 0.3, y = 0.3}, + number = 0xffffff, + alignment = {x = 1}, + offset = {x = 0, y = 29}, + }) + local mod_id = player:hud_add({ + hud_elem_type = "text", + position = {x = 0.5, y = 0}, + scale = {x = 0.3, y = 0.3}, + number = 0xff3c0a, + alignment = {x = 1}, + offset = {x = 0, y = 46}, + }) + + meta:set_string('wit:background_left', background_id_left) + meta:set_string('wit:background_middle', background_id_middle) + meta:set_string('wit:background_right', background_id_right) + meta:set_string('wit:image', image_id) + meta:set_string('wit:name', name_id) + meta:set_string('wit:mod', mod_id) + meta:set_string('wit:pointed_thing', 'ignore') + meta:set_string('wit:item_type_in_pointer', 'node') + + what_is_this_uwu.register_player(player, player:get_player_name()) +end) + +minetest.register_on_leaveplayer(function(player) + what_is_this_uwu.remove_player(player, player:get_player_name()) +end) + +minetest.register_globalstep(function() + for _, player in ipairs(what_is_this_uwu.players) do + local meta = player:get_meta() + local pointed_thing = what_is_this_uwu.get_pointed_thing(player) + + if pointed_thing then + local node = minetest.get_node(pointed_thing.under) + local node_name = node.name + + if meta:get_string('wit:pointed_thing') ~= node_name then + local form_view, item_type, node_definition = what_is_this_uwu.get_node_tiles(node_name, meta) + + if not node_definition then + what_is_this_uwu.unshow(player, meta) + + return + end + + local node_description = what_is_this_uwu.destrange(node_definition.description) + local mod_name, _ = what_is_this_uwu.split_item_name(node_name) + + what_is_this_uwu.show(player, meta, form_view, node_description, node_name, item_type, mod_name) + end + else + what_is_this_uwu.unshow(player, meta) + end + end +end) + +minetest.register_chatcommand('wituwu', { + params = '', + description = 'Show and unshow the wituwu pop-up', + func = function(name) + local player = minetest.get_player_by_name(name) + + if what_is_this_uwu.players_set[name] then + what_is_this_uwu.remove_player(name) + what_is_this_uwu.unshow(player, player:get_meta()) + else + what_is_this_uwu.register_player(player, name) + end + + return true, 'Option flipped' + end +}) diff --git a/mods/what_is_this_uwu/mod.conf b/mods/what_is_this_uwu/mod.conf new file mode 100644 index 00000000..95501bef --- /dev/null +++ b/mods/what_is_this_uwu/mod.conf @@ -0,0 +1,6 @@ +name = what_is_this_uwu +description = A mod that says at the top of your screen what you're looking at. +depends = +title = What is This? UwU +author = Rotfuchs-von-Vulpes +release = 13647 diff --git a/mods/what_is_this_uwu/textures/bed.png b/mods/what_is_this_uwu/textures/bed.png new file mode 100644 index 00000000..4c2c1bb8 Binary files /dev/null and b/mods/what_is_this_uwu/textures/bed.png differ diff --git a/mods/what_is_this_uwu/textures/door.png b/mods/what_is_this_uwu/textures/door.png new file mode 100644 index 00000000..d1c10d23 Binary files /dev/null and b/mods/what_is_this_uwu/textures/door.png differ diff --git a/mods/what_is_this_uwu/textures/left_side.png b/mods/what_is_this_uwu/textures/left_side.png new file mode 100644 index 00000000..fc714544 Binary files /dev/null and b/mods/what_is_this_uwu/textures/left_side.png differ diff --git a/mods/what_is_this_uwu/textures/middle.png b/mods/what_is_this_uwu/textures/middle.png new file mode 100644 index 00000000..59f88e4e Binary files /dev/null and b/mods/what_is_this_uwu/textures/middle.png differ diff --git a/mods/what_is_this_uwu/textures/right_side.png b/mods/what_is_this_uwu/textures/right_side.png new file mode 100644 index 00000000..4a9c7b93 Binary files /dev/null and b/mods/what_is_this_uwu/textures/right_side.png differ diff --git a/mods/what_is_this_uwu/textures/tree.png b/mods/what_is_this_uwu/textures/tree.png new file mode 100644 index 00000000..747109e8 Binary files /dev/null and b/mods/what_is_this_uwu/textures/tree.png differ diff --git a/mods/what_is_this_uwu/textures/water.png b/mods/what_is_this_uwu/textures/water.png new file mode 100644 index 00000000..3c49b0af Binary files /dev/null and b/mods/what_is_this_uwu/textures/water.png differ diff --git a/mods/x_farming/carrot.lua b/mods/x_farming/carrot.lua index d41c4f5d..16ebd669 100644 --- a/mods/x_farming/carrot.lua +++ b/mods/x_farming/carrot.lua @@ -45,10 +45,11 @@ local carrot_def = { -- MCL food = 2, eatable = 1, - compostability = 65 + compostability = 65, + food_carrot = 1 }, _mcl_saturation = 3.6, - _mcl_blast_resistance = 0, + _mcl_blast_resistance = 0 } if minetest.get_modpath('farming') then diff --git a/mods/x_farming/potato.lua b/mods/x_farming/potato.lua index 1b8bb5eb..c26bf19c 100644 --- a/mods/x_farming/potato.lua +++ b/mods/x_farming/potato.lua @@ -46,7 +46,8 @@ local potato_def = { food = 2, eatable = 1, compostability = 65, - smoker_cookable = 1 + smoker_cookable = 1, + food_potato = 1 }, _mcl_saturation = 0.6 } diff --git a/mods/x_farming/soybean.lua b/mods/x_farming/soybean.lua index 0635333b..2488fa98 100644 --- a/mods/x_farming/soybean.lua +++ b/mods/x_farming/soybean.lua @@ -40,7 +40,8 @@ minetest.override_item('x_farming:soybean', { -- X Farming compost = 65, -- MCL - compostability = 65 + compostability = 65, + food_soy = 1 }, }) @@ -50,7 +51,7 @@ minetest.register_craftitem('x_farming:bottle_soymilk', { tiles = { 'x_farming_bottle_soymilk.png' }, inventory_image = 'x_farming_bottle_soymilk.png', wield_image = 'x_farming_bottle_soymilk.png', - groups = { vessel = 1 }, + groups = { vessel = 1 , food_milk = 1}, sounds = x_farming.node_sound_thin_glass_defaults(), }) @@ -67,11 +68,11 @@ minetest.register_craft({ type = 'shapeless', output = 'x_farming:bottle_soymilk_raw', recipe = { - 'x_farming:soybean', - 'x_farming:soybean', - 'x_farming:soybean', - 'x_farming:soybean', - 'x_farming:soybean', + 'group:food_soy', + 'group:food_soy', + 'group:food_soy', + 'group:food_soy', + 'group:food_soy', 'x_farming:bottle_water' } }) diff --git a/mods/x_farming/strawberry.lua b/mods/x_farming/strawberry.lua index 66d47319..8435925e 100644 --- a/mods/x_farming/strawberry.lua +++ b/mods/x_farming/strawberry.lua @@ -40,7 +40,8 @@ local strawberry_def = { -- X Farming compost = 30, -- MCL - compostability = 30 + compostability = 30, + food_strawberry = 1 }, short_description = S('Strawberry'), } diff --git a/mods/xcompat/.github/workflows/farlands_reloaded.yml b/mods/xcompat/.github/workflows/farlands_reloaded.yml new file mode 100644 index 00000000..176f2d9a --- /dev/null +++ b/mods/xcompat/.github/workflows/farlands_reloaded.yml @@ -0,0 +1,23 @@ +name: farlands_reloaded +on: [push, pull_request] +jobs: + test: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout + uses: actions/checkout@main + - uses: buckaroobanzay/mtt@main + with: + modname: xcompat + git_game_repo: https://github.com/TerraQuest-Studios/farlands_reloaded + git_dependencies: | + https://github.com/mt-mods/unifieddyes + https://github.com/mt-mods/basic_materials + https://github.com/OgelGames/fakelib + https://github.com/mt-mods/pipeworks + https://github.com/mt-mods/steel + https://github.com/mt-mods/display_modpack + https://github.com/mt-mods/homedecor_modpack + additional_config: | + mtt_nodelist = farlands_reloaded.txt \ No newline at end of file diff --git a/mods/xcompat/.github/workflows/hades_revisited.yml b/mods/xcompat/.github/workflows/hades_revisited.yml new file mode 100644 index 00000000..650e49b5 --- /dev/null +++ b/mods/xcompat/.github/workflows/hades_revisited.yml @@ -0,0 +1,23 @@ +name: hades_revisited +on: [push, pull_request] +jobs: + test: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout + uses: actions/checkout@main + - uses: buckaroobanzay/mtt@main + with: + modname: xcompat + git_game_repo: https://codeberg.org/Wuzzy/Hades_Revisited + git_dependencies: | + https://github.com/mt-mods/unifieddyes + https://github.com/mt-mods/basic_materials + https://github.com/OgelGames/fakelib + https://github.com/mt-mods/pipeworks + https://github.com/mt-mods/steel + https://github.com/mt-mods/display_modpack + https://github.com/mt-mods/homedecor_modpack + additional_config: | + mtt_nodelist = hades_revisited.txt \ No newline at end of file diff --git a/mods/xcompat/.github/workflows/luacheck.yml b/mods/xcompat/.github/workflows/luacheck.yml new file mode 100644 index 00000000..18088bce --- /dev/null +++ b/mods/xcompat/.github/workflows/luacheck.yml @@ -0,0 +1,10 @@ +name: luacheck +on: [push, pull_request] +jobs: + luacheck: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@main + - name: Luacheck + uses: lunarmodules/luacheck@master diff --git a/mods/xcompat/.github/workflows/mineclonia.yml b/mods/xcompat/.github/workflows/mineclonia.yml new file mode 100644 index 00000000..d9ef8207 --- /dev/null +++ b/mods/xcompat/.github/workflows/mineclonia.yml @@ -0,0 +1,23 @@ +name: mineclonia +on: [push, pull_request] +jobs: + test: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout + uses: actions/checkout@main + - uses: buckaroobanzay/mtt@main + with: + modname: xcompat + git_game_repo: https://codeberg.org/mineclonia/mineclonia + git_dependencies: | + https://github.com/mt-mods/unifieddyes + https://github.com/mt-mods/basic_materials + https://github.com/OgelGames/fakelib + https://github.com/mt-mods/pipeworks + https://github.com/mt-mods/steel + https://github.com/mt-mods/display_modpack + https://github.com/mt-mods/homedecor_modpack + additional_config: | + mtt_nodelist = mineclonia.txt \ No newline at end of file diff --git a/mods/xcompat/.github/workflows/minetest_game.yml b/mods/xcompat/.github/workflows/minetest_game.yml new file mode 100644 index 00000000..6b887cda --- /dev/null +++ b/mods/xcompat/.github/workflows/minetest_game.yml @@ -0,0 +1,23 @@ +name: minetest_game +on: [push, pull_request] +jobs: + test: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout + uses: actions/checkout@main + - uses: buckaroobanzay/mtt@main + with: + modname: xcompat + git_game_repo: https://github.com/minetest/minetest_game + git_dependencies: | + https://github.com/mt-mods/unifieddyes + https://github.com/mt-mods/basic_materials + https://github.com/OgelGames/fakelib + https://github.com/mt-mods/pipeworks + https://github.com/mt-mods/steel + https://github.com/mt-mods/display_modpack + https://github.com/mt-mods/homedecor_modpack + additional_config: | + mtt_nodelist = minetest.txt \ No newline at end of file diff --git a/mods/xcompat/.github/workflows/voxelibre.yml b/mods/xcompat/.github/workflows/voxelibre.yml new file mode 100644 index 00000000..9c2e93f5 --- /dev/null +++ b/mods/xcompat/.github/workflows/voxelibre.yml @@ -0,0 +1,23 @@ +name: voxelibre +on: [push, pull_request] +jobs: + test: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout + uses: actions/checkout@main + - uses: buckaroobanzay/mtt@main + with: + modname: xcompat + git_game_repo: https://git.minetest.land/VoxeLibre/VoxeLibre/ + git_dependencies: | + https://github.com/mt-mods/unifieddyes + https://github.com/mt-mods/basic_materials + https://github.com/OgelGames/fakelib + https://github.com/mt-mods/pipeworks + https://github.com/mt-mods/steel + https://github.com/mt-mods/display_modpack + https://github.com/mt-mods/homedecor_modpack + additional_config: | + mtt_nodelist = voxelibre.txt \ No newline at end of file diff --git a/mods/xcompat/.luacheckrc b/mods/xcompat/.luacheckrc new file mode 100644 index 00000000..e46563b5 --- /dev/null +++ b/mods/xcompat/.luacheckrc @@ -0,0 +1,21 @@ +globals = { + "minetest", + "xcompat", +} + +read_globals = { + "default", + "mcl_sounds", + "ks_sounds", + "nodes_nature", + "fl_stone", + "fl_topsoil", + "fl_trees", + "hades_sounds", + "rp_sounds", + "mtt", + "sounds", + "player_api", + "mcl_player", + "fl_player", +} diff --git a/mods/xcompat/LICENSE b/mods/xcompat/LICENSE new file mode 100644 index 00000000..b04a4864 --- /dev/null +++ b/mods/xcompat/LICENSE @@ -0,0 +1,19 @@ + +MIT Copyright 2021-2024 wsor4035 + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/mods/xcompat/README.md b/mods/xcompat/README.md new file mode 100644 index 00000000..e3d1e265 --- /dev/null +++ b/mods/xcompat/README.md @@ -0,0 +1,34 @@ +# XCompat + +[![luacheck](https://github.com/mt-mods/xcompat/actions/workflows/luacheck.yml/badge.svg?branch=master)](https://github.com/mt-mods/xcompat/actions/workflows/luacheck.yml) +[![ContentDB](https://content.minetest.net/packages/mt-mods/xcompat/shields/downloads/)](https://content.minetest.net/packages/mt-mods/xcompat/) + +Provides cross compatibility between games and mods for sounds and crafting materials. + +Thanks to: +* MisterE, OgelGames, and Blockhead for naming advice/suggestion. +* luk3yx, Blockhead, BuckarooBanzai for bouncing ideas on the concept of this mod. + +## Usage + +See the respective sub apis doc file in /doc for detailed documentation. + +## Directly supported games and mods + +| Games | Sounds | Materials | Textures | Player | +| ----------------- | --------- | --------- | --------- | ------ | +| Minetest Game | x | x | x | x | +| MineClone2 | x | x | | x | +| Mineclonia | x | x | | x | +| Hades Revisited | x | x | | | +| Farlands Reloaded | x | x | x | x | +| Exile | x | | | | +| KSurvive 2 | x | | | | +| Forgotten Lands | x | | | | + +For functions see /doc/functions.md for the specifics relating to the function + +**Mods** +* `basic_materials` +* `mesecons_materials` +* `moreores` diff --git a/mods/xcompat/doc/functions.md b/mods/xcompat/doc/functions.md new file mode 100644 index 00000000..fd4541a1 --- /dev/null +++ b/mods/xcompat/doc/functions.md @@ -0,0 +1,13 @@ +# Functions API + +## `can_interact_with_node(player, pos)` +returns `bool` + +checks for the ability to interact with a node via: +* if a player +* owner metadata key +* protection_bypass + +supports +* minetest game default if present +* else polyfill \ No newline at end of file diff --git a/mods/xcompat/doc/gameid.md b/mods/xcompat/doc/gameid.md new file mode 100644 index 00000000..a09f9be5 --- /dev/null +++ b/mods/xcompat/doc/gameid.md @@ -0,0 +1,12 @@ +# GameId API + +## minetest versions >= 5.7 + +simply returns `minetest.get_game_info().id` + +## minetest versions < 5.7 + +approximates the gameid value via a hardcoded table of gameid=>modname +and then checks via `minetest.get_modpath()`. If it fails, it falls +back to using `xcompat_unknown_gameid` as the id. See the chart in the +readme for which games are supported \ No newline at end of file diff --git a/mods/xcompat/doc/materials.md b/mods/xcompat/doc/materials.md new file mode 100644 index 00000000..6eca5b36 --- /dev/null +++ b/mods/xcompat/doc/materials.md @@ -0,0 +1,3 @@ +# Materials API + +consult `/src/materials/minetest.lua` at this time \ No newline at end of file diff --git a/mods/xcompat/doc/player.md b/mods/xcompat/doc/player.md new file mode 100644 index 00000000..cdb84311 --- /dev/null +++ b/mods/xcompat/doc/player.md @@ -0,0 +1,13 @@ +# Player API + +mimic mtg player_api + +## NOTE + +`xcompat.player.player_attached` + +read/write from it is fine, looping over it is not as it is a proxy table. this +would need lua5.2 __pairs/__ipairs metamethods support which i could polyfill +for using https://stackoverflow.com/a/77354254 but didnt feel like doing at +this time. (luajit supports this via 5.2 extensions). additionally see issue: +https://github.com/minetest/minetest/issues/15133 \ No newline at end of file diff --git a/mods/xcompat/doc/sounds.md b/mods/xcompat/doc/sounds.md new file mode 100644 index 00000000..3b13d62f --- /dev/null +++ b/mods/xcompat/doc/sounds.md @@ -0,0 +1,35 @@ +# Sound API + +## Option 1: Agnostically depend + +You can do this by using a custom field in your node def instead of the `sounds` key. + +```lua +minetest.register_node(nodename, { + ... + _sound_def = { + key = "", + input = {}, + }, + ... +}) +``` + +where: + +* key: string name of the field from the sound api you want to use, for example `node_sound_stone_defaults` +* input: table input of fields you want passed to the key field, used to override specific sounds. + +## Option 2: Hard depend + +add this mod to your mod.confs depends and directly call the sound_api as follows + +```lua +minetest.register_node(nodename, { + ... + sounds = xcompat.sounds.node_sound_stone_defaults(input) + ... +}) +``` + +* input: optional table to override some or all of returned values \ No newline at end of file diff --git a/mods/xcompat/doc/textures.md b/mods/xcompat/doc/textures.md new file mode 100644 index 00000000..973e9341 --- /dev/null +++ b/mods/xcompat/doc/textures.md @@ -0,0 +1,3 @@ +# Textures API + +consult `/src/texture/minetest.lua` at this time \ No newline at end of file diff --git a/mods/xcompat/gitattributes b/mods/xcompat/gitattributes new file mode 100644 index 00000000..1a19d520 --- /dev/null +++ b/mods/xcompat/gitattributes @@ -0,0 +1,2 @@ +test export-ignore +.github export-ignore \ No newline at end of file diff --git a/mods/xcompat/init.lua b/mods/xcompat/init.lua new file mode 100644 index 00000000..883b0d3e --- /dev/null +++ b/mods/xcompat/init.lua @@ -0,0 +1,51 @@ +local modpath = minetest.get_modpath("xcompat") + +xcompat = { + modpath = modpath, +} + +xcompat.gameid = dofile(modpath .. "/src/gameid.lua") +xcompat.utilities = dofile(modpath .. "/src/utilities.lua") + +xcompat.sounds = dofile(modpath .. "/src/sounds.lua") +xcompat.materials = dofile(modpath .. "/src/materials.lua") +xcompat.textures = dofile(modpath .. "/src/textures.lua") +xcompat.functions = dofile(modpath .. "/src/functions.lua") +xcompat.player = dofile(modpath .. "/src/player.lua") + +local function validate_sound(key) + if key and xcompat.sounds[key] then + return true + elseif key then + minetest.log("warning", "attempted to call invalid sound: "..key) + else + minetest.log("warning", "sound_def is missing a sound_api key") + end + return false +end + +minetest.register_on_mods_loaded(function() + for name, def in pairs(minetest.registered_nodes) do + if def._sound_def and validate_sound(def._sound_def.key) then + minetest.override_item(name, { + sounds = xcompat.sounds[def._sound_def.key](def._sound_def.input) + }) + end + end + + local old_reg_node = minetest.register_node + function minetest.register_node(name, def) + if def._sound_def and validate_sound(def._sound_def.key) then + def.sounds = xcompat.sounds[def._sound_def.key](def._sound_def.input) + end + + old_reg_node(name, def) + end +end) + +dofile(modpath .. "/src/commands.lua") + +if minetest.get_modpath("mtt") and mtt.enabled then + -- register tests + dofile(modpath .. "/mtt.lua") +end diff --git a/mods/xcompat/mod.conf b/mods/xcompat/mod.conf new file mode 100644 index 00000000..b53aec52 --- /dev/null +++ b/mods/xcompat/mod.conf @@ -0,0 +1,6 @@ +name = xcompat +description = Provides cross compatibility between mods and games for sounds and crafting materials. +optional_depends = default, fl_stone, fl_trees, mcl_sounds, hades_sounds, ks_sounds, nodes_nature, fl_topsoil, fl_trees, mcl_core, farming, x_farming, sounds, mtt, player_api, mcl_player, fl_player +release = 30345 +author = mt-mods +title = Xcompat diff --git a/mods/xcompat/mtt.lua b/mods/xcompat/mtt.lua new file mode 100644 index 00000000..e407cfef --- /dev/null +++ b/mods/xcompat/mtt.lua @@ -0,0 +1,10 @@ + +-- emerge a part of the world (basic smoketest) +mtt.emerge_area({ x=0, y=0, z=0 }, { x=10, y=10, z=10 }) + +-- check nodelist +local mtt_nodelist = minetest.settings:get("mtt_nodelist") +if mtt_nodelist then + -- nodelist specified, check if all the required nodes are present + mtt.validate_nodenames(minetest.get_modpath("xcompat") .. "/test/nodelist/" .. mtt_nodelist) +end \ No newline at end of file diff --git a/mods/xcompat/src/commands.lua b/mods/xcompat/src/commands.lua new file mode 100644 index 00000000..15bf4e76 --- /dev/null +++ b/mods/xcompat/src/commands.lua @@ -0,0 +1,76 @@ +local materials_list = minetest.get_dir_list(xcompat.modpath.."/src/materials", false) +local materials = {} +for _, material in ipairs(materials_list) do + local gameid = material:sub(1, -5) + materials[gameid] = dofile(xcompat.modpath.."/src/materials/"..material) +end + +local textures_list = minetest.get_dir_list(xcompat.modpath.."/src/textures", false) +local textures = {} +for _, texture in ipairs(textures_list) do + local gameid = texture:sub(1, -5) + textures[gameid] = dofile(xcompat.modpath.."/src/textures/"..texture) +end + +local sounds_list = minetest.get_dir_list(xcompat.modpath.."/src/sounds", false) +local sounds = {} +for _, sound in ipairs(sounds_list) do + local gameid = sound:sub(1, -5) + sounds[gameid] = dofile(xcompat.modpath.."/src/sounds/"..sound) +end + +minetest.register_chatcommand("xcompat_test_materials", { + description = "Test materials", + privs = {server=true}, + func = function(name, _) + local reference_materials = materials["minetest"] + + for gameid, game_materials in pairs(materials) do + for material, _ in pairs(reference_materials) do + if not game_materials[material] then + minetest.chat_send_player(name, "Missing material: "..material.." in game: "..gameid) + end + end + end + + minetest.chat_send_player(name, "Materials test complete") + end +}) + +--WARNING: only handles top level of table currently +--TODO: handle nested tables +minetest.register_chatcommand("xcompat_test_textures", { + description = "Test textures", + privs = {server=true}, + func = function(name, _) + local reference_textures = textures["xcompat_agnostic"] + + for gameid, game_textures in pairs(textures) do + for texture, _ in pairs(reference_textures) do + if not game_textures[texture] then + minetest.chat_send_player(name, "Missing texture: "..texture.." in game: "..gameid) + end + end + end + + minetest.chat_send_player(name, "Textures test complete") + end +}) + +minetest.register_chatcommand("xcompat_test_sounds", { + description = "Test sounds", + privs = {server=true}, + func = function(name, _) + local reference_sounds = sounds["xcompat_agnostic"] + + for gameid, game_sounds in pairs(sounds) do + for sound, _ in pairs(reference_sounds) do + if not game_sounds[sound] then + minetest.chat_send_player(name, "Missing sound: "..sound.." in game: "..gameid) + end + end + end + + minetest.chat_send_player(name, "Sounds test complete") + end +}) diff --git a/mods/xcompat/src/functions.lua b/mods/xcompat/src/functions.lua new file mode 100644 index 00000000..51700b93 --- /dev/null +++ b/mods/xcompat/src/functions.lua @@ -0,0 +1,55 @@ +local functions = {} + +function functions.can_interact_with_node(player, pos) + --if we have default, use it + if default then return default.can_interact_with_node(player, pos) end + + local owner = minetest.get_meta(pos):get_string("owner") or "" + + --check that we have a valid player + if not player or not player:is_player() then return false end + --check there privs for compat with areas + if minetest.check_player_privs(player, "protection_bypass") then return true end + --if a normal player, check if they are the owner + if owner == "" or owner == player:get_player_name() then return true end + + return false +end + +function functions.sapling_on_place( + itemstack, player, pointed_thing, sapling_name, minp_relative, maxp_relative, interval +) + if default then + return default.sapling_on_place( + itemstack, player, pointed_thing, sapling_name, minp_relative, maxp_relative, interval + ) + end + + local pos = pointed_thing.above + local pname = player and player:get_player_name() or "" + local below_node = minetest.get_node_or_nil(pointed_thing.under) + + if below_node and minetest.registered_items[below_node.name] and + minetest.registered_items[below_node.name].buildable_to then + + pos = pointed_thing.under + end + + --check protection + if minetest.is_protected(pos, pname) then + minetest.record_protection_violation(pos, pname) + return itemstack + end + + --actually place sapling + minetest.set_node(pos, {name = sapling_name}) + + --handle survival + if not minetest.is_creative_enabled(pname) then + itemstack:take_item() + end + + return itemstack +end + +return functions \ No newline at end of file diff --git a/mods/xcompat/src/gameid.lua b/mods/xcompat/src/gameid.lua new file mode 100644 index 00000000..b21b0b1a --- /dev/null +++ b/mods/xcompat/src/gameid.lua @@ -0,0 +1,33 @@ +local game_alias = { + mineclone2 = "mineclonia", +} + +local game_modnames = { + mineclonia = "mcl_core", + farlands_reloaded = "fl_core", + minetest = "default", + hades = "hades_core", + exile = "exile_env_sounds", + ksurvive2 = "ks_metals", +} + +local gameid = "xcompat_unknown_gameid" + +if type(minetest.get_game_info) == "function" then + gameid = minetest.get_game_info().id +else + for game, modname in pairs(game_modnames) do + if minetest.get_modpath(modname) then + gameid = game + break + end + end +end + +--for games that are similar/derviatives of other games +if game_alias[gameid] then gameid = game_alias[gameid] end + +--while minetest game derviates are not supported, we can still try to detect them +if minetest.get_modpath("default") then gameid = "minetest" end + +return gameid \ No newline at end of file diff --git a/mods/xcompat/src/materials.lua b/mods/xcompat/src/materials.lua new file mode 100644 index 00000000..0512eafb --- /dev/null +++ b/mods/xcompat/src/materials.lua @@ -0,0 +1,8 @@ +local filename = xcompat.gameid + +--if we dont have a materials file for the game, use minetest +if not xcompat.utilities.file_exists(xcompat.modpath .. "/src/materials/" .. filename .. ".lua") then + filename = "minetest" +end + +return dofile(xcompat.modpath .. "/src/materials/" .. filename .. ".lua") diff --git a/mods/xcompat/src/materials/asuna2.lua b/mods/xcompat/src/materials/asuna2.lua new file mode 100644 index 00000000..feab7480 --- /dev/null +++ b/mods/xcompat/src/materials/asuna2.lua @@ -0,0 +1,106 @@ +local materials = { + sand = "default:sand", + sandstone = "default:sandstone", + gravel = "default:gravel", + flint = "default:flint", + copper_ingot = "default:copper_ingot", + steel_ingot = "default:steel_ingot", + gold_ingot = "default:gold_ingot", + tin_ingot = "default:tin_ingot", + copper_block = "default:copperblock", + steel_block = "default:steelblock", + gold_block = "default:goldblock", + tin_block = "default:tinblock", + axe_steel = "default:axe_steel", + axe_diamond = "default:axe_diamond", + axe_bronze = "default:axe_bronze", + axe_stone = "default:axe_stone", + axe_wood = "default:axe_wood", + pick_steel = "default:pick_steel", + mese = "default:mese", + mese_crystal = "default:mese_crystal", + mese_crystal_fragment = "default:mese_crystal_fragment", + torch = "default:torch", + diamond = "default:diamond", + clay_lump = "default:clay_lump", + water_bucket = "bucket:bucket_water", + empty_bucket = "bucket:bucket_empty", + dye_dark_grey = "dye:dark_grey", + dye_black = "dye:black", + dye_white = "dye:white", + dye_green = "dye:green", + dye_red = "dye:red", + dye_yellow = "dye:yellow", + dye_brown = "dye:brown", + dye_blue = "dye:blue", + dye_violet = "dye:violet", + dye_grey = "dye:grey", + dye_dark_green = "dye:dark_green", + dye_orange = "dye:orange", + dye_pink = "dye:pink", + dye_cyan = "dye:cyan", + dye_magenta = "dye:magenta", + silicon = "mesecons_materials:silicon", + string = "farming:string", + paper = "default:paper", + book = "default:book", + iron_lump = "default:iron_lump", + wool_grey = "wool:grey", + wool_green = "wool:green", + wool_dark_green = "wool:dark_green", + wool_brown = "wool:brown", + wool_black = "wool:black", + wool_white = "wool:white", + slab_stone = "stairs:slab_stone", + slab_wood = "stairs:slab_wood", + glass = "default:glass", + glass_block = "default:glass", + glass_bottle = "vessels:glass_bottle", + coal_lump = "default:coal_lump", + stone = "default:stone", + desert_stone = "default:desert_stone", + desert_sand = "default:desert_sand", + chest = "default:chest", + cobble = "default:cobble", + brick = "default:brick", + obsidian_glass = "default:obsidian_glass", + water_source = "default:water_source", + water_flowing = "default:water_flowing", + dirt = "default:dirt", + dirt_with_grass = "default:dirt_with_grass", + apple_leaves = "default:leaves", + apple_log = "default:tree", + apple_planks = "default:wood", + birch_leaves = "default:aspen_leaves", + birch_log = "default:aspen_tree", + birch_planks = "default:aspen_wood", + jungle_leaves = "default:jungleleaves", + bowl = "", + stick = "default:stick", +} + +if minetest.registered_items["farming:bowl"] then + materials.bowl = "farming:bowl" +elseif minetest.get_modpath("x_farming") then + materials.bowl = "x_farming:bowl" +end + +if minetest.get_modpath("moreores") then + materials.silver_ingot = "moreores:silver_ingot" +end + +if minetest.get_modpath("technic") then + materials.lead_ingot = "technic:lead_ingot" + materials.carbon_steel_ingot = "technic:carbon_steel_ingot" + materials.stainless_steel_ingot = "technic:stainless_steel_ingot" +end + +if minetest.get_modpath("aloz") then + materials.aluminum_ingot = "aloz:aluminum_ingot" +end + +if minetest.get_modpath("techage") then + materials.aluminum_ingot = "techage:aluminum" +end + +return materials \ No newline at end of file diff --git a/mods/xcompat/src/materials/farlands_reloaded.lua b/mods/xcompat/src/materials/farlands_reloaded.lua new file mode 100644 index 00000000..7ed19551 --- /dev/null +++ b/mods/xcompat/src/materials/farlands_reloaded.lua @@ -0,0 +1,93 @@ +local materials = { + sand = "fl_stone:sand", + sandstone = "fl_stone:sandstone", + gravel = "fl_topsoil:gravel", + flint = "fl_topsoil:flint", + copper_ingot = "fl_ores:copper_ingot", + steel_ingot = "fl_ores:iron_ingot", + gold_ingot = "fl_ores:gold_ingot", + tin_ingot = "fl_ores:tin_ingot", + copper_block = "fl_ores:copper_block", + steel_block = "fl_ores:iron_block", + gold_block = "fl_ores:gold_block", + tin_block = "fl_ores:tin_block", + axe_steel = "fl_tools:steel_axe", + axe_diamond = "fl_tools:diamond_axe", + axe_bronze = "fl_tools:bronze_axe", + axe_stone = "fl_tools:stone_axe", + axe_wood = "fl_tools:wood_axe", + pick_steel = "fl_tools:steel_pick", + mese = "fl_ores:iron_ingot", + mese_crystal = "fl_ores:iron_ingot", + mese_crystal_fragment = "fl_ores:iron_ingot", + torch = "fl_light_sources:torch", + diamond = "fl_ores:diamond", + clay_lump = "fl_bricks:clay_lump", + water_bucket = "fl_bucket:bucket_water", + empty_bucket = "fl_bucket:bucket", + dye_dark_grey = "fl_dyes:dark_grey_dye", + dye_black = "fl_dyes:black_dye", + dye_white = "fl_dyes:white_dye", + dye_green = "fl_dyes:green_dye", + dye_red = "fl_dyes:red_dye", + dye_yellow = "fl_dyes:yellow_dye", + dye_brown = "fl_dyes:brown_dye", + dye_blue = "fl_dyes:blue_dye", + dye_violet = "fl_dyes:violet_dye", + dye_grey = "fl_dyes:grey_dye", + dye_dark_green = "fl_dyes:dark_green_dye", + dye_orange = "fl_dyes:orange_dye", + dye_pink = "fl_dyes:pink_dye", + dye_cyan = "fl_dyes:cyan_dye", + dye_magenta = "fl_dyes:magenta_dye", + silver_ingot = "fl_ores:iron_ingot", + silicon = "mesecons_materials:silicon", + string = "fl_plantlife:oxeye_daisy", + paper = "", + book = "", + iron_lump = "fl_ores:iron_ore", + wool_grey = "", + wool_green = "", + wool_dark_green = "", + wool_brown = "", + wool_black = "", + wool_white = "", + slab_stone = "fl_stone:stone_slab", + slab_wood = "fl_trees:apple_plank_slab", + glass = "fl_glass:framed_glass", + glass_block = "fl_glass:framed_glass", + glass_bottle = "fl_bottles:bottle", + coal_lump = "fl_ores:coal_ore", + stone = "fl_stone:stone", + desert_stone = "fl_stone:desert_stone", + desert_sand = "fl_stone:desert_sand", + chest = "fl_storage:wood_chest", + cobble = "fl_stone:stone_rubble", + brick = "", + obsidian_glass = "", + water_source = "fl_liquids:water_source", + water_flowing = "fl_liquids:water_flowing", + dirt = "fl_stone:dirt", + dirt_with_grass = "fl_topsoil:dirt_with_grass", + apple_leaves = "fl_trees:apple_leaves", + apple_log = "fl_trees:apple_trunk", + apple_planks = "fl_trees:apple_plank", + birch_leaves = "fl_trees:aspen_leaves", + birch_log = "fl_trees:aspen_trunk", + birch_planks = "fl_trees:aspen_plank", + jungle_leaves = "fl_trees:jungletree_leaves", + bowl = "", + stick = "fl_trees:stick", +} + +if minetest.get_modpath("basic_materials") then + materials.paper = "basic_materials:plastic_sheet" +end + +if minetest.registered_items["farming:bowl"] then + materials.bowl = "farming:bowl" +elseif minetest.get_modpath("x_farming") then + materials.bowl = "x_farming:bowl" +end + +return materials \ No newline at end of file diff --git a/mods/xcompat/src/materials/hades_revisited.lua b/mods/xcompat/src/materials/hades_revisited.lua new file mode 100644 index 00000000..a40f1f38 --- /dev/null +++ b/mods/xcompat/src/materials/hades_revisited.lua @@ -0,0 +1,107 @@ +local materials = { + sand = "hades_core:fertile_sand", + sandstone = "hades_core:sandstone", + gravel = "hades_core:gravel", + flint = "", + copper_ingot = "hades_core:copper_ingot", + steel_ingot = "hades_core:steel_ingot", + gold_ingot = "hades_core:gold_ingot", + tin_ingot = "hades_core:tin_ingot", + silver_ingot = "--unknown--", + copper_block = "hades_core:copperblock", + steel_block = "hades_core:steelblock", + gold_block = "hades_core:goldblock", + tin_block = "hades_core:tinblock", + axe_steel = "hades_core:axe_steel", + axe_diamond = "hades_core:axe_diamond", + axe_bronze = "hades_core:axe_bronze", + axe_stone = "hades_core:axe_stone", + axe_wood = "hades_core:axe_wood", + pick_steel = "hades_core:pick_steel", + mese = "hades_core:mese", + mese_crystal = "hades_core:mese_crystal", + mese_crystal_fragment = "hades_core:mese_crystal_fragment", + torch = "hades_torches:torch", + diamond = "hades_core:diamond", + clay_lump = "hades_core:clay_lump", + clay_brick = "hades_core:clay_brick", + + --[[ + Since hades doesnt have buckets or water for the user, + using dirt from near water to pull the water out + ]] + water_bucket = "hades_core:dirt", + empty_bucket = "hades_core:fertile_sand", + dye_dark_grey = "dye:dark_grey", + dye_black = "dye:black", + dye_white = "dye:white", + dye_green = "dye:green", + dye_red = "dye:red", + dye_yellow = "dye:yellow", + dye_brown = "dye:brown", + dye_blue = "dye:blue", + dye_violet = "dye:violet", + dye_grey = "dye:grey", + dye_dark_green = "dye:dark_green", + dye_orange = "dye:orange", + dye_pink = "dye:pink", + dye_cyan = "dye:cyan", + dye_magenta = "dye:magenta", + silicon = "hades_materials:silicon", + string = "hades_farming:string", + paper = "hades_core:paper", + book = "hades_core:book", + iron_lump = "hades_core:iron_lump", + wool_grey = "wool:grey", + wool_green = "wool:green", + wool_dark_green = "wool:dark_green", + wool_brown = "wool:brown", + wool_black = "wool:black", + wool_white = "wool:white", + slab_stone = "stairs:slab_stone", + slab_wood = "stairs:slab_wood", + glass = "hades_core:glass", + glass_block = "hades_core:glass", + glass_bottle = "vessels:glass_bottle", + obsidian_glass = "hades_core:obsidian_glass", + coal_lump = "hades_core:coal_lump", + stone = "hades_core:stone", + desert_stone = "hades_core:stone_baked", + desert_sand = "hades_core:volcanic_sand", + chest = "hades_chests:chest"; + cobble = "hades_core:cobble", + brick = "hades_core:brick", + water_source = "hades_core:water_source", + water_flowing = "hades_core:water_flowing", + dirt = "hades_core:dirt", + dirt_with_grass = "hades_core:dirt_with_grass", + apple_leaves = "hades_trees:leaves", + apple_log = "hades_trees:tree", + apple_planks = "hades_trees:wood", + birch_leaves = "hades_core:birch_leaves", + birch_log = "hades_trees:birch_tree", + birch_planks = "hades_trees:cream_wood", + jungle_leaves = "hades_trees:jungle_leaves", +--hades has no bowl but you get plate on eat so makes most sense? + bowl = "hades_food:plate", + stick = "hades_core:stick", +} + +if minetest.get_modpath("hades_bucket") then + materials["water_bucket"] = "hades_bucket:bucket_water" + materials["empty_bucket"] = "hades_bucket:bucket_empty" +end +if minetest.get_modpath("hades_extraores") then + materials["silver_ingot"] = "hades_extraores:silver_ingot" + materials["aluminum_ingot"] = "hades_extraores:aluminum_ingot" +end +if minetest.get_modpath("hades_default") then + materials.desert_sand = "hades_default:desert_sand" +end +if minetest.get_modpath("hades_technic") then + materials.lead_ingot = "hades_technic:lead_ingot" + materials.carbon_steel_ingot = "hades_technic:carbon_steel_ingot" + materials.stainless_steel_ingot = "hades_technic:stainless_steel_ingot" +end + +return materials \ No newline at end of file diff --git a/mods/xcompat/src/materials/mineclonia.lua b/mods/xcompat/src/materials/mineclonia.lua new file mode 100644 index 00000000..261f53be --- /dev/null +++ b/mods/xcompat/src/materials/mineclonia.lua @@ -0,0 +1,117 @@ +--note this file handles mineclonia, mineclone2, and its rename voxelibre + +local mcl_dyes = minetest.get_modpath("mcl_dyes") +local mcl_dyes_name = mcl_dyes and "mcl_dyes" or "mcl_dye" + +local materials = { + sand = "mcl_core:sand", + sandstone = "mcl_core:sandstone", + gravel = "mcl_core:gravel", + flint = "mcl_core:flint", + copper_ingot = "mcl_copper:copper_ingot", + steel_ingot = "mcl_core:iron_ingot", + gold_ingot = "mcl_core:gold_ingot", + tin_ingot = "mcl_core:iron_ingot", + copper_block = "mcl_copper:block", + steel_block = "mcl_core:ironblock", + gold_block = "mcl_core:goldblock", + tin_block = "mcl_core:ironblock", + axe_steel = "mcl_core:axe_steel", + axe_diamond = "mcl_core:axe_diamond", + axe_bronze = "mcl_core:axe_bronze", + axe_stone = "mcl_core:axe_stone", + axe_wood = "mcl_core:axe_wood", + pick_steel = "mcl_core:pick_steel", + torch = "mcl_torches:torch", + diamond = "mcl_core:diamond", + clay_lump = "mcl_core:clay_lump", + water_bucket = "mcl_buckets:bucket_water", + empty_bucket = "mcl_buckets:bucket_empty", + dye_dark_grey = mcl_dyes_name .. ":dark_grey", + dye_black = mcl_dyes_name .. ":black", + dye_white = mcl_dyes_name .. ":white", + dye_green = mcl_dyes_name .. ":green", + dye_red = mcl_dyes_name .. ":red", + dye_yellow = mcl_dyes_name .. ":yellow", + dye_brown = mcl_dyes_name .. ":brown", + dye_blue = mcl_dyes_name .. ":blue", + dye_violet = mcl_dyes_name .. ":violet", + dye_grey = mcl_dyes_name .. ":grey", + dye_dark_green = mcl_dyes_name .. ":dark_green", + dye_orange = mcl_dyes_name .. ":orange", + dye_pink = mcl_dyes_name .. ":pink", + dye_cyan = mcl_dyes_name .. ":cyan", + dye_magenta = mcl_dyes_name .. ":magenta", + silicon = "mcl_core:iron_ingot", + string = "mcl_mobitems:string", + paper = "mcl_core:paper", + book = "mcl_books:book", + iron_lump = "mcl_raw_ores:raw_iron", + wool_grey = "mcl_wool:grey", + wool_green = "mcl_wool:green", + wool_dark_green = "mcl_wool:dark_green", + wool_brown = "mcl_wool:brown", + wool_black = "mcl_wool:black", + wool_white = "mcl_wool:white", + slab_stone = "mcl_stairs:slab_stone", + slab_wood = "mcl_stairs:slab_wood", + glass = "mcl_core:glass", + glass_block = "mcl_core:glass", + glass_bottle = "mcl_potions:glass_bottle", + coal_lump = "mcl_core:coal_lump", + stone = "mcl_core:stone", + desert_stone = "mcl_core:redsandstone", + desert_sand = "mcl_core:sand", + chest = "mcl_chests:chest", + cobble = "mcl_core:cobble", + brick = "mcl_core:brick", + obsidian_glass = "", + water_source = "mcl_core:water_source", + water_flowing = "mcl_core:water_flowing", + dirt = "mcl_core:dirt", + dirt_with_grass = "mcl_core:dirt_with_grass", + bowl = "mcl_core:bowl", + stick = "mcl_core:stick", +} + +if minetest.get_modpath("mcl_redstone") then + materials.mese = "mcl_redstone_torch:redstoneblock" + materials.mese_crystal = "mcl_redstone:redstone" + materials.mese_crystal_fragment = "mcl_core:iron_ingot" +else + materials.mese = "mesecons_torch:redstoneblock" + materials.mese_crystal = "mesecons:redstone" + materials.mese_crystal_fragment = "mcl_core:iron_ingot" +end + +if minetest.get_modpath("mcl_trees") then + materials.apple_leaves = "mcl_trees:leaves_oak" + materials.apple_log = "mcl_trees:tree_oak" + materials.apple_planks = "mcl_trees:wood_oak" + materials.birch_leaves = "mcl_trees:leaves_birch" + materials.birch_log = "mcl_trees:tree_birch" + materials.birch_planks = "mcl_trees:wood_birch" + materials.jungle_leaves = "mcl_trees:leaves_jungle" +else + materials.apple_leaves = "mcl_core:leaves" + materials.apple_log = "mcl_core:tree" + materials.apple_planks = "mcl_core:wood" + materials.birch_leaves = "mcl_core:birchleaves" + materials.birch_log = "mcl_core:birchtree" + materials.birch_planks = "mcl_core:birchwood" + materials.jungle_leaves = "mcl_core:jungleleaves" +end + +if minetest.get_modpath("moreores") then + materials.tin_ingot = "moreores:tin_ingot" + materials.tin_block = "moreores:tin_block" + materials.silver_ingot = "moreores:silver_ingot" +end + +if minetest.get_modpath("technic") then + materials.lead_ingot = "technic:lead_ingot" + materials.carbon_steel_ingot = "technic:carbon_steel_ingot" + materials.stainless_steel_ingot = "technic:stainless_steel_ingot" +end + +return materials diff --git a/mods/xcompat/src/materials/minetest.lua b/mods/xcompat/src/materials/minetest.lua new file mode 100644 index 00000000..feab7480 --- /dev/null +++ b/mods/xcompat/src/materials/minetest.lua @@ -0,0 +1,106 @@ +local materials = { + sand = "default:sand", + sandstone = "default:sandstone", + gravel = "default:gravel", + flint = "default:flint", + copper_ingot = "default:copper_ingot", + steel_ingot = "default:steel_ingot", + gold_ingot = "default:gold_ingot", + tin_ingot = "default:tin_ingot", + copper_block = "default:copperblock", + steel_block = "default:steelblock", + gold_block = "default:goldblock", + tin_block = "default:tinblock", + axe_steel = "default:axe_steel", + axe_diamond = "default:axe_diamond", + axe_bronze = "default:axe_bronze", + axe_stone = "default:axe_stone", + axe_wood = "default:axe_wood", + pick_steel = "default:pick_steel", + mese = "default:mese", + mese_crystal = "default:mese_crystal", + mese_crystal_fragment = "default:mese_crystal_fragment", + torch = "default:torch", + diamond = "default:diamond", + clay_lump = "default:clay_lump", + water_bucket = "bucket:bucket_water", + empty_bucket = "bucket:bucket_empty", + dye_dark_grey = "dye:dark_grey", + dye_black = "dye:black", + dye_white = "dye:white", + dye_green = "dye:green", + dye_red = "dye:red", + dye_yellow = "dye:yellow", + dye_brown = "dye:brown", + dye_blue = "dye:blue", + dye_violet = "dye:violet", + dye_grey = "dye:grey", + dye_dark_green = "dye:dark_green", + dye_orange = "dye:orange", + dye_pink = "dye:pink", + dye_cyan = "dye:cyan", + dye_magenta = "dye:magenta", + silicon = "mesecons_materials:silicon", + string = "farming:string", + paper = "default:paper", + book = "default:book", + iron_lump = "default:iron_lump", + wool_grey = "wool:grey", + wool_green = "wool:green", + wool_dark_green = "wool:dark_green", + wool_brown = "wool:brown", + wool_black = "wool:black", + wool_white = "wool:white", + slab_stone = "stairs:slab_stone", + slab_wood = "stairs:slab_wood", + glass = "default:glass", + glass_block = "default:glass", + glass_bottle = "vessels:glass_bottle", + coal_lump = "default:coal_lump", + stone = "default:stone", + desert_stone = "default:desert_stone", + desert_sand = "default:desert_sand", + chest = "default:chest", + cobble = "default:cobble", + brick = "default:brick", + obsidian_glass = "default:obsidian_glass", + water_source = "default:water_source", + water_flowing = "default:water_flowing", + dirt = "default:dirt", + dirt_with_grass = "default:dirt_with_grass", + apple_leaves = "default:leaves", + apple_log = "default:tree", + apple_planks = "default:wood", + birch_leaves = "default:aspen_leaves", + birch_log = "default:aspen_tree", + birch_planks = "default:aspen_wood", + jungle_leaves = "default:jungleleaves", + bowl = "", + stick = "default:stick", +} + +if minetest.registered_items["farming:bowl"] then + materials.bowl = "farming:bowl" +elseif minetest.get_modpath("x_farming") then + materials.bowl = "x_farming:bowl" +end + +if minetest.get_modpath("moreores") then + materials.silver_ingot = "moreores:silver_ingot" +end + +if minetest.get_modpath("technic") then + materials.lead_ingot = "technic:lead_ingot" + materials.carbon_steel_ingot = "technic:carbon_steel_ingot" + materials.stainless_steel_ingot = "technic:stainless_steel_ingot" +end + +if minetest.get_modpath("aloz") then + materials.aluminum_ingot = "aloz:aluminum_ingot" +end + +if minetest.get_modpath("techage") then + materials.aluminum_ingot = "techage:aluminum" +end + +return materials \ No newline at end of file diff --git a/mods/xcompat/src/player.lua b/mods/xcompat/src/player.lua new file mode 100644 index 00000000..fa03f419 --- /dev/null +++ b/mods/xcompat/src/player.lua @@ -0,0 +1,8 @@ +local filename = xcompat.gameid + +--if we dont have a player file for the game, use minetest +if not xcompat.utilities.file_exists(xcompat.modpath .. "/src/player/" .. filename .. ".lua") then + filename = "xcompat_agnostic" +end + +return dofile(xcompat.modpath .. "/src/player/" .. filename .. ".lua") \ No newline at end of file diff --git a/mods/xcompat/src/player/farlands_reloaded.lua b/mods/xcompat/src/player/farlands_reloaded.lua new file mode 100644 index 00000000..288d9ba9 --- /dev/null +++ b/mods/xcompat/src/player/farlands_reloaded.lua @@ -0,0 +1,51 @@ +local papi = {} + +local models = {} +function papi.register_model(name, def) + models[name] = def +end + +function papi.set_model(player, model_name) + local model = models[model_name] + + if not model then return end + + player:set_properties({ + mesh = model_name, + textures = model.textures, + visual = "mesh", + visual_size = model.visual_size, + stepheight = model.stepheight + }) +end + +function papi.get_animation(_) + --stub to keep from crashing +end + +function papi.get_textures(player) + return player:get_properties().textures +end + +function papi.set_textures(player, textures) + player:set_properties({textures = textures}) +end + +function papi.set_animation(player, anim_name, speed, loop) + player:set_animation(fl_player.animations[anim_name], speed, 0, loop) +end + +local metatable = { + __index = function (_, key) + return fl_player.ignore[key] + end, + __newindex = function (_, key, value) + rawset(fl_player.ignore, key, value) + end +} + +papi.player_attached = {} + +setmetatable(papi.player_attached, metatable) + +return papi \ No newline at end of file diff --git a/mods/xcompat/src/player/mineclonia.lua b/mods/xcompat/src/player/mineclonia.lua new file mode 100644 index 00000000..4758be95 --- /dev/null +++ b/mods/xcompat/src/player/mineclonia.lua @@ -0,0 +1,40 @@ +local papi = {} + +function papi.register_model(name, def) + return mcl_player.player_register_model(name, def) +end + +function papi.set_model(player, model) + return mcl_player.player_set_model(player, model) +end + +function papi.get_animation(player) + return mcl_player.player_get_animation(player) +end + +function papi.get_textures(player) + return player:get_properties().textures +end + +function papi.set_textures(player, textures) + player:set_properties({textures = textures}) +end + +function papi.set_animation(player, anim_name, speed, _) + return mcl_player.player_set_animation(player, anim_name, speed) +end + +local metatable = { + __index = function (_, key) + return mcl_player.player_attached[key] + end, + __newindex = function (_, key, value) + rawset(mcl_player.player_attached, key, value) + end +} + +papi.player_attached = {} + +setmetatable(papi.player_attached, metatable) + +return papi \ No newline at end of file diff --git a/mods/xcompat/src/player/minetest.lua b/mods/xcompat/src/player/minetest.lua new file mode 100644 index 00000000..75f4f082 --- /dev/null +++ b/mods/xcompat/src/player/minetest.lua @@ -0,0 +1,41 @@ +local papi = {} + +function papi.register_model(name, def) + return player_api.register_model(name, def) +end + +function papi.set_model(player, model) + return player_api.set_model(player, model) +end + +function papi.get_animation(player) + return player_api.get_animation(player) +end + +function papi.get_textures(player) + return player_api.get_textures(player) +end + +function papi.set_textures(player, texture) + return player_api.set_textures(player, texture) +end + +function papi.set_animation(player, anim_name, speed, loop) + return player_api.set_animation(player, anim_name, speed, loop) +end + + +local metatable = { + __index = function (_, key) + return player_api.player_attached[key] + end, + __newindex = function (_, key, value) + rawset(player_api.player_attached, key, value) + end +} + +papi.player_attached = {} + +setmetatable(papi.player_attached, metatable) + +return papi \ No newline at end of file diff --git a/mods/xcompat/src/player/xcompat_agnostic.lua b/mods/xcompat/src/player/xcompat_agnostic.lua new file mode 100644 index 00000000..3a5523e9 --- /dev/null +++ b/mods/xcompat/src/player/xcompat_agnostic.lua @@ -0,0 +1,41 @@ +local papi = {} + +local models = {} +function papi.register_model(name, def) + models[name] = def +end + +function papi.set_model(player, model_name) + local model = models[model_name] + + if not model then return end + + player:set_properties({ + mesh = model_name, + textures = model.textures, + visual = "mesh", + visual_size = model.visual_size, + stepheight = model.stepheight + }) +end + +function papi.get_animation(_) + --stub to keep from crashing +end + +function papi.get_textures(player) + return player:get_properties().textures +end + +function papi.set_textures(player, textures) + player:set_properties({textures = textures}) +end + +function papi.set_animation(_, _, _, _) + --stub to keep from crashing +end + +--nothing to do here as we have no globalstep .....that we know about anyways +papi.player_attached = {} + +return papi \ No newline at end of file diff --git a/mods/xcompat/src/sounds.lua b/mods/xcompat/src/sounds.lua new file mode 100644 index 00000000..a8712593 --- /dev/null +++ b/mods/xcompat/src/sounds.lua @@ -0,0 +1,8 @@ +local filename = xcompat.gameid + +--if we dont have a materials file for the game, use minetest +if not xcompat.utilities.file_exists(xcompat.modpath .. "/src/sounds/" .. filename .. ".lua") then + filename = "xcompat_agnostic" +end + +return dofile(xcompat.modpath .. "/src/sounds/" .. filename .. ".lua") \ No newline at end of file diff --git a/mods/xcompat/src/sounds/exile.lua b/mods/xcompat/src/sounds/exile.lua new file mode 100644 index 00000000..c944ed65 --- /dev/null +++ b/mods/xcompat/src/sounds/exile.lua @@ -0,0 +1,67 @@ +local sound_api = {} + +function sound_api.node_sound_default(soundtable) + return nodes_nature.node_sound_default(soundtable) +end + +function sound_api.node_sound_stone_defaults(soundtable) + return nodes_nature.node_sound_stone_defaults(soundtable) +end + +function sound_api.node_sound_dirt_defaults(soundtable) + return nodes_nature.node_sound_dirt_defaults(soundtable) +end + +--return dirt as some games use dirt vs grass +function sound_api.node_sound_grass_defaults(soundtable) + return sound_api.node_sound_dirt_defaults(soundtable) +end + +function sound_api.node_sound_sand_defaults(soundtable) + return nodes_nature.node_sound_sand_defaults(soundtable) +end + +function sound_api.node_sound_gravel_defaults(soundtable) + return nodes_nature.node_sound_gravel_defaults(soundtable) +end + +function sound_api.node_sound_wood_defaults(soundtable) + return nodes_nature.node_sound_wood_defaults(soundtable) +end + +function sound_api.node_sound_leaves_defaults(soundtable) + return nodes_nature.node_sound_leaves_defaults(soundtable) +end + +function sound_api.node_sound_glass_defaults(soundtable) + return nodes_nature.node_sound_glass_defaults(soundtable) +end + + +function sound_api.node_sound_ice_defaults(soundtable) + --s/ice/glass + return nodes_nature.node_sound_glass_defaults(soundtable) +end + +function sound_api.node_sound_metal_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_water_defaults(soundtable) + return nodes_nature.node_sound_water_defaults(soundtable) +end + +function sound_api.node_sound_lava_defaults(soundtable) + --s/lava/water + return nodes_nature.node_sound_water_defaults(soundtable) +end + +function sound_api.node_sound_snow_defaults(soundtable) + return nodes_nature.node_sound_snow_defaults(soundtable) +end + +function sound_api.node_sound_wool_defaults(soundtable) + return soundtable +end + +return sound_api \ No newline at end of file diff --git a/mods/xcompat/src/sounds/farlands_reloaded.lua b/mods/xcompat/src/sounds/farlands_reloaded.lua new file mode 100644 index 00000000..e5be8074 --- /dev/null +++ b/mods/xcompat/src/sounds/farlands_reloaded.lua @@ -0,0 +1,65 @@ +local sound_api = {} + +function sound_api.node_sound_default(soundtable) + return soundtable +end + +function sound_api.node_sound_stone_defaults(soundtable) + return fl_stone.sounds.stone(soundtable) +end + +function sound_api.node_sound_dirt_defaults(soundtable) + return fl_topsoil.sounds.grass(soundtable) +end + +--return dirt as some games use dirt vs grass +function sound_api.node_sound_grass_defaults(soundtable) + return sound_api.node_sound_dirt_defaults(soundtable) +end + +function sound_api.node_sound_sand_defaults(soundtable) + return fl_stone.sounds.sand(soundtable) +end + +function sound_api.node_sound_gravel_defaults(soundtable) + return fl_topsoil.sounds.gravel(soundtable) +end + +function sound_api.node_sound_wood_defaults(soundtable) + return fl_trees.sounds.wood(soundtable) +end + +function sound_api.node_sound_leaves_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_glass_defaults(soundtable) + return soundtable +end + + +function sound_api.node_sound_ice_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_metal_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_water_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_lava_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_snow_defaults(soundtable) + return fl_topsoil.sounds.snow(soundtable) +end + +function sound_api.node_sound_wool_defaults(soundtable) + return soundtable +end + +return sound_api \ No newline at end of file diff --git a/mods/xcompat/src/sounds/forgotten_lands.lua b/mods/xcompat/src/sounds/forgotten_lands.lua new file mode 100644 index 00000000..96eb7d94 --- /dev/null +++ b/mods/xcompat/src/sounds/forgotten_lands.lua @@ -0,0 +1,63 @@ +local sound_api = {} + +function sound_api.node_sound_default(soundtable) + return soundtable +end + +function sound_api.node_sound_stone_defaults(soundtable) + return sounds.stone(soundtable) +end + +function sound_api.node_sound_dirt_defaults(soundtable) + return sounds.dirt(soundtable) +end + +function sound_api.node_sound_grass_defaults(soundtable) + return sounds.grass(soundtable) +end + +function sound_api.node_sound_sand_defaults(soundtable) + return sounds.sand(soundtable) +end + +function sound_api.node_sound_gravel_defaults(soundtable) + return sounds.gravel(soundtable) +end + +function sound_api.node_sound_wood_defaults(soundtable) + return sounds.wood(soundtable) +end + +function sound_api.node_sound_leaves_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_glass_defaults(soundtable) + return sounds.glass(soundtable) +end + +function sound_api.node_sound_ice_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_metal_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_water_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_lava_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_snow_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_wool_defaults(soundtable) + return soundtable +end + +return sound_api \ No newline at end of file diff --git a/mods/xcompat/src/sounds/hades_revisited.lua b/mods/xcompat/src/sounds/hades_revisited.lua new file mode 100644 index 00000000..a8a2a04e --- /dev/null +++ b/mods/xcompat/src/sounds/hades_revisited.lua @@ -0,0 +1,66 @@ +local sound_api = {} + +function sound_api.node_sound_default(soundtable) + return hades_sounds.node_sound_defaults(soundtable) +end + +function sound_api.node_sound_stone_defaults(soundtable) + return hades_sounds.node_sound_stone_defaults(soundtable) +end + +function sound_api.node_sound_dirt_defaults(soundtable) + return hades_sounds.node_sound_dirt_defaults(soundtable) +end + +--return dirt as some games use dirt vs grass +function sound_api.node_sound_grass_defaults(soundtable) + return hades_sounds.node_sound_grass_defaults(soundtable) +end + +function sound_api.node_sound_sand_defaults(soundtable) + return hades_sounds.node_sound_sand_defaults(soundtable) +end + +function sound_api.node_sound_gravel_defaults(soundtable) + return hades_sounds.node_sound_gravel_defaults(soundtable) +end + +function sound_api.node_sound_wood_defaults(soundtable) + return hades_sounds.node_sound_wood_defaults(soundtable) +end + +function sound_api.node_sound_leaves_defaults(soundtable) + return hades_sounds.node_sound_leaves_defaults(soundtable) +end + +function sound_api.node_sound_glass_defaults(soundtable) + return hades_sounds.node_sound_glass_defaults(soundtable) +end + + +function sound_api.node_sound_ice_defaults(soundtable) + --s/ice/glass + return hades_sounds.node_sound_glass_defaults(soundtable) +end + +function sound_api.node_sound_metal_defaults(soundtable) + return hades_sounds.node_sound_metal_defaults(soundtable) +end + +function sound_api.node_sound_water_defaults(soundtable) + return hades_sounds.node_sound_water_defaults(soundtable) +end + +function sound_api.node_sound_lava_defaults(soundtable) + return hades_sounds.node_sound_lava_defaults(soundtable) +end + +function sound_api.node_sound_snow_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_wool_defaults(soundtable) + return soundtable +end + +return sound_api \ No newline at end of file diff --git a/mods/xcompat/src/sounds/ksurvive2.lua b/mods/xcompat/src/sounds/ksurvive2.lua new file mode 100644 index 00000000..70ae03b3 --- /dev/null +++ b/mods/xcompat/src/sounds/ksurvive2.lua @@ -0,0 +1,107 @@ +local sound_api = {} + +--ks_sounds conversion +--currently loggy and bedrock are ignored +local ks = {} + +function ks.node_sound_defaults(soundtable) + soundtable = soundtable or {} + soundtable.footstep = soundtable.footstep or ks_sounds.generalnode_sounds.footstep + soundtable.dug = soundtable.dug or ks_sounds.generalnode_sounds.dug + soundtable.dig = soundtable.dig or ks_sounds.generalnode_sounds.dig + soundtable.place = soundtable.place or ks_sounds.generalnode_sounds.place + return soundtable +end + +function ks.node_sound_wood_defaults(soundtable) + soundtable = soundtable or {} + soundtable.footstep = soundtable.footstep or ks_sounds.woodennode_sounds.footstep + soundtable.dug = soundtable.dug or ks_sounds.woodennode_sounds.dug + soundtable.dig = soundtable.dig or ks_sounds.woodennode_sounds.dig + soundtable.place = soundtable.place or ks_sounds.woodennode_sounds.place + ks.node_sound_defaults(soundtable) + return soundtable +end + +function ks.node_sound_leaves_defaults(soundtable) + soundtable = soundtable or {} + soundtable.footstep = soundtable.footstep or ks_sounds.leafynode_sounds.footstep + soundtable.dug = soundtable.dug or ks_sounds.leafynode_sounds.dug + soundtable.dig = soundtable.dig or ks_sounds.leafynode_sounds.dig + soundtable.place = soundtable.place or ks_sounds.leafynode_sounds.place + ks.node_sound_defaults(soundtable) + return soundtable +end + +function ks.node_sound_snow_defaults(soundtable) + soundtable = soundtable or {} + soundtable.footstep = soundtable.footstep or ks_sounds.snowynode_sounds.footstep + soundtable.dug = soundtable.dug or ks_sounds.snowynode_sounds.dug + soundtable.dig = soundtable.dig or ks_sounds.snowynode_sounds.dig + soundtable.place = soundtable.place or ks_sounds.snowynode_sounds.place + ks.node_sound_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_default(soundtable) + return ks.node_sound_default(soundtable) +end + +function sound_api.node_sound_stone_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_dirt_defaults(soundtable) + return soundtable +end + +--return dirt as some games use dirt vs grass +function sound_api.node_sound_grass_defaults(soundtable) + return sound_api.node_sound_dirt_defaults(soundtable) +end + +function sound_api.node_sound_sand_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_gravel_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_wood_defaults(soundtable) + return ks.node_sound_wood_default(soundtable) +end + +function sound_api.node_sound_leaves_defaults(soundtable) + return ks.node_sound_leaves_default(soundtable) +end + +function sound_api.node_sound_glass_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_ice_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_metal_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_water_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_lava_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_snow_defaults(soundtable) + return ks.node_sound_snow_default(soundtable) +end + +function sound_api.node_sound_wool_defaults(soundtable) + return soundtable +end + +return sound_api \ No newline at end of file diff --git a/mods/xcompat/src/sounds/mineclonia.lua b/mods/xcompat/src/sounds/mineclonia.lua new file mode 100644 index 00000000..5de0753b --- /dev/null +++ b/mods/xcompat/src/sounds/mineclonia.lua @@ -0,0 +1,67 @@ +--note this file handles mineclonia, mineclone2, and its rename voxelibre + +local sound_api = {} + +function sound_api.node_sound_default(soundtable) + return mcl_sounds.node_sound_defaults(soundtable) +end + +function sound_api.node_sound_stone_defaults(soundtable) + return mcl_sounds.node_sound_stone_defaults(soundtable) +end + +function sound_api.node_sound_dirt_defaults(soundtable) + return mcl_sounds.node_sound_dirt_defaults(soundtable) +end + +--return dirt as some games use dirt vs grass +function sound_api.node_sound_grass_defaults(soundtable) + return sound_api.node_sound_dirt_defaults(soundtable) +end + +function sound_api.node_sound_sand_defaults(soundtable) + return mcl_sounds.node_sound_sand_defaults(soundtable) +end + +function sound_api.node_sound_gravel_defaults(soundtable) + return mcl_sounds.node_sound_sand_defaults(soundtable) +end + +function sound_api.node_sound_wood_defaults(soundtable) + return mcl_sounds.node_sound_wood_defaults(soundtable) +end + +function sound_api.node_sound_leaves_defaults(soundtable) + return mcl_sounds.node_sound_leaves_defaults(soundtable) +end + +function sound_api.node_sound_glass_defaults(soundtable) + return mcl_sounds.node_sound_glass_defaults(soundtable) +end + + +function sound_api.node_sound_ice_defaults(soundtable) + return mcl_sounds.node_sound_glass_defaults(soundtable) +end + +function sound_api.node_sound_metal_defaults(soundtable) + return mcl_sounds.node_sound_metal_defaults(soundtable) +end + +function sound_api.node_sound_water_defaults(soundtable) + return mcl_sounds.node_sound_water_defaults(soundtable) +end + +function sound_api.node_sound_lava_defaults(soundtable) + return mcl_sounds.node_sound_lava_defaults(soundtable) +end + +function sound_api.node_sound_snow_defaults(soundtable) + return mcl_sounds.node_sound_snow_defaults(soundtable) +end + +function sound_api.node_sound_wool_defaults(soundtable) + return mcl_sounds.node_sound_wool_defaults(soundtable) +end + +return sound_api \ No newline at end of file diff --git a/mods/xcompat/src/sounds/minetest.lua b/mods/xcompat/src/sounds/minetest.lua new file mode 100644 index 00000000..3c2485e4 --- /dev/null +++ b/mods/xcompat/src/sounds/minetest.lua @@ -0,0 +1,67 @@ +local sound_api = {} + +function sound_api.node_sound_default(soundtable) + return default.node_sound_defaults(soundtable) +end + +function sound_api.node_sound_stone_defaults(soundtable) + return default.node_sound_stone_defaults(soundtable) +end + +function sound_api.node_sound_dirt_defaults(soundtable) + return default.node_sound_dirt_defaults(soundtable) +end + +--return dirt as some games use dirt vs grass +function sound_api.node_sound_grass_defaults(soundtable) + return sound_api.node_sound_dirt_defaults(soundtable) +end + +function sound_api.node_sound_sand_defaults(soundtable) + return default.node_sound_sand_defaults(soundtable) +end + +function sound_api.node_sound_gravel_defaults(soundtable) + return default.node_sound_gravel_defaults(soundtable) +end + +function sound_api.node_sound_wood_defaults(soundtable) + return default.node_sound_wood_defaults(soundtable) +end + +function sound_api.node_sound_leaves_defaults(soundtable) + return default.node_sound_leaves_defaults(soundtable) +end + +function sound_api.node_sound_glass_defaults(soundtable) + return default.node_sound_glass_defaults(soundtable) +end + + +function sound_api.node_sound_ice_defaults(soundtable) + return default.node_sound_ice_defaults(soundtable) +end + +function sound_api.node_sound_metal_defaults(soundtable) + return default.node_sound_metal_defaults(soundtable) +end + +function sound_api.node_sound_water_defaults(soundtable) + return default.node_sound_water_defaults(soundtable) +end + +function sound_api.node_sound_lava_defaults(soundtable) + --s/lava/water + return default.node_sound_water_defaults(soundtable) +end + +function sound_api.node_sound_snow_defaults(soundtable) + return default.node_sound_snow_defaults(soundtable) +end + +function sound_api.node_sound_wool_defaults(soundtable) + --s/wool/default + return default.node_sound_defaults(soundtable) +end + +return sound_api \ No newline at end of file diff --git a/mods/xcompat/src/sounds/xcompat_agnostic.lua b/mods/xcompat/src/sounds/xcompat_agnostic.lua new file mode 100644 index 00000000..2dbdf30c --- /dev/null +++ b/mods/xcompat/src/sounds/xcompat_agnostic.lua @@ -0,0 +1,63 @@ +local sound_api = {} + +function sound_api.node_sound_default(soundtable) + return soundtable +end + +function sound_api.node_sound_stone_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_dirt_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_grass_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_sand_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_gravel_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_wood_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_leaves_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_glass_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_ice_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_metal_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_water_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_lava_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_snow_defaults(soundtable) + return soundtable +end + +function sound_api.node_sound_wool_defaults(soundtable) + return soundtable +end + +return sound_api \ No newline at end of file diff --git a/mods/xcompat/src/textures.lua b/mods/xcompat/src/textures.lua new file mode 100644 index 00000000..ceb7736a --- /dev/null +++ b/mods/xcompat/src/textures.lua @@ -0,0 +1,8 @@ +local filename = xcompat.gameid + +--if we dont have a materials file for the game, use minetest +if not xcompat.utilities.file_exists(xcompat.modpath .. "/src/textures/" .. filename .. ".lua") then + filename = "xcompat_agnostic" +end + +return dofile(xcompat.modpath .. "/src/textures/" .. filename .. ".lua") \ No newline at end of file diff --git a/mods/xcompat/src/textures/farlands_reloaded.lua b/mods/xcompat/src/textures/farlands_reloaded.lua new file mode 100644 index 00000000..eb06cd69 --- /dev/null +++ b/mods/xcompat/src/textures/farlands_reloaded.lua @@ -0,0 +1,57 @@ +local textures = { + gravel = "farlands_gravel.png", + brick = "farlands_brick.png", + + metal = { + steel = { + ore = "farlands_iron_ingot.png", + ingot = "farlands_iron_ingot.png", + block = "farlands_iron_block.png", + }, + gold = { + ore = "farlands_gold_ore.png", + ingot = "farlands_gold_ingot.png", + block = "farlands_gold_block.png", + }, + }, + glass = { + pane = "farlands_glass.png", + detail = "farlands_glass_detail.png", + }, + wood = { + apple = { + sapling = "farlands_apple_sapling.png", + planks = "farlands_apple_planks.png", + trunk_side = "farlands_apple_trunk.png", + trunk_top = "farlands_apple_trunk_top.png", + leaves = "farlands_apple_leaves.png", + }, + jungle = { + sapling = "farlands_jungletree_sapling.png", + planks = "farlands_jungletree_planks.png", + trunk_side = "farlands_jungletree_trunk.png", + trunk_top = "farlands_jungletree_trunk_top.png", + leaves = "farlands_jungletree_leaves.png", + }, + }, + water = { + tile = "farlands_water.png", + animated = { + source = "farlands_water_source_animated.png", + flowing = "farlands_water_flowing_animated.png", + }, + }, + wool = { + white = "farlands_wool.png", + black = "farlands_wool.png", + grey = "farlands_wool.png", + dark_grey = "farlands_wool.png", + }, + grass = { + top = "farlands_grass.png", + side = "farlands_dirt.png^farlands_grass_side.png", + dirt = "farlands_dirt.png", + }, +} + +return textures \ No newline at end of file diff --git a/mods/xcompat/src/textures/minetest.lua b/mods/xcompat/src/textures/minetest.lua new file mode 100644 index 00000000..2216922c --- /dev/null +++ b/mods/xcompat/src/textures/minetest.lua @@ -0,0 +1,57 @@ +local textures = { + gravel = "default_gravel.png", + brick = "default_brick.png", + + metal = { + steel = { + ore = "default_iron_lump.png", + ingot = "default_steel_ingot.png", + block = "default_steel_block.png", + }, + gold = { + ore = "default_gold_lump.png", + ingot = "default_gold_ingot.png", + block = "default_gold_block.png", + }, + }, + glass = { + pane = "default_glass.png", + detail = "default_glass_detail.png", + }, + wood = { + apple = { + sapling = "default_sapling.png", + planks = "default_wood.png", + trunk_side = "default_tree.png", + trunk_top = "default_tree_top.png", + leaves = "default_leaves.png", + }, + jungle = { + sapling = "default_junglesapling.png", + planks = "default_junglewood.png", + trunk_side = "default_jungletree.png", + trunk_top = "default_jungletree_top.png", + leaves = "default_jungleleaves.png", + }, + }, + water = { + tile = "default_water.png", + animated = { + source = "default_water_source_animated.png", + flowing = "default_water_flowing_animated.png", + }, + }, + wool = { + white = "wool_white.png", + black = "wool_black.png", + grey = "wool_grey.png", + dark_grey = "wool_dark_grey.png", + }, + grass = { + top = "default_grass.png", + side = "default_dirt.png^default_grass_side.png", + dirt = "default_dirt.png", + }, +} + +return textures \ No newline at end of file diff --git a/mods/xcompat/src/textures/xcompat_agnostic.lua b/mods/xcompat/src/textures/xcompat_agnostic.lua new file mode 100644 index 00000000..ae26238a --- /dev/null +++ b/mods/xcompat/src/textures/xcompat_agnostic.lua @@ -0,0 +1,65 @@ +local textures = { + gravel = "[combine:16x16^[noalpha^[colorize:#3a3b3c", + brick = "[combine:16x16^[noalpha^[colorize:#AA4A44", + + metal = { + steel = { + ore = "[combine:16x16^[noalpha^[colorize:#D3D3D3", + ingot = "[combine:16x16^[noalpha^[colorize:#D3D3D3", + block = "[combine:16x16^[noalpha^[colorize:#D3D3D3", + }, + gold = { + ore = "[combine:16x16^[noalpha^[colorize:#FFD700", + ingot = "[combine:16x16^[noalpha^[colorize:#FFD700", + block = "[combine:16x16^[noalpha^[colorize:#FFD700", + }, + }, + glass = { + pane = "[combine:16x16:" .. + "0,0=\\[combine\\:1x16\\^[noalpha\\^[colorize\\:#ffffff:" .. + "0,0=\\[combine\\:16x1\\^[noalpha\\^[colorize\\:#ffffff:" .. + "0,15=\\[combine\\:16x1\\^[noalpha\\^[colorize\\:#ffffff:" .. + "15,0=\\[combine\\:1x16\\^[noalpha\\^[colorize\\:#ffffff", + detail = "[combine:16x16:" .. + "0,0=\\[combine\\:1x16\\^[noalpha\\^[colorize\\:#ffffff:" .. + "0,0=\\[combine\\:16x1\\^[noalpha\\^[colorize\\:#ffffff:" .. + "0,15=\\[combine\\:16x1\\^[noalpha\\^[colorize\\:#ffffff:" .. + "15,0=\\[combine\\:1x16\\^[noalpha\\^[colorize\\:#ffffff", + }, + wood = { + apple = { + sapling = "[combine:16x16^[noalpha^[colorize:#654321", + planks = "[combine:16x16^[noalpha^[colorize:#654321", + trunk_side = "[combine:16x16^[noalpha^[colorize:#654321", + trunk_top = "[combine:16x16^[noalpha^[colorize:#654321", + leaves = "[combine:16x16^[noalpha^[colorize:#654321", + }, + jungle = { + sapling = "[combine:16x16^[noalpha^[colorize:#563d2d", + planks = "[combine:16x16^[noalpha^[colorize:#563d2d", + trunk_side = "[combine:16x16^[noalpha^[colorize:#563d2d", + trunk_top = "[combine:16x16^[noalpha^[colorize:#563d2d", + leaves = "[combine:16x16^[noalpha^[colorize:#563d2d", + }, + }, + water = { + tile = "[combine:16x16^[noalpha^[colorize:#00008b", + animated = { + source = "[combine:16x16^[noalpha^[colorize:#00008b", + flowing = "[combine:16x16^[noalpha^[colorize:#00008b", + }, + }, + wool = { + white = "[combine:16x16^[noalpha^[colorize:#ffffff", + black = "[combine:16x16^[noalpha^[colorize:#000000", + grey = "[combine:16x16^[noalpha^[colorize:#313b3c", + dark_grey = "[combine:16x16^[noalpha^[colorize:#313b3c", + }, + grass = { + top = "[combine:16x16^[noalpha^[colorize:#006400", + side = "[combine:16x16^[noalpha^[colorize:#006400", + dirt = "[combine:16x16^[noalpha^[colorize:#563d2d", + }, +} + +return textures \ No newline at end of file diff --git a/mods/xcompat/src/utilities.lua b/mods/xcompat/src/utilities.lua new file mode 100644 index 00000000..61a74110 --- /dev/null +++ b/mods/xcompat/src/utilities.lua @@ -0,0 +1,8 @@ +local utilities = {} + +function utilities.file_exists(name) + local f=io.open(name,"r") + if f~=nil then io.close(f) return true else return false end +end + +return utilities \ No newline at end of file diff --git a/mods/xcompat/test/nodelist/farlands_reloaded.txt b/mods/xcompat/test/nodelist/farlands_reloaded.txt new file mode 100644 index 00000000..29833c76 --- /dev/null +++ b/mods/xcompat/test/nodelist/farlands_reloaded.txt @@ -0,0 +1,356 @@ +fl_furniture:yellow_ipe_table +fl_trees:palm_trunk +fl_stone:mossy_stone +fl_trees:acacia_sapling +fl_doors:copper_door_a +fl_trees:jungletree_plank +fl_workshop:furnace_active +fl_topsoil:wet_farmland +fl_trees:spruce_leaves +fl_stone:stone_brick +fl_light_sources:lantern +fl_plantlife:red_mushroom_leaves +fl_stone:basalt +fl_topsoil:condensed_ice +fl_doors:apple_door_b +fl_beds:bed_pink +fl_plantlife:petunia_blue +fl_trees:acacia_leaves +fl_stone:basalt_block +fl_ores:coal_in_tuff +fl_topsoil:sea_grass_3 +fl_agriculture:carrot_2 +fl_beds:bed_violet +fl_stone:basalt_rubble +fl_furniture:spruce_bench +fl_ores:copper_in_tuff +fl_trees:willow_plank +fl_trees:yellow_ipe_plank_fence +fl_storage:spruce_vessel_shelf +fl_beds:bed_blue +fl_stone:stone_block +fl_stone:tuff_rubble +fl_ores:mithite_in_stone +fl_topsoil:savannah_dirt_with_grass +fl_furniture:pine_table +fl_trees:pine_plank_fence +fl_furniture:baobab_chair +fl_plantlife:grass_2 +fl_trees:pine_sapling +fl_beds:bed_dark_green +fl_plantlife:cactus +fl_storage:spruce_book_shelf +fl_signs:sign_wood +fl_plantlife:pink_ground_flower +fl_doors:steel_door_b +fl_topsoil:sea_grass_1 +fl_trees:aspen_leaves +fl_stone:ors_brick +fl_doors:jungletree_door_a +fl_paintings:forest +fl_storage:spruce_multi_shelf +fl_beds:bed_red +fl_tnt:tnt +fl_beds:bed_brown +fl_storage:pine_multi_shelf +fl_ores:mithite_block +fl_beds:bed_orange +fl_ores:coal_in_desert_stone +fl_plantlife:red_ground_flower +fl_ores:gold_in_desert_stone +fl_stone:silver_sandstone_block +fl_storage:wood_chest +fl_furniture:aspen_table +fl_doors:aspen_door_a +fl_stone:ors +fl_stone:sandstone_brick +fl_doors:pine_door_b +fl_furniture:acacia_table +fl_trees:acacia_trunk +fl_stone:mossy_stone_block +fl_doors:baobab_door_b +fl_plantlife:pansy_purple +fl_industrial:conveyor_funnel +fl_stone:savannah_rubble +fl_trains:straight_rise_track +fl_storage:baobab_book_shelf +fl_plantlife:purple_allium +fl_ores:diamond_block +fl_topsoil:dirt_with_grass +fl_plantlife:ground_waterlily +fl_plantlife:flowerpot +fl_plantlife:grass_4 +fl_storage:pine_book_shelf +fl_doors:palm_door_a +fl_furniture:willow_table +fl_trains:straight_45_track +fl_trees:palm_leaves +fl_glass:framed_glass_panes +fl_storage:yellow_ipe_vessel_shelf +fl_ores:coal_block +fl_plantlife:dandelion_yellow +fl_beds:bed_cyan +fl_topsoil:gravel +fl_storage:acacia_book_shelf +fl_furniture:baobab_bench +fl_furniture:willow_bench +fl_plantlife:savannah_grass_1 +fl_industrial:conveyor +fl_storage:acacia_vessel_shelf +fl_light_sources:chain +fl_trees:spruce_plank +fl_trees:apple_leaves +fl_trees:baobab_leaves +fl_stone:silver_sand +fl_stone:desert_stone +fl_furniture:spruce_chair +fl_ores:copper_in_desert_stone +fl_topsoil:snow_block +fl_ores:mithite_in_savannah +fl_trees:acacia_plank +fl_topsoil:dirt +fl_fire:fire +fl_stone:gneiss_rubble +fl_furniture:acacia_bench +fl_storage:willow_vessel_shelf +fl_plantlife:lantana +fl_stone:sandstone +fl_furniture:jungletree_chair +fl_workshop:furnace +fl_stone:gneiss +fl_agriculture:potato_4 +fl_topsoil:permafrost_with_stones +fl_topsoil:snow +fl_trees:baobab_plank +fl_stone:tuff_brick +fl_stone:desert_sandstone_block +fl_bones:bone_block +fl_stone:basalt_brick +fl_doors:steel_door_a +fl_furniture:aspen_bench +fl_ores:tin_in_savannah +fl_trees:palm_plank_fence +fl_doors:apple_door_a +fl_wool:wool +fl_furniture:spruce_table +fl_agriculture:carrot_1 +fl_ores:iron_in_stone +fl_stone:desert_sandstone_brick +fl_storage:apple_empty_shelf +fl_stone:gneiss_block +fl_stone:mossy_stone_rubble +fl_agriculture:carrot_3 +fl_trees:willow_trunk +fl_trees:pine_leaves +fl_trains:curve_right_track +fl_doors:copper_door_b +fl_doors:jungletree_door_b +fl_furniture:jungletree_bench +fl_doors:willow_door_b +fl_topsoil:sea_grass_2 +fl_ores:gold_in_ors +fl_doors:willow_door_a +fl_trains:switch_right_track +fl_doors:aspen_door_b +fl_doors:palm_door_b +fl_stone:stone +fl_plantlife:rose +fl_doors:yellow_ipe_door_b +fl_doors:yellow_ipe_door_a +fl_plantlife:grass_3 +fl_storage:apple_vessel_shelf +fl_plantlife:tulip +fl_light_sources:torch +fl_trees:palm_sapling +fl_doors:blocker_top +fl_bricks:terracotta +fl_bricks:clay_block +fl_bricks:brick +fl_agriculture:carrot_4 +fl_paintings:cthulhu +fl_trees:aspen_trunk +fl_furniture:willow_chair +fl_glass:tinted_framed_glass_panes +fl_stone:sandstone_block +fl_glass:tinted_framed_glass +fl_ores:gold_block +fl_furniture:apple_chair +fl_glass:framed_glass +fl_storage:pine_vessel_shelf +fl_beds:bed_yellow +fl_beds:bed_black +fl_stone:silver_sandstone +fl_beds:bed_dark_grey +fl_beds:bed_green +fl_ores:tin_in_tuff +fl_beds:bed_grey +fl_beds:bed_magenta +fl_beds:bed_white +fl_wildlife:spawner +fl_wool:wool_carpet +fl_paintings:dragon +fl_topsoil:dirt_with_snow +fl_ores:tin_block +fl_furniture:baobab_table +fl_dyes:demo_node +fl_plantlife:viola +fl_ores:diamond_in_ors +fl_plantlife:savannah_grass_4 +fl_plantlife:oxeye_daisy +fl_plantlife:geranium +fl_plantlife:mushroom_trunk +fl_stone:ors_rubble +fl_doors:baobab_door_a +fl_light_sources:lantern_c +fl_doors:acacia_door_b +fl_plantlife:petunia_white +fl_storage:spruce_empty_shelf +fl_plantlife:petunia_pink +fl_ores:tin_in_stone +fl_ores:mithite_in_desert_stone +fl_stone:desert_sand +fl_plantlife:pansy_blue +fl_plantlife:frozen_rose +fl_ores:gold_in_tuff +fl_stone:savannah_brick +fl_ores:coal_in_savannah +fl_plantlife:blue_ground_flower +fl_ores:iron_in_desert_stone +fl_industrial:injector +fl_trees:aspen_plank_fence +fl_plantlife:savannah_grass_2 +fl_plantlife:dandelion_white +fl_plantlife:flame_lily +fl_plantlife:brown_mushroom +fl_plantlife:red_mushroom +fl_trees:jungletree_plank_fence +fl_plantlife:brown_mushroom_leaves +fl_plantlife:raw_mushroom_leaves +fl_plantlife:savannah_grass_5 +fl_stone:tuff_block +fl_plantlife:savannah_grass_3 +fl_trees:acacia_plank_fence +fl_trees:jungletree_sapling +fl_furniture:pine_bench +fl_plantlife:grass_1 +fl_plantlife:lavender_flower +fl_ores:coal_in_stone +fl_plantlife:grass_5 +fl_ores:bronze_block +fl_trees:yellow_ipe_plank +fl_stone:gneiss_brick +fl_ores:diamond_in_savannah +fl_trees:pine_plank +fl_ores:diamond_in_desert_stone +fl_ores:diamond_in_tuff +fl_storage:baobab_empty_shelf +fl_storage:yellow_ipe_empty_shelf +fl_paintings:landscape +fl_stairs:tablesaw +fl_furniture:yellow_ipe_chair +fl_ores:copper_in_ors +fl_trees:apple_trunk +fl_trees:yellow_ipe_leaves +fl_trees:dead_aspen_leaves +fl_liquids:water_flowing +fl_furniture:aspen_chair +fl_plantlife:lobelia +fl_topsoil:dry_farmland +fl_trees:apple_plank +ignore +fl_trains:switch_left_track +fl_storage:willow_empty_shelf +fl_trees:spruce_plank_fence +fl_ores:copper_in_savannah +fl_stone:sand +fl_furniture:pine_chair +fl_storage:aspen_empty_shelf +fl_topsoil:coarse_dirt +fl_storage:acacia_multi_shelf +fl_ores:mithite_in_ors +fl_paintings:waterlilie +fl_stone:tuff +fl_stone:savannah_block +fl_trees:willow_plank_fence +fl_storage:baobab_vessel_shelf +fl_furniture:apple_table +fl_paintings:rose +fl_liquids:river_water_source +fl_trees:pine_trunk +fl_storage:aspen_vessel_shelf +fl_topsoil:ice +fl_storage:aspen_book_shelf +fl_liquids:lava_source +fl_agriculture:potato_2 +fl_storage:aspen_multi_shelf +fl_storage:willow_book_shelf +fl_furniture:acacia_chair +fl_trains:crossing_track +fl_trees:apple_plank_fence +fl_liquids:river_water_flowing +fl_trees:baobab_sapling +fl_ores:gold_in_stone +fl_trains:curve_left_track +fl_trains:straight_track +fl_doors:acacia_door_a +fl_storage:apple_multi_shelf +fl_trees:aspen_plank +fl_trees:spruce_trunk +fl_stone:desert_stone_rubble +fl_trees:baobab_trunk +fl_ores:copper_in_stone +fl_industrial:conveyor_left +fl_storage:acacia_empty_shelf +fl_trees:palm_plank +fl_agriculture:potato_1 +fl_trees:apple_sapling +fl_trees:baobab_plank_fence +fl_furniture:yellow_ipe_bench +fl_ores:tin_in_desert_stone +fl_furniture:palm_bench +fl_storage:yellow_ipe_book_shelf +fl_stone:savannah +fl_furniture:apple_bench +fl_ores:iron_block +fl_furniture:palm_chair +fl_glass:tinted_connected_glass +fl_agriculture:potato_3 +fl_trees:aspen_sapling +fl_storage:baobab_multi_shelf +fl_storage:willow_multi_shelf +fl_furniture:palm_table +fl_furniture:jungletree_table +fl_trees:jungletree_trunk +fl_stone:stone_rubble +fl_doors:pine_door_a +fl_storage:pine_empty_shelf +fl_stone:mossy_stone_brick +fl_stone:ors_block +fl_paintings:possessedwoman +fl_storage:apple_book_shelf +fl_storage:yellow_ipe_multi_shelf +fl_stone:desert_stone_block +fl_stone:desert_stone_brick +fl_trees:jungletree_leaves +fl_liquids:water_source +fl_stone:desert_sandstone +fl_trees:willow_leaves +fl_workshop:anvil +fl_paintings:mistiriusgirl +fl_trees:yellow_ipe_trunk +fl_topsoil:savannah_dirt +fl_ores:coal_in_ors +fl_topsoil:permafrost +fl_liquids:lava_flowing +fl_ores:iron_in_ors +fl_industrial:conveyor_right +fl_ores:iron_in_tuff +fl_ores:iron_in_savannah +fl_ores:copper_block +fl_stone:silver_sandstone_brick +air +fl_ores:gold_in_savannah +fl_ores:tin_in_ors +fl_ores:mithite_in_tuff +fl_stone:bedrock +fl_ores:diamond_in_stone diff --git a/mods/xcompat/test/nodelist/hades_revisited.txt b/mods/xcompat/test/nodelist/hades_revisited.txt new file mode 100644 index 00000000..0d219dc2 --- /dev/null +++ b/mods/xcompat/test/nodelist/hades_revisited.txt @@ -0,0 +1,2966 @@ +columnia:column_linktee_hades_core_tuff_baked +gluncarp:white +hades_bedrock:bedrock +columnia:column_stairsubpillar_hades_trees_colwood_dark_green +columnia:column_bottom_hades_trees_colwood_dark_grey +hades_core:brick_dark_grey +hades_doors:door_stone_e +columnia:column_crosslink_hades_core_essexite +hades_core:apolline_brick +columnia:column_linkcross_hades_core_orangite +hades_stairs:stair_cream_wood +hades_furniture:table_lamp_med +columnia:column_top_hades_core_orangite +columnia:column_mid_hades_core_brick_pink +columnia:column_linktee_hades_core_tuff +hades_chests:chest_green +hades_stairs:slab_marble +hades_stairs:stair_out_colwood_dark_grey +hades_stairs:stair_tuff_baked +columnia:column_stairsubpillar_hades_core_mossycobble +hades_flowers:violet +hades_refruit:bud_orange +hades_stairs:stair_in_floor_marble_marble +columnia:column_linktee_down_hades_trees_colwood_red +columnia:column_stairsubpillar_hades_trees_birch_bark +hades_doors:door_chondrite_d +hades_glowcrystals:window_glow +hades_stairs:stair_birch_bark +columnia:column_bottom_hades_core_orangite +columnia:column_linkangle_down_hades_core_chondrite_brick +hades_doors:door_steel_white_d +hades_doors:door_stone_baked_b +hades_core:water_flowing +hades_doors:gate_jungle_wood_closed +columnia:column_linktee_columnia_rusty_block +columnia:column_linkangle_hades_trees_colwood_yellow +columnia:column_linkangle_hades_trees_pale_bark +hades_stairs:slab_tuff_baked +hades_stairs:stair_in_brick_pink +columnia:column_mid_hades_trees_colwood_magenta +hades_doors:door_steel_green_a +hades_stairs:step_brick_dark_green +hades_doors:door_steel_red_a +hades_stairs:stair_in_pale_bark +columnia:column_bottom_hades_trees_colwood_uncolored +columnia:column_linkvertical_hades_core_apolline +columnia:column_linkangle_down_hades_core_azurite +hades_stairs:slab_colwood_pink +hades_stairs:slab_jungle_bark +columnia:column_bottom_hades_core_brick_magenta +columnia:column_linkdown_hades_trees_jungle_wood +hades_trees:wood +hades_torches:torch +hades_trees:cocoa_pod +hades_fences:fence_rusty +hades_stairs:step_out_colwood_green +columnia:column_linktee_hades_core_essexite +columnia:column_linkangle_down_hades_trees_colwood_white +gluncarp:blackgold +hades_core:stone_with_emerald +hades_stairs:slab_copperblock +columnia:column_linkcross_hades_trees_wood +columnia:column_mid_hades_core_brick_dark_grey +hades_tiles:floor_stone_tuffbaked +columnia:column_linktee_hades_core_brick_dark_grey +columnia:column_linkangle_down_hades_core_brick_violet +hades_stairs:step_out_cinnabar +hades_stairs:stair_out_floor_cream_cream +hades_core:brick_black +hades_trees:leaves +hades_bushes:orange +hades_stairs:stair_out_orangite +columnia:column_linktee_down_hades_trees_colwood_grey +hades_core:emerald_block +hades_trees:jungle_sapling +columnia:column_link_hades_trees_colwood_red +hades_stairs:slab_cyan +hades_farming:soil +hades_cloth:green +hades_doors:door_steel_black_b +hades_trees:birch_tree +hades_doors:door_sandstone_volcanic_e +columnia:column_linkangle_hades_core_marble +hades_doors:door_glass_b +hades_doors:door_chondrite_e +hades_stairs:stair_floor_stonebaked_stonebaked +hades_stairs:stair_out_sandstone_volcanic_brick +columnia:column_linkangle_down_hades_core_brick_red +columnia:column_stairsubpillar_hades_core_tuff_baked +columnia:column_stairsub_hades_trees_colwood_violet +hades_doors:door_dungeon1_c +hades_core:chondrite_brick +columnia:column_linkangle_down_hades_trees_colwood_violet +hades_windows:paperwall +hades_torches:torch_wall +columnia:column_stairsubpillar_hades_core_brick_blue +hades_stairs:stair_blue +hades_stairs:slab_floor_cream_cream +columnia:column_stairsub_hades_trees_canvas_bark +hades_doors:door_steel_red_b +hades_core:tinblock +hades_stairs:stair_in_stone +columnia:column_crosslink_hades_core_brick_black +hades_tiles:floor_tuffbaked_tuff +hades_doors:door_dungeon2_a +columnia:column_linkdown_hades_core_cobble_baked +columnia:column_linkangle_down_hades_core_cobble_sandstone +hades_core:stone +columnia:column_stairsubpillar_hades_trees_colwood_dark_grey +hades_stairs:slab_chondrite_brick +hades_windows:window_cream_wood +hades_stairs:step_colwood_uncolored +columnia:column_linktee_hades_trees_colwood_black +columnia:column_crosslink_hades_core_lillite +hades_walls:cobble_baked +hades_core:copperblock +hades_stairs:stair_in_white +columnia:column_linkvertical_hades_core_brick_white +columnia:column_linktee_down_hades_core_cobble_sandstone +hades_trees:banana_leaves +columnia:column_linkangle_hades_core_sandstone_volcanic +columnia:column_linkvertical_hades_trees_pale_bark +hades_refruit:flower_orange +hades_doors:door_steel_green_b +hades_stairs:stair_out_stone +hades_stairs:stair_out_brick_orange +columnia:column_linkvertical_hades_core_stone +columnia:column_linktee_down_hades_core_stone_baked +hades_stairs:stair_out_white +columnia:column_stairsubpillar_hades_core_basalt +hades_refruit:bud_olive +hades_stairs:slab_essexite +hades_stairs:step_in_colwood_uncolored +hades_waterplants:seaweed +gluncarp:cloth_blackgold +hades_stairs:slab_cream_wood +hades_doors:door_steel_pink_a +hades_farming:seed_tomato +hades_doors:door_steel_brown_a +hades_stairs:step_in_stonebrick_baked +hades_stairs:slab_brick_violet +hades_stairs:slab_charred_bark +hades_doors:door_steel_white_e +columnia:column_stairsubpillar_hades_core_brick_dark_grey +columnia:column_link_hades_core_sandstone_volcanic +signs_lib:sign_wall_white_red +hades_stairs:step_brick_brown +columnia:column_stairsubpillar_hades_core_essexite +columnia:column_linkangle_down_hades_core_stone +columnia:column_bottom_hades_trees_wood +columnia:column_link_hades_core_olivine +columnia:column_linkangle_hades_trees_cream_wood +hades_stairs:slab_green +columnia:column_linkangle_hades_core_olivine_brick +hades_fences:fence_cream_wood +columnia:column_stairsubpillar_hades_core_obsidian +hades_stairs:slab_double_steelblock +columnia:column_stairsubpillar_hades_core_stonebrick_baked +columnia:column_bottom_hades_core_tuff_baked_brick +hades_trees:canvas_sapling +hades_stairs:slab_cobble_sandstone_volcanic +columnia:column_bottom_hades_trees_colwood_dark_green +hades_stairs:slab_pink +columnia:column_linkdown_hades_trees_lush_wood +hades_stairs:stair_stone_baked +hades_doors:door_rusty_c +columnia:column_mid_hades_trees_colwood_red +columnia:column_stairsub_hades_core_chondrite_brick +columnia:column_bottom_hades_core_cobble_sandstone_volcanic +columnia:column_stairsub_hades_trees_colwood_grey +columnia:column_crosslink_hades_core_cobble_sandstone +hades_doors:door_steel_darkgreen_b +columnia:column_linkangle_down_hades_core_obsidian +hades_stairs:step_in_olivine +hades_stairs:slab_double_copperblock +hades_core:floor_chondrite_stone +hades_doors:door_steel_black_c +hades_tiles:floor_tuffbaked_tuffbaked +columnia:column_linktee_hades_trees_colwood_violet +columnia:column_linkcrossdown_hades_core_tuff +hades_trees:colwood_green +hades_doors:door_stone_baked_c +hades_doors:door_obsidian_glass_b +hades_chests:chest_green_locked +columnia:column_linkangle_hades_core_olivine +hades_doors:door_glass_e +columnia:column_linkangle_hades_core_brick_cyan +hades_stairs:stair_in_floor_pale_pale +hades_stairs:step_in_essexite +columnia:column_linkcrossdown_hades_trees_birch_bark +hades_stairs:stair_brick_cyan +columnia:column_linkdown_hades_trees_colwood_white +hades_stairs:stair_azurite +columnia:column_linkcrossdown_hades_core_cinnabar +hades_stairs:step_brick_red +columnia:column_link_hades_trees_pale_bark +hades_tiles:floor_lush_pale +hades_trees:charred_tree +hades_stairs:stair_in_brick_brown +columnia:column_linkvertical_hades_core_tuff_baked_brick +hades_stairs:stair_in_red +hades_doors:door_steel_red_c +hades_stairs:slab_pale_bark +columnia:column_link_hades_core_brick_yellow +hades_doors:door_rusty_a +hades_stairs:stair_out_orange +columnia:column_linkvertical_hades_trees_jungle_wood +columnia:column_linkvertical_hades_trees_colwood_uncolored +columnia:column_link_hades_core_cobble_sandstone +hades_furnaces:furnace +hades_stairs:step_in_jungle_wood +hades_flowerpots:flower_pot_cultivated_jungle_leaves +columnia:column_linkangle_down_hades_core_brick_magenta +hades_doors:door_wood_e +air +columnia:column_linkcrossdown_hades_core_brick +columnia:column_linkangle_down_hades_trees_colwood_orange +columnia:column_linkangle_down_hades_trees_wood +hades_stairs:step_tinblock +hades_farming:straw +columnia:column_linkvertical_columnia_rusty_block +hades_grass:dead_grass_5 +hades_trees:colwood_dark_green +columnia:column_mid_hades_trees_pale_wood +hades_core:volcanic_sand +hades_stairs:slab_brick_dark_green +hades_doors:door_steel_pink_b +hades_doors:door_steel_green_c +hades_stairs:step_in_tuff_baked_brick +columnia:column_linktee_down_hades_trees_wood +columnia:column_stairsubpillar_hades_core_brick +hades_trees:colwood_pink +hades_trees:orange_sapling +hades_waterplants:seaweed_4 +columnia:column_bottom_hades_core_brick_orange +columnia:column_bottom_hades_core_turquosite +hades_stairs:stair_out_floor_tuff_tuff +columnia:column_mid_hades_core_sandstone_volcanic_brick +columnia:column_linkcross_hades_core_apolline +columnia:column_linkangle_hades_core_tuff_brick +hades_stairs:step_out_colwood_uncolored +columnia:column_linkcrossdown_hades_trees_colwood_brown +hades_itemshow:pedestal_cinnabar +hades_stairs:slab_brick_cyan +columnia:column_crosslink_hades_trees_jungle_wood +columnia:column_linktee_down_hades_core_tuff_brick +hades_doors:door_steel_darkgreen_e +columnia:column_linktee_hades_core_brick_red +columnia:column_linkdown_hades_core_brick_orange +hades_stairs:stair_in_colwood_dark_green +hades_stairs:step_in_floor_wood_wood +columnia:column_linkcross_hades_core_brick_brown +columnia:column_bottom_hades_core_basalt_brick +columnia:column_crosslink_hades_core_chondrite_brick +columnia:column_linkcross_hades_core_tuff +columnia:column_linkangle_hades_core_tuff_baked_brick +hades_stairs:stair_out_grey +hades_refruit:flower_banana +columnia:column_linkvertical_hades_core_brick_red +columnia:column_crosslink_hades_core_obsidian +columnia:column_link_hades_trees_colwood_green +hades_stairs:stair_colwood_red +hades_tiles:floor_sandstonevolcanic_sandstone +hades_stairs:stair_in_violet +hades_stairs:stair_in_sandstone_volcanic +columnia:machine +columnia:column_linkcrossdown_hades_core_tuff_brick +hades_core:cactus_brick +columnia:column_linkdown_hades_core_stonebrick_baked +hades_core:papyrus +columnia:column_linkangle_hades_core_chondrite +columnia:column_top_hades_core_brick_yellow +hades_chests:chest_red_locked +hades_stairs:slab_yellow +hades_doors:door_sandstone_d +columnia:column_linkcrossdown_hades_core_brick_brown +hades_doors:door_essexite_d +gluncarp:brown +hades_windows:window_jungle_wood +hades_furniture:table_lamp_hi +columnia:column_stairsub_hades_core_tuff_brick +columnia:column_linkangle_hades_core_brick_brown +columnia:column_linktee_hades_core_tuff_baked_brick +hades_trees:cultivated_jungle_leaves +columnia:column_stairsubpillar_hades_core_cobble_sandstone +columnia:column_linkvertical_hades_core_essexite_brick +hades_doors:door_wood_jungle_a +hades_itemshow:pedestal_azurite +hades_core:ladder_bronze +columnia:column_stairsubpillar_hades_core_brick_pink +hades_doors:door_obsidian_glass_a +columnia:column_linkvertical_hades_trees_colwood_grey +hades_bushes:blue +hades_stairs:stair_in_brick_dark_green +columnia:column_linktee_down_hades_core_tuff +columnia:column_bottom_hades_trees_colwood_pink +columnia:column_link_hades_trees_colwood_dark_grey +columnia:column_stairsub_hades_trees_lush_wood +columnia:column_top_hades_core_stone +columnia:column_crosslink_hades_trees_colwood_green +hades_core:cactus +hades_windows:window_wood_green +hades_core:basalt_block +columnia:column_linkcrossdown_hades_core_essexite +columnia:column_linkvertical_hades_core_sandstone +hades_trees:burned_branches +columnia:column_bottom_hades_core_sandstone_volcanic_brick +hades_core:sandstone_volcanic_brick +hades_stairs:slab_colwood_dark_green +columnia:column_link_hades_core_chondrite_brick +columnia:column_top_hades_core_brick_orange +columnia:column_linkvertical_hades_trees_colwood_pink +hades_stairs:stair_in_straw +hades_doors:door_steel_brown_c +hades_stairs:slab_colwood_violet +hades_doors:door_steel_magenta_d +hades_doors:door_marble_d +columnia:column_link_hades_core_brick_violet +hades_stairs:stair_in_colwood_magenta +hades_stairs:slab_brick_black +hades_trees:charred_bark +columnia:column_linkcross_hades_core_brick_dark_green +columnia:column_crosslink_hades_core_brick_grey +hades_fences:fence_wood_black +hades_stairs:step_out_floor_pale_pale +columnia:column_linkcrossdown_hades_core_brick_pink +columnia:column_linkvertical_hades_core_olivine +columnia:column_crosslink_hades_core_stone +columnia:column_mid_hades_core_tuff +columnia:column_stairsubpillar_hades_core_chondrite +columnia:column_linkvertical_hades_core_basalt +columnia:column_mid_hades_trees_colwood_uncolored +hades_glowcrystals:glowcrystal_ore +columnia:column_linktee_down_hades_core_mossycobble +columnia:column_stairsub_hades_core_brick_violet +hades_doors:door_wood_lush_a +columnia:column_linktee_hades_core_essexite_brick +columnia:column_linkcrossdown_hades_core_brick_blue +hades_stairs:step_out_colwood_blue +hades_core:lava_source +hades_doors:door_steel_pink_c +columnia:column_linktee_down_hades_core_basalt_brick +columnia:column_stairsubpillar_hades_core_brick_black +hades_doors:door_wood_jungle_b +hades_stairs:slab_orange +columnia:column_mid_hades_trees_colwood_white +hades_stairs:stair_out_chondrite +columnia:column_linkangle_down_hades_core_brick_orange +columnia:column_linkangle_down_hades_core_basalt +hades_doors:door_steel_darkgreen_d +columnia:column_top_hades_trees_birch_bark +hades_flowerpots:flower_pot_canvas_leaves +hades_tiles:floor_essexitegold_essexitegold +columnia:column_linkcross_hades_core_brick_magenta +columnia:column_linktee_down_hades_core_essexite +hades_stairs:step_out_essexite +columnia:column_stairsub_hades_trees_colwood_orange +columnia:column_crosslink_hades_core_stone_baked +hades_stairs:stair_out_floor_stonebaked_stonebaked +hades_fences:fence_wood_pink +columnia:column_stairsub_hades_core_essexite +hades_stairs:step_in_floor_marble_marble +hades_stairs:step_brick_violet +columnia:column_crosslink_hades_core_mossycobble +hades_stairs:step_steelblock +hades_flowers:orange +columnia:column_linkdown_hades_core_marble +hades_tiles:floor_tuffbaked_stone +columnia:column_linkdown_hades_core_tuff +hades_stairs:stair_out_marble +columnia:column_mid_hades_core_basalt +hades_doors:gate_pale_wood_closed +columnia:column_linktee_hades_core_brick_white +hades_waterplants:waterlily_s4 +columnia:column_linkvertical_hades_core_orangite +columnia:column_crosslink_hades_core_brick_dark_grey +columnia:column_linktee_hades_core_brick_pink +columnia:column_crosslink_hades_trees_colwood_white +columnia:column_crosslink_hades_core_cobble_sandstone_volcanic +columnia:column_bottom_hades_core_tuff_baked +hades_flowerpots:flower_pot_yellow +hades_trees:sapling +hades_windows:window_wood_blue +columnia:column_linkdown_hades_core_brick_blue +columnia:column_linkdown_hades_trees_colwood_dark_green +hades_core:brick_red +columnia:column_top_hades_core_tuff_brick +columnia:column_stairsubpillar_hades_trees_colwood_cyan +columnia:column_top_hades_trees_bark +hades_doors:door_marble_c +hades_chests:chest_blue +hades_bushes:red +hades_tiles:floor_tuff_chondrite +columnia:column_linkdown_hades_trees_bark +columnia:column_linkangle_hades_trees_colwood_green +columnia:column_stairsubpillar_columnia_rusty_block +hades_doors:door_sandstone_volcanic_d +columnia:column_linkangle_down_hades_core_tuff_brick +hades_doors:gate_cream_wood_closed +columnia:column_linkdown_hades_core_tuff_brick +columnia:column_linktee_down_hades_core_chondrite_brick +hades_refruit:bud_coconut +hades_stairs:step_glowcrystal_block +hades_stairs:slab_white +hades_doors:hidden +columnia:column_linkangle_hades_trees_bark +columnia:column_linkdown_hades_trees_canvas_bark +columnia:column_linkcross_hades_core_brick_orange +columnia:column_linktee_down_hades_core_brick_violet +hades_stairs:stair_out_brick_brown +columnia:column_linkvertical_hades_core_basalt_brick +hades_stairs:stair_out_stone_baked +hades_stairs:stair_in_tuff +columnia:column_top_hades_core_basalt_brick +columnia:column_link_hades_core_brick_black +hades_waterplants:waterlily_225 +columnia:column_linkangle_hades_trees_birch_bark +columnia:column_linkdown_hades_core_brick_dark_grey +columnia:column_link_hades_trees_colwood_black +columnia:column_link_hades_core_brick_white +columnia:column_linktee_hades_core_cinnabar +hades_core:brick_yellow +hades_stairs:stair_out_brick_dark_grey +columnia:column_linktee_down_hades_core_brick_grey +columnia:column_stairsub_hades_core_cinnabar +columnia:column_crosslink_hades_trees_colwood_grey +columnia:column_crosslink_hades_core_olivine_brick +gluncarp:blue +hades_core:brick_magenta +hades_stairs:stair_in_floor_stonebaked_stonebaked +hades_doors:door_wood_lush_b +hades_stairs:step_in_basalt_brick +columnia:column_stairsub_hades_core_obsidianbrick +hades_stairs:stair_floor_essexitegold_essexitegold +columnia:column_stairsubpillar_hades_core_brick_orange +hades_stairs:step_in_brick_dark_grey +columnia:column_linkdown_hades_core_sandstone +hades_stairs:step_out_floor_essexitegold_essexitegold +columnia:column_crosslink_hades_trees_colwood_red +columnia:column_stairsub_hades_core_brick_grey +columnia:column_linkangle_down_hades_core_tuff_baked_brick +hades_furniture:binding_rusty_bars +columnia:column_linktee_hades_trees_canvas_bark +columnia:column_link_hades_trees_colwood_pink +hades_stairs:step_out_basalt +columnia:column_mid_hades_trees_colwood_green +hades_vines:cave +columnia:column_linkangle_down_columnia_rusty_block +columnia:column_link_hades_core_brick_brown +hades_stairs:step_apolline +hades_doors:trapdoor +columnia:column_bottom_hades_core_sandstone_volcanic +columnia:column_link_hades_trees_pale_wood +columnia:column_linkangle_down_hades_trees_pale_bark +hades_tiles:floor_stone_sandstonevolcanic +hades_stairs:stair_colwood_violet +hades_doors:trapdoor_pale +columnia:column_mid_hades_core_tuff_baked +hades_fences:fence_wood_yellow +hades_stairs:step_in_colwood_white +hades_stairs:slab_floor_pale_pale +columnia:column_stairsubpillar_hades_core_tuff_brick +hades_trees:colwood_grey +columnia:column_crosslink_hades_core_orangite +hades_stairs:stair_out_charred_bark +hades_core:obsidian_glass +columnia:column_linkangle_down_hades_core_cobble_sandstone_volcanic +hades_doors:door_wood_jungle_c +hades_itemshow:pedestal_orangite +hades_stairs:stair_brick_white +hades_core:olivine +columnia:column_linkvertical_hades_core_turquosite +hades_stairs:slab_bark +hades_stairs:stair_in_basalt_brick +columnia:column_linkangle_down_hades_core_brick_brown +hades_farming:spice_2 +columnia:column_bottom_hades_trees_colwood_orange +hades_stairs:stair_essexite +columnia:column_bottom_hades_trees_pale_bark +hades_core:brick_orange +hades_torches:torch_low_ceiling +hades_core:water_source +hades_doors:door_wood_pale_b +columnia:column_crosslink_hades_core_stonebrick_baked +columnia:column_linktee_down_hades_core_tuff_baked_brick +hades_trees:cream_wood +columnia:column_stairsub_hades_core_tuff_baked +hades_stairs:step_in_cobble_sandstone_volcanic +columnia:column_link_hades_core_chondrite +hades_refruit:flower_olive +columnia:column_linkangle_down_hades_core_basalt_brick +columnia:column_linkcrossdown_hades_core_chondrite +hades_wardrobes:wardrobe +hades_stairs:stair_out_black +hades_stairs:step_in_colwood_dark_grey +hades_tiles:floor_tuff_tuff +columnia:column_linkcross_hades_trees_jungle_wood +hades_stairs:step_in_jungle_bark +hades_windows:window_obsidian +columnia:column_linktee_hades_core_stone +hades_doors:door_steel_brown_b +hades_doors:door_rusty_d +hades_core:goldblock +hades_stairs:stair_in_brown +hades_tiles:floor_sandstone_stonebaked +hades_chests:chest +columnia:column_crosslink_hades_core_brick_green +hades_fences:fence_wood_magenta +columnia:column_mid_hades_core_cobble_sandstone_volcanic +columnia:column_linkcrossdown_hades_trees_colwood_pink +hades_furnaces:prism_furnace +hades_stairs:stair_brick_black +hades_doors:door_essexite_a +hades_stairs:step_colwood_brown +columnia:column_linktee_hades_core_cobble_sandstone +hades_doors:door_dungeon2_e +columnia:column_stairsubpillar_hades_core_cobble_baked +hades_stairs:step_out_brick_pink +hades_doors:door_steel_violet_d +hades_stairs:step_out_floor_essexite_essexite +hades_stairs:stair_in_colwood_red +columnia:column_linktee_down_hades_trees_colwood_yellow +columnia:column_stairsub_hades_core_brick_cyan +hades_flowerpots:flower_pot_coconut_sapling +columnia:column_linkangle_hades_core_brick_green +hades_stairs:slab_red +columnia:column_stairsub_hades_core_brick +columnia:column_linkvertical_hades_core_tuff_baked +hades_stairs:stair_grey +columnia:column_bottom_hades_core_sandstone +columnia:column_linktee_down_hades_trees_colwood_brown +columnia:column_stairsubpillar_hades_core_marble +columnia:column_bottom_hades_trees_colwood_grey +hades_tiles:floor_tuff_stone +hades_doors:door_sandstone_volcanic_a +columnia:column_crosslink_hades_core_tuff_baked +hades_stairs:step_in_colwood_brown +hades_core:cobble_sandstone +hades_doors:door_steel_magenta_b +hades_tiles:floor_stonebaked_sandstone +columnia:column_link_hades_trees_colwood_violet +hades_doors:door_rusty_b +columnia:column_stairsubpillar_hades_trees_colwood_violet +columnia:column_linkcrossdown_hades_core_brick_white +hades_doors:door_wood_b +hades_fences:fence_wood_violet +hades_windows:window_wood_cyan +columnia:column_linkcross_hades_core_brick +columnia:column_bottom_columnia_rusty_block +hades_farming:tomato_2 +hades_farming:wheat_3 +columnia:column_bottom_hades_trees_bark +columnia:column_linkangle_hades_trees_colwood_grey +columnia:column_linktee_down_hades_core_stone +columnia:column_crosslink_hades_core_sandstone_volcanic_brick +columnia:column_linkvertical_hades_core_brick_pink +columnia:column_linkcrossdown_hades_core_cobble_sandstone_volcanic +hades_stairs:stair_in_yellow +hades_trees:pale_leaves +hades_doors:door_steel_darkgrey_e +columnia:column_link_hades_core_obsidian +hades_itemshow:pedestal_essexite +columnia:column_stairsub_hades_core_sandstone_volcanic +hades_stairs:stair_in_pink +columnia:column_linkdown_hades_trees_colwood_pink +columnia:column_linkangle_down_hades_core_brick_yellow +columnia:column_stairsubpillar_hades_core_brick_white +hades_stairs:step_in_colwood_blue +columnia:column_linkangle_down_hades_core_brick_cyan +columnia:column_crosslink_hades_core_apolline +columnia:column_link_hades_trees_wood +columnia:column_linkdown_hades_core_chondrite_brick +hades_doors:door_steel_orange_d +columnia:column_linkvertical_hades_trees_colwood_violet +columnia:column_linkangle_down_hades_trees_colwood_blue +hades_stairs:slab_colwood_black +columnia:column_top_hades_trees_colwood_blue +columnia:column_linkdown_hades_trees_colwood_green +hades_stairs:stair_out_cobble_sandstone_volcanic +columnia:column_top_hades_trees_colwood_orange +hades_core:cobble_baked +hades_doors:door_steel_cyan_b +hades_stairs:slab_colwood_brown +columnia:column_linkcross_hades_core_azurite +hades_stairs:step_in_floor_sandstone_sandstone +hades_core:cactus_block +hades_stairs:stair_colwood_green +columnia:column_linktee_hades_trees_colwood_uncolored +hades_stairs:step_out_brick_dark_green +hades_core:stone_with_sapphire +hades_core:marble_brick +hades_doors:door_wood_pale_c +columnia:column_stairsubpillar_hades_core_brick_violet +hades_core:gravel +columnia:column_linkcrossdown_hades_core_tuff_baked_brick +hades_doors:door_steel_cyan_c +hades_stairs:step_out_brick_yellow +hades_stairs:step_in_obsidianbrick +columnia:column_linkcrossdown_hades_trees_cream_wood +hades_stairs:step_in_stone_baked +columnia:column_linkangle_down_hades_core_tuff +hades_doors:gate_wood_open +hades_stairs:step_out_magenta +columnia:column_stairsubpillar_hades_trees_lush_wood +hades_farming:spice_1 +hades_stairs:slab_dark_grey +hades_tiles:floor_chondrite_chondrite +columnia:column_linktee_down_hades_core_brick_dark_grey +hades_flowerpots:flower_pot_sapling +columnia:column_linkvertical_hades_core_brick_magenta +hades_stairs:stair_out_brick_grey +columnia:column_linkdown_hades_trees_colwood_red +columnia:column_crosslink_hades_core_brick_orange +columnia:column_linkcrossdown_hades_core_basalt +columnia:column_linkvertical_hades_core_brick +columnia:column_crosslink_hades_trees_lush_wood +hades_stairs:slab_glowcrystal_block +columnia:column_linkangle_hades_core_tuff +columnia:column_linkangle_hades_core_brick_white +columnia:column_stairsubpillar_hades_core_tuff_baked_brick +columnia:column_linktee_down_hades_trees_colwood_blue +hades_doors:door_steel_yellow_d +columnia:column_linktee_down_hades_core_brick_red +columnia:column_stairsub_hades_core_basalt +columnia:column_linkdown_hades_trees_birch_bark +columnia:column_link_hades_core_brick_dark_grey +columnia:column_linkcross_hades_trees_colwood_white +columnia:column_linkvertical_hades_core_tuff_brick +columnia:column_linkdown_hades_core_brick_pink +hades_doors:door_marble_a +columnia:column_crosslink_hades_trees_colwood_black +hades_walls:cobble +columnia:column_linkdown_hades_core_cinnabar +hades_stairs:slab_brick_green +columnia:column_top_hades_core_cinnabar +hades_trees:colwood_magenta +hades_doors:door_steel_violet_e +hades_core:stone_block_baked +columnia:column_stairsubpillar_hades_core_cobble +columnia:column_linkangle_down_hades_core_orangite +columnia:column_stairsubpillar_hades_core_sandstone +columnia:column_bottom_hades_core_brick_grey +hades_doors:door_dungeon2_d +signs_lib:sign_wall_locked +hades_fences:fence_wood +hades_farming:wheat_2 +hades_doors:door_chondrite_b +hades_furniture:L_binding_bars +columnia:column_linkvertical_hades_trees_colwood_dark_green +hades_doors:door_wood_a +hades_stairs:step_in_pale_bark +hades_stairs:step_out_orangite +hades_doors:door_basalt_c +hades_stairs:stair_in_tuff_baked_brick +columnia:column_linkvertical_hades_core_cobble_baked +columnia:column_top_hades_core_brick_violet +hades_stairs:stair_in_colwood_black +hades_stairs:stair_out_straw +columnia:column_link_hades_core_stonebrick_baked +hades_stairs:slab_floorblock_chondrite_stone +hades_trees:coconut +columnia:column_top_hades_core_marble +columnia:column_linkangle_hades_trees_jungle_wood +hades_stairs:step_out_colwood_magenta +hades_core:apolline +hades_flowerpots:flower_pot_blue +hades_stairs:step_colwood_grey +hades_farming:strawberry_3 +columnia:column_link_hades_trees_colwood_dark_green +gluncarp:green +columnia:column_top_hades_core_brick_pink +hades_stairs:step_out_colwood_black +columnia:column_crosslink_hades_trees_colwood_yellow +hades_tiles:floor_cream_pale +columnia:column_linkangle_hades_core_brick_magenta +columnia:column_linkvertical_hades_trees_colwood_white +hades_doors:door_steel_white_b +columnia:column_bottom_hades_core_chondrite_brick +columnia:column_bottom_hades_trees_canvas_bark +columnia:column_linktee_down_hades_trees_colwood_black +hades_stairs:stair_in_sandstonebrick +hades_doors:door_steel_darkgrey_d +hades_waterplants:waterlily_675 +columnia:column_linkcross_hades_trees_colwood_green +columnia:column_linkangle_hades_core_basalt +hades_stairs:stair_in_colwood_blue +hades_fences:fence_jungle_wood +columnia:column_linktee_down_hades_core_sandstone_volcanic_brick +hades_doors:door_wood_cream_e +columnia:column_crosslink_hades_core_brick_brown +columnia:column_link_hades_core_tuff +hades_core:brick_dark_green +columnia:column_bottom_hades_core_olivine +hades_stairs:slab_colwood_grey +hades_farming:tomato_1 +hades_stairs:slab_birch_bark +columnia:column_linkdown_hades_core_cobble_sandstone +hades_doors:door_steel_c +columnia:column_top_hades_core_essexite +columnia:column_linkdown_hades_core_orangite +hades_core:mese +gluncarp:yellow +hades_flowers:white +hades_core:ladder_jungle_wood +columnia:column_bottom_hades_core_stone +columnia:column_bottom_hades_core_lillite +hades_stairs:step_floor_essexitegold_essexitegold +columnia:column_linkcrossdown_hades_trees_colwood_dark_grey +columnia:column_linkcross_hades_core_marble +hades_trees:colwood_white +hades_stairs:step_in_colwood_dark_green +columnia:column_stairsub_hades_core_brick_red +hades_trees:coconut_sapling +hades_core:azurite_block +columnia:column_stairsub_hades_trees_birch_bark +columnia:column_linkvertical_hades_core_obsidian +hades_stairs:slab_stone_baked +columnia:column_linkdown_hades_core_cobble_sandstone_volcanic +columnia:column_linkcrossdown_hades_core_stone_baked +hades_stairs:step_out_lush_wood +hades_itemshow:pedestal_lillite +hades_stairs:stair_pale_bark +hades_itemshow:pedestal_turquosite +hades_itemshow:pedestal_olivine +hades_itemshow:pedestal_apolline +hades_itemshow:pedestal_basalt +hades_stairs:step_brick_magenta +gluncarp:red +hades_stairs:step_in_cinnabar_brick +columnia:column_linkdown_hades_core_brick_green +hades_itemshow:pedestal_obsidian +hades_itemshow:pedestal_sandstone_volcanic +hades_stairs:step_out_yellow +hades_itemshow:pedestal_sandstone +hades_itemshow:pedestal_marble +columnia:column_stairsubpillar_hades_core_brick_green +hades_itemshow:pedestal_stone_baked +hades_tiles:floor_tuff_tuffbaked +hades_stairs:stair_in_brick_black +columnia:column_linkcrossdown_hades_core_brick_red +hades_itemshow:pedestal_stone +hades_core:stone_with_tin +columnia:column_link_hades_core_brick +hades_walls:mossycobble +hades_stairs:step_out_sandstone +hades_stairs:step_floor_cream_cream +hades_stairs:stair_pink +columnia:column_linktee_hades_trees_colwood_yellow +columnia:column_linkcrossdown_hades_core_brick_dark_grey +mobs_hades:cobweb +columnia:column_linkvertical_hades_core_brick_cyan +hades_stairs:stair_out_azurite +columnia:column_linktee_down_hades_core_sandstone +mobs:spawner +hades_trees:orange_tree +hades_meshhand:hand +gluncarp:machine +columnia:column_linktee_hades_core_brick_dark_green +hades_bushes:yellow +columnia:column_linkcross_hades_core_essexite_brick +hades_stairs:step_floor_jungle_jungle +columnia:column_top_hades_trees_cream_wood +hades_food:tomatosalad +columnia:column_linkangle_hades_core_brick_grey +hades_stairs:stair_lillite +columnia:column_link_hades_trees_canvas_bark +hades_doors:door_steel_yellow_e +hades_stairs:slab_turquosite +hades_food:bottle_olive_oil +hades_stairs:step_in_pink +columnia:column_linkcrossdown_hades_core_brick_violet +hades_stairs:step_out_colwood_orange +hades_doors:door_dungeon2_c +hades_core:chondrite +hades_food:plate +hades_stairs:slab_double_floorblock_chondrite_stone +hades_stairs:stair_in_cactus_brick +hades_stairs:stair_colwood_orange +hades_stairs:slab_floorblock_bstone_sandstone +hades_stairs:slab_double_floorblock_marble_essexite2 +hades_stairs:slab_floorblock_marble_essexite2 +columnia:column_linkdown_hades_trees_colwood_blue +columnia:column_linkcross_hades_core_obsidianbrick +hades_stairs:slab_floorblock_essexite_gold_block +hades_stairs:step_in_lillite_brick +hades_stairs:step_out_lillite_brick +hades_stairs:step_lillite_brick +hades_stairs:slab_lillite_brick +columnia:column_stairsub_hades_trees_colwood_pink +hades_stairs:stair_in_lillite_brick +hades_stairs:stair_out_lillite_brick +columnia:column_linkvertical_hades_core_brick_dark_grey +columnia:column_linktee_down_hades_trees_birch_bark +hades_stairs:stair_lillite_brick +hades_stairs:step_in_turquosite_brick +hades_stairs:step_out_turquosite_brick +hades_tiles:floor_sandstone_sandstonevolcanic +hades_stairs:step_turquosite_brick +hades_doors:door_sandstone_volcanic_c +columnia:column_linktee_down_hades_core_brick_cyan +hades_stairs:slab_turquosite_brick +hades_stairs:stair_in_turquosite_brick +hades_stairs:stair_out_turquosite_brick +hades_stairs:stair_turquosite_brick +columnia:column_linkcross_hades_core_brick_black +hades_stairs:step_in_azurite_brick +hades_stairs:slab_floor_lush_lush +hades_stairs:step_out_azurite_brick +columnia:column_bottom_hades_core_cobble +hades_stairs:step_azurite_brick +columnia:column_stairsubpillar_hades_core_sandstone_volcanic +hades_stairs:stair_out_brick_dark_green +columnia:column_linkangle_down_hades_trees_colwood_pink +hades_stairs:slab_azurite_brick +hades_stairs:stair_in_azurite_brick +hades_stairs:stair_out_azurite_brick +columnia:column_mid_hades_core_cinnabar +hades_stairs:stair_azurite_brick +columnia:column_top_hades_core_brick_red +hades_furniture:table_white +hades_stairs:step_in_olivine_brick +columnia:column_linkangle_down_hades_core_mossycobble +columnia:column_link_hades_trees_colwood_white +columnia:column_bottom_hades_core_chondrite +columnia:column_link_hades_core_brick_magenta +columnia:column_linkvertical_hades_trees_colwood_red +hades_stairs:step_out_olivine_brick +hades_stairs:step_olivine_brick +hades_stairs:slab_olivine_brick +hades_stairs:stair_in_olivine_brick +columnia:column_linkcross_hades_trees_colwood_grey +hades_tiles:floor_cream_cream +hades_windows:window_wood_darkgrey +hades_stairs:stair_out_olivine_brick +hades_stairs:stair_olivine_brick +columnia:column_linktee_down_hades_core_sandstone_volcanic +hades_itemshow:pedestal_chondrite +hades_core:cobble_block +hades_doors:door_steel_white_c +hades_stairs:step_out_cinnabar_brick +hades_tiles:floor_sandstone_tuffbaked +hades_stairs:step_cinnabar_brick +hades_stairs:slab_cinnabar_brick +hades_stairs:stair_in_olivine +hades_stairs:stair_in_cinnabar_brick +hades_stairs:stair_out_cinnabar_brick +hades_core:steelblock +hades_stairs:stair_cinnabar_brick +hades_stairs:step_in_orangite_brick +hades_stairs:step_out_orangite_brick +hades_stairs:stair_in_brick_dark_grey +columnia:column_linkcrossdown_hades_trees_colwood_red +hades_refruit:bud_apple +hades_stairs:step_orangite_brick +hades_stairs:slab_orangite_brick +hades_stairs:stair_in_orangite_brick +hades_stairs:stair_out_orangite_brick +hades_stairs:stair_orangite_brick +hades_stairs:step_in_apolline_brick +hades_stairs:step_out_apolline_brick +columnia:column_linkcrossdown_hades_trees_colwood_black +hades_stairs:step_apolline_brick +hades_stairs:slab_apolline_brick +hades_stairs:stair_in_apolline_brick +columnia:column_linkangle_down_hades_core_lillite +hades_grass:dead_grass_4 +hades_stairs:stair_out_apolline_brick +hades_trees:pale_sapling +hades_stairs:stair_apolline_brick +columnia:column_bottom_hades_trees_colwood_cyan +hades_stairs:step_out_apolline +columnia:column_link_hades_core_olivine_brick +columnia:column_mid_hades_trees_bark +hades_stairs:step_lillite +columnia:column_linkdown_hades_core_mossycobble +hades_farming:cotton_2 +hades_stairs:slab_basalt_brick +hades_stairs:stair_in_lillite +signs_lib:sign_wall_yellow +columnia:column_linktee_hades_core_brick_orange +columnia:column_stairsub_hades_trees_colwood_black +columnia:column_linktee_hades_core_olivine +hades_stairs:step_in_turquosite +hades_stairs:slab_sandstonebrick +hades_stairs:step_out_turquosite +columnia:column_link_hades_core_brick_green +columnia:column_top_hades_core_obsidian +columnia:column_linktee_down_hades_trees_colwood_orange +hades_stairs:step_turquosite +hades_chests:chest_dark_grey_locked +hades_stairs:step_out_colwood_yellow +hades_stairs:stair_in_turquosite +hades_stairs:stair_out_turquosite +columnia:column_linkvertical_hades_trees_birch_bark +hades_stairs:stair_turquosite +columnia:column_linkvertical_hades_core_marble +hades_stairs:step_in_azurite +columnia:column_bottom_hades_core_tuff +hades_stairs:step_azurite +hades_stairs:slab_tuff +hades_stairs:stair_in_azurite +hades_core:marble_block +hades_stairs:step_out_olivine +hades_vines:root +hades_stairs:step_olivine +hades_tiles:floor_tuff_stonebaked +columnia:column_linkdown_hades_trees_colwood_cyan +hades_stairs:step_in_lush_wood +hades_stairs:step_in_cinnabar +hades_stairs:step_cinnabar +hades_core:gravel_volcanic_block +hades_stairs:step_brick_orange +hades_stairs:stair_in_cinnabar +columnia:column_stairsub_hades_core_cactus_brick +hades_stairs:stair_out_wood +hades_stairs:stair_cinnabar +hades_stairs:step_goldblock +hades_stairs:step_orangite +columnia:column_stairsub_hades_core_stone_baked +hades_stairs:slab_stonebrick_baked +hades_stairs:slab_orangite +hades_stairs:stair_out_essexite +hades_core:brick_brown +hades_stairs:slab_jungle_wood +columnia:column_linkdown_hades_core_brick_yellow +columnia:column_stairsubpillar_hades_trees_colwood_yellow +hades_stairs:stair_in_orangite +hades_stairs:stair_orangite +hades_stairs:step_in_apolline +hades_doors:gate_pale_wood_open +hades_stairs:step_out_lillite +columnia:column_top_hades_trees_colwood_grey +columnia:column_linkvertical_hades_core_brick_blue +hades_stairs:step_out_tuff_baked_brick +hades_core:stone_with_diamond +hades_stairs:step_chondrite +hades_stairs:stair_tuff_baked_brick +hades_core:brick_grey +hades_flowerpots:flower_pot_red +hades_chests:chest_magenta +hades_stairs:stair_apolline +hades_stairs:step_out_floor_marble_marble +hades_stairs:step_floor_marble_marble +columnia:column_linkcross_hades_core_cobble +hades_windows:window_wood +columnia:column_crosslink_hades_trees_canvas_bark +columnia:column_crosslink_hades_trees_colwood_cyan +hades_stairs:slab_floor_marble_marble +hades_stairs:stair_out_floor_marble_marble +columnia:column_linkvertical_hades_trees_colwood_dark_grey +hades_chests:chest_violet_locked +hades_core:bronzeblock +columnia:column_stairsub_hades_core_mossycobble +hades_stairs:slab_floor_essexitegold_essexitegold +hades_stairs:step_dark_grey +hades_stairs:stair_sandstone_volcanic +columnia:column_linkcross_hades_core_brick_dark_grey +hades_stairs:step_in_colwood_orange +columnia:column_linktee_hades_trees_colwood_magenta +columnia:column_linkangle_down_hades_trees_lush_wood +hades_stairs:stair_out_floor_essexitegold_essexitegold +hades_stairs:step_in_floor_essexite_essexite +columnia:column_stairsub_hades_core_apolline +columnia:column_linkdown_hades_trees_cream_wood +hades_stairs:step_floor_essexite_essexite +hades_stairs:stair_in_floor_essexite_essexite +hades_stairs:stair_out_floor_essexite_essexite +hades_trees:colwood_cyan +columnia:column_linktee_hades_core_cobble_sandstone_volcanic +hades_core:dirt_with_grass_l1 +hades_stairs:step_in_floor_chondrite_chondrite +columnia:column_stairsubpillar_hades_trees_colwood_orange +hades_stairs:step_out_floor_chondrite_chondrite +hades_core:ruby_block +hades_stairs:step_in_stonebrick +hades_stairs:step_floor_chondrite_chondrite +hades_doors:door_rusty_e +columnia:column_stairsub_hades_core_brick_pink +hades_cloth:pink +columnia:column_top_hades_core_brick_dark_grey +hades_stairs:stair_glowcrystal_block +hades_stairs:slab_charred_wood +hades_stairs:stair_out_floor_chondrite_chondrite +hades_doors:door_obsidian_glass_d +hades_stairs:stair_floor_chondrite_chondrite +hades_stairs:step_in_floor_sandstonevolcanic_sandstonevolcanic +columnia:column_crosslink_hades_core_sandstonebrick +hades_stairs:step_floor_sandstonevolcanic_sandstonevolcanic +hades_stairs:stair_in_brick_orange +columnia:column_stairsubpillar_hades_trees_colwood_uncolored +hades_stairs:slab_tuff_brick +hades_stairs:stair_in_floor_sandstonevolcanic_sandstonevolcanic +hades_stairs:stair_in_jungle_wood +hades_stairs:step_canvas_bark +hades_stairs:step_cobble_sandstone_volcanic +hades_doors:trapdoor_lush_open +hades_stairs:step_out_floor_sandstone_sandstone +columnia:column_linkangle_hades_core_essexite_brick +columnia:column_bottom_hades_core_brick_violet +hades_stairs:step_floor_sandstone_sandstone +hades_stairs:slab_floor_sandstone_sandstone +hades_stairs:stair_in_floor_sandstone_sandstone +hades_stairs:stair_out_floor_sandstone_sandstone +hades_stairs:stair_floor_sandstone_sandstone +hades_stairs:step_in_floor_tuffbaked_tuffbaked +hades_stairs:step_out_floor_tuffbaked_tuffbaked +hades_stairs:step_floor_tuffbaked_tuffbaked +hades_stairs:step_in_tuff_baked +columnia:column_linkangle_down_hades_trees_colwood_brown +hades_stairs:stair_in_floor_tuffbaked_tuffbaked +hades_chests:chest_pink_locked +hades_stairs:stair_out_floor_tuffbaked_tuffbaked +columnia:column_top_hades_core_brick_cyan +hades_stairs:stair_floor_tuffbaked_tuffbaked +hades_stairs:step_in_floor_tuff_tuff +columnia:column_crosslink_hades_trees_jungle_bark +hades_stairs:step_floor_tuff_tuff +hades_stairs:slab_floor_tuff_tuff +hades_stairs:stair_in_floor_tuff_tuff +hades_trees:orange_leaves +hades_trees:jungle_tree +columnia:column_linkdown_hades_core_tuff_baked +hades_stairs:step_in_floor_stonebaked_stonebaked +hades_stairs:step_out_floor_stonebaked_stonebaked +hades_stairs:step_floor_stonebaked_stonebaked +hades_chests:chest_dark_green +columnia:column_linkcrossdown_hades_trees_bark +columnia:column_stairsub_hades_trees_colwood_dark_grey +hades_furniture:armchair_white +hades_stairs:step_in_tuff +columnia:column_stairsubpillar_hades_core_apolline +hades_stairs:step_in_floor_stone_stone +hades_stairs:stair_out_stonebrick_baked +hades_stairs:step_floor_stone_stone +columnia:column_linktee_down_hades_trees_colwood_white +columnia:column_linkdown_hades_core_brick_red +columnia:column_linkcrossdown_hades_core_olivine +columnia:column_crosslink_hades_trees_wood +columnia:column_crosslink_hades_core_obsidianbrick +hades_stairs:step_cobble_baked +hades_stairs:stair_in_floor_stone_stone +columnia:column_linktee_hades_core_mossycobble +hades_stairs:stair_floor_stone_stone +hades_stairs:step_in_floor_jungle_jungle +hades_stairs:step_out_floor_jungle_jungle +hades_flowerpots:flower_pot_pale_sapling +columnia:column_top_hades_trees_colwood_dark_grey +columnia:column_linktee_hades_core_sandstonebrick +columnia:column_linkvertical_hades_trees_colwood_green +hades_stairs:stair_floor_jungle_jungle +columnia:column_linkangle_hades_trees_colwood_red +hades_stairs:step_in_floor_cream_cream +hades_stairs:step_out_floor_cream_cream +hades_itemshow:frame +hades_stairs:stair_in_floor_cream_cream +hades_core:lillite_brick +columnia:column_linktee_down_hades_core_brick_green +hades_stairs:stair_floor_cream_cream +hades_stairs:step_out_jungle_wood +hades_stairs:stair_tinblock +columnia:column_stairsub_hades_trees_colwood_yellow +columnia:column_linkcross_hades_core_tuff_brick +columnia:column_bottom_hades_trees_colwood_brown +hades_stairs:step_in_floor_pale_pale +columnia:column_linkcross_hades_trees_canvas_bark +hades_flowers:blue +hades_stairs:step_floor_pale_pale +hades_stairs:stair_out_floor_pale_pale +hades_stairs:stair_floor_pale_pale +hades_stairs:stair_out_red +hades_stairs:stair_out_charred_wood +columnia:column_linkangle_down_hades_trees_colwood_magenta +hades_stairs:stair_out_bronzeblock +columnia:column_linkvertical_hades_core_cobble +hades_stairs:step_out_floor_lush_lush +hades_stairs:slab_grey +columnia:column_linkangle_down_hades_core_sandstonebrick +hades_stairs:stair_colwood_uncolored +hades_core:basalt_brick +hades_stairs:stair_floor_lush_lush +hades_stairs:step_out_floor_wood_wood +hades_stairs:step_floor_wood_wood +columnia:column_stairsub_hades_core_brick_magenta +columnia:column_top_hades_core_brick_dark_green +columnia:column_link_hades_core_sandstone +hades_stairs:stair_marble +hades_core:azurite +hades_stairs:stair_out_floor_wood_wood +hades_stairs:stair_floor_wood_wood +hades_stairs:step_in_glowcrystal_block +hades_doors:door_wood_c +columnia:column_linktee_hades_core_cactus_brick +columnia:column_crosslink_hades_core_cobble_baked +hades_stairs:step_out_glowcrystal_block +hades_stairs:stair_in_glowcrystal_block +hades_trees:colwood_yellow +hades_core:lillite_block +hades_doors:door_basalt_a +hades_stairs:stair_in_floor_chondrite_chondrite +hades_stairs:step_in_dark_green +hades_stairs:step_out_dark_green +hades_stairs:step_dark_green +columnia:column_linktee_hades_core_turquosite +hades_stairs:stair_in_dark_green +hades_stairs:stair_out_dark_green +hades_flowers:yellow +columnia:column_linkangle_hades_trees_colwood_white +hades_stairs:stair_dark_green +hades_stairs:step_in_dark_grey +columnia:column_linkcrossdown_hades_core_olivine_brick +hades_stairs:step_out_dark_grey +hades_stairs:stair_in_floor_essexitegold_essexitegold +hades_stairs:stair_in_dark_grey +hades_vines:vines_block +hades_stairs:stair_out_dark_grey +hades_stairs:stair_dark_grey +columnia:column_linktee_hades_core_cobble_baked +hades_stairs:step_out_pink +hades_stairs:step_pink +columnia:column_linkcrossdown_hades_trees_orange_bark +columnia:column_linkangle_down_hades_trees_jungle_wood +hades_stairs:step_out_brown +hades_stairs:step_brown +hades_stairs:slab_brown +hades_stairs:stair_out_brown +hades_stairs:stair_brown +hades_stairs:step_in_violet +hades_stairs:step_out_violet +columnia:column_linktee_down_hades_core_brick_pink +hades_doors:door_steel_bar_d +columnia:column_bottom_hades_trees_jungle_wood +columnia:column_stairsub_hades_trees_wood +hades_stairs:step_violet +hades_stairs:slab_violet +columnia:column_linkangle_hades_core_stone +hades_stairs:stair_out_violet +hades_stairs:stair_violet +hades_stairs:step_in_orange +columnia:column_linktee_hades_trees_colwood_brown +columnia:column_crosslink_hades_trees_pale_bark +hades_doors:door_steel_a +columnia:column_bottom_hades_core_marble +hades_windows:window_wood_violet +hades_stairs:step_orange +columnia:column_mid_hades_core_azurite +columnia:column_stairsub_hades_core_orangite +hades_stairs:step_sandstonebrick +columnia:column_bottom_hades_trees_orange_bark +hades_stairs:step_magenta +hades_stairs:step_out_colwood_cyan +hades_stairs:slab_magenta +hades_stairs:stair_in_magenta +columnia:column_linkdown_hades_trees_colwood_brown +hades_refruit:flower_apple +columnia:column_stairsub_hades_core_brick_white +hades_stairs:step_out_marble +hades_stairs:step_in_blue +hades_stairs:step_out_blue +hades_stairs:step_blue +columnia:column_linkcrossdown_hades_core_obsidian +hades_stairs:stair_out_blue +hades_chests:chest_black +hades_stairs:step_out_cyan +hades_stairs:step_cyan +hades_cloth:black +columnia:column_crosslink_hades_trees_colwood_pink +columnia:column_crosslink_hades_trees_bark +hades_stairs:stair_out_cyan +hades_chests:chest_cyan +hades_stairs:stair_out_colwood_blue +hades_stairs:step_in_green +columnia:column_linkcrossdown_hades_core_brick_yellow +hades_stairs:step_out_green +hades_stairs:step_green +gluncarp:pink +columnia:column_linkvertical_hades_core_brick_grey +hades_core:tuff +columnia:column_link_hades_trees_colwood_orange +hades_stairs:stair_in_green +hades_stairs:stair_out_green +hades_stairs:stair_in_marble_brick +hades_stairs:step_in_yellow +hades_stairs:step_yellow +columnia:column_linkvertical_hades_core_cactus_brick +columnia:column_linkangle_hades_core_chondrite_brick +hades_fences:fence_wood_green +hades_doors:door_steel_darkgreen_c +hades_stairs:step_in_red +columnia:column_linkdown_hades_core_olivine_brick +hades_tiles:floor_cream_jungle +hades_stairs:stair_out_brick_green +columnia:column_linkcross_hades_core_tuff_baked_brick +hades_stairs:step_out_red +hades_stairs:step_red +hades_stairs:step_in_black +hades_core:chondrite_block +hades_stairs:step_out_black +hades_stairs:step_black +columnia:column_mid_hades_core_lillite_brick +columnia:column_bottom_hades_core_cobble_baked +hades_core:sapphire_block +hades_stairs:stair_in_black +hades_stairs:step_out_charred_wood +hades_stairs:stair_in_charred_wood +columnia:column_mid_hades_trees_colwood_dark_grey +hades_stairs:step_colwood_white +columnia:column_bottom_hades_trees_colwood_white +hades_stairs:step_out_grey +hades_stairs:step_grey +signs_lib:sign_wall_green +hades_stairs:step_floor_lush_lush +hades_stairs:step_out_cobble +hades_stairs:stair_in_grey +hades_stairs:step_in_white +columnia:column_top_hades_core_azurite +hades_core:stonebrick_baked +hades_stairs:step_out_white +hades_stairs:step_white +hades_stairs:stair_white +hades_stairs:step_in_straw +hades_tiles:floor_marble_marble +columnia:column_mid_hades_core_mossycobble +columnia:column_stairsub_hades_trees_colwood_blue +hades_stairs:step_out_straw +hades_stairs:step_straw +hades_stairs:slab_straw +hades_stairs:stair_straw +hades_stairs:step_out_obsidianbrick +hades_doors:door_obsidian_glass_c +columnia:column_linkdown_hades_core_cactus_brick +hades_stairs:step_obsidianbrick +hades_tiles:floor_lush_wood +hades_flowerpots:flower_pot_violet +hades_doors:door_steel_darkgrey_a +hades_stairs:stair_in_obsidianbrick +hades_tiles:floor_stone_stonebaked +hades_stairs:stair_obsidianbrick +columnia:column_stairsub_hades_core_basalt_brick +columnia:column_linkcross_hades_trees_lush_wood +hades_stairs:step_in_cactus_brick +hades_stairs:step_out_cactus_brick +hades_stairs:stair_cobble +hades_stairs:step_cactus_brick +hades_doors:door_stone_d +hades_stairs:slab_cactus_brick +columnia:column_linkangle_down_hades_core_marble +hades_stairs:slab_double_floorblock_bstone_sandstone +columnia:column_linkangle_hades_core_essexite +columnia:column_linkcross_hades_core_chondrite +columnia:column_linkangle_hades_core_brick_dark_grey +hades_vines:willow_rotten +hades_stairs:stair_out_cactus_brick +hades_stairs:stair_cactus_brick +hades_stairs:step_in_rusty_block +hades_stairs:step_out_rusty_block +hades_stairs:step_rusty_block +hades_stairs:slab_rusty_block +hades_stairs:stair_in_rusty_block +hades_stairs:stair_out_rusty_block +columnia:column_linktee_hades_core_chondrite_brick +columnia:column_linktee_down_hades_core_brick_dark_green +hades_stairs:stair_rusty_block +columnia:column_linkcrossdown_hades_core_stonebrick_baked +hades_stairs:stair_in_essexite +hades_stairs:step_in_essexite_brick +columnia:column_linktee_hades_core_olivine_brick +hades_stairs:step_out_essexite_brick +columnia:column_top_hades_core_chondrite +hades_stairs:step_essexite_brick +hades_stairs:slab_essexite_brick +hades_stairs:stair_in_essexite_brick +hades_stairs:stair_out_essexite_brick +hades_stairs:stair_essexite_brick +hades_stairs:slab_floor_tuffbaked_tuffbaked +hades_stairs:step_out_tuff_baked +hades_stairs:stair_brick_dark_green +hades_core:clay +columnia:column_linkcrossdown_hades_core_brick_magenta +hades_stairs:stair_in_tuff_baked +columnia:column_linktee_down_hades_core_marble +hades_stairs:stair_out_tuff_baked +hades_doors:door_basalt_d +hades_stairs:step_tuff_baked_brick +columnia:column_linktee_down_hades_core_chondrite +hades_stairs:slab_tuff_baked_brick +hades_stairs:stair_out_tuff_baked_brick +hades_doors:door_steel_grey_d +columnia:column_linkvertical_hades_core_brick_violet +columnia:column_stairsubpillar_hades_core_brick_yellow +hades_stairs:stair_in_apolline +hades_stairs:step_out_tuff +hades_stairs:step_tuff +hades_stairs:slab_azurite +columnia:column_linkdown_hades_core_marble_brick +hades_stairs:stair_tuff +hades_stairs:step_in_tuff_brick +hades_stairs:step_out_tuff_brick +gluncarp:cyan +columnia:column_linktee_down_hades_core_brick_yellow +columnia:column_linktee_down_hades_core_obsidian +hades_stairs:stair_out_brick_white +hades_tiles:floor_stonebaked_stonebaked +hades_stairs:step_tuff_brick +hades_stairs:slab_floor_sandstonevolcanic_sandstonevolcanic +hades_stairs:stair_in_tuff_brick +hades_furniture:armchair_red +hades_stairs:stair_out_tuff_brick +hades_stairs:stair_tuff_brick +hades_stairs:step_in_marble +columnia:column_mid_hades_core_essexite +hades_tiles:floor_tuffbaked_chondrite +columnia:column_linkdown_hades_core_brick_grey +columnia:column_linkangle_down_hades_trees_colwood_black +hades_stairs:step_in_chondrite_brick +columnia:column_top_hades_trees_colwood_brown +hades_stairs:step_marble +hades_stairs:step_in_brick_grey +hades_stairs:slab_floor_wood_wood +hades_stairs:step_in_marble_brick +hades_stairs:step_out_marble_brick +hades_stairs:step_marble_brick +hades_stairs:slab_marble_brick +hades_stairs:stair_green +hades_stairs:stair_out_marble_brick +hades_stairs:stair_marble_brick +hades_stairs:step_in_chondrite +columnia:column_linkcrossdown_hades_trees_jungle_wood +columnia:column_stairsub_hades_core_brick_yellow +hades_stairs:slab_apolline +hades_doors:trapdoor_rusty_bar +hades_stairs:stair_out_colwood_cyan +hades_stairs:step_out_brick_black +columnia:column_linkcross_hades_core_brick_green +hades_core:tuff_block +hades_stairs:stair_in_chondrite +columnia:column_linkangle_down_hades_core_brick_blue +hades_chests:chest_orange_locked +hades_stairs:step_out_chondrite_brick +hades_stairs:stair_in_steelblock +hades_stairs:step_chondrite_brick +columnia:column_linktee_down_hades_core_olivine_brick +columnia:column_stairsubpillar_hades_core_lillite +columnia:column_linkvertical_hades_core_azurite_brick +hades_stairs:stair_chondrite_brick +hades_core:gravel_block +hades_stairs:step_in_basalt +hades_cloth:violet +hades_stairs:step_basalt +hades_stairs:slab_basalt +hades_stairs:stair_in_basalt +columnia:column_linkcrossdown_hades_core_marble +hades_stairs:stair_out_basalt +columnia:column_linktee_hades_core_brick_black +hades_furniture:armchair_dark_green +columnia:column_linktee_down_hades_trees_colwood_dark_green +hades_furniture:chair_uncolored +hades_core:essexite +columnia:column_top_hades_core_olivine_brick +hades_stairs:step_out_basalt_brick +hades_stairs:step_basalt_brick +hades_stairs:step_out_colwood_white +columnia:column_stairsub_hades_core_turquosite +hades_stairs:step_out_stonebrick +hades_stairs:step_stonebrick +hades_tiles:floor_pale_lush +hades_stairs:step_out_tinblock +hades_stairs:stair_out_stonebrick +hades_stairs:stair_stonebrick +columnia:column_linktee_hades_core_azurite_brick +hades_stairs:step_out_sandstone_volcanic_brick +hades_stairs:step_sandstone_volcanic_brick +columnia:column_bottom_hades_core_apolline +hades_doors:door_steel_d +columnia:column_linkdown_hades_trees_colwood_yellow +hades_stairs:stair_out_cobble_baked +columnia:column_linkdown_hades_core_obsidian +hades_stairs:step_brick_dark_grey +hades_stairs:stair_out_olivine +hades_stairs:step_out_cobble_sandstone_volcanic +hades_core:brick_blue +hades_stairs:stair_floor_sandstonevolcanic_sandstonevolcanic +hades_stairs:stair_in_cobble_sandstone_volcanic +hades_stairs:stair_in_cyan +hades_stairs:step_in_sandstone_volcanic +columnia:column_linktee_down_hades_core_obsidianbrick +hades_grass:grass_3 +hades_stairs:step_out_sandstone_volcanic +columnia:column_link_hades_core_marble_brick +hades_stairs:step_brick_grey +hades_trees:colwood_blue +hades_core:dirt_with_grass_l3 +columnia:column_linkdown_hades_trees_pale_wood +columnia:column_mid_hades_core_lillite +columnia:column_top_hades_trees_jungle_wood +hades_stairs:stair_orange +hades_stairs:stair_out_sandstonebrick +columnia:column_linkdown_hades_core_apolline +hades_chests:chest_yellow +hades_stairs:stair_sandstonebrick +columnia:column_linkangle_hades_core_mossycobble +hades_stairs:step_in_cobble_sandstone +hades_stairs:step_out_cobble_sandstone +columnia:column_linkcross_hades_core_brick_red +hades_stairs:step_cobble_sandstone +columnia:column_linktee_down_hades_trees_pale_wood +hades_vines:jungle_rotten +hades_stairs:stair_in_cobble_sandstone +hades_stairs:stair_out_cobble_sandstone +columnia:column_linkcross_hades_core_obsidian +hades_stairs:stair_cobble_sandstone +hades_doors:door_sandstone_e +hades_itemshow:pedestal_top +hades_stairs:step_sandstone +columnia:column_top_hades_core_lillite +gluncarp:dark_grey +hades_doors:door_sandstone_c +hades_stairs:stair_out_brick +hades_stairs:stair_sandstone +hades_stairs:step_in_brick_yellow +columnia:column_linkangle_down_hades_trees_colwood_yellow +hades_doors:gate_wood_closed +hades_stairs:stair_out_brick_magenta +hades_stairs:step_in_brick_cyan +hades_stairs:slab_brick_yellow +hades_stairs:stair_in_brick_yellow +hades_bushes:violet +columnia:column_linkcross_hades_core_brick_pink +hades_stairs:stair_out_brick_yellow +hades_stairs:stair_brick_yellow +hades_tiles:floor_sandstone_chondrite +hades_stairs:step_out_brick_white +hades_stairs:step_brick_white +hades_cloth:brown +columnia:column_linkvertical_hades_core_marble_brick +hades_stairs:step_in_brick_violet +hades_stairs:step_out_brick_violet +hades_stairs:stair_in_brick_violet +hades_stairs:stair_out_brick_violet +hades_flowerpots:flower_pot_olive_sapling +hades_stairs:step_in_brick_red +columnia:column_top_hades_trees_colwood_green +columnia:column_linkangle_down_hades_trees_orange_bark +columnia:column_stairsubpillar_hades_core_sandstone_volcanic_brick +columnia:column_crosslink_hades_core_brick_red +hades_trees:charred_wood +hades_bushes:green +hades_stairs:stair_out_brick_red +columnia:column_stairsub_hades_trees_cream_wood +hades_windows:window_wood_grey +hades_stairs:stair_brick_red +hades_stairs:step_in_brick_pink +signs_lib:sign_hanging +hades_stairs:step_brick_pink +columnia:column_linkangle_down_hades_core_sandstone_volcanic_brick +hades_stairs:slab_brick_pink +columnia:column_bottom_hades_core_cactus_brick +hades_trees:canvas_leaves +hades_stairs:stair_brick_pink +hades_core:diamondblock +hades_stairs:step_in_brick_orange +hades_stairs:step_out_brick_orange +columnia:column_link_hades_core_sandstone_volcanic_brick +hades_stairs:slab_brick_orange +hades_stairs:stair_brick_orange +hades_stairs:step_in_brick_magenta +hades_doors:door_chondrite_a +hades_core:lava_flowing +hades_farming:tomato_3 +hades_core:brick +columnia:column_bottom_hades_core_stone_baked +hades_stairs:stair_in_brick_magenta +hades_stairs:step_brick_yellow +hades_stairs:stair_brick_magenta +hades_stairs:stair_in_marble +hades_fences:fence_wood_cyan +hades_stairs:step_out_brick_grey +hades_tiles:floor_stone_chondrite +hades_stairs:stair_out_colwood_yellow +columnia:column_linkangle_down_hades_core_brick_white +hades_core:olivine_block +columnia:column_linktee_down_hades_core_stonebrick +columnia:column_linkangle_hades_core_obsidian +columnia:column_stairsubpillar_hades_core_turquosite_brick +columnia:column_linktee_down_hades_trees_colwood_dark_grey +hades_stairs:step_out_brick_green +columnia:column_crosslink_hades_core_chondrite +hades_stairs:stair_in_brick_green +columnia:column_top_hades_core_brick_magenta +columnia:column_top_hades_core_cobble_sandstone +hades_stairs:stair_in_sandstone_volcanic_brick +columnia:column_linktee_down_hades_core_brick_white +columnia:column_bottom_hades_trees_colwood_magenta +hades_stairs:slab_brick_dark_grey +hades_stairs:stair_brick_dark_grey +columnia:column_linkvertical_hades_core_tuff +hades_stairs:step_tuff_baked +hades_stairs:step_out_brick_cyan +hades_core:turquosite_brick +hades_stairs:stair_in_brick_cyan +hades_stairs:stair_out_brick_cyan +signs_lib:sign_yard +columnia:column_linktee_hades_core_tuff_brick +hades_stairs:step_in_brick_brown +columnia:column_linkangle_down_hades_core_obsidianbrick +hades_stairs:slab_brick_brown +hades_core:floor_marble_essexite2 +columnia:column_linkangle_hades_core_sandstone +hades_stairs:step_in_brick_blue +hades_tiles:floor_cream_wood +hades_core:stone_with_ruby +hades_stairs:stair_in_colwood_orange +hades_core:turquosite_block +hades_cloth:cyan +hades_stairs:step_brick_blue +hades_stairs:slab_brick_blue +columnia:column_top_hades_core_tuff_baked_brick +hades_stairs:stair_in_brick_blue +columnia:column_link_hades_core_brick_dark_green +hades_stairs:stair_brick_blue +hades_doors:door_stone_c +columnia:column_linkvertical_hades_trees_wood +hades_stairs:step_in_brick_black +columnia:column_stairsubpillar_hades_trees_colwood_red +hades_doors:door_essexite_c +hades_doors:door_steel_orange_a +hades_stairs:stair_out_tuff +columnia:column_mid_hades_trees_colwood_brown +hades_stairs:step_in_brick +columnia:column_linkcrossdown_hades_core_cobble +columnia:column_linkcross_hades_core_olivine +hades_stairs:stair_in_colwood_pink +hades_stairs:step_out_brick +hades_waterplants:waterlily +hades_stairs:step_brick +hades_lamps:lantern_rusty +columnia:column_linkcrossdown_hades_core_brick_orange +columnia:column_linktee_hades_trees_lush_wood +columnia:column_linktee_hades_trees_bark +columnia:column_linkcrossdown_hades_trees_jungle_bark +hades_stairs:stair_brick +columnia:column_crosslink_hades_trees_colwood_orange +hades_stairs:step_in_cobble_baked +columnia:column_link_hades_trees_cream_wood +hades_stairs:stair_pale_wood +hades_stairs:step_out_cobble_baked +hades_stairs:slab_cobble_baked +hades_core:mossystone +hades_stairs:stair_in_cobble_baked +columnia:column_top_hades_trees_wood +hades_stairs:slab_sandstone_volcanic_brick +columnia:column_linkvertical_hades_core_orangite_brick +columnia:column_top_hades_trees_jungle_bark +hades_stairs:step_cobble +hades_doors:door_steel_blue_a +hades_stairs:stair_in_cobble +columnia:column_crosslink_columnia_rusty_block +hades_tiles:floor_sandstonevolcanic_sandstonevolcanic +hades_stairs:stair_out_cobble +columnia:column_crosslink_hades_core_essexite_brick +columnia:column_stairsub_hades_core_lillite_brick +hades_stairs:step_stone_baked +columnia:column_linkangle_down_hades_trees_jungle_bark +hades_stairs:slab_lush_wood +columnia:column_crosslink_hades_core_cobble +hades_stairs:step_stonebrick_baked +hades_cloth:dark_green +hades_stairs:step_out_pale_bark +hades_stairs:stair_in_stonebrick_baked +hades_stairs:step_out_floor_stone_stone +hades_tiles:floor_chondrite_stonebaked +hades_core:brick_green +hades_doors:door_steel_grey_a +hades_stairs:step_in_charred_wood +hades_stairs:step_out_stone +columnia:column_linktee_down_hades_core_essexite_brick +hades_stairs:step_stone +hades_stairs:slab_stone +hades_stairs:stair_stone +hades_stairs:step_in_goldblock +hades_stairs:step_out_goldblock +columnia:column_mid_hades_core_stonebrick_baked +columnia:column_linkvertical_hades_core_cinnabar +hades_stairs:step_in_orangite +columnia:column_stairsub_hades_core_cinnabar_brick +hades_core:sandstone_volcanic +hades_stairs:slab_goldblock +hades_stairs:stair_in_goldblock +hades_stairs:stair_out_goldblock +hades_core:fertile_sand +hades_farming:seed_spice +hades_stairs:stair_goldblock +hades_doors:door_marble_e +hades_stairs:step_in_tinblock +columnia:column_stairsubpillar_hades_trees_pale_bark +hades_stairs:stair_in_stonebrick +hades_tiles:floor_stone_tuff +columnia:column_link_hades_core_brick_orange +hades_stairs:slab_double_tinblock +hades_stairs:step_pale_wood +hades_stairs:stair_in_tinblock +hades_stairs:stair_out_tinblock +columnia:column_bottom_hades_core_brick_black +hades_stairs:step_in_bronzeblock +hades_doors:door_steel_yellow_a +hades_stairs:step_out_bronzeblock +hades_farming:cotton_3 +hades_stairs:stair_out_colwood_uncolored +columnia:column_linkangle_down_hades_core_brick_grey +hades_core:stone_with_coal +hades_stairs:step_bronzeblock +hades_stairs:slab_double_bronzeblock +columnia:column_crosslink_hades_core_brick_white +hades_core:cinnabar +hades_stairs:slab_bronzeblock +hades_furniture:armchair_blue +columnia:column_link_hades_core_tuff_baked_brick +hades_stairs:stair_in_bronzeblock +columnia:column_stairsubpillar_hades_trees_colwood_white +hades_stairs:step_in_floor_lush_lush +hades_stairs:stair_bronzeblock +columnia:column_link_columnia_rusty_block +hades_stairs:step_in_copperblock +columnia:column_linkangle_hades_trees_colwood_magenta +columnia:column_mid_hades_core_brick_blue +hades_stairs:step_copperblock +hades_stairs:stair_in_copperblock +columnia:column_mid_hades_core_cobble_sandstone +hades_stairs:stair_copperblock +hades_vessels:glass_bottle +columnia:column_linkcross_hades_core_sandstonebrick +hades_stairs:step_out_steelblock +hades_stairs:slab_steelblock +hades_stairs:stair_out_steelblock +columnia:column_linkcrossdown_hades_core_cinnabar_brick +hades_stairs:stair_out_bark +hades_stairs:step_colwood_yellow +hades_stairs:slab_colwood_yellow +columnia:column_linkangle_hades_trees_pale_wood +hades_doors:door_steel_violet_b +hades_stairs:slab_brick_grey +columnia:column_bottom_hades_core_azurite +columnia:column_top_hades_core_sandstone +hades_stairs:stair_colwood_yellow +hades_stairs:stair_bark +hades_stairs:stair_out_basalt_brick +columnia:column_linkvertical_hades_trees_colwood_yellow +hades_chests:chest_dark_grey +hades_furniture:armchair +columnia:column_linkcross_hades_trees_colwood_dark_grey +hades_stairs:stair_out_colwood_white +hades_stairs:stair_colwood_white +columnia:column_linkvertical_hades_trees_orange_bark +hades_stairs:stair_in_colwood_yellow +hades_stairs:step_colwood_violet +hades_stairs:stair_out_brick_pink +columnia:column_linktee_hades_trees_birch_bark +columnia:column_linkdown_hades_trees_colwood_black +columnia:column_linktee_down_hades_core_turquosite_brick +hades_stairs:step_in_colwood_red +hades_stairs:step_out_colwood_red +columnia:column_stairsub_hades_core_stone +columnia:column_linkcross_columnia_rusty_block +hades_stairs:stair_colwood_dark_green +columnia:column_linkangle_hades_core_lillite_brick +hades_beds:fancy_bed_top +hades_stairs:slab_colwood_red +hades_trees:apple +hades_windows:window_wood_white +columnia:column_linkcross_hades_core_stonebrick_baked +hades_core:stonebrick +hades_stairs:stair_out_colwood_red +columnia:column_stairsub_hades_trees_orange_bark +hades_stairs:step_out_colwood_pink +hades_stairs:step_colwood_pink +columnia:column_linkvertical_hades_core_brick_brown +hades_fences:fence_wood_white +hades_stairs:stair_colwood_pink +hades_stairs:step_charred_bark +columnia:column_link_hades_core_sandstonebrick +hades_stairs:stair_out_colwood_orange +columnia:column_linkcrossdown_hades_trees_lush_wood +hades_stairs:step_colwood_magenta +columnia:column_linkcross_hades_core_lillite +columnia:column_linktee_down_hades_core_brick_blue +columnia:column_linkdown_hades_core_brick_magenta +columnia:column_top_hades_trees_pale_bark +hades_stairs:stair_out_floor_sandstonevolcanic_sandstonevolcanic +columnia:column_stairsubpillar_hades_core_brick_dark_green +hades_core:obsidian +hades_doors:door_steel_cyan_d +hades_stairs:step_in_colwood_grey +columnia:column_linktee_down_hades_core_olivine +hades_stairs:step_out_colwood_grey +hades_glowcrystals:glowcrystal_block +hades_stairs:stair_in_colwood_grey +columnia:column_linkangle_hades_trees_jungle_bark +columnia:column_link_hades_core_azurite +hades_doors:trapdoor_steel_open +columnia:column_linkdown_hades_core_sandstone_volcanic +hades_stairs:step_colwood_green +hades_stairs:slab_colwood_green +hades_doors:trapdoor_lush +hades_stairs:stair_out_colwood_green +columnia:column_linkcrossdown_hades_core_sandstone +columnia:column_bottom_hades_core_brick_dark_grey +hades_trees:colwood_red +hades_stairs:step_out_colwood_dark_grey +hades_stairs:step_colwood_dark_grey +hades_stairs:slab_colwood_dark_grey +columnia:column_linkcrossdown_hades_trees_colwood_grey +hades_stairs:stair_in_colwood_dark_grey +hades_stairs:stair_colwood_dark_grey +hades_stairs:stair_in_blue +hades_stairs:step_colwood_dark_green +columnia:column_linkcrossdown_hades_core_basalt_brick +hades_stairs:step_in_colwood_cyan +hades_core:glass +columnia:column_crosslink_hades_core_lillite_brick +hades_fences:fence_lush_wood +hades_stairs:slab_chondrite +hades_stairs:stair_out_glowcrystal_block +hades_doors:door_basalt_b +hades_stairs:step_out_colwood_brown +hades_stairs:stair_in_colwood_brown +hades_trees:colwood_uncolored +hades_stairs:stair_out_colwood_brown +hades_stairs:stair_jungle_wood +hades_stairs:stair_colwood_brown +hades_stairs:step_colwood_blue +columnia:column_linkvertical_hades_core_essexite +hades_stairs:stair_cyan +hades_stairs:stair_colwood_blue +columnia:column_linktee_hades_core_brick_yellow +hades_windows:window_wood_red +hades_stairs:step_in_colwood_black +hades_stairs:step_colwood_black +hades_stairs:stair_out_colwood_black +hades_stairs:stair_colwood_black +hades_stairs:slab_colwood_uncolored +hades_stairs:step_lush_wood +hades_stairs:stair_out_floor_lush_lush +hades_trees:pale_bark +hades_stairs:step_in_charred_bark +hades_doors:door_steel_blue_d +hades_stairs:step_colwood_orange +hades_stairs:stair_in_charred_bark +columnia:column_crosslink_hades_core_marble +columnia:column_linktee_down_hades_core_brick_orange +columnia:column_linktee_down_hades_trees_orange_bark +hades_stairs:stair_charred_bark +columnia:column_linkcross_hades_core_sandstone +columnia:column_linkdown_hades_trees_colwood_dark_grey +hades_stairs:step_in_canvas_bark +hades_stairs:step_out_canvas_bark +hades_stairs:stair_out_colwood_magenta +columnia:column_link_hades_core_brick_grey +hades_stairs:slab_canvas_bark +hades_stairs:stair_in_canvas_bark +hades_stairs:stair_out_canvas_bark +hades_stairs:stair_canvas_bark +hades_stairs:step_in_orange_bark +hades_stairs:step_out_orange_bark +hades_stairs:step_orange_bark +hades_stairs:slab_orange_bark +hades_stairs:stair_in_orange_bark +hades_stairs:stair_out_orange_bark +hades_stairs:stair_orange_bark +hades_stairs:step_in_birch_bark +hades_stairs:step_out_birch_bark +hades_stairs:step_birch_bark +columnia:column_stairsub_columnia_rusty_block +hades_stairs:stair_in_birch_bark +hades_stairs:stair_out_birch_bark +columnia:column_linktee_hades_core_basalt +hades_stairs:step_pale_bark +hades_stairs:stair_out_pale_bark +hades_stairs:step_out_jungle_bark +hades_stairs:step_jungle_bark +hades_stairs:slab_blue +hades_doors:door_sandstone_volcanic_b +columnia:column_linkcross_hades_core_essexite +hades_stairs:stair_jungle_bark +columnia:column_linktee_hades_core_turquosite_brick +columnia:column_crosslink_hades_core_sandstone +hades_stairs:step_out_bark +columnia:column_linkangle_hades_core_brick_red +hades_trees:birch_leaves +columnia:column_linktee_hades_trees_colwood_dark_green +hades_stairs:step_bark +hades_stairs:stair_in_bark +hades_stairs:step_in_colwood_yellow +hades_stairs:step_in_stone +hades_stairs:step_charred_wood +columnia:column_linkcross_hades_core_stone_baked +hades_stairs:stair_black +hades_stairs:stair_charred_wood +hades_stairs:step_in_cream_wood +hades_trees:colwood_brown +hades_stairs:step_out_cream_wood +columnia:column_top_hades_core_apolline_brick +hades_fences:fence_wood_orange +columnia:column_linktee_hades_core_obsidian +hades_windows:window_lush_wood +hades_stairs:stair_in_cream_wood +hades_stairs:stair_out_cream_wood +columnia:column_linkangle_columnia_rusty_block +hades_stairs:stair_olivine +hades_itemshow:showcase +hades_stairs:stair_in_colwood_uncolored +columnia:column_link_hades_core_orangite +hades_stairs:step_out_stonebrick_baked +hades_stairs:stair_in_lush_wood +hades_stairs:stair_out_lush_wood +hades_stairs:stair_lush_wood +hades_stairs:step_jungle_wood +columnia:column_linkdown_hades_trees_jungle_bark +hades_stairs:step_out_pale_wood +hades_stairs:slab_tinblock +columnia:column_stairsubpillar_hades_core_brick_brown +hades_stairs:stair_in_pale_wood +columnia:column_linkdown_hades_core_olivine +columnia:column_linkangle_hades_core_stonebrick_baked +hades_stairs:stair_out_pale_wood +hades_core:stone_block +hades_stairs:step_out_wood +hades_stairs:step_wood +hades_core:orangite_block +hades_stairs:slab_wood +columnia:column_linkangle_hades_core_tuff_baked +hades_trees:orange_bark +hades_stairs:stair_in_wood +columnia:column_linkcross_hades_core_cinnabar_brick +hades_farming:spice_3 +hades_core:ladder_lush_wood +hades_farming:strawberry_2 +hades_windows:window_wood_black +hades_farming:strawberry_1 +hades_farming:seed_strawberry +hades_doors:door_steel_green_d +hades_farming:potato_3 +columnia:column_linkangle_down_hades_core_essexite_brick +hades_farming:potato_2 +hades_farming:potato_1 +hades_vines:jungle +hades_doors:door_steel_b +hades_farming:seed_potato +hades_stairs:slab_brick_magenta +hades_flowerpots:flower_pot_branch_bush +hades_stairs:slab_lillite +columnia:column_linktee_hades_core_sandstone_volcanic_brick +columnia:column_linkangle_down_hades_trees_colwood_grey +hades_farming:cotton_1 +hades_farming:seed_cotton +columnia:column_linkcross_hades_trees_colwood_blue +hades_farming:wheat_1 +hades_stairs:stair_colwood_cyan +hades_farming:soil_wet +hades_stairs:stair_out_pink +hades_doors:door_steel_grey_c +hades_doors:door_steel_cyan_e +hades_grass:junglegrass +hades_grass:seed_grass +hades_stairs:slab_cobble_sandstone +hades_grass:grass_4 +hades_grass:grass_2 +hades_grass:grass_1 +hades_bones:bones +hades_beds:bed_top +hades_doors:door_sandstone_b +columnia:column_stairsub_hades_core_azurite +hades_cloth:dark_grey +columnia:column_linkcrossdown_hades_core_tuff_baked +hades_stairs:slab_brick_white +hades_cloth:orange +hades_cloth:magenta +hades_doors:door_steel_red_d +hades_cloth:blue +columnia:column_linkvertical_hades_core_brick_yellow +hades_stairs:step_out_brick_blue +columnia:column_stairsubpillar_hades_trees_colwood_black +columnia:column_mid_hades_trees_pale_bark +hades_doors:door_steel_yellow_b +columnia:column_top_hades_core_olivine +hades_cloth:red +hades_cloth:grey +hades_cloth:white +columnia:column_linktee_down_columnia_rusty_block +hades_trees:jungle_bark +columnia:column_linkcrossdown_columnia_rusty_block +columnia:column_linkdown_columnia_rusty_block +columnia:column_stairsub_hades_core_tuff_baked_brick +columnia:column_linkvertical_hades_core_obsidianbrick +hades_doors:door_wood_cream_b +columnia:column_mid_columnia_rusty_block +columnia:column_stairsubpillar_hades_core_lillite_brick +hades_stairs:step_out_stone_baked +columnia:column_linktee_down_hades_core_lillite_brick +columnia:column_linktee_hades_core_lillite_brick +columnia:column_linkangle_down_hades_core_lillite_brick +columnia:column_link_hades_core_essexite +hades_stairs:step_colwood_red +columnia:column_linkvertical_hades_core_lillite_brick +columnia:column_linkcrossdown_hades_core_lillite_brick +hades_doors:door_steel_black_d +columnia:column_crosslink_hades_core_brick_violet +hades_core:brick_white +columnia:column_stairsub_hades_core_cobble_sandstone_volcanic +columnia:column_linkcross_hades_core_lillite_brick +columnia:lamp_ceiling +columnia:column_linkdown_hades_core_lillite_brick +columnia:column_link_hades_core_lillite_brick +columnia:column_linktee_down_hades_core_brick_magenta +hades_stairs:slab_colwood_cyan +columnia:column_bottom_hades_core_lillite_brick +hades_doors:door_wood_cream_c +columnia:column_top_hades_core_lillite_brick +hades_stairs:slab_black +hades_fences:fence_wood_blue +columnia:column_linktee_hades_core_stonebrick_baked +columnia:column_linkcrossdown_hades_trees_pale_bark +columnia:column_stairsub_hades_core_lillite +columnia:column_linktee_down_hades_core_lillite +hades_stairs:stair_cobble_sandstone_volcanic +hades_doors:trapdoor_cream +columnia:column_linkdown_hades_core_brick +hades_fences:fence_pale_wood +columnia:column_linkvertical_hades_core_lillite +columnia:column_mid_hades_core_tuff_brick +columnia:column_linkcrossdown_hades_core_lillite +hades_stairs:slab_colwood_magenta +columnia:column_crosslink_hades_core_turquosite +columnia:column_link_hades_core_lillite +hades_core:tuff_brick +hades_stairs:stair_in_sandstone +hades_stairs:step_in_sandstonebrick +columnia:column_linkcrossdown_hades_core_chondrite_brick +columnia:column_linkdown_hades_core_brick_brown +hades_chests:chest_orange +hades_core:stone_with_gold +columnia:column_stairsubpillar_hades_core_azurite_brick +columnia:column_stairsub_hades_core_azurite_brick +columnia:column_linktee_down_hades_core_azurite_brick +hades_stairs:step_in_sandstone_volcanic_brick +hades_refruit:flower_cocoa +columnia:column_top_hades_core_tuff +columnia:column_linkcrossdown_hades_core_brick_green +columnia:column_linkangle_down_hades_core_azurite_brick +columnia:column_top_hades_core_brick_brown +columnia:column_link_hades_core_stone +columnia:column_linkangle_hades_core_azurite_brick +hades_stairs:stair_out_chondrite_brick +columnia:column_linkangle_hades_core_brick_black +columnia:column_linkcrossdown_hades_core_azurite_brick +columnia:column_linkvertical_hades_core_chondrite +columnia:column_linkcross_hades_core_azurite_brick +columnia:column_linkdown_hades_core_azurite_brick +columnia:column_linkcross_hades_trees_colwood_orange +columnia:column_linkangle_hades_core_brick_orange +columnia:column_link_hades_core_azurite_brick +columnia:column_crosslink_hades_core_azurite_brick +columnia:column_bottom_hades_core_azurite_brick +columnia:column_top_hades_core_azurite_brick +columnia:column_mid_hades_core_azurite_brick +hades_beds:fancy_bed_bottom +columnia:column_linktee_down_hades_core_azurite +columnia:column_bottom_hades_trees_colwood_violet +columnia:column_linktee_hades_core_azurite +hades_core:brick_pink +hades_doors:trapdoor_jungle +columnia:column_stairsubpillar_hades_core_brick_cyan +hades_doors:door_glass_c +gluncarp:grey +columnia:column_linkangle_down_hades_trees_colwood_green +columnia:column_linkdown_hades_core_chondrite +columnia:column_linkvertical_hades_core_azurite +columnia:column_link_hades_core_brick_red +columnia:column_linkcrossdown_hades_core_azurite +columnia:column_linkdown_hades_core_azurite +columnia:column_link_hades_trees_birch_bark +columnia:column_linkdown_hades_trees_pale_bark +hades_core:dirt_with_grass +columnia:column_mid_hades_core_marble +hades_stairs:stair_in_orange +hades_doors:door_stone_baked_e +hades_stairs:stair_brick_grey +columnia:column_stairsub_hades_core_turquosite_brick +hades_trash:trash_can_plastic +hades_stairs:stair_out_colwood_violet +columnia:column_stairsub_hades_core_brick_green +columnia:column_stairsubpillar_hades_core_turquosite +hades_stairs:step_in_bark +columnia:column_linkangle_down_hades_core_turquosite_brick +columnia:column_linkangle_hades_core_turquosite_brick +columnia:column_linkvertical_hades_core_turquosite_brick +columnia:column_linkcrossdown_hades_core_turquosite_brick +columnia:column_linkcross_hades_core_turquosite_brick +columnia:column_linkdown_hades_core_turquosite_brick +columnia:column_link_hades_core_turquosite_brick +columnia:column_crosslink_hades_core_turquosite_brick +columnia:column_linktee_hades_trees_colwood_cyan +columnia:column_bottom_hades_core_turquosite_brick +columnia:column_top_hades_core_turquosite_brick +columnia:column_mid_hades_core_turquosite_brick +columnia:column_top_hades_core_tuff_baked +hades_stairs:stair_basalt_brick +columnia:column_linktee_down_hades_core_turquosite +columnia:column_link_hades_core_cinnabar +columnia:column_crosslink_hades_core_brick_magenta +hades_stairs:slab_dark_green +columnia:column_linkangle_down_hades_core_turquosite +columnia:column_linkangle_hades_core_turquosite +columnia:column_linkcrossdown_hades_core_turquosite +columnia:column_linkcross_hades_core_turquosite +columnia:column_linkdown_hades_core_turquosite +columnia:column_link_hades_core_turquosite +columnia:column_linkdown_hades_core_lillite +hades_vines:cave_rotten +columnia:column_linktee_hades_core_brick_green +columnia:column_top_hades_core_turquosite +columnia:column_mid_hades_core_turquosite +columnia:column_stairsubpillar_hades_core_cinnabar_brick +columnia:column_stairsub_hades_trees_jungle_wood +hades_stairs:slab_double_goldblock +hades_waterplants:seaweed_2 +columnia:column_linktee_down_hades_core_cinnabar_brick +columnia:column_linktee_hades_core_cinnabar_brick +columnia:column_linkangle_down_hades_core_cinnabar_brick +columnia:column_linkangle_hades_core_cinnabar_brick +hades_doors:door_steel_orange_c +columnia:column_linkvertical_hades_core_cinnabar_brick +columnia:column_linkvertical_hades_core_brick_orange +hades_stairs:stair_steelblock +hades_stairs:stair_wood +columnia:column_mid_hades_core_cobble_baked +columnia:column_linkdown_hades_core_cinnabar_brick +columnia:column_link_hades_core_cinnabar_brick +columnia:column_crosslink_hades_core_cinnabar_brick +columnia:column_bottom_hades_core_cinnabar_brick +columnia:column_top_hades_core_cinnabar_brick +hades_doors:door_steel_magenta_c +columnia:column_mid_hades_core_cinnabar_brick +columnia:column_stairsubpillar_hades_core_cinnabar +columnia:column_linktee_down_hades_core_cinnabar +columnia:column_stairsub_hades_core_stonebrick +columnia:column_linkangle_hades_core_cinnabar +hades_stairs:stair_in_colwood_cyan +hades_doors:door_basalt_e +columnia:column_crosslink_hades_core_cinnabar +columnia:column_stairsub_hades_core_essexite_brick +hades_tiles:floor_jungle_lush +columnia:bracket +columnia:column_stairsubpillar_hades_core_orangite_brick +columnia:column_stairsub_hades_core_orangite_brick +columnia:column_linktee_down_hades_core_orangite_brick +columnia:column_linktee_hades_core_orangite_brick +columnia:column_linkangle_down_hades_core_orangite_brick +columnia:column_linkangle_hades_core_orangite_brick +hades_stairs:stair_cobble_baked +columnia:column_linkcrossdown_hades_core_orangite_brick +columnia:column_linkcross_hades_core_orangite_brick +columnia:column_linkdown_hades_core_orangite_brick +columnia:column_link_hades_core_orangite_brick +hades_core:cobble +columnia:column_crosslink_hades_core_orangite_brick +columnia:column_bottom_hades_core_orangite_brick +columnia:column_top_hades_core_orangite_brick +columnia:column_mid_hades_core_orangite_brick +columnia:column_stairsubpillar_hades_core_orangite +columnia:column_linktee_down_hades_core_orangite +columnia:column_linktee_hades_core_orangite +columnia:column_linkangle_hades_core_orangite +columnia:column_linktee_down_hades_core_cobble +columnia:column_linkcrossdown_hades_core_orangite +columnia:column_linkdown_hades_core_apolline_brick +columnia:column_crosslink_hades_trees_birch_bark +columnia:column_stairsubpillar_hades_core_apolline_brick +columnia:column_stairsub_hades_core_apolline_brick +columnia:column_linktee_down_hades_core_apolline_brick +columnia:column_linktee_hades_core_apolline_brick +hades_doors:trapdoor_steel_bar_open +columnia:column_linkangle_down_hades_core_apolline_brick +columnia:column_linkangle_hades_core_apolline_brick +columnia:column_linkvertical_hades_core_apolline_brick +hades_bushes:white +columnia:column_linkcrossdown_hades_core_apolline_brick +columnia:column_linkcross_hades_core_apolline_brick +columnia:column_mid_hades_core_orangite +columnia:column_link_hades_core_apolline_brick +columnia:column_crosslink_hades_core_apolline_brick +columnia:column_bottom_hades_core_apolline_brick +hades_stairs:step_cream_wood +columnia:column_linkangle_down_hades_core_olivine +columnia:column_mid_hades_core_apolline_brick +columnia:column_crosslink_hades_trees_colwood_blue +columnia:column_linktee_down_hades_core_apolline +columnia:column_linktee_hades_core_apolline +columnia:column_linktee_down_hades_core_basalt +columnia:column_linkvertical_hades_trees_lush_wood +hades_core:cobble_block_baked +columnia:column_linkvertical_hades_trees_cream_wood +hades_core:ash +hades_trees:banana +hades_stairs:stair_out_cinnabar +columnia:column_linkcrossdown_hades_core_apolline +columnia:column_link_hades_core_apolline +columnia:column_top_hades_core_apolline +columnia:column_mid_hades_core_apolline +columnia:column_stairsubpillar_hades_core_olivine_brick +columnia:column_stairsub_hades_core_olivine_brick +hades_core:glowing_cactus_block +hades_stairs:stair_in_chondrite_brick +columnia:column_mid_hades_core_olivine_brick +columnia:column_crosslink_hades_core_olivine +hades_core:lillite +hades_stairs:slab_colwood_white +columnia:column_stairsub_hades_trees_colwood_cyan +hades_doors:door_steel_violet_a +columnia:column_linkangle_hades_core_sandstonebrick +hades_stairs:slab_olivine +columnia:column_stairsub_hades_trees_colwood_magenta +columnia:column_mid_hades_core_brick_white +hades_flowerpots:flower_pot_white +columnia:column_link_hades_core_tuff_baked +hades_tiles:floor_chondrite_tuffbaked +columnia:column_linkcrossdown_hades_trees_colwood_yellow +gluncarp:black +hades_stairs:step_brick_cyan +hades_lamps:lantern +hades_fences:fence_wood_red +hades_doors:door_steel_red_e +hades_tiles:floor_pale_cream +columnia:column_crosslink_hades_trees_cream_wood +hades_doors:door_stone_baked_a +hades_doors:trapdoor_steel_bar +hades_core:azurite_brick +hades_core:apolline_block +columnia:column_linkcross_hades_trees_jungle_bark +columnia:column_linktee_hades_core_brick_grey +hades_doors:door_steel_yellow_c +hades_doors:trapdoor_pale_open +columnia:column_linkcross_hades_core_stonebrick +hades_walls:sandstone_volcanic +columnia:column_linkdown_hades_core_essexite +hades_stairs:step_in_colwood_green +hades_core:tuff_baked_brick +columnia:column_bottom_hades_core_olivine_brick +hades_doors:door_dungeon2_b +hades_doors:door_marble_b +hades_stairs:stair_in_brick_red +columnia:column_linkangle_hades_core_obsidianbrick +columnia:column_stairsubpillar_hades_core_marble_brick +columnia:column_stairsubpillar_hades_core_basalt_brick +hades_flowerpots:flower_pot_olive_leaves +columnia:column_linkcrossdown_hades_core_brick_grey +hades_core:ladder_cream_wood +hades_doors:door_steel_pink_d +columnia:column_stairsubpillar_hades_trees_bark +columnia:column_link_hades_core_brick_cyan +columnia:column_linktee_down_hades_core_marble_brick +columnia:column_linktee_hades_core_marble_brick +hades_doors:door_steel_black_e +hades_core:basalt +columnia:column_bottom_hades_trees_colwood_yellow +hades_stairs:step_out_brick_magenta +hades_doors:trapdoor_rusty_bar_open +columnia:column_stairsub_hades_core_marble +columnia:column_mid_hades_core_brick_red +hades_grass:dead_grass_2 +hades_tiles:floor_wood_lush +hades_doors:door_rusty_bar_e +hades_doors:door_rusty_bar_d +hades_doors:door_rusty_bar_a +hades_doors:door_steel_brown_d +hades_stairs:stair_out_lillite +columnia:column_linkangle_hades_core_basalt_brick +hades_waterplants:waterlily_45 +hades_core:cinnabar_block +columnia:column_stairsubpillar_hades_core_azurite +columnia:column_stairsub_hades_trees_colwood_red +hades_stairs:stair_out_brick_blue +hades_doors:door_essexite_b +columnia:column_mid_hades_core_chondrite_brick +hades_stairs:stair_basalt +hades_stairs:step_out_floor_sandstonevolcanic_sandstonevolcanic +columnia:column_linkangle_hades_trees_colwood_dark_green +hades_stairs:stair_yellow +hades_doors:door_steel_darkgrey_b +hades_tiles:floor_tuffbaked_sandstone +columnia:column_linkcrossdown_hades_trees_colwood_magenta +hades_doors:door_steel_blue_e +columnia:column_linkcross_hades_core_cobble_sandstone_volcanic +hades_flowerpots:flower_pot_burned_branches +hades_core:obsidian_block +hades_stairs:step_out_charred_bark +hades_doors:door_steel_blue_c +hades_doors:door_steel_blue_b +columnia:column_linkcrossdown_hades_core_brick_dark_green +columnia:column_stairsub_hades_trees_bark +hades_doors:gate_jungle_wood_open +hades_windows:window_wood_brown +hades_tiles:floor_jungle_pale +hades_torches:torch_ceiling +hades_doors:door_steel_grey_e +hades_doors:door_steel_green_e +columnia:column_stairsub_hades_core_cobble_baked +hades_trees:birch_bark +columnia:column_bottom_hades_core_essexite_brick +hades_doors:door_rusty_bar_c +columnia:column_linkcross_hades_core_olivine_brick +hades_stairs:stair_in_floor_wood_wood +columnia:column_linkcrossdown_hades_core_stonebrick +hades_doors:door_wood_lush_d +hades_doors:door_wood_cream_d +columnia:column_crosslink_hades_core_brick_blue +hades_doors:door_wood_lush_c +hades_tiles:floor_lush_cream +columnia:column_crosslink_hades_core_tuff_baked_brick +hades_doors:door_wood_cream_a +hades_chests:chest_white_locked +columnia:column_linkangle_down_hades_core_cinnabar +columnia:column_mid_hades_trees_colwood_cyan +hades_windows:window_wood_pink +hades_core:turquosite +hades_doors:door_wood_d +hades_doors:door_stone_baked_d +columnia:column_stairsubpillar_hades_core_brick_red +columnia:column_linkdown_hades_core_brick_black +hades_core:ladder +columnia:column_linkdown_hades_core_brick_dark_green +hades_windows:window_wood_orange +hades_stairs:step_out_azurite +columnia:column_mid_hades_core_brick_dark_green +columnia:column_linkcross_hades_core_cinnabar +columnia:column_linkvertical_hades_core_brick_dark_green +hades_flowerpots:flower_pot_banana_leaves +hades_flowerpots:flower_pot_orange_leaves +hades_core:ash_block +hades_flowerpots:flower_pot_birch_sapling +hades_tiles:floor_pale_pale +columnia:column_linktee_down_hades_trees_pale_bark +columnia:column_linkvertical_hades_core_chondrite_brick +columnia:column_link_hades_trees_colwood_magenta +hades_windows:window_pale_wood +columnia:column_linkcross_hades_trees_colwood_yellow +columnia:column_link_hades_core_brick_blue +columnia:column_linkangle_down_hades_trees_pale_wood +hades_core:tuff_baked_block +hades_trees:olive_leaves +columnia:column_mid_hades_core_brick_grey +columnia:column_linkcross_hades_trees_bark +columnia:column_bottom_hades_core_basalt +hades_doors:gate_lush_wood_closed +columnia:column_mid_hades_core_cobble +hades_flowerpots:flower_pot_cultivated_jungle_sapling +hades_stairs:stair_floor_tuff_tuff +hades_doors:door_sandstone_a +hades_stairs:stair_chondrite +hades_stairs:slab_sandstone +hades_stairs:stair_out_floor_jungle_jungle +columnia:column_linktee_down_hades_trees_lush_wood +hades_tiles:floor_jungle_jungle +hades_chests:chest_red +columnia:column_linkangle_hades_core_brick +columnia:column_mid_hades_trees_orange_bark +hades_core:obsidianbrick +columnia:column_linkcross_hades_trees_colwood_black +hades_fences:fence_wood_dark_grey +hades_doors:door_steel_violet_c +columnia:column_linktee_down_hades_trees_canvas_bark +columnia:column_link_hades_core_essexite_brick +hades_core:stone_with_copper +hades_furniture:table_lamp_off +hades_doors:door_dungeon1_a +columnia:rusty_block +columnia:column_mid_hades_trees_colwood_grey +hades_doors:gate_lush_wood_open +columnia:column_linkangle_down_hades_core_chondrite +columnia:column_mid_hades_trees_canvas_bark +hades_core:essexite_brick +columnia:column_linktee_hades_core_brick_cyan +hades_stairs:step_out_colwood_dark_green +columnia:column_linkdown_hades_trees_orange_bark +columnia:column_linktee_hades_core_cobble +columnia:column_stairsub_hades_trees_colwood_brown +columnia:column_stairsub_hades_core_sandstone +columnia:column_linkvertical_hades_core_brick_green +columnia:column_bottom_hades_core_brick_blue +gluncarp:dark_green +hades_stairs:stair_out_sandstone_volcanic +columnia:column_top_hades_core_sandstone_volcanic +hades_core:marble +hades_stairs:step_brick_green +hades_flowerpots:flower_pot_leaves +hades_core:mossycobble +columnia:column_linkdown_hades_core_sandstonebrick +columnia:column_bottom_hades_trees_colwood_red +columnia:column_linkvertical_hades_core_cobble_sandstone_volcanic +hades_torches:torch_low +hades_waterplants:seaweed_3 +columnia:column_top_hades_core_stonebrick +columnia:column_mid_hades_core_brick +columnia:column_linkangle_down_hades_trees_cream_wood +hades_chests:chest_violet +columnia:column_stairsub_hades_core_brick_brown +columnia:column_mid_hades_core_chondrite +hades_core:floor_bstone_sandstone +hades_furniture:bars +hades_refruit:bud_cocoa +columnia:column_linktee_hades_trees_jungle_bark +hades_stairs:stair_in_stone_baked +hades_doors:trapdoor_open +hades_core:sugarcane +columnia:column_bottom_hades_trees_pale_wood +hades_doors:door_glass_a +hades_tiles:floor_stonebaked_tuff +columnia:column_linkcross_hades_core_basalt +hades_tiles:floor_wood_wood +columnia:column_link_hades_core_basalt_brick +hades_stairs:step_out_copperblock +hades_windows:window_wood_uncolored +hades_stairs:step_out_colwood_violet +hades_flowerpots:flower_pot_jungle_sapling +columnia:column_linkangle_down_hades_trees_bark +columnia:column_link_hades_core_cobble_sandstone_volcanic +hades_core:dirt_with_grass_l2 +columnia:column_linkangle_hades_core_cobble_sandstone +columnia:column_crosslink_hades_trees_colwood_dark_grey +hades_core:ladder_pale_wood +columnia:column_linkdown_hades_trees_colwood_orange +hades_bushes:branch_bush +columnia:column_bottom_hades_core_essexite +hades_windows:window_wood_magenta +columnia:column_link_hades_core_obsidianbrick +columnia:column_linkcrossdown_hades_trees_canvas_bark +columnia:column_stairsubpillar_hades_trees_colwood_grey +hades_flowerpots:flower_pot_pale_leaves +hades_walls:sandstone +hades_stairs:step_in_floor_essexitegold_essexitegold +hades_fences:fence_wood_uncolored +columnia:column_crosslink_hades_core_brick_dark_green +hades_tiles:floor_essexite_essexitegold +columnia:column_mid_hades_trees_wood +hades_tiles:floor_basalt_marble +columnia:column_top_hades_core_sandstonebrick +hades_core:stone_baked +columnia:column_linkdown_hades_core_stonebrick +hades_tiles:floor_marble_essexite +hades_trees:cultivated_jungle_sapling +hades_tiles:floor_pale_wood +hades_trees:banana_sapling +hades_flowerpots:flower_pot_birch_leaves +hades_stairs:slab_obsidianbrick +columnia:column_stairsub_hades_trees_pale_bark +hades_tiles:floor_lush_jungle +columnia:column_top_hades_trees_lush_wood +columnia:column_linkcross_hades_core_cobble_sandstone +columnia:column_linkcrossdown_hades_core_cobble_sandstone +columnia:column_top_hades_trees_canvas_bark +columnia:column_linkdown_hades_trees_colwood_grey +columnia:column_linkvertical_hades_trees_colwood_orange +columnia:column_stairsubpillar_hades_trees_colwood_blue +hades_core:coalblock +columnia:column_stairsub_hades_core_sandstone_volcanic_brick +columnia:column_linkvertical_hades_trees_colwood_blue +columnia:column_linkangle_hades_core_azurite +columnia:column_linkangle_hades_core_lillite +hades_chests:chest_magenta_locked +columnia:column_stairsub_hades_core_tuff +hades_fences:fence_wood_grey +hades_stairs:slab_sandstone_volcanic +columnia:column_linkangle_down_hades_core_stonebrick_baked +columnia:column_stairsubpillar_hades_trees_colwood_green +columnia:column_stairsubpillar_hades_trees_orange_bark +columnia:column_mid_hades_core_brick_black +hades_tiles:floor_wood_jungle +columnia:column_mid_hades_core_sandstonebrick +hades_furniture:chair_white +columnia:column_linkcross_hades_trees_colwood_dark_green +columnia:column_linkvertical_hades_trees_pale_wood +hades_chests:chest_grey_locked +hades_trees:cocoa_sapling +hades_trees:colwood_violet +columnia:column_bottom_hades_core_brick_dark_green +hades_furniture:plant_pot +hades_stairs:step_in_brick_green +hades_tiles:floor_essexite_marble +hades_flowers:red +hades_walls:cobble_sandstone_volcanic +hades_furniture:table_lamp_low +gluncarp:violet +hades_tiles:floor_wood_pale +hades_flowerpots:flower_pot_cactus +columnia:column_stairsub_hades_core_chondrite +columnia:column_crosslink_hades_trees_colwood_violet +columnia:column_stairsubpillar_hades_trees_jungle_wood +hades_doors:trapdoor_steel +columnia:column_linktee_down_hades_trees_colwood_cyan +columnia:column_linkcrossdown_hades_trees_colwood_cyan +columnia:column_crosslink_hades_trees_colwood_dark_green +hades_stairs:step_in_wood +hades_torches:torch_low_wall +columnia:column_linkangle_down_hades_trees_colwood_cyan +hades_stairs:step_in_lillite +columnia:column_linkcross_hades_trees_pale_bark +hades_stairs:stair_out_apolline +hades_tiles:floor_lush_lush +columnia:column_stairsub_hades_core_brick_blue +hades_chests:chest_cyan_locked +hades_doors:door_steel_brown_e +columnia:column_mid_hades_core_brick_green +hades_chests:chest_yellow_locked +hades_trees:bark +columnia:column_stairsubpillar_hades_core_brick_magenta +hades_grass:grass_5 +columnia:column_stairsubpillar_hades_trees_colwood_magenta +columnia:column_crosslink_hades_core_azurite +hades_tiles:floor_sandstone_tuff +hades_doors:door_essexite_e +hades_flowerpots:flower_pot_orange_sapling +columnia:column_link_hades_trees_colwood_uncolored +hades_core:cinnabar_brick +hades_grass:dead_grass_1 +hades_flowerpots:flower_pot_banana_sapling +columnia:column_bottom_hades_core_obsidianbrick +hades_refruit:bud_banana +hades_trees:orange +columnia:column_linktee_hades_trees_colwood_pink +hades_tiles:floor_basalt_basalt +gluncarp:orange +columnia:column_stairsubpillar_hades_core_obsidianbrick +columnia:column_crosslink_hades_core_tuff +columnia:column_linkcross_hades_core_brick_yellow +columnia:column_mid_hades_core_obsidian +columnia:column_mid_hades_trees_cream_wood +hades_glowcrystals:glowglass +hades_core:gravel_volcanic +columnia:column_top_hades_core_brick +hades_stairs:step_in_steelblock +hades_stairs:stair_colwood_magenta +columnia:column_linkcross_hades_trees_colwood_uncolored +hades_stairs:step_out_brick_brown +hades_fences:fence_wood_dark_green +hades_doors:door_steel_orange_e +columnia:column_mid_hades_trees_lush_wood +hades_tiles:floor_sandstone_sandstone +hades_glowcrystals:glowcrystal_torch +columnia:column_bottom_hades_trees_cream_wood +hades_stairs:stair_in_colwood_green +columnia:column_linktee_hades_trees_pale_wood +hades_stairs:slab_stonebrick +columnia:column_mid_hades_core_brick_yellow +hades_core:dirt +columnia:column_stairsubpillar_hades_trees_wood +hades_doors:door_steel_e +columnia:column_linkcrossdown_hades_core_mossycobble +columnia:column_linktee_down_hades_core_stonebrick_baked +hades_trees:tree +columnia:column_linkdown_hades_core_stone_baked +hades_doors:door_steel_magenta_e +hades_trees:lush_wood +columnia:column_linkangle_down_hades_core_sandstone_volcanic +columnia:column_linktee_hades_trees_wood +hades_doors:door_wood_jungle_d +hades_furniture:table_black +columnia:column_mid_hades_trees_colwood_dark_green +hades_fences:fence_wood_brown +hades_furnaces:prism_furnace_active +columnia:column_link_hades_core_stonebrick +hades_trees:olive_sapling +columnia:column_mid_hades_trees_colwood_yellow +hades_furniture:armchair_brown +hades_stairs:step_in_cyan +hades_stairs:slab_floor_stone_stone +ignore +hades_stairs:slab_brick_red +hades_core:sandstone +hades_doors:trapdoor_cream_open +hades_core:olivine_brick +hades_doors:door_steel_bar_b +hades_furniture:table_uncolored +columnia:column_link_hades_core_mossycobble +hades_stairs:stair_out_colwood_dark_green +hades_chests:chest_black_locked +columnia:column_linkangle_hades_trees_colwood_orange +signs_lib:sign_wall_white_black +hades_chests:chest_blue_locked +hades_stairs:step_out_brick_red +columnia:column_bottom_hades_core_stonebrick_baked +hades_doors:door_steel_bar_a +hades_waterplants:waterlily_s1 +hades_core:brick_cyan +columnia:column_linkvertical_hades_core_olivine_brick +hades_stairs:stair_stonebrick_baked +hades_doors:door_steel_bar_e +hades_doors:gate_cream_wood_open +columnia:column_link_hades_core_stone_baked +columnia:column_linkcross_hades_core_marble_brick +hades_stairs:stair_red +hades_stairs:step_in_brick_white +columnia:column_linkcross_hades_trees_birch_bark +hades_doors:door_steel_pink_e +columnia:column_top_hades_trees_colwood_black +hades_stairs:stair_out_jungle_wood +columnia:column_link_hades_core_basalt +columnia:column_mid_hades_core_stone_baked +hades_stairs:stair_out_colwood_grey +columnia:column_linktee_down_hades_core_cobble_baked +columnia:column_bottom_hades_core_brick_white +columnia:column_linkangle_down_hades_core_cobble_baked +hades_tiles:floor_tuffbaked_stonebaked +columnia:column_stairsub_hades_core_cobble_sandstone +hades_stairs:step_in_sandstone +hades_trees:birch_sapling +hades_stairs:stair_out_jungle_bark +columnia:column_linkcross_hades_core_cobble_baked +columnia:column_link_hades_core_cobble_baked +columnia:column_linkangle_hades_core_sandstone_volcanic_brick +columnia:column_linkangle_down_hades_core_sandstone +columnia:column_stairsubpillar_hades_core_chondrite_brick +hades_tiles:floor_tuff_sandstone +columnia:column_linkvertical_hades_trees_jungle_bark +columnia:column_linkvertical_hades_core_sandstone_volcanic_brick +columnia:column_linkcross_hades_core_brick_cyan +columnia:column_linkcrossdown_hades_core_essexite_brick +columnia:column_stairsub_hades_core_brick_dark_grey +hades_refruit:flower_coconut +columnia:column_linkcross_hades_core_sandstone_volcanic_brick +columnia:column_top_hades_core_sandstone_volcanic_brick +columnia:column_crosslink_hades_core_sandstone_volcanic +hades_stairs:stair_floor_essexite_essexite +columnia:column_bottom_hades_trees_jungle_bark +columnia:column_linkvertical_hades_trees_colwood_brown +columnia:column_linktee_hades_core_brick_brown +hades_stairs:stair_brick_brown +columnia:column_linkangle_hades_core_cobble_sandstone_volcanic +columnia:column_linkcrossdown_hades_core_sandstonebrick +hades_trees:colwood_dark_grey +columnia:column_linktee_hades_core_marble +hades_chests:chest_dark_green_locked +columnia:column_linkvertical_hades_core_sandstone_volcanic +columnia:column_linkdown_hades_core_sandstone_volcanic_brick +hades_tiles:floor_cream_lush +hades_stairs:step_out_orange +columnia:column_linktee_down_hades_trees_colwood_violet +columnia:column_linkvertical_hades_trees_canvas_bark +columnia:column_mid_hades_core_olivine +columnia:column_crosslink_hades_core_cactus_brick +columnia:column_linkangle_down_hades_core_tuff_baked +columnia:column_linkangle_hades_core_cobble +columnia:column_linkangle_down_hades_core_cobble +columnia:column_mid_hades_core_brick_violet +gluncarp:magenta +columnia:column_mid_hades_trees_colwood_black +columnia:column_stairsub_hades_core_cobble +columnia:column_linkangle_down_hades_core_brick_dark_green +hades_doors:door_wood_pale_d +columnia:column_linkcrossdown_hades_core_cobble_baked +columnia:column_top_hades_core_cobble_baked +columnia:column_linkangle_hades_core_cobble_baked +hades_doors:door_steel_magenta_a +columnia:column_linkangle_down_hades_trees_birch_bark +columnia:column_link_hades_core_tuff_brick +hades_chests:chest_locked +columnia:column_linkangle_down_hades_core_brick_pink +columnia:column_linkangle_hades_trees_orange_bark +columnia:column_linkcrossdown_hades_core_stone +columnia:column_stairsubpillar_hades_core_stone +hades_doors:door_rusty_bar_b +columnia:column_mid_hades_core_cactus_brick +hades_stairs:stair_colwood_grey +columnia:column_top_hades_core_cactus_brick +hades_stairs:stair_in_colwood_violet +columnia:column_link_hades_core_cobble +columnia:column_linkcrossdown_hades_core_cactus_brick +columnia:column_linkangle_hades_core_cactus_brick +columnia:column_linkangle_hades_core_apolline +columnia:column_mid_hades_core_stone +columnia:column_top_hades_core_stone_baked +columnia:column_bottom_hades_core_brick_green +hades_tiles:floor_chondrite_stone +columnia:column_bottom_hades_trees_birch_bark +columnia:column_linkangle_hades_core_stone_baked +columnia:column_linkangle_down_hades_core_stone_baked +hades_doors:door_steel_darkgreen_a +columnia:column_stairsubpillar_hades_core_stone_baked +columnia:column_top_hades_core_stonebrick_baked +hades_stairs:step_essexite +columnia:column_linkvertical_hades_core_stonebrick_baked +hades_lamps:lamp_wall +hades_waterplants:waterlily_s2 +columnia:column_stairsub_hades_core_stonebrick_baked +columnia:column_bottom_hades_core_mossycobble +hades_chests:chest_pink +hades_stairs:stair_magenta +columnia:column_link_hades_trees_bark +hades_stairs:stair_out_floor_stone_stone +hades_trees:jungle_wood +columnia:column_bottom_hades_core_obsidian +columnia:column_bottom_hades_core_brick +hades_stairs:stair_in_jungle_bark +columnia:column_stairsub_hades_core_obsidian +columnia:column_crosslink_hades_core_brick_pink +signs_lib:sign_wall +columnia:column_linkcrossdown_hades_core_obsidianbrick +hades_stairs:stair_brick_violet +columnia:column_top_hades_trees_colwood_yellow +columnia:column_bottom_hades_core_stonebrick +hades_vines:willow +columnia:column_linkangle_hades_core_stonebrick +columnia:column_linkangle_down_hades_core_stonebrick +columnia:column_stairsubpillar_hades_trees_pale_wood +columnia:column_top_hades_trees_colwood_dark_green +hades_tiles:floor_sandstonevolcanic_stone +columnia:column_linkangle_hades_trees_wood +columnia:column_linkcross_hades_trees_cream_wood +hades_stairs:step_out_sandstonebrick +hades_stairs:slab_floor_jungle_jungle +hades_stairs:step_out_chondrite +hades_doors:door_obsidian_glass_e +columnia:column_bottom_hades_core_brick_yellow +hades_stairs:step_in_brown +columnia:column_linktee_down_hades_trees_jungle_wood +columnia:column_bottom_hades_core_brick_pink +columnia:column_linktee_hades_core_brick_violet +columnia:column_top_hades_trees_pale_wood +columnia:column_crosslink_hades_trees_pale_wood +hades_core:sandstonebrick +columnia:column_linkcrossdown_hades_trees_pale_wood +columnia:column_bottom_hades_core_cobble_sandstone +columnia:column_mid_hades_trees_jungle_bark +columnia:column_linktee_hades_trees_colwood_white +columnia:column_linkcross_hades_core_chondrite_brick +hades_tiles:floor_chondrite_sandstone +columnia:column_linkcrossdown_hades_trees_wood +columnia:column_linktee_hades_trees_cream_wood +columnia:column_crosslink_hades_core_basalt_brick +columnia:column_linktee_down_hades_trees_cream_wood +hades_core:orangite_brick +columnia:column_bottom_hades_trees_lush_wood +columnia:column_linkangle_hades_trees_colwood_blue +columnia:column_link_hades_trees_lush_wood +hades_stairs:step_in_colwood_magenta +columnia:column_linkangle_down_hades_core_apolline +columnia:column_linkangle_down_hades_core_olivine_brick +hades_stairs:slab_brick +columnia:column_top_hades_trees_colwood_uncolored +columnia:column_bottom_hades_trees_colwood_black +columnia:column_linkangle_hades_trees_colwood_uncolored +columnia:column_link_hades_core_cactus_brick +columnia:column_linktee_hades_trees_jungle_wood +columnia:column_linktee_down_hades_trees_colwood_uncolored +columnia:column_linkcrossdown_hades_trees_colwood_white +columnia:column_top_hades_core_mossycobble +hades_trees:pale_tree +columnia:column_linkangle_down_hades_trees_colwood_red +columnia:column_linkdown_hades_core_stone +columnia:column_linkvertical_hades_trees_colwood_black +columnia:column_linkangle_hades_trees_colwood_black +hades_core:stone_with_mese +hades_windows:window_wood_yellow +columnia:column_linkcrossdown_hades_trees_colwood_uncolored +hades_stairs:slab_cobble +columnia:column_mid_hades_trees_colwood_blue +hades_core:stone_with_iron +hades_stairs:slab_cinnabar +hades_flowerpots:flower_pot_orange +hades_doors:door_wood_jungle_e +columnia:column_linkcross_hades_trees_pale_wood +hades_stairs:slab_colwood_orange +hades_flowerpots:flower_pot_jungle_leaves +hades_core:brick_violet +hades_doors:door_glass_d +columnia:column_crosslink_hades_trees_colwood_brown +columnia:column_link_hades_trees_colwood_brown +columnia:column_top_hades_core_brick_green +hades_stairs:stair_out_magenta +hades_walls:cobble_sandstone +columnia:column_linktee_hades_core_sandstone_volcanic +hades_doors:door_steel_white_a +hades_furnaces:furnace_active +columnia:column_stairsubpillar_hades_trees_colwood_brown +columnia:column_top_hades_trees_colwood_cyan +columnia:column_linkvertical_hades_core_stone_baked +hades_food:tomato_potato_salad +hades_doors:hidden_center +columnia:column_mid_hades_core_obsidianbrick +columnia:column_linkangle_hades_trees_colwood_cyan +hades_tiles:floor_stone_stone +hades_doors:door_dungeon1_e +columnia:column_crosslink_hades_core_basalt +columnia:column_linkvertical_hades_core_stonebrick +columnia:column_linkcrossdown_hades_trees_colwood_dark_green +columnia:column_stairsub_hades_trees_colwood_dark_green +hades_stairs:stair_in_floor_jungle_jungle +hades_stairs:step_in_colwood_violet +hades_tiles:floor_marble_basalt +hades_stairs:stair_in_colwood_white +hades_stairs:stair_floor_marble_marble +columnia:column_linkangle_hades_trees_colwood_dark_grey +columnia:column_linkangle_down_hades_trees_colwood_dark_grey +columnia:column_bottom_hades_core_sandstonebrick +hades_trees:canvas_tree +columnia:column_linktee_hades_trees_colwood_dark_grey +hades_doors:door_wood_lush_e +hades_stairs:slab_floor_stonebaked_stonebaked +columnia:column_mid_hades_trees_jungle_wood +hades_doors:door_chondrite_c +columnia:column_linkcross_hades_core_mossycobble +hades_tiles:floor_stonebaked_stone +columnia:column_linkangle_down_hades_core_cactus_brick +columnia:column_linktee_hades_trees_colwood_grey +columnia:column_linkcrossdown_hades_trees_colwood_green +hades_tiles:floor_pale_jungle +columnia:column_bottom_hades_trees_colwood_green +columnia:column_linkcross_hades_core_cactus_brick +columnia:column_stairsubpillar_hades_core_tuff +columnia:column_linktee_hades_core_stonebrick +columnia:column_bottom_hades_trees_colwood_blue +columnia:column_stairsub_hades_trees_colwood_green +hades_furniture:table_lamp_max +columnia:column_top_hades_trees_colwood_magenta +columnia:column_linktee_down_hades_trees_colwood_magenta +columnia:column_linkcross_hades_trees_colwood_magenta +columnia:column_stairsubpillar_hades_core_cactus_brick +columnia:column_link_hades_trees_colwood_grey +hades_doors:door_steel_bar_c +columnia:column_linktee_hades_core_sandstone +columnia:column_linkdown_hades_trees_colwood_magenta +hades_flowerpots:flower_pot_canvas_sapling +hades_tiles:floor_stonebaked_tuffbaked +columnia:column_top_hades_core_basalt +columnia:column_mid_hades_trees_colwood_orange +columnia:column_linktee_down_hades_trees_colwood_green +hades_stairs:slab_floor_essexite_essexite +columnia:column_linkcrossdown_hades_trees_colwood_orange +columnia:column_linkvertical_hades_trees_colwood_magenta +columnia:column_linktee_hades_trees_colwood_orange +columnia:column_linktee_hades_trees_colwood_red +columnia:column_top_hades_trees_colwood_pink +columnia:column_linkdown_hades_trees_colwood_uncolored +hades_stairs:stair_out_obsidianbrick +columnia:column_linkangle_down_hades_trees_colwood_dark_green +columnia:column_linkangle_hades_trees_colwood_pink +columnia:column_top_hades_trees_colwood_red +hades_stairs:slab_double_floorblock_essexite_gold_block +columnia:column_linkcross_hades_trees_colwood_red +signs_lib:sign_wall_red +hades_trees:canvas_bark +columnia:column_top_hades_core_essexite_brick +columnia:column_mid_hades_trees_colwood_violet +columnia:column_top_hades_trees_colwood_violet +columnia:column_linkdown_hades_trees_colwood_violet +columnia:column_linkcross_hades_trees_colwood_violet +hades_furniture:rusty_bars +columnia:column_top_hades_core_cobble +columnia:column_linkcrossdown_hades_trees_colwood_blue +columnia:column_top_hades_trees_colwood_white +columnia:column_link_hades_trees_colwood_yellow +hades_doors:door_steel_cyan_a +columnia:column_stairsub_hades_core_sandstonebrick +hades_tiles:floor_stone_sandstone +columnia:column_crosslink_hades_trees_colwood_uncolored +columnia:column_stairsub_hades_trees_colwood_white +hades_tiles:floor_jungle_cream +hades_doors:door_dungeon1_b +columnia:column_crosslink_hades_trees_colwood_magenta +columnia:column_mid_hades_core_stonebrick +hades_stairs:stair_out_yellow +hades_core:tuff_baked +columnia:column_linkdown_hades_core_tuff_baked_brick +hades_stairs:stair_out_colwood_pink +columnia:column_linktee_hades_core_lillite +columnia:column_linkcross_hades_trees_colwood_pink +hades_stairs:step_in_pale_wood +columnia:column_linkdown_hades_trees_wood +columnia:column_linkangle_hades_core_brick_pink +hades_stairs:stair_sandstone_volcanic_brick +columnia:column_stairsubpillar_hades_core_sandstonebrick +columnia:column_linkangle_hades_core_brick_violet +hades_stairs:step_out_floor_tuff_tuff +columnia:column_link_hades_trees_jungle_bark +hades_stairs:stair_in_brick +hades_core:cobble_sandstone_volcanic +hades_doors:door_wood_pale_e +columnia:column_linkangle_down_hades_trees_colwood_uncolored +columnia:column_stairsub_hades_trees_jungle_bark +columnia:column_linkcrossdown_hades_core_sandstone_volcanic +columnia:column_crosslink_hades_core_stonebrick +hades_doors:door_stone_a +columnia:column_linktee_hades_trees_pale_bark +columnia:column_linkangle_hades_trees_colwood_violet +columnia:column_mid_hades_core_brick_brown +columnia:column_linktee_hades_trees_colwood_blue +columnia:column_linkvertical_hades_core_cobble_sandstone +columnia:column_linktee_down_hades_core_cobble_sandstone_volcanic +columnia:column_linkdown_hades_core_essexite_brick +hades_doors:door_wood_pale_a +columnia:column_link_hades_trees_colwood_blue +hades_stairs:step_out_brick_dark_grey +columnia:column_mid_hades_core_sandstone_volcanic +columnia:column_top_hades_trees_orange_bark +columnia:column_linkcross_hades_core_brick_violet +hades_stairs:step_in_magenta +columnia:column_crosslink_hades_trees_orange_bark +columnia:column_link_hades_trees_orange_bark +columnia:column_link_hades_core_marble +columnia:column_mid_hades_core_sandstone +columnia:column_linkcross_hades_trees_orange_bark +hades_grass:dead_grass_3 +hades_tiles:floor_sandstone_stone +columnia:column_linktee_hades_trees_orange_bark +hades_stairs:step_in_colwood_pink +columnia:column_linktee_hades_trees_colwood_green +columnia:column_bottom_hades_core_brick_brown +hades_core:orangite +columnia:column_link_hades_trees_jungle_wood +columnia:column_linkangle_hades_trees_canvas_bark +columnia:column_linkangle_down_hades_trees_canvas_bark +columnia:column_linkangle_hades_core_brick_blue +hades_stairs:stair_out_sandstone +columnia:column_stairsubpillar_hades_core_brick_grey +columnia:column_linkangle_down_hades_core_brick_black +columnia:column_linktee_down_hades_core_brick_brown +columnia:column_mid_hades_trees_birch_bark +columnia:column_stairsubpillar_hades_trees_canvas_bark +hades_windows:window_wood_darkgreen +columnia:column_link_hades_trees_colwood_cyan +columnia:column_stairsubpillar_hades_trees_cream_wood +columnia:column_crosslink_hades_core_brick +hades_core:floor_essexite_gold +hades_doors:door_steel_grey_b +columnia:column_linkangle_down_hades_core_brick +columnia:column_linktee_down_hades_core_cactus_brick +columnia:column_linktee_down_hades_core_brick +hades_trees:colwood_black +hades_core:essexite_block +hades_stairs:stair_in_floor_lush_lush +hades_trees:pale_wood +columnia:column_linkcross_hades_core_brick_white +columnia:column_linkcrossdown_hades_core_brick_black +hades_cloth:yellow +hades_stairs:step_colwood_cyan +columnia:column_stairsub_hades_trees_colwood_uncolored +hades_core:bookshelf +columnia:column_stairsubpillar_hades_trees_colwood_pink +hades_tiles:floor_essexitegold_essexite +hades_doors:door_steel_darkgrey_c +columnia:column_mid_hades_core_brick_orange +hades_stairs:slab_pale_wood +hades_flowerpots:flower_pot_cocoa_sapling +columnia:column_bottom_hades_core_brick_cyan +columnia:column_linkdown_hades_core_brick_cyan +hades_furniture:chair_black +hades_tiles:floor_chondrite_tuff +columnia:column_stairsub_hades_trees_pale_wood +columnia:column_linkangle_hades_trees_lush_wood +hades_trees:olive +hades_doors:door_steel_orange_b +hades_doors:trapdoor_jungle_open +columnia:column_top_columnia_rusty_block +columnia:column_linktee_down_hades_trees_jungle_bark +hades_doors:door_stone_b +columnia:column_linkcross_hades_core_stone +columnia:column_crosslink_hades_core_brick_cyan +columnia:column_linkangle_hades_core_brick_dark_green +columnia:column_stairsub_hades_core_brick_dark_green +columnia:column_stairsubpillar_hades_trees_jungle_bark +hades_stairs:slab_floor_chondrite_chondrite +columnia:column_mid_hades_trees_colwood_pink +columnia:column_linkvertical_hades_core_sandstonebrick +hades_core:mossytuff +columnia:column_linktee_down_hades_trees_colwood_pink +columnia:column_linkangle_hades_core_brick_yellow +columnia:column_linkangle_down_hades_core_brick_dark_grey +hades_tiles:floor_wood_cream +columnia:column_mid_hades_core_brick_cyan +columnia:column_linkangle_down_hades_core_brick_green +hades_trees:colwood_orange +columnia:column_linkcross_hades_core_brick_blue +hades_doors:door_steel_black_a +columnia:column_crosslink_hades_core_tuff_brick +columnia:column_linktee_hades_core_brick_blue +columnia:column_linkcross_hades_core_brick_grey +hades_stairs:step_in_grey +columnia:column_linkdown_hades_core_cobble +columnia:column_mid_hades_core_brick_magenta +hades_stairs:stair_brick_green +columnia:column_linktee_down_hades_trees_bark +columnia:column_top_hades_core_cobble_sandstone_volcanic +columnia:column_linktee_hades_core_brick_magenta +hades_chests:chest_white +columnia:column_linkdown_hades_core_obsidianbrick +columnia:column_bottom_hades_core_cinnabar +hades_stairs:stair_in_brick_grey +columnia:column_linkvertical_hades_trees_bark +hades_tiles:floor_stonebaked_chondrite +columnia:column_linktee_down_hades_core_brick_black +columnia:column_stairsub_hades_core_brick_orange +columnia:column_stairsubpillar_hades_core_cobble_sandstone_volcanic +columnia:column_link_hades_core_brick_pink +hades_stairs:step_in_brick_dark_green +columnia:column_linkcrossdown_hades_core_sandstone_volcanic_brick +columnia:column_linktee_down_hades_core_sandstonebrick +hades_tiles:floor_essexite_essexite +columnia:column_linkvertical_hades_core_brick_black +hades_doors:door_dungeon1_d +columnia:column_linkdown_hades_core_brick_violet +hades_stairs:stair_out_copperblock +columnia:column_top_hades_core_chondrite_brick +columnia:column_linktee_hades_core_stone_baked +columnia:column_top_hades_core_brick_black +columnia:column_stairsubpillar_hades_core_olivine +columnia:column_linktee_hades_core_brick +columnia:column_linkdown_hades_core_brick_white +hades_flowerpots:flower_pot +columnia:column_crosslink_hades_core_brick_yellow +columnia:column_mid_hades_core_marble_brick +columnia:column_top_hades_core_marble_brick +columnia:column_crosslink_hades_core_marble_brick +hades_stairs:step_sandstone_volcanic +hades_stairs:step_brick_black +hades_tiles:floor_jungle_wood +columnia:column_linkcrossdown_hades_core_marble_brick +hades_stairs:stair_in_brick_white +columnia:column_linkangle_hades_core_marble_brick +columnia:column_linkangle_down_hades_core_marble_brick +columnia:column_linkvertical_hades_core_mossycobble +columnia:column_stairsub_hades_core_marble_brick +columnia:column_linkcross_hades_trees_colwood_brown +hades_waterplants:waterlily_s3 +columnia:column_linktee_hades_core_chondrite +columnia:column_stairsubpillar_hades_core_stonebrick +columnia:column_bottom_hades_core_brick_red +columnia:column_linkcross_hades_trees_colwood_cyan +hades_stairs:step_in_cobble +columnia:column_bottom_hades_core_marble_brick +columnia:column_linkcross_hades_core_sandstone_volcanic +columnia:column_top_hades_core_obsidianbrick +columnia:column_stairsub_hades_core_brick_black +columnia:column_linkvertical_hades_trees_colwood_cyan +columnia:column_mid_hades_core_basalt_brick +columnia:column_linkdown_hades_core_basalt_brick +columnia:column_linkcross_hades_core_basalt_brick +columnia:column_linkcrossdown_hades_core_brick_cyan +columnia:column_linktee_hades_core_basalt_brick +columnia:column_top_hades_core_brick_blue +columnia:column_stairsub_hades_core_olivine +hades_stairs:stair_out_brick_black +columnia:column_linkcrossdown_hades_trees_colwood_violet +hades_chests:chest_grey +columnia:column_bottom_hades_core_tuff_brick +columnia:column_top_hades_core_brick_grey +columnia:column_linktee_hades_core_obsidianbrick +columnia:column_linkcross_hades_core_tuff_baked +columnia:column_top_hades_core_brick_white +columnia:column_linktee_down_hades_core_tuff_baked +columnia:column_mid_hades_core_tuff_baked_brick +hades_trees:jungle_leaves +hades_stairs:slab_colwood_blue +hades_farming:seed_wheat +columnia:column_linkangle_down_hades_core_essexite +columnia:column_mid_hades_core_essexite_brick +hades_beds:bed_bottom +columnia:column_stairsubpillar_hades_core_essexite_brick +columnia:column_linkdown_hades_core_basalt +columnia:column_linkangle_hades_trees_colwood_brown diff --git a/mods/xcompat/test/nodelist/mineclonia.txt b/mods/xcompat/test/nodelist/mineclonia.txt new file mode 100644 index 00000000..1ab4d6da --- /dev/null +++ b/mods/xcompat/test/nodelist/mineclonia.txt @@ -0,0 +1,3406 @@ +mcl_walls:brick_5 +mcl_walls:brick_6 +pipeworks:storage_tank_6 +mesecons:wire_10111010_on +mesecons:wire_10111010_off +mcl_walls:brick_8 +mesecons:wire_01110001_on +mesecons:wire_01110001_off +mcl_walls:brick_10 +mcl_stairs:slab_jungle_bark +mcl_stairs:slab_jungle_bark_top +mcl_walls:brick_12 +mesecons:wire_11111010_on +mesecons:wire_11111010_off +mesecons:wire_11110001_on +mesecons:wire_11110001_off +mcl_walls:brick_15 +mcl_walls:brick_16 +pipeworks:expansion_tank_8 +mcl_walls:brick_21 +mesecons:wire_01100110_on +mesecons:wire_01100110_off +mesecons:wire_10011001_on +mesecons:wire_10011001_off +mcl_walls:sandstone_1 +mcl_walls:sandstone_2 +mcl_walls:sandstone_3 +pipeworks:expansion_tank_9 +mesecons:wire_11100110_on +mesecons:wire_11100110_off +mesecons_pressureplates:pressure_plate_jungle_on +mesecons:wire_11011001_on +mesecons:wire_11011001_off +pipeworks:storage_tank_9 +mesecons_button:button_jungle_off +mcl_ocean:tube_coral +mcl_stairs:slab_deepslate_cobbled_top +mcl_stairs:slab_deepslate_cobbled_double +mesecons:wire_01110110_on +mesecons:wire_01110110_off +mesecons:wire_10111001_on +mesecons:wire_10111001_off +mcl_ocean:dead_tube_coral_fan +mcl_walls:sandstone_13 +mcl_deepslate:deepslatecobbledwall_0 +mcl_walls:sandstone_14 +mcl_deepslate:deepslatecobbledwall_1 +mesecons:wire_11110110_on +mesecons:wire_11110110_off +mcl_walls:sandstone_16 +mesecons:wire_11111001_on +mesecons:wire_11111001_off +mcl_ocean:dead_brain_coral +mcl_walls:redsandstone_0 +mcl_stairs:slab_deepslate_tiles_cracked_top +mcl_walls:redsandstone_1 +mesecons:wire_11101110_on +mesecons:wire_11101110_off +mesecons:wire_01010101_on +mcl_ocean:bubble_coral_block +homedecor:painting_15 +mcl_ocean:dead_bubble_coral_block +homedecor:banister_wood_diagonal_right_grey +mesecons:wire_11111110_on +mesecons:wire_11111110_off +mcl_ocean:dead_bubble_coral +homedecor:banister_wood_diagonal_right_red +homedecor:banister_wood_diagonal_right_vermilion +mcl_ocean:bubble_coral_fan +homedecor:banister_wood_diagonal_right_orange +mcl_ocean:dead_bubble_coral_fan +homedecor:banister_wood_diagonal_right_amber +mesecons:wire_00010001_on +mcl_ocean:fire_coral_block +homedecor:banister_wood_diagonal_right_lime +mcl_ocean:dead_fire_coral_block +homedecor:banister_wood_diagonal_right_chartreuse +mcl_trees:stripped_spruce +homedecor:banister_wood_diagonal_right_harlequin +mcl_ocean:fire_coral +homedecor:banister_wood_diagonal_right_green +mcl_ocean:dead_fire_coral +mcl_trees:wood_spruce +homedecor:banister_wood_diagonal_right_spring +mcl_ocean:fire_coral_fan +mcl_fences:red_nether_brick_fence +mcl_trees:bark_stripped_spruce +mcl_trees:bark_spruce +mcl_monster_eggs:monster_egg_stonebrickcarved +homedecor:banister_wood_diagonal_right_cerulean +mcl_ocean:horn_coral_block +homedecor:banister_wood_diagonal_right_azure +mcl_fences:nether_brick_fence_gate +mcl_fences:nether_brick_fence_gate_open +mcl_ocean:horn_coral +mcl_ocean:dead_horn_coral +mcl_ocean:horn_coral_fan +mcl_ocean:dead_horn_coral_fan +mcl_trees:leaves_spruce +air +mcl_ocean:seagrass_dirt +mcl_ocean:seagrass_sand +mcl_ocean:seagrass_redsand +mcl_ocean:seagrass_gravel +mesecons_pressureplates:pressure_plate_crimson_off +mesecons_pressureplates:pressure_plate_crimson_on +mesecons_button:button_crimson_off +mcl_walls:cobble +mcl_walls:mossycobble +mcl_walls:andesite +mcl_walls:granite +mesecons_button:button_crimson_on +mcl_walls:diorite +mcl_walls:brick +mcl_walls:sandstone +mcl_walls:redsandstone +mcl_walls:stonebrick +mcl_walls:stonebrickmossy +mcl_walls:prismarine +mcl_walls:endbricks +mcl_walls:netherbrick +mcl_walls:rednetherbrick +mcl_walls:mudbrick +mcl_walls:cobble_0 +mcl_walls:cobble_1 +mcl_walls:cobble_2 +mcl_walls:cobble_3 +mcl_walls:cobble_4 +mcl_walls:cobble_5 +mcl_walls:cobble_6 +mcl_walls:cobble_7 +mcl_walls:cobble_8 +mcl_walls:cobble_9 +mcl_walls:cobble_10 +mcl_walls:cobble_11 +mcl_walls:cobble_12 +mcl_walls:cobble_13 +pipeworks:accelerator_tube_9 +mcl_walls:cobble_14 +pipeworks:tube_1 +mcl_walls:cobble_15 +mcl_walls:cobble_16 +mcl_walls:cobble_21 +mcl_walls:mossycobble_0 +mcl_walls:mossycobble_1 +mcl_walls:mossycobble_2 +mcl_walls:mossycobble_3 +mcl_walls:mossycobble_4 +mcl_walls:mossycobble_5 +pipeworks:mese_sand_tube_2 +mcl_walls:mossycobble_6 +mcl_flowerpots:flower_pot_warped_fungus +mcl_walls:mossycobble_7 +mcl_walls:mossycobble_8 +pipeworks:mese_sand_tube_4 +mcl_walls:mossycobble_9 +mcl_walls:mossycobble_10 +homedecor:microwave_oven_active +mcl_walls:mossycobble_11 +pipeworks:mese_sand_tube_6 +mcl_walls:mossycobble_12 +mcl_walls:mossycobble_13 +pipeworks:one_way_tube +mcl_walls:mossycobble_14 +pipeworks:mese_sand_tube_8 +mcl_walls:mossycobble_15 +mcl_walls:mossycobble_16 +mcl_walls:mossycobble_21 +pipeworks:mese_sand_tube_10 +homedecor:microwave_oven_active_locked +pipeworks:tube_2 +mcl_walls:andesite_0 +mcl_walls:andesite_1 +pipeworks:tube_3 +mcl_walls:andesite_2 +mcl_walls:andesite_3 +mcl_walls:andesite_4 +mcl_stairs:stair_lapisblock_inner +mcl_walls:andesite_5 +mcl_walls:andesite_6 +pipeworks:tube_5 +mcl_walls:andesite_7 +mcl_walls:andesite_8 +mcl_stairs:slab_lapisblock_top +mcl_walls:andesite_9 +mcl_walls:andesite_10 +mcl_walls:andesite_11 +pipeworks:tube_7 +mcl_walls:andesite_12 +pipeworks:crossing_tube_2 +mcl_walls:andesite_13 +mcl_walls:andesite_14 +mcl_walls:andesite_15 +pipeworks:crossing_tube_4 +pipeworks:tube_9 +pipeworks:crossing_tube_5 +pipeworks:crossing_tube_6 +pipeworks:crossing_tube_7 +homedecor:kitchen_cabinet_colorable_locked +pipeworks:crossing_tube_8 +mcl_signs:wall_sign_cherry_blossom +pipeworks:crossing_tube_9 +homedecor:kitchen_cabinet_colored_locked +pipeworks:crossing_tube_10 +pipeworks:crossing_tube_compatibility +homedecor:kitchen_cabinet_colorable_with_drawers_locked +mesecons_pressureplates:pressure_plate_cherry_blossom_off +mesecons_pressureplates:pressure_plate_cherry_blossom_on +mesecons_button:button_cherry_blossom_off +homedecor:kitchen_cabinet_colored_granite +homedecor:kitchen_cabinet_colorable_granite_locked +mesecons_button:button_cherry_blossom_on +mcl_flowerpots:flower_pot_sapling_cherry_blossom +homedecor:kitchen_cabinet_colored_with_drawers_granite +mcl_heads:zombie_ceiling +homedecor:kitchen_cabinet_colorable_with_drawers_granite +mcl_heads:zombie_wall +homedecor:kitchen_cabinet_colored_with_drawers_granite_locked +mcl_heads:creeper_ceiling +mcl_heads:creeper_wall +homedecor:kitchen_cabinet_colorable_marble_locked +homedecor:kitchen_cabinet_colorable_marble +homedecor:banister_wood_diagonal_right_sapphire +homedecor:banister_wood_diagonal_right_blue +mcl_heads:steve_wall +homedecor:banister_wood_diagonal_right_violet +homedecor:kitchen_cabinet_colored_with_drawers_marble +homedecor:banister_wood_diagonal_right_mulberry +homedecor:banister_wood_diagonal_right_magenta +homedecor:banister_wood_diagonal_right_fuchsia +homedecor:kitchen_cabinet_colorable_with_drawers_marble_locked +homedecor:banister_wood_diagonal_right_rose +mcl_bamboo:bamboo_mosaic +homedecor:banister_wood_diagonal_right_crimson +homedecor:banister_white_dark_diagonal_right +homedecor:banister_brass_diagonal_right +mcl_bamboo:scaffolding_horizontal +homedecor:banister_wrought_iron_diagonal_right +mcl_flowerpots:flower_pot_bamboo +mcl_stairs:slab_bamboo +mcl_stairs:slab_bamboo_top +mcl_stairs:slab_bamboo_double +mcl_trees:tree_bamboo +mcl_trees:wood_bamboo +mcl_stairs:slab_bamboo_bark +mcl_stairs:slab_bamboo_bark_top +mcl_stairs:slab_bamboo_bark_double +mcl_flowerpots:flower_pot_allium +mcl_flowerpots:flower_pot_azure_bluet +mcl_flowerpots:flower_pot_blue_orchid +mcl_flowerpots:flower_pot_dandelion +mcl_flowerpots:flower_pot_fern +mcl_flowerpots:flower_pot_oxeye_daisy +mcl_trees:stripped_bamboo +mcl_flowerpots:flower_pot_tulip_orange +mcl_flowerpots:flower_pot_tulip_pink +mcl_flowerpots:flower_pot_tulip_red +mcl_flowerpots:flower_pot_tulip_white +mcl_signs:wall_sign_bamboo +mcl_flowers:allium +mcl_signs:standing_sign_bamboo +mcl_flowers:blue_orchid +mcl_trees:bark_stripped_bamboo +mcl_trees:bark_bamboo +mcl_flowers:double_fern_top +mcl_flowers:fern +mcl_flowers:lilac +mcl_flowers:lilac_top +mcl_flowers:oxeye_daisy +mcl_flowers:peony +mesecons_pressureplates:pressure_plate_bamboo_off +mcl_flowers:poppy +mesecons_pressureplates:pressure_plate_bamboo_on +mcl_flowers:rose_bush_top +mcl_flowers:sunflower +mcl_flowers:sunflower_top +mesecons_button:button_bamboo_off +mcl_bells:bell +mcl_flowers:double_grass_top +mcl_flowers:tulip_orange +mesecons_button:button_bamboo_on +mcl_flowers:tulip_red +mcl_flowers:tulip_white +mcl_flowers:waterlily +mcl_heads:creeper +mcl_heads:skeleton +mcl_fences:bamboo_fence +mcl_heads:wither_skeleton +mcl_fences:bamboo_fence_gate +mcl_fences:bamboo_fence_gate_open +mcl_core:ladder +mcl_core:lava_source +mcl_core:lava_flowing +mcl_core:water_source +mcl_core:water_flowing +mclx_core:river_water_source +mclx_core:river_water_flowing +mcl_maps:filled_map_mcl_skins_base_1B47A57FF_male_crea +mcl_maps:filled_map_mcl_skins_base_18D471DFF_female_crea +mcl_maps:filled_map_mcl_skins_base_18D471DFF_male_crea +mcl_maps:filled_map_character_male_crea +mcl_doors:door_bamboo_b_1 +mcl_nether:nether_wart_1 +mcl_nether:nether_wart_2 +mcl_nether:nether_wart +mcl_amethyst:amethyst_cluster +mcl_amethyst:budding_amethyst_block +mcl_maps:filled_map_mcl_skins_base_1B47A57FF_female_surv +mcl_doors:door_bamboo_b_2 +mcl_maps:filled_map_mcl_skins_base_1B47A57FF_male_surv +mcl_doors:door_bamboo_t_2 +mcl_maps:filled_map_mcl_skins_base_18D471DFF_female_surv +mcl_doors:trapdoor_bamboo +mcl_maps:filled_map_mcl_skins_base_18D471DFF_male_surv +mcl_maps:filled_map_character_male_surv +mcl_maps:filled_map_mcl_skins_character_1_female_surv +mcl_comparators:comparator_on_sub +mcl_comparators:comparator_off_sub +mcl_comparators:comparator_on_comp +mcl_comparators:comparator_off_comp +mesecons_delayer:delayer_off_1 +mcl_doors:trapdoor_bamboo_open +mesecons_delayer:delayer_off_3 +mesecons_delayer:delayer_off_4 +mesecons_delayer:delayer_on_1 +mesecons_delayer:delayer_on_2 +mcl_stairs:stair_bamboo +mcl_mushrooms:brown_mushroom_block_cap_101110 +mcl_amethyst:tinted_glass +mcl_stairs:stair_bamboo_inner +mesecons_torch:mesecon_torch_on_wall +mcl_mushrooms:brown_mushroom_block_cap_110000 +mcl_ocean:sea_pickle_1_dead_brain_coral_block +mcl_mushrooms:brown_mushroom_block_cap_110001 +mcl_ocean:sea_pickle_3_dead_brain_coral_block +mcl_mushrooms:brown_mushroom_block_cap_110010 +mcl_amethyst:medium_amethyst_bud +mcl_mushrooms:brown_mushroom_block_cap_110011 +mcl_stairs:stair_bamboo_bark_outer +mcl_amethyst:large_amethyst_bud +mcl_chests:dark_green_shulker_box_small +mcl_mushrooms:brown_mushroom_block_cap_110101 +mcl_chests:lightblue_shulker_box_small +mcl_mushrooms:brown_mushroom_block_cap_110110 +mcl_chests:orange_shulker_box_small +mcl_mushrooms:brown_mushroom_block_cap_110111 +mcl_chests:pink_shulker_box_small +mcl_mushrooms:brown_mushroom_block_cap_111000 +mcl_chests:red_shulker_box_small +mcl_mushrooms:brown_mushroom_block_cap_111001 +mcl_chests:white_shulker_box_small +mcl_mushrooms:brown_mushroom_block_cap_111010 +mcl_core:snow +mcl_mushrooms:brown_mushroom_block_cap_111011 +mcl_core:snow_3 +mcl_core:snow_4 +mesecons:wire_11010101_on +mesecons:wire_11010101_off +mcl_core:snow_7 +mcl_mushrooms:brown_mushroom_block_cap_111110 +mcl_torches:torch +mcl_torches:torch_wall +mcl_farming:wheat +mcl_farming:wheat_2 +mcl_farming:wheat_3 +mcl_farming:wheat_4 +mcl_farming:wheat_5 +mcl_farming:wheat_6 +mcl_farming:wheat_7 +mcl_deepslate:deepslate_bricks_cracked +pipeworks:tag_tube_110100 +homedecor:wood_table_large_square +pipeworks:tag_tube_110101 +mcl_stairs:slab_andesite_smooth +mcl_stairs:slab_andesite_smooth_top +mcl_stairs:slab_andesite_smooth_double +mesecons:wire_11110101_on +mcl_amethyst:small_amethyst_bud +pipeworks:tag_tube_110111 +pipeworks:tag_tube_111000 +mcl_stairs:slab_deepslate_bricks +mcl_stairs:slab_deepslate_bricks_top +mcl_stairs:slab_deepslate_bricks_double +mcl_stairs:stair_granite_smooth +homedecor:banister_wood_diagonal_left_grey +mcl_stairs:stair_granite_smooth_outer +mcl_stairs:stair_granite_smooth_inner +mcl_deepslate:deepslatebrickswall +mcl_copper:block_raw +homedecor:banister_wood_diagonal_left_red +mcl_stairs:slab_granite_smooth +mcl_stairs:slab_granite_smooth_top +mcl_stairs:slab_granite_smooth_double +mesecons:wire_11111101_on +mesecons:wire_11111101_off +homedecor:banister_wood_diagonal_left_vermilion +mcl_deepslate:deepslatebrickswall_4 +mcl_deepslate:deepslatebrickswall_5 +mcl_deepslate:deepslatebrickswall_6 +mcl_deepslate:deepslatebrickswall_7 +mcl_stairs:stair_diorite_smooth +mesecons:wire_00110011_on +mcl_stairs:stair_diorite_smooth_outer +mcl_stairs:stair_diorite_smooth_inner +mcl_deepslate:deepslatebrickswall_10 +homedecor:banister_wood_horizontal_yellow +mcl_deepslate:deepslatebrickswall_11 +homedecor:banister_wood_diagonal_left_yellow +mcl_deepslate:deepslatebrickswall_12 +mcl_stairs:slab_diorite_smooth +mcl_stairs:slab_diorite_smooth_top +mcl_stairs:slab_diorite_smooth_double +mesecons:wire_10110011_off +homedecor:banister_wood_diagonal_left_lime +mcl_deepslate:deepslatebrickswall_15 +building_blocks:Tar +mcl_deepslate:deepslatebrickswall_16 +homedecor:banister_wood_horizontal_chartreuse +mcl_deepslate:deepslatebrickswall_21 +homedecor:banister_wood_diagonal_left_chartreuse +mcl_stairs:stair_stonebrickmossy +mesecons:wire_01110011_off +mcl_stairs:stair_stonebrickmossy_outer +mcl_stairs:stair_stonebrickmossy_inner +building_blocks:fakegrass +homedecor:banister_wood_horizontal_green +building_blocks:hardwood +homedecor:simple_bench +mcl_stairs:slab_stonebrickmossy +mcl_stairs:slab_stonebrickmossy_top +mcl_stairs:slab_stonebrickmossy_double +mesecons:wire_11110011_off +homedecor:kitchen_chair_wood +homedecor:office_chair_basic +homedecor:office_chair_upscale +homedecor:banister_wood_horizontal_spring +homedecor:banister_wood_diagonal_left_spring +mesecons:wire_10111011_on +mesecons:wire_10111011_off +pipeworks:spigot_pouring +mcl_villages:crop_flower_2 +mcl_wool:white +mcl_stairs:stair_copper_cut +pipeworks:fountainhead +pipeworks:fountainhead_pouring +mcl_stairs:stair_copper_cut_outer +mcl_stairs:stair_copper_cut_inner +homedecor:banister_wood_diagonal_left_cyan +mesecons:wire_11111011_on +mesecons:wire_11111011_off +mcl_wool:yellow_carpet +homedecor:banister_wood_horizontal_cerulean +mcl_stairs:slab_copper_cut +mcl_stairs:slab_copper_cut_top +mcl_stairs:slab_copper_cut_double +building_blocks:woodglass +homedecor:banister_wood_horizontal_azure +homedecor:banister_wood_diagonal_left_azure +mesecons:wire_01110111_on +mesecons:wire_01110111_off +homedecor:banister_wood_horizontal_sapphire +mcl_stairs:stair_copper_exposed_cut +homedecor:banister_wood_diagonal_left_sapphire +mcl_stairs:stair_copper_exposed_cut_outer +mcl_stairs:stair_copper_exposed_cut_inner +homedecor:banister_wood_horizontal_blue +mcl_lanterns:lantern_ceiling +mesecons:wire_11110111_on +mesecons:wire_11110111_off +mcl_stairs:slab_copper_exposed_cut +mcl_stairs:slab_copper_exposed_cut_top +mcl_stairs:slab_copper_exposed_cut_double +homedecor:banister_wood_diagonal_left_indigo +mcl_lanterns:soul_lantern_ceiling +mcl_wool:magenta +mesecons:wire_11111111_on +mesecons:wire_11111111_off +building_blocks:BWtile +mcl_wool:magenta_carpet +homedecor:banister_wood_horizontal_mulberry +building_blocks:Fireplace +mcl_wool:blue +homedecor:banister_wood_horizontal_magenta +homedecor:banister_wood_diagonal_left_magenta +mcl_flowerpots:flower_pot_deadbush +mesecons_walllever:wall_lever_off +mcl_wool:green +mcl_core:light_0 +mcl_wool:green_carpet +mesecons_walllever:wall_lever_on +mcl_core:light_1 +mcl_wool:brown +mcl_core:light_2 +mcl_core:light_3 +mcl_fletching_table:fletching_table +mcl_core:light_4 +mcl_core:light_5 +mcl_core:light_6 +mcl_core:light_7 +mcl_core:light_8 +mesecons_solarpanel:solar_panel_on +mcl_core:light_9 +mcl_cartography_table:cartography_table +mcl_core:light_10 +mesecons_solarpanel:solar_panel_inverted_off +mcl_core:light_11 +mcl_core:light_12 +mcl_core:light_13 +mcl_core:light_14 +homedecor:shingle_side_glass +homedecor:skylight +homedecor:shingle_outer_corner_terracotta +homedecor:shingle_inner_corner_terracotta +homedecor:shingle_side_terracotta +homedecor:shingle_inner_corner_wood +homedecor:shingle_outer_corner_wood +homedecor:shingle_side_wood +homedecor:fence_picket_white +mcl_chests:yellow_shulker_box +homedecor:fence_privacy_corner +mcl_chests:white_shulker_box +mcl_chests:dark_grey_shulker_box +homedecor:fence_privacy +mcl_chests:blue_shulker_box +pipeworks:filter +pipeworks:mese_filter +mcl_chests:green_shulker_box +mcl_chests:magenta_shulker_box +homedecor:fence_barbed_wire +mcl_chests:black_shulker_box +mcl_chests:red_shulker_box +mcl_chests:pink_shulker_box +mcl_chests:brown_shulker_box +mcl_chests:dark_green_shulker_box +mcl_chests:orange_shulker_box +mcl_chests:cyan_shulker_box +mcl_chests:lightblue_shulker_box +mcl_chests:grey_shulker_box +mcl_blackstone:blackstone_chiseled_polished +mcl_blackstone:blackstone_brick_polished +mcl_stairs:slab_blackstone_polished +mcl_blackstone:nether_gold +mcl_blackstone:blackstone_gilded +homedecor:digital_clock +homedecor:analog_clock_wood +homedecor:grandfather_clock +homedecor:analog_clock_plastic +mcl_walls:endbricks_12 +mcl_walls:endbricks_13 +mcl_composters:composter +mcl_walls:endbricks_15 +mcl_walls:endbricks_16 +mcl_walls:endbricks_21 +mcl_composters:composter_ready +mcl_cauldrons:cauldron +mcl_walls:netherbrick_0 +mcl_walls:netherbrick_1 +mcl_composters:composter_1 +mcl_composters:composter_2 +mcl_composters:composter_3 +mcl_composters:composter_4 +mcl_composters:composter_5 +mcl_composters:composter_6 +mcl_composters:composter_7 +mcl_walls:netherbrick_5 +mcl_walls:netherbrick_6 +mcl_walls:netherbrick_7 +mcl_walls:netherbrick_8 +mcl_walls:netherbrick_9 +mcl_walls:netherbrick_10 +mcl_trees:bark_oak +mcl_walls:netherbrick_11 +mcl_walls:netherbrick_12 +mcl_walls:netherbrick_13 +mesecons:wire_00000000_off +mcl_walls:netherbrick_14 +mcl_walls:netherbrick_15 +mcl_brewing:stand_000 +mcl_walls:netherbrick_16 +mcl_walls:netherbrick_21 +homedecor:desk_fan +mcl_walls:rednetherbrick_0 +mcl_monster_eggs:monster_egg_stonebrickcracked +mcl_monster_eggs:monster_egg_stonebrick +mcl_walls:rednetherbrick_2 +mcl_trees:leaves_oak +mcl_walls:rednetherbrick_3 +mcl_walls:rednetherbrick_4 +mcl_walls:rednetherbrick_5 +mcl_walls:rednetherbrick_6 +mcl_walls:rednetherbrick_7 +mcl_walls:rednetherbrick_8 +mesecons:wire_10000000_on +mesecons:wire_10000000_off +mcl_walls:rednetherbrick_10 +mcl_walls:rednetherbrick_11 +mcl_walls:rednetherbrick_12 +mcl_walls:rednetherbrick_13 +mcl_walls:rednetherbrick_14 +mcl_fences:oak_fence_gate +mcl_walls:rednetherbrick_15 +mcl_walls:rednetherbrick_16 +mcl_walls:rednetherbrick_21 +homedecor:medicine_cabinet_open +mcl_trees:leaves_acacia +mcl_panes:pane_white_flat +mcl_walls:mudbrick_1 +mcl_nether:magma +mcl_walls:mudbrick_2 +ontime_clocks:green_digital +mcl_walls:mudbrick_4 +mcl_fences:acacia_fence +mcl_walls:mudbrick_5 +mcl_fences:acacia_fence_gate +mcl_doors:door_oak_b_1 +ontime_clocks:red_digital +mcl_walls:mudbrick_7 +mcl_walls:mudbrick_8 +mcl_doors:door_oak_t_1 +ontime_clocks:white +mcl_doors:door_oak_b_2 +ontime_clocks:frameless_black +mcl_tnt:tnt +mcl_walls:mudbrick_12 +mcl_doors:trapdoor_oak +ontime_clocks:frameless_gold +mcl_stairs:slab_prismarine_dark +mcl_doors:door_acacia_b_1 +mcl_amethyst:amethyst_block +ontime_clocks:frameless_white +mcl_walls:mudbrick_16 +mcl_doors:door_acacia_t_1 +mcl_amethyst:calcite +mcl_blackstone:basalt_smooth +mcl_doors:door_acacia_b_2 +mcl_doors:door_acacia_t_2 +mcl_doors:trapdoor_acacia +mcl_raw_ores:raw_iron_block +mcl_anvils:anvil_damage_2 +mcl_stairs:stair_oak_outer +mcl_stairs:stair_oak_inner +mcl_panes:pane_magenta_flat +mcl_stairs:stair_oak_bark +mcl_raw_ores:raw_gold_block +mcl_stairs:stair_oak_bark_outer +mcl_stairs:stair_oak_bark_inner +mcl_stairs:stair_acacia +homedecor:shingle_outer_corner_asphalt +mcl_stairs:stair_acacia_outer +mcl_stairs:stair_acacia_inner +mcl_farming:soil +mcl_farming:soil_wet +mcl_stairs:slab_oak_top +mcl_stairs:slab_oak_double +homedecor:plasma_lamp_6 +mcl_panes:pane_magenta +homedecor:ground_lantern_6 +mcl_stairs:stair_acacia_bark_outer +mcl_mangrove:propagule +mcl_mangrove:mangrove_roots +homedecor:ceiling_lantern_6 +mcl_panes:pane_blue_flat +mcl_stairs:slab_oak_bark +mcl_sponges:sponge +mcl_stairs:slab_oak_bark_double +homedecor:lattice_lantern_small_6 +homedecor:desk_lamp_6 +mcl_stairs:stair_concrete_magenta +homedecor:ceiling_lamp_6 +mcl_mangrove:hanging_propagule_1 +mcl_end:purpur_block +mcl_signs:wall_sign_oak +mcl_panes:pane_blue +mcl_itemframes:frame +mcl_stairs:slab_concrete_magenta_double +homedecor:glowlight_half_7 +mcl_mangrove:water_logged_roots +mcl_mangrove:river_water_logged_roots +homedecor:chimney +mcl_panes:pane_green_flat +homedecor:doghouse +steel:plate_soft +steel:plate_rusted +homedecor:plasma_lamp_7 +mesecons_pressureplates:pressure_plate_oak_off +mcl_signs:wall_sign_dark_oak +mesecons_pressureplates:pressure_plate_oak_on +mcl_stairs:stair_concrete_blue +homedecor:hanging_lantern_7 +mcl_stairs:stair_concrete_blue_inner +mesecons_button:button_oak_off +homedecor:ceiling_lantern_7 +mcl_pottery_sherds:pot +mcl_panes:pane_green +mcl_stairs:slab_concrete_blue_top +mesecons_pressureplates:pressure_plate_dark_oak_on +steel:grate_hard +homedecor:desk_lamp_7 +mesecons_button:button_dark_oak_off +mcl_trees:stripped_mangrove +mcl_trees:tree_mangrove +mcl_panes:pane_brown_flat +mesecons_button:button_dark_oak_on +signs_road:black_left_sign +mcl_trees:wood_mangrove +mcl_flowerpots:flower_pot_sapling_dark_oak +signs_road:black_right_sign +homedecor:swing +mcl_trees:bark_stripped_mangrove +mcl_trees:bark_mangrove +mcl_stairs:stair_concrete_green_inner +signs_road:white_left_sign +steel:strut_mount +signs_road:white_right_sign +mcl_panes:pane_brown +mcl_stairs:slab_concrete_green_top +homedecor:plasma_lamp_8 +signs_road:blue_left_sign +homedecor:ground_lantern_8 +signs_road:blue_right_sign +mcl_farming:potato_1 +homedecor:hanging_lantern_8 +mcl_panes:pane_black_flat +mcl_farming:potato +homedecor:ceiling_lantern_8 +homedecor:lattice_lantern_large_8 +steel:shingle_side_roofing +homedecor:lattice_lantern_small_8 +mcl_stairs:stair_concrete_brown_outer +homedecor:desk_lamp_8 +steel:shingle_outer_corner_roofing +steel:shingle_inner_corner_roofing +homedecor:ceiling_lamp_8 +mcl_farming:potato_2 +mcl_farming:potato_3 +mcl_farming:potato_4 +mcl_farming:potato_5 +mcl_farming:potato_6 +mcl_farming:potato_7 +homedecor:standing_lamp_8 +mcl_trees:wood_jungle +homedecor:glowlight_half_9 +homedecor:glowlight_quarter_9 +mcl_trees:bark_stripped_jungle +mcl_trees:bark_jungle +mcl_beds:respawn_anchor +mcl_stairs:stair_concrete_black_outer +mesecons_torch:mesecon_torch_overheated +mesecons_torch:mesecon_torch_overheated_wall +homedecor:stonepath +homedecor:hanging_lantern_9 +mcl_fences:crimson_fence +pipeworks:tag_tube_000000 +homedecor:ceiling_lantern_9 +mcl_stairs:slab_concrete_black_top +pipeworks:tag_tube_000001 +homedecor:lattice_lantern_large_9 +pipeworks:tag_tube_000010 +homedecor:lattice_lantern_small_9 +homedecor:lattice_wood +pipeworks:tag_tube_000011 +homedecor:desk_lamp_9 +pipeworks:tag_tube_000100 +mcl_books:bookshelf +homedecor:television +pipeworks:tag_tube_000101 +homedecor:table_lamp_9 +pipeworks:tag_tube_000110 +homedecor:tv +homedecor:standing_lamp_9 +pipeworks:tag_tube_000111 +homedecor:curtain_open +pipeworks:tag_tube_001000 +mcl_doors:door_crimson_b_1 +mcl_farming:beetroot_0 +pipeworks:tag_tube_001001 +homedecor:glowlight_small_cube_10 +homedecor:lattice_white_wood_vegetal +mcl_farming:beetroot_1 +mcl_farming:beetroot_2 +pipeworks:tag_tube_001011 +mcl_farming:beetroot +pipeworks:tag_tube_001100 +pipeworks:tag_tube_001101 +pipeworks:tag_tube_001110 +homedecor:shrubbery_yellow +mcl_stairs:stair_concrete_silver +pipeworks:tag_tube_001111 +mcl_stairs:stair_concrete_silver_outer +mcl_stairs:stair_concrete_silver_inner +pipeworks:tag_tube_010000 +homedecor:shutter_colored +pipeworks:tag_tube_010001 +mcl_stairs:slab_concrete_silver +pipeworks:tag_tube_010010 +mcl_stairs:slab_concrete_silver_double +homedecor:shrubbery_red +pipeworks:tag_tube_010011 +homedecor:table_lamp_10 +pipeworks:tag_tube_010100 +homedecor:standing_lamp_10 +pipeworks:tag_tube_010101 +homedecor:glowlight_half_11 +pipeworks:tag_tube_010110 +homedecor:glowlight_quarter_11 +pipeworks:tag_tube_010111 +mcl_stairs:stair_concrete_light_blue +pipeworks:tag_tube_011000 +mcl_stairs:stair_concrete_light_blue_inner +homedecor:plasma_lamp_11 +pipeworks:tag_tube_011001 +homedecor:window_plain +homedecor:blinds_thin +pipeworks:tag_tube_011010 +mcl_farming:sweet_berry_bush_1 +mesecons_pistons:piston_down_pusher_normal +pipeworks:tag_tube_011011 +mcl_core:snowblock +pipeworks:tag_tube_011100 +mcl_farming:sweet_berry_bush_0 +mesecons_pistons:piston_down_pusher_sticky +mcl_farming:sweet_berry_bush_3 +mcl_farming:sweet_berry_bush_2 +mcl_stairs:slab_crimson_bark +pipeworks:tag_tube_011110 +mcl_stairs:slab_crimson_bark_double +pipeworks:tag_tube_011111 +pipeworks:tag_tube_100000 +mcl_stairs:stair_concrete_orange_outer +pipeworks:tag_tube_100001 +pipeworks:tag_tube_100010 +mcl_signs:wall_sign_crimson +pipeworks:tag_tube_100011 +mcl_stairs:slab_concrete_orange_top +mcl_stairs:slab_concrete_orange_double +pipeworks:tag_tube_100100 +pipeworks:tag_tube_100101 +homedecor:curtainrod_brass +pipeworks:tag_tube_100110 +mcl_lectern:lectern +pipeworks:tag_tube_100111 +homedecor:curtainrod_wrought_iron +pipeworks:tag_tube_101000 +ignore +pipeworks:tag_tube_101001 +pipeworks:tag_tube_101010 +homedecor:desk_locked +pipeworks:tag_tube_101011 +homedecor:stained_glass +mcl_stairs:slab_stone_rough_top +mcl_stairs:slab_stone_rough_double +pipeworks:tag_tube_101101 +mcl_stairs:stair_concrete_lime_inner +pipeworks:tag_tube_101110 +homedecor:calendar +pipeworks:tag_tube_101111 +mcl_stairs:slab_concrete_lime +mcl_stairs:slab_concrete_lime_top +pipeworks:tag_tube_110000 +mcl_stairs:slab_stone +mcl_stairs:slab_stone_top +mcl_stairs:slab_stone_double +mcl_blackstone:soul_torch +mcl_stairs:stair_andesite +mcl_stairs:stair_concrete_purple +mcl_stairs:stair_andesite_outer +mcl_stairs:stair_andesite_inner +mcl_stairs:stair_concrete_purple_inner +pipeworks:sand_tube_2 +mcl_stairs:slab_andesite +mcl_stairs:slab_andesite_top +mcl_stairs:slab_andesite_double +pipeworks:sand_tube_4 +pipeworks:sand_tube_5 +pipeworks:sand_tube_6 +mcl_mushrooms:red_mushroom_block_stem_full +pipeworks:sand_tube_7 +mcl_stairs:stair_granite +mcl_stairs:stair_granite_outer +mcl_stairs:stair_granite_inner +mcl_mushrooms:red_mushroom_block_cap_111111 +mcl_mushrooms:red_mushroom_block_cap_000000 +mcl_stairs:stair_concrete_grey_outer +pipeworks:sand_tube_10 +mcl_stairs:slab_granite +mcl_stairs:slab_granite_top +mcl_stairs:slab_granite_double +mcl_mushrooms:red_mushroom_block_cap_000001 +mcl_stairs:slab_concrete_grey +mcl_stairs:slab_concrete_grey_top +mcl_stairs:slab_concrete_grey_double +mcl_deepslate:deepslatecobbledwall_3 +mcl_deepslate:deepslatecobbledwall_4 +mcl_deepslate:deepslatecobbledwall_5 +mcl_deepslate:deepslatecobbledwall_6 +mcl_deepslate:deepslatecobbledwall_7 +mcl_deepslate:deepslatecobbledwall_8 +mcl_deepslate:deepslatecobbledwall_9 +mcl_deepslate:deepslatecobbledwall_10 +mcl_stairs:stair_concrete_cyan_inner +mcl_deepslate:deepslatecobbledwall_11 +mcl_mushrooms:red_mushroom_block_cap_000101 +mcl_colorblocks:concrete_powder_green +mcl_deepslate:deepslatecobbledwall_13 +mcl_colorblocks:concrete_green +mcl_deepslate:deepslatecobbledwall_14 +mcl_stairs:slab_concrete_cyan_double +mcl_mushrooms:red_mushroom_block_cap_000110 +mcl_deepslate:deepslatecobbledwall_16 +mcl_deepslate:deepslatecobbledwall_21 +mcl_mushrooms:red_mushroom_block_cap_000111 +mcl_mushrooms:red_mushroom_block_cap_001000 +mcl_mushrooms:red_mushroom_block_cap_001001 +mcl_colorblocks:hardened_clay_brown +mcl_stairs:stair_deepslate_polished_outer +mcl_stairs:stair_deepslate_polished_inner +mcl_colorblocks:concrete_powder_brown +mcl_mushrooms:red_mushroom_block_cap_001010 +mcl_colorblocks:concrete_brown +mcl_stairs:slab_deepslate_polished +mcl_stairs:slab_deepslate_polished_top +mcl_mushrooms:red_mushroom_block_cap_001011 +mcl_blackstone:soul_fire +mcl_mushrooms:red_mushroom_block_cap_001100 +mcl_deepslate:deepslatepolishedwall +mcl_mushrooms:red_mushroom_block_cap_001101 +mcl_deepslate:deepslatepolishedwall_1 +mcl_deepslate:deepslatepolishedwall_2 +mcl_mushrooms:red_mushroom_block_cap_001110 +mcl_colorblocks:hardened_clay_black +mcl_deepslate:deepslatepolishedwall_4 +mcl_colorblocks:concrete_powder_black +mcl_mushrooms:red_mushroom_block_cap_001111 +mcl_colorblocks:concrete_black +pipeworks:tag_tube_111100 +mcl_mushrooms:red_mushroom_block_cap_010000 +mcl_stairs:stair_blackstone_polished_outer +pipeworks:tag_tube_111101 +mcl_mushrooms:red_mushroom_block_cap_010001 +pipeworks:tag_tube_111110 +pipeworks:tag_tube_111111 +mcl_stairs:slab_end_stone_top +mcl_stairs:slab_end_stone_double +mcl_colorblocks:hardened_clay_red +mcl_colorblocks:concrete_powder_red +mcl_colorblocks:concrete_red +mcl_stairs:stair_stone_inner +mcl_farming:carrot +mcl_farming:carrot_7 +mcl_farming:carrot_6 +mcl_farming:carrot_5 +mcl_farming:carrot_4 +mcl_farming:carrot_3 +mcl_farming:carrot_2 +mcl_farming:carrot_1 +mcl_colorblocks:hardened_clay_silver +mcl_stairs:slab_concrete_yellow_top +mcl_stairs:slab_concrete_yellow_double +mcl_colorblocks:concrete_powder_silver +mcl_colorblocks:concrete_silver +mcl_stairs:stair_concrete_white +mcl_stairs:stair_concrete_white_outer +mcl_stairs:stair_concrete_white_inner +mcl_colorblocks:hardened_clay_light_blue +mcl_colorblocks:concrete_powder_cyan +mcl_wool:black_carpet +mcl_colorblocks:concrete_light_blue +mcl_heads:skeleton_ceiling +mcl_heads:skeleton_wall +mcl_wool:red +mcl_doors:door_mangrove_t_1 +mcl_wool:red_carpet +mcl_doors:door_mangrove_b_2 +mcl_doors:door_mangrove_t_2 +mcl_heads:wither_skeleton_ceiling +mcl_doors:trapdoor_mangrove +mcl_heads:wither_skeleton_wall +mcl_wool:silver_carpet +mcl_colorblocks:concrete_powder_orange +mcl_colorblocks:concrete_orange +mcl_wool:light_blue +mcl_doors:trapdoor_mangrove_open +mcl_wool:light_blue_carpet +mcl_stairs:stair_mangrove +mcl_stairs:stair_mangrove_outer +mcl_armor_stand:armor_stand +mcl_wool:orange_carpet +mcl_stairs:stair_mangrove_bark +mcl_stairs:stair_mangrove_bark_outer +mcl_stairs:stair_mangrove_bark_inner +mcl_colorblocks:concrete_powder_lime +mcl_colorblocks:concrete_lime +mcl_wool:lime_carpet +mesecons_delayer:delayer_on_locked +mcl_wool:purple +mcl_crimson:crimson_nylium +mcl_wool:purple_carpet +mcl_flowerpots:flower_pot_crimson_roots +homedecor:banister_brass_horizontal +mcl_flowerpots:flower_pot_crimson_fungus +mcl_crimson:crimson_fungus +mcl_wool:grey +homedecor:painting_4 +mcl_crimson:shroomlight +mcl_beds:respawn_anchor_charged_1 +mcl_wool:grey_carpet +mcl_crimson:warped_wart_block +mcl_beds:respawn_anchor_charged_2 +mcl_flowerpots:flower_pot_warped_roots +mcl_colorblocks:concrete_purple +mcl_beds:respawn_anchor_charged_3 +mcl_wool:cyan +homedecor:bathtub_clawfoot_brass_taps +mcl_beds:respawn_anchor_charged_4 +mcl_stairs:stair_goldblock +mcl_wool:cyan_carpet +pipeworks:tag_tube_101100 +mcl_crimson:twisting_vines +mcl_crimson:warped_fungus +mcl_stairs:slab_acacia +mcl_walls:stonebrickmossy_0 +mcl_doors:door_spruce_b_2 +mesecons:wire_11011101_on +mcl_walls:endbricks_9 +mcl_walls:prismarine_14 +mcl_stairs:slab_redsandstonesmooth2_top +mcl_stairs:slab_brick_block +mcl_panes:pane_pink_flat +mcl_stairs:slab_warped_double +mcl_colorblocks:hardened_clay_grey +mcl_stairs:slab_warped_top +mcl_stairs:slab_sandstone_top +mcl_colorblocks:concrete_powder_grey +mcl_stairs:stair_warped_bark_inner +mcl_colorblocks:concrete_grey +mcl_stairs:stair_warped_bark_outer +mcl_villages:crop_flower_1 +mcl_villages:crop_flower_7 +mcl_villages:crop_flower_8 +mcl_stairs:stair_lapisblock_outer +mcl_doors:trapdoor_warped_open +mcl_stairs:slab_ironblock_top +mcl_doors:door_warped_t_2 +mcl_stairs:stair_stonebrickcracked +mcl_doors:door_warped_t_1 +mcl_doors:door_warped_b_1 +mcl_fences:warped_fence_gate +mcl_fences:warped_fence_gate_open +mcl_minecarts:activator_rail_on +mcl_fences:warped_fence +mcl_trees:bark_stripped_warped +mcl_loom:loom +mcl_trees:stripped_warped +mcl_trees:bark_warped +mcl_minecarts:detector_rail_on +mcl_minecarts:detector_rail +mcl_trees:wood_warped +mcl_trees:tree_warped +pipeworks:pipe_1_empty +mesecons_button:button_jungle_on +mcl_stairs:slab_crimson_bark_top +mcl_stairs:slab_crimson_double +mcl_stairs:slab_crimson_top +mcl_stairs:slab_crimson +mcl_droppers:dropper_up +mcl_droppers:dropper_down +mcl_stairs:stair_crimson_bark_inner +pipeworks:pipe_compatibility_loaded +mcl_droppers:dropper +mcl_stairs:stair_crimson_bark_outer +mcl_minecarts:golden_rail_on +mcl_stairs:stair_crimson_bark +pipeworks:valve_on_empty +mcl_stairs:stair_crimson_inner +pipeworks:valve_off_empty +mcl_stairs:stair_crimson_outer +pipeworks:entry_panel_empty +mcl_stairs:stair_crimson +pipeworks:flow_sensor_empty +mcl_doors:trapdoor_crimson_open +pipeworks:straight_pipe_empty +mcl_doors:trapdoor_crimson +pipeworks:valve_on_loaded +mcl_doors:door_crimson_t_2 +pipeworks:entry_panel_loaded +mcl_doors:door_crimson_b_2 +pipeworks:flow_sensor_loaded +mcl_doors:door_crimson_t_1 +pipeworks:straight_pipe_loaded +mcl_fences:crimson_fence_gate +mcl_fences:crimson_fence_gate_open +homedecor:medicine_cabinet +homedecor:shower_head +homedecor:banister_wood_diagonal_left_malachite +mcl_observers:observer_up_off +mcl_observers:observer_up_on +mcl_observers:observer_down_off +mcl_observers:observer_down_on +pipeworks:pipe_2_empty +homedecor:banister_wood_horizontal_lime +pipeworks:pipe_2_loaded +mcl_doors:door_cherry_blossom_t_2 +homedecor:shower_tray +mcl_doors:trapdoor_cherry_blossom +mcl_observers:observer_on +pipeworks:pipe_3_loaded +mcl_stairs:slab_deepslate_bricks_cracked_double +mcl_stairs:slab_deepslate_bricks_cracked_top +mcl_stairs:slab_deepslate_bricks_cracked +pipeworks:pipe_4_empty +mcl_cake:cake_4 +pipeworks:pipe_4_loaded +mcl_cake:cake_5 +mcl_cake:cake_6 +mcl_cake:cake +mcl_doors:trapdoor_cherry_blossom_open +mcl_trees:bark_stripped_oak +pipeworks:pipe_5_loaded +mcl_blackstone:wall +mcl_blackstone:wall_21 +mcl_stairs:stair_cherry_blossom +pipeworks:pipe_6_empty +mcl_stairs:stair_cherry_blossom_outer +mcl_stairs:stair_cherry_blossom_inner +mcl_core:cobble +mcl_stairs:stair_end_bricks_inner +mcl_stairs:slab_end_bricks +pipeworks:pipe_7_empty +pipeworks:mese_tube_000000 +pipeworks:pipe_7_loaded +mcl_stairs:stair_cherry_blossom_bark +mcl_signs:wall_sign_jungle +mcl_stairs:stair_cherry_blossom_bark_outer +mcl_stairs:stair_cherry_blossom_bark_inner +mcl_blackstone:wall_13 +pipeworks:pipe_8_loaded +pipeworks:mese_tube_000010 +mcl_blackstone:wall_12 +mcl_blackstone:wall_11 +pipeworks:pipe_9_empty +mcl_panes:pane_pink +mcl_stairs:slab_cherry_blossom +mcl_stairs:slab_cherry_blossom_top +mcl_stairs:slab_cherry_blossom_double +mcl_blackstone:wall_9 +pipeworks:mese_tube_000100 +mcl_blackstone:wall_8 +pipeworks:pipe_10_loaded +mcl_blackstone:wall_7 +mcl_stairs:stair_acacia_bark_inner +pipeworks:mese_tube_000101 +mcl_walls:mudbrick_11 +mcl_walls:mudbrick_9 +mcl_walls:mudbrick_3 +mcl_walls:rednetherbrick_9 +pipeworks:mese_tube_000110 +mcl_stairs:slab_cherry_blossom_bark +mcl_stairs:slab_cherry_blossom_bark_top +mcl_stairs:slab_cherry_blossom_bark_double +mcl_blackstone:wall_1 +pipeworks:mese_tube_000111 +mcl_blackstone:wall_0 +mcl_stairs:slab_blackstone_brick_polished_double +mcl_stairs:slab_blackstone_brick_polished_top +pipeworks:mese_tube_001000 +mcl_stairs:slab_blackstone_brick_polished +mcl_stairs:stair_oak +mcl_stairs:stair_blackstone_brick_polished_outer +mcl_stairs:stair_blackstone_brick_polished +pipeworks:mese_tube_001001 +mcl_stairs:slab_blackstone_polished_double +mcl_stairs:slab_blackstone_polished_top +mcl_stairs:stair_blackstone_polished_inner +mcl_stairs:stair_blackstone_polished +pipeworks:mese_tube_001010 +mcl_stairs:slab_blackstone_double +homedecor:skylight_frosted +mcl_stairs:slab_blackstone_top +mcl_stairs:slab_blackstone +pipeworks:mese_tube_001011 +mcl_stairs:stair_blackstone_inner +mcl_stairs:stair_blackstone_outer +mcl_stairs:stair_andesite_smooth_outer +mcl_sponges:sponge_wet +pipeworks:mese_tube_001100 +mcl_blackstone:quartz_brick +mcl_blackstone:blackstone_polished +mcl_blackstone:basalt +mcl_blackstone:basalt_polished +pipeworks:mese_tube_001101 +mcl_blackstone:blackstone +mcl_stairs:slab_concrete_cyan_top +mcl_stairs:slab_concrete_cyan +mcl_stairs:stair_concrete_cyan_outer +pipeworks:mese_tube_001110 +mcl_stairs:stair_concrete_cyan +mcl_stairs:stair_concrete_grey_inner +mcl_stairs:stair_concrete_grey +homedecor:shingles_wood +pipeworks:mese_tube_001111 +mcl_villages:crop_gourd_2 +mcl_villages:crop_gourd_1 +mcl_stairs:slab_concrete_purple_double +pipeworks:mese_tube_010000 +mcl_stairs:slab_concrete_purple_top +mcl_stairs:slab_concrete_purple +mcl_stairs:stair_concrete_purple_outer +mcl_stairs:slab_concrete_lime_double +pipeworks:mese_tube_010001 +mcl_stairs:stair_concrete_lime_outer +lavalamp:lavalamp +mcl_stairs:stair_concrete_lime +mcl_stairs:slab_concrete_orange +pipeworks:mese_tube_010010 +mcl_stairs:stair_concrete_orange_inner +mcl_stairs:stair_concrete_orange +mcl_stairs:slab_concrete_light_blue_double +lavalamp:lavalamp_off +pipeworks:mese_tube_010011 +mcl_stairs:slab_concrete_light_blue_top +mcl_stairs:slab_concrete_light_blue +mcl_stairs:stair_concrete_light_blue_outer +mcl_stairs:slab_concrete_silver_top +pipeworks:mese_tube_010100 +mcl_stairs:slab_concrete_red_double +mcl_stairs:slab_concrete_red_top +mcl_stairs:slab_concrete_red +mcl_stairs:stair_concrete_red_inner +pipeworks:mese_tube_010101 +homedecor:plasma_ball_off +mcl_stairs:stair_concrete_red_outer +mcl_stairs:stair_concrete_red +mcl_stairs:slab_concrete_black_double +pipeworks:mese_tube_010110 +mcl_stairs:slab_concrete_black +mesecons_pressureplates:pressure_plate_stone_off +mcl_stairs:stair_concrete_black_inner +mesecons_pressureplates:pressure_plate_stone_on +pipeworks:mese_tube_010111 +mcl_stairs:stair_concrete_black +mcl_stairs:slab_concrete_brown_double +mcl_stairs:slab_concrete_brown_top +mesecons_pressureplates:pressure_plate_polished_blackstone_off +pipeworks:mese_tube_011000 +mesecons_pressureplates:pressure_plate_polished_blackstone_on +mcl_stairs:slab_concrete_brown +pipeworks:tube_compatibility +mcl_stairs:stair_concrete_brown_inner +pipeworks:mese_tube_011001 +mcl_stairs:stair_concrete_brown +mcl_stairs:slab_concrete_green_double +mcl_stairs:slab_concrete_green +mcl_stairs:stair_concrete_green_outer +pipeworks:mese_tube_011010 +mcl_stairs:stair_concrete_green +mcl_stairs:slab_concrete_blue_double +mcl_stairs:slab_concrete_blue +mcl_stairs:stair_concrete_blue_outer +pipeworks:mese_tube_011011 +mcl_stairs:slab_concrete_magenta_top +mcl_stairs:slab_concrete_magenta +homedecor:wall_sconce +mcl_walls:redsandstone_2 +pipeworks:mese_tube_011100 +mcl_walls:redsandstone_3 +mcl_stairs:stair_concrete_magenta_inner +mcl_walls:redsandstone_4 +mcl_stairs:stair_concrete_magenta_outer +mcl_walls:redsandstone_5 +mcl_stairs:slab_concrete_pink_double +mcl_walls:redsandstone_6 +mcl_stairs:slab_concrete_pink_top +mcl_walls:redsandstone_7 +mcl_stairs:stair_redsandstone_outer +mcl_walls:redsandstone_8 +pipeworks:steel_block_embedded_tube +mcl_walls:redsandstone_9 +mcl_stairs:slab_concrete_pink +mcl_walls:redsandstone_10 +mcl_stairs:stair_concrete_pink_inner +mcl_walls:redsandstone_11 +mcl_stairs:slab_redsandstone_top +mcl_walls:redsandstone_12 +mcl_stairs:stair_concrete_pink_outer +mcl_walls:redsandstone_13 +mcl_stairs:stair_concrete_pink +mcl_walls:redsandstone_14 +mcl_stairs:slab_concrete_white_double +mcl_walls:redsandstone_15 +mcl_stairs:slab_concrete_white_top +mcl_walls:redsandstone_16 +pipeworks:mese_tube_100010 +mcl_walls:redsandstone_21 +mcl_stairs:stair_redsandstonesmooth2 +mcl_stairs:slab_concrete_white +mcl_stairs:stair_redsandstonesmooth2_outer +mcl_stairs:stair_redsandstonesmooth2_inner +mcl_walls:stonebrick_0 +mcl_stairs:slab_concrete_yellow +mcl_walls:stonebrick_1 +mcl_stairs:stair_concrete_yellow_inner +mcl_walls:stonebrick_2 +mcl_stairs:slab_redsandstonesmooth2 +mcl_walls:stonebrick_3 +mcl_stairs:slab_redsandstonesmooth2_double +mcl_walls:stonebrick_4 +homedecor:welcome_mat_green +mcl_walls:stonebrick_5 +mcl_stairs:stair_concrete_yellow_outer +mcl_walls:stonebrick_6 +homedecor:welcome_mat_brown +mcl_walls:stonebrick_7 +mcl_stairs:stair_concrete_yellow +mcl_walls:stonebrick_8 +homedecor:welcome_mat_grey +mcl_walls:stonebrick_9 +mcl_walls:stonebrick_10 +mcl_stairs:stair_redsandstonesmooth_inner +mcl_walls:stonebrick_11 +mcl_stairs:stair_stone_outer +mcl_walls:stonebrick_12 +mcl_core:slimeblock +mcl_walls:stonebrick_13 +mcl_stairs:slab_redsandstonesmooth +mcl_walls:stonebrick_14 +mcl_stairs:slab_redsandstonesmooth_double +mcl_walls:stonebrick_15 +mcl_chests:ender_chest +mcl_walls:stonebrick_16 +mesecons_commandblock:commandblock_off +mcl_walls:stonebrick_21 +mcl_portals:portal +mcl_portals:end_portal_frame +mcl_enchanting:table +mcl_jukebox:jukebox +mcl_banners:hanging_banner +mcl_banners:standing_banner +mcl_beehives:bee_nest +mcl_walls:stonebrickmossy_2 +mcl_compass:lodestone +mcl_walls:stonebrickmossy_3 +mcl_sculk:catalyst +mcl_furnaces:furnace_active +mcl_blast_furnace:blast_furnace +mcl_blast_furnace:blast_furnace_active +mcl_smoker:smoker +mcl_smoker:smoker_active +mcl_stairs:slab_stonebrick_double +mcl_walls:stonebrickmossy_7 +mcl_stairs:stair_stone +mcl_walls:stonebrickmossy_8 +mcl_walls:stonebrickmossy_9 +mcl_stairs:slab_end_stone +mcl_walls:stonebrickmossy_10 +mcl_barrels:barrel_open +mcl_walls:stonebrickmossy_11 +mcl_stairs:stair_end_stone_inner +mcl_walls:stonebrickmossy_12 +mcl_stairs:stair_end_stone_outer +mcl_walls:stonebrickmossy_13 +mcl_chests:chest_small +mcl_walls:stonebrickmossy_14 +mcl_chests:chest_right +mcl_walls:stonebrickmossy_15 +mcl_chests:trapped_chest_small +mcl_walls:stonebrickmossy_16 +mcl_chests:trapped_chest_right +mcl_walls:stonebrickmossy_21 +mcl_stairs:stair_end_stone +mcl_stairs:slab_deepslate_tiles_cracked_double +mcl_stairs:slab_deepslate_tiles_cracked +mcl_trees:leaves_mangrove +mcl_campfires:campfire +mcl_campfires:campfire_lit +mcl_walls:prismarine_1 +mcl_campfires:soul_campfire_lit +mcl_walls:prismarine_2 +mcl_stairs:stair_deepslate_tiles_cracked_inner +mcl_walls:prismarine_3 +pipeworks:broken_tube_3 +mcl_fences:mangrove_fence +mcl_stairs:stair_deepslate_tiles_cracked_outer +mcl_fences:mangrove_fence_gate +mcl_fences:mangrove_fence_gate_open +mcl_walls:prismarine_6 +mcl_colorblocks:glazed_terracotta_orange +mcl_walls:prismarine_7 +mcl_colorblocks:glazed_terracotta_green +mcl_walls:prismarine_8 +mcl_colorblocks:glazed_terracotta_purple +mcl_walls:prismarine_9 +mcl_colorblocks:glazed_terracotta_blue +mcl_walls:prismarine_10 +mcl_colorblocks:glazed_terracotta_white +mcl_walls:prismarine_11 +mcl_colorblocks:glazed_terracotta_silver +mcl_walls:prismarine_12 +mcl_colorblocks:glazed_terracotta_brown +mcl_walls:prismarine_13 +mcl_colorblocks:glazed_terracotta_pink +mcl_bamboo:bamboo +mcl_bamboo:bamboo_endcap +mcl_bamboo:bamboo_1 +mcl_bamboo:bamboo_2 +mcl_bamboo:bamboo_3 +mcl_stairs:stair_deepslate_tiles_cracked +mcl_bamboo:scaffolding +mcl_beds:bed_black_top +mcl_beds:bed_black_bottom +mcl_beds:bed_blue_top +mcl_beds:bed_blue_bottom +mcl_beds:bed_brown_top +mcl_beds:bed_brown_bottom +mcl_beds:bed_cyan_top +mcl_beds:bed_cyan_bottom +mcl_beds:bed_green_top +mcl_beds:bed_green_bottom +mcl_beds:bed_grey_top +mcl_walls:endbricks_4 +mcl_beds:bed_light_blue_top +mcl_walls:endbricks_5 +mcl_beds:bed_lime_top +mcl_beds:bed_lime_bottom +mcl_beds:bed_magenta_top +mcl_walls:endbricks_7 +mcl_beds:bed_orange_top +mcl_beds:bed_orange_bottom +mcl_beds:bed_pink_top +mcl_beds:bed_pink_bottom +mcl_beds:bed_purple_top +mcl_beds:bed_purple_bottom +mcl_beds:bed_red_top +mcl_beds:bed_red_bottom +mcl_beds:bed_silver_top +mcl_beds:bed_silver_bottom +mcl_deepslate:tuff +mcl_beds:bed_white_bottom +mcl_beds:bed_yellow_top +mcl_beds:bed_yellow_bottom +mcl_core:cactus +mcl_core:reeds +mcl_core:vine +mcl_cake:cake_1 +mcl_cake:cake_2 +mcl_cake:cake_3 +mesecons:wire_01010001_on +mesecons:wire_01010001_off +pipeworks:digiline_filter +mcl_farming:pumpkin_face +mcl_farming:pumpkin_face_light +mcl_farming:pumpkin +mcl_farming:melon +mcl_end:chorus_plant +mcl_core:cobweb +mcl_cocoas:cocoa_1 +mcl_cocoas:cocoa_2 +mesecons:wire_11010001_on +mesecons:wire_11010001_off +mcl_stairs:stair_deepslate_bricks_cracked_inner +mcl_stairs:stair_deepslate_bricks_cracked_outer +mcl_stairs:stair_deepslate_bricks_cracked +mcl_doors:iron_door_t_1 +mcl_doors:iron_door_b_1 +mcl_doors:iron_door_t_2 +mcl_doors:iron_door_b_2 +mcl_stairs:slab_stonebrickcracked_double +mesecons:wire_00110001_on +mesecons:wire_00110001_off +mcl_stairs:slab_stonebrickcracked_top +mcl_stairs:slab_stonebrickcracked +mcl_stairs:stair_stonebrickcracked_inner +mcl_stairs:slab_jungle +mcl_doors:door_warped_b_2 +mesecons:wire_10110001_on +mesecons:wire_10110001_off +mcl_stairs:slab_ironblock_double +mcl_doors:trapdoor_warped +mesecons:wire_11111000_on +mesecons:wire_11111000_off +mcl_stairs:slab_ironblock +mcl_stairs:stair_ironblock_inner +mcl_stairs:stair_ironblock_outer +mcl_stairs:stair_ironblock +mcl_stairs:stair_bamboo_bark_inner +mcl_stairs:slab_goldblock_top +mcl_stairs:stair_bamboo_bark +mcl_stairs:stair_goldblock_inner +mcl_stairs:stair_goldblock_outer +mesecons:wire_01000100_on +mesecons:wire_01000100_off +mcl_crimson:nether_sprouts +mcl_stairs:slab_lapisblock_double +mcl_stairs:slab_lapisblock +mcl_stairs:stair_warped +mcl_stairs:stair_lapisblock +mcl_stairs:stair_warped_outer +mcl_stairs:stair_warped_inner +mcl_villages:crop_flower_5 +mesecons:wire_11000100_on +mesecons:wire_11000100_off +mcl_villages:crop_flower_3 +mcl_stairs:stair_warped_bark +mcl_villages:crop_tree_8 +mcl_villages:crop_tree_6 +mcl_villages:crop_tree_5 +mesecons:wire_01100100_on +mesecons:wire_01100100_off +pipeworks:steel_pane_embedded_tube +mcl_crimson:weeping_vines +mcl_villages:crop_bush_7 +pipeworks:nodebreaker_off +mcl_villages:crop_bush_6 +mcl_ocean:dried_kelp_block +pipeworks:nodebreaker_on +mcl_villages:crop_bush_5 +mesecons:wire_11100100_on +mesecons:wire_11100100_off +mcl_villages:crop_bush_4 +mcl_villages:crop_bush_3 +mcl_villages:crop_bush_2 +mcl_villages:crop_bush_1 +pipeworks:teleport_tube_9 +mcl_deepslate:deepslatetileswall_3 +mcl_villages:crop_gourd_6 +mesecons:wire_01010100_on +mesecons:wire_01010100_off +pipeworks:deployer_on +mcl_villages:crop_root_8 +mcl_villages:crop_root_6 +pipeworks:dispenser_off +mcl_villages:crop_root_5 +mcl_villages:crop_root_3 +mesecons:wire_11010100_on +mesecons:wire_11010100_off +mcl_villages:crop_root_2 +mcl_villages:crop_root_1 +mcl_villages:crop_grain_7 +mcl_villages:crop_grain_6 +pipeworks:sand_tube_1 +mcl_villages:crop_grain_3 +mcl_villages:crop_grain_2 +mesecons:wire_01110100_on +mesecons:wire_01110100_off +mcl_villages:crop_grain_1 +mcl_villages:path_endpoint +mcl_villages:no_paths +mcl_villages:building_block +homedecor:pole_brass +mcl_crimson:crimson_roots +mcl_crimson:warped_roots +mcl_trees:stripped_crimson +mcl_trees:tree_crimson +mesecons:wire_11110100_on +mesecons:wire_11110100_off +homedecor:taps_brass +homedecor:taps +mcl_trees:wood_crimson +mcl_walls:stonebrickmossy_6 +homedecor:toilet_open +mcl_trees:leaves_spruce_orphan +homedecor:toilet +mcl_trees:bark_stripped_crimson +mcl_trees:bark_crimson +mesecons:wire_11001100_on +mesecons:wire_11001100_off +homedecor:banister_wood_diagonal_left_rose +homedecor:desk_lamp_11 +homedecor:banister_wood_diagonal_left_fuchsia +mcl_fences:spruce_fence +homedecor:ceiling_lamp_11 +mcl_fences:spruce_fence_gate +mcl_fences:spruce_fence_gate_open +homedecor:bathroom_tiles_dark +homedecor:table_lamp_11 +mesecons:wire_11101100_on +mesecons:wire_11101100_off +homedecor:standing_lamp_11 +homedecor:radiator +homedecor:space_heater +homedecor:ceiling_fan +homedecor:glowlight_half_12 +homedecor:air_conditioner +homedecor:glowlight_quarter_12 +homedecor:alarm_clock +homedecor:glowlight_small_cube_12 +mesecons:wire_11011100_on +mesecons:wire_11011100_off +homedecor:shrubbery_green +mcl_doors:door_spruce_b_1 +homedecor:plasma_lamp_12 +homedecor:shrubbery_large_green +homedecor:shrubbery_large_red +homedecor:ground_lantern_12 +mcl_doors:door_spruce_t_1 +homedecor:shrubbery_large_yellow +homedecor:hanging_lantern_12 +mesecons:wire_11111100_on +mesecons:wire_11111100_off +homedecor:ceiling_lantern_12 +mcl_doors:door_spruce_t_2 +homedecor:well +mcl_doors:trapdoor_spruce +homedecor:swing_rope +homedecor:lattice_wood_vegetal +homedecor:lattice_lantern_small_12 +homedecor:lattice_white_wood +homedecor:barbecue +mesecons:wire_00100010_on +mesecons:wire_00100010_off +homedecor:paper_towel +homedecor:ceiling_lamp_12 +mcl_flowerpots:flower_pot_sapling_oak +homedecor:copper_pans +mcl_doors:trapdoor_spruce_open +homedecor:table_lamp_12 +homedecor:kitchen_cabinet_colored_with_sink +homedecor:kitchen_cabinet_colored_with_sink_locked +homedecor:standing_lamp_12 +mesecons:wire_10100010_on +mesecons:wire_10100010_off +mcl_stairs:stair_spruce_outer +mcl_stairs:stair_spruce_inner +mcl_walls:sandstone_11 +homedecor:glowlight_quarter_13 +homedecor:kitchen_cabinet_colorable_with_sink_locked +homedecor:glowlight_small_cube_13 +homedecor:kitchen_cabinet_colored_half +homedecor:kitchen_cabinet_colored_half_locked +mcl_stairs:stair_spruce_bark +mesecons:wire_01100010_on +mesecons:wire_01100010_off +mcl_stairs:stair_spruce_bark_inner +homedecor:kitchen_cabinet_colorable_half +homedecor:ground_lantern_13 +homedecor:kitchen_cabinet_colorable_half_locked +mcl_lightning_rods:rod +homedecor:hanging_lantern_13 +homedecor:kitchen_cabinet_colored_with_drawers_steel +mcl_lightning_rods:rod_powered +mcl_stairs:slab_spruce +mesecons:wire_11100010_on +mesecons:wire_11100010_off +homedecor:lattice_lantern_large_13 +homedecor:kitchen_cabinet_colored_with_drawers_steel_locked +mcl_farming:melontige_1 +homedecor:lattice_lantern_small_13 +homedecor:kitchen_cabinet_colorable_with_drawers_steel +homedecor:kitchen_cabinet_colorable_with_drawers_steel_locked +homedecor:desk_lamp_13 +homedecor:kitchen_cabinet_colored_steel +homedecor:kitchen_cabinet_colored_steel_locked +mesecons:wire_00110010_on +mesecons:wire_00110010_off +homedecor:kitchen_cabinet_colorable_steel +mcl_stairs:slab_spruce_bark +mcl_stairs:slab_spruce_bark_top +mcl_stairs:slab_spruce_bark_double +homedecor:kitchen_cabinet_colorable_steel_locked +homedecor:standing_lamp_13 +homedecor:kitchen_cabinet_colored_with_drawers_marble_locked +homedecor:kitchen_cabinet_colorable_with_drawers_marble +homedecor:kitchen_cabinet_colored_marble +homedecor:kitchen_cabinet_colored_marble_locked +homedecor:kitchen_cabinet_colorable_with_drawers_granite_locked +homedecor:kitchen_cabinet_colored_granite_locked +mcl_farming:melontige_unconnect +mcl_farming:melontige_2 +mcl_farming:melontige_3 +mcl_farming:melontige_4 +mcl_farming:melontige_5 +mcl_farming:melontige_6 +mcl_farming:melontige_7 +homedecor:wood_table_large_square_with_wrought_iron_legs +homedecor:kitchen_cabinet_colorable_granite +homedecor:kitchen_cabinet_colored_with_drawers +homedecor:kitchen_cabinet_colored_with_drawers_locked +homedecor:wood_table_large_square_with_wood_legs +homedecor:kitchen_cabinet_colorable_with_drawers +homedecor:kitchen_cabinet_colored +mesecons:wire_01110010_on +mesecons:wire_01110010_off +mesecons_pressureplates:pressure_plate_spruce_on +mesecons_button:button_spruce_off +mcl_fences:oak_fence +homedecor:dishwasher_wood +mesecons_button:button_spruce_on +mesecons:wire_11110010_on +mesecons:wire_11110010_off +mcl_wool:pink_carpet +homedecor:wood_table_small_square_with_wood_legs +mcl_flowerpots:flower_pot_sapling_spruce +homedecor:dishwasher_steel +mcl_walls:sandstone_12 +homedecor:microwave_oven +homedecor:microwave_oven_locked +mcl_stairs:stair_mangrove_inner +homedecor:oven_steel_active_locked +mesecons:wire_10101010_on +mesecons:wire_10101010_off +homedecor:lattice_lantern_small_14 +homedecor:desk_lamp_14 +homedecor:ceiling_lamp_14 +homedecor:wood_table_small_round_with_wrought_iron_legs +homedecor:standing_lamp_14 +homedecor:oven_steel +mcl_mangrove:propagule_mud +homedecor:wood_table_small_round_with_wood_legs +mcl_walls:mudbrick_0 +mcl_chests:yellow_shulker_box_small +homedecor:oven +mcl_farming:melontige_linked_r +mcl_farming:melontige_linked_l +mcl_farming:melontige_linked_t +mcl_farming:melontige_linked_b +homedecor:oven_locked +homedecor:refrigerator_white +mcl_heads:zombie +homedecor:refrigerator_steel +mcl_flowers:peony_top +homedecor:torch_wall +lrfurn:endtable +homedecor:chandelier_brass +mcl_cocoas:cocoa_3 +mcl_dispensers:dispenser_up +mcl_dispensers:dispenser_down +mcl_doors:trapdoor_oak_open +mcl_dispensers:dispenser +homedecor:chain_steel_top +mcl_trees:stripped_acacia +homedecor:oil_lamp_tabletop +mcl_walls:brick_9 +mcl_walls:brick_7 +homedecor:candlestick_wrought_iron +mcl_trees:wood_acacia +lrfurn:coffeetable +homedecor:candle_thin +mcl_deepslate:deepslate_with_lapis +homedecor:glowlight_half_0 +mcl_trees:bark_stripped_acacia +mcl_trees:bark_acacia +homedecor:wall_lamp_on +homedecor:glowlight_quarter_0 +mcl_colorblocks:hardened_clay_purple +mcl_signs:standing_sign_acacia +homedecor:plasma_ball_on +homedecor:wall_lamp_off +homedecor:glowlight_small_cube_0 +mcl_trees:leaves_birch_orphan +homedecor:rope_light_on_floor_off +homedecor:table_lamp_14 +homedecor:plasma_lamp_0 +mcl_walls:endbricks_3 +mcl_walls:endbricks_2 +homedecor:hanging_lantern_14 +homedecor:ground_lantern_0 +mcl_walls:prismarine_15 +homedecor:plasma_lamp_14 +mcl_panes:pane_black +mcl_anvils:anvil +mcl_anvils:anvil_damage_1 +mcl_trees:stripped_jungle +mcl_stairs:stair_spruce +homedecor:ceiling_lantern_0 +homedecor:table_lamp_13 +homedecor:ceiling_lamp_13 +homedecor:ceiling_lantern_13 +homedecor:plasma_lamp_13 +homedecor:lattice_lantern_large_0 +lrfurn:longsofa +homedecor:glowlight_half_13 +homedecor:desk_lamp_12 +homedecor:lattice_lantern_large_12 +homedecor:lattice_lantern_small_11 +homedecor:lattice_lantern_small_0 +homedecor:lattice_lantern_large_11 +homedecor:ceiling_lantern_11 +homedecor:hanging_lantern_11 +homedecor:desk_lamp_0 +homedecor:ground_lantern_11 +homedecor:glowlight_small_cube_11 +homedecor:ceiling_lamp_10 +homedecor:ceiling_lamp_0 +homedecor:desk_lamp_10 +homedecor:lattice_lantern_small_10 +homedecor:lattice_lantern_large_10 +homedecor:ceiling_lantern_10 +homedecor:table_lamp_0 +homedecor:hanging_lantern_10 +homedecor:ground_lantern_10 +homedecor:plasma_lamp_10 +homedecor:painting_16 +homedecor:standing_lamp_0 +homedecor:glowlight_quarter_10 +homedecor:glowlight_half_10 +homedecor:ceiling_lamp_9 +homedecor:ground_lantern_9 +fake_fire:ice_fire +homedecor:painting_17 +homedecor:plasma_lamp_9 +homedecor:glowlight_small_cube_9 +homedecor:glowlight_quarter_1 +homedecor:table_lamp_8 +homedecor:glowlight_small_cube_8 +homedecor:glowlight_quarter_8 +homedecor:painting_18 +homedecor:glowlight_half_8 +homedecor:standing_lamp_7 +homedecor:table_lamp_7 +homedecor:ceiling_lamp_7 +homedecor:lattice_lantern_small_7 +fake_fire:embers +homedecor:painting_19 +homedecor:lattice_lantern_large_7 +homedecor:ground_lantern_1 +homedecor:ground_lantern_7 +homedecor:glowlight_small_cube_7 +homedecor:hanging_lantern_1 +homedecor:painting_20 +homedecor:glowlight_quarter_7 +homedecor:ceiling_lantern_1 +homedecor:standing_lamp_6 +homedecor:table_lamp_6 +homedecor:lattice_lantern_large_6 +homedecor:lattice_lantern_large_1 +homedecor:hanging_lantern_6 +homedecor:glowlight_small_cube_6 +homedecor:glowlight_quarter_6 +homedecor:glowlight_half_6 +mcl_cherry_blossom:pink_petals +mcl_colorblocks:glazed_terracotta_yellow +mcl_walls:sandstone_5 +homedecor:desk_lamp_1 +fake_fire:chimney_top_stone +homedecor:ceiling_lamp_5 +mcl_trees:leaves_cherry_blossom +homedecor:desk_lamp_5 +homedecor:lattice_lantern_small_5 +homedecor:lattice_lantern_large_5 +homedecor:table_lamp_1 +homedecor:ceiling_lantern_5 +mesecons_delayer:delayer_on_3 +homedecor:standing_lamp_1 +mcl_doors:door_jungle_t_2 +mcl_doors:trapdoor_jungle +mcl_flowers:azure_bluet +homedecor:glowlight_half_2 +homedecor:washing_machine +homedecor:glowlight_quarter_2 +mcl_fire:eternal_fire +homedecor:dryer +homedecor:glowlight_half_5 +homedecor:standing_lamp_4 +homedecor:ironing_board +mcl_beds:bed_white_top +mcl_trees:stripped_cherry_blossom +mcl_trees:tree_cherry_blossom +mcl_trees:tree_birch +mcl_trees:tree_jungle +homedecor:hanging_lantern_2 +mcl_stairs:stair_bamboo_outer +mcl_trees:wood_cherry_blossom +homedecor:ceiling_lantern_2 +mcl_chests:trapped_chest_on_small +mcl_monster_eggs:monster_egg_cobble +homedecor:lattice_lantern_large_2 +mcl_trees:bark_stripped_cherry_blossom +mcl_trees:bark_cherry_blossom +mcl_chests:trapped_chest_on_right +homedecor:inbox +mcl_stairs:stair_jungle_bark_inner +homedecor:desk_lamp_2 +mcl_stairs:stair_deepslate_cobbled +homedecor:ground_lantern_4 +homedecor:ceiling_lamp_2 +homedecor:plasma_lamp_4 +homedecor:glowlight_small_cube_4 +homedecor:glowlight_quarter_4 +homedecor:table_lamp_2 +homedecor:banister_wood_horizontal_fuchsia +homedecor:standing_lamp_3 +homedecor:standing_lamp_2 +homedecor:table_lamp_3 +pipeworks:tube_4 +homedecor:pole_wrought_iron +homedecor:glowlight_half_3 +mesecons:wire_11101010_off +homedecor:lattice_lantern_small_3 +homedecor:bars +homedecor:lattice_lantern_large_3 +homedecor:glowlight_quarter_3 +mcl_trees:leaves_cherry_blossom_orphan +homedecor:glowlight_small_cube_3 +homedecor:ceiling_lamp_1 +homedecor:ground_lantern_2 +homedecor:plasma_lamp_3 +homedecor:lattice_lantern_small_2 +homedecor:L_binding_bars +homedecor:ground_lantern_3 +homedecor:chains +mcl_fences:cherry_blossom_fence +homedecor:hanging_lantern_3 +homedecor:plasma_lamp_2 +homedecor:glowlight_small_cube_2 +homedecor:ceiling_lantern_3 +homedecor:lattice_lantern_small_1 +homedecor:plasma_lamp_1 +mesecons_noteblock:noteblock +homedecor:glowlight_small_cube_1 +homedecor:glowlight_half_1 +mcl_fences:cherry_blossom_fence_gate +mcl_fences:cherry_blossom_fence_gate_open +homedecor:hanging_lantern_0 +homedecor:desk_lamp_3 +mesecons:wire_10010001_on +homedecor:japanese_wall_top +homedecor:ceiling_lamp_3 +homedecor:tatami_mat +homedecor:spiral_staircase +homedecor:banister_wrought_iron_horizontal +mcl_deepslate:deepslate +homedecor:bathtub_clawfoot_chrome_taps +homedecor:banister_white_dark_horizontal +homedecor:wall_shelf +homedecor:banister_wood_horizontal_grey +homedecor:banister_wood_horizontal_crimson +homedecor:banister_wood_horizontal_rose +homedecor:glowlight_half_4 +homedecor:toaster_loaf +mcl_doors:door_cherry_blossom_b_1 +homedecor:banister_wood_horizontal_violet +homedecor:toaster +homedecor:bottle_green +homedecor:bottle_brown +mcl_doors:door_cherry_blossom_t_1 +homedecor:4_bottles_green +homedecor:4_bottles_multi +mcl_doors:door_cherry_blossom_b_2 +homedecor:banister_wood_horizontal_indigo +homedecor:coffee_maker +homedecor:banister_wood_horizontal_cyan +homedecor:banister_wood_horizontal_turquoise +homedecor:banister_wood_horizontal_malachite +homedecor:cutlery_set +homedecor:banister_wood_horizontal_harlequin +homedecor:sink +homedecor:banister_wood_horizontal_amber +homedecor:banister_wood_horizontal_orange +homedecor:banister_wood_horizontal_vermilion +homedecor:banister_wood_horizontal_red +pipeworks:mese_tube_110011 +mcl_farming:pumpkin_1 +homedecor:banister_wood_diagonal_right_indigo +homedecor:banister_wood_diagonal_right_cyan +homedecor:banister_wood_diagonal_right_turquoise +homedecor:banister_wood_diagonal_right_malachite +homedecor:banister_wood_diagonal_right_yellow +homedecor:banister_wood_diagonal_right +homedecor:banister_wrought_iron_diagonal_left +homedecor:banister_brass_diagonal_left +homedecor:banister_white_dark_diagonal_left +homedecor:banister_wood_diagonal_left_crimson +homedecor:bathroom_tiles_light +homedecor:bathroom_tiles_medium +mcl_core:goldblock +homedecor:banister_wood_diagonal_left_mulberry +mcl_core:clay +homedecor:banister_wood_diagonal_left_violet +mcl_core:packed_ice +homedecor:banister_wood_diagonal_left_blue +mcl_core:bone_block +homedecor:banister_wood_diagonal_left_cerulean +mcl_core:ironblock +homedecor:banister_wood_diagonal_left_turquoise +homedecor:towel_rod +mcl_core:emeraldblock +homedecor:banister_wood_diagonal_left_green +homedecor:banister_wood_diagonal_left_harlequin +homedecor:banister_wood_diagonal_left_amber +mcl_farming:pumpkintige_unconnect +mcl_farming:pumpkin_2 +mcl_farming:pumpkin_3 +mcl_farming:pumpkin_4 +mcl_farming:pumpkin_5 +mcl_farming:pumpkin_6 +mcl_farming:pumpkin_7 +homedecor:banister_wood_diagonal_left_orange +mcl_itemframes:glow_frame +homedecor:banister_wood_diagonal_left +pipeworks:priority_tube_8 +pipeworks:broken_tube_6 +homedecor:trophy +pipeworks:teleport_tube_3 +homedecor:pool_table +homedecor:dvd_cd_cabinet +homedecor:cardboard_box +homedecor:cardboard_box_big +homedecor:fishtank_lighted +homedecor:fishtank +homedecor:bathroom_set +mcl_trees:tree_acacia +homedecor:rug_small +homedecor:ceiling_tile +homedecor:ceiling_paint +homedecor:desk_globe +homedecor:desk +homedecor:filing_cabinet +homedecor:filing_cabinet_locked +homedecor:shutter +homedecor:window_flowerbox +homedecor:curtainrod_wood +homedecor:curtain_closed +homedecor:blinds_thick +homedecor:window_quartered +building_blocks:terrycloth_towel +building_blocks:Tarmac_spread +building_blocks:gravel_spread +building_blocks:brobble_spread +building_blocks:Marble +mcl_hoppers:hopper_side +mcl_hoppers:hopper +mcl_hoppers:hopper_disabled +building_blocks:Roofing +building_blocks:Adobe +building_blocks:smoothglass +building_blocks:grate +technic:granite +mcl_hoppers:hopper_side_disabled +fake_fire:chimney_top_sandstone +fake_fire:fancy_fire +mcl_mushrooms:red_mushroom_block_cap_100011 +homedecor:nightstand_mahogany_two_drawers_locked +mcl_core:brick_block +homedecor:nightstand_mahogany_one_drawer_locked +homedecor:nightstand_oak_two_drawers +mcl_doors:door_oak_t_2 +mcl_doors:door_birch_b_2 +mcl_flowerpots:flower_pot_sapling_jungle +mcl_chests:black_shulker_box_small +homedecor:bed_extended +homedecor:table_legs_wrought_iron +mcl_copper:block_preserved +mcl_copper:block_cut_preserved +mcl_copper:block_exposed_preserved +mcl_copper:block_exposed_cut_preserved +mcl_copper:block_weathered_preserved +mcl_copper:block_weathered_cut_preserved +mcl_copper:block_oxidized_preserved +mcl_copper:block_oxidized_cut_preserved +homedecor:book_open_brown +homedecor:book_brown +mcl_deepslate:deepslate_tiles_cracked +mcl_core:glass_black +homedecor:book_grey +homedecor:book_open_violet +mcl_colorblocks:glazed_terracotta_black +mcl_trees:wood_oak +mcl_mushrooms:mushroom_brown +mcl_trees:sapling_oak +mcl_trees:sapling_spruce +mcl_trees:sapling_birch +mcl_trees:sapling_dark_oak +homedecor:book_open_blue +mesecons_torch:mesecon_torch_on +mcl_signs:standing_sign_spruce +homedecor:book_green +mcl_stairs:slab_deepslate_tiles +mcl_stairs:slab_deepslate_tiles_top +mcl_stairs:slab_deepslate_tiles_double +homedecor:book_open_red +mcl_chests:trapped_chest_on_left +mcl_core:redsandstone +mcl_stairs:stair_stonebrick_outer +mcl_sculk:sculk +mcl_stairs:stair_sandstonesmooth2_inner +mesecons:wire_00010001_off +mcl_deepslate:deepslatetileswall +mcl_deepslate:deepslatetileswall_0 +homedecor:light_switch_off +mcl_deepslate:deepslatetileswall_1 +mcl_core:frosted_ice_1 +mcl_deepslate:deepslatetileswall_2 +mcl_chests:trapped_chest_left +mcl_core:frosted_ice_2 +homedecor:power_outlet +mcl_deepslate:deepslatetileswall_4 +mcl_core:frosted_ice_3 +mcl_deepslate:deepslatetileswall_5 +homedecor:telephone +mcl_deepslate:deepslatetileswall_6 +mcl_stairs:stair_redsandstonesmooth +mcl_deepslate:deepslatetileswall_7 +mcl_walls:endbricks_0 +mcl_deepslate:deepslatetileswall_8 +mcl_nether:red_nether_brick +mcl_deepslate:deepslatetileswall_9 +mcl_minecarts:rail +mcl_deepslate:deepslatetileswall_10 +mcl_stairs:stair_copper_cut_preserved +mcl_deepslate:deepslatetileswall_11 +mcl_minecarts:golden_rail +mcl_deepslate:deepslatetileswall_12 +mcl_walls:stonebrickmossy_4 +mcl_deepslate:deepslatetileswall_13 +mcl_stairs:stair_copper_exposed_cut_preserved +mcl_minecarts:activator_rail +mcl_stairs:stair_sandstonesmooth_outer +mcl_deepslate:deepslatetileswall_15 +mcl_barrels:barrel_closed +mcl_meshhand:mcl_skins_base_1EEB592FF_female_crea +mcl_stairs:stair_copper_weathered_cut_preserved +mcl_meshhand:mcl_skins_base_1EEB592FF_male_crea +mcl_meshhand:mcl_skins_base_1B47A57FF_female_crea +mcl_meshhand:mcl_skins_base_1B47A57FF_male_crea +mcl_meshhand:mcl_skins_base_18D471DFF_female_crea +mcl_meshhand:mcl_skins_base_18D471DFF_male_crea +mcl_stairs:stair_copper_oxidized_cut_preserved +mcl_meshhand:mcl_skins_character_1_female_crea +mcl_meshhand:mcl_skins_base_1EEB592FF_female_surv +mcl_meshhand:mcl_skins_base_1EEB592FF_male_surv +mcl_meshhand:mcl_skins_base_1B47A57FF_female_surv +mcl_meshhand:mcl_skins_base_1B47A57FF_male_surv +mcl_meshhand:mcl_skins_base_18D471DFF_female_surv +mcl_stairs:slab_copper_cut_preserved +mcl_meshhand:character_male_surv +mcl_meshhand:mcl_skins_character_1_female_surv +homedecor:fence_wrought_iron_2_corner +homedecor:fence_wrought_iron_2 +mcl_stairs:slab_copper_exposed_cut_preserved +mcl_flowers:double_fern +homedecor:fence_chainlink +homedecor:fence_barbed_wire_corner +homedecor:fence_picket_corner_white +mcl_stairs:slab_copper_weathered_cut_preserved +homedecor:fence_picket_corner +mcl_mushrooms:red_mushroom_block_cap_010010 +homedecor:fence_picket +mcl_mud:mud_bricks +mcl_stairs:slab_copper_oxidized_cut_preserved +mcl_doors:door_jungle_b_1 +mcl_mushrooms:red_mushroom_block_cap_010011 +homedecor:coat_tree +homedecor:coatrack_wallmount +mcl_stairs:stair_copper_cut_inner_preserved +mcl_mushrooms:red_mushroom_block_cap_010100 +homedecor:openframe_bookshelf +mcl_stairs:stair_copper_exposed_cut_inner_preserved +homedecor:wine_rack +mcl_mushrooms:red_mushroom_block_cap_010101 +mcl_stairs:stair_copper_weathered_cut_inner_preserved +homedecor:4_bottles_brown +homedecor:painting_14 +mcl_stairs:stair_copper_oxidized_cut_inner_preserved +homedecor:painting_13 +homedecor:painting_12 +homedecor:painting_11 +homedecor:painting_10 +mcl_stairs:stair_copper_cut_outer_preserved +homedecor:painting_9 +mcl_cauldrons:cauldron_1 +mcl_stairs:stair_copper_exposed_cut_outer_preserved +mcl_mushrooms:red_mushroom_block_cap_011000 +mcl_cauldrons:cauldron_1r +mcl_stairs:stair_copper_weathered_cut_outer_preserved +mcl_stairs:slab_acacia_top +mcl_stairs:slab_acacia_double +mcl_stairs:stair_copper_oxidized_cut_outer_preserved +homedecor:painting_8 +mcl_mushrooms:red_mushroom_block_cap_011010 +homedecor:painting_7 +homedecor:painting_6 +homedecor:painting_5 +mcl_end:end_stone +mcl_nether:netherrack +mcl_stairs:slab_copper_cut_top_preserved +mcl_crimson:warped_nylium +mcl_mushrooms:red_mushroom_block_cap_011100 +homedecor:painting_3 +homedecor:painting_2 +mcl_mushrooms:red_mushroom_block_cap_011101 +mcl_stairs:slab_copper_exposed_cut_top_preserved +homedecor:painting_1 +homedecor:picture_frame2 +mcl_mushrooms:red_mushroom_block_cap_011110 +homedecor:picture_frame1 +homedecor:tv_off +mcl_stairs:slab_copper_weathered_cut_top_preserved +mcl_mushrooms:red_mushroom_block_cap_011111 +homedecor:tv_stand +steel:strut +mcl_mushrooms:red_mushroom_block_cap_100000 +steel:roofing_wall +mcl_stairs:slab_copper_oxidized_cut_top_preserved +mcl_mushrooms:red_mushroom_block_cap_100001 +steel:roofing +steel:grate_soft +mcl_mushrooms:red_mushroom_block_cap_100010 +steel:plate_hard +homedecor:shingle_side_asphalt +homedecor:shingle_inner_corner_asphalt +mcl_stairs:slab_copper_cut_double_preserved +homedecor:shingles_terracotta +homedecor:shingles_asphalt +mcl_mushrooms:red_mushroom_block_cap_100100 +homedecor:kitchen_chair_padded +homedecor:bench_large_2 +mcl_stairs:slab_copper_exposed_cut_double_preserved +mcl_mushrooms:red_mushroom_block_cap_100101 +homedecor:bench_large_1 +homedecor:deckchair_striped_blue +mcl_mushrooms:red_mushroom_block_cap_100110 +homedecor:deckchair +mcl_stairs:slab_copper_weathered_cut_double_preserved +homedecor:armchair +mcl_mushrooms:red_mushroom_block_cap_100111 +lrfurn:armchair +mcl_deepslate:deepslatepolishedwall_9 +mcl_mushrooms:red_mushroom_block_cap_101000 +mcl_stairs:slab_copper_oxidized_cut_double_preserved +mcl_mushrooms:red_mushroom_block_cap_101001 +mcl_stairs:stair_copper_weathered_cut_outer +mcl_stairs:stair_copper_weathered_cut_inner +mcl_mushrooms:red_mushroom_block_cap_101010 +homedecor:table_white +homedecor:table_mahogany +homedecor:table +mcl_mushrooms:red_mushroom_block_cap_101011 +mcl_stairs:slab_copper_weathered_cut +mcl_stairs:slab_copper_weathered_cut_top +mcl_stairs:slab_copper_weathered_cut_double +homedecor:wood_table_small_round_with_brass_legs +homedecor:wood_table_small_round +mcl_mushrooms:red_mushroom_block_cap_101101 +basic_materials:cement_block +homedecor:wood_table_small_square_with_wrought_iron_legs +mesecons:wire_01000000_on +mesecons:wire_01000000_off +homedecor:wood_table_small_square_with_brass_legs +basic_materials:concrete_block +mcl_mushrooms:red_mushroom_block_cap_101111 +mcl_stairs:stair_copper_oxidized_cut_outer +basic_materials:chain_steel +mcl_mushrooms:red_mushroom_block_cap_110000 +mcl_cauldrons:cauldron_3_lava +mcl_mushrooms:red_mushroom_block_cap_110001 +homedecor:wood_table_small_square +basic_materials:chain_brass +mcl_stairs:slab_copper_oxidized_cut +mcl_stairs:slab_copper_oxidized_cut_top +mcl_stairs:slab_copper_oxidized_cut_double +basic_materials:brass_block +homedecor:wood_table_large_square_with_brass_legs +homedecor:glass_table_small_round_with_wood_legs +mcl_mushrooms:red_mushroom_block_cap_110100 +homedecor:glass_table_small_round_with_wrought_iron_legs +mcl_mushrooms:red_mushroom_block_cap_110101 +homedecor:glass_table_small_round_with_brass_legs +mesecons:wire_00100000_on +mesecons:wire_00100000_off +homedecor:glass_table_small_round +homedecor:glass_table_small_square_with_wood_legs +homedecor:glass_table_small_square_with_wrought_iron_legs +mcl_mushrooms:red_mushroom_block_cap_110111 +homedecor:glass_table_small_square_with_brass_legs +homedecor:glass_table_small_square +mcl_mushrooms:red_mushroom_block_cap_111000 +homedecor:glass_table_large_square_with_wood_legs +mcl_mushrooms:red_mushroom_block_cap_111001 +mesecons:wire_10100000_on +mesecons:wire_10100000_off +mcl_mushrooms:red_mushroom_block_cap_111010 +homedecor:glass_table_large_square_with_wrought_iron_legs +mcl_stairs:slab_dark_oak +mcl_stairs:slab_dark_oak_top +mcl_stairs:slab_dark_oak_double +mcl_mushrooms:red_mushroom_block_cap_111100 +homedecor:glass_table_large_square_with_brass_legs +mcl_mushrooms:red_mushroom_block_cap_111101 +homedecor:glass_table_large_square +mcl_cauldrons:cauldron_1_lava +mcl_mushrooms:red_mushroom_block_cap_111110 +mcl_panes:pane_silver_flat +homedecor:table_legs_wood +homedecor:bed_regular +homedecor:table_legs_brass +homedecor:trash_can +homedecor:trash_can_green_open +mcl_stairs:slab_dark_oak_bark +mcl_stairs:slab_dark_oak_bark_top +mcl_stairs:slab_dark_oak_bark_double +mesecons:wire_11100000_on +mesecons:wire_11100000_off +mcl_cauldrons:cauldron_2_lava +homedecor:trash_can_green +mcl_brewing:stand_100 +mcl_brewing:stand_010 +mcl_brewing:stand_001 +mcl_brewing:stand_110 +mcl_brewing:stand_101 +mcl_brewing:stand_011 +mcl_brewing:stand_111 +mesecons:wire_00010000_on +mesecons:wire_00010000_off +itemframes:pedestal +mcl_mushrooms:brown_mushroom_block_cap_000100 +itemframes:frame +mcl_mushrooms:brown_mushroom_block_cap_000101 +mcl_panes:pane_light_blue_flat +mcl_mushrooms:brown_mushroom_block_cap_000110 +pipeworks:autocrafter +mcl_mushrooms:brown_mushroom_block_cap_000111 +pipeworks:storage_tank_10 +mcl_mushrooms:brown_mushroom_block_cap_001000 +mesecons:wire_10010000_off +mcl_mushrooms:brown_mushroom_block_cap_001001 +pipeworks:expansion_tank_10 +mcl_mushrooms:brown_mushroom_block_cap_001010 +pipeworks:mese_tube_100011 +mcl_mushrooms:brown_mushroom_block_cap_001011 +pipeworks:storage_tank_8 +mcl_mushrooms:brown_mushroom_block_cap_001100 +pipeworks:storage_tank_7 +mcl_mushrooms:brown_mushroom_block_cap_001101 +mesecons:wire_01010000_on +mesecons:wire_01010000_off +pipeworks:expansion_tank_7 +mcl_mushrooms:brown_mushroom_block_cap_001111 +pipeworks:mese_tube_100101 +mcl_mushrooms:brown_mushroom_block_cap_010000 +pipeworks:expansion_tank_6 +mcl_mushrooms:brown_mushroom_block_cap_010001 +pipeworks:storage_tank_5 +mcl_mushrooms:brown_mushroom_block_cap_010010 +mcl_panes:pane_orange_flat +mcl_mushrooms:brown_mushroom_block_cap_010011 +mesecons:wire_11010000_off +mcl_mushrooms:brown_mushroom_block_cap_010100 +pipeworks:mese_tube_100111 +mcl_mushrooms:brown_mushroom_block_cap_010101 +pipeworks:expansion_tank_5 +mcl_mushrooms:brown_mushroom_block_cap_010110 +mcl_nether:nether_lava_source +pipeworks:storage_tank_4 +pipeworks:expansion_tank_4 +pipeworks:storage_tank_3 +mesecons:wire_00110000_on +mesecons:wire_00110000_off +mcl_end:end_bricks +pipeworks:mese_tube_101010 +pipeworks:expansion_tank_3 +mcl_panes:pane_orange +pipeworks:storage_tank_2 +pipeworks:expansion_tank_2 +mcl_end:purpur_pillar +mcl_stairs:stair_copper_oxidized_cut +mcl_copper:block_weathered_cut +mesecons:wire_10110000_on +mesecons:wire_10110000_off +pipeworks:storage_tank_0 +mcl_core:stone_with_coal +pipeworks:expansion_tank_0 +mcl_signs:wall_sign_birch +pipeworks:spigot +pipeworks:grating +pipeworks:pump_off +mcl_core:stone_with_iron +pipeworks:pump_on +pipeworks:pipe_compatibility_empty +pipeworks:pipe_10_empty +pipeworks:pipe_9_loaded +mcl_core:stone_with_gold +mesecons:wire_01110000_on +mesecons:wire_01110000_off +pipeworks:pipe_8_empty +mesecons_pressureplates:pressure_plate_birch_on +pipeworks:pipe_6_loaded +mcl_panes:pane_lime +pipeworks:pipe_5_empty +mesecons_button:button_birch_off +mcl_ocean:kelp_redsand +pipeworks:pipe_3_empty +pipeworks:pipe_1_loaded +mesecons_button:button_birch_on +mesecons:wire_11110000_off +mcl_core:stone_with_redstone_lit +mcl_panes:pane_purple_flat +pipeworks:mese_sand_tube_compatibility +mcl_flowerpots:flower_pot_sapling_birch +pipeworks:priority_tube_2 +pipeworks:mese_sand_tube_9 +pipeworks:mese_sand_tube_7 +pipeworks:priority_tube_3 +pipeworks:mese_sand_tube_5 +mesecons:wire_10001000_on +mesecons:wire_10001000_off +pipeworks:mese_sand_tube_3 +mcl_stairs:stair_end_bricks +pipeworks:priority_tube_5 +mcl_stairs:stair_end_bricks_outer +mcl_beacons:beacon +pipeworks:priority_tube_6 +pipeworks:mese_sand_tube_1 +mcl_panes:pane_purple +pipeworks:priority_tube_7 +mesecons:wire_11001000_on +mesecons:wire_11001000_off +mcl_sus_nodes:sand_1 +mcl_stairs:slab_end_bricks_double +pipeworks:sand_tube_compatibility +pipeworks:priority_tube_9 +mcl_sus_nodes:sand_2 +pipeworks:sand_tube_9 +mcl_panes:pane_grey_flat +pipeworks:sand_tube_8 +mcl_sus_nodes:sand_3 +mesecons:wire_10101000_on +mesecons:wire_10101000_off +pipeworks:sand_tube_3 +mcl_villages:crop_grain_4 +mcl_sus_nodes:gravel +mcl_villages:crop_grain_5 +mcl_sus_nodes:gravel_1 +mesecons:wire_11101000_on +mcl_sus_nodes:gravel_2 +mcl_panes:pane_grey +mcl_villages:crop_grain_8 +mesecons:wire_10011000_on +mcl_nether:ancient_debris +mcl_villages:crop_root_4 +mcl_flowerpots:flower_pot_cactus +mesecons:wire_11011000_on +mesecons:wire_11011000_off +mcl_villages:crop_root_7 +mcl_core:glass +mcl_panes:pane_cyan +mesecons:wire_10111000_on +mesecons:wire_10111000_off +mcl_villages:crop_gourd_3 +mcl_villages:crop_gourd_4 +homedecor:kitchen_cabinet_colorable +mcl_villages:crop_gourd_5 +mcl_core:glass_grey +mcl_villages:crop_gourd_7 +pipeworks:teleport_tube_10 +mcl_core:glass_yellow +mcl_villages:crop_gourd_8 +mcl_deepslate:deepslatetileswall_16 +pipeworks:trashcan +pipeworks:accelerator_tube_1 +pipeworks:teleport_tube_6 +pipeworks:teleport_tube_5 +mcl_core:glass_white +pipeworks:teleport_tube_4 +homedecor:piano +pipeworks:accelerator_tube_3 +pipeworks:teleport_tube_2 +pipeworks:teleport_tube_1 +pipeworks:accelerator_tube_4 +mcl_core:glass_pink +pipeworks:tag_tube_111011 +pipeworks:accelerator_tube_5 +pipeworks:tag_tube_111010 +mcl_portals:portal_end +pipeworks:accelerator_tube_6 +pipeworks:tag_tube_111001 +pipeworks:tag_tube_110110 +pipeworks:accelerator_tube_7 +pipeworks:tag_tube_110011 +pipeworks:tag_tube_110010 +mesecons_pistons:piston_normal_on +mesecons_pistons:piston_pusher_normal +pipeworks:tag_tube_110001 +mcl_villages:crop_bush_8 +pipeworks:tag_tube_011101 +pipeworks:tag_tube_001010 +mcl_villages:crop_tree_1 +mesecons_torch:redstoneblock +mcl_villages:crop_tree_2 +mcl_villages:crop_tree_3 +signs_road:green_left_sign +mcl_villages:crop_tree_4 +signs_road:green_right_sign +mesecons_pistons:piston_sticky_on +mesecons_pistons:piston_pusher_sticky +signs_road:yellow_left_sign +signs_road:yellow_right_sign +mcl_villages:crop_tree_7 +mcl_deepslate:deepslatebrickswall_0 +mesecons_pistons:piston_up_normal_on +mesecons_pistons:piston_up_pusher_normal +mcl_copper:block +signs_road:red_right_sign +mesecons_pistons:piston_up_sticky_on +mesecons_pistons:piston_up_pusher_sticky +mcl_walls:sandstone_4 +pipeworks:mese_tube_101011 +mcl_villages:crop_flower_4 +homedecor:flower_pot_terracotta +homedecor:flower_pot_green +homedecor:flower_pot_black +pipeworks:mese_tube_101100 +mcl_villages:crop_flower_6 +mcl_doors:trapdoor_jungle_open +signs_road:large_street_sign +pipeworks:mese_tube_101101 +signs_road:red_street_sign +signs_road:blue_sign +signs_road:yellow_sign +signs_road:green_sign +signs:wooden_long_sign +signs_road:red_sign +signs_road:white_sign +homedecor:rug_large +homedecor:rug_persian +pipeworks:mese_tube_101111 +mcl_stairs:stair_jungle_inner +mcl_walls:diorite_16 +pipeworks:mese_tube_110000 +homedecor:japanese_wall_middle +homedecor:japanese_wall_bottom +mcl_flowerpots:flower_pot_wither_rose +mcl_stairs:stair_stonebrickcracked_outer +pipeworks:mese_tube_110001 +mcl_deepslate:deepslatecobbledwall_12 +pipeworks:mese_tube_111111 +homedecor:dartboard +mcl_flowerpots:flower_pot_lily_of_the_valley +pipeworks:mese_tube_110010 +pipeworks:tube_10 +homedecor:sportbench +pipeworks:broken_tube_9 +homedecor:skateboard +mcl_flowerpots:flower_pot_cornflower +pipeworks:accelerator_tube_2 +pipeworks:crossing_tube_3 +pipeworks:mese_tube_110111 +pipeworks:mese_tube_100001 +pipeworks:mese_tube_110100 +pipeworks:mese_tube_101000 +homedecor:banister_wood_horizontal +pipeworks:mese_tube_101110 +pipeworks:mese_tube_101001 +pipeworks:mese_tube_110101 +boards:black_board +pipeworks:mese_tube_100110 +boards:green_board +pipeworks:mese_tube_100100 +pipeworks:mese_tube_110110 +pipeworks:mese_tube_100000 +pipeworks:mese_tube_011111 +pipeworks:mese_tube_011110 +pipeworks:mese_tube_011101 +mcl_nether:netheriteblock +pipeworks:mese_tube_000011 +pipeworks:mese_tube_000001 +pipeworks:mese_tube_111000 +pipeworks:crossing_tube_1 +pipeworks:accelerator_tube_compatibility +pipeworks:accelerator_tube_10 +pipeworks:accelerator_tube_8 +pipeworks:mese_tube_111001 +pipeworks:priority_tube_compatibility +pipeworks:priority_tube_10 +pipeworks:mese_tube_111010 +pipeworks:priority_tube_4 +pipeworks:priority_tube_1 +pipeworks:broken_tube_compatibility +pipeworks:broken_tube_10 +pipeworks:mese_tube_111011 +pipeworks:broken_tube_8 +pipeworks:broken_tube_7 +pipeworks:mese_tube_111100 +pipeworks:broken_tube_5 +pipeworks:broken_tube_4 +pipeworks:broken_tube_2 +pipeworks:broken_tube_1 +pipeworks:mese_tube_111101 +pipeworks:tube_8 +pipeworks:tube_6 +pipeworks:mese_tube_111110 +mcl_core:coarse_dirt +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 +mcl_lanterns:chain +pipeworks:dispenser_on +pipeworks:deployer_off +mcl_nether:cracked_nether_brick +mcl_nether:nether_wart_block +signs:wooden_left_sign +mcl_core:grass_path +signs:wooden_right_sign +mcl_nether:quartz_block +pipeworks:teleport_tube_7 +mcl_deepslate:deepslate_chiseled +mcl_deepslate:deepslatetileswall_21 +pipeworks:teleport_tube_8 +mcl_beehives:bee_nest_1 +mcl_nether:quartz_chiseled +mcl_beehives:bee_nest_2 +mcl_deepslate:deepslatetileswall_14 +mcl_beehives:bee_nest_3 +mcl_nether:quartz_pillar +mcl_beehives:bee_nest_4 +pipeworks:teleport_tube_compatibility +mcl_stairs:stair_deepslate_tiles_inner +mcl_nether:quartz_smooth +mcl_stairs:stair_deepslate_tiles_outer +mcl_stairs:stair_deepslate_tiles +mcl_deepslate:deepslate_tiles +mcl_deepslate:deepslatebrickswall_14 +signs:wooden_sign +mcl_deepslate:deepslatebrickswall_13 +signs:label_medium +signs:paper_poster +mcl_deepslate:deepslatebrickswall_9 +mcl_deepslate:deepslatebrickswall_8 +mcl_deepslate:deepslatebrickswall_3 +mcl_deepslate:deepslatebrickswall_2 +mcl_deepslate:deepslatebrickswall_1 +mcl_stairs:stair_deepslate_bricks_inner +mcl_stairs:stair_deepslate_bricks_outer +mcl_stairs:stair_deepslate_bricks +mcl_deepslate:deepslate_bricks +mcl_deepslate:deepslatepolishedwall_21 +mcl_deepslate:deepslatepolishedwall_16 +mcl_deepslate:deepslatepolishedwall_15 +mcl_deepslate:deepslatepolishedwall_14 +mcl_deepslate:deepslatepolishedwall_13 +mcl_deepslate:deepslatepolishedwall_12 +mcl_deepslate:deepslatepolishedwall_11 +mcl_deepslate:deepslatepolishedwall_10 +mcl_trees:stripped_dark_oak +lrfurn:sofa +mcl_deepslate:deepslatepolishedwall_8 +mcl_deepslate:deepslatepolishedwall_7 +mcl_deepslate:deepslatepolishedwall_6 +mcl_trees:wood_dark_oak +mcl_deepslate:deepslatepolishedwall_5 +mcl_deepslate:deepslatepolishedwall_3 +mcl_deepslate:deepslatepolishedwall_0 +mcl_stairs:slab_deepslate_polished_double +mcl_trees:bark_stripped_dark_oak +mcl_trees:bark_dark_oak +mcl_stairs:stair_deepslate_polished +mcl_deepslate:deepslate_polished +mcl_deepslate:deepslatecobbledwall +mcl_deepslate:deepslatecobbledwall_15 +mcl_deepslate:deepslatecobbledwall_2 +mcl_stairs:slab_jungle_top +homedecor:hanging_lantern_4 +mesecons:wire_10110010_off +homedecor:ceiling_lantern_4 +mcl_farming:wheat_1 +homedecor:lattice_lantern_large_4 +mcl_monster_eggs:monster_egg_stone +homedecor:lattice_lantern_small_4 +mcl_doors:door_bamboo_t_1 +homedecor:desk_lamp_4 +mcl_trees:leaves_dark_oak +mcl_trees:leaves_dark_oak_orphan +homedecor:ceiling_lamp_4 +mcl_stairs:stair_jungle +mcl_trees:sapling_jungle +homedecor:table_lamp_4 +homedecor:book_red +mcl_fences:dark_oak_fence +mcl_sus_nodes:gravel_3 +mcl_fences:dark_oak_fence_gate +mcl_fences:dark_oak_fence_gate_open +mcl_walls:diorite_9 +homedecor:glowlight_quarter_5 +mcl_flowerpots:flower_pot_poppy +homedecor:glowlight_small_cube_5 +homedecor:fence_chainlink_corner +mcl_flowers:rose_bush +homedecor:plasma_lamp_5 +homedecor:book_open_green +mcl_lush_caves:spore_blossom +homedecor:ground_lantern_5 +mcl_lush_caves:moss_carpet +mesecons_delayer:delayer_off_2 +homedecor:hanging_lantern_5 +homedecor:book_blue +mcl_stairs:slab_stone_rough +mcl_lush_caves:hanging_roots +mcl_doors:door_dark_oak_b_1 +mcl_lush_caves:rooted_dirt +mcl_stairs:stair_quartzblock_outer +mcl_stairs:stair_quartzblock_inner +mcl_doors:door_jungle_t_1 +mcl_doors:door_dark_oak_t_1 +homedecor:book_violet +mcl_colorblocks:glazed_terracotta_grey +mcl_doors:door_dark_oak_b_2 +mcl_stairs:slab_quartzblock +mcl_stairs:slab_quartzblock_top +mcl_doors:door_dark_oak_t_2 +homedecor:fence_brass +mcl_doors:trapdoor_dark_oak +mcl_stairs:stair_andesite_smooth_inner +homedecor:table_lamp_5 +homedecor:fence_wrought_iron +mcl_colorblocks:glazed_terracotta_lime +homedecor:standing_lamp_5 +mcl_colorblocks:glazed_terracotta_red +mcl_stairs:stair_redsandstone +mcl_walls:prismarine_5 +mcl_stairs:stair_quartz_smooth +mcl_lush_caves:cave_vines_lit +mcl_lush_caves:cave_vines +mcl_doors:trapdoor_dark_oak_open +mcl_core:lapisblock +mcl_walls:prismarine_4 +mcl_copper:block_exposed_cut +mcl_copper:block_cut +mcl_stairs:stair_dark_oak +mcl_stairs:slab_quartz_smooth +mcl_stairs:stair_dark_oak_outer +mcl_stairs:stair_dark_oak_inner +mcl_lush_caves:azalea +mcl_colorblocks:concrete_pink +mcl_farming:pumpkintige_linked_r +mcl_farming:pumpkintige_linked_l +mcl_farming:pumpkintige_linked_t +mcl_farming:pumpkintige_linked_b +mcl_stairs:stair_dark_oak_bark +mcl_core:diamondblock +mcl_stairs:stair_dark_oak_bark_outer +mcl_stairs:stair_dark_oak_bark_inner +mcl_stairs:stair_nether_brick +mcl_copper:block_weathered +mcl_stairs:stair_nether_brick_outer +mcl_stairs:stair_nether_brick_inner +mcl_fences:jungle_fence_gate +mcl_campfires:soul_campfire +mcl_fences:jungle_fence +mcl_maps:filled_map_mcl_skins_base_1EEB592FF_female_surv +mcl_stairs:slab_sandstonesmooth_top +mcl_stairs:slab_nether_brick +mcl_stairs:slab_nether_brick_top +mcl_colorblocks:hardened_clay_magenta +mcl_maps:filled_map_mcl_skins_base_1B47A57FF_female_crea +mcl_maps:filled_map_mcl_skins_base_1EEB592FF_male_crea +mcl_colorblocks:concrete_powder_magenta +mcl_maps:filled_map_mcl_skins_base_1EEB592FF_female_crea +mcl_colorblocks:concrete_magenta +mcl_core:coalblock +homedecor:light_switch_on +mcl_stairs:stair_sandstonesmooth_inner +homedecor:speaker_open +mcl_stairs:stair_sandstonesmooth +mcl_stairs:stair_red_nether_brick +mcl_chests:chest +mcl_stairs:stair_red_nether_brick_outer +mcl_stairs:stair_red_nether_brick_inner +homedecor:bed_kingsize +homedecor:nightstand_oak_one_drawer +homedecor:speaker +homedecor:nightstand_mahogany_one_drawer +homedecor:nightstand_mahogany_two_drawers +mcl_stairs:slab_red_nether_brick +mcl_stairs:slab_red_nether_brick_top +mcl_stairs:slab_red_nether_brick_double +mcl_mushrooms:red_mushroom_block_cap_101100 +homedecor:doorbell +mcl_colorblocks:hardened_clay_blue +mesecons:wire_11000000_on +mcl_stairs:slab_stonebrick_top +mcl_colorblocks:concrete_powder_blue +mcl_stairs:slab_stonebrick +mcl_colorblocks:concrete_blue +mcl_walls:stonebrickmossy_5 +homedecor:cobweb_corner +mcl_cauldrons:cauldron_2 +mcl_fences:nether_brick_fence +homedecor:cobweb_centered +mcl_stairs:stair_stonebrick_inner +homedecor:cobweb_flat +mcl_stairs:stair_stonebrick +mcl_mushrooms:brown_mushroom_block_cap_111111 +homedecor:cobweb_plantlike +mesecons_commandblock:commandblock_on +mcl_stairs:slab_sandstone_double +mcl_stairs:slab_warped +mcl_mangrove:mangrove_mud_roots +homedecor:nightstand_oak_one_drawer_locked +mcl_core:crying_obsidian +mcl_core:obsidian +mcl_stairs:slab_redsandstonesmooth_top +mcl_core:void +mcl_core:realm_barrier +mesecons:wire_00000000_on +mesecons_pressureplates:pressure_plate_birch_off +mcl_walls:rednetherbrick_1 +mcl_stairs:stair_redsandstonesmooth_outer +homedecor:dvd_vcr +mcl_panes:pane_white +homedecor:nightstand_oak_two_drawers_locked +mcl_stairs:slab_warped_bark +mcl_stairs:slab_warped_bark_top +mcl_stairs:slab_warped_bark_double +mcl_walls:endbricks_10 +mcl_walls:endbricks_14 +mcl_stairs:slab_oak +mcl_walls:mudbrick_21 +mcl_walls:mudbrick_14 +mcl_walls:mudbrick_6 +mcl_observers:observer_off +signs_road:red_left_sign +mcl_lush_caves:azalea_leaves +mesecons_button:button_oak_on +mcl_signs:wall_sign_warped +mcl_walls:endbricks_8 +mcl_lush_caves:azalea_leaves_flowering +mcl_stairs:slab_redsandstone_double +mcl_stairs:slab_redsandstone +mcl_trees:tree_oak +homedecor:projection_screen +mcl_walls:prismarine_21 +mcl_stairs:stair_mossycobble +mcl_stairs:stair_redsandstone_inner +mesecons_pressureplates:pressure_plate_warped_off +mcl_core:snow_5 +mesecons_pressureplates:pressure_plate_warped_on +mcl_core:snow_2 +homedecor:speaker_small +mcl_walls:stonebrickmossy_1 +mesecons_button:button_warped_off +homedecor:stereo +mcl_flowerpots:flower_pot_azalea +homedecor:book_open_grey +mesecons_button:button_warped_on +mcl_mushrooms:red_mushroom_block_cap_011001 +mesecons_solarpanel:solar_panel_inverted_on +mcl_core:snow_8 +mcl_flowerpots:flower_pot_azalea_flowering +mcl_core:snow_6 +mcl_core:frosted_ice_0 +mcl_core:glass_brown +mcl_stairs:stair_cobble +mcl_mushrooms:red_mushroom_block_cap_011011 +mcl_mushrooms:red_mushroom_block_cap_110011 +mesecons_solarpanel:solar_panel_off +mcl_walls:sandstone_8 +mcl_flowerpots:flower_pot_mushroom_brown +mesecons:wire_00110011_off +mesecons_pistons:piston_down_sticky_on +mcl_walls:sandstone_0 +mcl_walls:brick_14 +mcl_walls:brick_13 +mcl_stairs:slab_acacia_bark +mcl_stairs:slab_acacia_bark_top +mcl_stairs:slab_acacia_bark_double +mcl_stairs:slab_diorite +mesecons:wire_01110101_on +mcl_core:stone_with_lapis +mcl_sculk:vein +mcl_stairs:stair_diorite_inner +mcl_stairs:stair_diorite_outer +mcl_core:ice +mesecons:wire_01110101_off +mcl_honey:honeycomb_block +mcl_stairs:stair_spruce_bark_outer +mcl_nether:chiseled_nether_brick +mcl_signs:wall_sign_acacia +mcl_walls:brick_0 +mcl_stairs:slab_oak_bark_top +mesecons:wire_10110010_on +signs:label_small +mcl_flowers:tulip_pink +mcl_honey:honey_block +mcl_grindstone:grindstone +mcl_stairs:stair_acacia_bark +mcl_doors:trapdoor_acacia_open +mcl_doors:iron_trapdoor_open +mesecons_pressureplates:pressure_plate_acacia_off +mcl_walls:granite_21 +mesecons_pressureplates:pressure_plate_acacia_on +mesecons:wire_11110011_on +mesecons:wire_11110101_off +mcl_wool:brown_carpet +mesecons_pistons:piston_sticky_off +mesecons_pistons:piston_normal_off +mesecons_pistons:piston_up_sticky_off +mesecons_pistons:piston_up_normal_off +mesecons_pistons:piston_down_sticky_off +mesecons_pistons:piston_down_normal_off +mcl_walls:granite_13 +mcl_walls:netherbrick_2 +mcl_ocean:prismarine +mcl_flowerpots:flower_pot_sapling_acacia +mcl_copper:block_oxidized_cut +mcl_core:stonebrickmossy +mcl_ocean:prismarine_brick +mcl_copper:block_exposed +mcl_stairs:stair_deepslate_cobbled_inner +mcl_ocean:prismarine_dark +mcl_maps:filled_map_mcl_skins_character_1_female_crea +mcl_mushrooms:red_mushroom_block_stem +mcl_mushrooms:brown_mushroom_block_cap_100110 +mcl_mushrooms:red_mushroom_block_cap_110010 +mcl_lanterns:lantern_floor +mcl_trees:tree_dark_oak +mcl_walls:andesite_21 +mcl_walls:sandstone_21 +mcl_mushrooms:red_mushroom_block_cap_000011 +mesecons_button:button_stone_off +mcl_colorblocks:hardened_clay_green +mesecons_lightstone:lightstone_off +mcl_core:bedrock +mcl_stairs:slab_mangrove +mcl_stairs:slab_mangrove_top +mcl_stairs:slab_mangrove_double +mcl_fences:red_nether_brick_fence_gate_open +mesecons_lightstone:lightstone_on +mcl_colorblocks:concrete_powder_light_blue +mcl_stairs:slab_nether_brick_double +mcl_stairs:slab_quartz_smooth_top +mcl_nether:glowstone +mesecons:wire_10110011_on +mcl_stairs:stair_quartz_smooth_outer +mcl_mushrooms:red_mushroom_block_cap_010111 +mcl_stairs:stair_quartzblock +mcl_trees:stripped_birch +mcl_nether:quartz_ore +mcl_stairs:slab_mangrove_bark +mcl_stairs:slab_mangrove_bark_top +mcl_stairs:slab_mangrove_bark_double +mcl_stairs:stair_prismarine_inner +mcl_ocean:sea_pickle_4_dead_brain_coral_block +mcl_wool:blue_carpet +mcl_ocean:sea_pickle_2_off_dead_brain_coral_block +mcl_mushrooms:red_mushroom_block_cap_111011 +mcl_trees:bark_stripped_birch +mcl_trees:bark_birch +mcl_stairs:slab_prismarine_top +mcl_stairs:slab_prismarine_double +mcl_ocean:sea_pickle_1_off_dead_brain_coral_block +mcl_mushrooms:red_mushroom_block_cap_110110 +mcl_signs:wall_sign_mangrove +mcl_ocean:kelp_sand +mcl_stairs:stair_purpur_block +mcl_ocean:dead_horn_coral_block +mcl_stairs:stair_purpur_block_outer +mcl_stairs:stair_purpur_block_inner +mcl_flowerpots:flower_pot +mcl_stairs:slab_mud_brick +mcl_stairs:stair_prismarine_brick +mcl_meshhand:mcl_skins_base_18D471DFF_male_surv +mcl_stairs:stair_prismarine_brick_outer +mcl_stairs:stair_prismarine_brick_inner +mcl_stairs:slab_purpur_block_top +mcl_stairs:slab_purpur_block_double +mesecons_pressureplates:pressure_plate_mangrove_off +mcl_mushrooms:brown_mushroom_block_stem_full +mesecons_pressureplates:pressure_plate_mangrove_on +mcl_stairs:slab_prismarine_brick +mcl_stairs:slab_prismarine_brick_top +mcl_stairs:slab_prismarine_brick_double +mesecons_button:button_mangrove_off +mcl_stairs:stair_birch_bark_inner +mcl_walls:endbricks_11 +mcl_mushrooms:brown_mushroom_block_cap_000011 +mcl_chests:violet_shulker_box_small +mcl_wool:pink +mesecons:wire_01100000_off +mcl_fences:birch_fence +mesecons_button:button_stone_on +mcl_fences:birch_fence_gate +mcl_stairs:stair_prismarine_dark +mesecons:wire_10010000_on +mesecons_button:button_mangrove_on +mcl_stairs:stair_prismarine_dark_inner +mcl_trees:leaves_oak_orphan +mcl_trees:leaves_jungle +mcl_chests:magenta_shulker_box_small +mcl_signs:standing_sign_oak +mcl_mushrooms:brown_mushroom_block_cap_111101 +mcl_stairs:slab_prismarine_dark_top +mcl_stairs:slab_prismarine_dark_double +mcl_signs:standing_sign_jungle +mcl_colorblocks:concrete_powder_yellow +mcl_signs:standing_sign_birch +mcl_trees:leaves_jungle_orphan +mesecons_button:button_polished_blackstone_off +mcl_stairs:slab_spruce_double +mcl_doors:door_birch_b_1 +mesecons:wire_11010000_on +mesecons_button:button_polished_blackstone_on +mcl_beehives:beehive +mcl_signs:standing_sign_crimson +mcl_doors:door_birch_t_1 +mcl_signs:standing_sign_warped +mcl_stonecutter:stonecutter +mcl_signs:standing_sign_cherry_blossom +mcl_target:target_off +mcl_mangrove:propagule_dirt +mcl_doors:door_birch_t_2 +mcl_walls:brick_11 +mcl_mangrove:propagule_coarse_dirt +mcl_stairs:stair_jungle_outer +mesecons:wire_11011101_off +mcl_farming:hay_block +mcl_beds:bed_grey_bottom +mcl_stairs:stair_sandstone_inner +mcl_lush_caves:azalea_flowering +mcl_panes:pane_cyan_flat +mcl_trees:leaves_birch +mcl_wool:white_carpet +mcl_mushrooms:brown_mushroom_block_cap_001110 +mcl_panes:pane_red_flat +mcl_doors:trapdoor_birch_open +mcl_mushrooms:brown_mushroom_block_cap_101111 +mcl_beacons:beacon_beam +mcl_blackstone:soul_soil +mcl_core:stone_with_redstone +mcl_flowerpots:flower_pot_propagule +signs_road:blue_street_sign +mcl_stairs:stair_birch_outer +mcl_stairs:stair_birch_inner +mcl_colorblocks:concrete_powder_pink +mesecons:wire_10010001_off +mcl_heads:steve +mesecons:wire_01110011_on +mcl_mangrove:propagule_clay +mcl_stairs:slab_mud_brick_double +mcl_stairs:stair_birch_bark +mcl_heads:steve_ceiling +mcl_stairs:stair_birch_bark_outer +mcl_panes:pane_natural_flat +mcl_walls:sandstone_15 +mcl_beehives:beehive_5 +mcl_beehives:bee_nest_5 +mesecons:wire_11110000_on +mcl_mud:mud +mcl_trees:leaves_acacia_orphan +mcl_stairs:stair_birch +mcl_stairs:slab_birch +mcl_stairs:slab_birch_top +mcl_stairs:slab_birch_double +mcl_colorblocks:concrete_cyan +mcl_colorblocks:glazed_terracotta_cyan +mcl_stairs:slab_spruce_top +mcl_colorblocks:hardened_clay_cyan +mcl_colorblocks:glazed_terracotta_magenta +mcl_signs:wall_sign_spruce +mcl_panes:pane_natural +mesecons_pressureplates:pressure_plate_spruce_off +mcl_fences:acacia_fence_gate_open +mcl_colorblocks:glazed_terracotta_light_blue +mcl_mushrooms:mushroom_red +mcl_mushrooms:red_mushroom_block_cap_101110 +mcl_stairs:slab_birch_bark +mcl_stairs:slab_birch_bark_top +mcl_stairs:slab_birch_bark_double +mcl_panes:bar +mcl_stairs:stair_mud_brick_inner +mcl_panes:pane_yellow_flat +mcl_core:podzol +mcl_core:podzol_snow +mcl_core:mycelium +mcl_core:mycelium_snow +mcl_trees:stripped_oak +mcl_beehives:beehive_1 +mcl_doors:trapdoor_birch +mcl_beehives:beehive_2 +mcl_panes:bar_flat +mcl_beehives:beehive_3 +mesecons:wire_10011000_off +mcl_beehives:beehive_4 +mesecons_pressureplates:pressure_plate_jungle_off +mcl_signs:standing_sign_dark_oak +mesecons_pressureplates:pressure_plate_dark_oak_off +homedecor:rope_light_on_floor_on +mcl_panes:pane_yellow +mcl_panes:pane_red +mcl_stairs:stair_prismarine_dark_outer +mcl_panes:pane_lime_flat +mcl_fences:birch_fence_gate_open +mcl_colorblocks:concrete_powder_purple +homedecor:rope_light_on_ceiling_on +homedecor:rope_light_on_ceiling_off +mcl_flowers:cornflower +mcl_flowers:lily_of_the_valley +mcl_lush_caves:moss +mesecons_delayer:delayer_off_locked +mcl_core:dirt +mcl_flowers:wither_rose +mcl_wool:lime +mcl_stairs:slab_end_bricks_top +mcl_trees:wood_birch +mcl_stairs:stair_prismarine_outer +mcl_stairs:stair_prismarine +mcl_wool:orange +mcl_core:stone +mcl_stairs:slab_jungle_bark_double +mcl_chests:chest_left +mcl_chests:trapped_chest +mcl_colorblocks:hardened_clay_lime +mcl_colorblocks:hardened_clay_orange +mcl_chests:trapped_chest_on +mcl_chests:ender_chest_small +mcl_wool:silver +mcl_chests:dark_grey_shulker_box_small +mcl_chests:violet_shulker_box +mcl_chests:green_shulker_box_small +mcl_doors:door_mangrove_b_1 +mcl_ocean:tube_coral_block +mesecons_button:button_acacia_on +mcl_wool:black +mesecons_button:button_acacia_off +mcl_chests:brown_shulker_box_small +mcl_chests:cyan_shulker_box_small +mcl_chests:grey_shulker_box_small +mcl_mushrooms:brown_mushroom_block_cap_000000 +mcl_chests:blue_shulker_box_small +mcl_stairs:slab_purpur_block +mcl_stairs:slab_prismarine +mcl_panes:pane_light_blue +mcl_panes:pane_silver +mcl_target:target_on +mcl_ocean:dead_tube_coral_block +mcl_ocean:dead_tube_coral +mcl_ocean:tube_coral_fan +mcl_ocean:brain_coral_block +mcl_ocean:dead_brain_coral_block +mcl_ocean:brain_coral +mcl_ocean:brain_coral_fan +mcl_ocean:dead_brain_coral_fan +mcl_ocean:bubble_coral +mcl_ocean:dead_fire_coral_fan +mcl_mushrooms:brown_mushroom_block_cap_010111 +mcl_ocean:kelp_dirt +mcl_mushrooms:brown_mushroom_block_cap_011000 +mcl_ocean:kelp_gravel +mcl_mushrooms:brown_mushroom_block_cap_011001 +mcl_ocean:sea_pickle_2_dead_brain_coral_block +mcl_mushrooms:brown_mushroom_block_cap_011010 +mcl_ocean:sea_pickle_3_off_dead_brain_coral_block +mcl_mushrooms:brown_mushroom_block_cap_011011 +mcl_ocean:sea_pickle_4_off_dead_brain_coral_block +mcl_mushrooms:brown_mushroom_block_cap_011100 +mcl_nether:nether_brick +mcl_mushrooms:brown_mushroom_block_cap_011101 +mcl_stairs:slab_quartzblock_double +mcl_mushrooms:brown_mushroom_block_cap_011110 +mcl_stairs:stair_quartz_smooth_inner +mcl_mushrooms:brown_mushroom_block_cap_011111 +mcl_stairs:slab_quartz_smooth_double +mcl_mushrooms:brown_mushroom_block_cap_100000 +mcl_nether:nether_lava_flowing +mcl_mushrooms:brown_mushroom_block_cap_100001 +mcl_fences:red_nether_brick_fence_gate +mcl_mushrooms:brown_mushroom_block_cap_100010 +mcl_mushrooms:red_mushroom_block_cap_000100 +mcl_mushrooms:brown_mushroom_block_cap_100011 +mcl_mushrooms:red_mushroom_block_cap_000010 +mcl_mushrooms:brown_mushroom_block_cap_100100 +mcl_meshhand:character_male_crea +mcl_mushrooms:brown_mushroom_block_cap_100101 +mcl_flowers:double_grass +mcl_sus_nodes:sand +mcl_doors:iron_trapdoor +mcl_mushrooms:brown_mushroom_block_cap_100111 +mcl_copper:stone_with_copper +mcl_mushrooms:brown_mushroom_block_cap_101000 +mcl_copper:block_oxidized +mcl_mushrooms:brown_mushroom_block_cap_101001 +mcl_stairs:stair_copper_weathered_cut +mcl_mushrooms:brown_mushroom_block_cap_101010 +mcl_stairs:stair_copper_oxidized_cut_inner +mcl_mushrooms:brown_mushroom_block_cap_101011 +mcl_walls:sandstone_10 +mcl_mushrooms:brown_mushroom_block_cap_101100 +mesecons_torch:mesecon_torch_off +mcl_mushrooms:brown_mushroom_block_cap_101101 +mcl_core:stone_with_emerald +mcl_nether:nether_wart_0 +mcl_crafting_table:crafting_table +mesecons_delayer:delayer_on_4 +mcl_stairs:stair_blackstone +mcl_core:stone_with_diamond +homedecor:chandelier_steel +homedecor:chain_brass_top +mcl_core:stonebrick +mcl_stairs:stair_diorite +mcl_mushrooms:brown_mushroom_block_cap_000010 +mcl_core:glass_magenta +mcl_core:stonebrickcarved +homedecor:candle +mcl_furnaces:furnace +mcl_core:stonebrickcracked +homedecor:candlestick_brass +homedecor:oil_lamp +mcl_core:glass_blue +mcl_stairs:slab_diorite_top +mcl_stairs:slab_diorite_double +mcl_core:stone_smooth +mcl_flowerpots:flower_pot_mushroom_red +mcl_core:granite +mcl_walls:sandstone_6 +mcl_core:glass_green +mcl_walls:sandstone_7 +mcl_core:granite_smooth +mesecons_pistons:piston_down_normal_on +homedecor:kitchen_cabinet_colorable_with_sink +homedecor:dishwasher +mcl_core:andesite +mcl_colorblocks:hardened_clay +mcl_stairs:stair_cobble_outer +mcl_stairs:stair_cobble_inner +mcl_core:andesite_smooth +homedecor:dishwasher_marble +homedecor:dishwasher_granite +homedecor:kitchen_faucet +mcl_core:diorite +mcl_stairs:slab_cobble +mcl_stairs:slab_cobble_top +mcl_stairs:slab_cobble_double +mcl_core:diorite_smooth +homedecor:toilet_paper +mcl_stairs:stair_blackstone_brick_polished_inner +mcl_core:glass_red +mcl_sponges:sponge_wet_river_water +mcl_walls:prismarine_0 +mcl_core:dirt_with_grass_snow +homedecor:glowlight_half_14 +homedecor:glowlight_quarter_14 +homedecor:glowlight_small_cube_14 +mcl_core:glass_silver +homedecor:ground_lantern_14 +mcl_stairs:stair_mossycobble_outer +mcl_stairs:stair_mossycobble_inner +mcl_walls:endbricks_1 +homedecor:ceiling_lantern_14 +homedecor:lattice_lantern_large_14 +mcl_walls:endbricks_6 +mcl_core:glass_light_blue +mcl_stairs:slab_mossycobble +mcl_stairs:slab_mossycobble_top +mcl_stairs:slab_mossycobble_double +mcl_walls:netherbrick_3 +mcl_blackstone:wall_2 +homedecor:oven_active +mcl_blackstone:wall_3 +mcl_core:glass_orange +mcl_blackstone:wall_4 +mcl_walls:mudbrick_10 +mcl_blackstone:wall_5 +mcl_walls:mudbrick_13 +mcl_blackstone:wall_6 +mcl_stairs:stair_brick_block +mcl_core:glass_lime +mcl_stairs:stair_brick_block_outer +mcl_stairs:stair_brick_block_inner +mcl_core:sand +mcl_core:gravel +mcl_trees:leaves_mangrove_orphan +mcl_blackstone:wall_10 +mcl_walls:mudbrick_15 +mcl_core:glass_purple +mcl_stairs:slab_brick_block_top +mcl_stairs:slab_brick_block_double +homedecor:oven_active_locked +mcl_core:sandstone +mesecons:wire_11101000_off +mcl_blackstone:wall_14 +homedecor:oven_steel_active +mcl_blackstone:wall_15 +mcl_fences:oak_fence_gate_open +mcl_blackstone:wall_16 +mcl_mushrooms:brown_mushroom_block_cap_111100 +mcl_core:sandstonesmooth +mcl_stairs:stair_sandstone +mcl_core:glass_cyan +mcl_stairs:stair_sandstone_outer +mcl_core:sandstonecarved +mcl_signs:standing_sign_mangrove +mcl_blackstone:soul_torch_wall +mcl_walls:netherbrick_4 +mcl_core:sandstonesmooth2 +homedecor:oven_steel_locked +mcl_stairs:slab_sandstone +mcl_core:redsand +mcl_colorblocks:hardened_clay_yellow +mcl_deepslate:deepslate_cobbled +mcl_mushrooms:brown_mushroom_block_cap_000001 +mcl_ocean:sea_lantern +mcl_deepslate:deepslate_reinforced +mcl_colorblocks:concrete_yellow +mcl_portals:portal_gateway +mcl_deepslate:infested_deepslate +mcl_mushrooms:brown_mushroom_block_stem +mcl_fire:fire +mcl_core:redsandstonesmooth +mcl_stairs:stair_sandstonesmooth2 +mesecons:wire_01100000_on +mcl_stairs:stair_sandstonesmooth2_outer +mcl_core:redsandstonecarved +mcl_cauldrons:cauldron_2r +mcl_cauldrons:cauldron_3 +mcl_cauldrons:cauldron_3r +mcl_core:redsandstonesmooth2 +mesecons:wire_11000000_off +mcl_stairs:slab_sandstonesmooth2 +mcl_stairs:slab_sandstonesmooth2_top +mcl_stairs:slab_sandstonesmooth2_double +mcl_beds:bed_light_blue_bottom +mcl_walls:andesite_16 +mcl_colorblocks:hardened_clay_white +mcl_deepslate:deepslate_with_redstone_lit +mcl_deepslate:deepslate_with_redstone +mcl_colorblocks:concrete_powder_white +mcl_mushrooms:red_mushroom_block_cap_010110 +mcl_colorblocks:concrete_white +mcl_walls:granite_0 +mcl_lanterns:soul_lantern_floor +mcl_walls:granite_1 +mcl_walls:granite_2 +mcl_core:mossycobble +mcl_walls:granite_3 +mcl_wool:yellow +mcl_walls:granite_4 +mcl_smithing_table:table +mcl_walls:granite_5 +mcl_stairs:slab_sandstonesmooth +mcl_walls:granite_6 +mcl_stairs:slab_sandstonesmooth_double +mcl_walls:granite_7 +mcl_walls:granite_8 +mcl_fences:jungle_fence_gate_open +mcl_walls:granite_9 +mcl_colorblocks:hardened_clay_pink +mcl_walls:granite_10 +pipeworks:expansion_tank_1 +mcl_walls:granite_11 +mcl_walls:prismarine_16 +mcl_walls:granite_12 +mcl_beds:bed_magenta_bottom +mcl_mud:packed_mud +pipeworks:storage_tank_1 +mcl_walls:granite_14 +mcl_walls:sandstone_9 +mcl_walls:granite_15 +mcl_stairs:stair_stone_rough +mcl_walls:granite_16 +mcl_stairs:stair_stone_rough_outer +mcl_stairs:stair_stone_rough_inner +mcl_stairs:stair_andesite_smooth +mesecons:wire_01010101_off +mcl_mushrooms:brown_mushroom_block_cap_110100 +mesecons_torch:mesecon_torch_off_wall +mcl_walls:diorite_0 +mcl_stairs:slab_deepslate_cobbled +mcl_walls:diorite_1 +mcl_doors:door_jungle_b_2 +mcl_walls:diorite_2 +mcl_maps:filled_map_mcl_skins_base_1EEB592FF_male_surv +mcl_walls:diorite_3 +homedecor:refrigerator_white_locked +mcl_walls:diorite_4 +mcl_flowers:tallgrass +mcl_walls:diorite_5 +homedecor:refrigerator_steel_locked +mcl_walls:diorite_6 +mcl_flowers:dandelion +mcl_walls:diorite_7 +mcl_core:deadbush +mcl_walls:diorite_8 +mcl_stairs:stair_mud_brick +mcl_deepslate:deepslate_with_coal +mcl_stairs:stair_mud_brick_outer +mcl_walls:diorite_10 +mcl_trees:sapling_acacia +mcl_walls:diorite_11 +mcl_trees:sapling_cherry_blossom +mcl_walls:diorite_12 +mcl_deepslate:deepslate_with_iron +mcl_walls:diorite_13 +mcl_stairs:slab_mud_brick_top +mcl_walls:diorite_14 +mcl_trees:tree_spruce +mcl_walls:diorite_15 +mcl_stairs:slab_goldblock +mcl_deepslate:deepslate_with_gold +mcl_stairs:slab_goldblock_double +mcl_walls:diorite_21 +mcl_stairs:stair_jungle_bark +mcl_monster_eggs:monster_egg_stonebrickmossy +mcl_stairs:stair_jungle_bark_outer +mesecons:wire_11101010_on +mcl_deepslate:deepslate_with_emerald +mcl_core:dirt_with_grass +mcl_walls:brick_1 +mcl_stairs:stair_deepslate_cobbled_outer +mcl_walls:brick_2 +mcl_deepslate:deepslate_with_copper +mcl_walls:brick_3 +mcl_deepslate:deepslate_with_diamond +mcl_walls:brick_4 +mcl_stairs:slab_jungle_double diff --git a/mods/xcompat/test/nodelist/minetest.txt b/mods/xcompat/test/nodelist/minetest.txt new file mode 100644 index 00000000..472668a0 --- /dev/null +++ b/mods/xcompat/test/nodelist/minetest.txt @@ -0,0 +1,1494 @@ +pipeworks:steel_block_embedded_tube +steel:roofing +homedecor:ceiling_lantern_0 +steel:roofing_wall +homedecor:lattice_lantern_large_0 +pipeworks:steel_pane_embedded_tube +steel:strut +homedecor:lattice_lantern_small_0 +steel:strut_mount +homedecor:desk_lamp_0 +homedecor:dryer +steel:steel_block +homedecor:ceiling_lamp_0 +homedecor:ironing_board +beds:bed_bottom +homedecor:table_lamp_0 +basic_materials:cement_block +homedecor:standing_lamp_0 +beds:fancy_bed_top +basic_materials:concrete_block +steel:shingle_side_roofing +basic_materials:chain_steel +steel:shingle_outer_corner_roofing +steel:shingle_inner_corner_roofing +homedecor:inbox +basic_materials:brass_block +homedecor:glowlight_small_cube_1 +homedecor:plasma_lamp_1 +homedecor:ground_lantern_1 +homedecor:hanging_lantern_1 +homedecor:ceiling_lantern_1 +homedecor:lattice_lantern_large_1 +homedecor:lattice_lantern_small_1 +homedecor:filing_cabinet_locked +homedecor:filing_cabinet +homedecor:ceiling_lamp_1 +doors:homedecor_wood_plain_d +homedecor:desk_locked +homedecor:standing_lamp_1 +homedecor:glowlight_half_2 +homedecor:glowlight_quarter_2 +stairs:stair_stonebrick +homedecor:calendar +doors:homedecor_exterior_fancy_a +stairs:stair_inner_stonebrick +doors:homedecor_exterior_fancy_b +homedecor:hanging_lantern_2 +stairs:stair_outer_stonebrick +homedecor:ceiling_lantern_2 +stairs:slab_stonebrick +homedecor:lattice_lantern_small_2 +stairs:stair_stone_block +homedecor:desk_lamp_2 +default:bush_stem +homedecor:ceiling_lamp_2 +stairs:stair_inner_stone_block +default:bush_leaves +homedecor:table_lamp_2 +stairs:stair_outer_stone_block +homedecor:standing_lamp_2 +tnt:tnt_burning +stairs:slab_stone_block +default:blueberry_bush_leaves +homedecor:glowlight_quarter_3 +homedecor:glowlight_small_cube_3 +default:acacia_bush_stem +homedecor:plasma_lamp_3 +stairs:stair_inner_desert_stone +homedecor:ground_lantern_3 +default:pine_bush_stem +stairs:stair_outer_desert_stone +default:pine_bush_needles +homedecor:ceiling_lantern_3 +stairs:slab_desert_stone +default:sand_with_kelp +stairs:stair_desert_cobble +homedecor:lattice_lantern_small_3 +boards:black_board +boards:green_board +stairs:stair_inner_desert_cobble +homedecor:ceiling_lamp_3 +homedecor:table_lamp_3 +default:coral_skeleton +homedecor:standing_lamp_3 +homedecor:fishtank_lighted +homedecor:glowlight_half_4 +stairs:stair_desert_stonebrick +homedecor:glowlight_quarter_4 +default:coral_cyan +pipeworks:pump_off +stairs:stair_inner_desert_stonebrick +building_blocks:Tar +stairs:slab_ice +default:coral_orange +homedecor:wall_sconce +stairs:stair_snowblock +homedecor:ceiling_lantern_4 +stairs:stair_inner_snowblock +stairs:stair_desert_stone_block +building_blocks:fakegrass +default:water_flowing +building_blocks:hardwood +stairs:stair_outer_snowblock +homedecor:desk_lamp_4 +default:river_water_source +stairs:slab_snowblock +default:river_water_flowing +stairs:stair_outer_desert_stone_block +stairs:stair_glass +homedecor:standing_lamp_4 +homedecor:piano +stairs:slab_glass +homedecor:glowlight_half_5 +stairs:stair_sandstone +homedecor:glowlight_quarter_5 +stairs:stair_inner_glass +pipeworks:filter +pipeworks:mese_filter +stairs:stair_inner_sandstone +stairs:stair_outer_glass +homedecor:ground_lantern_5 +stairs:stair_obsidian_glass +building_blocks:grate +stairs:slab_sandstone +stairs:slab_obsidian_glass +homedecor:lattice_lantern_large_5 +stairs:stair_sandstonebrick +stairs:stair_inner_obsidian_glass +homedecor:lattice_lantern_small_5 +default:bookshelf +stairs:stair_inner_sandstonebrick +fireflies:firefly_bottle +pipeworks:priority_tube_1 +stairs:stair_outer_sandstonebrick +building_blocks:brobble_spread +stairs:slab_sandstonebrick +pipeworks:priority_tube_4 +pipeworks:priority_tube_5 +building_blocks:Tarmac_spread +default:ladder_wood +building_blocks:terrycloth_towel +default:ladder_steel +building_blocks:BWtile +default:fence_wood +pipeworks:priority_tube_9 +stairs:slab_sandstone_block +default:fence_acacia_wood +pipeworks:priority_tube_10 +stairs:stair_desert_sandstone +default:fence_junglewood +default:permafrost_with_moss +default:fence_pine_wood +stairs:stair_inner_desert_sandstone +default:sand +default:fence_aspen_wood +default:desert_sand +default:fence_rail_wood +default:silver_sand +stairs:slab_desert_sandstone +default:gravel +default:fence_rail_acacia_wood +stairs:stair_desert_sandstone_brick +vessels:shelf +default:clay +default:fence_rail_junglewood +pipeworks:mese_tube_010100 +stairs:stair_inner_desert_sandstone_brick +vessels:drinking_glass +default:snowblock +pipeworks:mese_tube_010101 +default:ice +vessels:steel_bottle +flowers:rose +default:cave_ice +stairs:slab_desert_sandstone_brick +pipeworks:tag_tube_100101 +flowers:geranium +stairs:stair_desert_sandstone_block +default:obsidian_glass +flowers:dandelion_white +farming:cotton_5 +default:brick +stairs:stair_inner_desert_sandstone_block +farming:cotton_6 +default:meselamp +carts:powerrail +stairs:stair_outer_desert_sandstone_block +pipeworks:tag_tube_101010 +default:mese_post_light +pipeworks:tube_4 +default:mese_post_light_acacia_wood +default:mese_post_light_junglewood +pipeworks:tag_tube_101100 +default:mese_post_light_pine_wood +pipeworks:mese_tube_011011 +default:mese_post_light_aspen_wood +default:cloud +default:junglewood +stairs:stair_inner_silver_sandstone +pipeworks:tag_tube_101111 +stairs:stair_outer_silver_sandstone +homedecor:table_lamp_8 +stairs:slab_silver_sandstone +pipeworks:tube_8 +homedecor:standing_lamp_8 +default:pine_wood +pipeworks:tag_tube_110011 +homedecor:glowlight_half_9 +homedecor:glowlight_quarter_9 +pipeworks:mese_tube_100000 +default:acacia_tree +pipeworks:tag_tube_110101 +flowers:mushroom_red +default:acacia_wood +homedecor:plasma_lamp_9 +flowers:mushroom_brown +default:acacia_leaves +homedecor:ground_lantern_9 +pipeworks:mese_tube_100010 +pipeworks:tag_tube_111000 +homedecor:hanging_lantern_9 +default:aspen_tree +homedecor:ceiling_lantern_9 +pipeworks:tag_tube_111010 +homedecor:lattice_lantern_large_9 +pipeworks:tag_tube_111011 +homedecor:lattice_lantern_small_9 +pipeworks:pipe_compatibility_empty +pipeworks:tag_tube_111100 +pipeworks:pipe_compatibility_loaded +default:stone_with_coal +flowers:waterlily +default:coalblock +flowers:waterlily_waving +default:stone_with_iron +pipeworks:entry_panel_empty +default:steelblock +pipeworks:straight_pipe_empty +default:stone_with_copper +pipeworks:valve_on_loaded +pipeworks:entry_panel_loaded +default:copperblock +pipeworks:flow_sensor_loaded +default:stone_with_tin +default:tinblock +flowers:chrysanthemum_green +flowers:tulip_black +default:bronzeblock +default:stone_with_mese +default:mese +default:stone_with_gold +default:goldblock +default:stone_with_diamond +default:diamondblock +default:large_cactus_seedling +default:dry_shrub +default:junglegrass +default:grass_1 +default:dry_grass_1 +default:fern_1 +default:marram_grass_1 +homedecor:curtainrod_wood +pipeworks:broken_tube_2 +homedecor:spiral_staircase +pipeworks:broken_tube_3 +pipeworks:broken_tube_4 +pipeworks:broken_tube_5 +pipeworks:broken_tube_6 +homedecor:flower_pot_terracotta +homedecor:flower_pot_green +homedecor:coatrack_wallmount +homedecor:coat_tree +pipeworks:broken_tube_9 +pipeworks:broken_tube_10 +homedecor:welcome_mat_green +pipeworks:broken_tube_compatibility +homedecor:rug_small +homedecor:welcome_mat_brown +homedecor:rug_large +homedecor:rug_persian +homedecor:welcome_mat_grey +homedecor:japanese_wall_top +homedecor:japanese_wall_middle +homedecor:japanese_wall_bottom +homedecor:tatami_mat +homedecor:pool_table +homedecor:dartboard +homedecor:sportbench +homedecor:skateboard +homedecor:fence_picket_corner +homedecor:fence_picket +homedecor:banister_wood_horizontal +default:apple +homedecor:fence_picket_corner_white +homedecor:fence_picket_white +homedecor:fence_privacy_corner +homedecor:ceiling_paint +default:tree +homedecor:ceiling_tile +homedecor:fence_privacy +default:jungletree +default:jungleleaves +homedecor:fence_barbed_wire_corner +homedecor:fence_barbed_wire +default:pine_tree +default:pine_needles +homedecor:fence_chainlink_corner +homedecor:fence_chainlink +homedecor:fence_wrought_iron_2_corner +homedecor:analog_clock_wood +homedecor:grandfather_clock +homedecor:potted_rose +homedecor:analog_clock_plastic +homedecor:potted_tulip +homedecor:alarm_clock +default:sapling +default:junglesapling +default:pine_sapling +default:acacia_sapling +default:aspen_sapling +default:bush_sapling +default:blueberry_bush_sapling +default:acacia_bush_sapling +default:pine_bush_sapling +default:emergent_jungle_sapling +default:stonebrick +homedecor:banister_wood_diagonal_left +default:stone_block +homedecor:banister_wood_horizontal_red +homedecor:banister_wood_diagonal_left_red +default:desert_stone +default:desert_cobble +homedecor:banister_wood_horizontal_vermilion +default:desert_stonebrick +homedecor:banister_wood_horizontal_orange +homedecor:air_conditioner +homedecor:banister_wood_diagonal_left_orange +default:sandstone +homedecor:desk_fan +default:sandstonebrick +homedecor:ceiling_fan +default:sandstone_block +homedecor:space_heater +default:desert_sandstone +homedecor:radiator +default:desert_sandstone_brick +homedecor:oven_steel +stairs:stair_silver_sandstone_brick +default:desert_sandstone_block +homedecor:desk_lamp_5 +homedecor:kitchen_cabinet_colorable +default:silver_sandstone +homedecor:ceiling_lamp_5 +stairs:stair_inner_silver_sandstone_brick +default:silver_sandstone_brick +pipeworks:teleport_tube_7 +homedecor:table_lamp_5 +default:silver_sandstone_block +stairs:stair_outer_silver_sandstone_brick +homedecor:standing_lamp_5 +butterflies:butterfly_red +butterflies:butterfly_violet +default:obsidianbrick +homedecor:shower_head +homedecor:glowlight_half_6 +default:obsidian_block +homedecor:glowlight_quarter_6 +homedecor:glowlight_small_cube_6 +homedecor:plasma_lamp_6 +stairs:stair_inner_silver_sandstone_block +homedecor:ground_lantern_6 +default:dirt_with_grass_footsteps +homedecor:hanging_lantern_6 +butterflies:hidden_butterfly_white +homedecor:ceiling_lantern_6 +stairs:slab_silver_sandstone_block +homedecor:lattice_lantern_large_6 +butterflies:hidden_butterfly_red +stairs:stair_obsidian +homedecor:rope_light_on_ceiling_on +homedecor:rope_light_on_ceiling_off +default:dirt_with_coniferous_litter +homedecor:desk_lamp_6 +butterflies:hidden_butterfly_violet +stairs:stair_inner_obsidian +homedecor:ceiling_lamp_6 +homedecor:wall_lamp_on +lavalamp:lavalamp_off +homedecor:table_lamp_6 +homedecor:standing_lamp_6 +stairs:slab_obsidian +homedecor:glowlight_half_7 +stairs:stair_obsidianbrick +homedecor:glowlight_quarter_7 +homedecor:toaster_loaf +homedecor:glowlight_small_cube_7 +homedecor:toaster +stairs:stair_inner_obsidianbrick +homedecor:bottle_brown +homedecor:plasma_lamp_7 +homedecor:4_bottles_green +homedecor:4_bottles_multi +homedecor:ground_lantern_7 +homedecor:coffee_maker +homedecor:hanging_lantern_7 +homedecor:ceiling_lantern_7 +pipeworks:tube_2 +fire:basic_flame +homedecor:lattice_lantern_large_7 +fire:permanent_flame +homedecor:lattice_lantern_small_7 +homedecor:desk_lamp_7 +homedecor:ceiling_lamp_7 +homedecor:table_lamp_7 +homedecor:standing_lamp_7 +fireflies:hidden_firefly +homedecor:glowlight_half_8 +homedecor:glowlight_quarter_8 +doors:homedecor_french_mahogany_c +homedecor:glowlight_small_cube_8 +doors:homedecor_french_mahogany_d +homedecor:shingles_terracotta +homedecor:plasma_lamp_8 +xpanes:obsidian_pane +homedecor:ground_lantern_8 +pipeworks:mese_sand_tube_2 +homedecor:hanging_lantern_8 +pipeworks:mese_sand_tube_3 +homedecor:ceiling_lantern_8 +pipeworks:mese_sand_tube_4 +itemframes:pedestal +homedecor:lattice_lantern_large_8 +pipeworks:mese_sand_tube_5 +doors:homedecor_french_white_c +homedecor:lattice_lantern_small_8 +doors:homedecor_french_white_d +pipeworks:sand_tube_1 +homedecor:desk_lamp_8 +pipeworks:mese_sand_tube_7 +homedecor:gate_barbed_wire_open +homedecor:ceiling_lamp_8 +homedecor:gate_barbed_wire_closed +vessels:glass_bottle +homedecor:gate_chainlink_open +flowers:dandelion_yellow +homedecor:gate_chainlink_closed +homedecor:gate_picket_open +pipeworks:sand_tube_5 +homedecor:gate_picket_closed +homedecor:gate_picket_white_open +doors:homedecor_basic_panel_c +homedecor:gate_picket_white_closed +homedecor:chain_steel_top +homedecor:chandelier_steel +homedecor:chain_brass_top +homedecor:chandelier_brass +pipeworks:mese_tube_000100 +xpanes:trapdoor_steel_bar_open +pipeworks:sand_tube_9 +homedecor:candle +homedecor:candlestick_wrought_iron +homedecor:candle_thin +homedecor:candlestick_brass +homedecor:oil_lamp +homedecor:oil_lamp_tabletop +homedecor:door_japanese_closed +pipeworks:mese_tube_000110 +doors:homedecor_wood_plain_a +doors:homedecor_wrought_iron_a +doors:homedecor_wrought_iron_b +pipeworks:mese_tube_000111 +doors:homedecor_wrought_iron_c +doors:homedecor_wrought_iron_d +pipeworks:mese_tube_001000 +pipeworks:mese_tube_001001 +wool:cyan +bones:bones +homedecor:glowlight_half_14 +homedecor:glowlight_quarter_14 +homedecor:glowlight_small_cube_14 +homedecor:plasma_lamp_14 +homedecor:ground_lantern_14 +doors:homedecor_carolina_d +homedecor:hanging_lantern_14 +doors:homedecor_french_white_b +homedecor:ceiling_lantern_14 +homedecor:lattice_lantern_large_14 +homedecor:lattice_lantern_small_14 +homedecor:desk_lamp_14 +homedecor:ceiling_lamp_14 +homedecor:table_lamp_14 +homedecor:standing_lamp_14 +xpanes:trapdoor_steel_bar +homedecor:torch_wall +pipeworks:mese_tube_000001 +doors:homedecor_woodglass_a +pipeworks:mese_tube_001111 +doors:homedecor_woodglass_b +pipeworks:mese_tube_000010 +doors:homedecor_woodglass_c +doors:homedecor_basic_panel_a +doors:homedecor_woodglass_d +doors:homedecor_basic_panel_b +pipeworks:mese_tube_010001 +wool:pink +pipeworks:mese_tube_010010 +stairs:stair_sandstone_block +lavalamp:lavalamp +pipeworks:mese_tube_010011 +doors:homedecor_closet_mahogany_a +xpanes:pane +doors:homedecor_closet_mahogany_b +homedecor:glowlight_half_0 +doors:homedecor_closet_mahogany_d +homedecor:glowlight_quarter_0 +homedecor:glowlight_small_cube_0 +xpanes:obsidian_pane_flat +homedecor:plasma_lamp_0 +homedecor:ground_lantern_0 +doors:homedecor_closet_oak_a +doors:homedecor_closet_oak_b +doors:homedecor_closet_oak_c +doors:homedecor_closet_oak_d +doors:homedecor_wood_plain_b +doors:homedecor_wood_plain_c +doors:hidden +default:grass_4 +default:grass_5 +default:dry_grass_2 +default:dry_grass_3 +default:dry_grass_4 +default:dry_grass_5 +default:fern_2 +default:fern_3 +default:marram_grass_2 +default:marram_grass_3 +homedecor:bed_kingsize +homedecor:nightstand_oak_one_drawer +homedecor:nightstand_oak_two_drawers +homedecor:nightstand_mahogany_one_drawer +homedecor:nightstand_mahogany_two_drawers +ontime_clocks:green_digital +ontime_clocks:red_digital +ontime_clocks:white +ontime_clocks:frameless_black +ontime_clocks:frameless_gold +homedecor:nightstand_mahogany_two_drawers_locked +ontime_clocks:frameless_white +doors:trapdoor +homedecor:pole_brass +doors:trapdoor_steel +homedecor:window_quartered +homedecor:window_plain +homedecor:blinds_thin +homedecor:blinds_thick +homedecor:window_flowerbox +homedecor:nightstand_oak_one_drawer_locked +air +pipeworks:straight_pipe_loaded +homedecor:wall_shelf +pipeworks:pipe_1_loaded +walls:desertcobble +doors:gate_acacia_wood_closed +doors:gate_junglewood_closed +doors:gate_pine_wood_closed +doors:gate_aspen_wood_closed +pipeworks:pipe_3_empty +pipeworks:pipe_3_loaded +ignore +homedecor:wood_table_large_square_with_wrought_iron_legs +stairs:slab_steelblock +stairs:stair_pine_wood +stairs:stair_tinblock +doors:door_wood_b +doors:door_wood_c +farming:cotton_wild +stairs:stair_inner_tinblock +homedecor:wood_table_small_square_with_brass_legs +pipeworks:pipe_6_loaded +homedecor:stained_glass +farming:wheat_3 +homedecor:wood_table_small_square_with_wrought_iron_legs +pipeworks:pipe_7_empty +farming:wheat_4 +pipeworks:pipe_7_loaded +stairs:slab_tinblock +farming:wheat_5 +pipeworks:pipe_8_empty +stairs:stair_copperblock +pipeworks:pipe_8_loaded +farming:wheat_7 +homedecor:wood_table_small_round_with_brass_legs +stairs:stair_inner_copperblock +default:sign_wall_wood +homedecor:wood_table_small_round_with_wrought_iron_legs +stairs:stair_outer_copperblock +default:sign_wall_steel +homedecor:wood_table_small_round_with_wood_legs +default:dirt_with_snow +stairs:stair_bronzeblock +farming:cotton_1 +default:cobble +default:mossycobble +stairs:slab_cobble +stairs:slab_mossycobble +stairs:stair_cobble +stairs:stair_mossycobble +lrfurn:endtable +stairs:stair_inner_mossycobble +stairs:stair_outer_cobble +stairs:stair_outer_mossycobble +stairs:stair_outer_bronzeblock +walls:mossycobble +farming:dry_soil +farming:dry_soil_wet +stairs:slab_bronzeblock +technic:granite +stairs:stair_goldblock +lrfurn:coffeetable +stairs:stair_inner_goldblock +farming:desert_sand_soil_wet +stairs:stair_outer_goldblock +doors:door_steel_a +stairs:slab_goldblock +doors:door_steel_b +doors:door_steel_c +homedecor:book_grey +doors:door_steel_d +homedecor:book_open_grey +stairs:stair_inner_ice +steles:stone_stele +steles:sandstone_stele +farming:seed_wheat +steles:desert_stone_stele +homedecor:trash_can_green_open +doors:door_glass_b +homedecor:trash_can_green +homedecor:book_red +doors:door_glass_d +homedecor:book_open_red +homedecor:shingle_side_glass +homedecor:skylight +homedecor:shingle_outer_corner_terracotta +homedecor:shingle_inner_corner_terracotta +homedecor:book_open_green +homedecor:shingle_inner_corner_wood +homedecor:shingle_outer_corner_wood +homedecor:shingle_side_wood +doors:door_obsidian_glass_c +homedecor:book_blue +doors:trapdoor_open +homedecor:book_open_blue +homedecor:trash_can +homedecor:shingles_asphalt +stairs:slab_straw +homedecor:book_violet +homedecor:book_open_violet +homedecor:skylight_frosted +pipeworks:expansion_tank_1 +doors:gate_wood_open +homedecor:nightstand_oak_two_drawers_locked +homedecor:nightstand_mahogany_one_drawer_locked +homedecor:book_brown +doors:gate_acacia_wood_open +homedecor:bed_extended +homedecor:book_open_brown +homedecor:bed_regular +doors:gate_junglewood_open +beds:bed_top +beds:fancy_bed_bottom +homedecor:table_legs_wood +doors:gate_pine_wood_open +homedecor:wood_table_small_square +farming:cotton_8 +farming:cotton_7 +homedecor:armchair +pipeworks:storage_tank_2 +farming:cotton_4 +farming:cotton_3 +farming:cotton_2 +farming:seed_cotton +farming:wheat_8 +farming:wheat_6 +farming:wheat_2 +pipeworks:expansion_tank_3 +stairs:stair_outer_straw +farming:wheat_1 +stairs:stair_inner_straw +stairs:stair_straw +farming:straw +pipeworks:storage_tank_3 +farming:desert_sand_soil +farming:soil_wet +farming:soil +fake_fire:ice_fire +homedecor:openframe_bookshelf +pipeworks:crossing_tube_9 +pipeworks:expansion_tank_4 +homedecor:office_chair_basic +stairs:slab_desert_stonebrick +homedecor:kitchen_chair_wood +homedecor:bench_large_2 +fake_fire:fancy_fire +pipeworks:storage_tank_4 +homedecor:glass_table_small_square +homedecor:bench_large_1 +signs_road:black_left_sign +homedecor:wood_table_small_round +pipeworks:one_way_tube +fake_fire:embers +signs_road:black_right_sign +homedecor:deckchair_striped_blue +pipeworks:mese_sand_tube_1 +doors:door_wood_a +lrfurn:sofa +signs_road:white_left_sign +pipeworks:storage_tank_5 +homedecor:shingle_inner_corner_asphalt +homedecor:table +homedecor:table_mahogany +homedecor:table_white +wool:magenta +default:lava_source +default:obsidian +signs_road:blue_left_sign +pipeworks:tag_tube_000110 +signs_road:blue_right_sign +fake_fire:chimney_top_stone +pipeworks:tag_tube_000111 +fake_fire:chimney_top_sandstone +wool:red +signs_road:green_left_sign +wool:orange +signs_road:green_right_sign +pipeworks:tag_tube_001001 +homedecor:kitchen_cabinet_colorable_marble_locked +homedecor:kitchen_cabinet_colorable_marble +pipeworks:tag_tube_001010 +signs_road:yellow_left_sign +default:coral_pink +signs_road:yellow_right_sign +homedecor:table_legs_brass +homedecor:kitchen_cabinet_colored_marble_locked +pipeworks:tag_tube_001100 +wool:yellow +signs_road:red_left_sign +homedecor:kitchen_cabinet_colored_with_drawers_marble +signs_road:red_right_sign +homedecor:table_legs_wrought_iron +pipeworks:tag_tube_001110 +wool:green +wool:dark_green +homedecor:kitchen_cabinet_colorable_with_drawers_marble_locked +homedecor:kitchen_cabinet_colorable_with_drawers_marble +wool:blue +pipeworks:storage_tank_8 +wool:violet +wool:black +wool:dark_grey +homedecor:kitchen_cabinet_colored_with_drawers_marble_locked +wool:grey +wool:white +homedecor:glass_table_large_square +pipeworks:autocrafter +signs_road:yellow_sign +signs_road:red_sign +homedecor:gate_half_door_closed +signs_road:red_street_sign +signs_road:green_sign +signs_road:blue_street_sign +homedecor:glass_table_large_square_with_wrought_iron_legs +signs_road:white_sign +doors:homedecor_exterior_fancy_d +default:coral_brown +homedecor:glass_table_large_square_with_wood_legs +homedecor:kitchen_cabinet_colorable_steel_locked +homedecor:gate_half_door_white_closed +pipeworks:expansion_tank_9 +pipeworks:expansion_tank_10 +pipeworks:storage_tank_9 +homedecor:gate_half_door_white_open +pipeworks:storage_tank_10 +homedecor:kitchen_cabinet_colored_steel_locked +pipeworks:expansion_tank_8 +homedecor:glass_table_small_square_with_brass_legs +pipeworks:storage_tank_7 +homedecor:kitchen_cabinet_colored_with_drawers_steel +pipeworks:expansion_tank_7 +homedecor:glass_table_small_square_with_wrought_iron_legs +pipeworks:storage_tank_6 +pipeworks:expansion_tank_6 +pipeworks:expansion_tank_5 +homedecor:glass_table_small_square_with_wood_legs +homedecor:kitchen_cabinet_colorable_with_drawers_steel +pipeworks:expansion_tank_2 +pipeworks:storage_tank_1 +pipeworks:storage_tank_0 +pipeworks:expansion_tank_0 +pipeworks:flow_sensor_empty +homedecor:kitchen_cabinet_colored_with_drawers_steel_locked +pipeworks:spigot_pouring +homedecor:banister_wood_horizontal_blue +homedecor:glass_table_small_round_with_brass_legs +pipeworks:grating +pipeworks:valve_off_empty +pipeworks:valve_on_empty +homedecor:glass_table_small_round_with_wrought_iron_legs +butterflies:butterfly_white +pipeworks:pipe_10_loaded +homedecor:kitchen_cabinet_colorable_half_locked +homedecor:glass_table_small_round_with_wood_legs +pipeworks:pipe_10_empty +pipeworks:pipe_9_loaded +pipeworks:pipe_9_empty +homedecor:kitchen_cabinet_colored_half_locked +pipeworks:pipe_6_empty +pipeworks:pipe_5_loaded +pipeworks:pipe_5_empty +homedecor:fence_wrought_iron_2 +pipeworks:pipe_4_loaded +pipeworks:pipe_4_empty +pipeworks:pipe_2_loaded +pipeworks:pipe_2_empty +homedecor:fence_brass +homedecor:kitchen_cabinet_colorable_with_sink_locked +pipeworks:pipe_1_empty +pipeworks:mese_sand_tube_compatibility +homedecor:fence_wrought_iron +pipeworks:mese_sand_tube_10 +homedecor:kitchen_cabinet_colored_with_sink_locked +pipeworks:mese_sand_tube_9 +pipeworks:mese_sand_tube_8 +pipeworks:mese_sand_tube_6 +homedecor:cutlery_set +homedecor:deckchair +pipeworks:sand_tube_compatibility +pipeworks:sand_tube_10 +pipeworks:sand_tube_8 +pipeworks:sand_tube_7 +pipeworks:sand_tube_6 +pipeworks:sand_tube_4 +pipeworks:sand_tube_3 +pipeworks:sand_tube_2 +pipeworks:teleport_tube_compatibility +pipeworks:teleport_tube_10 +pipeworks:teleport_tube_9 +pipeworks:teleport_tube_8 +pipeworks:teleport_tube_6 +pipeworks:teleport_tube_5 +pipeworks:teleport_tube_4 +pipeworks:teleport_tube_3 +pipeworks:teleport_tube_2 +pipeworks:teleport_tube_1 +pipeworks:tag_tube_111111 +pipeworks:tag_tube_111110 +pipeworks:tag_tube_111101 +pipeworks:tag_tube_111001 +pipeworks:tag_tube_110111 +pipeworks:tag_tube_110110 +pipeworks:tag_tube_110100 +pipeworks:tag_tube_110010 +pipeworks:tag_tube_110001 +pipeworks:tag_tube_110000 +pipeworks:tag_tube_101110 +pipeworks:tag_tube_101101 +pipeworks:tag_tube_101011 +pipeworks:tag_tube_101001 +homedecor:pole_wrought_iron +pipeworks:tag_tube_101000 +pipeworks:tag_tube_100111 +pipeworks:tag_tube_100110 +homedecor:bars +pipeworks:tag_tube_100100 +homedecor:hanging_lantern_5 +stairs:slab_desert_cobble +steel:plate_hard +homedecor:speaker_open +homedecor:wood_table_large_square_with_brass_legs +pipeworks:tag_tube_011111 +pipeworks:tag_tube_011110 +homedecor:L_binding_bars +pipeworks:tag_tube_011101 +homedecor:chains +pipeworks:tag_tube_011100 +homedecor:speaker +pipeworks:tag_tube_011011 +pipeworks:tag_tube_011010 +pipeworks:tag_tube_011001 +pipeworks:tag_tube_011000 +pipeworks:tag_tube_010111 +homedecor:kitchen_cabinet_colored_with_drawers_granite_locked +pipeworks:tag_tube_010101 +pipeworks:tag_tube_010100 +pipeworks:tag_tube_010011 +pipeworks:tag_tube_000000 +pipeworks:tag_tube_010010 +homedecor:kitchen_cabinet_colorable_steel +pipeworks:tag_tube_000001 +stairs:stair_wood +pipeworks:tag_tube_010000 +pipeworks:tag_tube_000010 +homedecor:kitchen_cabinet_colorable_with_drawers_steel_locked +pipeworks:tag_tube_001101 +pipeworks:tag_tube_000011 +stairs:stair_inner_wood +pipeworks:tag_tube_001011 +pipeworks:nodebreaker_off +pipeworks:tag_tube_001000 +pipeworks:tag_tube_000101 +stairs:stair_outer_wood +pipeworks:tag_tube_000100 +pipeworks:mese_tube_111111 +homedecor:banister_wood_diagonal_left_azure +stairs:stair_silver_sandstone_block +stairs:stair_outer_silver_sandstone_block +pipeworks:mese_tube_111011 +stairs:stair_junglewood +pipeworks:mese_tube_111010 +pipeworks:mese_tube_111001 +homedecor:potted_bonsai +pipeworks:mese_tube_110111 +homedecor:dvd_vcr +stairs:stair_inner_junglewood +pipeworks:mese_tube_110110 +pipeworks:deployer_on +pipeworks:mese_tube_110101 +xpanes:door_steel_bar_c +stairs:stair_outer_junglewood +homedecor:wardrobe +pipeworks:mese_tube_110011 +default:apple_mark +stairs:slab_junglewood +pipeworks:mese_tube_110001 +doors:homedecor_french_mahogany_a +pipeworks:mese_tube_101111 +doors:homedecor_french_oak_b +pipeworks:mese_tube_101101 +homedecor:painting_1 +homedecor:door_japanese_open +homedecor:plasma_ball_on +stairs:stair_inner_pine_wood +pipeworks:mese_tube_101010 +pipeworks:mese_tube_101001 +pipeworks:mese_tube_101000 +homedecor:painting_6 +homedecor:rope_light_on_floor_on +homedecor:rope_light_on_floor_off +pipeworks:mese_tube_100110 +doors:door_obsidian_glass_a +default:grass_2 +pipeworks:mese_tube_100011 +pipeworks:mese_tube_100001 +stairs:stair_acacia_wood +homedecor:speaker_small +pipeworks:mese_tube_011111 +pipeworks:mese_tube_011110 +homedecor:stereo +pipeworks:mese_tube_011101 +stairs:stair_inner_acacia_wood +pipeworks:mese_tube_011100 +pipeworks:mese_tube_011010 +pipeworks:mese_tube_011001 +pipeworks:mese_tube_011000 +stairs:stair_outer_acacia_wood +pipeworks:mese_tube_010111 +homedecor:telephone +pipeworks:mese_tube_010110 +stairs:slab_acacia_wood +pipeworks:mese_tube_010000 +homedecor:potted_dandelion_yellow +pipeworks:mese_tube_001110 +stairs:stair_aspen_wood +pipeworks:mese_tube_001101 +pipeworks:mese_tube_001100 +pipeworks:dispenser_on +pipeworks:mese_tube_001011 +pipeworks:mese_tube_001010 +stairs:stair_inner_aspen_wood +pipeworks:mese_tube_000101 +pipeworks:mese_tube_000011 +pipeworks:mese_tube_000000 +homedecor:simple_bench +stairs:stair_outer_aspen_wood +pipeworks:crossing_tube_compatibility +homedecor:kitchen_chair_padded +homedecor:potted_geranium +stairs:slab_aspen_wood +homedecor:office_chair_upscale +homedecor:tv_stand +homedecor:swing_rope +homedecor:swing +stairs:stair_stone +pipeworks:crossing_tube_7 +homedecor:potted_viola +doors:homedecor_basic_panel_d +pipeworks:crossing_tube_5 +homedecor:desk +stairs:stair_inner_stone +pipeworks:crossing_tube_3 +homedecor:potted_cactus +default:fence_rail_aspen_wood +homedecor:glass_table_large_square_with_brass_legs +stairs:stair_outer_stone +pipeworks:accelerator_tube_10 +homedecor:light_switch_on +pipeworks:accelerator_tube_9 +doors:door_wood_d +pipeworks:accelerator_tube_7 +pipeworks:accelerator_tube_6 +default:snow +pipeworks:accelerator_tube_4 +signs:wooden_left_sign +homedecor:power_outlet +signs:wooden_right_sign +homedecor:dishwasher_granite +homedecor:kitchen_faucet +homedecor:taps +pipeworks:accelerator_tube_3 +homedecor:copper_pans +homedecor:paper_towel +homedecor:toilet_paper +pipeworks:accelerator_tube_2 +homedecor:doorbell +pipeworks:accelerator_tube_1 +homedecor:desk_lamp_9 +homedecor:cardboard_box_big +pipeworks:priority_tube_compatibility +homedecor:ceiling_lamp_9 +pipeworks:priority_tube_8 +homedecor:cobweb_corner +homedecor:dvd_cd_cabinet +homedecor:table_lamp_9 +pipeworks:priority_tube_7 +homedecor:cobweb_centered +homedecor:standing_lamp_9 +homedecor:cobweb_flat +pipeworks:priority_tube_6 +homedecor:trophy +homedecor:glowlight_half_10 +pipeworks:priority_tube_3 +homedecor:glowlight_quarter_10 +pipeworks:priority_tube_2 +homedecor:glowlight_small_cube_10 +pipeworks:broken_tube_8 +pipeworks:broken_tube_7 +pipeworks:broken_tube_1 +pipeworks:tube_compatibility +homedecor:plasma_lamp_10 +pipeworks:tube_10 +pipeworks:tube_9 +homedecor:ground_lantern_10 +pipeworks:tube_7 +pipeworks:tube_6 +homedecor:hanging_lantern_10 +homedecor:banister_wood_diagonal_left_grey +pipeworks:tube_5 +homedecor:ceiling_lantern_10 +pipeworks:tube_3 +pipeworks:tube_1 +homedecor:lattice_lantern_large_10 +pipeworks:dispenser_off +pipeworks:deployer_off +homedecor:lattice_lantern_small_10 +pipeworks:nodebreaker_on +pipeworks:trashcan +homedecor:desk_lamp_10 +pipeworks:digiline_filter +homedecor:bathroom_set +homedecor:ceiling_lamp_10 +homedecor:oven_locked +homedecor:bathtub_clawfoot_chrome_taps +lrfurn:longsofa +homedecor:table_lamp_10 +homedecor:shower_tray +default:desert_stone_block +homedecor:standing_lamp_10 +homedecor:oven_active_locked +homedecor:fishtank +stairs:stair_inner_sandstone_block +homedecor:glowlight_half_11 +homedecor:oven_steel_active +homedecor:glowlight_quarter_11 +homedecor:lattice_lantern_large_3 +homedecor:glowlight_small_cube_11 +homedecor:plasma_lamp_5 +homedecor:medicine_cabinet +homedecor:towel_rod +homedecor:banister_wood_horizontal_amber +homedecor:plasma_lamp_11 +homedecor:banister_wood_diagonal_left_amber +homedecor:bathroom_tiles_light +homedecor:ground_lantern_11 +homedecor:bathroom_tiles_medium +homedecor:banister_wood_horizontal_yellow +homedecor:hanging_lantern_11 +homedecor:banister_wood_diagonal_left_yellow +xpanes:pane_flat +homedecor:ceiling_lantern_11 +homedecor:digital_clock +doors:homedecor_carolina_a +homedecor:lattice_lantern_large_11 +homedecor:painting_2 +homedecor:banister_wood_diagonal_left_lime +homedecor:lattice_lantern_small_11 +default:chest +homedecor:microwave_oven_active +homedecor:desk_lamp_11 +homedecor:banister_wood_horizontal_chartreuse +homedecor:ceiling_lamp_4 +homedecor:ceiling_lamp_11 +homedecor:shrubbery_large_green +homedecor:picture_frame2 +homedecor:shingles_wood +homedecor:table_lamp_11 +homedecor:banister_wood_horizontal_harlequin +homedecor:well +homedecor:standing_lamp_11 +tnt:boom +stairs:stair_outer_desert_sandstone +homedecor:banister_wood_horizontal_green +homedecor:glowlight_half_12 +homedecor:banister_wood_diagonal_left_green +homedecor:glowlight_quarter_12 +stairs:slab_obsidianbrick +homedecor:glowlight_small_cube_12 +homedecor:lattice_wood +homedecor:banister_wood_horizontal_malachite +homedecor:book_green +homedecor:banister_wood_diagonal_left_malachite +homedecor:plasma_lamp_12 +homedecor:doghouse +homedecor:barbecue +homedecor:ground_lantern_12 +homedecor:banister_wood_horizontal_spring +homedecor:kitchen_cabinet_colored_with_sink +homedecor:hanging_lantern_12 +homedecor:kitchen_cabinet_colorable_with_sink +basic_materials:chain_brass +homedecor:ceiling_lantern_12 +homedecor:kitchen_cabinet_colorable_half +homedecor:banister_wood_horizontal_turquoise +homedecor:lattice_lantern_large_12 +homedecor:banister_wood_diagonal_left_turquoise +pipeworks:tag_tube_001111 +homedecor:lattice_lantern_small_12 +homedecor:kitchen_cabinet_colored_steel +homedecor:banister_wood_horizontal_cyan +homedecor:desk_lamp_12 +homedecor:banister_wood_diagonal_left_cyan +pipeworks:tag_tube_010001 +homedecor:ceiling_lamp_12 +homedecor:kitchen_cabinet_colored_marble +stairs:stair_obsidian_block +homedecor:banister_wood_horizontal_cerulean +homedecor:table_lamp_12 +homedecor:banister_wood_diagonal_left_cerulean +homedecor:microwave_oven_locked +homedecor:standing_lamp_12 +stairs:stair_inner_obsidian_block +homedecor:refrigerator_white +homedecor:banister_wood_horizontal_azure +homedecor:glowlight_half_13 +homedecor:refrigerator_steel +homedecor:glowlight_quarter_13 +pipeworks:tag_tube_010110 +homedecor:refrigerator_white_locked +default:chest_locked_open +homedecor:banister_wood_horizontal_sapphire +default:glass +homedecor:refrigerator_steel_locked +homedecor:plasma_lamp_13 +stairs:stair_brick +homedecor:oven +homedecor:ground_lantern_13 +homedecor:kitchen_cabinet_colored_granite +homedecor:banister_wood_diagonal_left_blue +homedecor:hanging_lantern_13 +stairs:stair_inner_brick +homedecor:kitchen_cabinet_colored_granite_locked +homedecor:ceiling_lantern_13 +homedecor:banister_wood_horizontal_indigo +homedecor:kitchen_cabinet_colorable_locked +homedecor:lattice_lantern_large_13 +homedecor:kitchen_cabinet_colorable_granite_locked +homedecor:kitchen_cabinet_colored_with_drawers_locked +homedecor:lattice_lantern_small_13 +homedecor:banister_wood_horizontal_violet +doors:gate_wood_closed +homedecor:desk_lamp_13 +homedecor:kitchen_cabinet_colorable_with_drawers +stairs:stair_steelblock +homedecor:ceiling_lamp_13 +homedecor:kitchen_cabinet_colorable_with_drawers_locked +homedecor:banister_wood_horizontal_mulberry +homedecor:wood_table_large_square_with_wood_legs +homedecor:table_lamp_13 +stairs:stair_inner_steelblock +homedecor:kitchen_cabinet_colored_locked +homedecor:standing_lamp_13 +homedecor:banister_wood_horizontal_magenta +homedecor:kitchen_cabinet_colorable_granite +homedecor:banister_wood_diagonal_left_magenta +homedecor:dishwasher_steel +homedecor:dishwasher_wood +homedecor:dishwasher_marble +homedecor:dishwasher +homedecor:banister_wood_horizontal_fuchsia +homedecor:microwave_oven_active_locked +homedecor:banister_wood_diagonal_left_fuchsia +homedecor:microwave_oven +homedecor:kitchen_cabinet_colored_with_drawers_granite +homedecor:oven_steel_active_locked +homedecor:banister_wood_horizontal_rose +homedecor:oven_steel_locked +homedecor:banister_wood_diagonal_left_rose +homedecor:oven_active +homedecor:kitchen_cabinet_colorable_with_drawers_granite_locked +homedecor:kitchen_cabinet_colorable_with_drawers_granite +homedecor:shingle_side_terracotta +homedecor:banister_wood_horizontal_crimson +stairs:stair_inner_cobble +homedecor:banister_wood_diagonal_left_crimson +pipeworks:accelerator_tube_5 +signs:wooden_long_sign +building_blocks:Fireplace +homedecor:kitchen_cabinet_colored +default:furnace_active +pipeworks:tag_tube_100000 +default:furnace +homedecor:plasma_ball_off +pipeworks:tag_tube_100001 +pipeworks:accelerator_tube_8 +stairs:stair_outer_desert_cobble +pipeworks:tag_tube_100010 +homedecor:kitchen_cabinet_colored_with_drawers +wool:brown +pipeworks:tag_tube_100011 +homedecor:medicine_cabinet_open +stairs:stair_outer_sandstone +pipeworks:accelerator_tube_compatibility +stairs:slab_stone +homedecor:shrubbery_green +stairs:slab_wood +homedecor:lattice_lantern_small_4 +homedecor:kitchen_cabinet_colored_half +signs_road:white_right_sign +homedecor:wall_lamp_off +homedecor:toilet_open +xpanes:door_steel_bar_d +xpanes:door_steel_bar_b +homedecor:toilet +signs_road:large_street_sign +signs_road:blue_sign +default:wood +default:torch_ceiling +default:torch_wall +doors:gate_aspen_wood_open +stairs:stair_outer_pine_wood +doors:trapdoor_steel_open +default:lava_flowing +doors:door_obsidian_glass_b +doors:door_glass_c +doors:door_glass_a +lrfurn:armchair +homedecor:stonepath +homedecor:gate_half_door_open +tnt:gunpowder_burning +default:cactus +tnt:gunpowder +default:dirt +default:dirt_with_grass +default:dirt_with_dry_grass +default:dirt_with_rainforest_litter +default:dry_dirt +default:dry_dirt_with_dry_grass +default:papyrus +doors:homedecor_closet_mahogany_c +flowers:viola +stairs:stair_outer_obsidian_glass +stairs:stair_outer_ice +homedecor:cobweb_plantlike +homedecor:bathtub_clawfoot_brass_taps +homedecor:lattice_white_wood +stairs:stair_outer_obsidian +homedecor:shingle_outer_corner_asphalt +stairs:slab_silver_sandstone_brick +stairs:slab_desert_sandstone_block +stairs:stair_outer_desert_sandstone_brick +default:coral_green +homedecor:lattice_wood_vegetal +homedecor:taps_brass +default:grass_3 +stairs:stair_inner_desert_stone_block +pipeworks:mese_tube_100100 +stairs:stair_silver_sandstone +default:blueberry_bush_leaves_with_berries +homedecor:lattice_white_wood_vegetal +homedecor:lattice_lantern_small_6 +pipeworks:mese_tube_100101 +homedecor:wood_table_large_square +homedecor:banister_wood_diagonal_left_sapphire +stairs:stair_inner_bronzeblock +homedecor:wine_rack +homedecor:tv_off +homedecor:television +homedecor:banister_wood_diagonal_left_chartreuse +homedecor:sink +pipeworks:crossing_tube_1 +pipeworks:mese_tube_100111 +homedecor:tv +pipeworks:crossing_tube_2 +homedecor:shrubbery_red +default:fence_rail_pine_wood +homedecor:shrubbery_large_red +homedecor:desk_globe +homedecor:banister_white_dark_horizontal +pipeworks:crossing_tube_4 +homedecor:banister_white_dark_diagonal_left +xpanes:bar +homedecor:curtain_closed +homedecor:picture_frame1 +homedecor:painting_4 +pipeworks:crossing_tube_6 +homedecor:banister_brass_horizontal +pipeworks:mese_tube_101011 +homedecor:banister_brass_diagonal_left +stairs:slab_desert_stone_block +homedecor:bathroom_tiles_dark +pipeworks:crossing_tube_8 +pipeworks:mese_tube_101100 +homedecor:bottle_green +homedecor:banister_wrought_iron_horizontal +doors:homedecor_carolina_b +homedecor:banister_wrought_iron_diagonal_left +pipeworks:crossing_tube_10 +homedecor:shrubbery_yellow +homedecor:banister_wood_diagonal_right_grey +homedecor:shrubbery_large_yellow +homedecor:banister_wood_diagonal_right +pipeworks:mese_tube_101110 +homedecor:banister_wood_diagonal_right_red +xpanes:bar_flat +homedecor:banister_wood_diagonal_right_vermilion +homedecor:shutter +homedecor:banister_wood_diagonal_right_orange +doors:homedecor_french_mahogany_b +homedecor:banister_wood_diagonal_right_amber +pipeworks:mese_tube_110000 +homedecor:banister_wood_diagonal_right_yellow +stairs:stair_ice +homedecor:banister_wood_diagonal_right_lime +homedecor:shutter_colored +homedecor:banister_wood_diagonal_right_chartreuse +doors:homedecor_french_white_a +homedecor:banister_wood_diagonal_right_harlequin +doors:homedecor_french_oak_a +homedecor:banister_wood_diagonal_right_green +pipeworks:mese_tube_110010 +homedecor:banister_wood_diagonal_right_malachite +walls:cobble +homedecor:banister_wood_diagonal_right_spring +homedecor:light_switch_off +homedecor:banister_wood_diagonal_right_turquoise +homedecor:painting_3 +homedecor:banister_wood_diagonal_right_cyan +homedecor:curtain_open +homedecor:banister_wood_diagonal_right_cerulean +pipeworks:mese_tube_110100 +homedecor:banister_wood_diagonal_right_azure +xpanes:door_steel_bar_a +homedecor:banister_wood_diagonal_right_sapphire +building_blocks:woodglass +homedecor:banister_wood_diagonal_right_blue +building_blocks:Roofing +homedecor:banister_wood_diagonal_right_indigo +itemframes:frame +homedecor:banister_wood_diagonal_right_violet +homedecor:painting_5 +homedecor:banister_wood_diagonal_right_mulberry +homedecor:flower_pot_black +homedecor:banister_wood_diagonal_right_magenta +homedecor:potted_dandelion_white +homedecor:banister_wood_diagonal_right_fuchsia +fireflies:firefly +homedecor:banister_wood_diagonal_right_rose +pipeworks:mese_tube_111000 +homedecor:banister_wood_diagonal_right_crimson +default:torch +homedecor:cardboard_box +homedecor:banister_wood_diagonal_left_vermilion +homedecor:banister_white_dark_diagonal_right +homedecor:painting_7 +homedecor:4_bottles_brown +homedecor:banister_brass_diagonal_right +default:permafrost_with_stones +default:permafrost +homedecor:banister_wrought_iron_diagonal_right +stairs:stair_outer_steelblock +homedecor:painting_8 +homedecor:banister_wood_diagonal_left_mulberry +homedecor:wood_table_small_square_with_wood_legs +pipeworks:mese_tube_111100 +homedecor:banister_wood_diagonal_left_violet +stairs:slab_brick +stairs:stair_outer_brick +homedecor:painting_9 +pipeworks:mese_tube_111101 +pipeworks:pump_on +stairs:slab_obsidian_block +pipeworks:mese_tube_111110 +default:chest_open +stairs:stair_outer_obsidianbrick +homedecor:painting_10 +homedecor:banister_wood_diagonal_left_spring +default:water_source +default:chest_locked +stairs:stair_outer_tinblock +homedecor:banister_wood_horizontal_lime +pipeworks:spigot +homedecor:painting_11 +carts:rail +homedecor:banister_wood_horizontal_grey +homedecor:washing_machine +pipeworks:fountainhead +pipeworks:fountainhead_pouring +stairs:slab_copperblock +homedecor:painting_12 +doors:homedecor_french_oak_d +signs:label_small +homedecor:curtainrod_wrought_iron +stairs:stair_desert_stone +homedecor:curtainrod_brass +building_blocks:smoothglass +homedecor:painting_13 +homedecor:projection_screen +default:acacia_bush_leaves +doors:homedecor_carolina_c +signs:label_medium +signs:wooden_sign +default:leaves +homedecor:painting_14 +stairs:stair_outer_obsidian_block +default:stone +building_blocks:Adobe +building_blocks:Marble +building_blocks:gravel_spread +homedecor:shingle_side_asphalt +homedecor:painting_15 +stairs:stair_outer_sandstone_block +flowers:tulip +homedecor:glowlight_half_1 +homedecor:glowlight_quarter_1 +homedecor:desk_lamp_1 +homedecor:table_lamp_1 +homedecor:painting_16 +homedecor:glowlight_small_cube_2 +homedecor:plasma_lamp_2 +homedecor:ground_lantern_2 +homedecor:lattice_lantern_large_2 +homedecor:glowlight_half_3 +homedecor:hanging_lantern_3 +homedecor:painting_17 +homedecor:desk_lamp_3 +homedecor:glowlight_small_cube_4 +homedecor:plasma_lamp_4 +homedecor:ground_lantern_4 +homedecor:hanging_lantern_4 +homedecor:lattice_lantern_large_4 +homedecor:painting_18 +homedecor:chimney +homedecor:table_lamp_4 +homedecor:glowlight_small_cube_5 +steel:plate_soft +steel:plate_rusted +homedecor:ceiling_lantern_5 +homedecor:painting_19 +homedecor:banister_wood_diagonal_left_harlequin +default:aspen_leaves +default:aspen_wood +homedecor:glowlight_small_cube_9 +carts:brakerail +signs:paper_poster +homedecor:painting_20 +doors:homedecor_french_oak_c +doors:homedecor_exterior_fancy_c +homedecor:banister_wood_diagonal_left_indigo +homedecor:glass_table_small_round +steel:grate_soft +stairs:stair_outer_desert_stonebrick +homedecor:glowlight_small_cube_13 +doors:door_obsidian_glass_d +steel:grate_hard +stairs:slab_pine_wood +homedecor:hanging_lantern_0 diff --git a/mods/xcompat/test/nodelist/voxelibre.txt b/mods/xcompat/test/nodelist/voxelibre.txt new file mode 100644 index 00000000..777d1a11 --- /dev/null +++ b/mods/xcompat/test/nodelist/voxelibre.txt @@ -0,0 +1,2499 @@ +mcl_maps:filled_map_character_male_crea +mcl_doors:spruce_trapdoor_ladder +mcl_colorblocks:hardened_clay_white +mcl_ocean:dead_tube_coral_block +mcl_chests:green_shulker_box +mcl_beehives:bee_nest +mcl_cauldrons:cauldron_3 +mcl_stairs:stair_copper_cut +mcl_doors:birch_trapdoor_ladder +mcl_core:barrier +vl_hollow_logs:stripped_warped_hyphae_hollow +mcl_core:sprucetree +mcl_walls:prismarine_6 +xpanes:pane_green +mcl_stairs:stair_wood +mcl_flowerpots:flower_pot_blue_orchid +mcl_core:glass_yellow +mcl_portals:portal_gateway +mcl_core:light_2 +mcl_stairs:stair_crimson_hyphae_wood_inner +mcl_ocean:bubble_coral_block +mesecons_lightstone:lightstone_off +mcl_colorblocks:glazed_terracotta_orange +mcl_farming:potato_1 +mcl_flowerpots:flower_pot_tulip_pink +mcl_flowers:double_grass_top +mcl_amethyst:medium_amethyst_bud +mcl_stairs:stair_warped_hyphae_wood_outer +mcl_stairs:slab_stonebrickcracked_double +mcl_walls:andesite_5 +mcl_mobspawners:spawner +mcl_mud:mud +mesecons_pistons:piston_up_sticky_on +mcl_core:frosted_ice_1 +mcl_compass:lodestone +mcl_stairs:slab_brick_block +mcl_crimson:weeping_vines +mcl_colorblocks:concrete_orange +mcl_walls:stonebrickmossy +mcl_colorblocks:glazed_terracotta_pillar_silver +mcl_core:ironblock +mcl_end:dragon_egg +mcl_stairs:stair_redsandstonesmooth2_outer +mcl_brewing:stand_011 +mcl_walls:mudbrick_7 +mcl_stairs:stair_waxed_copper_oxidized_cut_inner +mcl_beds:respawn_anchor_charged_4 +mcl_lanterns:chain +mcl_stairs:slab_birchtree_bark_double +mcl_mushrooms:red_mushroom_block_cap_110010 +mcl_stairs:slab_concrete_orange +mcl_core:snow_6 +mcl_chests:cyan_shulker_box_small +mcl_crimson:warped_door_b_3 +mcl_beds:bed_blue_top +mcl_walls:redsandstone_6 +mcl_deepslate:deepslatecobbledwall_2 +mcl_stairs:stair_concrete_magenta_outer +mcl_wool:pink_carpet +mcl_walls:brick_3 +mcl_walls:prismarine +mcl_mushrooms:brown_mushroom_block_cap_110100 +mcl_fences:birch_fence_gate_open +mcl_brewing:stand_010 +mcl_walls:rednetherbrick_4 +mcl_mushrooms:brown_mushroom_block_cap_110000 +mcl_core:jungletree +mcl_wool:blue_carpet +mcl_flowerpots:flower_pot_lily_of_the_valley +mcl_stairs:slab_crimson_hyphae_wood_double +mcl_cherry_blossom:cherry_door_t_2 +mcl_flowers:poppy +xpanes:pane_white +mcl_stairs:slab_acaciawood_top +mcl_ocean:kelp_sand +mcl_walls:diorite_3 +mcl_stairs:stair_mangrove_wood_inner +mcl_cake:cake_4 +mcl_deepslate:deepslatepolishedwall_8 +mcl_ocean:kelp_dirt +mcl_deepslate:deepslatebrickswall_8 +mcl_cake:cake +mcl_minecarts:detector_rail +mcl_walls:brick_21 +mcl_core:acaciatree_bark +mcl_stairs:slab_copper_cut +mcl_wool:green_carpet +mcl_stairs:slab_blackstone_brick_polished_double +mcl_flowers:double_grass +mcl_torches:torch_wall +mesecons_pressureplates:pressure_plate_birchwood_on +mcl_doors:acacia_door_t_3 +mcl_beehives:beehive_3 +mcl_core:packed_ice +mcl_stairs:slab_bamboo_mosaic_double +mcl_walls:stonebrickmossy_1 +mesecons_button:button_warped_hyphae_wood_on +mcl_walls:rednetherbrick_15 +mcl_farming:melontige_4 +mcl_stairs:stair_acaciawood_inner +mcl_stairs:stair_concrete_red_inner +xpanes:pane_light_blue_flat +mcl_walls:rednetherbrick_21 +mcl_core:mycelium_snow +mcl_signs:standing_sign22_5_warped_hyphae_wood +xpanes:pane_yellow +mcl_walls:redsandstone_12 +mcl_wool:yellow +mcl_stonecutter:stonecutter +mcl_walls:diorite_5 +mcl_comparators:comparator_on_comp +mcl_stairs:stair_stone_rough_inner +mesecons_torch:mesecon_torch_overheated +mcl_stairs:slab_birchtree_bark +mcl_stairs:stair_sandstone_outer +mcl_stairs:stair_copper_exposed_cut_outer +mcl_core:glass_magenta +mcl_deepslate:deepslatetileswall_10 +mesecons_torch:mesecon_torch_overheated_wall +xpanes:bar +mesecons_button:button_polished_blackstone_off +mcl_observers:observer_on +mcl_ocean:sea_lantern +mcl_doors:trapdoor_ladder +mcl_anvils:anvil_damage_2 +xpanes:bar_flat +mcl_bamboo:bamboo_1 +mcl_stairs:slab_sandstonesmooth2 +mcl_end:end_rod_lightblue +mcl_walls:stonebrickmossy_3 +mcl_wool:orange_carpet +mcl_core:stone_with_redstone_lit +mcl_stairs:slab_bamboo_block_top +mcl_mushrooms:red_mushroom_block_cap_010111 +mcl_deepslate:deepslatecobbledwall_15 +mcl_walls:stonebrick_4 +mcl_farming:pumpkintige_linked_l +mcl_stairs:stair_diorite_smooth_outer +mcl_fences:jungle_fence_gate_open +mcl_core:frosted_ice_0 +mcl_end:end_rod_purple +mcl_stairs:slab_deepslate_cobbled_top +mcl_wool:silver +mcl_colorblocks:concrete_magenta +mcl_stairs:stair_sandstonesmooth2_inner +mcl_walls:andesite_2 +mcl_core:stone_with_iron +mcl_mushrooms:brown_mushroom_block_cap_011110 +mcl_farming:melontige_7 +mcl_colorblocks:glazed_terracotta_pink +mesecons_torch:redstoneblock +mcl_walls:stonebrick_5 +mcl_flowers:lilac +mcl_deepslate:deepslatecobbledwall_3 +mcl_core:snow_5 +mcl_walls:brick_14 +mcl_core:lava_source +mcl_walls:granite_15 +mcl_crimson:warped_door_b_2 +mcl_stairs:slab_sandstone_top +mcl_signs:standing_sign_bamboo +mcl_mushrooms:red_mushroom_block_cap_101101 +mcl_walls:redsandstone_5 +mcl_walls:rednetherbrick_7 +mcl_stairs:slab_nether_brick +mcl_walls:brick_0 +mcl_meshhand:mcl_skins_base_1B47A57FF_female_surv +mcl_stairs:stair_sandstone +xpanes:pane_green_flat +mcl_signs:standing_sign_mangrove_wood +mesecons_button:button_wood_off +mcl_deepslate:deepslatepolishedwall_9 +mcl_stairs:stair_blackstone_inner +mcl_core:glass +mcl_stairs:slab_andesite_double +mcl_flowers:rose_bush_top +mcl_flowers:allium +mcl_ocean:brain_coral +xpanes:pane_yellow_flat +mcl_cherry_blossom:cherrytree +mcl_stairs:stair_concrete_magenta_inner +mcl_blackstone:soul_torch_wall +mcl_blackstone:wall_6 +mcl_flowerpots:flower_pot_darksapling +mcl_end:end_rod_green +mcl_doors:jungle_trapdoor_ladder +mcl_mangrove:mangrove_door_t_2 +mcl_heads:wither_skeleton45 +mcl_walls:granite_6 +mcl_stairs:slab_stone_rough_top +mcl_compressed_blocks:sextuple_compressed_cobblestone +mcl_signs:standing_sign45_mangrove_wood +mcl_walls:stonebrickmossy_0 +mcl_stairs:stair_bamboo_stripped_outer +mcl_crimson:warped_roots +mcl_signs:wall_sign_warped_hyphae_wood +mcl_stairs:stair_tree_bark +mcl_enchanting:table +mcl_core:mycelium +mesecons_lightstone:lightstone_on_cyan +mclx_fences:red_nether_brick_fence +mcl_stairs:slab_deepslate_polished +mcl_stairs:slab_concrete_silver_top +mcl_walls:prismarine_10 +air +mcl_walls:granite +mcl_mangrove:propagule_mud +mcl_core:darkleaves +mcl_chests:red_shulker_box_small +mcl_farming:sweet_berry_bush_1 +mcl_composters:composter_2 +mcl_beehives:bee_nest_2 +mcl_walls:redsandstone_11 +mcl_walls:mossycobble_7 +mesecons_lightstone:lightstone_on_blue +mcl_deepslate:deepslatebrickswall_6 +mcl_cherry_blossom:stripped_cherrytree_bark +mcl_crimson:warped_hyphae_wood +vl_hollow_logs:stripped_crimson_hyphae_hollow +mcl_cauldrons:cauldron +mcl_stairs:stair_mangrove_wood_outer +mcl_copper:block_weathered_cut +mcl_walls:stonebrickmossy_12 +mcl_beehives:bee_nest_3 +mcl_farming:potato_3 +mcl_stairs:stair_andesite_smooth +mcl_deepslate:deepslatepolishedwall_14 +mcl_stairs:stair_waxed_copper_weathered_cut_inner +mesecons_button:button_polished_blackstone_on +mcl_deepslate:deepslatecobbledwall_16 +mcl_stairs:stair_prismarine_dark_inner +mcl_crimson:nether_sprouts +mcl_core:light_0 +mcl_ocean:seagrass_redsand +mcl_blackstone:wall_5 +mcl_fences:dark_oak_fence +mcl_walls:stonebrick_6 +mcl_farming:pumpkin +mcl_doors:jungle_door_t_1 +mcl_colorblocks:concrete_powder_silver +mcl_stairs:slab_sprucetree_bark +mcl_walls:endbricks_0 +mcl_beds:respawn_anchor_charged_2 +mcl_torches:torch +mcl_core:clay +mcl_fences:birch_fence_gate +mcl_core:snow_4 +mcl_banners:standing_banner +mcl_wool:purple +mcl_chests:green_shulker_box_small +mcl_walls:rednetherbrick_14 +mcl_lanterns:lantern_ceiling +mcl_fences:jungle_fence +mcl_maps:filled_map_mcl_skins_base_1EEB592FF_male_crea +mcl_stairs:stair_sprucetree_bark +mcl_stairs:stair_deepslate_polished_inner +mcl_stairs:slab_goldblock +mcl_walls:rednetherbrick_6 +mcl_mangrove:mangrove_wood_fence_gate +mcl_smithing_table:table +mcl_stairs:slab_quartzblock_double +mcl_crimson:stripped_warped_hyphae_bark +mcl_stairs:slab_deepslate_polished_top +mcl_stairs:slab_copper_exposed_cut +mcl_amethyst:amethyst_cluster +mcl_sculk:catalyst +mcl_beds:bed_magenta_bottom +mesecons_pressureplates:pressure_plate_crimson_hyphae_wood_on +mcl_colorblocks:concrete_yellow +mcl_stairs:slab_concrete_grey_top +mcl_walls:redsandstone_0 +mesecons_delayer:delayer_on_1 +mcl_crimson:crimson_door_b_1 +mcl_deepslate:deepslate_with_redstone_lit +mcl_nether:red_nether_brick +mcl_walls:granite_7 +mcl_walls:diorite_15 +mcl_stairs:stair_quartzblock_outer +mcl_walls:mudbrick_14 +mcl_core:diorite_smooth +mcl_wool:brown +mcl_colorblocks:hardened_clay_brown +mcl_doors:acacia_trapdoor_open +mcl_farming:soil_wet +mcl_mushrooms:mushroom_red +mcl_flowerpots:flower_pot_cactus +mesecons_commandblock:commandblock_on +mcl_stairs:slab_jungletree_bark +mesecons_lightstone:lightstone_on_white +mcl_doors:birch_trapdoor_open +mcl_walls:stonebrick_21 +mcl_ocean:tube_coral +mcl_stairs:slab_copper_weathered_cut_top +mcl_stairs:slab_acaciawood_double +mcl_walls:prismarine_7 +mcl_stairs:slab_blackstone +mcl_chests:trapped_chest_left +mesecons_pistons:piston_normal_on +mcl_stairs:stair_blackstone_polished_inner +mcl_ocean:sea_pickle_3_dead_brain_coral_block +mesecons_lightstone:lightstone_on_red +mcl_flowers:clover +mcl_stairs:stair_quartzblock_inner +mcl_stairs:stair_tree_bark_inner +mcl_hoppers:hopper_side_disabled +mesecons_lightstone:lightstone_on_yellow +mcl_doors:jungle_door_t_4 +mcl_farming:sweet_berry_bush_2 +mcl_cherry_blossom:cherrywood +mcl_walls:sandstone_11 +mcl_core:glass_purple +mcl_copper:waxed_block +mesecons_lightstone:lightstone_off_brown +mcl_cauldrons:cauldron_2 +mcl_walls:diorite_7 +mcl_composters:composter_1 +mcl_stairs:slab_red_nether_brick +mcl_core:light_11 +mcl_lanterns:soul_lantern_floor +mcl_walls:mossycobble_0 +mcl_deepslate:deepslatetileswall_16 +mcl_crimson:warped_fence_gate_open +mcl_stairs:stair_stonebrickcracked_inner +mcl_farming:potato_2 +mesecons_pistons:piston_up_pusher_normal +mcl_blackstone:wall_21 +mcl_stairs:slab_deepslate_tiles_top +xpanes:pane_natural_flat +mcl_mangrove:mangrove_trapdoor_open +mcl_walls:stonebrickmossy_13 +mcl_stairs:slab_mossycobble_double +mcl_doors:jungle_trapdoor_open +mcl_flowerpots:flower_pot_dandelion +mcl_flowers:sunflower +mcl_cherry_blossom:cherryleaves_orphan +mcl_farming:pumpkin_face_light +mcl_colorblocks:hardened_clay_lime +mcl_mushrooms:brown_mushroom_block_cap_001100 +mcl_walls:prismarine_0 +mcl_walls:prismarine_21 +mcl_deepslate:infested_deepslate +mcl_mushrooms:red_mushroom_block_cap_000011 +mcl_crafting_table:crafting_table +mcl_stairs:slab_darkwood +mcl_walls:brick_15 +mcl_core:stripped_dark_oak +mcl_colorblocks:concrete_powder_red +mcl_beds:bed_magenta_top +mcl_stairs:slab_granite_smooth +mcl_chests:trapped_chest_on_left +mcl_bamboo:bamboo +mcl_chests:ender_chest_small +vl_hollow_logs:stripped_acacia_hollow +mcl_chests:violet_shulker_box_small +mcl_core:stone +mcl_dispensers:dispenser +mcl_wool:yellow_carpet +mcl_furnaces:furnace_active +mcl_walls:rednetherbrick_1 +mcl_nether:quartz_block +mcl_walls:brick_16 +mcl_stairs:slab_copper_weathered_cut +mcl_copper:waxed_block_oxidized +mcl_mushrooms:brown_mushroom_block_cap_001101 +mcl_mushrooms:brown_mushroom_block_cap_011001 +mcl_cherry_blossom:cherry_door_b_3 +mcl_walls:endbricks_2 +mcl_core:brick_block +mcl_walls:mudbrick_11 +mcl_heads:skeleton_wall +mcl_comparators:comparator_off_comp +mcl_core:stripped_jungle_bark +mcl_colorblocks:concrete_light_blue +mcl_core:snow_8 +mcl_walls:granite_8 +mcl_farming:melon +mcl_beehives:beehive_2 +mcl_stairs:slab_copper_cut_top +mcl_core:acaciatree +mcl_stairs:stair_quartzblock +mcl_walls:redsandstone_7 +mcl_wool:light_blue +mcl_doors:wooden_door_b_3 +mcl_stairs:slab_mossycobble_top +mcl_bamboo:bamboo_3 +mcl_deepslate:deepslatepolishedwall_16 +mcl_compressed_blocks:quadruple_compressed_cobblestone +mcl_core:darktree +mcl_stairs:slab_sandstonesmooth2_double +mcl_deepslate:deepslatetileswall_3 +mcl_end:purpur_block +mcl_doors:dark_oak_trapdoor_ladder +mcl_deepslate:deepslatebrickswall_5 +mcl_copper:waxed_block_cut +mcl_walls:endbricks_14 +mcl_stairs:stair_concrete_red +mcl_colorblocks:concrete_black +mcl_deepslate:deepslatecobbledwall_10 +mcl_doors:jungle_door_t_3 +mcl_mushrooms:brown_mushroom_block_cap_000111 +mcl_walls:netherbrick_8 +mcl_farming:melontige_5 +mcl_mushrooms:brown_mushroom_block_cap_000011 +mcl_doors:birch_door_t_4 +mcl_stairs:stair_concrete_blue +mcl_walls:rednetherbrick_10 +xpanes:pane_pink +mcl_walls:diorite_0 +mcl_meshhand:mcl_skins_character_1_female_crea +mcl_stairs:stair_andesite_smooth_outer +mcl_walls:granite_9 +mcl_flowerpots:flower_pot_cornflower +mcl_walls:andesite_21 +mesecons_lightstone:lightstone_off_magenta +mcl_chests:orange_shulker_box +mcl_end:end_rod_yellow +mesecons_pressureplates:pressure_plate_warped_hyphae_wood_off +mcl_flowers:oxeye_daisy +mcl_crimson:warped_door_t_4 +mcl_end:end_rod_magenta +mcl_walls:sandstone_2 +mcl_core:birchwood +xpanes:pane_blue +mesecons_lightstone:lightstone_on_brown +mesecons_pistons:piston_down_normal_on +mcl_chests:grey_shulker_box +mcl_cauldrons:cauldron_1_lava +mcl_stairs:stair_redsandstone_outer +mcl_stairs:stair_end_bricks_outer +mcl_stairs:stair_bamboo_mosaic_outer +mcl_colorblocks:glazed_terracotta_grey +mcl_farming:pumpkin_face +mcl_doors:trapdoor_open +mcl_walls:mossycobble_1 +mcl_walls:prismarine_1 +mcl_nether:ancient_debris +mcl_walls:mudbrick_1 +mcl_colorblocks:concrete_red +mcl_stairs:stair_blackstone_chiseled_polished_inner +mesecons_delayer:delayer_on_locked +mcl_brewing:stand_101 +mcl_walls:granite_1 +mcl_walls:redsandstone_2 +mcl_walls:redsandstone_13 +mcl_stairs:slab_copper_cut_double +mcl_deepslate:deepslate_with_coal +mcl_colorblocks:glazed_terracotta_pillar_black +mcl_mushrooms:red_mushroom_block_cap_011110 +mcl_stairs:slab_redsandstone_top +mcl_campfires:soul_campfire +mcl_core:cactus +mcl_deepslate:deepslate_bricks +mcl_walls:rednetherbrick_16 +mcl_stairs:slab_redsandstonesmooth2 +mcl_core:sandstonesmooth +mcl_core:light_12 +mcl_deepslate:deepslatetileswall_15 +mcl_wool:magenta +mcl_furnaces:furnace +mcl_crimson:crimson_fence +mcl_deepslate:deepslatepolishedwall_4 +mcl_walls:mudbrick_16 +mcl_stairs:stair_blackstone_polished +mcl_walls:stonebrick_0 +mcl_cherry_blossom:cherry_door_b_2 +mcl_walls:cobble_21 +mcl_walls:granite_11 +mcl_colorblocks:glazed_terracotta_pillar_lime +mcl_stairs:stair_redsandstone_inner +mcl_flowerpots:flower_pot_mushroom_brown +mcl_flowers:fern +mcl_stairs:slab_end_bricks_double +mcl_stairs:slab_brick_block_top +mcl_core:redsandstonesmooth2 +mcl_target:target_on +mcl_blackstone:wall_16 +mcl_stairs:stair_darktree_bark +mcl_stairs:stair_red_nether_brick +mcl_blackstone:wall_7 +mcl_stairs:stair_waxed_copper_exposed_cut_outer +xpanes:pane_silver +mcl_doors:wooden_door_b_2 +mcl_doors:spruce_door_t_1 +mcl_bamboo:bamboo_2 +mcl_fire:eternal_fire +mcl_mangrove:mangrove_door_t_3 +mcl_stairs:stair_red_nether_brick_outer +mcl_ocean:fire_coral_block +mcl_core:crying_obsidian +mcl_walls:sandstone_21 +mcl_heads:stalker_wall +mcl_deepslate:tuff +mcl_stairs:stair_blackstone_chiseled_polished_outer +mcl_stairs:slab_blackstone_polished_top +mcl_stairs:stair_deepslate_polished_outer +mcl_colorblocks:hardened_clay_purple +mcl_stairs:slab_andesite_smooth_double +mesecons_pistons:piston_down_pusher_sticky +mcl_core:glass_silver +mcl_farming:pumpkin_5 +mcl_deepslate:deepslatebrickswall_4 +mcl_walls:rednetherbrick_0 +mcl_stairs:stair_waxed_copper_cut_inner +mcl_copper:block_oxidized_cut +mcl_stairs:stair_jungletree_bark_inner +mcl_crimson:warped_trapdoor_ladder +mcl_ocean:kelp_redsand +mcl_beds:bed_grey_bottom +mcl_mangrove:hanging_propagule_1 +mcl_stairs:stair_prismarine_dark_outer +mcl_walls:endbricks_15 +mcl_fences:acacia_fence_gate_open +mcl_stairs:slab_copper_oxidized_cut_top +mcl_stairs:slab_redsandstone_double +mcl_flowerpots:flower_pot_warped_fungus +mcl_walls:sandstone +mcl_stairs:stair_warped_hyphae_wood_inner +mcl_walls:rednetherbrick_13 +mcl_maps:filled_map_character_male_surv +mcl_stairs:slab_waxed_copper_weathered_cut_double +mcl_heads:wither_skeleton67_5 +mcl_deepslate:deepslatecobbledwall_11 +mcl_stairs:stair_sandstone_inner +mcl_walls:mossycobble_2 +mcl_stairs:slab_prismarine_dark_double +mcl_stairs:slab_concrete_white_double +mcl_core:tree_bark +mcl_stairs:stair_blackstone_chiseled_polished +mcl_crimson:crimson_roots +mcl_walls:diorite_1 +mcl_walls:sandstone_13 +mcl_stairs:stair_bamboo_plank +mcl_deepslate:deepslate +mcl_stairs:slab_stonebrickcracked +mcl_doors:jungle_trapdoor +mcl_core:water_source +mesecons_lightstone:lightstone_off_lightblue +mcl_walls:mudbrick_2 +mcl_wool:black_carpet +mcl_stairs:slab_wood_top +mcl_walls:cobble_14 +mcl_farming:melontige_3 +mcl_stairs:stair_cobble +mcl_deepslate:deepslatetileswall +mcl_crimson:warped_fungus +mcl_copper:stone_with_copper +mcl_stairs:stair_prismarine_outer +mcl_mushrooms:brown_mushroom_block_cap_101000 +mcl_walls:netherbrick_9 +mcl_core:jungletree_bark +mcl_wool:red_carpet +mcl_amethyst:small_amethyst_bud +mcl_core:sprucesapling +mcl_walls:prismarine_2 +mesecons_lightstone:lightstone_off_orange +mcl_stairs:stair_stonebrickmossy_outer +mcl_stairs:slab_birchwood +mcl_beds:respawn_anchor_charged_1 +mcl_walls:mossycobble_21 +mcl_core:redsand +mcl_meshhand:mcl_skins_character_1_female_surv +mcl_stairs:slab_concrete_brown +mcl_signs:standing_sign45_bamboo +mcl_core:jungleleaves_orphan +mcl_farming:melontige_unconnect +mcl_walls:redsandstone_1 +mcl_signs:standing_sign67_5_crimson_hyphae_wood +mcl_minecarts:rail +mesecons:wire_00010000_off +mcl_stairs:slab_granite_double +mcl_stairs:stair_diorite +mcl_stairs:slab_jungletree_bark_double +mcl_beds:bed_lime_bottom +mcl_chests:blue_shulker_box_small +mcl_stairs:stair_granite_smooth_outer +mcl_stairs:slab_mangrove_wood_top +mcl_brewing:stand_100 +mcl_stairs:stair_concrete_light_blue_outer +mcl_walls:granite_16 +mcl_end:end_rod_grey +mcl_chests:magenta_shulker_box +mcl_cherry_blossom:cherry_door_b_1 +mcl_core:mossycobble +mcl_stairs:stair_copper_cut_outer +mcl_crimson:warped_fence_gate +mcl_stairs:slab_redsandstone +mcl_walls:cobble_15 +mcl_stairs:stair_stonebrickmossy_inner +mcl_core:glass_orange +mcl_core:light_7 +mcl_doors:jungle_door_b_3 +mcl_stairs:slab_mangrove_wood_double +mcl_stairs:slab_waxed_copper_cut +mcl_doors:wooden_door_b_1 +mcl_chests:black_shulker_box +mcl_walls:diorite_14 +mcl_signs:standing_sign22_5 +mcl_walls:stonebrick_1 +mcl_core:glass_blue +mcl_ocean:dead_bubble_coral +mcl_stairs:slab_copper_weathered_cut_double +mcl_stairs:stair_bamboo_mosaic +mcl_deepslate:deepslatetileswall_9 +mcl_minecarts:golden_rail +mcl_stairs:slab_stonebrickmossy +mcl_signs:standing_sign22_5_bamboo +mcl_stairs:stair_goldblock_inner +mcl_core:obsidian +mesecons_delayer:delayer_on_4 +mcl_walls:rednetherbrick_3 +mcl_crimson:crimson_door_b_4 +mcl_droppers:dropper_down +mcl_stairs:stair_mud_brick_inner +mcl_farming:carrot +mcl_cake:cake_2 +mcl_farming:pumpkin_4 +mcl_core:slimeblock +mcl_stairs:stair_waxed_copper_cut_outer +mcl_stairs:slab_bamboo_mosaic +mcl_stairs:slab_birchwood_double +mcl_stairs:slab_diorite_smooth_double +mcl_flowers:cornflower +mcl_stairs:stair_concrete_white_outer +mcl_stairs:slab_blackstone_double +mcl_blackstone:wall_14 +mcl_stairs:stair_redsandstone +mcl_blackstone:soul_fire +mcl_core:glass_black +mcl_core:birchleaves_orphan +mcl_stairs:stair_prismarine_dark +mcl_walls:rednetherbrick_12 +mcl_mangrove:mangrove_trapdoor_ladder +mcl_stairs:stair_goldblock +mcl_chests:chest +mcl_chests:black_shulker_box_small +mcl_walls:diorite_2 +mcl_core:birchleaves +mcl_deepslate:deepslatecobbledwall_12 +mcl_itemframes:item_frame +mcl_walls:prismarine_3 +mcl_deepslate:deepslate_with_gold +mcl_composters:composter_6 +mcl_heads:stalker +mcl_monster_eggs:monster_egg_cobble +mcl_stairs:slab_deepslate_tiles_double +mcl_stairs:stair_stone_rough_outer +mcl_stairs:stair_diorite_smooth_inner +mcl_farming:carrot_5 +mcl_chests:cyan_shulker_box +mcl_farming:beetroot_1 +xpanes:pane_red +mcl_core:light_10 +mcl_stairs:slab_granite_smooth_double +mcl_crimson:stripped_crimson_hyphae +mcl_stairs:slab_wood +mcl_copper:block_weathered +mcl_walls:mossycobble_3 +mcl_walls:mudbrick_3 +mcl_deepslate:deepslatebrickswall_14 +mcl_deepslate:deepslatebrickswall_2 +mesecons_lightstone:lightstone_on_lightblue +mcl_colorblocks:glazed_terracotta_silver +mcl_stairs:slab_concrete_light_blue_top +mcl_stairs:slab_cherrywood_double +mcl_doors:acacia_door_b_3 +mcl_core:granite +mcl_deepslate:deepslatetileswall_21 +mcl_farming:melontige_6 +mcl_crimson:crimson_door_t_4 +mcl_stairs:stair_copper_exposed_cut +mcl_bamboo:pressure_plate_bamboo_wood_off +mesecons_pressureplates:pressure_plate_mangrove_wood_on +mcl_mushrooms:red_mushroom_block_cap_111010 +mcl_stairs:stair_copper_oxidized_cut_outer +mcl_farming:melontige_linked_b +mcl_ocean:horn_coral_fan +mcl_crimson:crimson_hyphae_wood +mcl_core:dirt_with_grass +mcl_doors:iron_trapdoor +mcl_deepslate:deepslatepolishedwall_6 +mcl_compressed_blocks:triple_compressed_cobblestone +mcl_bells:bell +mcl_walls:brick_11 +mcl_copper:block +mesecons_lightstone:lightstone_on_black +mcl_stairs:slab_crimson_hyphae_wood_top +mcl_wool:black +mcl_wool:light_blue_carpet +mcl_ocean:brain_coral_block +mcl_colorblocks:hardened_clay_orange +mcl_flowerpots:flower_pot_tulip_red +mcl_signs:wall_sign +mcl_stairs:stair_waxed_copper_oxidized_cut_outer +mcl_crimson:warped_trapdoor_open +mcl_fences:fence_gate_open +mcl_doors:spruce_trapdoor +mcl_walls:mudbrick_10 +mcl_wool:lime +mesecons_lightstone:lightstone_on_pink +mcl_deepslate:deepslatecobbledwall_8 +mcl_mangrove:mangrove_stripped +mcl_walls:stonebrick_2 +mcl_copper:block_oxidized +mcl_stairs:slab_blackstone_top +mcl_crimson:crimson_door_t_1 +mcl_colorblocks:concrete_powder_cyan +mcl_farming:wheat_7 +mcl_walls:granite_13 +mcl_stairs:stair_stonebrickcracked +mcl_composters:composter_5 +mcl_mushrooms:brown_mushroom_block_cap_000010 +mesecons_delayer:delayer_off_locked +mcl_signs:standing_sign67_5 +mcl_crimson:warped_hyphae +mcl_stairs:slab_quartzblock_top +mcl_cherry_blossom:cherry_trapdoor_ladder +mcl_maps:filled_map_mcl_skins_character_1_female_surv +mcl_deepslate:deepslatetileswall_8 +mcl_beehives:beehive_1 +mcl_walls:netherbrick +mesecons_lightstone:lightstone_off_white +mcl_core:snow +mcl_core:snowblock +mcl_signs:wall_sign_crimson_hyphae_wood +mcl_observers:observer_down_on +mcl_walls:endbricks_21 +mcl_deepslate:deepslatetileswall_13 +mcl_colorblocks:hardened_clay_silver +mcl_flowers:fourleaf_clover +mcl_signs:standing_sign22_5_crimson_hyphae_wood +mcl_walls:diorite_11 +xpanes:pane_purple +mesecons_lightstone:lightstone_off_silver +mcl_deepslate:deepslatebrickswall +mcl_blackstone:nether_gold +mcl_bamboo:bamboo_fence_gate_open +mcl_portals:portal +mcl_fletching_table:fletching_table +mcl_deepslate:deepslatecobbledwall_13 +mcl_flowers:sunflower_top +mcl_beds:bed_silver_top +mcl_deepslate:deepslatebrickswall_1 +mcl_heads:skeleton +mcl_bamboo:bamboo_block +mcl_doors:jungle_door_b_2 +mcl_blackstone:blackstone +mcl_deepslate:deepslatecobbledwall_21 +mcl_compressed_blocks:octuple_compressed_cobblestone +mcl_stairs:slab_prismarine_dark_top +mcl_mushrooms:red_mushroom_block_stem +mcl_beds:bed_cyan_bottom +mcl_walls:redsandstone_3 +mcl_stairs:slab_deepslate_cobbled_double +mcl_deepslate:deepslatebrickswall_15 +mcl_stairs:slab_stonebrick_double +mcl_mushrooms:mushroom_brown +mcl_chests:orange_shulker_box_small +mcl_stairs:slab_stone_top +mcl_deepslate:deepslatepolishedwall_15 +mcl_stairs:slab_concrete_purple +mesecons_torch:mesecon_torch_off +mcl_stairs:slab_deepslate_cobbled +mcl_campfires:campfire_lit +mcl_stairs:slab_prismarine_top +mcl_maps:filled_map_mcl_skins_base_18D471DFF_female_crea +mcl_walls:brick_9 +mcl_core:deadbush +mcl_walls:sandstone_1 +mcl_core:stone_with_gold +mcl_crimson:warped_door_t_1 +mcl_farming:melontige_1 +mcl_farming:beetroot_0 +mcl_stairs:stair_quartz_smooth_outer +mcl_beds:respawn_anchor +mcl_stairs:stair_blackstone_brick_polished_inner +mclx_fences:red_nether_brick_fence_gate +mcl_walls:mudbrick +mcl_observers:observer_up_off +mesecons_lightstone:lightstone_on_orange +mcl_mangrove:mangroveleaves_orphan +mcl_nether:quartz_smooth +mcl_farming:pumpkin_6 +mcl_end:end_bricks +mcl_mushrooms:red_mushroom_block_cap_101111 +mcl_walls:netherbrick_4 +mcl_minecarts:activator_rail +vl_hollow_logs:acaciatree_hollow +mcl_stairs:slab_concrete_silver_double +mcl_beds:bed_light_blue_top +mcl_walls:andesite_8 +mcl_signs:wall_sign_darkwood +mcl_crimson:warped_door_b_4 +mcl_bamboo:bamboo_door_t_3 +mcl_flowers:peony +mcl_stairs:stair_prismarine +mcl_nether:nether_wart_1 +mcl_portals:portal_end +mcl_signs:standing_sign45_crimson_hyphae_wood +mcl_stairs:stair_red_nether_brick_inner +mcl_end:chorus_plant +mcl_stairs:slab_blackstone_chiseled_polished_top +mcl_flowers:wither_rose +mcl_mangrove:river_water_logged_roots +mcl_deepslate:deepslatepolishedwall_7 +mcl_stairs:slab_deepslate_bricks +mcl_walls:granite_10 +mesecons_button:button_crimson_hyphae_wood_off +mcl_walls:sandstone_15 +mcl_deepslate:deepslatecobbledwall_9 +mcl_colorblocks:hardened_clay_magenta +mcl_signs:standing_sign67_5_warped_hyphae_wood +mcl_core:redsandstonecarved +mcl_flowers:tulip_white +mcl_nether:nether_wart +mcl_stairs:stair_cobble_outer +mcl_walls:cobble_4 +mcl_deepslate:deepslate_with_emerald +mesecons_button:button_birchwood_on +mcl_farming:melontige_linked_t +mcl_compressed_blocks:quintuple_compressed_cobblestone +mcl_core:water_flowing +mcl_deepslate:deepslatetileswall_12 +mcl_blackstone:wall_12 +mcl_minecarts:detector_rail_on +mcl_doors:wooden_door_t_3 +mcl_stairs:stair_andesite_smooth_inner +mcl_flowerpots:flower_pot_azure_bluet +mcl_core:coalblock +mcl_ocean:horn_coral +mcl_ocean:dead_brain_coral +mcl_core:darksapling +mcl_walls:redsandstone +mcl_droppers:dropper_up +mcl_monster_eggs:monster_egg_stonebrick +mcl_ocean:bubble_coral +mcl_end:end_rod_orange +mcl_stairs:stair_blackstone_brick_polished +mcl_stairs:stair_deepslate_cobbled +mcl_stairs:slab_purpur_block_double +mcl_stairs:stair_bamboo_stripped +vl_hollow_logs:birchtree_hollow +mcl_compressed_blocks:compressed_cobblestone +mcl_walls:endbricks_10 +mcl_lanterns:lantern_floor +mcl_walls:redsandstone_21 +mcl_stairs:slab_lapisblock_double +mcl_monster_eggs:monster_egg_stonebrickcarved +mcl_anvils:anvil_damage_1 +mesecons_commandblock:commandblock_off +mcl_stairs:slab_waxed_copper_exposed_cut +mcl_stairs:slab_waxed_copper_exposed_cut_double +mcl_crimson:warped_nylium +mesecons_lightstone:lightstone_off_blue +mcl_stairs:stair_concrete_grey_outer +mcl_core:sprucetree_bark +mcl_stairs:slab_crimson_hyphae_wood +mcl_stairs:slab_cobble_double +mcl_beehives:bee_nest_1 +mcl_core:gravel +xpanes:pane_red_flat +mcl_signs:wall_sign_sprucewood +mesecons_lightstone:lightstone_off_grey +mcl_mangrove:mangrove_door_b_1 +mcl_doors:acacia_door_t_4 +mcl_deepslate:deepslatetileswall_6 +mcl_deepslate:deepslatepolishedwall_12 +mcl_walls:brick_12 +mcl_deepslate:deepslatetileswall_11 +mcl_ocean:sea_pickle_4_dead_brain_coral_block +mcl_stairs:stair_prismarine_brick_inner +mcl_mushrooms:brown_mushroom_block_stem_full +mcl_walls:netherbrick_5 +mcl_walls:mossycobble +mcl_walls:netherbrick_13 +mcl_core:birchsapling +mcl_stairs:stair_copper_weathered_cut_outer +mcl_farming:pumpkin_1 +mcl_flowers:tulip_pink +mcl_blackstone:wall_13 +mcl_core:emeraldblock +mcl_doors:dark_oak_door_t_4 +mcl_mushrooms:red_mushroom_block_cap_000100 +mcl_bamboo:bamboo_door_b_4 +mcl_core:stripped_jungle +mcl_deepslate:deepslate_chiseled +mesecons_pressureplates:pressure_plate_darkwood_off +mcl_flowers:tulip_orange +xpanes:pane_natural +mcl_deepslate:deepslatepolishedwall_0 +mcl_stairs:slab_andesite_smooth +mcl_walls:mossycobble_14 +mcl_flowerpots:flower_pot_poppy +mcl_beehives:beehive_4 +mcl_copper:waxed_block_oxidized_cut +mcl_colorblocks:glazed_terracotta_pillar_yellow +mcl_nether:nether_brick +mcl_stairs:slab_waxed_copper_oxidized_cut_top +mcl_chests:grey_shulker_box_small +mcl_cherry_blossom:cherry_fence_gate +mesecons_button:button_mangrove_wood_on +mcl_stairs:stair_redsandstonesmooth2 +mcl_stairs:stair_deepslate_cobbled_inner +mcl_wool:silver_carpet +mcl_core:stone_smooth +mcl_heads:steve22_5 +mcl_walls:endbricks_11 +mcl_core:stripped_birch +mcl_crimson:crimson_fence_gate_open +mcl_chests:trapped_chest_small +mcl_nether:nether_wart_0 +mcl_end:end_rod +mcl_deepslate:deepslatecobbledwall +mcl_stairs:stair_junglewood_inner +mcl_heads:steve67_5 +mcl_farming:carrot_7 +mcl_stairs:stair_redsandstonesmooth2_inner +mcl_core:stripped_oak +mcl_bamboo:bamboo_fence +mesecons_delayer:delayer_off_2 +mcl_ocean:dead_bubble_coral_block +mcl_stairs:stair_deepslate_bricks_inner +mesecons_pressureplates:pressure_plate_polished_blackstone_on +mcl_signs:standing_sign_crimson_hyphae_wood +mcl_doors:wooden_door_t_2 +mcl_walls:sandstone_12 +mcl_stairs:slab_birchtree_bark_top +mcl_walls:granite_5 +mcl_mangrove:mangrove_mud_roots +mcl_stairs:slab_blackstone_polished_double +mcl_crimson:crimson_fence_gate +mcl_stairs:slab_granite_top +mcl_walls:diorite_13 +mcl_stairs:stair_darktree_bark_inner +mcl_walls:prismarine_16 +xpanes:pane_white_flat +mcl_walls:netherbrick_11 +mcl_core:junglesapling +mcl_walls:redsandstone_8 +mcl_walls:mudbrick_12 +mcl_mud:mud_bricks +mcl_colorblocks:concrete_brown +mclx_core:river_water_flowing +mcl_stairs:stair_sprucewood_inner +mesecons_lightstone:lightstone_off_purple +mcl_stairs:stair_warped_hyphae_wood +mcl_chests:lightblue_shulker_box_small +mcl_signs:standing_sign_darkwood +mcl_smoker:smoker +mcl_stairs:stair_blackstone_brick_polished_outer +mesecons_button:button_darkwood_on +mcl_mangrove:mangrove_trapdoor +mcl_ocean:dead_fire_coral_fan +mcl_walls:brick_13 +mcl_deepslate:deepslatebrickswall_7 +mcl_farming:wheat_5 +mcl_colorblocks:glazed_terracotta_pillar_white +mcl_mangrove:mangrove_stripped_bark +mcl_smoker:smoker_active +mesecons_solarpanel:solar_panel_inverted_off +mcl_core:acaciawood +mcl_bamboo:bamboo_mosaic +mcl_crimson:crimson_trapdoor +mcl_compressed_blocks:septuple_compressed_cobblestone +mcl_core:stripped_oak_bark +mcl_core:birchtree +mesecons_pressureplates:pressure_plate_sprucewood_on +mcl_walls:diorite_21 +xpanes:pane_gray +mcl_farming:soil +mcl_mangrove:mangrove_wood +mcl_stairs:stair_tree_bark_outer +mcl_farming:beetroot_2 +mcl_farming:melontige_linked_r +mcl_deepslate:deepslatepolishedwall_1 +mcl_stairs:slab_stone_rough +mcl_colorblocks:hardened_clay_red +mcl_stairs:stair_sprucetree_bark_inner +mcl_walls:netherbrick_6 +mcl_stairs:stair_end_bricks +mcl_blackstone:basalt +mcl_blackstone:soul_torch +mcl_beacons:beacon_beam +mcl_stairs:slab_quartz_smooth +mcl_core:stone_with_lapis +mcl_walls:cobble_10 +mcl_walls:andesite_14 +mcl_farming:potato +mcl_walls:netherbrick_12 +mcl_core:glass_brown +mcl_stairs:slab_warped_hyphae_wood_top +mcl_core:snow_3 +mcl_core:darkwood +mcl_heads:wither_skeleton_wall +mcl_flowers:lily_of_the_valley +mcl_campfires:campfire +mcl_ocean:tube_coral_block +mcl_mushrooms:red_mushroom_block_cap_001011 +mcl_stairs:stair_mud_brick_outer +mcl_ocean:sea_pickle_1_dead_brain_coral_block +mcl_core:stripped_birch_bark +mcl_mushrooms:red_mushroom_block_cap_010001 +mcl_stairs:stair_purpur_block +mcl_doors:trapdoor +mcl_end:end_rod_blue +mcl_farming:carrot_6 +mcl_stairs:stair_waxed_copper_exposed_cut +mcl_signs:wall_sign_birchwood +mcl_doors:iron_door_t_3 +mcl_minecarts:activator_rail_on +mesecons_solarpanel:solar_panel_off +mcl_signs:standing_sign45_warped_hyphae_wood +mcl_core:goldblock +mcl_mushrooms:brown_mushroom_block_cap_101011 +mcl_doors:iron_door_b_4 +mcl_walls:endbricks_8 +mcl_farming:wheat_6 +mcl_nether:glowstone +mcl_stairs:stair_goldblock_outer +mcl_colorblocks:concrete_powder_black +mcl_portals:end_portal_frame_eye +mcl_doors:wooden_door_t_1 +mcl_chests:yellow_shulker_box_small +mcl_jukebox:jukebox +mcl_core:stone_with_coal +vl_hollow_logs:darktree_hollow +mcl_core:stripped_acacia +mcl_monster_eggs:monster_egg_stone +mcl_doors:birch_door_t_2 +mcl_flowerpots:flower_pot_acaciasapling +mcl_flowers:azure_bluet +mcl_walls:diorite_10 +mclx_fences:red_nether_brick_fence_gate_open +mcl_stairs:stair_jungletree_bark +mcl_deepslate:deepslatetileswall_5 +mcl_stairs:slab_end_bricks +mcl_walls:stonebrickmossy_15 +mcl_stairs:slab_concrete_silver +mcl_stairs:stair_blackstone_polished_outer +mcl_core:glass_gray +mcl_ocean:bubble_coral_fan +mesecons:wire_10111011_off +mcl_walls:endbricks_12 +mesecons_button:button_mangrove_wood_off +mcl_stairs:slab_waxed_copper_oxidized_cut +mcl_end:end_rod_cyan +mcl_core:glass_red +mcl_walls:stonebrickmossy_9 +mcl_core:stonebrick +mcl_deepslate:deepslatebrickswall_10 +mcl_walls:diorite +mcl_farming:pumpkintige_linked_r +mcl_walls:endbricks_13 +mesecons_button:button_wood_on +mcl_ocean:dead_horn_coral_fan +mcl_flowerpots:flower_pot_tulip_white +mcl_core:jungleleaves +mcl_stairs:slab_copper_exposed_cut_double +mcl_farming:melontige_2 +mcl_stairs:stair_purpur_block_outer +mcl_heads:stalker22_5 +mcl_bamboo:scaffolding +mcl_stairs:slab_concrete_green +mcl_mangrove:mangrove_door_b_3 +mcl_flowerpots:flower_pot_tulip_orange +mcl_stairs:stair_junglewood_outer +mcl_chests:trapped_chest_on_right +mcl_walls:cobble_11 +mcl_colorblocks:glazed_terracotta_pillar_grey +mcl_stairs:slab_mud_brick +mcl_deepslate:deepslatepolishedwall_2 +mcl_brewing:stand_001 +mcl_colorblocks:concrete_powder_green +mcl_crimson:warped_wart_block +mcl_ocean:dead_fire_coral_block +mcl_barrels:barrel_open +mcl_villages:structblock +mcl_cherry_blossom:pressure_plate_cherrywood_off +mesecons_pistons:piston_up_pusher_sticky +mcl_core:snow_2 +mcl_wool:pink +mcl_core:acaciasapling +mcl_wool:red +mcl_cake:cake_1 +mcl_fences:jungle_fence_gate +mcl_crimson:warped_door_b_1 +mcl_stairs:slab_prismarine_dark +mcl_beehives:beehive +mcl_stairs:stair_deepslate_bricks +mcl_cake:cake_6 +mcl_beds:respawn_anchor_charged_3 +mcl_beds:bed_white_top +mesecons_torch:mesecon_torch_off_wall +mcl_beds:bed_light_blue_bottom +mcl_beds:bed_lime_top +mcl_beds:bed_pink_top +mcl_beds:bed_pink_bottom +mcl_cocoas:cocoa_3 +mcl_beds:bed_brown_top +mcl_beds:bed_brown_bottom +mcl_beds:bed_purple_top +mcl_maps:filled_map_mcl_skins_base_18D471DFF_male_crea +mcl_loom:loom +mcl_beds:bed_orange_top +mcl_cherry_blossom:cherry_door_b_4 +mcl_beds:bed_orange_bottom +mcl_deepslate:deepslatecobbledwall_4 +mcl_beds:bed_green_top +mcl_crimson:warped_hyphae_bark +mcl_brewing:stand_000 +mcl_beds:bed_green_bottom +mcl_beds:bed_yellow_top +mcl_beds:bed_yellow_bottom +mcl_beds:bed_black_top +mcl_core:light_6 +mcl_beds:bed_silver_bottom +mcl_signs:standing_sign_warped_hyphae_wood +mcl_beds:bed_grey_top +mcl_monster_eggs:monster_egg_stonebrickmossy +mcl_beds:bed_cyan_top +mcl_beds:bed_blue_bottom +mcl_nether:nether_wart_2 +mcl_doors:acacia_door_t_2 +mcl_beds:bed_red_bottom +mcl_books:bookshelf +mcl_stairs:slab_bamboo_mosaic_top +mesecons_torch:mesecon_torch_on_wall +mcl_doors:iron_door_t_4 +mcl_walls:endbricks_9 +mesecons_solarpanel:solar_panel_on +mesecons_button:button_bamboo_on +mcl_beacons:beacon +mesecons_button:button_bamboo_off +mcl_stairs:stair_ironblock_inner +mcl_stairs:slab_bamboo_plank_double +mcl_meshhand:mcl_skins_base_1EEB592FF_female_crea +mcl_signs:standing_sign67_5_bamboo +mcl_signs:wall_sign_bamboo +mcl_bamboo:pressure_plate_bamboo_wood_on +mcl_copper:block_exposed_cut +mcl_bamboo:bamboo_fence_gate +mcl_stairs:slab_quartz_smooth_top +mcl_core:redsandstone +mcl_doors:wooden_door_b_4 +mcl_stairs:slab_bamboo_plank_top +mcl_farming:pumpkintige_linked_b +mcl_stairs:slab_bamboo_plank +mcl_mangrove:mangrove_door_t_4 +mcl_stairs:stair_bamboo_plank_inner +mcl_stairs:stair_bamboo_plank_outer +mcl_colorblocks:hardened_clay_pink +mcl_doors:dark_oak_door_t_1 +mesecons_pressureplates:pressure_plate_darkwood_on +mcl_stairs:slab_bamboo_stripped_top +mcl_stairs:stair_cobble_inner +mcl_stairs:slab_bamboo_stripped +mesecons:wire_10110011_off +mcl_stairs:slab_bamboo_block_double +mcl_stairs:slab_bamboo_block +mcl_amethyst:budding_amethyst_block +mcl_stairs:stair_bamboo_block_inner +mcl_stairs:stair_bamboo_block_outer +mcl_core:stonebrickcarved +mcl_stairs:stair_bamboo_block +mcl_bamboo:bamboo_trapdoor_ladder +mcl_bamboo:bamboo_trapdoor_open +mcl_stairs:slab_prismarine_brick +xpanes:pane_silver_flat +mcl_bamboo:bamboo_trapdoor +mcl_colorblocks:concrete_powder_white +mcl_bamboo:bamboo_door_b_3 +mcl_bamboo:bamboo_door_t_2 +mcl_crimson:crimson_hyphae_bark +mcl_stairs:stair_cherrywood_outer +mcl_walls:cobble_7 +mcl_mangrove:mangrove_roots +mcl_bamboo:bamboo_door_t_1 +mcl_bamboo:bamboo_door_b_1 +mcl_ocean:tube_coral_fan +mcl_stairs:slab_concrete_grey +mcl_stairs:slab_concrete_yellow +mcl_bamboo:bamboo_plank +mcl_bamboo:bamboo_block_stripped +mcl_bamboo:bamboo_endcap +mcl_blackstone:wall +mcl_blackstone:wall_15 +mcl_blackstone:wall_11 +mcl_grindstone:grindstone +mcl_mushrooms:red_mushroom_block_cap_111100 +mcl_blackstone:wall_8 +mcl_blackstone:wall_4 +mcl_nether:soul_sand +mcl_blackstone:wall_3 +mcl_blackstone:wall_2 +mcl_blackstone:wall_1 +mcl_blackstone:blackstone_chiseled_polished +mcl_stairs:slab_blackstone_brick_polished_top +mcl_stairs:slab_blackstone_brick_polished +mcl_stairs:slab_blackstone_chiseled_polished_double +mcl_stairs:slab_blackstone_chiseled_polished +mcl_stairs:slab_blackstone_polished +mcl_walls:netherbrick_14 +mcl_stairs:slab_darktree_bark +mcl_blackstone:soul_soil +mcl_core:light_14 +mcl_doors:birch_door_t_1 +mcl_deepslate:deepslate_bricks_cracked +mcl_blackstone:quartz_brick +mcl_blackstone:blackstone_brick_polished +xpanes:pane_magenta_flat +mcl_fences:fence +mcl_blackstone:wall_0 +mcl_blackstone:blackstone_polished +mcl_stairs:stair_ironblock +mcl_heads:steve +mcl_blackstone:basalt_polished +mcl_blackstone:blackstone_gilded +mcl_stairs:slab_concrete_light_blue_double +mcl_stairs:slab_concrete_light_blue +mcl_stairs:stair_concrete_light_blue_inner +mcl_stairs:stair_concrete_light_blue +mcl_amethyst:tinted_glass +mcl_stairs:slab_concrete_lime_double +mcl_stairs:slab_concrete_lime_top +mcl_walls:cobble_12 +mcl_stairs:slab_concrete_lime +mcl_stairs:stair_concrete_lime_inner +mcl_deepslate:deepslatetileswall_4 +mcl_stairs:stair_concrete_lime_outer +mcl_stairs:stair_concrete_lime +mcl_stairs:slab_concrete_pink_double +mesecons_button:button_warped_hyphae_wood_off +mcl_portals:end_portal_frame +mesecons_walllever:wall_lever_off +mcl_stairs:slab_concrete_pink_top +mcl_stairs:slab_concrete_pink +mcl_stairs:stair_concrete_pink_inner +mcl_deepslate:deepslatebrickswall_11 +mcl_stairs:stair_concrete_pink_outer +mcl_core:glass_pink +xpanes:pane_purple_flat +mcl_stairs:slab_concrete_brown_double +mcl_farming:wheat_3 +mcl_stairs:slab_concrete_brown_top +mcl_stairs:stair_concrete_brown_inner +vl_hollow_logs:mangrove_stripped_hollow +mcl_stairs:stair_concrete_brown_outer +mcl_stairs:stair_concrete_brown +mcl_stairs:slab_concrete_purple_double +mesecons_pistons:piston_down_pusher_normal +mcl_stairs:slab_concrete_purple_top +mcl_stairs:stair_concrete_purple_inner +mcl_stairs:stair_concrete_purple_outer +mcl_stairs:slab_acaciawood +mcl_stairs:slab_concrete_orange_double +mcl_stairs:slab_concrete_orange_top +mcl_stairs:stair_concrete_orange_inner +mcl_walls:prismarine_8 +mcl_stairs:stair_concrete_orange_outer +mcl_ocean:horn_coral_block +mcl_nether:nether_wart_block +mcl_mushrooms:brown_mushroom_block_cap_011000 +mcl_stairs:stair_copper_weathered_cut +mcl_deepslate:deepslatepolishedwall_11 +mcl_stairs:slab_concrete_magenta_top +mcl_core:light_8 +mcl_stairs:slab_concrete_magenta +mcl_mangrove:mangrove_door_b_2 +mcl_deepslate:deepslate_cobbled +mcl_walls:stonebrick_15 +mcl_stairs:stair_concrete_grey +mcl_stairs:slab_concrete_blue_double +mcl_stairs:slab_concrete_blue_top +mcl_stairs:slab_concrete_blue +mcl_doors:acacia_trapdoor +mcl_stairs:stair_concrete_blue_inner +mcl_stairs:stair_concrete_blue_outer +mcl_stairs:slab_concrete_cyan_double +mcl_stairs:slab_concrete_cyan_top +mcl_farming:pumpkin_3 +mcl_doors:dark_oak_door_b_4 +mcl_farming:melontige_linked_l +mcl_stairs:stair_concrete_cyan_inner +mcl_stairs:stair_concrete_cyan_outer +mcl_stairs:stair_concrete_cyan +mcl_stairs:slab_concrete_green_double +mcl_stairs:slab_concrete_green_top +mcl_stairs:stair_concrete_green_inner +mcl_stairs:stair_concrete_green_outer +mcl_core:light_4 +mcl_comparators:comparator_on_sub +mcl_stairs:stair_concrete_green +mcl_stairs:slab_concrete_yellow_double +mcl_stairs:slab_concrete_yellow_top +mcl_stairs:stair_concrete_yellow_inner +mcl_stairs:stair_concrete_yellow_outer +mcl_walls:mudbrick_9 +mcl_heads:stalker67_5 +mcl_stairs:slab_concrete_red_double +mcl_compressed_blocks:double_compressed_cobblestone +mcl_doors:birch_door_b_1 +mcl_stairs:slab_concrete_red_top +mcl_walls:netherbrick_0 +mcl_stairs:slab_concrete_red +mcl_heads:steve_wall +mcl_cherry_blossom:stripped_cherrytree +mcl_colorblocks:concrete_white +mcl_stairs:slab_concrete_black_double +mcl_core:andesite +mcl_stairs:slab_concrete_black_top +mcl_ocean:sea_pickle_4_off_dead_brain_coral_block +mcl_mushrooms:brown_mushroom_block_stem +mcl_walls:brick_5 +mcl_mangrove:mangrove_wood_fence +mcl_stairs:stair_concrete_black_inner +mcl_walls:andesite_4 +mcl_stairs:stair_concrete_black_outer +mcl_walls:sandstone_14 +mcl_core:spruceleaves_orphan +mcl_mushrooms:red_mushroom_block_cap_110101 +mcl_wool:green +mcl_flowerpots:flower_pot_mushroom_red +mcl_stairs:stair_concrete_silver_inner +mcl_stairs:stair_concrete_silver_outer +mcl_stairs:slab_stonebrick +mcl_stairs:stair_concrete_silver +mcl_stairs:slab_concrete_grey_double +mcl_flowerpots:flower_pot_bamboo_plant +mcl_walls:cobble_0 +mcl_stairs:stair_concrete_grey_inner +mcl_stairs:stair_concrete_magenta +mcl_core:leaves_orphan +mesecons_pistons:piston_pusher_sticky +mcl_stairs:slab_concrete_white_top +mcl_mushrooms:brown_mushroom_block_cap_111010 +mcl_stairs:slab_concrete_white +mcl_stairs:stair_concrete_white_inner +mesecons:wire_11001000_off +mcl_stairs:stair_birchwood_inner +mcl_copper:waxed_block_exposed +mcl_stairs:stair_stonebrickcracked_outer +mcl_stairs:stair_ironblock_outer +mcl_core:glass_lime +mcl_blackstone:basalt_smooth +mcl_stairs:slab_ironblock_double +mcl_end:end_rod_brown +mcl_cocoas:cocoa_2 +mcl_stairs:slab_ironblock_top +mcl_stairs:slab_ironblock +mcl_stairs:slab_goldblock_top +mcl_doors:dark_oak_door_t_3 +mcl_mushrooms:brown_mushroom_block_cap_010101 +mcl_stairs:stair_lapisblock +mcl_walls:andesite_16 +mcl_stairs:slab_lapisblock_top +mcl_stairs:slab_lapisblock +mcl_barrels:barrel_closed +mcl_deepslate:deepslatepolishedwall_3 +mcl_heads:wither_skeleton +mcl_stairs:slab_darktree_bark_double +mcl_stairs:stair_bamboo_stripped_inner +mcl_stairs:stair_blackstone +mcl_core:redsandstonesmooth +mcl_amethyst:large_amethyst_bud +mcl_stairs:stair_birchtree_bark_inner +mcl_walls:redsandstone_14 +mcl_deepslate:deepslatecobbledwall_5 +mesecons_pressureplates:pressure_plate_mangrove_wood_off +mcl_stairs:stair_birchtree_bark +mcl_stairs:slab_sprucetree_bark_double +mcl_walls:endbricks_16 +mcl_stairs:stair_sprucetree_bark_outer +mcl_nether:quartz_chiseled +mcl_stairs:slab_acaciatree_bark_double +mcl_stairs:slab_acaciatree_bark_top +mcl_walls:stonebrickmossy_5 +mcl_stairs:slab_acaciatree_bark +mcl_chests:dark_grey_shulker_box +mcl_target:target_off +mcl_stairs:stair_acaciatree_bark_inner +mcl_heads:zombie45 +mcl_core:sprucewood +mcl_stairs:stair_acaciatree_bark_outer +mcl_ocean:fire_coral +mcl_stairs:stair_acaciatree_bark +mcl_stairs:stair_jungletree_bark_outer +mcl_stairs:slab_tree_bark_double +mcl_stairs:slab_tree_bark_top +mcl_stairs:slab_tree_bark +mcl_walls:mudbrick_5 +mcl_colorblocks:glazed_terracotta_light_blue +mcl_colorblocks:concrete_powder_light_blue +mcl_stairs:slab_nether_brick_double +mcl_colorblocks:hardened_clay_light_blue +mcl_core:diamondblock +mcl_colorblocks:concrete_lime +mcl_colorblocks:concrete_powder_lime +mcl_colorblocks:glazed_terracotta_pillar_pink +mcl_colorblocks:concrete_pink +mcl_stairs:slab_purpur_block_top +mcl_mushrooms:red_mushroom_block_cap_011000 +mcl_stairs:slab_bamboo_stripped_double +mcl_core:acacialeaves +mcl_core:glass_white +mcl_core:ladder +mcl_colorblocks:glazed_terracotta_brown +mcl_end:purpur_pillar +mcl_colorblocks:concrete_powder_brown +mcl_colorblocks:glazed_terracotta_pillar_purple +mcl_fences:birch_fence +mcl_mushrooms:brown_mushroom_block_cap_111110 +mcl_colorblocks:concrete_powder_purple +mcl_colorblocks:glazed_terracotta_pillar_orange +mcl_colorblocks:concrete_powder_orange +mcl_stairs:slab_junglewood +mcl_stairs:slab_copper_oxidized_cut_double +mcl_walls:prismarine_14 +xpanes:pane_brown +mcl_colorblocks:glazed_terracotta_pillar_blue +mcl_stairs:stair_waxed_copper_weathered_cut_outer +mcl_colorblocks:glazed_terracotta_blue +mcl_walls:diorite_8 +mcl_colorblocks:concrete_blue +mcl_stairs:stair_prismarine_inner +mcl_colorblocks:glazed_terracotta_pillar_cyan +mcl_colorblocks:glazed_terracotta_cyan +mcl_colorblocks:concrete_cyan +mcl_colorblocks:hardened_clay_cyan +mcl_colorblocks:glazed_terracotta_pillar_green +mcl_stairs:stair_prismarine_brick +mcl_colorblocks:glazed_terracotta_green +mcl_colorblocks:concrete_green +mcl_stairs:slab_junglewood_double +mcl_colorblocks:glazed_terracotta_yellow +mcl_core:junglewood +mcl_colorblocks:concrete_powder_yellow +mcl_stairs:stair_birchwood +mcl_colorblocks:glazed_terracotta_pillar_red +mcl_colorblocks:glazed_terracotta_red +mcl_walls:stonebrick +mcl_colorblocks:glazed_terracotta_black +mcl_colorblocks:hardened_clay_black +mcl_colorblocks:concrete_silver +mcl_colorblocks:concrete_grey +mcl_colorblocks:concrete_powder_grey +mcl_walls:mossycobble_10 +mcl_doors:iron_door_b_2 +mcl_colorblocks:hardened_clay_grey +mcl_colorblocks:glazed_terracotta_white +mcl_stairs:stair_concrete_red_outer +mcl_bamboo:bamboo_door_t_4 +mcl_colorblocks:hardened_clay +mcl_minecarts:golden_rail_on +xpanes:pane_cyan +mcl_walls:cobble_13 +mcl_fences:dark_oak_fence_gate +mcl_composters:composter_ready +mcl_walls:mossycobble_16 +mcl_composters:composter_7 +mcl_composters:composter_4 +mcl_composters:composter_3 +mcl_walls:mossycobble_9 +mcl_hoppers:hopper_side +mcl_crimson:stripped_warped_hyphae +mcl_hoppers:hopper_disabled +mcl_chests:white_shulker_box +mcl_hoppers:hopper +mcl_signs:standing_sign67_5_sprucewood +mcl_cauldrons:cauldron_3_lava +mcl_dispensers:dispenser_down +mcl_farming:pumpkintige_linked_t +mcl_signs:standing_sign22_5_junglewood +mcl_droppers:dropper +vl_hollow_logs:warped_hyphae_hollow +vl_hollow_logs:crimson_hyphae_hollow +mesecons_lightstone:lightstone_off_cyan +vl_hollow_logs:mangrove_tree_hollow +mcl_stairs:slab_nether_brick_top +vl_hollow_logs:stripped_cherrytree_hollow +vl_hollow_logs:cherrytree_hollow +mcl_walls:sandstone_8 +vl_hollow_logs:tree_hollow +mcl_walls:granite_0 +mcl_fences:nether_brick_fence +vl_hollow_logs:stripped_spruce_hollow +vl_hollow_logs:sprucetree_hollow +vl_hollow_logs:stripped_jungle_hollow +vl_hollow_logs:jungletree_hollow +mcl_wool:purple_carpet +mcl_walls:prismarine_12 +mcl_sculk:sculk +mcl_core:glass_cyan +vl_hollow_logs:stripped_birch_hollow +mcl_wool:white_carpet +mesecons_button:button_cherrywood_on +mcl_deepslate:deepslatebrickswall_12 +mcl_stairs:slab_waxed_copper_weathered_cut_top +mesecons_button:button_cherrywood_off +mcl_cherry_blossom:cherry_fence_gate_open +mcl_observers:observer_off +mcl_cherry_blossom:cherry_fence +mcl_signs:standing_sign67_5_cherrywood +mcl_signs:standing_sign45_cherrywood +mcl_crimson:crimson_hyphae +mcl_signs:standing_sign22_5_cherrywood +mcl_signs:standing_sign_cherrywood +mcl_crimson:crimson_door_b_3 +mcl_signs:wall_sign_cherrywood +mcl_doors:jungle_door_b_1 +mcl_stairs:slab_cherrywood_top +mcl_stairs:slab_cherrywood +mcl_stairs:slab_deepslate_bricks_double +mcl_stairs:stair_cherrywood_inner +mcl_bamboo:bamboo_door_b_2 +mcl_walls:stonebrickmossy_10 +mcl_stairs:stair_cherrywood +mesecons_lightstone:lightstone_on_green +mesecons:wire_11110101_on +mcl_walls:prismarine_9 +mcl_farming:wheat_4 +mcl_cherry_blossom:cherry_trapdoor +mcl_ocean:dead_brain_coral_fan +mcl_core:light_9 +mcl_cherry_blossom:cherry_door_t_4 +mcl_cherry_blossom:cherry_door_t_3 +mcl_cherry_blossom:cherry_door_t_1 +mcl_cherry_blossom:cherrysapling +mcl_stairs:slab_copper_oxidized_cut +mcl_stairs:stair_waxed_copper_cut +mcl_cherry_blossom:cherrytree_bark +mcl_stairs:stair_waxed_copper_oxidized_cut +mcl_stairs:stair_mossycobble_outer +mcl_chests:chest_left +mcl_end:end_rod_pink +mcl_ocean:dead_bubble_coral_fan +mcl_deepslate:deepslatebrickswall_16 +mesecons_walllever:wall_lever_on +mcl_copper:waxed_block_weathered +mcl_stairs:stair_deepslate_tiles +vl_hollow_logs:stripped_dark_oak_hollow +mesecons:wire_01110000_off +mesecons_button:button_sprucewood_off +mesecons_button:button_birchwood_off +mcl_deepslate:deepslatecobbledwall_14 +mesecons:wire_10011001_on +mcl_walls:stonebrick_16 +mesecons:wire_10000000_off +mesecons_button:button_darkwood_off +mesecons_button:button_stone_on +mesecons:wire_11110100_on +mcl_stairs:stair_waxed_copper_exposed_cut_inner +mesecons:wire_01000000_on +mesecons:wire_11111010_off +mcl_flowers:double_fern +mcl_walls:andesite_13 +mcl_stairs:slab_waxed_copper_cut_top +mesecons_lightstone:lightstone_off_pink +mcl_stairs:stair_stonebrickmossy +mesecons:wire_11111000_on +mesecons_pressureplates:pressure_plate_warped_hyphae_wood_on +mcl_raw_ores:raw_iron_block +mcl_stairs:slab_darktree_bark_top +mcl_farming:pumpkin_2 +mesecons_pressureplates:pressure_plate_sprucewood_off +mcl_core:dirt_with_grass_snow +mcl_cauldrons:cauldron_2r +mesecons:wire_01010000_on +mcl_walls:diorite_9 +mcl_signs:standing_sign45_sprucewood +mcl_mushrooms:brown_mushroom_block_cap_010111 +mcl_doors:birch_door_b_4 +mcl_farming:potato_5 +mcl_honey:honeycomb_block +mcl_mushrooms:red_mushroom_block_cap_000111 +mcl_farming:pumpkintige_unconnect +mcl_maps:filled_map_mcl_skins_character_1_female_crea +mcl_mushrooms:brown_mushroom_block_cap_100111 +mcl_nether:quartz_ore +mcl_chests:chest_small +xpanes:pane_lime_flat +mcl_mushrooms:brown_mushroom_block_cap_011101 +mesecons_pressureplates:pressure_plate_junglewood_off +mcl_core:vine +mcl_heads:skeleton67_5 +mcl_signs:wall_sign_junglewood +mesecons_pistons:piston_normal_off +mesecons_pressureplates:pressure_plate_acaciawood_off +mesecons:wire_01100000_off +xpanes:pane_light_blue +mcl_walls:prismarine_15 +mesecons_lightstone:lightstone_on_magenta +mesecons:wire_11111111_off +mcl_doors:spruce_door_t_4 +mesecons:wire_11110111_off +mesecons:wire_11110111_on +mcl_walls:andesite_9 +mesecons:wire_01110111_on +mesecons:wire_11111011_off +mcl_core:lava_flowing +mcl_wool:lime_carpet +mesecons:wire_11110011_on +mesecons:wire_01110011_on +mcl_stairs:stair_andesite_inner +mesecons:wire_10110011_on +mesecons:wire_00110011_off +mcl_mangrove:mangrove_door_t_1 +mesecons:wire_11111101_off +mcl_observers:observer_down_off +mesecons:wire_11111101_on +mesecons:wire_11011101_off +mesecons:wire_11011101_on +mcl_core:light_5 +mcl_core:sandstonecarved +mesecons:wire_01110101_on +mcl_cocoas:cocoa_1 +mesecons:wire_11010101_off +mcl_walls:stonebrickmossy_4 +mesecons:wire_11010101_on +mcl_mushrooms:red_mushroom_block_cap_011001 +mesecons:wire_01010101_off +mcl_stairs:stair_granite_smooth +mcl_stairs:stair_diorite_outer +mcl_lectern:lectern +mcl_stairs:slab_mud_brick_top +mesecons:wire_11110001_off +mesecons:wire_11110001_on +mesecons:wire_00000000_off +mcl_core:reeds +mesecons_delayer:delayer_off_1 +mcl_farming:carrot_3 +mcl_mushrooms:red_mushroom_block_cap_011011 +mcl_doors:acacia_door_b_2 +mcl_wool:cyan_carpet +mesecons:wire_00110001_off +mcl_stairs:stair_wood_outer +mesecons:wire_11010001_off +mcl_stairs:slab_end_bricks_top +mesecons:wire_01010001_off +mcl_walls:netherbrick_1 +mcl_farming:carrot_4 +mesecons:wire_10010001_off +mesecons:wire_10010001_on +mcl_wool:grey_carpet +mesecons:wire_11111110_on +mesecons:wire_11101110_off +mcl_mushrooms:red_mushroom_block_cap_111000 +mesecons:wire_11101110_on +mesecons:wire_11110110_off +mesecons:wire_11110110_on +mcl_heads:skeleton22_5 +mcl_sponges:sponge +mcl_walls:rednetherbrick_9 +mesecons:wire_11100110_off +mcl_walls:andesite_7 +mesecons:wire_11100110_on +mcl_deepslate:deepslatecobbledwall_6 +mesecons:wire_01100110_on +mesecons:wire_11111010_on +mcl_mushrooms:brown_mushroom_block_cap_011011 +mesecons:wire_10111010_off +mcl_stairs:stair_concrete_orange +mcl_ocean:prismarine +mesecons:wire_10111010_on +mcl_cherry_blossom:cherryleaves +mesecons:wire_11101010_on +mesecons:wire_10101010_on +mesecons:wire_11110010_off +mcl_beehives:bee_nest_5 +mcl_doors:jungle_door_t_2 +mesecons:wire_11110010_on +mesecons:wire_01110010_off +mesecons_pressureplates:pressure_plate_polished_blackstone_off +mesecons_pistons:piston_up_sticky_off +mcl_end:end_rod_white +mcl_stairs:slab_goldblock_double +mesecons:wire_11100010_off +mcl_stairs:stair_copper_weathered_cut_inner +mcl_core:leaves +mcl_chests:brown_shulker_box +mesecons:wire_01100010_on +mcl_walls:mudbrick_21 +mesecons:wire_10100010_on +mesecons:wire_00100010_off +mesecons:wire_00100010_on +mesecons:wire_11111100_off +mcl_stairs:stair_crimson_hyphae_wood +mesecons:wire_11111100_on +mesecons:wire_11011100_off +mesecons:wire_11011100_on +mcl_chests:pink_shulker_box +mesecons:wire_11101100_off +mesecons:wire_11101100_on +mcl_anvils:anvil +mcl_stairs:stair_darkwood_outer +mcl_doors:iron_door_b_3 +mcl_stairs:stair_darkwood +mcl_mushrooms:red_mushroom_block_cap_111111 +mcl_deepslate:deepslatetileswall_2 +mesecons:wire_01110100_on +mcl_stairs:slab_sprucewood +mcl_doors:dark_oak_door_b_3 +mcl_core:stripped_dark_oak_bark +mesecons:wire_01010100_on +mesecons:wire_11100100_off +mesecons:wire_01100100_off +mcl_colorblocks:hardened_clay_green +mesecons:wire_11000100_on +mesecons_pistons:piston_pusher_normal +mcl_doors:spruce_door_t_2 +mcl_chests:ender_chest +mesecons_pressureplates:pressure_plate_stone_off +mcl_flowers:tulip_red +mcl_signs:standing_sign45 +mcl_mushrooms:red_mushroom_block_cap_001010 +mesecons:wire_01000100_on +mcl_walls:stonebrick_8 +mcl_walls:andesite +mcl_walls:mossycobble_15 +mesecons:wire_11111000_off +mesecons:wire_01100100_on +mcl_walls:mudbrick_8 +mcl_doors:acacia_door_b_1 +mcl_core:andesite_smooth +mcl_colorblocks:glazed_terracotta_pillar_light_blue +mcl_stairs:stair_blackstone_outer +mcl_walls:cobble_2 +mcl_core:podzol +mcl_walls:andesite_12 +mcl_farming:wheat_1 +mcl_mangrove:mangrove_door_b_4 +mcl_chests:dark_green_shulker_box_small +mcl_walls:cobble_16 +mcl_stairs:stair_copper_oxidized_cut +mcl_doors:acacia_door_b_4 +mcl_walls:stonebrick_11 +mcl_stairs:stair_quartz_smooth_inner +mcl_walls:rednetherbrick_11 +mcl_stairs:slab_red_nether_brick_top +mcl_chests:trapped_chest_on +mesecons:wire_11001000_on +mesecons:wire_10001000_off +mcl_itemframes:glow_item_frame +mesecons:wire_11110000_on +mesecons:wire_01110000_on +mcl_deepslate:deepslatebrickswall_21 +mcl_doors:jungle_door_b_4 +mcl_ocean:dead_horn_coral_block +mcl_walls:diorite_12 +mcl_sponges:sponge_wet +mesecons:wire_00110000_off +mcl_doors:spruce_door_b_4 +mcl_maps:filled_map_mcl_skins_base_1EEB592FF_female_crea +mcl_walls:brick_1 +mcl_walls:endbricks_1 +mcl_deepslate:deepslatepolishedwall_21 +mesecons:wire_11100000_on +mcl_walls:stonebrick_14 +mcl_walls:prismarine_11 +mesecons:wire_01100000_on +mesecons:wire_10100000_off +xpanes:pane_cyan_flat +mcl_deepslate:deepslate_with_lapis +mcl_colorblocks:glazed_terracotta_lime +mesecons:wire_00100000_off +mesecons:wire_11000000_off +mesecons:wire_10000000_on +mcl_crimson:crimson_fungus +mcl_deepslate:deepslatetileswall_1 +mcl_fences:acacia_fence +mcl_tnt:tnt +mesecons:wire_01010100_off +mcl_core:birchtree_bark +mcl_farming:sweet_berry_bush_0 +mcl_dispensers:dispenser_up +mesecons:wire_10111011_on +mcl_crimson:warped_door_t_3 +mcl_colorblocks:concrete_powder_magenta +mcl_ocean:seagrass_sand +mcl_cake:cake_3 +mcl_chests:dark_green_shulker_box +mcl_doors:spruce_door_b_2 +xpanes:pane_magenta +mcl_doors:birch_trapdoor +mcl_chests:violet_shulker_box +mcl_walls:sandstone_10 +mcl_wool:blue +mcl_meshhand:mcl_skins_base_18D471DFF_male_crea +mcl_deepslate:deepslatebrickswall_13 +mcl_walls:netherbrick_2 +vl_hollow_logs:stripped_oak_hollow +mcl_mushrooms:red_mushroom_block_cap_011101 +mcl_blast_furnace:blast_furnace +mcl_chests:trapped_chest_right +mcl_chests:brown_shulker_box_small +mcl_doors:birch_door_b_3 +mcl_signs:wall_sign_mangrove_wood +mcl_chests:dark_grey_shulker_box_small +mesecons_pistons:piston_down_sticky_on +mcl_core:light_3 +mcl_signs:standing_sign_sprucewood +mcl_walls:andesite_10 +mcl_stairs:slab_mangrove_wood +mcl_doors:spruce_trapdoor_open +mcl_walls:netherbrick_16 +mcl_doors:iron_door_t_1 +mcl_deepslate:deepslatebrickswall_3 +mcl_farming:beetroot +mesecons_lightstone:lightstone_off_black +mcl_stairs:stair_lapisblock_inner +mcl_walls:diorite_6 +mcl_stairs:stair_granite_outer +mcl_meshhand:mcl_skins_base_18D471DFF_female_crea +mcl_cauldrons:cauldron_1 +mcl_crimson:warped_trapdoor +mcl_core:ice +mcl_chests:lightblue_shulker_box +mesecons:wire_11010000_off +mcl_doors:spruce_door_b_3 +mesecons:wire_10110001_off +mcl_core:coarse_dirt +mcl_fire:fire +mcl_farming:potato_4 +mcl_mushrooms:brown_mushroom_block_cap_110110 +mcl_mushrooms:red_mushroom_block_cap_000000 +mesecons:wire_10100010_off +mcl_chests:chest_right +mcl_flowers:double_fern_top +mcl_mushrooms:brown_mushroom_block_cap_100100 +mcl_colorblocks:hardened_clay_blue +mcl_composters:composter +mcl_stairs:stair_sandstonesmooth2_outer +mcl_walls:mossycobble_8 +mcl_core:stripped_acacia_bark +mcl_beds:bed_black_bottom +mcl_signs:standing_sign67_5_acaciawood +mclx_fences:nether_brick_fence_gate +mcl_maps:filled_map_mcl_skins_base_18D471DFF_female_surv +mcl_banners:hanging_banner +mcl_lightning_rods:rod +mcl_walls:stonebrickmossy_11 +mcl_doors:iron_trapdoor_open +mcl_core:dirt +mesecons_lightstone:lightstone_on_purple +mcl_walls:cobble_5 +mcl_walls:brick_4 +mcl_deepslate:deepslatepolishedwall_13 +mcl_stairs:stair_deepslate_tiles_outer +mcl_beehives:beehive_5 +mcl_flowerpots:flower_pot_allium +mcl_core:granite_smooth +mcl_stairs:slab_granite_smooth_top +mcl_mushrooms:red_mushroom_block_cap_001110 +mcl_deepslate:deepslatetileswall_14 +mcl_walls:granite_2 +mcl_stairs:stair_acaciawood_outer +mcl_ocean:dead_brain_coral_block +mcl_walls:mudbrick_4 +mcl_maps:filled_map_mcl_skins_base_1EEB592FF_male_surv +mcl_stairs:slab_concrete_black +mcl_mushrooms:red_mushroom_block_cap_111101 +mcl_deepslate:deepslate_with_diamond +mcl_nether:nether_lava_source +mcl_mushrooms:brown_mushroom_block_cap_110011 +mcl_farming:carrot_2 +mcl_mushrooms:red_mushroom_block_cap_010010 +mcl_blast_furnace:blast_furnace_active +mcl_core:sandstonesmooth2 +mcl_mushrooms:red_mushroom_block_cap_001001 +mcl_end:end_stone +mcl_stairs:stair_deepslate_polished +mcl_mushrooms:brown_mushroom_block_cap_110111 +mcl_core:frosted_ice_2 +mcl_stairs:stair_birchtree_bark_outer +mcl_walls:andesite_6 +xpanes:pane_brown_flat +mcl_walls:endbricks_4 +mcl_stairs:stair_mossycobble +mcl_colorblocks:glazed_terracotta_magenta +mcl_stairs:slab_quartz_smooth_double +mcl_mushrooms:brown_mushroom_block_cap_111001 +mcl_mushrooms:brown_mushroom_block_cap_111000 +mcl_doors:dark_oak_trapdoor +mcl_stairs:stair_concrete_pink +mcl_stairs:slab_warped_hyphae_wood_double +mcl_nether:netherrack +mcl_doors:iron_trapdoor_ladder +mcl_stairs:slab_darkwood_double +mcl_stairs:stair_granite +mcl_signs:standing_sign_junglewood +mcl_mushrooms:red_mushroom_block_cap_100010 +mcl_mushrooms:brown_mushroom_block_cap_111111 +mcl_signs:standing_sign67_5_darkwood +mcl_walls:redsandstone_16 +mcl_nether:netheriteblock +mcl_mushrooms:brown_mushroom_block_cap_110001 +mesecons:wire_01100010_off +mcl_core:stone_with_emerald +mcl_heads:zombie +mcl_walls:redsandstone_9 +ignore +mcl_mushrooms:brown_mushroom_block_cap_010001 +mcl_mushrooms:red_mushroom_block_cap_100111 +mcl_mushrooms:brown_mushroom_block_cap_101010 +mcl_meshhand:mcl_skins_base_1B47A57FF_male_surv +mcl_chests:trapped_chest +mcl_mushrooms:brown_mushroom_block_cap_011100 +mesecons_pressureplates:pressure_plate_crimson_hyphae_wood_off +mcl_maps:filled_map_mcl_skins_base_1B47A57FF_female_surv +mcl_mushrooms:brown_mushroom_block_cap_110010 +mcl_crimson:warped_fence +mcl_mushrooms:brown_mushroom_block_cap_100010 +mcl_mushrooms:brown_mushroom_block_cap_100001 +mcl_mushrooms:brown_mushroom_block_cap_000000 +mcl_mushrooms:red_mushroom_block_cap_110000 +mcl_fences:spruce_fence_gate_open +mesecons:wire_11010000_on +mcl_mushrooms:red_mushroom_block_cap_010101 +mcl_deepslate:deepslatecobbledwall_7 +mcl_nether:quartz_pillar +mcl_mushrooms:brown_mushroom_block_cap_100110 +mesecons:wire_11100010_on +mesecons:wire_01110100_off +mcl_stairs:slab_diorite_smooth_top +mcl_stairs:slab_concrete_magenta_double +mesecons:wire_00000000_on +mcl_flowerpots:flower_pot_crimson_fungus +mesecons:wire_11000000_on +mcl_fences:spruce_fence_gate +mcl_mushrooms:brown_mushroom_block_cap_001111 +mesecons:wire_10100000_on +mcl_mushrooms:brown_mushroom_block_cap_010100 +mcl_flowers:lilac_top +mcl_mushrooms:brown_mushroom_block_cap_001011 +mcl_flowers:peony_top +mesecons_button:button_stone_off +mcl_doors:dark_oak_trapdoor_open +mcl_doors:spruce_door_t_3 +mcl_flowerpots:flower_pot_cherrysapling +mcl_stairs:slab_deepslate_tiles +mcl_stairs:slab_redsandstonesmooth2_double +mcl_chests:white_shulker_box_small +mcl_stairs:stair_bamboo_mosaic_inner +mesecons:wire_10010000_off +mcl_mushrooms:red_mushroom_block_cap_001100 +mcl_mushrooms:red_mushroom_block_cap_100000 +mcl_end:end_rod_black +mcl_ocean:dead_tube_coral_fan +mcl_doors:spruce_door_b_1 +mesecons:wire_10110000_on +mcl_end:end_rod_silver +mcl_mushrooms:red_mushroom_block_cap_110011 +mcl_mushrooms:brown_mushroom_block_cap_100101 +mesecons:wire_10001000_on +mcl_mangrove:propagule_coarse_dirt +mcl_mushrooms:red_mushroom_block_cap_110111 +mesecons:wire_01010001_on +mcl_fences:acacia_fence_gate +mesecons:wire_10011000_on +mcl_deepslate:deepslate_polished +mcl_doors:iron_door_b_1 +mesecons:wire_00110000_on +mcl_mushrooms:brown_mushroom_block_cap_000001 +mcl_deepslate:deepslate_with_iron +mcl_core:darktree_bark +mcl_stairs:stair_lapisblock_outer +mcl_mushrooms:red_mushroom_block_stem_full +mcl_walls:sandstone_16 +mcl_stairs:stair_stonebrick_outer +mcl_meshhand:mcl_skins_base_1EEB592FF_female_surv +mesecons:wire_10010000_on +mcl_meshhand:mcl_skins_base_1B47A57FF_female_crea +mesecons:wire_10111000_on +mcl_mangrove:mangrove_tree +mcl_walls:cobble_3 +mcl_copper:block_cut +mcl_mushrooms:brown_mushroom_block_cap_010010 +mcl_fences:dark_oak_fence_gate_open +mesecons:wire_11000100_off +mcl_mushrooms:brown_mushroom_block_cap_101111 +mcl_mushrooms:red_mushroom_block_cap_100100 +mcl_cauldrons:cauldron_3r +mcl_stairs:slab_diorite_smooth +mcl_stairs:stair_sprucewood_outer +mcl_stairs:slab_stonebrickmossy_double +mcl_mushrooms:red_mushroom_block_cap_101010 +mesecons:wire_11010100_off +mcl_core:stone_with_redstone +mcl_stairs:slab_stone_double +mcl_stairs:stair_crimson_hyphae_wood_outer +mesecons:wire_11111011_on +mcl_villages:stonebrickcarved +mcl_signs:standing_sign45_birchwood +mcl_mushrooms:brown_mushroom_block_cap_000101 +mcl_doors:dark_oak_door_b_1 +mesecons_pistons:piston_sticky_on +mcl_farming:pumpkin_7 +mcl_walls:andesite_15 +mcl_walls:rednetherbrick_2 +mcl_ocean:dead_horn_coral +mcl_mushrooms:red_mushroom_block_cap_011100 +mcl_cherry_blossom:cherry_trapdoor_open +mesecons:wire_01110101_off +mcl_mushrooms:brown_mushroom_block_cap_101110 +mcl_mushrooms:red_mushroom_block_cap_101001 +mcl_crimson:shroomlight +mesecons:wire_10110010_on +mcl_farming:wheat_2 +mcl_walls:cobble_8 +mcl_ocean:prismarine_brick +mesecons:wire_01110010_on +mcl_walls:stonebrick_9 +mcl_mushrooms:red_mushroom_block_cap_011111 +mcl_mushrooms:brown_mushroom_block_cap_111101 +mcl_core:lapisblock +mcl_farming:potato_7 +mcl_stairs:stair_waxed_copper_weathered_cut +mesecons_pistons:piston_down_normal_off +mcl_mushrooms:red_mushroom_block_cap_000110 +mcl_heads:stalker45 +mcl_blackstone:wall_10 +mcl_core:stonebrickmossy +mcl_stairs:slab_prismarine_brick_top +mcl_walls:rednetherbrick_8 +mesecons_pressureplates:pressure_plate_stone_on +mesecons:wire_10101010_off +mcl_mushrooms:red_mushroom_block_cap_100110 +mcl_deepslate:deepslatetileswall_0 +mcl_mushrooms:red_mushroom_block_cap_100101 +mesecons_button:button_junglewood_on +mcl_campfires:soul_campfire_lit +mcl_core:grass_path +mcl_colorblocks:concrete_powder_pink +mcl_stairs:stair_darktree_bark_outer +mcl_doors:birch_door_b_2 +mcl_observers:observer_up_on +mcl_mushrooms:brown_mushroom_block_cap_001110 +mcl_mushrooms:red_mushroom_block_cap_101011 +xpanes:pane_orange_flat +mesecons:wire_00010001_off +mcl_walls:redsandstone_15 +mesecons:wire_01100110_off +xpanes:pane_blue_flat +xpanes:pane_gray_flat +mesecons:wire_01110110_off +mcl_mushrooms:red_mushroom_block_cap_111011 +mcl_blackstone:wall_9 +mesecons_pressureplates:pressure_plate_birchwood_off +mcl_mushrooms:brown_mushroom_block_cap_000100 +mcl_core:stripped_spruce_bark +mcl_mushrooms:brown_mushroom_block_cap_001010 +mcl_walls:netherbrick_15 +mcl_wool:brown_carpet +mcl_colorblocks:glazed_terracotta_pillar_magenta +mcl_stairs:stair_diorite_smooth +mesecons_delayer:delayer_on_3 +mcl_core:darkleaves_orphan +mcl_core:stripped_spruce +mcl_walls:brick_10 +mcl_walls:cobble +mesecons_button:button_sprucewood_on +mesecons_pistons:piston_down_sticky_off +mclx_fences:nether_brick_fence_gate_open +mcl_crimson:crimson_trapdoor_ladder +mesecons_pressureplates:pressure_plate_wood_on +mcl_stairs:slab_sandstone +mcl_copper:block_raw +mcl_stairs:slab_wood_double +mcl_mushrooms:brown_mushroom_block_cap_101100 +mcl_walls:mossycobble_12 +mcl_walls:redsandstone_4 +mcl_walls:sandstone_4 +mcl_mushrooms:brown_mushroom_block_cap_001000 +mcl_colorblocks:glazed_terracotta_purple +mcl_mud:packed_mud +mcl_stairs:stair_purpur_block_inner +mcl_mushrooms:red_mushroom_block_cap_011010 +mcl_walls:andesite_3 +mcl_mangrove:propagule_dirt +mcl_ocean:dead_tube_coral +mcl_stairs:slab_prismarine +mcl_copper:block_exposed +mcl_mushrooms:brown_mushroom_block_cap_100000 +mcl_mushrooms:brown_mushroom_block_cap_101101 +mcl_deepslate:deepslatecobbledwall_0 +mcl_walls:granite_3 +mcl_end:end_rod_red +mcl_crimson:warped_door_t_2 +mesecons_button:button_acaciawood_off +mcl_sponges:sponge_wet_river_water +mcl_lightning_rods:rod_powered +mcl_core:spruceleaves +mcl_mushrooms:brown_mushroom_block_cap_010110 +mcl_deepslate:deepslatepolishedwall_10 +mcl_ocean:seagrass_gravel +mesecons:wire_01110110_on +mcl_core:glass_light_blue +mcl_doors:dark_oak_door_t_2 +mesecons_lightstone:lightstone_on_lime +xpanes:pane_pink_flat +mesecons:wire_11100000_off +mesecons_lightstone:lightstone_on_silver +xpanes:pane_lime +mesecons:wire_01110011_off +mesecons:wire_01000100_off +mcl_mushrooms:brown_mushroom_block_cap_110101 +mcl_raw_ores:raw_gold_block +mesecons:wire_11110101_off +mcl_stairs:slab_waxed_copper_exposed_cut_top +mcl_cauldrons:cauldron_1r +mcl_cauldrons:cauldron_2_lava +mesecons_lightstone:lightstone_on_grey +mesecons:wire_11010100_on +mcl_brewing:stand_111 +mcl_mushrooms:red_mushroom_block_cap_010000 +mcl_beds:bed_red_top +mesecons_lightstone:lightstone_on +mcl_walls:mossycobble_4 +mcl_heads:wither_skeleton22_5 +mcl_signs:standing_sign22_5_mangrove_wood +mcl_stairs:stair_mud_brick +mcl_heads:zombie22_5 +mcl_mushrooms:brown_mushroom_block_cap_011010 +mcl_farming:carrot_1 +mcl_stairs:slab_red_nether_brick_double +mcl_core:sapling +mcl_stairs:stair_concrete_black +mcl_wool:white +mcl_stairs:slab_sandstone_double +mesecons:wire_10110000_off +mcl_mushrooms:red_mushroom_block_cap_100001 +mesecons:wire_10011000_off +mcl_mushrooms:brown_mushroom_block_cap_001001 +mesecons_delayer:delayer_off_3 +mcl_stairs:slab_andesite +mcl_meshhand:mcl_skins_base_18D471DFF_male_surv +mcl_flowerpots:flower_pot +mcl_mushrooms:red_mushroom_block_cap_101100 +mcl_copper:waxed_block_exposed_cut +mcl_flowerpots:flower_pot_junglesapling +mcl_core:diorite +mcl_flowerpots:flower_pot_birchsapling +mcl_maps:filled_map_mcl_skins_base_1B47A57FF_male_crea +mcl_chests:yellow_shulker_box +mcl_monster_eggs:monster_egg_stonebrickcracked +mesecons:wire_00110010_on +mcl_stairs:slab_junglewood_top +mcl_fences:spruce_fence +mcl_stairs:slab_jungletree_bark_top +mcl_stairs:stair_birchwood_outer +mesecons:wire_11110011_off +mesecons:wire_11111001_off +mcl_walls:prismarine_4 +mcl_flowerpots:flower_pot_oxeye_daisy +mesecons_pressureplates:pressure_plate_acaciawood_on +mcl_stairs:stair_andesite +mesecons:wire_01000000_off +mesecons:wire_11100100_on +mcl_flowerpots:flower_pot_propagule +mcl_stairs:stair_nether_brick +mcl_core:podzol_snow +mesecons:wire_10111001_off +mesecons:wire_11010001_on +mcl_walls:granite_21 +mcl_flowerpots:flower_pot_warped_roots +mcl_doors:acacia_door_t_1 +mcl_core:realm_barrier +mcl_maps:filled_map_mcl_skins_base_1B47A57FF_female_crea +mcl_flowerpots:flower_pot_deadbush +mcl_maps:filled_map_mcl_skins_base_1EEB592FF_female_surv +mcl_end:chorus_flower_dead +mesecons_lightstone:lightstone_off_red +mesecons_delayer:delayer_on_2 +mcl_ocean:sea_pickle_2_dead_brain_coral_block +mcl_stairs:slab_stone +mcl_beds:bed_white_bottom +mcl_maps:filled_map_mcl_skins_base_18D471DFF_male_surv +mcl_mushrooms:red_mushroom_block_cap_001101 +mcl_mushrooms:brown_mushroom_block_cap_100011 +mcl_meshhand:character_male_crea +mcl_signs:standing_sign +mcl_mushrooms:red_mushroom_block_cap_010110 +mesecons_pistons:piston_up_normal_off +mcl_signs:standing_sign_birchwood +mcl_signs:standing_sign22_5_birchwood +mcl_stairs:stair_end_bricks_inner +mcl_signs:standing_sign67_5_birchwood +mesecons_pressureplates:pressure_plate_wood_off +mcl_core:frosted_ice_3 +mcl_signs:standing_sign22_5_darkwood +mcl_signs:standing_sign45_darkwood +mcl_stairs:stair_copper_oxidized_cut_inner +mcl_crimson:crimson_door_b_2 +mesecons_lightstone:lightstone_off_yellow +mesecons_delayer:delayer_off_4 +mcl_armor_stand:armor_stand +mcl_mushrooms:red_mushroom_block_cap_100011 +mcl_signs:standing_sign22_5_acaciawood +mcl_core:bedrock +mcl_walls:netherbrick_21 +mcl_deepslate:deepslate_tiles_cracked +mcl_stairs:stair_wood_inner +mcl_signs:standing_sign45_acaciawood +mclx_core:river_water_source +mcl_deepslate:deepslatepolishedwall +mcl_walls:sandstone_7 +mesecons_pistons:piston_sticky_off +mcl_doors:wooden_door_t_4 +mcl_colorblocks:glazed_terracotta_pillar_brown +mesecons_lightstone:lightstone_off_lime +mcl_ocean:fire_coral_fan +mesecons:wire_11011001_on +mcl_walls:stonebrickmossy_7 +mcl_ocean:seagrass_dirt +mcl_crimson:crimson_trapdoor_open +mcl_meshhand:character_male_surv +mcl_flowerpots:flower_pot_crimson_roots +mcl_ocean:sea_pickle_2_off_dead_brain_coral_block +mcl_chests:trapped_chest_on_small +mcl_maps:filled_map_mcl_skins_base_1B47A57FF_male_surv +mcl_walls:cobble_1 +mcl_stairs:slab_waxed_copper_cut_double +mcl_mushrooms:red_mushroom_block_cap_001111 +mcl_chests:red_shulker_box +mcl_amethyst:amethyst_block +mcl_walls:cobble_6 +mcl_core:stone_with_diamond +mcl_walls:redsandstone_10 +mcl_walls:cobble_9 +mcl_ocean:kelp_gravel +mcl_stairs:stair_deepslate_cobbled_outer +mesecons:wire_11101000_on +mcl_mushrooms:red_mushroom_block_cap_101000 +mcl_mushrooms:red_mushroom_block_cap_000001 +mesecons:wire_10101000_off +mesecons:wire_10110001_on +mcl_walls:mossycobble_6 +mesecons_torch:mesecon_torch_on +mcl_chests:blue_shulker_box +mcl_walls:mossycobble_11 +mcl_walls:mossycobble_13 +mcl_stairs:stair_prismarine_brick_outer +mcl_walls:andesite_1 +mcl_honey:honey_block +mcl_stairs:stair_granite_smooth_inner +mcl_stairs:slab_waxed_copper_oxidized_cut_double +mcl_core:acacialeaves_orphan +mcl_mushrooms:red_mushroom_block_cap_001000 +mcl_walls:andesite_11 +mesecons:wire_11101000_off +mcl_mushrooms:brown_mushroom_block_cap_000110 +mcl_walls:netherbrick_3 +mcl_mushrooms:red_mushroom_block_cap_000101 +mcl_stairs:slab_granite +mcl_nether:nether_lava_flowing +mcl_walls:granite_14 +mcl_stairs:slab_prismarine_brick_double +mesecons_solarpanel:solar_panel_inverted_on +mcl_flowerpots:flower_pot_sprucesapling +mcl_walls:endbricks_3 +mcl_walls:brick_2 +mcl_flowers:tallgrass +mcl_stairs:stair_darkwood_inner +mcl_walls:brick_7 +mcl_mushrooms:red_mushroom_block_cap_111110 +mcl_stairs:slab_sprucewood_double +mcl_signs:standing_sign_acaciawood +mcl_walls:brick +mesecons_lightstone:lightstone_off_green +mcl_stairs:slab_copper_exposed_cut_top +mesecons:wire_10011001_off +mcl_walls:sandstone_5 +mcl_heads:steve45 +mcl_walls:sandstone_6 +mcl_signs:standing_sign67_5_mangrove_wood +mcl_walls:prismarine_13 +mcl_meshhand:mcl_skins_base_1B47A57FF_male_crea +mcl_walls:sandstone_9 +mcl_deepslate:deepslate_with_redstone +mcl_doors:birch_door_t_3 +xpanes:pane_black_flat +mcl_lanterns:soul_lantern_ceiling +mcl_walls:sandstone_3 +mcl_meshhand:mcl_skins_base_1EEB592FF_male_surv +mcl_walls:diorite_16 +mcl_deepslate:deepslatetileswall_7 +mcl_end:end_rod_lime +mcl_walls:andesite_0 +mcl_stairs:slab_brick_block_double +mesecons:wire_11011000_off +mcl_walls:stonebrick_7 +mcl_walls:stonebrick_10 +mcl_cherry_blossom:pressure_plate_cherrywood_on +mcl_stairs:stair_stonebrick +mcl_walls:stonebrick_13 +mcl_chests:magenta_shulker_box_small +mcl_walls:stonebrickmossy_8 +mcl_walls:stonebrickmossy_16 +mcl_walls:stonebrickmossy_21 +mcl_mushrooms:brown_mushroom_block_cap_010011 +mcl_stairs:slab_diorite +mcl_crimson:stripped_crimson_hyphae_bark +mcl_signs:standing_sign22_5_sprucewood +mcl_colorblocks:concrete_purple +mcl_core:cobweb +mcl_amethyst:calcite +mcl_core:glass_green +mesecons:wire_11001100_on +mesecons:wire_10110010_off +mcl_walls:endbricks_7 +mcl_stairs:slab_sprucetree_bark_top +mcl_beehives:bee_nest_4 +mesecons:wire_11111110_off +mcl_core:void +mcl_farming:potato_6 +mesecons:wire_11110100_off +mesecons_button:button_junglewood_off +mcl_walls:netherbrick_7 +mcl_walls:netherbrick_10 +mcl_ocean:dead_fire_coral +mcl_stairs:stair_brick_block +mcl_stairs:slab_purpur_block +mcl_core:tree +mcl_core:light_1 +mcl_walls:rednetherbrick +mcl_mangrove:mangroveleaves +mcl_stairs:slab_deepslate_bricks_top +mcl_walls:mudbrick_0 +mesecons:wire_00110010_off +mcl_wool:magenta_carpet +mcl_walls:stonebrick_3 +mcl_wool:grey +mcl_core:sandstone +mcl_walls:mudbrick_13 +mcl_mushrooms:brown_mushroom_block_cap_101001 +mesecons:wire_00110011_on +mcl_stairs:stair_concrete_yellow +mesecons:wire_00110001_on +mcl_stairs:stair_junglewood +mcl_flowers:rose_bush +mcl_deepslate:deepslate_with_copper +mcl_walls:mudbrick_6 +mcl_stairs:stair_acaciawood +mcl_ocean:brain_coral_fan +mcl_stairs:stair_concrete_purple +mcl_stairs:stair_sprucewood +mcl_walls:granite_4 +mcl_ocean:sea_pickle_1_off_dead_brain_coral_block +mcl_deepslate:deepslate_tiles +mcl_stairs:slab_sprucewood_top +mcl_stairs:slab_stonebrickcracked_top +mcl_heads:skeleton45 +mcl_core:sand +mcl_stairs:slab_birchwood_top +mcl_walls:endbricks_5 +mcl_stairs:slab_waxed_copper_weathered_cut +mcl_mushrooms:red_mushroom_block_cap_010011 +mcl_flowers:waterlily +mcl_mushrooms:brown_mushroom_block_cap_111100 +mcl_stairs:slab_concrete_cyan +mcl_stairs:slab_darkwood_top +mcl_stairs:slab_stone_rough_double +mesecons_pistons:piston_up_normal_on +mcl_mushrooms:red_mushroom_block_cap_110110 +mcl_flowers:blue_orchid +mcl_stairs:stair_deepslate_bricks_outer +mcl_stairs:stair_andesite_outer +mcl_farming:sweet_berry_bush_3 +mcl_stairs:slab_andesite_top +mcl_walls:brick_6 +mcl_stairs:stair_granite_inner +mcl_walls:granite_12 +mcl_cartography_table:cartography_table +mcl_deepslate:deepslatecobbledwall_1 +mcl_mangrove:propagule +mcl_core:snow_7 +mcl_stairs:stair_diorite_inner +mcl_doors:iron_door_t_2 +mcl_stairs:slab_diorite_top +mesecons:wire_01010101_on +mcl_stairs:slab_cobble +mcl_stairs:slab_cobble_top +mcl_farming:hay_block +mcl_stairs:slab_diorite_double +mesecons:wire_11011000_on +mcl_stairs:stair_brick_block_outer +mcl_stairs:stair_brick_block_inner +mcl_chests:pink_shulker_box_small +mcl_signs:standing_sign67_5_junglewood +mcl_stairs:stair_sandstonesmooth2 +mcl_stairs:slab_sandstonesmooth2_top +mcl_meshhand:mcl_skins_base_1EEB592FF_male_crea +mcl_comparators:comparator_off_sub +mcl_stairs:stair_copper_exposed_cut_inner +mcl_walls:stonebrick_12 +mcl_stairs:stair_stonebrick_inner +mcl_stairs:slab_stonebrick_top +mesecons_button:button_acaciawood_on +mcl_stairs:slab_quartzblock +mcl_stairs:stair_quartz_smooth +mcl_walls:endbricks +mcl_stairs:stair_nether_brick_outer +mcl_stairs:stair_nether_brick_inner +mcl_doors:acacia_trapdoor_ladder +mcl_walls:rednetherbrick_5 +mcl_mushrooms:brown_mushroom_block_cap_010000 +mcl_brewing:stand_110 +mcl_stairs:stair_concrete_white +mesecons_button:button_crimson_hyphae_wood_on +mcl_beds:bed_purple_bottom +mcl_walls:mossycobble_5 +mcl_colorblocks:concrete_powder_blue +mesecons:wire_01010000_off +mcl_stairs:slab_prismarine_double +mcl_walls:prismarine_5 +mesecons:wire_10111001_on +mcl_cake:cake_5 +mcl_ocean:prismarine_dark +mcl_wool:cyan +xpanes:pane_black +mcl_stairs:slab_mud_brick_double +mcl_flowerpots:flower_pot_sapling +mcl_walls:stonebrickmossy_2 +mcl_colorblocks:hardened_clay_yellow +mcl_stairs:slab_andesite_smooth_top +mcl_doors:dark_oak_door_b_2 +mcl_walls:brick_8 +mcl_core:bone_block +mcl_mushrooms:red_mushroom_block_cap_111001 +mcl_stairs:slab_stonebrickmossy_top +mesecons_pressureplates:pressure_plate_junglewood_on +mesecons:wire_11111111_on +mcl_walls:endbricks_6 +mcl_wool:orange +mcl_deepslate:deepslatebrickswall_9 +mcl_walls:sandstone_0 +mcl_end:chorus_flower +mcl_mangrove:propagule_clay +mcl_mangrove:water_logged_roots +mcl_walls:mudbrick_15 +mcl_ocean:sea_pickle_3_off_dead_brain_coral_block +mcl_mushrooms:red_mushroom_block_cap_000010 +mesecons:wire_00100000_on +mcl_mangrove:mangrove_wood_fence_gate_open +mcl_sculk:vein +mesecons_noteblock:noteblock +mcl_stairs:stair_mangrove_wood +mesecons:wire_01110001_on +mesecons:wire_11110000_off +mcl_crimson:twisting_vines +mcl_mushrooms:brown_mushroom_block_cap_011111 +mesecons:wire_11111001_on +mcl_mangrove:mangrove_tree_bark +mcl_stairs:slab_warped_hyphae_wood +mcl_flowerpots:flower_pot_fern +mcl_nether:magma +mcl_walls:stonebrickmossy_6 +mesecons:wire_10111000_off +mesecons:wire_00010001_on +mcl_core:stonebrickcracked +mcl_copper:waxed_block_weathered_cut +mcl_crimson:crimson_door_t_2 +mcl_crimson:crimson_door_t_3 +mesecons:wire_01110001_off +mcl_mushrooms:brown_mushroom_block_cap_111011 +mcl_mushrooms:red_mushroom_block_cap_110001 +mesecons:wire_11101010_off +mcl_mushrooms:red_mushroom_block_cap_101110 +mcl_flowers:dandelion +mcl_ocean:dried_kelp_block +mcl_meshhand:mcl_skins_base_18D471DFF_female_surv +mcl_signs:standing_sign45_junglewood +xpanes:pane_orange +mcl_stairs:slab_mossycobble +mcl_heads:zombie67_5 +mcl_mushrooms:red_mushroom_block_cap_110100 +mcl_core:light_13 +mcl_heads:zombie_wall +mcl_farming:wheat +mcl_core:cobble +mesecons:wire_11001100_off +mcl_stairs:stair_mossycobble_inner +mesecons:wire_01110111_off +mcl_stairs:slab_redsandstonesmooth2_top +mcl_core:wood +mesecons:wire_11011001_off +mcl_flowerpots:flower_pot_wither_rose +mcl_signs:wall_sign_acaciawood +mesecons:wire_00010000_on +mcl_walls:stonebrickmossy_14 +mcl_walls:diorite_4 +mesecons:wire_10101000_on +mcl_deepslate:deepslatepolishedwall_5 +mcl_deepslate:deepslatebrickswall_0 +mcl_stairs:slab_deepslate_polished_double +mcl_stairs:stair_stone_rough +mcl_fences:fence_gate +mcl_mushrooms:red_mushroom_block_cap_010100 +mcl_crimson:crimson_nylium +mcl_stairs:stair_deepslate_tiles_inner +mcl_stairs:stair_copper_cut_inner