pax_global_header00006660000000000000000000000064133542041700014511gustar00rootroot0000000000000052 comment=80bd5dfebfb4b607f8d4aa842934b2b24e9b0f51 ethereal/000077500000000000000000000000001335420417000126465ustar00rootroot00000000000000ethereal/README.md000066400000000000000000000322261335420417000141320ustar00rootroot00000000000000# ethereal Ethereal Mapgen mod for Minetest (works on all except v6) ## Forum Topic - https://forum.minetest.net/viewtopic.php?f=11&t=14638 ## Lucky Blocks 41 ## Changelog ### 1.25 - Converted .mts files into schematic tables for easier editing - Added firethorn shrub in glacier areas (can be crafted into jelly) - Tweaked mapgen decorations - Added more lucky blocks - Added igloo to glacier biome ### 1.24 - Updating code to newer functions, requires Minetest 0.4.16 and above - Added food groups to be more compatible with other food mods - Bonemeal removed (use Bonemeal mod to replace https://forum.minetest.net/viewtopic.php?f=9&t=16446 ) - Crystal Ingot recipe requires a bucket of water, unless you are using builtin_item mod where you can mix ingredients by dropping in a pool of water instead ### 1.23 - Added bonemeal support for bush sapling and acacia bush sapling - Added support for [toolranks] mod if found - Reworked Crystal Shovel so it acts more like a normal shovel with soft touch ### 1.22 - Added coral and silver sand to mapgen (0.4.15 only) - Replaced ethereal:green_dirt with default:dirt_with_grass for mortrees compatibility - Mesa biomes are now topped with dirt with dry grass (redwood saplings grow on dry grass) - Added bonemeal support for moretree's saplings - Added settings.conf file example so that settings remain after mod update - Added support for Real Torch so that torches near water drop an unlit torch - Added support for new leafdecay functions (0.4.15 dev) - Mapgen will use dirt_with_rainforest_litter for jungles if found - Added bushes to mapgen ### 1.21 - Saplings need clear space above to grow (depending on height of tree) - Bonemeal changes to suit new sapling growth - Fixes and tweaks - Added default Abm overrides - Added 4 new plants from baked clay mod to mapgen - Added swamp biome to outskirts of bamboo areas ### 1.20 - Tweaked Ethereal to work with new features and nodes in Minetest 0.4.14 - Added bones found in dirt and bonemeal to make tree's and crops grow quicker - Tree's follow default rules where saplings need light to grow - Using default schematics for apple, pine, acacia and jungle tree's - Tidied and split code into separate files - Redid coloured grass spread function to run better - Added support for moreblock's stairsplus feature ### 1.19 - Added new biome routine to help restructure biomes - Tweaked biome values so that they are more spread out (no more huge bamboo biome) - Tweaked biome plant and tree decorations - Fixed farming compatibility when using hoe on ethereal dirt - Dirt with dry grass turns into green grass when near water - Ice or snow above sea level melts into river water - Disabling ethereal biomes no longer shows error messages - Fire Flowers re-generate, can also be made into Fire Dust and both are fuel - Optimize and tidy code ### 1.18 - Added Birch tree, also stairs; fence and gate - Added Fire flower to fiery biomes (careful, it hurts) - Tweaked biomes and decoration slightly - Added tree_tool for admin to quickly grow tree's - Cobble to Mossycobble when near water has been toned down a bit ### 1.17 - Added new Glacier biome filled with snow and ice - Changed Mesa biome to have more coloured clay patterns - Changed Bamboo biome to have tall tree-like stalks with leaves that give - Bamboo sprouts are now saplings to grow new stalks - Removed farmed mushrooms and replaced with default game mushrooms with spores ### 1.16 - Added new tree schematics that change when placed with random leaves, fruit and height - Changed frost dirt so that it no longer freezes water (saves lag) - Torches cannot be placed next to water, otherwise they drop as items - Added latest farming redo Bean Bushes to mapgen - Code tidy (thanks HybridDog) and bug fix - Banana, Orange and Apple fruits now drop when tree has been removed. ### 1.15 - Added Staff of Light (thanks Xanthin), crafted from illumishrooms and can turn stone into glostone and back again - Changed how Crystal Spikes reproduce - Crystal Ingots now require 2x mese crystal and 2x crystal spikes to craft - Removed obsidian brick & stairs now they are in default game, also removed pine wood stairs for same reason - Tidied code and optimized a few routines ### 1.14 - Changed Ethereal to work with Minetest 0.4.11 update and new mapgen features - Changed Pine tree's to use default pine wood - Added pine wood fence, gate and stairs - Crystal Spikes now re-generate in crystal biomes - Removed layer mapgen, keeping spread as default ### 1.13 - Changed melting feature to work with 0.4.11 pre-release now that group:hot and group:melt have been removed ### 1.12 - Added ability to disable biomes in the init.lua file by setting to 1 (enable) or 0 (disable) - Supports Framing Redo 1.10 foods ### 1.11 - Added Stairs for Ethereal wood types, mushroom, dry dirt, obsidian brick and clay - Added Green Coral which can be used as green dye - Craft 5x Ice in X pattern to give 5x Snow - Added Snow and Ice Bricks with their own stairs and slabs which melt when near heat ### 1.10 - Added Stone Ladders (another use for cobble) - Craft 5x Gravel in X pattern to give 5 dirt, and 5x dirt in X pattern for 5 sand - Added Acacia tree's to desert biome (a nice pink wood to build with, thanks to VanessaE for textures) - Added Acacia fences and gates - Added Vines, craftable with 2x3 leaves ### 1.09 - Fixed Quicksand bug where player see's only black when sinking instead of yellow effect, note this will only work on new maps or newly generated areas of map containing quicksand - Hot nodes will melt ice and snow in a better way - Few spelling errors sorted for sapling and wood names ### 1.08 - Saplings produce better placed tree's when grown, routines have been redone - Orange tree's now spawn in prairie biomes - The usual code tidy and few bug fixes along the way ### 1.07 - If Farming Redo mod detected then it's growing routines will be used for Ethereal plantlife instead of default Leaftype and Mapstyle settings can be changed within init.lua file, new layered style maps are being tested Changed crafting recipe for Fences, they tie in with Gates a little better ### 1.06 - Added support for Farming Redo mod, all plants spawn on newly generated areas: - https://forum.minetest.net/viewtopic.php?id=9019 ### 1.05b - Added Gates for each of the fence types (thanks to Blockmen for gate model) - Players can no longer jump over fences unless they wear crystal boots < REMOVED ### 1.04 - Farming of Mushrooms, Wild Onions and Strawberries now use minetest 0.4.10 functions - Strawberries can be grown by using actual fruit, seeds no longer needed - Tree leaves are no longer walkable, player can go through them - Saplings now fall if block underneath disturbed ### 1.03 - Changed Fence recipe's so it doesn't interfere with 3d armor's wooden boots - Tweaked textures to bring down file sizes - Flowers, Sprouts and Ferns now spread over ALL grassland ### 1.02 - Fences added for each type of wood in Ethereal - Changes to biome settings, less artifacts ### 1.01 - Quicksand generates throughout world near sandy water - Bamboo as well as Papyrus now grow on dirt near water - Fixed Coral textures and light ### 1.00 - Seaweed now spawns in deep water and can grow up to 10 high - Coral also spawns in deep water and glows slightly (orange, pink and blue) - Above items can be crafted into dye, also Seaweed is edible - So long as sand isn't disturbed under the ocean, sealife will re-generate - Fixed Leaves inventory images and Mushroom selection box (thanks Wuzzy) ### 0.0.9 #### 0.0.9p - Willow Trees now spawn in grey biome instead of tiny grey trees (model by Phiwari123) - Redwood Trees now spawn in Mesa biome (model by Wes42033) - BakedClay mod no longer required for Mesa biome but used if found - Paper Wall added #### 0.0.9o - Added Obsidian Brick craft for building - Changed Illumishroom cave levels - Changed *is_ground_content* to false for ethereal dirt so mapgen doesn't carve it up with caves #### 0.0.9n - New textures for farming mushrooms and spores - Illumi-shrooms spawn in caves to brighten things up a little - Crafting a wooden sign now gives 4 instead of 1 #### 0.0.9m - Changed Bamboo biome slightly, Bamboo Sprout has new image - Abm timings changed and a few bugs fixed - Crystal Gilly Staff has to be used (left-click) to replenish air while underwater - Crystal Shovel now works with protection mods - Tidied code and changed ladder recipe's to double output #### 0.0.9L - Scorched Tree's are now different sizes - Crystal Shovel with soft touch can now be used to dig up sand and gravel - Bamboo and Papyrus drop entire stalk when bottom node dug - Crystal Spikes require steel pick or better to dig and fall when dirt below is removed - Few changes to mapgen and water functions #### 0.0.9k - Fixed bug in charcoal lumps (no more placing as unknown nodes) - Added Crystal Shovel with soft touch, can be used to dig up dirt with grass intact - Fixed bug in Crystal Shovel, now works with dirt_with_snow and has sounds - Tweaked Fiery Biomes slightly, smaller craters on outside, large in hotter areas #### 0.0.9i - Cleaned up mapgen_v7.lua file, maps now generate a little faster - Removed cactus.mts, no longer required - Removed mushroomtwo.mts, no longer required - Removed bamboo.mts, no longer required - Removed deadtree.mts, no longer required - Few new textures added - Papyrus also spawns on jungle dirt near water - Replaced dead tree's with scorched tree's - Each scorched tree trunk crafts into 2x charcoal Lumps (fixed) - Torches can also be crafted from Charcoal #### 0.0.9h - Added Strawberry farming, Strawberry Seeds and new Textures - Tidied up mapgen_v7.lua for better spawning of plants and trees - Player can no longer walk through Bamboo Stalks #### 0.0.9g - Changed Ethereal's growing routine for Saplings, it now uses 1 single abm to grow all tree's #### 0.0.9f - Added Fishing to Ethereal, Fishing Rod, Worms, Fish and Cooked Fish (Left-click the water with a Baited Rod in the hope of landing your prize) #### 0.0.9e - Changed textures for Bowl, Mushroom Soup, Crystal Spike, Banana Loaf, Strawberry & Bush - Added Hearty Stew Recipes - If BakedClay mod is installed, Mesa Biome will be added to the mix #### 0.0.9d - Added Bamboo Grove and Bamboo Sprouts ) - Craft Bamboo into Paper and Bamboo Flooring - Cactus is now edible when crafted beside empty bucket #### 0.0.9c - Code re-worked so mod now uses sections for each function (easier to read and edit) - New textures for Strawberry Bush and Crystal Spikes #### 0.0.9b - Pine Tree Leaves have new texture and sometimes give Pine Nuts - Jungle Tree's now use default Jungle Wood as texture #### 0.0.9 - Prairie, Grove, Jungle and Snowy biomes have their own dirt - Saplings will only grow in the biomes they were taken from - Mapgen tweaks and code changes for new dirt added ### 0.0.8 Changes #### 0.0.8m - Added Banana Trunk and Wood - Added Boston Ferns to Grove biome - Added edible Fern Tubers - Mushroom Biome now has different sized mushrooms - Changed Pine Needles texture #### 0.0.8k - Added Desert Sand biome - Added Alpine biome with Pine Trees and Snow - Added Grove biome with Banana Tree's (saplings only grow in that temperate area) - Added Bananas, Banana Dough and Banana Bread - Changed biome generation to be more like real-world environs (e.g. shrooms like hot & humid so that's where they spawn) - Tidied up code and removed redundant lines #### 0.0.8e - New Plains biome added between Fiery and Green areas to hopefully stop forest fires, these have dry dirt and dead trees - Placing water near Dry Dirt turns it into normal dirt, cooking normal dirt changes it into Dry Dirt Note: if your Ethereal world does have a few forest fires appearing you can always add this line to your minetest.conf file: disable_fire = true #### 0.0.8 - Healing Tree (grows on high snowy peaks, leaves are edible and golden apples heal all hearts) - Added some new images for Cooked Mushroom Soup, Mushroom Spores and Palm Trees - 2D leaves or 3D leaves option, both wave in wind if enabled - All new saplings can grow on their native dirt, and palm tree's on sand - Crystal Spike or Crystal Dirt freezes nearby water, Heat can also melt ice - Wild Mushrooms now give Spores, plant these to grow edible mushrooms - Cobble in water turns mossy - Palm Leaves can be cooked into Palm Wax and made into Candles ### 0.0.7c - Gravel can be found under lake biomes (or craft 5 cobble in X pattern) - Papyrus is found and grows on dirt near water (also craft 2x3 string for paper) - Mushroom Heads have a chance of giving Mushroom Sapling (craft 1 head = 4x Mushrooms ready for Planting) - Trees and Mushrooms have a chance of giving Saplings - Frost Trunk and Mushroom Trunk are rotatable (craft 1 Mushroom Trunk = 4x White Dye) - Desert areas have Dry Shrubs added - Crystal Spikes added to Crystal Biome (watch out they hurt) - Crystal Ingots added to make Sword and Pick - New Pine Tree model added to snowy biome which adds Pine leaves and drops Pine Saplings - Fixed GrassyTwo biome so that BigTree now spawns and grows from sapling - Added Crystal Gilly Staff to allow breathing underwater (so long as it's in hand) - Added Palm Trees, Trunk, Wood, Sapling, Coconuts, Coconut Slice (to eat) - Thanks to VanessaE's for the Palm textures ethereal/compatibility.lua000066400000000000000000000047221335420417000162270ustar00rootroot00000000000000 -- add compatibility for ethereal nodes already in default game or name changed minetest.register_alias("ethereal:acacia_trunk", "default:acacia_tree") minetest.register_alias("ethereal:acacia_wood", "default:acacia_wood") minetest.register_alias("ethereal:fence_acacia", "default:fence_acacia_wood") minetest.register_alias("ethereal:fence_junglewood", "default:fence_junglewood") minetest.register_alias("ethereal:fence_pine", "default:fence_pine_wood") minetest.register_alias("ethereal:acacia_leaves", "default:acacia_leaves") minetest.register_alias("ethereal:pineleaves", "default:pine_needles") minetest.register_alias("ethereal:mushroom_craftingitem", "flowers:mushroom_brown") minetest.register_alias("ethereal:mushroom_plant", "flowers:mushroom_brown") minetest.register_alias("ethereal:mushroom_soup_cooked", "ethereal:mushroom_soup") minetest.register_alias("ethereal:mushroom_1", "flowers:mushroom_brown") minetest.register_alias("ethereal:mushroom_2", "flowers:mushroom_brown") minetest.register_alias("ethereal:mushroom_3", "flowers:mushroom_brown") minetest.register_alias("ethereal:mushroom_4", "flowers:mushroom_brown") minetest.register_alias("ethereal:strawberry_bush", "ethereal:strawberry_7") minetest.register_alias("ethereal:seed_strawberry", "ethereal:strawberry") for i = 1, 5 do minetest.register_alias("ethereal:wild_onion_"..i, "ethereal:onion_"..i) end minetest.register_alias("ethereal:onion_7", "ethereal:onion_4") minetest.register_alias("ethereal:onion_8", "ethereal:onion_5") minetest.register_alias("ethereal:wild_onion_7", "ethereal:onion_4") minetest.register_alias("ethereal:wild_onion_8", "ethereal:onion_5") minetest.register_alias("ethereal:wild_onion_craftingitem", "ethereal:wild_onion_plant") minetest.register_alias("ethereal:hearty_stew_cooked", "ethereal:hearty_stew") minetest.register_alias("ethereal:obsidian_brick", "default:obsidianbrick") minetest.register_alias("ethereal:crystal_topped_dirt", "ethereal:crystal_dirt") minetest.register_alias("ethereal:fiery_dirt_top", "ethereal:fiery_dirt") minetest.register_alias("ethereal:gray_dirt_top", "ethereal:gray_dirt") minetest.register_alias("ethereal:green_dirt_top", "default;dirt_with_grass") minetest.register_alias("ethereal:tree_sapling", "default:sapling") minetest.register_alias("ethereal:jungle_tree_sapling", "default:junglesapling") minetest.register_alias("ethereal:acacia_sapling", "default:acacia_sapling") minetest.register_alias("ethereal:pine_tree_sapling", "default:pine_sapling") ethereal/crystal.lua000066400000000000000000000173151335420417000150410ustar00rootroot00000000000000 local S = ethereal.intllib -- Crystal Spike (Hurts if you touch it - thanks to ZonerDarkRevention for his DokuCraft DeviantArt crystal texture) minetest.register_node("ethereal:crystal_spike", { description = S("Crystal Spike"), drawtype = "plantlike", tiles = { "crystal_spike.png" }, inventory_image = "crystal_spike.png", wield_image = "crystal_spike.png", paramtype = "light", light_source = 7, sunlight_propagates = true, walkable = true, damage_per_second = 1, groups = {cracky = 1, falling_node = 1, puts_out_fire = 1, cools_lava = 1}, sounds = default.node_sound_glass_defaults(), selection_box = { type = "fixed", fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 0, 5 / 16}, }, node_box = { type = "fixed", fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 0, 5 / 16}, }, }) -- Crystal Ingot minetest.register_craftitem("ethereal:crystal_ingot", { description = S("Crystal Ingot"), inventory_image = "crystal_ingot.png", wield_image = "crystal_ingot.png", }) if minetest.get_modpath("builtin_item") then minetest.override_item("ethereal:crystal_spike", { dropped_step = function(self, pos, dtime) self.ctimer = (self.ctimer or 0) + dtime if self.ctimer < 5.0 then return end self.ctimer = 0 if self.node_inside and self.node_inside.name ~= "default:water_source" then return end local objs = core.get_objects_inside_radius(pos, 0.8) if not objs or #objs ~= 2 then return end local crystal, mese, ent = nil, nil, nil for k, obj in pairs(objs) do ent = obj:get_luaentity() if ent and ent.name == "__builtin:item" then if ent.itemstring == "default:mese_crystal 2" and not mese then mese = obj elseif ent.itemstring == "ethereal:crystal_spike 2" and not crystal then crystal = obj end end end if mese and crystal then mese:remove() crystal:remove() core.add_item(pos, "ethereal:crystal_ingot") return false end end }) end minetest.register_craft({ type = "shapeless", output = "ethereal:crystal_ingot", recipe = { "default:mese_crystal", "ethereal:crystal_spike", "ethereal:crystal_spike", "default:mese_crystal", "bucket:bucket_water" }, replacements = { {"bucket:bucket_water", "bucket:bucket_empty"} } }) -- Crystal Block minetest.register_node("ethereal:crystal_block", { description = S("Crystal Block"), tiles = {"crystal_block.png"}, light_source = 9, is_ground_content = false, groups = {cracky = 1, level = 2, puts_out_fire = 1, cools_lava = 1}, sounds = default.node_sound_glass_defaults(), }) minetest.register_craft({ output = "ethereal:crystal_block", recipe = { {"ethereal:crystal_ingot", "ethereal:crystal_ingot", "ethereal:crystal_ingot"}, {"ethereal:crystal_ingot", "ethereal:crystal_ingot", "ethereal:crystal_ingot"}, {"ethereal:crystal_ingot", "ethereal:crystal_ingot", "ethereal:crystal_ingot"}, } }) minetest.register_craft({ output = "ethereal:crystal_ingot 9", recipe = { {"ethereal:crystal_block"}, } }) -- Crystal Sword (Powerful wee beastie) minetest.register_tool("ethereal:sword_crystal", { description = S("Crystal Sword"), inventory_image = "crystal_sword.png", wield_image = "crystal_sword.png", tool_capabilities = { full_punch_interval = 0.6, max_drop_level = 1, groupcaps = { snappy = { times = {[1] = 1.70, [2] = 0.70, [3] = 0.25}, uses = 50, maxlevel = 3 }, }, damage_groups = {fleshy = 10}, }, sound = {breaks = "default_tool_breaks"}, }) minetest.register_craft({ output = "ethereal:sword_crystal", recipe = { {"ethereal:crystal_ingot"}, {"ethereal:crystal_ingot"}, {"default:steel_ingot"}, } }) -- Crystal Axe minetest.register_tool("ethereal:axe_crystal", { description = S("Crystal Axe"), inventory_image = "crystal_axe.png", wield_image = "crystal_axe.png", tool_capabilities = { full_punch_interval = 0.8, max_drop_level = 1, groupcaps = { choppy = { times = {[1] = 2.00, [2] = 0.80, [3] = 0.40}, uses = 40, maxlevel = 3 }, }, damage_groups = {fleshy = 7}, }, sound = {breaks = "default_tool_breaks"}, }) minetest.register_craft({ output = 'ethereal:axe_crystal', recipe = { {'ethereal:crystal_ingot', 'ethereal:crystal_ingot'}, {'ethereal:crystal_ingot', 'default:steel_ingot'}, {'', 'default:steel_ingot'}, } }) minetest.register_craft({ output = 'ethereal:axe_crystal', recipe = { {'ethereal:crystal_ingot', 'ethereal:crystal_ingot'}, {'default:steel_ingot', 'ethereal:crystal_ingot'}, {'default:steel_ingot', ''}, } }) -- Crystal Pick (This will last a while) minetest.register_tool("ethereal:pick_crystal", { description = S("Crystal Pickaxe"), inventory_image = "crystal_pick.png", wield_image = "crystal_pick.png", tool_capabilities = { full_punch_interval = 0.7, max_drop_level = 3, groupcaps={ cracky = { times = {[1] = 1.8, [2] = 0.8, [3] = 0.40}, uses = 40, maxlevel = 3 }, }, damage_groups = {fleshy = 6}, }, sound = {breaks = "default_tool_breaks"}, }) minetest.register_craft({ output = "ethereal:pick_crystal", recipe = { {"ethereal:crystal_ingot", "ethereal:crystal_ingot", "ethereal:crystal_ingot"}, {"", "default:steel_ingot", ""}, {"", "default:steel_ingot", ""}, } }) local old_handle_node_drops = minetest.handle_node_drops function minetest.handle_node_drops(pos, drops, digger) -- are we holding Crystal Shovel? if digger:get_wielded_item():get_name() ~= "ethereal:shovel_crystal" then return old_handle_node_drops(pos, drops, digger) end local nn = minetest.get_node(pos).name if minetest.get_item_group(nn, "crumbly") == 0 then return old_handle_node_drops(pos, drops, digger) end return old_handle_node_drops(pos, {ItemStack(nn)}, digger) end minetest.register_tool("ethereal:shovel_crystal", { description = "Crystal Shovel", inventory_image = "crystal_shovel.png", wield_image = "crystal_shovel.png^[transformR90", tool_capabilities = { full_punch_interval = 1.0, max_drop_level=1, groupcaps={ crumbly = {times={[1]=1.10, [2]=0.50, [3]=0.30}, uses=30, maxlevel=3}, }, damage_groups = {fleshy=4}, }, sound = {breaks = "default_tool_breaks"}, }) minetest.register_craft({ output = "ethereal:shovel_crystal", recipe = { {"ethereal:crystal_ingot"}, {"default:steel_ingot"}, {"default:steel_ingot"}, } }) -- Crystal Gilly Staff (replenishes air supply when used) minetest.register_tool("ethereal:crystal_gilly_staff", { description = S("Crystal Gilly Staff"), inventory_image = "crystal_gilly_staff.png", wield_image = "crystal_gilly_staff.png", on_use = function(itemstack, user, pointed_thing) if user:get_breath() < 10 then user:set_breath(10) end end, }) minetest.register_craft({ type = "shapeless", output = "ethereal:crystal_gilly_staff", recipe = { "ethereal:green_moss", "ethereal:gray_moss", "ethereal:fiery_moss", "ethereal:crystal_moss", "ethereal:crystal_ingot", "ethereal:mushroom_moss", "ethereal:crystal_ingot" }, }) -- Add [toolranks] mod support if found if minetest.get_modpath("toolranks") then minetest.override_item("ethereal:pick_crystal", { original_description = "Crystal Pickaxe", description = toolranks.create_description("Crystal Pickaxe", 0, 1), after_use = toolranks.new_afteruse}) minetest.override_item("ethereal:axe_crystal", { original_description = "Crystal Axe", description = toolranks.create_description("Crystal Axe", 0, 1), after_use = toolranks.new_afteruse}) minetest.override_item("ethereal:shovel_crystal", { original_description = "Crystal Shovel", description = toolranks.create_description("Crystal Shovel", 0, 1), after_use = toolranks.new_afteruse}) minetest.override_item("ethereal:sword_crystal", { original_description = "Crystal Sword", description = toolranks.create_description("Crystal Sword", 0, 1), after_use = toolranks.new_afteruse}) end ethereal/depends.txt000066400000000000000000000001501335420417000150250ustar00rootroot00000000000000default farming? stairs flowers doors bakedclay? moreblocks? intllib? lucky_block? toolranks? ethereal/description.txt000066400000000000000000000001041335420417000157250ustar00rootroot00000000000000Ethereal mod uses the v7 mapgen to add many new biomes to the world.ethereal/dirt.lua000066400000000000000000000236571335420417000143300ustar00rootroot00000000000000 local S = ethereal.intllib -- override default dirt (to stop caves cutting away dirt) minetest.override_item("default:dirt", {is_ground_content = ethereal.cavedirt}) minetest.register_alias("ethereal:green_dirt", "default:dirt_with_grass") -- dry dirt minetest.register_node("ethereal:dry_dirt", { description = S("Dried Dirt"), tiles = {"ethereal_dry_dirt.png"}, is_ground_content = ethereal.cavedirt, groups = {crumbly = 3}, sounds = default.node_sound_dirt_defaults() }) minetest.register_craft({ type = "cooking", output = "ethereal:dry_dirt", recipe = "default:dirt", cooktime = 3, }) local dirts = { "Bamboo", "Jungle", "Grove", "Prairie", "Cold", "Crystal", "Mushroom", "Fiery", "Gray" } for n = 1, #dirts do local desc = dirts[n] local name = desc:lower() minetest.register_node("ethereal:"..name.."_dirt", { description = S(desc.." Dirt"), tiles = { "ethereal_grass_"..name.."_top.png", "default_dirt.png", {name = "default_dirt.png^ethereal_grass_"..name.."_side.png", tileable_vertical = false} }, is_ground_content = ethereal.cavedirt, groups = {crumbly = 3, soil = 1, ethereal_grass = 1}, soil = { base = "ethereal:"..name.."_dirt", dry = "farming:soil", wet = "farming:soil_wet" }, drop = "default:dirt", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.25}, }), }) end -- re-register dirt types for abm dirts = { "ethereal:bamboo_dirt", "ethereal:jungle_dirt", "ethereal:grove_dirt", "ethereal:prairie_dirt", "ethereal:cold_dirt", "ethereal:crystal_dirt", "ethereal:mushroom_dirt", "ethereal:fiery_dirt", "ethereal:gray_dirt", "default:dirt_with_grass", "default:dirt_with_dry_grass", "default:dirt_with_snow", "default:dirt_with_dry_grass", "default:dirt_with_rainforest_litter" } -- check surrounding grass and change dirt to same colour local grass_spread = function(pos, node) local above = {x = pos.x, y = pos.y + 1, z = pos.z} -- not enough light if (minetest.get_node_light(above) or 0) < 13 then return end local name = minetest.get_node(above).name local def = minetest.registered_nodes[name] -- water above grass if name == "ignore" or not def or def.liquidtype ~= "none" then return end local curr_max, curr_type, num = 0, "" -- find all default and ethereal grasses in area around dirt local positions, grasses = minetest.find_nodes_in_area( {x = pos.x - 1, y = pos.y - 2, z = pos.z - 1}, {x = pos.x + 1, y = pos.y + 2, z = pos.z + 1}, dirts) -- count new grass nodes for n = 1, #dirts do num = grasses[ dirts[n] ] or 0 if num > curr_max then curr_max = num curr_type = dirts[n] end end -- no grass nearby, keep as dirt if curr_type == "" then return end minetest.swap_node(pos, {name = curr_type}) end -- any grass with a block above will turn into dirt local grass_devoid = function(pos, node) local above = {x = pos.x, y = pos.y + 1, z = pos.z} local name = minetest.get_node(above).name local nodedef = minetest.registered_nodes[name] if name ~= "ignore" and nodedef and not ((nodedef.sunlight_propagates or nodedef.paramtype == "light") and nodedef.liquidtype == "none") then minetest.swap_node(pos, {name = "default:dirt"}) end end -- flower spread, also crystal and fire flower regeneration local flower_spread = function(pos, node) if (minetest.get_node_light(pos) or 0) < 13 then return end local pos0 = {x = pos.x - 4, y = pos.y - 2, z = pos.z - 4} local pos1 = {x = pos.x + 4, y = pos.y + 2, z = pos.z + 4} local num = #minetest.find_nodes_in_area(pos0, pos1, "group:flora") -- stop flowers spreading too much just below top of map block if minetest.find_node_near(pos, 2, "ignore") then return end if num > 3 and node.name == "ethereal:crystalgrass" then local grass = minetest.find_nodes_in_area_under_air( pos0, pos1, {"ethereal:crystalgrass"}) if #grass > 4 and not minetest.find_node_near(pos, 4, {"ethereal:crystal_spike"}) then pos = grass[math.random(#grass)] pos.y = pos.y - 1 if minetest.get_node(pos).name == "ethereal:crystal_dirt" then pos.y = pos.y + 1 minetest.swap_node(pos, {name = "ethereal:crystal_spike"}) end end return elseif num > 3 and node.name == "ethereal:dry_shrub" then local grass = minetest.find_nodes_in_area_under_air( pos0, pos1, {"ethereal:dry_shrub"}) if #grass > 8 and not minetest.find_node_near(pos, 4, {"ethereal:fire_flower"}) then pos = grass[math.random(#grass)] pos.y = pos.y - 1 if minetest.get_node(pos).name == "ethereal:fiery_dirt" then pos.y = pos.y + 1 minetest.swap_node(pos, {name = "ethereal:fire_flower"}) end end return elseif num > 3 then return end local seedling = minetest.find_nodes_in_area_under_air( pos0, pos1, {"group:soil"}) if #seedling > 0 then pos = seedling[math.random(#seedling)] -- default farming has desert sand as soil, so dont spread on this if minetest.get_node(pos).name == "default:desert_sand" then return end pos.y = pos.y + 1 if (minetest.get_node_light(pos) or 0) < 13 then return end minetest.swap_node(pos, {name = node.name}) end end -- grow papyrus up to 4 high and bamboo up to 8 high local grow_papyrus = function(pos, node) local oripos = pos.y local high = 4 pos.y = pos.y - 1 local nod = minetest.get_node_or_nil(pos) if not nod or minetest.get_item_group(nod.name, "soil") < 1 or minetest.find_node_near(pos, 3, {"group:water"}) == nil then return end if node.name == "ethereal:bamboo" then high = 8 end pos.y = pos.y + 1 local height = 0 while height < high and minetest.get_node(pos).name == node.name do height = height + 1 pos.y = pos.y + 1 end nod = minetest.get_node_or_nil(pos) if nod and nod.name == "air" and height < high then if node.name == "ethereal:bamboo" and height == (high - 1) then ethereal.grow_bamboo_tree({x = pos.x, y = oripos, z = pos.z}) else minetest.swap_node(pos, {name = node.name}) end end end -- loop through active abm's for _, ab in pairs(minetest.registered_abms) do local label = ab.label or "" local node1 = ab.nodenames and ab.nodenames[1] or "" local node2 = ab.nodenames and ab.nodenames[2] or "" local neigh = ab.neighbors and ab.neighbors[1] or "" -- find 'dirt to grass abm' and replace with spread function if label == "Grass spread" or (node1 == "default:dirt" and neigh == "default:dirt_with_grass") then --ab.interval = 2 --ab.chance = 1 ab.nodenames = {"default:dirt"} ab.neighbors = {"air"} ab.action = grass_spread -- find 'grass devoid of light to dirt' abm and change to devoid function elseif label == "Grass covered" or (node1 == "default:dirt_with_grass" and node2 == "default:dirt_with_dry_grass") then --ab.interval = 2 --ab.chance = 1 ab.nodenames = { "default:dirt_with_grass", "default:dirt_with_dry_grass", "default:dirt_with_snow", "group:ethereal_grass" } ab.action = grass_devoid -- find flower spread abm and change to spread function elseif label == "Flower spread" or node1 == "group:flora" then --ab.interval = 1 --ab.chance = 1 ab.nodenames = {"group:flora"} ab.neighbors = {"group:soil"} ab.action = flower_spread -- find grow papyrus abm and change to grow_papyrus function elseif label == "Grow papyrus" or node1 == "default:papyrus" then --ab.interval = 2 --ab.chance = 1 ab.nodenames = {"default:papyrus", "ethereal:bamboo"} ab.neighbors = {"group:soil"} ab.action = grow_papyrus end end -- If Baked Clay mod not active, make Red, Orange and Grey nodes if not minetest.get_modpath("bakedclay") then minetest.register_node(":bakedclay:red", { description = S("Red Baked Clay"), tiles = {"baked_clay_red.png"}, groups = {cracky = 3}, is_ground_content = ethereal.cavedirt, sounds = default.node_sound_stone_defaults(), }) minetest.register_node(":bakedclay:orange", { description = S("Orange Baked Clay"), tiles = {"baked_clay_orange.png"}, groups = {cracky = 3}, is_ground_content = ethereal.cavedirt, sounds = default.node_sound_stone_defaults(), }) minetest.register_node(":bakedclay:grey", { description = S("Grey Baked Clay"), tiles = {"baked_clay_grey.png"}, groups = {cracky = 3}, is_ground_content = ethereal.cavedirt, sounds = default.node_sound_stone_defaults(), }) end -- Quicksand (old style, sinking inside shows black instead of yellow effect, -- works ok with noclip enabled though) minetest.register_node("ethereal:quicksand", { description = S("Quicksand"), tiles = {"default_sand.png"}, drop = "default:sand", liquid_viscosity = 15, liquidtype = "source", liquid_alternative_flowing = "ethereal:quicksand", liquid_alternative_source = "ethereal:quicksand", liquid_renewable = false, liquid_range = 0, drowning = 1, walkable = false, climbable = false, post_effect_color = {r = 230, g = 210, b = 160, a = 245}, groups = {crumbly = 3, sand = 1, liquid = 3, disable_jump = 1}, sounds = default.node_sound_sand_defaults(), }) -- Quicksand (new style, sinking inside shows yellow effect with or without noclip, -- but old quicksand is shown as black until block placed nearby to update light) minetest.register_node("ethereal:quicksand2", { description = S("Quicksand"), tiles = {"default_sand.png"}, drawtype = "glasslike", paramtype = "light", drop = "default:sand", liquid_viscosity = 15, liquidtype = "source", liquid_alternative_flowing = "ethereal:quicksand2", liquid_alternative_source = "ethereal:quicksand2", liquid_renewable = false, liquid_range = 0, drowning = 1, walkable = false, climbable = false, post_effect_color = {r = 230, g = 210, b = 160, a = 245}, groups = {crumbly = 3, sand = 1, liquid = 3, disable_jump = 1}, sounds = default.node_sound_sand_defaults(), }) -- craft quicksand minetest.register_craft({ output = "ethereal:quicksand2", recipe = { {"group:sand", "group:sand", "group:sand"}, {"group:sand", "group:water_bucket", "group:sand"}, {"group:sand", "group:sand", "group:sand"}, }, replacements = { {"group:water_bucket", "bucket:bucket_empty"} } }) ethereal/extra.lua000066400000000000000000000162271335420417000145040ustar00rootroot00000000000000 local S = ethereal.intllib -- Bamboo Flooring minetest.register_node("ethereal:bamboo_floor", { description = S("Bamboo Floor"), drawtype = 'nodebox', tiles = { "bamboo_floor.png" }, wield_image = "bamboo_floor.png", inventory_image = "bamboo_floor.png", paramtype = "light", paramtype2 = "wallmounted", walkable = true, node_box = { type = "wallmounted", wall_top = {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5}, wall_bottom = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, wall_side = {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, }, selection_box = {type = "wallmounted"}, groups = {snappy = 3, choppy = 3 , flammable = 2}, sounds = default.node_sound_wood_defaults(), }) -- Craft Bamboo into Bamboo Flooring minetest.register_craft({ output = "ethereal:bamboo_floor 2", recipe = { {"ethereal:bamboo", "ethereal:bamboo", "ethereal:bamboo"}, {"ethereal:bamboo", "ethereal:bamboo", "ethereal:bamboo"}, {"ethereal:bamboo", "ethereal:bamboo", "ethereal:bamboo"}, } }) -- Craft Bamboo into Paper minetest.register_craft({ output = "default:paper 6", recipe = { {"ethereal:bamboo", "ethereal:bamboo"}, {"ethereal:bamboo", "ethereal:bamboo"}, {"ethereal:bamboo", "ethereal:bamboo"}, } }) if ethereal.xcraft == true then -- X pattern craft recipes (5x 'a' in X pattern gives 5 of 'b') local cheat = { {"default:cobble", "default:gravel", 5}, {"default:gravel", "default:dirt", 5}, {"default:dirt", "default:sand", 5}, {"default:ice", "default:snow", 20}, {"ethereal:dry_dirt", "default:desert_sand", 5}, } for n = 1, #cheat do minetest.register_craft({ output = cheat[n][2] .. " " .. cheat[n][3], recipe = { {cheat[n][1], "", cheat[n][1]}, {"", cheat[n][1], ""}, {cheat[n][1], "", cheat[n][1]}, } }) end end -- END if -- Paper (2x3 string = 4 paper) minetest.register_craft({ output = "default:paper 4", recipe = { {"farming:string", "farming:string"}, {"farming:string", "farming:string"}, {"farming:string", "farming:string"}, } }) -- Palm Wax minetest.register_craftitem("ethereal:palm_wax", { description = S("Palm Wax"), inventory_image = "palm_wax.png", wield_image = "palm_wax.png", }) minetest.register_craft({ type = "cooking", cooktime = 10, output = "ethereal:palm_wax", recipe = "ethereal:palmleaves" }) -- Candle from Wax and String/Cotton minetest.register_node("ethereal:candle", { description = S("Candle"), drawtype = "plantlike", inventory_image = "candle_static.png", wield_image = "candle_static.png", tiles = { { name = "candle.png", animation={ type="vertical_frames", aspect_w = 32, aspect_h = 32, length = 1.0 } }, }, paramtype = "light", light_source = 11, sunlight_propagates = true, walkable = false, groups = {dig_immediate = 3, attached_node = 1}, sounds = default.node_sound_defaults(), selection_box = { type = "fixed", fixed = { -0.15, -0.5, -0.15, 0.15, 0, 0.15 } }, }) minetest.register_craft({ output = "ethereal:candle 2", recipe = { {"farming:cotton"}, {"ethereal:palm_wax"}, {"ethereal:palm_wax"}, } }) -- Wooden Bowl minetest.register_craftitem("ethereal:bowl", { description = S("Bowl"), inventory_image = "bowl.png", groups = {food_bowl = 1, flammable = 2}, }) -- use farming redo's recipe if found if not minetest.registered_items["farming:bowl"] then minetest.register_craft({ output = "ethereal:bowl 4", recipe = { {"group:wood", "", "group:wood"}, {"", "group:wood", ""}, } }) end -- stone Ladder minetest.register_node("ethereal:stone_ladder", { description = S("Stone Ladder"), drawtype = "signlike", tiles = {"stone_ladder.png"}, inventory_image = "stone_ladder.png", wield_image = "stone_ladder.png", paramtype = "light", sunlight_propagates = true, paramtype2 = "wallmounted", walkable = false, climbable = true, is_ground_content = false, selection_box = { type = "wallmounted", }, groups = {cracky = 3, oddly_breakable_by_hand = 1}, legacy_wallmounted = true, sounds = default.node_sound_stone_defaults(), }) minetest.register_craft({ output = "ethereal:stone_ladder 4", recipe = { {"group:stone", "", "group:stone"}, {"group:stone", "group:stone", "group:stone"}, {"group:stone", "", "group:stone"}, } }) -- Paper Wall minetest.register_node("ethereal:paper_wall", { drawtype = "nodebox", description = S("Paper Wall"), tiles = {"paper_wall.png"}, inventory_image_image = "paper_wall.png", wield_image = "paper_wall.png", paramtype = "light", groups = {snappy = 3}, sounds = default.node_sound_wood_defaults(), walkable = true, is_ground_content = false, sunlight_propagates = true, paramtype2 = "facedir", selection_box = { type = "fixed", fixed = { -0.5, -0.5, 5/11, 0.5, 0.5, 8/16 } }, node_box = { type = "fixed", fixed = { { -0.5, -0.5, 5/11, 0.5, 0.5, 8/16 } } }, }) minetest.register_craft({ output = "ethereal:paper_wall", recipe = { {"default:stick", "default:paper", "default:stick"}, {"default:stick", "default:paper", "default:stick"}, {"default:stick", "default:paper", "default:stick"}, } }) -- Glostone (A little bit of light decoration) minetest.register_node("ethereal:glostone", { description = S("Glo Stone"), tiles = {"glostone.png"}, groups = {cracky = 3}, light_source = 13, drop = "ethereal:glostone", sounds = default.node_sound_stone_defaults(), }) minetest.register_craft({ type = "shapeless", output = "ethereal:glostone", recipe = {"default:torch", "default:stone", "dye:yellow"} }) -- Charcoal Lump minetest.register_craftitem("ethereal:charcoal_lump", { description = S("Lump of Charcoal"), inventory_image = "charcoal_lump.png", }) minetest.register_craft({ output = "ethereal:charcoal_lump 2", recipe = { {"ethereal:scorched_tree"} } }) minetest.register_craft({ output = "ethereal:charcoal_lump 2", type = "cooking", recipe = "group:tree", cooktime = 4 }) minetest.register_craft({ type = "fuel", recipe = "ethereal:charcoal_lump", burntime = 10, }) -- Make Torch from Charcoal Lump minetest.register_craft({ output = "default:torch 4", recipe = { {"ethereal:charcoal_lump"}, {"default:stick"}, } }) -- Staff of Light (by Xanthin) minetest.register_tool("ethereal:light_staff", { description = S("Staff of Light"), inventory_image = "light_staff.png", wield_image = "light_staff.png", sound = {breaks = "default_tool_breaks"}, stack_max = 1, on_use = function(itemstack, user, pointed_thing) if pointed_thing.type ~= "node" then return end local pos = pointed_thing.under local pname = user:get_player_name() if minetest.is_protected(pos, pname) then minetest.record_protection_violation(pos, pname) return end local node = minetest.get_node(pos).name if node == "default:stone" or node == "default:desert_stone" then minetest.swap_node(pos, {name = "ethereal:glostone"}) if not ethereal.check_creative(user:get_player_name()) then itemstack:add_wear(65535 / 149) -- 150 uses end return itemstack end end, }) minetest.register_craft({ output = "ethereal:light_staff", recipe = { {"ethereal:illumishroom", "default:mese_crystal", "ethereal:illumishroom"}, {"ethereal:illumishroom2", "default:steel_ingot", "ethereal:illumishroom2"}, {"ethereal:illumishroom3", "default:steel_ingot", "ethereal:illumishroom3"} } }) ethereal/fences.lua000066400000000000000000000046541335420417000146250ustar00rootroot00000000000000 local S = ethereal.intllib default.register_fence("ethereal:fence_scorched", { description = S("Scorched Fence"), texture = "scorched_tree.png", material = "ethereal:scorched_tree", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() }) default.register_fence("ethereal:fence_frostwood", { description = S("Frost Fence"), texture = "frost_wood.png", material = "ethereal:frost_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() }) default.register_fence("ethereal:fence_redwood", { description = S("Redwood Fence"), texture = "redwood_wood.png", material = "ethereal:redwood_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() }) default.register_fence("ethereal:fence_willow", { description = S("Willow Fence"), texture = "willow_wood.png", material = "ethereal:willow_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() }) default.register_fence("ethereal:fence_yellowwood", { description = S("Healing Wood Fence"), texture = "yellow_wood.png", material = "ethereal:yellow_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() }) default.register_fence("ethereal:fence_palm", { description = S("Palm Fence"), texture = "moretrees_palm_wood.png", material = "ethereal:palm_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() }) default.register_fence("ethereal:fence_banana", { description = S("Banana Wood Fence"), texture = "banana_wood.png", material = "ethereal:banana_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() }) default.register_fence("ethereal:fence_mushroom", { description = S("Mushroom Fence"), texture = "mushroom_trunk.png", material = "ethereal:mushroom_trunk", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() }) default.register_fence("ethereal:fence_birch", { description = S("Birch Fence"), texture = "moretrees_birch_wood.png", material = "ethereal:birch_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() }) ethereal/fishing.lua000066400000000000000000000057621335420417000150120ustar00rootroot00000000000000 local S = ethereal.intllib -- Raw Fish (Thanks to Altairas for her Fish image on DeviantArt) minetest.register_craftitem("ethereal:fish_raw", { description = S("Raw Fish"), inventory_image = "fish_raw.png", wield_image = "fish_raw.png", groups = {food_fish_raw = 1, flammable = 3}, on_use = minetest.item_eat(2), }) -- Cooked Fish minetest.register_craftitem("ethereal:fish_cooked", { description = S("Cooked Fish"), inventory_image = "fish_cooked.png", wield_image = "fish_cooked.png", groups = {food_fish = 1, flammable = 3}, on_use = minetest.item_eat(5), }) minetest.register_craft({ type = "cooking", output = "ethereal:fish_cooked", recipe = "ethereal:fish_raw", cooktime = 2, }) -- Sashimi (Thanks to Natalia Grosner for letting me use the sashimi image) minetest.register_craftitem("ethereal:sashimi", { description = S("Sashimi"), inventory_image = "sashimi.png", wield_image = "sashimi.png", on_use = minetest.item_eat(4), }) minetest.register_craft({ output = "ethereal:sashimi 2", recipe = { {'group:food_seaweed','group:food_fish_raw','group:food_seaweed'}, } }) -- Worm minetest.register_craftitem("ethereal:worm", { description = S("Worm"), inventory_image = "worm.png", wield_image = "worm.png", }) -- Fishing Rod minetest.register_craftitem("ethereal:fishing_rod", { description = S("Fishing Rod"), inventory_image = "fishing_rod.png", wield_image = "fishing_rod.png", }) minetest.register_craft({ output = "ethereal:fishing_rod", recipe = { {"","","default:stick"}, {"", "default:stick", "farming:string"}, {"default:stick", "", "farming:string"}, } }) -- Sift through 2 Dirt Blocks to find Worm minetest.register_craft({ output = "ethereal:worm", recipe = { {"default:dirt","default:dirt"}, } }) -- default ethereal fish ethereal.fish = { {"ethereal:fish_raw"}, } -- xanadu server additional fish if minetest.get_modpath("xanadu") then ethereal.fish[2] = {"mobs:clownfish_raw"} ethereal.fish[3] = {"mobs:bluefish_raw"} end -- Fishing Rod (Baited) minetest.register_craftitem("ethereal:fishing_rod_baited", { description = S("Baited Fishing Rod"), inventory_image = "fishing_rod_baited.png", wield_image = "fishing_rod_wield.png", stack_max = 1, liquids_pointable = true, on_use = function (itemstack, user, pointed_thing) if pointed_thing.type ~= "node" then return end local node = minetest.get_node(pointed_thing.under).name if (node == "default:water_source" or node == "default:river_water_source") and math.random(1, 100) < 5 then local type = ethereal.fish[math.random(1, #ethereal.fish)][1] local inv = user:get_inventory() if inv:room_for_item("main", {name = type}) then inv:add_item("main", {name = type}) return ItemStack("ethereal:fishing_rod") else minetest.chat_send_player(user:get_player_name(), S("Inventory full, Fish Got Away!")) end end end, }) minetest.register_craft({ type = "shapeless", output = "ethereal:fishing_rod_baited", recipe = {"ethereal:fishing_rod", "ethereal:worm"}, }) ethereal/food.lua000066400000000000000000000146241335420417000143070ustar00rootroot00000000000000 local S = ethereal.intllib -- Banana (Heals one heart when eaten) minetest.register_node("ethereal:banana", { description = S("Banana"), drawtype = "torchlike", tiles = {"banana_single.png"}, inventory_image = "banana_single.png", wield_image = "banana_single.png", paramtype = "light", sunlight_propagates = true, walkable = false, selection_box = { type = "fixed", fixed = {-0.31, -0.5, -0.31, 0.31, 0.5, 0.31} }, groups = { food_banana = 1, fleshy = 3, dig_immediate = 3, flammable = 2, leafdecay = 1, leafdecay_drop = 1 }, drop = "ethereal:banana", on_use = minetest.item_eat(2), sounds = default.node_sound_leaves_defaults(), after_place_node = function(pos, placer) if placer:is_player() then minetest.set_node(pos, {name = "ethereal:banana", param2 = 1}) end end, }) -- Banana Dough minetest.register_craftitem("ethereal:banana_dough", { description = S("Banana Dough"), inventory_image = "banana_dough.png", }) minetest.register_craft({ type = "shapeless", output = "ethereal:banana_dough", recipe = {"group:food_flour", "group:food_banana"} }) minetest.register_craft({ type = "cooking", cooktime = 14, output = "ethereal:banana_bread", recipe = "ethereal:banana_dough" }) -- Orange (Heals 2 hearts when eaten) 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.27, -0.37, -0.27, 0.27, 0.44, 0.27} }, groups = { food_orange = 1, fleshy = 3, dig_immediate = 3, flammable = 2, leafdecay = 3, leafdecay_drop = 1 }, drop = "ethereal:orange", on_use = minetest.item_eat(4), sounds = default.node_sound_leaves_defaults(), after_place_node = function(pos, placer) if placer:is_player() then minetest.set_node(pos, {name = "ethereal:orange", param2 = 1}) end end, }) -- Pine Nuts (Heals 1/2 heart when eaten) minetest.register_craftitem("ethereal:pine_nuts", { description = S("Pine Nuts"), inventory_image = "pine_nuts.png", wield_image = "pine_nuts.png", groups = {food_pine_nuts = 1, flammable = 2}, on_use = minetest.item_eat(1), }) -- Banana Loaf (Heals 3 hearts when eaten) minetest.register_craftitem("ethereal:banana_bread", { description = S("Banana Loaf"), inventory_image = "banana_bread.png", wield_image = "banana_bread.png", groups = {food_bread = 1, flammable = 3}, on_use = minetest.item_eat(6), }) -- Coconut (Gives 4 coconut slices, each heal 1/2 heart) minetest.register_node("ethereal:coconut", { description = S("Coconut"), drawtype = "plantlike", walkable = false, paramtype = "light", sunlight_propagates = true, tiles = {"moretrees_coconut.png"}, inventory_image = "moretrees_coconut.png", wield_image = "moretrees_coconut.png", selection_box = { type = "fixed", fixed = {-0.31, -0.43, -0.31, 0.31, 0.44, 0.31} }, groups = { food_coconut = 1, snappy = 1, oddly_breakable_by_hand = 1, cracky = 1, choppy = 1, flammable = 1, leafdecay = 3, leafdecay_drop = 1 }, drop = "ethereal:coconut_slice 4", sounds = default.node_sound_wood_defaults(), }) -- Coconut Slice (Heals half heart when eaten) minetest.register_craftitem("ethereal:coconut_slice", { description = S("Coconut Slice"), inventory_image = "moretrees_coconut_slice.png", wield_image = "moretrees_coconut_slice.png", groups = {food_coconut_slice = 1, flammable = 1}, on_use = minetest.item_eat(1), }) -- Golden Apple (Found on Healing Tree, heals all 10 hearts) minetest.register_node("ethereal:golden_apple", { description = S("Golden Apple"), drawtype = "plantlike", tiles = {"default_apple_gold.png"}, inventory_image = "default_apple_gold.png", wield_image = "default_apple_gold.png", paramtype = "light", sunlight_propagates = true, walkable = false, selection_box = { type = "fixed", fixed = {-0.2, -0.37, -0.2, 0.2, 0.31, 0.2} }, groups = { fleshy = 3, dig_immediate = 3, leafdecay = 3,leafdecay_drop = 1 }, drop = "ethereal:golden_apple", -- on_use = minetest.item_eat(20), on_use = function(itemstack, user, pointed_thing) if user then user:set_hp(20) return minetest.do_item_eat(2, nil, itemstack, user, pointed_thing) end end, sounds = default.node_sound_leaves_defaults(), after_place_node = function(pos, placer, itemstack) if placer:is_player() then minetest.set_node(pos, {name = "ethereal:golden_apple", param2 = 1}) end end, }) -- Hearty Stew (Heals 5 hearts - thanks to ZonerDarkRevention for his DokuCraft DeviantArt bowl texture) minetest.register_craftitem("ethereal:hearty_stew", { description = S("Hearty Stew"), inventory_image = "hearty_stew.png", wield_image = "hearty_stew.png", on_use = minetest.item_eat(10, "ethereal:bowl"), }) minetest.register_craft({ output = "ethereal:hearty_stew", recipe = { {"group:food_onion","flowers:mushroom_brown", "group:food_tuber"}, {"","flowers:mushroom_brown", ""}, {"","group:food_bowl", ""}, } }) -- Extra recipe for hearty stew if farming and farming.mod and farming.mod == "redo" then minetest.register_craft({ output = "ethereal:hearty_stew", recipe = { {"group:food_onion","flowers:mushroom_brown", "group:food_beans"}, {"","flowers:mushroom_brown", ""}, {"","group:food_bowl", ""}, } }) end -- Bucket of Cactus Pulp minetest.register_craftitem("ethereal:bucket_cactus", { description = S("Bucket of Cactus Pulp"), inventory_image = "bucket_cactus.png", wield_image = "bucket_cactus.png", stack_max = 1, on_use = minetest.item_eat(2, "bucket:bucket_empty"), }) minetest.register_craft({ output = "ethereal:bucket_cactus", recipe = { {"bucket:bucket_empty","default:cactus"}, } }) -- firethorn jelly minetest.register_craftitem("ethereal:firethorn_jelly", { description = S("Firethorn Jelly"), inventory_image = "ethereal_firethorn_jelly.png", wield_image = "ethereal_firethorn_jelly.png", on_use = minetest.item_eat(2, "vessels:glass_bottle"), }) if minetest.registered_items["farming:bowl"] then minetest.register_craft({ type = "shapeless", output = "ethereal:firethorn_jelly", recipe = { "farming:mortar_pestle","vessels:glass_bottle", "ethereal:firethorn", "ethereal:firethorn", "ethereal:firethorn", "bucket:bucket_water", "bucket:bucket_water", "bucket:bucket_water", }, replacements = { {"bucket:bucket_water", "bucket:bucket_empty 3"}, {"farming:mortar_pestle", "farming:mortar_pestle"}, }, }) end ethereal/gates.lua000066400000000000000000000056721335420417000144660ustar00rootroot00000000000000 local S = ethereal.intllib -- register Ethereal wood type gates doors.register_fencegate("ethereal:fencegate_scorched", { description = S("Scorched Wood Fence Gate"), texture = "scorched_tree.png", material = "ethereal:scorched_tree", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} }) doors.register_fencegate("ethereal:fencegate_frostwood", { description = S("Frost Wood Fence Gate"), texture = "frost_wood.png", material = "ethereal:frost_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} }) doors.register_fencegate("ethereal:fencegate_redwood", { description = S("Redwood Fence Gate"), texture = "redwood_wood.png", material = "ethereal:redwood_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} }) doors.register_fencegate("ethereal:fencegate_willow", { description = S("Willow Wood Fence Gate"), texture = "willow_wood.png", material = "ethereal:willow_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} }) doors.register_fencegate("ethereal:fencegate_yellowwood", { description = S("Healing Wood Fence Gate"), texture = "yellow_wood.png", material = "ethereal:yellow_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} }) doors.register_fencegate("ethereal:fencegate_palm", { description = S("Palm Wood Fence Gate"), texture = "moretrees_palm_wood.png", material = "ethereal:palm_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} }) doors.register_fencegate("ethereal:fencegate_banana", { description = S("Banana Wood Fence Gate"), texture = "banana_wood.png", material = "ethereal:banana_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} }) doors.register_fencegate("ethereal:fencegate_mushroom", { description = S("Mushroom Trunk Fence Gate"), texture = "mushroom_trunk.png", material = "ethereal:mushroom_trunk", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} }) doors.register_fencegate("ethereal:fencegate_birch", { description = S("Birch Wood Fence Gate"), texture = "moretrees_birch_wood.png", material = "ethereal:birch_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} }) -- add compatibility for ethereal's to default wooden gates minetest.register_alias("ethereal:fencegate_wood_open", "doors:gate_wood_open") minetest.register_alias("ethereal:fencegate_wood_closed", "doors:gate_wood_closed") minetest.register_alias("ethereal:fencegate_acacia_open", "doors:gate_acacia_wood_open") minetest.register_alias("ethereal:fencegate_acacia_closed", "doors:gate_acacia_wood_closed") minetest.register_alias("ethereal:fencegate_junglewood_open", "doors:gate_junglewood_open") minetest.register_alias("ethereal:fencegate_junglewood_closed", "doors:gate_junglewood_closed") minetest.register_alias("ethereal:fencegate_pine_open", "doors:gate_pine_wood_open") minetest.register_alias("ethereal:fencegate_pine_closed", "doors:gate_pine_wood_closed") ethereal/init.lua000066400000000000000000000076301335420417000143220ustar00rootroot00000000000000--[[ Minetest Ethereal Mod Created by ChinChow Updated by TenPlus1 ]] -- DO NOT change settings below, use the settings.conf file instead ethereal = { version = "1.25", leaftype = 0, -- 0 for 2D plantlike, 1 for 3D allfaces leafwalk = false, -- true for walkable leaves, false to fall through cavedirt = true, -- caves chop through dirt when true torchdrop = true, -- torches drop when touching water papyruswalk = true, -- papyrus can be walked on lilywalk = true, -- waterlilies can be walked on xcraft = true, -- allow cheat crafts for cobble->gravel->dirt->sand, ice->snow, dry dirt->desert sand glacier = 1, -- Ice glaciers with snow bamboo = 1, -- Bamboo with sprouts mesa = 1, -- Mesa red and orange clay with giant redwood alpine = 1, -- Snowy grass healing = 1, -- Snowy peaks with healing trees snowy = 1, -- Cold grass with pine trees and snow spots frost = 1, -- Blue dirt with blue/pink frost trees grassy = 1, -- Green grass with flowers and trees caves = 1, -- Desert stone ares with huge caverns underneath grayness = 1, -- Grey grass with willow trees grassytwo = 1, -- Sparse trees with old trees and flowers prairie = 1, -- Flowery grass with many plants and flowers jumble = 1, -- Green grass with trees and jungle grass junglee = 1, -- Jungle grass with tall jungle trees desert = 1, -- Desert sand with cactus grove = 1, -- Banana groves and ferns mushroom = 1, -- Purple grass with giant mushrooms sandstone = 1, -- Sandstone with smaller cactus quicksand = 1, -- Quicksand banks plains = 1, -- Dry dirt with scorched trees savannah = 1, -- Dry yellow grass with acacia tree's fiery = 1, -- Red grass with lava craters sandclay = 1, -- Sand areas with clay underneath swamp = 1, -- Swamp areas with vines on tree's, mushrooms, lilly's and clay sand sealife = 1, -- Enable coral and seaweed reefs = 1, -- Enable new 0.4.15 coral reefs in default } local path = minetest.get_modpath("ethereal") -- Load new settings if found local input = io.open(path.."/settings.conf", "r") if input then dofile(path .. "/settings.conf") input:close() input = nil end -- Intllib local S if minetest.global_exists("intllib") then if intllib.make_gettext_pair then -- New method using gettext. S = intllib.make_gettext_pair() else -- Old method using text files. S = intllib.Getter() end else S = function(s) return s end end ethereal.intllib = S -- Falling node function ethereal.check_falling = minetest.check_for_falling or nodeupdate -- creative check local creative_mode_cache = minetest.settings:get_bool("creative_mode") function ethereal.check_creative(name) return creative_mode_cache or minetest.check_player_privs(name, {creative = true}) end dofile(path .. "/plantlife.lua") dofile(path .. "/mushroom.lua") dofile(path .. "/onion.lua") dofile(path .. "/crystal.lua") dofile(path .. "/water.lua") dofile(path .. "/dirt.lua") dofile(path .. "/food.lua") dofile(path .. "/wood.lua") dofile(path .. "/leaves.lua") dofile(path .. "/sapling.lua") dofile(path .. "/strawberry.lua") dofile(path .. "/fishing.lua") dofile(path .. "/extra.lua") dofile(path .. "/sealife.lua") dofile(path .. "/fences.lua") dofile(path .. "/gates.lua") dofile(path .. "/mapgen.lua") dofile(path .. "/compatibility.lua") dofile(path .. "/stairs.lua") dofile(path .. "/lucky_block.lua") -- Set bonemeal aliases if minetest.get_modpath("bonemeal") then minetest.register_alias("ethereal:bone", "bonemeal:bone") minetest.register_alias("ethereal:bonemeal", "bonemeal:bonemeal") else -- or return to where it came from minetest.register_alias("ethereal:bone", "default:dirt") minetest.register_alias("ethereal:bonemeal", "default:dirt") end if minetest.get_modpath("xanadu") then dofile(path .. "/plantpack.lua") end print (S("[MOD] Ethereal loaded")) ethereal/leaves.lua000066400000000000000000000266171335420417000146440ustar00rootroot00000000000000 local S = ethereal.intllib -- set leaftype (value inside init.lua) local leaftype = "plantlike" if ethereal.leaftype ~= 0 then leaftype = "allfaces_optional" end -- default apple tree leaves minetest.override_item("default:leaves", { drawtype = leaftype, visual_scale = 1.4, inventory_image = "default_leaves.png", wield_image = "default_leaves.png", walkable = ethereal.leafwalk, }) -- ability to craft big tree sapling minetest.register_craft({ recipe = {{"default:sapling", "default:sapling", "default:sapling"}}, output = "ethereal:big_tree_sapling" }) -- default jungle tree leaves minetest.override_item("default:jungleleaves", { drawtype = leaftype, visual_scale = 1.4, inventory_image = "default_jungleleaves.png", wield_image = "default_jungleleaves.png", walkable = ethereal.leafwalk, }) -- default pine tree leaves minetest.override_item("default:pine_needles", { drawtype = leaftype, visual_scale = 1.4, inventory_image = "default_pine_needles.png", wield_image = "default_pine_needles.png", walkable = ethereal.leafwalk, drop = { max_items = 1, items = { {items = {"default:pine_sapling"}, rarity = 20}, {items = {"ethereal:pine_nuts"}, rarity = 5}, {items = {"default:pine_needles"}} } }, }) -- default acacia tree leaves minetest.override_item("default:acacia_leaves", { drawtype = leaftype, inventory_image = "default_acacia_leaves.png", wield_image = "default_acacia_leaves.png", visual_scale = 1.4, walkable = ethereal.leafwalk, }) -- default aspen tree leaves minetest.override_item("default:aspen_leaves", { drawtype = leaftype, inventory_image = "default_aspen_leaves.png", wield_image = "default_aspen_leaves.png", visual_scale = 1.4, walkable = ethereal.leafwalk, }) -- willow twig minetest.register_node("ethereal:willow_twig", { description = S("Willow Twig"), drawtype = "plantlike", tiles = {"willow_twig.png"}, inventory_image = "willow_twig.png", wield_image = "willow_twig.png", paramtype = "light", walkable = ethereal.leafwalk, visual_scale = 1.4, waving = 1, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, drop = { max_items = 1, items = { {items = {"ethereal:willow_sapling"}, rarity = 50}, {items = {"ethereal:willow_twig"}} } }, sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves, }) -- redwood leaves minetest.register_node("ethereal:redwood_leaves", { description = S("Redwood Leaves"), drawtype = leaftype, visual_scale = 1.4, tiles = {"redwood_leaves.png"}, inventory_image = "redwood_leaves.png", wield_image = "redwood_leaves.png", paramtype = "light", walkable = ethereal.leafwalk, waving = 1, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, drop = { max_items = 1, items = { {items = {"ethereal:redwood_sapling"}, rarity = 50}, {items = {"ethereal:redwood_leaves"}} } }, sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves, }) -- orange tree leaves minetest.register_node("ethereal:orange_leaves", { description = S("Orange Leaves"), drawtype = leaftype, visual_scale = 1.4, tiles = {"orange_leaves.png"}, inventory_image = "orange_leaves.png", wield_image = "orange_leaves.png", paramtype = "light", walkable = ethereal.leafwalk, waving = 1, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, drop = { max_items = 1, items = { {items = {"ethereal:orange_tree_sapling"}, rarity = 15}, {items = {"ethereal:orange_leaves"}} } }, sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves, }) -- banana tree leaves minetest.register_node("ethereal:bananaleaves", { description = S("Banana Leaves"), drawtype = leaftype, visual_scale = 1.4, tiles = {"banana_leaf.png"}, inventory_image = "banana_leaf.png", wield_image = "banana_leaf.png", paramtype = "light", walkable = ethereal.leafwalk, waving = 1, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, drop = { max_items = 1, items = { {items = {"ethereal:banana_tree_sapling"}, rarity = 10}, {items = {"ethereal:bananaleaves"}} } }, sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves, }) -- healing tree leaves minetest.register_node("ethereal:yellowleaves", { description = S("Healing Tree Leaves"), drawtype = leaftype, visual_scale = 1.4, tiles = {"yellow_leaves.png"}, inventory_image = "yellow_leaves.png", wield_image = "yellow_leaves.png", paramtype = "light", walkable = ethereal.leafwalk, waving = 1, groups = {snappy = 3, leafdecay = 3, leaves = 1}, drop = { max_items = 1, items = { {items = {"ethereal:yellow_tree_sapling"}, rarity = 50}, {items = {"ethereal:yellowleaves"}} } }, -- one leaf heals half a heart when eaten on_use = minetest.item_eat(1), sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves, light_source = 9, }) -- palm tree leaves minetest.register_node("ethereal:palmleaves", { description = S("Palm Leaves"), drawtype = leaftype, visual_scale = 1.4, tiles = {"moretrees_palm_leaves.png"}, inventory_image = "moretrees_palm_leaves.png", wield_image = "moretrees_palm_leaves.png", paramtype = "light", walkable = ethereal.leafwalk, waving = 1, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, drop = { max_items = 1, items = { {items = {"ethereal:palm_sapling"}, rarity = 10}, {items = {"ethereal:palmleaves"}} } }, sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves, }) -- birch tree leaves minetest.register_node("ethereal:birch_leaves", { description = S("Birch Leaves"), drawtype = leaftype, visual_scale = 1.4, tiles = {"moretrees_birch_leaves.png"}, inventory_image = "moretrees_birch_leaves.png", wield_image = "moretrees_birch_leaves.png", paramtype = "light", walkable = ethereal.leafwalk, waving = 1, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, drop = { max_items = 1, items = { {items = {"ethereal:birch_sapling"}, rarity = 20}, {items = {"ethereal:birch_leaves"}} } }, sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves, }) -- frost tree leaves minetest.register_node("ethereal:frost_leaves", { description = S("Frost Leaves"), drawtype = leaftype, visual_scale = 1.4, tiles = {"ethereal_frost_leaves.png"}, inventory_image = "ethereal_frost_leaves.png", wield_image = "ethereal_frost_leaves.png", paramtype = "light", walkable = ethereal.leafwalk, waving = 1, groups = {snappy = 3, leafdecay = 3, leaves = 1, puts_out_fire = 1}, drop = { max_items = 1, items = { {items = {"ethereal:frost_tree_sapling"}, rarity = 15}, {items = {"ethereal:frost_leaves"}} } }, light_source = 9, sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves, }) -- bamboo stalk leaves minetest.register_node("ethereal:bamboo_leaves", { description = S("Bamboo Leaves"), drawtype = leaftype, visual_scale = 1.4, tiles = {"bamboo_leaves.png"}, inventory_image = "bamboo_leaves.png", wield_image = "bamboo_leaves.png", paramtype = "light", walkable = ethereal.leafwalk, waving = 1, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, drop = { max_items = 1, items = { {items = {"ethereal:bamboo_sprout"}, rarity = 10}, {items = {"ethereal:bamboo_leaves"}} } }, sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves, }) -- mushroom tops minetest.register_node("ethereal:mushroom", { description = S("Mushroom Cap"), tiles = {"mushroom_block.png"}, groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, drop = { max_items = 1, items = { {items = {"ethereal:mushroom_sapling"}, rarity = 20}, {items = {"ethereal:mushroom"}} } }, sounds = default.node_sound_wood_defaults(), }) minetest.register_craft({ type = "fuel", recipe = "ethereal:mushroom", burntime = 10, }) -- mushroom pore (spongelike material found inside giant shrooms) minetest.register_node("ethereal:mushroom_pore", { description = S("Mushroom Pore"), tiles = {"mushroom_pore.png"}, groups = { snappy = 3, cracky = 3, choppy = 3, oddly_breakable_by_hand = 3, flammable = 2, disable_jump = 1, fall_damage_add_percent = -100 }, sounds = default.node_sound_dirt_defaults(), }) minetest.register_craft({ type = "fuel", recipe = "ethereal:mushroom_pore", burntime = 3, }) -- hedge block minetest.register_node("ethereal:bush", { description = S("Bush"), tiles = {"ethereal_bush.png"}, walkable = true, groups = {snappy = 3, flammable = 2}, sounds = default.node_sound_leaves_defaults(), }) minetest.register_craft({ output = "ethereal:bush", recipe = { {"group:leaves", "group:leaves", "group:leaves"}, {"group:leaves", "ethereal:bamboo_leaves", "group:leaves"}, {"group:leaves", "group:leaves", "group:leaves"}, } }) minetest.register_craft({ type = "fuel", recipe = "ethereal:bush", burntime = 1, }) -- bush block #2 minetest.register_node("ethereal:bush2", { drawtype = "allfaces_optional", description = S("Bush #2"), tiles = {"default_aspen_leaves.png"}, paramtype = "light", walkable = true, groups = {snappy = 3, flammable = 2}, sounds = default.node_sound_leaves_defaults(), }) minetest.register_craft({ output = "ethereal:bush2", recipe = { {"group:leaves", "group:leaves", "group:leaves"}, {"group:leaves", "default:aspen_leaves", "group:leaves"}, {"group:leaves", "group:leaves", "group:leaves"}, } }) minetest.register_craft({ type = "fuel", recipe = "ethereal:bush2", burntime = 1, }) -- bush block #3 minetest.register_node("ethereal:bush3", { drawtype = "allfaces_optional", description = S("Bush #3"), tiles = {"default_pine_needles.png"}, paramtype = "light", walkable = true, groups = {snappy = 3, flammable = 2}, sounds = default.node_sound_leaves_defaults(), }) minetest.register_craft({ output = "ethereal:bush3", recipe = { {"group:leaves", "group:leaves", "group:leaves"}, {"group:leaves", "default:pine_needles", "group:leaves"}, {"group:leaves", "group:leaves", "group:leaves"}, } }) minetest.register_craft({ type = "fuel", recipe = "ethereal:bush3", burntime = 1, }) -- compatibility check for new mt version with leafdecay function if minetest.registered_nodes["default:dirt_with_rainforest_litter"] then default.register_leafdecay({ trunks = {"default:tree"}, leaves = {"default:apple", "default:leaves", "ethereal:orange", "ethereal:orange_leaves"}, radius = 3 }) default.register_leafdecay({ trunks = {"ethereal:willow_trunk"}, leaves = {"ethereal:willow_twig"}, radius = 3 }) default.register_leafdecay({ trunks = {"ethereal:redwood_trunk"}, leaves = {"ethereal:redwood_leaves"}, radius = 3 }) default.register_leafdecay({ trunks = {"ethereal:frost_tree"}, leaves = {"ethereal:frost_leaves"}, radius = 3 }) default.register_leafdecay({ trunks = {"ethereal:yellow_trunk"}, leaves = {"ethereal:yellowleaves", "ethereal:golden_apple"}, radius = 3 }) default.register_leafdecay({ trunks = {"ethereal:palm_trunk"}, leaves = {"ethereal:palmleaves", "ethereal:coconut"}, radius = 3 }) default.register_leafdecay({ trunks = {"ethereal:banana_trunk"}, leaves = {"ethereal:bananaleaves", "ethereal:banana"}, radius = 3 }) default.register_leafdecay({ trunks = {"ethereal:birch_trunk"}, leaves = {"ethereal:birch_leaves"}, radius = 3 }) default.register_leafdecay({ trunks = {"ethereal:bamboo"}, leaves = {"ethereal:bamboo_leaves"}, radius = 2 }) end ethereal/license.txt000066400000000000000000000020631335420417000150320ustar00rootroot00000000000000The 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. ethereal/locale/000077500000000000000000000000001335420417000141055ustar00rootroot00000000000000ethereal/locale/de.txt000066400000000000000000000133321335420417000152400ustar00rootroot00000000000000# German Translation for ethereal mod # Deutsche Übersetzung der ethereal Mod # last update: 2016/May/25 # Author: Xanthin #bonemeal.lua Bone = Knochen Bone Meal = Knochenmehl #crystal.lua Crystal Spike = Kristallnadel Crystal Ingot = Kristallbarren Crystal Block = Kristallblock Crystal Sword = Kristallschwert Crystal Axe = Kristallaxt Crystal Pickaxe = Kristallspitzhacke Crystal (soft touch) Shovel = Kristallschaufel (Behutsamkeit) Crystal Gilly Staff = Kristallener Gilly-Stab #dirt.lua Green Dirt = Grüne Erde Dried Dirt = Vertrocknete Erde Bamboo Dirt = Bambuserde Jungle Dirt = Tropenerde Grove Dirt = Hainerde Prairie Dirt = Prärieerde Cold Dirt = Kalte Erde Crystal Dirt = Kristallerde Mushroom Dirt = Pilzerde Fiery Dirt = Feuerrote Erde Gray Dirt = Graue Erde Red Baked Clay = Roter gebrannter Ton Orange Baked Clay = Oranger gebrannter Ton Grey Baked Clay = Grauer gebrannter Ton Quicksand = Treibsand #extra.lua Bamboo Floor = Bambusboden Palm Wax = Palmwachs Candle = Kerze Bowl = Schale Stone Ladder = Steinleiter Paper Wall = Papierwand Glo Stone = Leuchtstein Lump of Charcoal = Holzkohlestück Staff of Light = Stab des Lichts #fences.lua Scorched Fence = Verbrannter Zaun Frost Fence = Frostzaun Redwood Fence = Mammutbaumzaun Willow Fence = Weidenzaun Healing Wood Fence = Lebensholzzaun Palm Fence = Palmzaun Banana Wood Fence = Bananenholzzaun Mushroom Fence = Pilzzaun Birch Fence = Birkenzaun #fishing.lua Raw Fish = Roher Fisch Cooked Fish = Gekochter Fisch Sashimi = Sashimi Worm = Wurm Fishing Rod = Angelrute Baited Fishing Rod = Angelrute mit Köder Inventory full, Fish Got Away! = Inventar voll, Fisch entkam! #food.lua Banana = Banane Banana Dough = Bananenteig Orange = Orange Pine Nuts = Pinienkerne Banana Loaf = Bananenbrot Coconut = Kokosnuss Coconut Slice = Kokosscheibe Golden Apple = Goldener Apfel Hearty Stew = Deftiger Eintopf Bucket of Cactus Pulp = Eimer Kaktusmark #gates.lua Scorched Wood Fence Gate = Verbranntes Holzzauntor Frost Wood Fence Gate = Frostholzzauntor Redwood Fence Gate = Mammutbaumzauntor Willow Wood Fence Gate = Weidenholztor Healing Wood Fence Gate = Lebensholzzauntor Palm Wood Fence Gate = Palmholzzauntor Banana Wood Fence Gate = Bananenholzzauntor Mushroom Trunk Fence Gate = Pilzstammzauntor Birch Wood Fence Gate = Birkenholzzauntor #init.lua [MOD] Ethereal loaded = [MOD] Ethereal geladen #leaves.lua Willow Twig = Weidenrute Redwood Leaves = Mammutbaumlaub Orange Leaves = Orangenlaub Banana Leaves = Bananenblätter Healing Tree Leaves = Lebensbaumlaub Palm Leaves = Palmenblätter Birch Leaves = Birkenlaub Frost Leaves = Frostlaub Bamboo Leaves = Bambuslaub Mushroom Cap = Pilzkappe Mushroom Pore = Pilzpore Bush = Busch Bush #2 = Busch #2 Bush #3 = Busch #3 #mushroom.lua Mushroom Soup = Pilzsuppe #onion.lua Wild Onion = Wilde Zwiebel #plantlife.lua Fire Flower = Feuerblume Fire Dust = Feuerstaub Vine = Weinrebe Light String Vine = Leuchtschnurrebe Fern = Farn Fern Tubers = Farnsporenkapseln Fiery Dry Shrub = Feuerroter vertrockneter Strauch Snowy Grass = Verschneites Gras Crystal Grass = Kristallgras Crystal Moss = Kristallmoos Mushroom Moss = Pilzmoos Fiery Moss = Feuerrotes Moos Gray Moss = Graues Moos Green Moss = Grünes Moos Red Illumishroom = Roter Leuchtpilz Green Illumishroom = Grüner Leuchtpilz Cyan Illumishroom = Türkiser Leuchtpilz #sapling.lua Bamboo Sprout = Bambussprosse Willow Tree Sapling = Weidenbaumsetzling Healing Tree Sapling = Lebensbaumsetzling Apple Tree Sapling = Apfelbaumsetzling Jungle Tree Sapling = Tropenbaumsetzling Pine Tree Sapling = Piniensetzling Big Tree Sapling = Großer-Baum-Setzling Banana Tree Sapling = Bananensetzling Frost Tree Sapling = Frostbaumsetzling Mushroom Tree Sapling = Pilzbaumsetzling Palm Tree Sapling = Palmensetzling Redwood Tree Sapling = Mammutbaumsetzling Orange Tree Sapling = Orangenbaumsetzling Acacia Tree Sapling = Akaziensetzling Birch Tree Sapling = Birkensetzling Schematic not found = Schema nicht gefunden #sealife.lua Seaweed = Seetang Blue Coral = Blaue Koralle Orange Coral = Orange Koralle Pink Coral = Rosa Koralle Green Coral = Grüne Koralle Sandy = Sandy #stairs.lua Crystal Block Stair = Kristallblocktreppe Crystal Block Slab = Kristallblockplatte Ice Brick Stair = Eisziegeltreppe Ice Brick Slab = Eisziegelplatte Snow Brick Stair = Schneeziegeltreppe Snow Brick Slab = Schneeziegelplatte Dry Dirt Stair = Vertrocknete Erdtreppe Dry Dirt Slab = vertrocknete Erdplatte Mushroom Trunk Stair = Pilzstammtreppe Mushroom Trunk Slab = Pilzstammplatte Mushroom Top Stair = Pilzkappentreppe Mushroom Top Slab = Pilzkappenplatte Frost Wood Stair = Frostholztreppe Frost Wood Slab = Frostholzplatte Healing Wood Stair = Lebensholztreppe Healing Wood Slab = Lebensholzplatte Palm Wood Stair = Palmholztreppe Palm Wood Slab = Palmholzplatte Birch Wood Stair = Birkenholztreppe Birch Wood Slab = Birkenholzplatte Banana Wood Stair = Bananenholztreppe Banana Wood Slab = Bananenholzplatte Willow Wood Stair = Weidenholztreppe Willow Wood Slab = Weidenholzplatte Redwood Stair = Mammutbaumtreppe Redwood Slab = Mammutbaumplatte Bamboo Stair = Bambustreppe Bamboo Slab = Bambusplatte Dry Dirt = Vertrocknete Erde Mushroom Trunk = Pilzstamm Mushroom Top = Pilzkappe Healing Wood = Lebensholz Redwood = Mammutbaum #strawberry.lua Strawberry = Erdbeere #water.lua Ice Brick = Eisziegel Snow Brick = Schneeziegel #wood.lua Willow Trunk = Weidenstamm Willow Wood = Weidenholz Redwood Trunk = Mammutbaumstamm Redwood Wood = Mammutbaumholz Frost Tree = Frostbaum Frost Wood = Frostholz Healing Tree Trunk = Lebensbaumstamm Healing Tree Wood = Lebensbaumholz Palm Trunk = Palmstamm Palm Wood = Palmholz Banana Trunk = Bananenstamm Banana Wood = Bananenholz Scorched Tree = Verbrannter Baum Mushroom = Pilz Birch Trunk = Birkenstamm Birch Wood = Birkenholz Bamboo = Bambusethereal/locale/ru.txt000066400000000000000000000221321335420417000152740ustar00rootroot00000000000000# Russian Translation for ethereal mod # Русский перевод мода ethereal # last update: 2017/Aug/15 # Author: Inpos #bonemeal.lua Bone = Кость Bone Meal = Косятная мука #crystal.lua Crystal Spike = Хрустальный шип Crystal Ingot = Хрустальный слиток Crystal Block = Хрустальный блок Crystal Sword = Хрустальный меч Crystal Axe = Хрустальный топор Crystal Pickaxe = Хрустальная кирка Crystal (soft touch) Shovel = Хрустальная лопата (хрупкая) Crystal Gilly Staff = Хрустальный посох Джилли #dirt.lua Green Dirt = Зелёная земля Dried Dirt = Высушенная земля Bamboo Dirt = Бамбуковая земля Jungle Dirt = Земля джунглей Grove Dirt = Лесная земля Prairie Dirt = Земля прерий Cold Dirt = Холодная земля Crystal Dirt = Хрустальная земля Mushroom Dirt = Грибная земля Fiery Dirt = Огненная земля Gray Dirt = Серая земля Red Baked Clay = Красная обожжёная глина Orange Baked Clay = Оранжевая обожжёная глина Grey Baked Clay = Серая обожжёная глина Quicksand = Зыбучий песок #extra.lua Bamboo Floor = Бамбуковый пол Palm Wax = Пальмовый воск Candle = Свеча Bowl = Чашка Stone Ladder = Каменная лестница Paper Wall = Обои Glo Stone = Светящийся камень Lump of Charcoal = Кусок угля Staff of Light = Световой посох #fences.lua Scorched Fence = Обожжёный забор Frost Fence = Замороженный забор Redwood Fence = Забор из секвойи Willow Fence = Ивовый забор Healing Wood Fence = Забор из лечащего дерева Palm Fence = Пальмовый забор Banana Wood Fence = Забор из бананового дерева Mushroom Fence = Грибной забор Birch Fence = Берёзовый забор #fishing.lua Raw Fish = Сырая рыба Cooked Fish = Свареная рыба Sashimi = Сашими Worm = Червь Fishing Rod = Удочка Baited Fishing Rod = Удочка с приманкой Inventory full, Fish Got Away! = Инвентарь заполнен, рыба сбежала! #food.lua Banana = Банан Banana Dough = Банановое тесто Orange = Апельсин Pine Nuts = Кедровые орехи Banana Loaf = Банадовый хлеб Coconut = Кокос Coconut Slice = Кокосовый ломтик Golden Apple = Золотое яблоко Hearty Stew = Сытное рагу Bucket of Cactus Pulp = Ведро с мякотью кактуса #gates.lua Scorched Wood Fence Gate = Обожжёные деревянные ворота для забора Frost Wood Fence Gate = Замороженные деревянные ворота для забора Redwood Fence Gate = Ворота из секвойи для забора Willow Wood Fence Gate = Ивовые ворота для забора Healing Wood Fence Gate = Ворота из лечащего дерева для забора Palm Wood Fence Gate = Ворота из пальмого дерева для забора Banana Wood Fence Gate = Ворота из бананового дерева для забора Mushroom Trunk Fence Gate = Ворота из грибного ствола для забора Birch Wood Fence Gate = Берёзовые ворота для забора #init.lua [MOD] Ethereal loaded = [MOD] Ethereal загружен #leaves.lua Willow Twig = Ивовый прут Redwood Leaves = Листва секвойи Orange Leaves = Листва апельсина Banana Leaves = Листва банана Healing Tree Leaves = Листва лечащего дерева Palm Leaves = Пальмовая листва Birch Leaves = Берёзовая листва Frost Leaves = Замороженная листва Bamboo Leaves = Бамбуковая листва Mushroom Cap = Шляпка гриба Mushroom Pore = Грибные поры Bush = Куст Bush #2 = Куст #2 Bush #3 = Куст #3 #mushroom.lua Mushroom Soup = Грибной суп #onion.lua Wild Onion = Дикий лук #plantlife.lua Fire Flower = Огненый цветок Fire Dust = Огненая пыль Vine = Виноградная лоза Light String Vine = Светящаяся виноградная лоза Fern = Папоротник Fern Tubers = Клубни папоротника Fiery Dry Shrub = Огненный сухой кустарник Snowy Grass = Заснеженная трава Crystal Grass = Хрустальная трава Crystal Moss = Хрустальный мох Mushroom Moss = Грибной мох Fiery Moss = Огненный мох Gray Moss = Серый мох Green Moss = Зелёный мох Red Illumishroom = Красный светящийся гриб Green Illumishroom = Зелёный светящийся гриб Cyan Illumishroom = Голубой светящийся гриб #sapling.lua Bamboo Sprout = Росток бамбука Willow Tree Sapling = Саженец ивы Healing Tree Sapling = Саженец лечебного дерева Apple Tree Sapling = Саженец яблони Jungle Tree Sapling = Саженец дерева джунглей Pine Tree Sapling = Саженец сосны Big Tree Sapling = Саженец большого дерева Banana Tree Sapling = Саженец бананового дерева Frost Tree Sapling = Саженец морозного дерева Mushroom Tree Sapling = Саженец грибного дерева Palm Tree Sapling = Саженец пальмы Redwood Tree Sapling = Саженец секвойи Orange Tree Sapling = Саженец апельсинового дерева Acacia Tree Sapling = Саженец акации Birch Tree Sapling = Саженец берёзы Schematic not found = Схема не найдена #sealife.lua Seaweed = Водоросли Blue Coral = Синий коралл Orange Coral = Оранжевый коралл Pink Coral = Розовый коралл Green Coral = Залёный коралл Sandy = Песочный #stairs.lua Crystal Block Stair = Ступенька из хрустального блока Crystal Block Slab = Плита из хрустального блока Ice Brick Stair = Ступенька из ледяного кирпича Ice Brick Slab = Плита из ледяного кирпича Snow Brick Stair = Ступенька из снежного кирпича Snow Brick Slab = Плита из снежного кирпича Dry Dirt Stair = Ступенька из сухой земли Dry Dirt Slab = Плита из сухой земли Mushroom Trunk Stair = Ступенька из ствола гриба Mushroom Trunk Slab = Плита из ствола гриба Mushroom Top Stair = Ступенька из шляпки гриба Mushroom Top Slab = Плита из шляпки гриба Frost Wood Stair = Ступенька из замороженных досок Frost Wood Slab = Плита из замороженных досок Healing Wood Stair = Ступенька из лечебного дерева Healing Wood Slab = Плита из лечебного дерева Palm Wood Stair = Ступенька из пальмовых досок Palm Wood Slab = Плита из пальмовых досок Birch Wood Stair = Ступенька из берёзовых досок Birch Wood Slab = Плита из берёзовых досок Banana Wood Stair = Ступенька из банановых досок Banana Wood Slab = Плита из банановых досок Willow Wood Stair = Ступенька из ивовых досок Willow Wood Slab = Плита из ивовых досок Redwood Stair = Ступенька из секвойи Redwood Slab = Плита из секвойи Bamboo Stair = Ступенька из бамбука Bamboo Slab = Плита из бамбука Dry Dirt = Сухая земля Mushroom Trunk = Ствол гриба Mushroom Top = Шляпка гриба Healing Wood = лечебная древесина Redwood = Секвойя #strawberry.lua Strawberry = Клубника #water.lua Ice Brick = Ледяной кирпич Snow Brick = Снежный кирпич #wood.lua Willow Trunk = Ствол ивы Willow Wood = Доски ивы Redwood Trunk = Ствол секвойи Redwood Wood = Доски секвойи Frost Tree = Морозное дерево Frost Wood = Доски Healing Tree Trunk = Ствол лечебного дерева Healing Tree Wood = Доски лечебного дерева Palm Trunk = Ствол пальмы Palm Wood = Доски пальмы Banana Trunk = Ствол бананового дерева Banana Wood = Доски банавого дерева Scorched Tree = Обожжёное дерево Mushroom = Гриб Birch Trunk = Ствол берёзы Birch Wood = Доски берёзы Bamboo = Бамбукethereal/locale/template.txt000066400000000000000000000065221335420417000164660ustar00rootroot00000000000000# Template for translations of ethereal mod # last update: 2016/May/25 #bonemeal.lua Bone = Bone Meal = #crystal.lua Crystal Spike = Crystal Ingot = Crystal Block = Crystal Sword = Crystal Axe = Crystal Pickaxe = Crystal (soft touch) Shovel = Crystal Gilly Staff = #dirt.lua Green Dirt = Dried Dirt = Bamboo Dirt = Jungle Dirt = Grove Dirt = Prairie Dirt = Cold Dirt = Crystal Dirt = Mushroom Dirt = Fiery Dirt = Gray Dirt = Red Baked Clay = Orange Baked Clay = Grey Baked Clay = Quicksand = #extra.lua Bamboo Floor = Palm Wax = Candle = Bowl = Stone Ladder = Paper Wall = Glo Stone = Lump of Charcoal = Staff of Light = #fences.lua Scorched Fence = Frost Fence = Redwood Fence = Willow Fence = Healing Wood Fence = Palm Fence = Banana Wood Fence = Mushroom Fence = Birch Fence = #fishing.lua Raw Fish = Cooked Fish = Sashimi = Worm = Fishing Rod = Baited Fishing Rod = Inventory full, Fish Got Away! = #food.lua Banana = Banana Dough = Orange = Pine Nuts = Banana Loaf = Coconut = Coconut Slice = Golden Apple = Hearty Stew = Bucket of Cactus Pulp = #gates.lua Scorched Wood Fence Gate = Frost Wood Fence Gate = Redwood Fence Gate = Willow Wood Fence Gate = Healing Wood Fence Gate = Palm Wood Fence Gate = Banana Wood Fence Gate = Mushroom Trunk Fence Gate = Birch Wood Fence Gate = #init.lua [MOD] Ethereal loaded = #leaves.lua Willow Twig = Redwood Leaves = Orange Leaves = Banana Leaves = Healing Tree Leaves = Palm Leaves = Birch Leaves = Frost Leaves = Bamboo Leaves = Mushroom Cap = Mushroom Pore = Bush = Bush #2 = Bush #3 = #mushroom.lua Mushroom Soup = #onion.lua Wild Onion = #plantlife.lua Fire Flower = Fire Dust = Vine = Light String Vine = Fern = Fern Tubers = Fiery Dry Shrub = Snowy Grass = Crystal Grass = Crystal Moss = Mushroom Moss = Fiery Moss = Gray Moss = Green Moss = Red Illumishroom = Green Illumishroom = Cyan Illumishroom = #sapling.lua Bamboo Sprout = Willow Tree Sapling = Healing Tree Sapling = Apple Tree Sapling = Jungle Tree Sapling = Pine Tree Sapling = Big Tree Sapling = Banana Tree Sapling = Frost Tree Sapling = Mushroom Tree Sapling = Palm Tree Sapling = Redwood Tree Sapling = Orange Tree Sapling = Acacia Tree Sapling = Birch Tree Sapling = Schematic not found = #sealife.lua Seaweed = Blue Coral = Orange Coral = Pink Coral = Green Coral = Sandy = #stairs.lua Crystal Block Stair = Crystal Block Slab = Ice Brick Stair = Ice Brick Slab = Snow Brick Stair = Snow Brick Slab = Dry Dirt Stair = Dry Dirt Slab = Mushroom Trunk Stair = Mushroom Trunk Slab = Mushroom Top Stair = Mushroom Top Slab = Frost Wood Stair = Frost Wood Slab = Healing Wood Stair = Healing Wood Slab = Palm Wood Stair = Palm Wood Slab = Birch Wood Stair = Birch Wood Slab = Banana Wood Stair = Banana Wood Slab = Willow Wood Stair = Willow Wood Slab = Redwood Stair = Redwood Slab = Bamboo Stair = Bamboo Slab = Dry Dirt = Mushroom Trunk = Mushroom Top = Healing Wood = Redwood = #strawberry.lua Strawberry = #water.lua Ice Brick = Snow Brick = #wood.lua Willow Trunk = Willow Wood = Redwood Trunk = Redwood Wood = Frost Tree = Frost Wood = Healing Tree Trunk = Healing Tree Wood = Palm Trunk = Palm Wood = Banana Trunk = Banana Wood = Scorched Tree = Mushroom = Birch Trunk = Birch Wood = Bamboo = ethereal/lucky_block.lua000066400000000000000000000046321335420417000156570ustar00rootroot00000000000000 -- add lucky blocks if minetest.get_modpath("lucky_block") then local epath = minetest.get_modpath("ethereal") .. "/schematics/" lucky_block:add_schematics({ {"pinetree", ethereal.pinetree, {x = 3, y = 0, z = 3}}, {"palmtree", ethereal.palmtree, {x = 4, y = 0, z = 4}}, {"bananatree", ethereal.bananatree, {x = 3, y = 0, z = 3}}, {"orangetree", ethereal.orangetree, {x = 1, y = 0, z = 1}}, {"birchtree", ethereal.birchtree, {x = 2, y = 0, z = 2}}, }) lucky_block:add_blocks({ {"dro", {"ethereal:firethorn"}, 3}, {"dro", {"ethereal:firethorn_jelly"}, 3}, {"nod", "ethereal:crystal_spike", 1}, {"sch", "pinetree", 0, false}, {"dro", {"ethereal:orange"}, 10}, {"sch", "appletree", 0, false}, {"dro", {"ethereal:strawberry"}, 10}, {"sch", "bananatree", 0, false}, {"sch", "orangetree", 0, false}, {"dro", {"ethereal:banana"}, 10}, {"sch", "acaciatree", 0, false}, {"dro", {"ethereal:golden_apple"}, 3}, {"sch", "palmtree", 0, false}, {"dro", {"ethereal:tree_sapling"}, 5}, {"dro", {"ethereal:orange_tree_sapling"}, 5}, {"dro", {"ethereal:banana_tree_sapling"}, 5}, {"dro", {"ethereal:willow_sapling"} ,5}, {"dro", {"ethereal:mushroom_sapling"} ,5}, {"dro", {"ethereal:palm_sapling"} ,5}, {"dro", {"ethereal:birch_sapling"} ,5}, {"dro", {"ethereal:redwood_sapling"} ,1}, {"dro", {"ethereal:prairie_dirt"}, 10}, {"dro", {"ethereal:grove_dirt"}, 10}, {"fal", {"default:lava_source", "default:lava_source", "default:lava_source", "default:lava_source", "default:lava_source"}, 1, true, 4}, {"dro", {"ethereal:cold_dirt"}, 10}, {"dro", {"ethereal:mushroom_dirt"}, 10}, {"dro", {"ethereal:fiery_dirt"}, 10}, {"dro", {"ethereal:axe_crystal"}}, {"nod", "ethereal:fire_flower", 1}, {"dro", {"ethereal:sword_crystal"}}, {"dro", {"ethereal:pick_crystal"}}, {"sch", "birchtree", 0, false}, {"dro", {"ethereal:fish_raw"}}, {"dro", {"ethereal:shovel_crystal"}}, {"dro", {"ethereal:fishing_rod_baited"}}, {"exp"}, {"dro", {"ethereal:fire_dust"}, 2}, {"exp", 4}, {"dro", {"ethereal:crystal_gilly_staff"}}, {"dro", {"ethereal:light_staff"}}, }) if minetest.get_modpath("3d_armor") then lucky_block:add_blocks({ {"dro", {"3d_armor:helmet_crystal"}}, {"dro", {"3d_armor:chestplate_crystal"}}, {"dro", {"3d_armor:leggings_crystal"}}, {"dro", {"3d_armor:boots_crystal"}}, {"lig"}, }) end if minetest.get_modpath("shields") then lucky_block:add_blocks({ {"dro", {"shields:shield_crystal"}}, {"exp"}, }) end end -- END IF ethereal/mapgen.lua000066400000000000000000000746241335420417000146350ustar00rootroot00000000000000 -- clear default mapgen biomes, decorations and ores minetest.clear_registered_biomes() minetest.clear_registered_decorations() --minetest.clear_registered_ores() local path = minetest.get_modpath("ethereal") dofile(path .. "/ores.lua") path = path .. "/schematics/" local dpath = minetest.get_modpath("default") .. "/schematics/" -- tree schematics dofile(path .. "orange_tree.lua") dofile(path .. "banana_tree.lua") dofile(path .. "bamboo_tree.lua") dofile(path .. "birch_tree.lua") dofile(path .. "bush.lua") dofile(path .. "waterlily.lua") dofile(path .. "volcanom.lua") dofile(path .. "volcanol.lua") dofile(path .. "frosttrees.lua") dofile(path .. "palmtree.lua") dofile(path .. "pinetree.lua") dofile(path .. "yellowtree.lua") dofile(path .. "mushroomone.lua") dofile(path .. "willow.lua") dofile(path .. "bigtree.lua") dofile(path .. "redwood_tree.lua") dofile(path .. "vinetree.lua") dofile(path .. "igloo.lua") --= Biomes local add_biome = function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) if p ~= 1 then return end minetest.register_biome({ name = a, node_dust = b, node_top = c, depth_top = d, node_filler = e, depth_filler = f, node_stone = g, node_water_top = h, depth_water_top = i, node_water = j, node_river_water = k, y_min = l, y_max = m, heat_point = n, humidity_point = o, }) end add_biome("underground", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, -31000, -192, 50, 50, 1) add_biome("mountain", nil, "default:snow", 1, "default:snowblock", 2, nil, nil, nil, nil, nil, 140, 31000, 50, 50, 1) add_biome("desert", nil, "default:desert_sand", 1, "default:desert_sand", 3, "default:desert_stone", nil, nil, nil, nil, 3, 23, 35, 20, ethereal.desert) add_biome("desert_ocean", nil, "default:sand", 1, "default:sand", 2, "default:desert_stone", nil, nil, nil, nil, -192, 3, 35, 20, ethereal.desert) if ethereal.glacier == 1 then minetest.register_biome({ name = "glacier", node_dust = "default:snowblock", node_top = "default:snowblock", depth_top = 1, node_filler = "default:snowblock", depth_filler = 3, node_stone = "default:ice", node_water_top = "default:ice", depth_water_top = 10, --node_water = "", node_river_water = "default:ice", node_riverbed = "default:gravel", depth_riverbed = 2, y_min = -8, y_max = 31000, heat_point = 0, humidity_point = 50, }) minetest.register_biome({ name = "glacier_ocean", node_dust = "default:snowblock", node_top = "default:sand", depth_top = 1, node_filler = "default:sand", depth_filler = 3, --node_stone = "", --node_water_top = "", --depth_water_top = , --node_water = "", --node_river_water = "", y_min = -112, y_max = -9, heat_point = 0, humidity_point = 50, }) end add_biome("clearing", nil, "default:dirt_with_grass", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 3, 71, 45, 65, 1) -- ADDED add_biome("bamboo", nil, "ethereal:bamboo_dirt", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 3, 71, 45, 75, ethereal.bamboo) add_biome("bamboo_ocean", nil, "default:sand", 1, "default:sand", 2, nil, nil, nil, nil, nil, -192, 2, 45, 75, ethereal.bamboo) add_biome("mesa", nil, "default:dirt_with_dry_grass", 1, "bakedclay:orange", 15, nil, nil, nil, nil, nil, 1, 71, 25, 28, ethereal.mesa) add_biome("mesa_ocean", nil, "default:sand", 1, "default:sand", 2, nil, nil, nil, nil, nil, -192, 1, 25, 28, ethereal.mesa) add_biome("alpine", nil, "default:dirt_with_snow", 1, "default:dirt", 2, nil, nil, nil, nil, nil, 40, 140, 10, 40, ethereal.alpine) add_biome("snowy", nil, "ethereal:cold_dirt", 1, "default:dirt", 2, nil, nil, nil, nil, nil, 4, 40, 10, 40, ethereal.snowy) add_biome("frost", nil, "ethereal:crystal_dirt", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 1, 71, 10, 40, ethereal.frost) add_biome("frost_ocean", nil, "default:sand", 1, "default:sand", 2, nil, nil, nil, nil, nil, -192, 1, 10, 40, ethereal.frost) add_biome("grassy", nil, "default:dirt_with_grass", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 3, 91, 13, 40, ethereal.grassy) add_biome("grassy_ocean", nil, "defaut:sand", 2, "default:gravel", 1, nil, nil, nil, nil, nil, -31000, 3, 13, 40, ethereal.grassy) add_biome("caves", nil, "default:desert_stone", 3, "air", 8, nil, nil, nil, nil, nil, 4, 41, 15, 25, ethereal.caves) add_biome("grayness", nil, "ethereal:gray_dirt", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 2, 41, 15, 30, ethereal.grayness) if minetest.registered_nodes["default:silver_sand"] then add_biome("grayness_ocean", nil, "default:silver_sand", 2, "default:sand", 2, nil, nil, nil, nil, nil, -192, 1, 15, 30, ethereal.grayness) else add_biome("grayness_ocean", nil, "default:sand", 1, "default:sand", 2, nil, nil, nil, nil, nil, -192, 1, 15, 30, ethereal.grayness) end add_biome("grassytwo", nil, "default:dirt_with_grass", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 1, 91, 15, 40, ethereal.grassytwo) add_biome("grassytwo_ocean", nil, "default:sand", 1, "default:sand", 2, nil, nil, nil, nil, nil, -192, 1, 15, 40, ethereal.grassytwo) add_biome("prairie", nil, "ethereal:prairie_dirt", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 3, 26, 20, 40, ethereal.prairie) add_biome("prairie_ocean", nil, "default:sand", 1, "default:sand", 2, nil, nil, nil, nil, nil, -192, 1, 20, 40, ethereal.prairie) add_biome("jumble", nil, "default:dirt_with_grass", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 1, 71, 25, 50, ethereal.jumble) add_biome("jumble_ocean", nil, "default:sand", 1, "default:sand", 2, nil, nil, nil, nil, nil, -192, 1, 25, 50, ethereal.jumble) if minetest.registered_nodes["default:dirt_with_rainforest_litter"] then add_biome("junglee", nil, "default:dirt_with_rainforest_litter", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 1, 71, 30, 60, ethereal.junglee) else add_biome("junglee", nil, "ethereal:jungle_dirt", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 1, 71, 30, 60, ethereal.junglee) end add_biome("junglee_ocean", nil, "default:sand", 1, "default:sand", 2, nil, nil, nil, nil, nil, -192, 1, 30, 60, ethereal.junglee) add_biome("grove", nil, "ethereal:grove_dirt", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 3, 23, 45, 35, ethereal.grove) add_biome("grove_ocean", nil, "default:sand", 1, "default:sand", 2, nil, nil, nil, nil, nil, -192, 2, 45, 35, ethereal.grove) add_biome("mushroom", nil, "ethereal:mushroom_dirt", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 3, 50, 45, 55, ethereal.mushroom) add_biome("mushroom_ocean", nil, "default:sand", 1, "default:sand", 2, nil, nil, nil, nil, nil, -192, 2, 45, 55, ethereal.mushroom) add_biome("sandstone", nil, "default:sandstone", 1, "default:sandstone", 1, "default:sandstone", nil, nil, nil, nil, 3, 23, 50, 20, ethereal.sandstone) add_biome("sandstone_ocean", nil, "default:sand", 1, "default:sand", 2, nil, nil, nil, nil, nil, -192, 2, 50, 20, ethereal.sandstone) add_biome("quicksand", nil, "ethereal:quicksand2", 3, "default:gravel", 1, nil, nil, nil, nil, nil, 1, 1, 50, 38, ethereal.quicksand) add_biome("plains", nil, "ethereal:dry_dirt", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 3, 25, 65, 25, ethereal.plains) add_biome("plains_ocean", nil, "default:sand", 1, "default:sand", 2, nil, nil, nil, nil, nil, -192, 2, 55, 25, ethereal.plains) add_biome("savannah", nil, "default:dirt_with_dry_grass", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 3, 50, 55, 25, ethereal.savannah) add_biome("savannah_ocean", nil, "default:sand", 1, "default:sand", 2, nil, nil, nil, nil, nil, -192, 1, 55, 25, ethereal.savannah) add_biome("fiery", nil, "ethereal:fiery_dirt", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 5, 20, 75, 10, ethereal.fiery) add_biome("fiery_ocean", nil, "default:sand", 1, "default:sand", 2, nil, nil, nil, nil, nil, -192, 4, 75, 10, ethereal.fiery) add_biome("sandclay", nil, "default:sand", 3, "default:clay", 2, nil, nil, nil, nil, nil, 1, 11, 65, 2, ethereal.sandclay) add_biome("swamp", nil, "default:dirt_with_grass", 1, "default:dirt", 3, nil, nil, nil, nil, nil, 1, 7, 80, 90, ethereal.swamp) add_biome("swamp_ocean", nil, "default:sand", 2, "default:clay", 2, nil, nil, nil, nil, nil, -192, 1, 80, 90, ethereal.swamp) --= schematic decorations local add_schem = function(a, b, c, d, e, f, g) if g ~= 1 then return end minetest.register_decoration({ deco_type = "schematic", place_on = a, sidelen = 80, fill_ratio = b, biomes = c, y_min = d, y_max = e, schematic = f, flags = "place_center_x, place_center_z", }) end if ethereal.glacier then -- igloo minetest.register_decoration({ deco_type = "schematic", place_on = {"default:snowblock"}, sidelen = 80, fill_ratio = 0.001, biomes = {"glacier"}, y_min = 3, y_max = 50, schematic = ethereal.igloo, flags = "place_center_x, place_center_z", spawn_by = "default:snowblock", num_spawn_by = 8, rotation = "random", }) end -- redwood tree add_schem({"default:dirt_with_dry_grass"}, 0.0025, {"mesa"}, 1, 100, ethereal.redwood_tree, ethereal.mesa) -- banana tree add_schem({"ethereal:grove_dirt"}, 0.015, {"grove"}, 1, 100, ethereal.bananatree, ethereal.grove) -- healing tree add_schem({"default:dirt_with_snow"}, 0.01, {"alpine"}, 120, 140, ethereal.yellowtree, ethereal.alpine) -- crystal frost tree add_schem({"ethereal:crystal_dirt"}, 0.01, {"frost"}, 1, 100, ethereal.frosttrees, ethereal.frost) if ethereal.mushroom then -- giant shroom minetest.register_decoration({ deco_type = "schematic", place_on = {"ethereal:mushroom_dirt"}, sidelen = 80, fill_ratio = 0.02, biomes = {"mushroom"}, y_min = 1, y_max = 100, schematic = ethereal.mushroomone, flags = "place_center_x, place_center_z", spawn_by = "ethereal:mushroom_dirt", num_spawn_by = 6, }) end if ethereal.fiery then -- small lava crater minetest.register_decoration({ deco_type = "schematic", place_on = {"ethereal:fiery_dirt"}, sidelen = 80, fill_ratio = 0.01, biomes = {"fiery"}, y_min = 1, y_max = 100, schematic = ethereal.volcanom, flags = "place_center_x, place_center_z", spawn_by = "ethereal:fiery_dirt", num_spawn_by = 8, }) -- large lava crater minetest.register_decoration({ deco_type = "schematic", place_on = {"ethereal:fiery_dirt"}, sidelen = 80, fill_ratio = 0.003, biomes = {"fiery"}, y_min = 1, y_max = 100, schematic = ethereal.volcanol, flags = "place_center_x, place_center_z", spawn_by = "ethereal:fiery_dirt", num_spawn_by = 8, rotation = "random", }) end -- default jungle tree add_schem({"ethereal:jungle_dirt", "default:dirt_with_rainforest_litter"}, 0.08, {"junglee"}, 1, 100, dpath .. "jungle_tree.mts", ethereal.junglee) -- willow tree add_schem({"ethereal:gray_dirt"}, 0.02, {"grayness"}, 1, 100, ethereal.willow, ethereal.grayness) -- pine tree (default for lower elevation and ethereal for higher) add_schem({"ethereal:cold_dirt"}, 0.025, {"snowy"}, 10, 40, ethereal.pine_tree, ethereal.snowy) add_schem({"default:dirt_with_snow"}, 0.025, {"alpine"}, 40, 140, ethereal.pinetree, ethereal.alpine) -- default apple tree add_schem({"default:dirt_with_grass"}, 0.02, {"jumble"}, 1, 100, dpath .. "apple_tree.mts", ethereal.grassy) add_schem({"default:dirt_with_grass"}, 0.03, {"grassy"}, 1, 100, dpath .. "apple_tree.mts", ethereal.grassy) -- big old tree add_schem({"default:dirt_with_grass"}, 0.001, {"jumble"}, 1, 100, ethereal.bigtree, ethereal.jumble) -- aspen tree add_schem({"default:dirt_with_grass"}, 0.02, {"grassytwo"}, 1, 50, dpath .. "aspen_tree.mts", ethereal.jumble) -- birch tree add_schem({"default:dirt_with_grass"}, 0.02, {"grassytwo"}, 50, 100, ethereal.birchtree, ethereal.grassytwo) -- orange tree add_schem({"ethereal:prairie_dirt"}, 0.01, {"prairie"}, 1, 100, ethereal.orangetree, ethereal.prairie) -- default acacia tree add_schem({"default:dirt_with_dry_grass"}, 0.004, {"savannah"}, 1, 100, dpath .. "acacia_tree.mts", ethereal.savannah) -- large cactus (by Paramat) if ethereal.desert == 1 then minetest.register_decoration({ deco_type = "schematic", place_on = {"default:desert_sand"}, sidelen = 80, noise_params = { offset = -0.0005, scale = 0.0015, spread = {x = 200, y = 200, z = 200}, seed = 230, octaves = 3, persist = 0.6 }, biomes = {"desert"}, y_min = 5, y_max = 31000, schematic = dpath.."large_cactus.mts", flags = "place_center_x", --, place_center_z", rotation = "random", }) end -- palm tree add_schem({"default:sand"}, 0.0025, {"desert_ocean"}, 1, 1, ethereal.palmtree, ethereal.desert) add_schem({"default:sand"}, 0.0025, {"plains_ocean"}, 1, 1, ethereal.palmtree, ethereal.plains) add_schem({"default:sand"}, 0.0025, {"sandclay"}, 1, 1, ethereal.palmtree, ethereal.sandclay) add_schem({"default:sand"}, 0.0025, {"sandstone_ocean"}, 1, 1, ethereal.palmtree, ethereal.sandstone) add_schem({"default:sand"}, 0.0025, {"mesa_ocean"}, 1, 1, ethereal.palmtree, ethereal.mesa) add_schem({"default:sand"}, 0.0025, {"grove_ocean"}, 1, 1, ethereal.palmtree, ethereal.grove) add_schem({"default:sand"}, 0.0025, {"grassy_ocean"}, 1, 1, ethereal.palmtree, ethereal.grassy) -- bamboo tree add_schem({"ethereal:bamboo_dirt"}, 0.025, {"bamboo"}, 1, 100, ethereal.bambootree, ethereal.bamboo) -- bush add_schem({"ethereal:bamboo_dirt"}, 0.08, {"bamboo"}, 1, 100, ethereal.bush, ethereal.bamboo) -- vine tree add_schem({"default:dirt_with_grass"}, 0.02, {"swamp"}, 1, 100, ethereal.vinetree, ethereal.swamp) -- bush minetest.register_decoration({ deco_type = "schematic", place_on = {"default:dirt_with_grass", "default:dirt_with_snow"}, sidelen = 16, noise_params = { offset = -0.004, scale = 0.01, spread = {x = 100, y = 100, z = 100}, seed = 137, octaves = 3, persist = 0.7, }, biomes = {"grassy", "grassytwo", "jumble"}, y_min = 1, y_max = 31000, schematic = dpath .. "/bush.mts", flags = "place_center_x, place_center_z", }) -- Acacia bush minetest.register_decoration({ deco_type = "schematic", place_on = {"default:dirt_with_dry_grass"}, sidelen = 16, noise_params = { offset = -0.004, scale = 0.01, spread = {x = 100, y = 100, z = 100}, seed = 90155, octaves = 3, persist = 0.7, }, biomes = {"savannah", "mesa"}, y_min = 1, y_max = 31000, schematic = dpath .. "/acacia_bush.mts", flags = "place_center_x, place_center_z", }) --= simple decorations local add_node = function(a, b, c, d, e, f, g, h, i, j) if j ~= 1 then return end minetest.register_decoration({ deco_type = "simple", place_on = a, sidelen = 80, fill_ratio = b, biomes = c, y_min = d, y_max = e, decoration = f, height_max = g, spawn_by = h, num_spawn_by = i, }) end --firethorn shrub add_node({"default:snowblock"}, 0.001, {"glacier"}, 1, 30, {"ethereal:firethorn"}, nil, nil, nil, ethereal.glacier) -- scorched tree add_node({"ethereal:dry_dirt"}, 0.006, {"plains"}, 1, 100, {"ethereal:scorched_tree"}, 6, nil, nil, ethereal.plains) -- dry shrub add_node({"ethereal:dry_dirt"}, 0.015, {"plains"}, 1, 100, {"default:dry_shrub"}, nil, nil, nil, ethereal.plains) add_node({"default:sand"}, 0.015, {"grassy_ocean"}, 1, 100, {"default:dry_shrub"}, nil, nil, nil, ethereal.grassy) add_node({"default:desert_sand"}, 0.015, {"desert"}, 1, 100, {"default:dry_shrub"}, nil, nil, nil, ethereal.desert) add_node({"default:sandstone"}, 0.015, {"sandstone"}, 1, 100, {"default:dry_shrub"}, nil, nil, nil, ethereal.sandstone) add_node({"bakedclay:red", "bakedclay:orange"}, 0.015, {"mesa"}, 1, 100, {"default:dry_shrub"}, nil, nil, nil, ethereal.mesa) -- dry grass add_node({"default:dirt_with_dry_grass"}, 0.25, {"savannah"}, 1, 100, {"default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4", "default:dry_grass_5"}, nil, nil, nil, ethereal.savannah) add_node({"default:dirt_with_dry_grass"}, 0.10, {"mesa"}, 1, 100, {"default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4", "default:dry_grass_5"}, nil, nil, nil, ethereal.mesa) -- flowers & strawberry add_node({"default:dirt_with_grass"}, 0.025, {"grassy"}, 1, 100, {"flowers:dandelion_white", "flowers:dandelion_yellow", "flowers:geranium", "flowers:rose", "flowers:tulip", "flowers:viola", "ethereal:strawberry_7"}, nil, nil, nil, ethereal.grassy) add_node({"default:dirt_with_grass"}, 0.025, {"grassytwo"}, 1, 100, {"flowers:dandelion_white", "flowers:dandelion_yellow", "flowers:geranium", "flowers:rose", "flowers:tulip", "flowers:viola", "ethereal:strawberry_7"}, nil, nil, nil, ethereal.grassytwo) -- prairie flowers & strawberry add_node({"ethereal:prairie_dirt"}, 0.035, {"prairie"}, 1, 100, {"flowers:dandelion_white", "flowers:dandelion_yellow", "flowers:geranium", "flowers:rose", "flowers:tulip", "flowers:viola", "ethereal:strawberry_7"}, nil, nil, nil, ethereal.prairie) -- crystal spike & crystal grass add_node({"ethereal:crystal_dirt"}, 0.02, {"frost"}, 1, 100, {"ethereal:crystal_spike", "ethereal:crystalgrass"}, nil, nil, nil, ethereal.frost) -- red shrub add_node({"ethereal:fiery_dirt"}, 0.10, {"fiery"}, 1, 100, {"ethereal:dry_shrub"}, nil, nil, nil, ethereal.fiery) -- fire flower --add_node({"ethereal:fiery_dirt"}, 0.02, {"fiery"}, 1, 100, {"ethereal:fire_flower"}, nil, nil, nil, ethereal.fiery) -- snowy grass add_node({"ethereal:gray_dirt"}, 0.05, {"grayness"}, 1, 100, {"ethereal:snowygrass"}, nil, nil, nil, ethereal.grayness) add_node({"ethereal:cold_dirt"}, 0.05, {"snowy"}, 1, 100, {"ethereal:snowygrass"}, nil, nil, nil, ethereal.snowy) -- cactus add_node({"default:sandstone"}, 0.0025, {"sandstone"}, 1, 100, {"default:cactus"}, 3, nil, nil, ethereal.sandstone) add_node({"default:desert_sand"}, 0.005, {"desert"}, 1, 100, {"default:cactus"}, 4, nil, nil, ethereal.desert) -- wild red mushroom add_node({"ethereal:mushroom_dirt"}, 0.01, {"mushroom"}, 1, 100, {"flowers:mushroom_fertile_red"}, nil, nil, nil, ethereal.mushroom) local list = { {"junglee", {"ethereal:jungle_dirt", "default:dirt_with_rainforest_litter"}, ethereal.junglee}, {"grassy", {"default:dirt_with_grass"}, ethereal.grassy}, {"grassytwo", {"default:dirt_with_grass"}, ethereal.grassytwo}, {"prairie", {"ethereal:prairie_dirt"}, ethereal.prairie}, {"mushroom", {"ethereal:mushroom_dirt"}, ethereal.mushroom}, {"swamp", {"default:dirt_with_grass"}, ethereal.swamp}, } -- wild red and brown mushrooms for _, row in pairs(list) do if row[3] == 1 then minetest.register_decoration({ deco_type = "simple", place_on = row[2], sidelen = 16, noise_params = { offset = 0, scale = 0.009, spread = {x = 200, y = 200, z = 200}, seed = 2, octaves = 3, persist = 0.66 }, biomes = {row[1]}, y_min = 1, y_max = 120, decoration = {"flowers:mushroom_brown", "flowers:mushroom_red"}, }) end end -- jungle grass add_node({"ethereal:jungle_dirt", "default:dirt_with_rainforest_litter"}, 0.10, {"junglee"}, 1, 100, {"default:junglegrass"}, nil, nil, nil, ethereal.junglee) add_node({"default:dirt_with_grass"}, 0.15, {"jumble"}, 1, 100, {"default:junglegrass"}, nil, nil, nil, ethereal.jumble) add_node({"default:dirt_with_grass"}, 0.25, {"swamp"}, 1, 100, {"default:junglegrass"}, nil, nil, nil, ethereal.swamp) -- grass add_node({"default:dirt_with_grass"}, 0.35, {"grassy"}, 1, 100, {"default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5"}, nil, nil, nil, ethereal.grassy) add_node({"default:dirt_with_grass"}, 0.35, {"grassytwo"}, 1, 100, {"default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5"}, nil, nil, nil, ethereal.grassytwo) add_node({"default:dirt_with_grass"}, 0.35, {"jumble"}, 1, 100, {"default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5"}, nil, nil, nil, ethereal.jumble) add_node({"ethereal:jungle_dirt", "default:dirt_with_rainforest_litter"}, 0.35, {"junglee"}, 1, 100, {"default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5"}, nil, nil, nil, ethereal.junglee) add_node({"ethereal:prairie_dirt"}, 0.35, {"prairie"}, 1, 100, {"default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5"}, nil, nil, nil, ethereal.prairie) add_node({"ethereal:grove_dirt"}, 0.35, {"grove"}, 1, 100, {"default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5"}, nil, nil, nil, ethereal.grove) add_node({"ethereal:bamboo_dirt"}, 0.35, {"bamboo"}, 1, 100, {"default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5"}, nil, nil, nil, ethereal.bamboo) add_node({"default:dirt_with_grass"}, 0.35, {"clearing", "swamp"}, 1, 100, {"default:grass_3", "default:grass_4"}, nil, nil, nil, 1) -- grass on sand add_node({"default:sand"}, 0.25, {"sandclay"}, 3, 4, {"default:grass_2", "default:grass_3"}, nil, nil, nil, ethereal.sandclay) -- ferns add_node({"ethereal:grove_dirt"}, 0.2, {"grove"}, 1, 100, {"ethereal:fern"}, nil, nil, nil, ethereal.grove) add_node({"default:dirt_with_grass"}, 0.1, {"swamp"}, 1, 100, {"ethereal:fern"}, nil, nil, nil, ethereal.swamp) -- snow add_node({"ethereal:cold_dirt"}, 0.8, {"snowy"}, 4, 40, {"default:snow"}, nil, nil, nil, ethereal.snowy) add_node({"default:dirt_with_snow"}, 0.8, {"alpine"}, 40, 140, {"default:snow"}, nil, nil, nil, ethereal.alpine) -- wild onion add_node({"default:dirt_with_grass"}, 0.25, {"grassy"}, 1, 100, {"ethereal:onion_4"}, nil, nil, nil, ethereal.grassy) add_node({"default:dirt_with_grass"}, 0.25, {"grassytwo"}, 1, 100, {"ethereal:onion_4"}, nil, nil, nil, ethereal.grassytwo) add_node({"default:dirt_with_grass"}, 0.25, {"jumble"}, 1, 100, {"ethereal:onion_4"}, nil, nil, nil, ethereal.jumble) add_node({"ethereal:prairie_dirt"}, 0.25, {"prairie"}, 1, 100, {"ethereal:onion_4"}, nil, nil, nil, ethereal.prairie) -- papyrus add_node({"default:dirt_with_grass"}, 0.1, {"grassy"}, 1, 1, {"default:papyrus"}, 4, "default:water_source", 1, ethereal.grassy) add_node({"ethereal:jungle_dirt", "default:dirt_with_rainforest_litter"}, 0.1, {"junglee"}, 1, 1, {"default:papyrus"}, 4, "default:water_source", 1, ethereal.junglee) add_node({"default:dirt_with_grass"}, 0.1, {"swamp"}, 1, 1, {"default:papyrus"}, 4, "default:water_source", 1, ethereal.swamp) --= Farming Redo plants if farming and farming.mod and farming.mod == "redo" then print ("[MOD] Ethereal - Farming Redo detected and in use") -- potato add_node({"ethereal:jungle_dirt", "default:dirt_with_rainforest_litter"}, 0.035, {"junglee"}, 1, 100, {"farming:potato_3"}, nil, nil, nil, ethereal.junglee) -- carrot, cucumber, potato, tomato, corn, coffee, raspberry, rhubarb add_node({"default:dirt_with_grass"}, 0.05, {"grassytwo"}, 1, 100, {"farming:carrot_7", "farming:cucumber_4", "farming:potato_3", "farming:tomato_7", "farming:corn_8", "farming:coffee_5", "farming:raspberry_4", "farming:rhubarb_3", "farming:blueberry_4"}, nil, nil, nil, ethereal.grassytwo) add_node({"default:dirt_with_grass"}, 0.05, {"grassy"}, 1, 100, {"farming:carrot_7", "farming:cucumber_4", "farming:potato_3", "farming:tomato_7", "farming:corn_8", "farming:coffee_5", "farming:raspberry_4", "farming:rhubarb_3", "farming:blueberry_4", "farming:beetroot_5"}, nil, nil, nil, ethereal.grassy) add_node({"default:dirt_with_grass"}, 0.05, {"jumble"}, 1, 100, {"farming:carrot_7", "farming:cucumber_4", "farming:potato_3", "farming:tomato_7", "farming:corn_8", "farming:coffee_5", "farming:raspberry_4", "farming:rhubarb_3", "farming:blueberry_4"}, nil, nil, nil, ethereal.jumble) add_node({"ethereal:prairie_dirt"}, 0.05, {"prairie"}, 1, 100, {"farming:carrot_7", "farming:cucumber_4", "farming:potato_3", "farming:tomato_7", "farming:corn_8", "farming:coffee_5", "farming:raspberry_4", "farming:rhubarb_3", "farming:blueberry_4", "farming:pea_5", "farming:beetroot_5"}, nil, nil, nil, ethereal.prairie) -- melon and pumpkin add_node({"ethereal:jungle_dirt", "default:dirt_with_rainforest_litter"}, 0.015, {"junglee"}, 1, 1, {"farming:melon_8", "farming:pumpkin_8"}, nil, "default:water_source", 1, ethereal.junglee) add_node({"default:dirt_with_grass"}, 0.015, {"grassy"}, 1, 1, {"farming:melon_8", "farming:pumpkin_8"}, nil, "default:water_source", 1, ethereal.grassy) add_node({"default:dirt_with_grass"}, 0.015, {"grassytwo"}, 1, 1, {"farming:melon_8", "farming:pumpkin_8"}, nil, "default:water_source", 1, ethereal.grassytwo) add_node({"default:dirt_with_grass"}, 0.015, {"jumble"}, 1, 1, {"farming:melon_8", "farming:pumpkin_8"}, nil, "default:water_source", 1, ethereal.jumble) -- green beans add_node({"default:dirt_with_grass"}, 0.035, {"grassytwo"}, 1, 100, {"farming:beanbush"}, nil, nil, nil, ethereal.grassytwo) -- grape bushel add_node({"default:dirt_with_grass"}, 0.025, {"grassytwo"}, 1, 100, {"farming:grapebush"}, nil, nil, nil, ethereal.grassytwo) add_node({"default:dirt_with_grass"}, 0.025, {"grassy"}, 1, 100, {"farming:grapebush"}, nil, nil, nil, ethereal.grassy) add_node({"ethereal:prairie_dirt"}, 0.025, {"prairie"}, 1, 100, {"farming:grapebush"}, nil, nil, nil, ethereal.prairie) minetest.register_decoration({ deco_type = "simple", place_on = { "default:dirt_with_grass", "ethereal:prairie_dirt", "default:dirt_with_rainforest_litter", }, sidelen = 16, noise_params = { offset = 0, scale = 0.06, spread = {x = 100, y = 100, z = 100}, seed = 420, octaves = 3, persist = 0.6 }, y_min = 5, y_max = 35, decoration = "farming:hemp_7", spawn_by = "group:tree", num_spawn_by = 1, }) minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "default:dirt_with_rainforest_litter"}, sidelen = 16, noise_params = { offset = 0, scale = 0.09, spread = {x = 100, y = 100, z = 100}, seed = 760, octaves = 3, persist = 0.6 }, y_min = 5, y_max = 35, decoration = {"farming:chili_8", "farming:garlic_5", "farming:pepper_5", "farming:onion_5"}, spawn_by = "group:tree", num_spawn_by = 1, }) minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_dry_grass"}, sidelen = 16, noise_params = { offset = 0, scale = 0.06, spread = {x = 100, y = 100, z = 100}, seed = 917, octaves = 3, persist = 0.6 }, y_min = 18, y_max = 30, decoration = {"farming:pineapple_8"}, }) end -- place waterlily in beach areas local list = { {"desert_ocean", ethereal.desert}, {"plains_ocean", ethereal.plains}, {"sandclay", ethereal.sandclay}, {"sandstone_ocean", ethereal.sandstone}, {"mesa_ocean", ethereal.mesa}, {"grove_ocean", ethereal.grove}, {"grassy_ocean", ethereal.grassy}, {"swamp_ocean", ethereal.swamp}, } for _, row in pairs(list) do if row[2] == 1 then minetest.register_decoration({ deco_type = "schematic", place_on = {"default:sand"}, sidelen = 16, noise_params = { offset = -0.12, scale = 0.3, spread = {x = 200, y = 200, z = 200}, seed = 33, octaves = 3, persist = 0.7 }, biomes = {row[1]}, y_min = 0, y_max = 0, schematic = ethereal.waterlily, rotation = "random", }) end end local random = math.random -- Generate Illumishroom in caves next to coal minetest.register_on_generated(function(minp, maxp) if minp.y > -30 or maxp.y < -3000 then return end local bpos local coal = minetest.find_nodes_in_area_under_air( minp, maxp, "default:stone_with_coal") for n = 1, #coal do if random(1, 2) == 1 then bpos = {x = coal[n].x, y = coal[n].y + 1, z = coal[n].z } if bpos.y > -3000 and bpos.y < -2000 then minetest.swap_node(bpos, {name = "ethereal:illumishroom3"}) elseif bpos.y > -2000 and bpos.y < -1000 then minetest.swap_node(bpos, {name = "ethereal:illumishroom2"}) elseif bpos.y > -1000 and bpos.y < -30 then minetest.swap_node(bpos, {name = "ethereal:illumishroom"}) end end end end) -- coral reef (0.4.15 only) if ethereal.reefs == 1 then -- override corals so crystal shovel can pick them up intact minetest.override_item("default:coral_skeleton", {groups = {crumbly = 3}}) minetest.override_item("default:coral_orange", {groups = {crumbly = 3}}) minetest.override_item("default:coral_brown", {groups = {crumbly = 3}}) minetest.register_decoration({ deco_type = "schematic", place_on = {"default:sand"}, noise_params = { offset = -0.15, scale = 0.1, spread = {x = 100, y = 100, z = 100}, seed = 7013, octaves = 3, persist = 1, }, biomes = { "desert_ocean", "grove_ocean", }, y_min = -8, y_max = -2, schematic = dpath .. "corals.mts", flags = "place_center_x, place_center_z", rotation = "random", }) end -- is baked clay mod active? add new flowers if so if minetest.get_modpath("bakedclay") then minetest.register_decoration({ deco_type = "simple", place_on = { "ethereal:prairie_grass", "default:dirt_with_grass", "ethereal:grove_dirt" }, sidelen = 16, noise_params = { offset = 0, scale = 0.004, spread = {x = 100, y = 100, z = 100}, seed = 7133, octaves = 3, persist = 0.6 }, y_min = 10, y_max = 90, decoration = "bakedclay:delphinium", }) minetest.register_decoration({ deco_type = "simple", place_on = { "ethereal:prairie_grass", "default:dirt_with_grass", "ethereal:grove_dirt", "ethereal:bamboo_dirt" }, sidelen = 16, noise_params = { offset = 0, scale = 0.004, spread = {x = 100, y = 100, z = 100}, seed = 7134, octaves = 3, persist = 0.6 }, y_min = 15, y_max = 90, decoration = "bakedclay:thistle", }) minetest.register_decoration({ deco_type = "simple", place_on = {"ethereal:jungle_dirt", "default:dirt_with_rainforest_litter"}, sidelen = 16, noise_params = { offset = 0, scale = 0.01, spread = {x = 100, y = 100, z = 100}, seed = 7135, octaves = 3, persist = 0.6 }, y_min = 1, y_max = 90, decoration = "bakedclay:lazarus", spawn_by = "default:jungletree", num_spawn_by = 1, }) minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "default:sand"}, sidelen = 16, noise_params = { offset = 0, scale = 0.009, spread = {x = 100, y = 100, z = 100}, seed = 7136, octaves = 3, persist = 0.6 }, y_min = 1, y_max = 15, decoration = "bakedclay:mannagrass", spawn_by = "group:water", num_spawn_by = 1, }) end if ethereal.desert and minetest.get_modpath("wine") then minetest.register_decoration({ deco_type = "simple", place_on = {"default:desert_sand"}, sidelen = 16, fill_ratio = 0.001, biomes = {"desert"}, decoration = {"wine:blue_agave"}, }) end ethereal/mod.conf000066400000000000000000000000171335420417000142720ustar00rootroot00000000000000name = etherealethereal/mushroom.lua000066400000000000000000000012161335420417000152220ustar00rootroot00000000000000 local S = ethereal.intllib -- mushroom soup (Heals 1 heart) minetest.register_craftitem("ethereal:mushroom_soup", { description = S("Mushroom Soup"), inventory_image = "mushroom_soup.png", on_use = minetest.item_eat(5, "ethereal:bowl"), }) minetest.register_craft({ output = "ethereal:mushroom_soup", recipe = { {"flowers:mushroom_brown"}, {"flowers:mushroom_brown"}, {"group:food_bowl"}, } }) -- 4x red mushrooms make mushroom block minetest.register_craft({ output = "ethereal:mushroom", recipe = { {"flowers:mushroom_red", "flowers:mushroom_red"}, {"flowers:mushroom_red", "flowers:mushroom_red"}, } })ethereal/onion.lua000066400000000000000000000052661335420417000145040ustar00rootroot00000000000000 local S = ethereal.intllib -- wild onion minetest.register_craftitem("ethereal:wild_onion_plant", { description = S("Wild Onion"), inventory_image = "wild_onion.png", wield_image = "wild_onion.png", groups = {food_onion = 1, flammable = 2}, on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "ethereal:wild_onion_1") end, on_use = minetest.item_eat(2), }) -- Define Onion growth stages local crop_def = { drawtype = "plantlike", tiles = {"ethereal_wild_onion_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, -5/16, 0.5} }, groups = { snappy = 3, 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("ethereal:onion_1", table.copy(crop_def)) --stage 2 crop_def.tiles = {"ethereal_wild_onion_2.png"} minetest.register_node("ethereal:onion_2", table.copy(crop_def)) --stage 3 crop_def.tiles = {"ethereal_wild_onion_3.png"} minetest.register_node("ethereal:onion_3", table.copy(crop_def)) --stage 4 crop_def.tiles = {"ethereal_wild_onion_4.png"} crop_def.drop = { items = { {items = {"ethereal:wild_onion_plant"}, rarity = 1}, {items = {"ethereal:wild_onion_plant 2"}, rarity = 3}, } } minetest.register_node("ethereal:onion_4", table.copy(crop_def)) --stage 5 crop_def.tiles = {"ethereal_wild_onion_5.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { {items = {"ethereal:wild_onion_plant 2"}, rarity = 1}, {items = {"ethereal:wild_onion_plant 3"}, rarity = 2}, } } minetest.register_node("ethereal:onion_5", table.copy(crop_def)) -- growing routine if farming redo isn't present if not farming or not farming.mod or farming.mod ~= "redo" then minetest.register_abm({ label = "Ethereal grow onion", nodenames = {"ethereal:onion_1", "ethereal:onion_2", "ethereal:onion_3", "ethereal:onion_4"}, neighbors = {"farming:soil_wet"}, interval = 9, chance = 20, catch_up = false, action = function(pos, node) -- are we on wet soil? pos.y = pos.y - 1 if minetest.get_item_group(minetest.get_node(pos).name, "soil") < 3 then return end pos.y = pos.y + 1 -- do we have enough light? local light = minetest.get_node_light(pos) if not light or light < 13 then return end -- grow to next stage local num = node.name:split("_")[2] node.name = "ethereal:onion_" .. tonumber(num + 1) minetest.swap_node(pos, node) end }) end -- END IF ethereal/ores.lua000066400000000000000000000036631335420417000143310ustar00rootroot00000000000000 -- Baked Clay minetest.register_ore({ ore_type = "blob", ore = "bakedclay:red", wherein = {"bakedclay:orange"}, clust_scarcity = 4 * 4 * 4, clust_num_ores = 8, clust_size = 6, y_min = -10, y_max = 71, noise_params = { offset = 0.35, scale = 0.2, spread = {x = 5, y = 5, z = 5}, seed = -316, octaves = 1, persist = 0.5 }, }) minetest.register_ore({ ore_type = "blob", ore = "bakedclay:grey", wherein = {"bakedclay:orange"}, clust_scarcity = 4 * 4 * 4, clust_num_ores = 8, clust_size = 6, y_min = -10, y_max = 71, noise_params = { offset = 0.35, scale = 0.2, spread = {x = 5, y = 5, z = 5}, seed = -613, octaves = 1, persist = 0.5 }, }) local add_ore = function(a, b, c, d, e, f, g) minetest.register_ore({ ore_type = "scatter", ore = a, wherein = b, clust_scarcity = c, clust_num_ores = d, clust_size = e, y_min = f, y_max = g, }) end -- Coal add_ore("default:stone_with_coal", "default:desert_stone", 24*24*24, 27, 6, -31000, -16) -- Iron add_ore("default:stone_with_iron", "default:desert_stone", 9*9*9, 5, 3, -63, -16) add_ore("default:stone_with_iron", "default:desert_stone", 24*24*24, 27, 6, -31000, -64) --Mese add_ore("default:stone_with_mese", "default:desert_stone", 14*14*14, 5, 3, -31000, -256) -- Gold add_ore("default:stone_with_gold", "default:desert_stone", 15*15*15, 3, 2, -255, -64) add_ore("default:stone_with_gold", "default:desert_stone", 13*13*13, 5, 3, -31000, -256) -- Diamond add_ore("default:stone_with_diamond", "default:desert_stone", 17*17*17, 4, 3, -255, -128) add_ore("default:stone_with_diamond", "default:desert_stone", 15*15*15, 4, 3, -31000, -256) -- Copper add_ore("default:stone_with_copper", "default:desert_stone", 9*9*9, 5, 3, -31000, -64) -- Coral Sand add_ore("ethereal:sandy", "default:sand", 10*10*10, 24, 4, -100, -10) ethereal/plantlife.lua000066400000000000000000000207501335420417000153330ustar00rootroot00000000000000 local S = ethereal.intllib -- Firethorn (poisonous when eaten raw, must be crushed and washed in flowing water 1st) minetest.register_node("ethereal:firethorn", { description = S("Firethorn Shrub"), drawtype = "plantlike", tiles = {"ethereal_firethorn.png"}, inventory_image = "ethereal_firethorn.png", wield_image = "ethereal_firethorn.png", paramtype = "light", sunlight_propagates = true, waving = 1, walkable = false, buildable_to = true, groups = {snappy = 3, flora = 1, attached_node = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 4 / 16, 5 / 16}, }, }) -- Fire Flower minetest.register_node("ethereal:fire_flower", { description = S("Fire Flower"), drawtype = "plantlike", tiles = { "ethereal_fire_flower.png" }, inventory_image = "ethereal_fire_flower.png", wield_image = "ethereal_fire_flower.png", paramtype = "light", light_source = 5, sunlight_propagates = true, walkable = false, buildable_to = true, damage_per_second = 2, groups = {snappy = 1, oddly_breakable_by_hand = 3, igniter = 2}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 1 / 2, 5 / 16}, }, on_punch = function(pos, node, puncher) puncher:punch(puncher, 1.0, { full_punch_interval = 1.0, damage_groups = {fleshy = 2} }, nil) end, }) minetest.register_craft({ type = "fuel", recipe = "ethereal:fire_flower", burntime = 20, }) -- Fire Dust minetest.register_craftitem("ethereal:fire_dust", { description = S("Fire Dust"), inventory_image = "fire_dust.png", }) minetest.register_craft({ output = "ethereal:fire_dust 2", recipe = { {'ethereal:fire_flower'}, } }) minetest.register_craft({ type = "fuel", recipe = "ethereal:fire_dust", burntime = 10, }) -- vines minetest.register_node("ethereal:vine", { description = S("Vine"), drawtype = "signlike", tiles = {"vine.png"}, inventory_image = "vine.png", wield_image = "vine.png", paramtype = "light", paramtype2 = "wallmounted", walkable = false, climbable = true, is_ground_content = false, selection_box = { type = "wallmounted", }, groups = {choppy = 3, oddly_breakable_by_hand = 1, flammable = 2}, legacy_wallmounted = true, sounds = default.node_sound_leaves_defaults(), }) minetest.register_craft({ output = "ethereal:vine 2", recipe = { {"group:leaves", "", "group:leaves"}, {"", "group:leaves", ""}, {"group:leaves", "", "group:leaves"}, } }) -- light strings (glowing vine) minetest.register_node("ethereal:lightstring", { description = S("Light String Vine"), drawtype = "signlike", tiles = {"lightstring.png"}, inventory_image = "lightstring.png", wield_image = "lightstring.png", paramtype = "light", paramtype2 = "wallmounted", light_source = 10, walkable = false, climbable = true, is_ground_content = false, selection_box = { type = "wallmounted", }, groups = {choppy = 3, oddly_breakable_by_hand = 1, flammable = 2}, legacy_wallmounted = true, sounds = default.node_sound_leaves_defaults(), }) minetest.register_craft({ output = "ethereal:lightstring 8", recipe = { {"ethereal:vine", "ethereal:vine", "ethereal:vine"}, {"ethereal:vine", "ethereal:fire_dust", "ethereal:vine"}, {"ethereal:vine", "ethereal:vine", "ethereal:vine"}, }, }) -- Fern (boston) minetest.register_node("ethereal:fern", { description = S("Fern"), drawtype = "plantlike", visual_scale = 1.4, tiles = {"fern.png"}, inventory_image = "fern.png", wield_image = "fern.png", paramtype = "light", sunlight_propagates = true, waving = 1, walkable = false, buildable_to = true, drop = { max_items = 1, items = { {items = {"ethereal:fern_tubers"}, rarity = 6}, {items = {"ethereal:fern"}} } }, groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 2}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 0.67, 5 / 16}, }, }) -- Boston Ferns sometimes drop edible Tubers (heals 1/2 heart when eaten) minetest.register_craftitem("ethereal:fern_tubers", { description = S("Fern Tubers"), inventory_image = "fern_tubers.png", groups = {food_tuber = 1, flammable = 2}, on_use = minetest.item_eat(1), }) -- Red Shrub (not flammable) minetest.register_node("ethereal:dry_shrub", { description = S("Fiery Dry Shrub"), drawtype = "plantlike", tiles = {"ethereal_dry_shrub.png"}, inventory_image = "ethereal_dry_shrub.png", wield_image = "ethereal_dry_shrub.png", paramtype = "light", sunlight_propagates = true, waving = 1, walkable = false, buildable_to = true, groups = {snappy = 3, flora = 1, attached_node = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 4 / 16, 5 / 16}, }, }) -- Grey Shrub (not Flammable - too cold to burn) minetest.register_node("ethereal:snowygrass", { description = S("Snowy Grass"), drawtype = "plantlike", visual_scale = 0.9, tiles = {"ethereal_snowygrass.png"}, inventory_image = "ethereal_snowygrass.png", wield_image = "ethereal_snowygrass.png", paramtype = "light", sunlight_propagates = true, waving = 1, walkable = false, buildable_to = true, groups = {snappy = 3, flora = 1, attached_node = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 5 / 16, 5 / 16}, }, }) -- Crystal Shrub (not Flammable - too cold to burn) minetest.register_node("ethereal:crystalgrass", { description = S("Crystal Grass"), drawtype = "plantlike", visual_scale = 0.9, tiles = {"ethereal_crystalgrass.png"}, inventory_image = "ethereal_crystalgrass.png", wield_image = "ethereal_crystalgrass.png", paramtype = "light", sunlight_propagates = true, waving = 1, walkable = false, buildable_to = true, groups = {snappy = 3, flora = 1, attached_node = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 5 / 16, 5 / 16}, }, }) -- Define Moss Types (Has grass textures on all sides) local add_moss = function(typ, descr, texture, receipe_item) minetest.register_node("ethereal:" .. typ .. "_moss", { description = S(descr .. " Moss"), tiles = {texture}, groups = {crumbly = 3}, sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.4}}) }) minetest.register_craft({ type = "shapeless", output = "ethereal:"..typ.."_moss", recipe = {"default:dirt", receipe_item } }) end add_moss( "crystal", "Crystal", "ethereal_grass_crystal_top.png", "ethereal:frost_leaves") add_moss( "mushroom", "Mushroom", "ethereal_grass_mushroom_top.png", "ethereal:mushroom") add_moss( "fiery", "Fiery", "ethereal_grass_fiery_top.png", "ethereal:dry_shrub") add_moss( "gray", "Gray", "ethereal_grass_gray_top.png", "ethereal:snowygrass") add_moss( "green", "Green", "default_grass.png", "default:jungleleaves") -- Illuminated Cave Shrooms (Red, Green and Blue) minetest.register_node("ethereal:illumishroom", { description = S("Red Illumishroom"), drawtype = "plantlike", tiles = { "illumishroom.png" }, inventory_image = "illumishroom.png", wield_image = "illumishroom.png", paramtype = "light", light_source = 5, sunlight_propagates = true, walkable = false, groups = {dig_immediate = 3, attached_node = 1, flammable = 3}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.47, 6 / 16}, }, }) minetest.register_node("ethereal:illumishroom2", { description = S("Green Illumishroom"), drawtype = "plantlike", tiles = { "illumishroom2.png" }, inventory_image = "illumishroom2.png", wield_image = "illumishroom2.png", paramtype = "light", light_source = 5, sunlight_propagates = true, walkable = false, groups = {dig_immediate = 3, attached_node = 1, flammable = 3}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.47, 6 / 16}, }, }) minetest.register_node("ethereal:illumishroom3", { description = S("Cyan Illumishroom"), drawtype = "plantlike", tiles = { "illumishroom3.png" }, inventory_image = "illumishroom3.png", wield_image = "illumishroom3.png", paramtype = "light", light_source = 5, sunlight_propagates = true, walkable = false, groups = {dig_immediate = 3, attached_node = 1, flammable = 3}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.47, 6 / 16}, }, }) ethereal/plantpack.lua000066400000000000000000000114041335420417000153260ustar00rootroot00000000000000 --= Register Biome Decoration Using Plants Mega Pack Lite --= Desert Biome -- Cactus minetest.register_decoration({ deco_type = "simple", place_on = {"default:desert_sand", "default:sandstone"}, sidelen = 16, fill_ratio = 0.005, biomes = {"desert", "sandstone"}, decoration = { "xanadu:cactus_echinocereus", "xanadu:cactus_matucana", "xanadu:cactus_baseball", "xanadu:cactus_golden" }, }) -- Desert Plants minetest.register_decoration({ deco_type = "simple", place_on = {"default:desert_sand", "default:sandstone", "default:sand"}, sidelen = 16, fill_ratio = 0.004, biomes = {"desert", "sandstone"}, decoration = { "xanadu:desert_kangaroo", "xanadu:desert_brittle", "xanadu:desert_ocotillo", "xanadu:desert_whitesage" }, }) --= Prairie Biome -- Grass minetest.register_decoration({ deco_type = "simple", place_on = {"ethereal:prairie_dirt", "default:dirt_with_grass"}, sidelen = 16, fill_ratio = 0.005, biomes = {"prairie", "grassy", "grassytwo"}, decoration = { "xanadu:grass_prairie", "xanadu:grass_cord", "xanadu:grass_wheatgrass", "xanadu:desert_whitesage" }, }) -- Flowers minetest.register_decoration({ deco_type = "simple", place_on = { "ethereal:prairie_grass", "default:dirt_with_grass", "ethereal:grove_dirt", "ethereal:bamboo_dirt" }, sidelen = 16, fill_ratio = 0.005, biomes = {"prairie", "grassy", "grassytwo", "bamboo"}, decoration = { "xanadu:flower_jacobsladder", "xanadu:flower_thistle", "xanadu:flower_wildcarrot" }, }) minetest.register_decoration({ deco_type = "simple", place_on = { "ethereal:prairie_grass", "default:dirt_with_grass", "ethereal:grove_dirt" }, sidelen = 16, fill_ratio = 0.005, biomes = {"prairie", "grassy", "grassytwo", "grove"}, decoration = { "xanadu:flower_delphinium", "xanadu:flower_celosia", "xanadu:flower_daisy", "xanadu:flower_bluerose" }, }) -- Shrubs minetest.register_decoration({ deco_type = "simple", place_on = { "ethereal:prairie_grass", "default:dirt_with_grass", "ethereal:grove_dirt", "ethereal:jungle_grass", "ethereal:gray_dirt", "default:dirt_with_rainforest_litter" }, sidelen = 16, fill_ratio = 0.005, biomes = { "prairie", "grassy", "grassytwo", "grove", "junglee", "grayness", "jumble" }, decoration = {"xanadu:shrub_kerria", "xanadu:shrub_spicebush"}, }) --= Jungle Biome minetest.register_decoration({ deco_type = "simple", place_on = {"ethereal:jungle_dirt", "default:dirt_with_grass", "default:dirt_with_rainforest_litter"}, sidelen = 16, fill_ratio = 0.007, biomes = {"junglee", "jumble"}, decoration = { "xanadu:rainforest_guzmania", "xanadu:rainforest_devil", "xanadu:rainforest_lazarus", "xanadu:rainforest_lollipop", "xanadu:mushroom_woolly" }, }) --= Cold Biomes minetest.register_decoration({ deco_type = "simple", place_on = { "default:dirt_with_snow", "ethereal:cold_dirt", "ethereal:gray_dirt" }, sidelen = 16, fill_ratio = 0.005, biomes = {"snowy", "alpine", "grayness"}, decoration = { "xanadu:mountain_edelweiss", "xanadu:mountain_armeria", "xanadu:mountain_bellflower", "xanadu:mountain_willowherb", "xanadu:mountain_bistort" }, }) --= Mushroom Biome minetest.register_decoration({ deco_type = "simple", place_on = {"ethereal:mushroom_dirt"}, sidelen = 16, fill_ratio = 0.005, biomes = {"mushroom"}, decoration = { "xanadu:mushroom_powderpuff", "xanadu:mushroom_chanterelle", "xanadu:mushroom_parasol" }, }) --= Lakeside minetest.register_decoration({ deco_type = "simple", place_on = {"default:sand", "default:dirt_with_grass"}, sidelen = 16, fill_ratio = 0.015, biomes = {"sandclay", "grassy_ocean", "grassy", "grassytwo", "jumble", "swamp"}, decoration = { "xanadu:wetlands_cattails", "xanadu:wetlands_pickerel", "xanadu:wetlands_mannagrass", "xanadu:wetlands_turtle" }, spawn_by = "default:water_source", num_spawn_by = 1, }) --= Harsh Biomes minetest.register_decoration({ deco_type = "simple", place_on = { "ethereal:mushroom_dirt", "default:dirt_with_grass", "ethereal:gray_dirt", "ethereal:cold_dirt", "ethereal:dirt_with_snow", "ethereal:jungle_dirt", "ethereal:prairie_dirt", "ethereal:grove_dirt", "ethereal:dry_dirt", "ethereal:fiery_dirt", "default:sand", "default:desert_sand", "xanadu:red", "ethereal:bamboo_dirt", "default:dirt_with_rainforest_litter" }, sidelen = 16, fill_ratio = 0.004, biomes = { "mushroom", "prairie", "grayness", "plains", "desert", "junglee", "grassy", "grassytwo", "jumble", "snowy", "alpine", "fiery", "mesa", "bamboo" }, decoration = {"xanadu:spooky_thornbush", "xanadu:spooky_baneberry"}, }) --= Poppy's growing in Clearing Biome in memory of RealBadAngel minetest.register_decoration({ deco_type = "simple", place_on = { "default:dirt_with_grass", }, sidelen = 16, fill_ratio = 0.004, biomes = {"clearing"}, decoration = {"xanadu:poppy"}, }) ethereal/sapling.lua000066400000000000000000000136251335420417000150150ustar00rootroot00000000000000 local S = ethereal.intllib -- Bamboo Sprout minetest.register_node("ethereal:bamboo_sprout", { description = S("Bamboo Sprout"), drawtype = "plantlike", tiles = {"bamboo_sprout.png"}, inventory_image = "bamboo_sprout.png", wield_image = "bamboo_sprout.png", paramtype = "light", sunlight_propagates = true, walkable = false, groups = { food_bamboo_sprout = 1, snappy = 3, attached_node = 1, flammable = 2, dig_immediate = 3, ethereal_sapling = 1, sapling = 1, }, sounds = default.node_sound_defaults(), selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 0, 4 / 16} }, on_use = minetest.item_eat(2), grown_height = 11, }) -- Register Saplings local register_sapling = function(name, desc, texture, height) minetest.register_node(name .. "_sapling", { description = S(desc .. " Tree Sapling"), drawtype = "plantlike", tiles = {texture .. ".png"}, inventory_image = texture .. ".png", wield_image = texture .. ".png", paramtype = "light", sunlight_propagates = true, is_ground_content = false, walkable = false, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} }, groups = { snappy = 2, dig_immediate = 3, flammable = 2, ethereal_sapling = 1, attached_node = 1, sapling = 1 }, sounds = default.node_sound_leaves_defaults(), grown_height = height, }) end register_sapling("ethereal:willow", "Willow", "willow_sapling", 14) register_sapling("ethereal:yellow_tree", "Healing", "yellow_tree_sapling", 19) register_sapling("ethereal:big_tree", "Big", "ethereal_big_tree_sapling", 7) register_sapling("ethereal:banana_tree", "Banana", "banana_tree_sapling", 8) register_sapling("ethereal:frost_tree", "Frost", "ethereal_frost_tree_sapling", 19) register_sapling("ethereal:mushroom", "Mushroom", "ethereal_mushroom_sapling", 11) register_sapling("ethereal:palm", "Palm", "moretrees_palm_sapling", 9) register_sapling("ethereal:redwood", "Redwood", "redwood_sapling", 31) register_sapling("ethereal:orange_tree", "Orange", "orange_tree_sapling", 6) register_sapling("ethereal:birch", "Birch", "moretrees_birch_sapling", 7) local add_tree = function (pos, ofx, ofy, ofz, schem) -- check for schematic if not schem then print (S("Schematic not found")) return end -- remove sapling and place schematic minetest.swap_node(pos, {name = "air"}) minetest.place_schematic( {x = pos.x - ofx, y = pos.y - ofy, z = pos.z - ofz}, schem, 0, nil, false) end local path = minetest.get_modpath("ethereal") .. "/schematics/" -- grow tree functions function ethereal.grow_yellow_tree(pos) add_tree(pos, 4, 0, 4, ethereal.yellowtree) end function ethereal.grow_big_tree(pos) add_tree(pos, 4, 0, 4, ethereal.bigtree) end function ethereal.grow_banana_tree(pos) add_tree(pos, 3, 0, 3, ethereal.bananatree) end function ethereal.grow_frost_tree(pos) add_tree(pos, 4, 0, 4, ethereal.frosttrees) end function ethereal.grow_mushroom_tree(pos) add_tree(pos, 4, 0, 4, ethereal.mushroomone) end function ethereal.grow_palm_tree(pos) add_tree(pos, 4, 0, 4, ethereal.palmtree) end function ethereal.grow_willow_tree(pos) add_tree(pos, 5, 0, 5, ethereal.willow) end function ethereal.grow_redwood_tree(pos) add_tree(pos, 7, 0, 7, ethereal.redwood_tree) end function ethereal.grow_orange_tree(pos) add_tree(pos, 1, 0, 1, ethereal.orangetree) end function ethereal.grow_bamboo_tree(pos) add_tree(pos, 1, 0, 1, ethereal.bambootree) end function ethereal.grow_birch_tree(pos) add_tree(pos, 2, 0, 2, ethereal.birchtree) end -- check if sapling has enough height room to grow local enough_height = function(pos, height) local nod = minetest.line_of_sight( {x = pos.x, y = pos.y + 1, z = pos.z}, {x = pos.x, y = pos.y + height, z = pos.z}) if not nod then return false -- obstructed else return true -- can grow end end local grow_sapling = function(pos, node) local under = minetest.get_node({ x = pos.x, y = pos.y - 1, z = pos.z }).name if not minetest.registered_nodes[node.name] then return end local height = minetest.registered_nodes[node.name].grown_height -- do we have enough height to grow sapling into tree? if not height or not enough_height(pos, height) then return end -- Check if Ethereal Sapling is growing on correct substrate if node.name == "ethereal:yellow_tree_sapling" and minetest.get_item_group(under, "soil") > 0 then ethereal.grow_yellow_tree(pos) elseif node.name == "ethereal:big_tree_sapling" and under == "default:dirt_with_grass" then ethereal.grow_big_tree(pos) elseif node.name == "ethereal:banana_tree_sapling" and under == "ethereal:grove_dirt" then ethereal.grow_banana_tree(pos) elseif node.name == "ethereal:frost_tree_sapling" and under == "ethereal:crystal_dirt" then ethereal.grow_frost_tree(pos) elseif node.name == "ethereal:mushroom_sapling" and under == "ethereal:mushroom_dirt" then ethereal.grow_mushroom_tree(pos) elseif node.name == "ethereal:palm_sapling" and under == "default:sand" then ethereal.grow_palm_tree(pos) elseif node.name == "ethereal:willow_sapling" and under == "ethereal:gray_dirt" then ethereal.grow_willow_tree(pos) elseif node.name == "ethereal:redwood_sapling" and under == "default:dirt_with_dry_grass" then ethereal.grow_redwood_tree(pos) elseif node.name == "ethereal:orange_tree_sapling" and under == "ethereal:prairie_dirt" then ethereal.grow_orange_tree(pos) elseif node.name == "ethereal:bamboo_sprout" and under == "ethereal:bamboo_dirt" then ethereal.grow_bamboo_tree(pos) elseif node.name == "ethereal:birch_sapling" and under == "default:dirt_with_grass" then ethereal.grow_birch_tree(pos) end end -- Grow saplings minetest.register_abm({ label = "Ethereal grow sapling", nodenames = {"group:ethereal_sapling"}, interval = 10, chance = 50, catch_up = false, action = function(pos, node) local light_level = minetest.get_node_light(pos) or 0 if light_level < 13 then return end grow_sapling(pos, node) end, }) ethereal/schematics/000077500000000000000000000000001335420417000147715ustar00rootroot00000000000000ethereal/schematics/bamboo_tree.lua000066400000000000000000000016751335420417000177630ustar00rootroot00000000000000 local _ = {name = "air", param1 = 000} local B = {name = "ethereal:bamboo", param1 = 255} local L = {name = "ethereal:bamboo_leaves", param1 = 255} local l = {name = "ethereal:bamboo_leaves", param1 = 100} ethereal.bambootree = { size = {x = 3, y = 18, z = 3}, yslice_prob = { {ypos = 0, prob = 127}, {ypos = 1, prob = 127}, {ypos = 2, prob = 127}, }, data = { _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, l,L,l, _,L,_, _,_,_, _,B,_, _,B,_, _,B,_, _,B,_, _,B,_, _,B,_, _,B,_, _,B,_, _,B,_, _,B,_, _,B,_, _,B,_, _,B,_, _,B,_, _,B,_, l,L,l, _,L,_, _,l,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, _,_,_, l,L,l, _,L,_, _,_,_, } } if ethereal.papyruswalk == true then minetest.override_item("default:papyrus", { walkable = true, sunlight_propagates = true }) end ethereal/schematics/banana_tree.lua000066400000000000000000000024701335420417000177360ustar00rootroot00000000000000 local _ = {name = "air", param1 = 0} local T = {name = "ethereal:banana_trunk", param1 = 255} local L = {name = "ethereal:bananaleaves", param1 = 255} local l = {name = "ethereal:bananaleaves", param1 = 180} local B = {name = "ethereal:banana", param1 = 255} local b = {name = "ethereal:banana", param1 = 070} ethereal.bananatree = { size = {x = 7, y = 8, z = 7}, yslice_prob = { {ypos = 0, prob = 127}, }, data = { _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,l,_,_,_, _,_,_,L,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,b,_,_,_, _,_,_,B,_,_,_, _,_,_,L,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,b,T,b,_,_, _,_,B,L,B,_,_, _,L,L,L,L,L,_, L,l,_,L,_,l,L, _,_,_,T,_,_,_, _,_,_,T,_,_,_, _,_,_,T,_,_,_, _,_,_,T,_,_,_, _,_,_,b,_,_,_, _,_,_,B,_,_,_, _,_,_,L,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,L,_,_,_, _,_,_,l,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,L,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, } } ethereal/schematics/bigtree.lua000066400000000000000000000033521335420417000171200ustar00rootroot00000000000000 local _ = {name = "air", prob = 0} local L = {name = "default:leaves", prob = 255} local T = {name = "default:tree", prob = 255} local t = {name = "default:tree", prob = 127} ethereal.bigtree = { size = {x = 9, y = 8, z = 9}, yslice_prob = { {ypos = 0, prob = 127}, {ypos = 1, prob = 127}, }, data = { _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,L,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,t,t,_,t,t,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,L,L,L,_,_,_, _,_,_,_,L,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,t,t,t,t,t,t,t,_, _,_,_,t,_,t,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,L,L,L,L,L,_,_, _,_,_,L,L,L,_,_,_, _,_,_,_,L,_,_,_,_, _,_,_,_,_,_,_,_,_, _,t,t,t,T,t,t,t,_, _,_,t,t,T,t,t,_,_, _,_,_,_,T,_,_,_,_, _,_,_,_,T,_,_,_,_, _,L,L,L,T,L,L,L,_, _,_,L,L,L,L,L,_,_, _,_,_,L,L,L,_,_,_, _,_,_,_,_,_,_,_,_, _,_,t,T,T,T,t,_,_, _,_,_,T,T,T,_,_,_, _,_,_,T,T,T,_,_,_, _,_,_,T,T,T,_,_,_, L,L,L,L,T,L,L,L,L, _,L,L,L,T,L,L,L,_, _,_,L,L,L,L,L,_,_, _,_,_,_,_,_,_,_,_, _,t,t,t,T,t,t,t,_, _,_,t,t,T,t,t,_,_, _,_,_,_,T,_,_,_,_, _,_,_,_,T,_,_,_,_, _,L,L,L,T,L,L,L,_, _,_,L,L,L,L,L,_,_, _,_,_,L,L,L,_,_,_, _,_,_,_,_,_,_,_,_, _,t,t,t,t,t,t,t,_, _,_,_,t,_,t,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,L,L,L,L,L,_,_, _,_,_,L,L,L,_,_,_, _,_,_,_,L,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,t,t,_,t,t,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,L,L,L,_,_,_, _,_,_,_,L,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,L,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, } } ethereal/schematics/birch_tree.lua000066400000000000000000000014141335420417000176020ustar00rootroot00000000000000 local _ = {name = "air", param1 = 0} local T = {name = "ethereal:birch_trunk", param1 = 255} local L = {name = "ethereal:birch_leaves", param1 = 255} local l = {name = "ethereal:birch_leaves", param1 = 150} ethereal.birchtree = { size = {x = 5, y = 7, z = 5}, yslice_prob = { {ypos = 0, prob = 127}, {ypos = 3, prob = 127}, }, data = { _,_,_,_,_, _,_,_,_,_, _,_,_,_,_, l,L,L,L,l, l,L,L,L,l, _,_,_,_,_, _,_,_,_,_, _,_,_,_,_, _,_,_,_,_, _,_,_,_,_, L,L,L,L,L, L,L,L,L,L, _,l,L,l,_, _,_,L,_,_, _,_,T,_,_, _,_,T,_,_, _,_,T,_,_, L,L,T,L,L, L,L,T,L,L, _,L,T,L,_, _,L,L,L,_, _,_,_,_,_, _,_,_,_,_, _,_,_,_,_, L,L,L,L,L, L,L,L,L,L, _,l,L,l,_, _,_,L,_,_, _,_,_,_,_, _,_,_,_,_, _,_,_,_,_, l,L,L,L,l, l,L,L,L,l, _,_,_,_,_, _,_,_,_,_, } } ethereal/schematics/bush.lua000066400000000000000000000007171335420417000164420ustar00rootroot00000000000000 local _ = {name = "air", param1 = 0} local B = {name = "ethereal:bush", param1 = 255} local b = {name = "ethereal:bush", param1 = 100} ethereal.bush = { size = {x = 5, y = 3, z = 5}, yslice_prob = { {ypos = 0, prob = 127}, {ypos = 2, prob = 127}, }, data = { b,B,B,B,b, _,_,_,_,_, _,_,_,_,_, B,B,B,B,B, _,b,B,b,_, _,_,_,_,_, B,B,B,B,B, _,B,B,B,_, _,_,b,_,_, B,B,B,B,B, _,b,B,b,_, _,_,_,_,_, b,B,B,B,b, _,_,_,_,_, _,_,_,_,_, } } ethereal/schematics/frosttrees.lua000066400000000000000000000062161335420417000177010ustar00rootroot00000000000000 local _ = {name = "air", prob = 0} local l = {name = "ethereal:frost_leaves", prob = 255} local t = {name = "ethereal:frost_tree", prob = 255} ethereal.frosttrees = { size = {x = 8, y = 19, z = 8}, yslice_prob = { {ypos = 0, prob = 127}, -- trunk {ypos = 1, prob = 127}, {ypos = 2, prob = 127}, {ypos = 3, prob = 127}, {ypos = 4, prob = 127}, {ypos = 5, prob = 127}, {ypos = 13, prob = 127}, -- leaves {ypos = 15, prob = 127}, }, data = { _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,l,l,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,l,l,l,l,_,_, _,_,_,_,_,_,_,_, _,_,_,l,l,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,l,l,_,_,_, _,l,l,l,l,l,l,_, _,_,_,l,l,_,_,_, _,_,l,l,l,l,_,_, _,_,_,l,l,_,_,_, _,_,_,l,l,_,_,_, _,_,_,_,_,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,l,t,t,l,_,_, l,l,l,t,t,l,l,l, _,_,l,t,t,l,_,_, _,l,l,t,t,l,l,_, _,_,l,t,t,l,_,_, _,_,l,t,t,l,_,_, _,_,_,l,l,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,_,t,t,_,_,_, _,_,l,t,t,l,_,_, l,l,l,t,t,l,l,l, _,_,l,t,t,l,_,_, _,l,l,t,t,l,l,_, _,_,l,t,t,l,_,_, _,_,l,t,t,l,_,_, _,_,_,l,l,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,l,l,_,_,_, _,l,l,l,l,l,l,_, _,_,_,l,l,_,_,_, _,_,l,l,l,l,_,_, _,_,_,l,l,_,_,_, _,_,_,l,l,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,l,l,l,l,_,_, _,_,_,_,_,_,_,_, _,_,_,l,l,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,l,l,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, } } ethereal/schematics/igloo.lua000066400000000000000000000014441335420417000166100ustar00rootroot00000000000000 local _ = {name = "air", prob = 0} local S = {name = "default:snowblock", prob = 255} ethereal.igloo = { size = {x = 7, y = 5, z = 8}, data = { _,_,S,S,S,_,_, _,_,S,_,S,_,_, _,_,S,_,S,_,_, _,_,_,S,_,_,_, _,_,_,_,_,_,_, _,_,S,S,S,_,_, _,_,S,_,S,_,_, _,_,S,_,S,_,_, _,_,_,S,_,_,_, _,_,_,_,_,_,_, _,S,S,S,S,S,_, _,S,_,_,_,S,_, _,S,_,_,_,S,_, _,_,S,S,S,_,_, _,_,_,_,_,_,_, S,S,S,S,S,S,S, S,_,_,_,_,_,S, S,_,_,_,_,_,S, _,S,_,_,_,S,_, _,_,S,S,S,_,_, S,S,S,S,S,S,S, S,_,_,_,_,_,S, S,_,_,_,_,_,S, _,S,_,_,_,S,_, _,_,S,S,S,_,_, S,S,S,S,S,S,S, S,_,_,_,_,_,S, S,_,_,_,_,_,S, _,S,_,_,_,S,_, _,_,S,S,S,_,_, _,S,S,S,S,S,_, _,S,_,_,_,S,_, _,S,_,_,_,S,_, _,_,S,S,S,_,_, _,_,_,_,_,_,_, _,_,S,S,S,_,_, _,_,S,S,S,_,_, _,_,S,S,S,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, } } ethereal/schematics/mushroomone.lua000066400000000000000000000036601335420417000200540ustar00rootroot00000000000000 local _ = {name = "air", prob = 0} local M = {name = "ethereal:mushroom", prob = 255} local T = {name = "ethereal:mushroom_trunk", prob = 255} local P = {name = "ethereal:mushroom_pore", prob = 255} ethereal.mushroomone = { size = {x = 8, y = 11, z = 8}, yslice_prob = { {ypos = 0, prob = 127}, {ypos = 1, prob = 127}, {ypos = 7, prob = 127}, }, data = { _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,M,M,_,_,_, _,_,_,M,M,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,M,_,_,M,_,_, _,_,M,_,_,M,_,_, _,_,_,M,M,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,M,_,_,_,_,M,_, _,M,_,_,_,_,M,_, _,_,M,P,P,M,_,_, _,_,_,M,M,_,_,_, _,_,_,T,T,_,_,_, _,_,_,T,T,_,_,_, _,_,_,T,T,_,_,_, _,_,_,T,T,_,_,_, _,_,_,T,T,_,_,_, _,_,_,T,T,_,_,_, _,_,_,T,T,_,_,_, M,_,_,T,T,_,_,M, M,_,_,T,T,_,_,M, _,M,P,P,P,P,M,_, _,_,M,M,M,M,_,_, _,_,_,T,T,_,_,_, _,_,_,T,T,_,_,_, _,_,_,T,T,_,_,_, _,_,_,T,T,_,_,_, _,_,_,T,T,_,_,_, _,_,_,T,T,_,_,_, _,_,_,T,T,_,_,_, M,_,_,T,T,_,_,M, M,_,_,T,T,_,_,M, _,M,P,P,P,P,M,_, _,_,M,M,M,M,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,M,_,_,_,_,M,_, _,M,_,_,_,_,M,_, _,_,M,P,P,M,_,_, _,_,_,M,M,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,M,_,_,M,_,_, _,_,M,_,_,M,_,_, _,_,_,M,M,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, _,_,_,M,M,_,_,_, _,_,_,M,M,_,_,_, _,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_, } } ethereal/schematics/orange_tree.lua000066400000000000000000000010441335420417000177650ustar00rootroot00000000000000 local _ = {name = "air", param1 = 0} local L = {name = "ethereal:orange_leaves", param1 = 255} local l = {name = "ethereal:orange_leaves", param1 = 200} local T = {name = "default:tree", param1 = 255} local o = {name = "ethereal:orange", param1 = 100} ethereal.orangetree = { size = {x = 3, y = 6, z = 3}, yslice_prob = { {ypos = 0, prob = 127}, {ypos = 3, prob = 127}, }, data = { _,_,_, _,_,_, _,_,_, l,l,o, L,L,L, l,o,l, _,T,_, _,T,_, _,T,_, l,T,l, L,T,L, l,L,l, _,_,_, _,_,_, _,_,_, o,l,l, L,L,L, l,l,l, } } ethereal/schematics/palmtree.lua000066400000000000000000000040051335420417000173040ustar00rootroot00000000000000 local _ = {name = "air", param = 0} local L = {name = "ethereal:palmleaves", param = 255} local l = {name = "ethereal:palmleaves", param = 191} local T = {name = "ethereal:palm_trunk", param = 255} local t = {name = "ethereal:palm_trunk", param = 191} local C = {name = "ethereal:coconut", param = 127} ethereal.palmtree = { size = {x = 9, y = 9, z = 9}, yslice_prob = { {ypos = 3, prob = 127}, }, data = { _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,l,_,_,_, _,_,_,_,_,L,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,L,_,_,_, _,_,_,_,_,L,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,C,_,_,_, _,_,_,_,_,L,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,T,_,_,_,_, _,_,_,_,T,_,_,_,_, _,_,_,_,T,_,_,_,_, _,_,_,_,T,t,_,_,_, _,_,_,_,_,T,_,_,_, _,_,l,_,_,T,_,_,l, _,_,L,L,C,T,C,L,L, _,_,_,L,L,L,L,L,_, _,_,_,_,_,L,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,C,_,_,_, _,_,_,_,_,L,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,L,_,_,_, _,_,_,_,_,L,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,l,_,_,_, _,_,_,_,_,L,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, } } ethereal/schematics/pinetree.lua000066400000000000000000000022441335420417000173110ustar00rootroot00000000000000 local _ = {name = "air", prob = 0} local L = {name = "ethereal:pineleaves", prob = 255} local T = {name = "default:pinetree", prob = 255} ethereal.pinetree = { size = {x = 7, y = 8, z = 7}, yslice_prob = { {ypos = 0, prob = 127}, {ypos = 4, prob = 127}, }, data = { _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,L,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,L,L,L,_,_, _,_,_,_,_,_,_, _,_,_,L,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,L,_,_,_, _,L,L,L,L,L,_, _,_,_,L,_,_,_, _,_,L,L,L,_,_, _,_,_,L,_,_,_, _,_,_,_,_,_,_, _,_,_,T,_,_,_, _,_,_,T,_,_,_, _,_,L,T,L,_,_, L,L,L,T,L,L,L, _,_,L,T,L,_,_, _,L,L,T,L,L,_, _,_,L,T,L,_,_, _,_,_,L,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,L,_,_,_, _,L,L,L,L,L,_, _,_,_,L,_,_,_, _,_,L,L,L,_,_, _,_,_,L,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,L,L,L,_,_, _,_,_,_,_,_,_, _,_,_,L,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,L,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, } } ethereal/schematics/redwood_tree.lua000066400000000000000000000366631335420417000201740ustar00rootroot00000000000000 local _ = {name = "air", prob = 0} local T = {name = "ethereal:redwood_trunk", prob = 255} local L = {name = "ethereal:redwood_leaves", prob = 255} ethereal.redwood_tree = { size = {x = 15, y = 33, z = 15}, yslice_prob = { {ypos = 0, prob = 127}, {ypos = 5, prob = 127}, {ypos = 6, prob = 127}, {ypos = 7, prob = 127}, {ypos = 14, prob = 127}, {ypos = 15, prob = 127}, {ypos = 16, prob = 127}, }, data = { _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,L,L,L,L,L,_,_,_,_,_, _,_,_,_,_,_,L,L,L,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,L,L,_,L,_,_,_,_,_,_, _,_,_,_,L,L,L,T,L,L,_,_,_,_,_, _,_,_,_,_,L,L,L,L,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,L,L,L,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,L,L,T,L,L,_,_,_,_,_, _,_,_,_,L,L,L,T,L,L,_,_,_,_,_, _,_,_,_,_,L,L,L,L,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,L,L,L,L,L,_,_,_, _,_,_,_,_,_,_,_,L,L,L,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,L,L,T,L,L,_,_,_,_,_, _,_,_,_,_,L,L,L,L,_,_,_,_,_,_, _,_,_,_,_,_,_,L,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,L,L,T,L,L,_,_,_, _,_,_,_,_,_,_,_,L,L,L,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,L,L,L,L,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,L,L,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,_,T,T,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,L,T,L,L,_,_,_,_,_, _,_,_,_,_,_,L,L,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,T,_,_,_,_,_, _,_,_,_,_,_,_,L,L,T,L,L,_,_,_, _,_,_,_,_,_,_,_,L,L,L,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,L,L,L,L,L,L,_,_,_,_,_,_, _,_,_,_,_,L,L,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,L,L,L,L,_,_,_,_,_, _,_,_,_,_,_,L,L,L,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,T,T,_,_,_,_,_, _,_,_,_,_,_,_,_,L,L,_,L,L,L,L, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,L,L,T,T,L,L,_,_,_,_,_,_, _,_,_,_,L,L,L,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,L,_,_,_,_,_,_,_, _,_,_,_,L,L,L,L,L,L,_,_,_,_,_, _,_,_,_,_,L,L,L,L,L,_,_,_,_,_, _,_,_,_,_,_,L,L,L,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,T,T,T,T,T,T,T,_,_,_,_, _,_,_,_,T,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, L,L,L,L,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,_,T,_,_,L,L,L,L,L, _,_,_,_,_,_,_,T,_,_,_,L,L,L,_, _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, _,_,_,_,L,L,T,T,_,_,_,_,_,_,_, _,_,_,_,L,_,_,T,_,_,_,_,_,_,_, _,_,_,_,_,_,L,T,L,_,_,_,_,_,_, _,_,_,_,L,L,L,L,L,L,L,_,_,_,_, _,_,_,_,L,L,L,L,L,L,L,_,_,_,_, _,_,_,_,_,L,L,L,L,L,_,_,_,_,_, _,_,_,_,_,_,_,L,_,_,_,_,_,_,_, _,_,_,_,T,T,T,T,T,T,T,_,_,_,_, _,_,_,_,T,T,T,T,T,T,T,_,_,_,_, _,_,_,_,T,T,T,T,T,T,T,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,T,T,T,_,_,_, _,_,_,_,_,_,T,T,T,_,_,L,L,L,L, _,_,_,_,_,_,T,T,T,_,_,_,L,L,L, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,T,T,T,T,T,T,_,_,_,_,_,_, L,L,L,L,L,_,T,T,T,_,_,_,_,_,_, L,L,L,L,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,T,T,T,_,_,_, _,_,_,_,_,_,T,T,T,_,L,T,T,T,L, _,_,_,_,_,_,T,T,T,_,_,L,L,L,L, _,_,L,L,L,L,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,L,T,T,T,L,_,_,_,_,_, _,_,_,_,L,L,L,T,L,L,L,_,_,_,_, _,_,_,_,L,L,L,L,L,L,L,_,_,_,_, _,_,_,_,_,L,L,L,L,L,_,_,_,_,_, _,_,_,_,_,_,L,L,L,_,_,_,_,_,_, _,_,_,_,T,T,T,T,T,T,T,_,_,_,_, _,_,_,_,T,T,T,T,T,T,T,_,_,_,_, _,_,_,_,_,T,T,T,T,T,T,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,T,T,_,_, _,_,_,_,_,_,T,T,T,_,_,L,T,T,L, _,_,_,_,_,_,T,T,T,_,_,_,L,L,L, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,T,_,_,T,T,T,_,_,_,_,_,_, L,T,T,T,L,_,T,T,T,_,_,_,_,_,_, L,L,L,L,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,_,_,_,L,L,L,L, _,_,_,_,T,T,T,T,_,_,_,L,L,L,_, _,L,L,L,L,L,_,T,_,_,_,_,_,_,_, _,_,_,L,L,_,_,T,L,L,L,L,_,_,_, _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, _,_,_,_,_,_,L,T,L,_,_,_,_,_,_, _,_,_,_,L,L,L,L,L,L,L,_,_,_,_, _,_,_,_,L,L,L,L,L,L,_,_,_,_,_, _,_,_,_,_,_,L,L,L,_,_,_,_,_,_, _,_,_,_,_,_,_,L,L,_,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,L,L,L,L, _,_,_,_,_,_,_,_,_,_,_,_,L,L,L, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,T,T,_,_,_,_,_,_, _,_,_,_,_,_,_,L,L,L,_,_,_,_,_, L,L,L,L,L,_,_,_,L,_,_,_,_,_,_, L,L,L,L,_,_,T,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,L,L,L,L, _,_,_,_,T,_,_,_,_,_,_,_,_,_,_, _,L,L,T,T,L,L,T,T,T,_,_,_,_,_, _,_,L,L,L,_,_,L,L,T,L,L,_,_,_, _,_,_,_,_,_,_,_,L,L,L,_,_,_,_, _,_,_,_,_,_,_,L,_,_,_,_,_,_,_, _,_,_,_,_,L,L,L,L,L,_,_,_,_,_, _,_,_,_,_,L,L,L,L,L,_,_,_,_,_, _,_,_,_,_,_,L,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,L,L,L,L, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,T,_,_,_,_,_,_, _,_,_,_,_,_,_,L,L,L,_,_,_,_,_, L,L,L,L,_,_,_,_,L,L,_,_,_,_,_, _,_,_,_,_,_,T,_,_,_,_,_,_,_,_, _,_,_,_,_,L,L,L,L,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,L,L,L,L,L,L,_,_,_,_,_,_,_,_, _,_,_,L,L,_,_,L,L,T,L,L,_,_,_, _,_,_,_,_,_,_,_,L,L,L,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,L,L,L,_,_,_,_,_,_, _,_,_,_,_,_,L,L,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,L,L,L,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,T,_,_,_,_,_,_,_,_, _,_,_,_,L,L,L,L,L,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,L,L,L,L,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,L,L,L,L,L,_,_,_, _,_,_,_,_,_,_,_,_,L,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,L,L,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,T,_,_,_,_,_,_,_,_, _,_,_,_,L,L,T,L,L,_,_,_,_,_,_, _,_,_,_,_,L,L,L,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,L,L,L,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,L,L,T,L,L,_,_,_,_,_,_, _,_,_,_,_,L,L,L,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,L,L,L,L,L,_,_,_,_,_,_, _,_,_,_,_,_,L,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, } } ethereal/schematics/vinetree.lua000066400000000000000000000023751335420417000173240ustar00rootroot00000000000000 local _ = {name = "air", prob = 0} local T = {name = "default:tree", prob = 255} local L = {name = "default:leaves", prob = 255} local u = {name = "ethereal:vine", prob = 255, param2 = 2} local U = {name = "ethereal:vine", prob = 255, param2 = 3} local W = {name = "ethereal:vine", prob = 255, param2 = 4} local w = {name = "ethereal:vine", prob = 255, param2 = 5} ethereal.vinetree = { size = {x = 7, y = 7, z = 7}, yslice_prob = { {ypos = 0, prob = 127}, }, data = { _,_,_,_,_,_,_, _,W,_,_,_,_,_, _,W,_,W,_,_,_, _,W,_,W,_,_,_, _,W,_,_,_,W,_, _,W,_,_,_,W,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,_,_,W,_,_, _,_,_,_,W,_,_, _,L,L,L,W,L,_, _,L,L,_,L,L,_, _,L,L,L,L,L,_, _,_,_,_,_,_,_, _,_,_,_,_,_,U, _,_,_,_,_,_,U, _,_,_,_,_,_,U, _,L,T,_,T,L,U, u,L,L,L,L,_,_, _,_,L,L,L,L,_, _,_,L,L,L,_,_, _,_,_,T,_,_,_, _,_,_,T,_,_,_, u,_,_,T,_,_,_, u,L,_,L,_,L,_, u,L,L,L,L,L,_, _,L,L,L,L,L,_, _,_,L,L,L,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,U, _,_,_,_,_,_,U, _,L,T,_,T,L,U, _,L,L,L,L,L,U, _,L,L,L,L,L,_, _,_,_,L,L,_,_, _,_,_,_,_,_,_, u,_,_,_,_,_,_, u,_,_,_,w,_,_, u,L,L,L,w,L,_, _,L,L,L,L,_,_, _,_,L,L,L,L,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, _,_,w,_,_,_,_, _,_,w,_,_,_,_, _,_,w,w,_,_,_, _,_,_,w,w,_,_, _,_,_,_,_,_,_, _,_,_,_,_,_,_, } } ethereal/schematics/volcanol.lua000066400000000000000000000051221335420417000173110ustar00rootroot00000000000000 local _ = {name = "air", prob = 0} local d = {name = "ethereal:fiery_dirt", prob = 245} local s = {name = "default:stone", prob = 255} local l = {name = "default:lava_source", prob = 255} local f = {name = "default:lava_flowing", prob = 255} local o = {name = "default:obsidian", prob = 215} ethereal.volcanol = { size = {x = 17, y = 4, z = 15}, yslice_prob = { {ypos = 0, prob = 127}, {ypos = 1, prob = 127}, {ypos = 2, prob = 127}, }, data = { _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,d,d,d,d,_,_,d,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,d,s,s,s,s,d,d,s,d,d,_,_,_,_, _,_,_,_,s,s,s,s,_,_,s,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,d,s,o,o,o,o,s,s,o,s,s,d,_,_,_, _,_,_,s,f,f,s,f,s,s,f,s,s,_,_,_,_, _,_,_,_,s,s,_,s,_,_,s,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,d,s,o,s,s,s,s,o,o,s,o,o,s,d,_,_, _,_,s,l,l,l,l,f,s,f,f,l,l,s,_,_,_, _,_,_,s,f,f,s,s,o,s,o,s,s,_,_,_,_, _,_,_,_,o,o,o,_,_,_,o,_,_,_,_,_,_, _,d,s,o,s,o,o,o,s,s,o,s,s,o,s,d,_, _,_,s,f,l,l,l,l,l,l,l,l,l,l,s,_,_, _,_,_,s,f,f,f,f,f,f,l,f,l,s,_,_,_, _,_,_,_,o,_,_,o,o,o,_,o,o,_,_,_,_, _,d,s,o,s,o,s,s,o,o,s,o,s,o,s,d,_, _,_,s,s,l,l,l,l,l,l,l,l,l,l,s,_,_, _,_,_,_,o,f,f,f,f,f,f,f,l,s,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,o,_,_,_,_, _,_,d,s,o,s,o,s,s,s,s,o,s,o,s,d,_, _,_,_,s,l,l,l,l,l,l,l,l,l,l,s,_,_, _,_,_,s,f,f,f,f,f,f,f,f,l,s,_,_,_, _,_,_,_,o,_,_,_,_,_,_,_,s,_,_,_,_, _,d,s,o,s,o,o,o,o,o,o,s,o,s,d,_,_, _,_,s,l,l,l,l,l,l,l,l,l,l,s,_,_,_, _,_,_,s,f,f,f,f,f,f,f,l,s,_,_,_,_, _,_,_,_,o,_,_,_,_,_,_,_,o,_,_,_,_, _,d,s,o,s,s,s,s,s,s,o,s,o,s,d,_,_, _,_,s,l,l,l,l,l,l,l,l,l,l,s,_,_,_, _,_,_,s,f,f,f,f,l,l,f,l,s,_,_,_,_, _,_,_,_,o,o,_,_,_,o,_,o,_,_,_,_,_, _,_,d,s,o,o,o,o,o,o,s,o,s,d,_,_,_, _,_,_,s,s,l,f,f,f,f,l,l,s,_,_,_,_, _,_,_,_,s,s,s,s,s,s,f,s,_,_,_,_,_, _,_,_,_,_,s,o,o,o,_,s,_,_,_,_,_,_, _,_,_,d,s,s,s,s,s,s,o,s,d,_,_,_,_, _,_,_,_,s,s,s,s,s,s,l,s,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,s,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,d,d,d,d,d,d,s,s,d,_,_,_,_, _,_,_,_,_,_,_,_,_,_,s,s,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,d,d,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, } } ethereal/schematics/volcanom.lua000066400000000000000000000007431335420417000173160ustar00rootroot00000000000000 local _ = {name = "air", prob = 0} local l = {name = "default:lava_source", prob = 225} local s = {name = "default:stone", prob = 255} local d = {name = "ethereal:fiery_dirt", prob = 255} ethereal.volcanom = { size = {x = 6, y = 2, z = 6}, yslice_prob = { {ypos = 0, prob = 127}, }, data = { _,_,s,_,_,_, _,_,_,_,_,_, _,s,l,s,_,_, _,_,s,d,_,_, _,s,l,l,s,_, _,s,_,_,s,_, s,l,l,l,s,_, _,s,_,_,d,_, _,d,l,l,d,d, _,_,s,d,_,_, _,_,d,d,d,_, _,_,_,_,_,_, } } ethereal/schematics/waterlily.lua000066400000000000000000000005151335420417000175110ustar00rootroot00000000000000 -- waterlily ethereal.waterlily = { size = {x = 1, y = 3, z = 1}, data = { {name = "default:sand", param1 = 255}, {name = "default:water_source", param1 = 255}, {name = "flowers:waterlily", param1 = 255}, }, } if ethereal.lilywalk == true then minetest.override_item("flowers:waterlily", { walkable = true, }) end ethereal/schematics/willow.lua000066400000000000000000000111671335420417000170170ustar00rootroot00000000000000 local _ = {name = "air", prob = 0} local L = {name = "ethereal:willow_twig", prob = 255} local T = {name = "ethereal:willow_trunk", prob = 255} local t = {name = "ethereal:willow_trunk", prob = 127} ethereal.willow = { size = {x = 12, y = 14, z = 12}, yslice_prob = { {ypos = 0, prob = 127}, {ypos = 1, prob = 127}, }, data = { _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,L,_,_,_,_,_, _,_,_,_,L,_,L,_,_,_,_,_, _,_,_,_,L,L,L,L,_,_,_,_, _,_,_,_,_,_,L,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,L,L,L,L,_,_,_, _,_,L,L,L,L,T,L,L,_,_,_, _,_,_,_,_,L,L,L,_,_,_,_, _,_,_,_,_,L,L,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,t,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,L,_,_,_,_,_,_,_,_, _,_,_,L,_,L,_,L,_,_,_,_, _,_,_,L,L,L,L,L,L,L,_,_, _,_,L,L,L,T,T,L,L,_,_,_, _,_,_,L,L,L,L,L,L,_,_,_, _,_,_,L,L,L,L,L,L,_,_,_, _,_,_,L,L,L,L,_,_,_,_,_, _,_,_,_,_,L,L,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,t,T,T,T,_,_,t,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,L,_,L,_,_,_,_,_,_,_,_, _,L,L,L,L,L,L,_,L,L,L,_, _,L,T,T,L,T,L,L,L,L,_,_, _,_,L,L,L,L,L,L,L,L,_,_, _,_,L,L,L,L,L,L,T,L,_,_, _,_,L,L,L,L,L,L,L,_,_,_, _,_,L,L,L,L,L,_,_,_,_,_, _,_,_,_,L,L,L,_,_,_,_,_, _,_,_,_,_,L,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,T,_,_,T,_,_,_, _,_,_,_,_,T,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,L,_,_, _,_,_,_,_,L,L,_,_,L,_,_, _,_,L,L,_,L,L,L,L,L,L,_, L,L,L,T,L,T,L,L,T,L,L,_, _,L,L,L,L,L,L,L,L,L,L,_, _,L,L,L,L,L,L,L,T,T,L,_, _,L,L,L,L,L,L,L,L,L,L,_, _,L,T,T,T,T,T,L,L,_,_,_, _,_,L,L,L,L,L,L,_,_,_,_, _,_,_,_,L,T,L,L,_,_,_,_, _,_,_,_,_,L,_,_,_,_,_,_, _,_,_,_,_,T,T,T,T,t,_,_, _,_,_,_,_,T,T,_,_,_,_,_, _,_,_,_,_,T,T,_,_,_,_,_, _,L,_,_,_,T,T,_,_,_,_,_, _,L,L,_,_,T,_,_,_,L,L,_, _,L,L,L,_,T,L,L,L,L,L,L, L,L,L,T,L,T,T,T,T,T,L,_, _,L,L,L,L,T,L,L,L,L,L,_, _,_,L,L,L,T,T,T,T,L,L,_, _,_,L,L,L,L,L,L,L,L,_,_, _,_,L,T,L,T,T,L,L,_,_,_, _,_,_,L,L,T,T,L,_,_,_,_, _,_,_,L,L,L,L,L,_,_,_,_, _,_,_,_,L,L,L,_,_,_,_,_, _,_,t,T,T,T,T,T,_,_,_,_, _,_,_,_,_,T,T,T,_,_,_,_, _,_,_,_,_,T,T,_,_,_,_,_, _,_,_,_,_,T,T,_,_,_,_,_, _,L,_,_,_,T,T,_,_,_,_,_, L,L,L,L,L,T,T,T,L,L,L,L, L,T,T,T,T,T,T,L,T,L,L,_, _,L,L,L,L,L,T,L,L,L,L,_, _,_,L,L,L,L,T,L,L,L,L,_, _,_,_,L,_,L,T,L,L,_,_,_, _,_,_,L,L,L,T,L,L,_,_,_, _,_,_,L,L,L,L,L,L,_,_,_, _,_,_,_,L,L,L,_,_,_,_,_, _,_,_,_,L,L,L,_,_,_,_,_, _,_,_,_,_,T,_,_,_,_,_,_, _,_,_,_,_,T,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,L,_,_,_,_,_,_,_,_, _,_,_,L,L,_,L,_,L,L,_,_, _,L,L,L,L,L,L,_,L,L,L,_, _,L,T,L,L,L,L,L,L,L,_,_, _,L,L,L,L,L,T,L,L,L,_,_, _,_,L,L,L,L,L,L,L,L,_,_, _,_,L,L,L,L,T,L,L,L,_,_, _,_,_,L,L,L,L,L,L,_,_,_, _,_,_,L,L,L,L,L,_,_,_,_, _,_,_,_,L,L,L,_,_,_,_,_, _,_,_,_,_,L,L,_,_,_,_,_, _,_,_,_,_,T,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,L,_,_,_,_,_,_,_,_,_, _,L,L,_,_,L,L,_,L,L,L,_, _,L,T,L,L,L,L,L,L,L,_,_, _,_,L,_,L,L,T,L,L,L,_,_, _,_,L,L,L,L,L,L,L,_,_,_, _,_,_,_,L,L,T,T,L,_,_,_, _,_,_,_,L,L,L,L,_,_,_,_, _,_,_,_,L,L,L,_,_,_,_,_, _,_,_,_,_,L,L,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,T,T,t,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,L,_,_,_,_, _,_,_,_,L,_,_,L,_,L,_,_, _,_,L,L,L,L,L,L,L,L,_,_, _,_,L,L,L,L,T,L,L,_,_,_, _,_,_,L,L,L,T,L,_,_,_,_, _,_,_,_,L,L,L,L,_,_,_,_, _,_,_,_,L,L,L,L,_,_,_,_, _,_,_,_,_,L,L,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,t,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,L,_,_,_,_,_,_,_,_, _,_,_,L,_,_,_,_,_,_,_,_, _,_,_,L,L,L,L,L,L,_,_,_, _,_,_,L,L,L,T,L,_,_,_,_, _,_,_,_,_,L,L,L,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,L,_,_,_,_,_, _,_,_,_,_,L,L,_,_,_,_,_, _,_,_,_,_,_,L,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_, } } ethereal/schematics/yellowtree.lua000066400000000000000000000074241335420417000176760ustar00rootroot00000000000000 local _ = {name = "air", prob = 0} local T = {name = "ethereal:yellow_trunk", prob = 255} local t = {name = "ethereal:yellow_trunk", prob = 127} local L = {name = "ethereal:yellowleaves", prob = 255} local A = {name = "ethereal:golden_apple", prob = 115} ethereal.yellowtree = { size = {x = 9, y = 19, z = 9}, yslice_prob = { {ypos = 0, prob = 254}, {ypos = 3, prob = 254}, {ypos = 5, prob = 254}, }, data = { _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,L,A,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,L,T,L,_,_,_, _,_,_,_,L,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,L,A,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,t,_,_,_,_, _,_,_,L,T,L,_,_,_, _,_,_,_,L,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,L,t,L,_,_,_, _,_,_,_,L,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,T,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,T,_,_,_,_, _,_,_,_,L,L,_,_,_, _,_,_,_,_,_,L,L,_, _,_,_,L,_,_,_,_,_, A,L,L,L,T,L,_,_,_, _,_,_,_,_,L,_,_,_, _,_,_,_,L,_,L,L,_, _,_,L,L,L,_,_,_,_, A,L,L,L,T,L,_,_,_, _,_,_,L,T,L,_,_,_, _,_,_,_,L,_,_,_,_, _,_,_,_,T,_,_,_,_, _,_,_,_,T,_,_,_,_, _,_,_,_,T,_,_,_,_, _,_,_,T,T,_,_,_,_, _,_,_,_,T,_,_,_,_, _,_,_,_,T,T,_,_,_, _,_,_,_,T,_,_,_,_, _,_,_,T,T,_,_,_,_, _,_,_,_,T,_,_,_,_, _,_,_,_,T,T,t,_,_, _,_,_,_,T,_,T,T,L, _,_,t,T,T,_,L,L,_, L,T,T,_,T,_,_,_,_, _,L,L,_,T,T,t,_,_, _,_,_,_,T,L,T,T,L, _,_,t,T,T,L,L,L,_, L,T,T,L,T,L,_,_,_, _,L,L,_,L,A,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,T,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,L,_,_,_, _,_,_,_,T,L,L,L,A, _,_,_,L,_,_,_,_,_, _,L,L,_,_,_,_,_,_, _,_,_,_,_,L,_,_,_, _,_,_,L,T,L,L,L,A, _,_,L,L,L,_,_,_,_, _,L,L,_,L,_,_,_,_, _,_,_,_,A,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,t,_,_,_,_, _,_,_,L,T,L,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,L,t,L,_,_,_, _,_,_,L,T,L,_,_,_, _,_,_,_,L,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,L,T,L,_,_,_, _,_,_,L,L,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,L,T,L,_,_,_, _,_,_,_,L,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,A,L,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,A,L,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_, } } ethereal/screenshot.png000066400000000000000000001260561335420417000155430ustar00rootroot00000000000000PNG  IHDRST/|PLTE - ? "+""( -+#9'*.A"1'@'BX%8(56I55#9GB8*@,C-CQAEC2I_7KX:R,`Cf?V=[ mCpRQ5>SjhISBT`LTT}LEdgc[pE[s6Ww$skSMpk?l0{dzMpwE{\]́ϻ͛ȭܱO pHYs   IDATx} [ض-Y( DirPӁP1R;{c̹ Ѳۻ*+Ƽd9是?p~<~ '?<~ O?n''oLGӂ?nOIz۟G5ӏ۟Snֻ?(O*z} ?1~n?ޯp8}cL䣓Dv{^xxg8$iMZ?ro]cx4 _o{&IFǣ N|Q R4; y~2pQN\f?:{qćS!7fz+"_ ǵG3菦H8ݑw  |? W]GGǣcKf&Ya7 Nu:>O7~'я~DYYLԺ%G.O78[<[DaA^&KzfmSiyTn'x/x4LfOlCW燚~ْM+y營rgOFĬ >qLaE&$NZ\=wjniGU/󥷬`h鈰`w^f)lwr?.::x{ M؞J8:𖌁 ]OQ?#ߏs8G^˪Z?XXn'͗w`u'/~aכy~'Kp%:JFIX`1izkK w*pzw;G~ ޮw}!wk+z d0\nx=\0TS77yK? ݥԣݽ:z7s|/zo0cWZ3^vwr) ʸ2/+L?3 8grL~/mCh5O`1>`g˥ Hd >@ۿڣI 2ο(5Y/dSN5؈ p '[ݑٲuG3*{ߜ^DfW6M ; "U#$~ /LE`%_ZD: h8fĭh/4?Z+l[ !dNr;p^Őxx3R$n|o wG3),(߹oTgf#Gl و, `0c12YNlQ0sO"coLbB?Deg]B.Ꮦ ⪋Zlbۅ☌X;O÷z{4fnR\89Nk m\ܙT]bc, M Nep5]Dw1m S[R@='VBEFH`lyJN^}ޟXHǹPt0[~FHX2Llk>Ե_O^Hܿǝb.￾٩29V:tۯn=l?ܜw3]ņN nї IEK|4]K̠ias/?]'c8xu8dq{[Kc6LL*%wۗ56ԽN ֞ˏa ǮEeY%8\¥JjJ_1X-{} `Η}=~eeoe p+D5u{^z!}woӨ/-#vxA|s=i~/* wFhDc*O(gp;.N S`Dgm>b{(& :[R|QR\4Y.iLTg orr[QyUuK1 w_I~59և ڛ{ٶ¦]7[vu wߧk)OOTI.R8c#NQ;lrHQ&SДW"ǣ\ԳX߶ ]uGxw'Ǿ}P442RU󓶮ڻN^z$RX2lG$z X<}v7]VqpnƺFE(G"qs,Gl$ iрcFencxMsiR}Iйm:Eҍ=AXf}77E|7)š< /Ϻ vњ~QJJ!_A;-",+p| /,z\ש5or&kr'8*Xbt}]vh6["Aꝷ'`1bSYn F$ewqN\J+uU`h{,ρcme0:xrYU'h`aEdz+k(/aڊi$Jw_hQS/KS\1lQuo$̦z>,vYft71zn!{I ?eAJ&53iUVuaЮUyt(^?;3=V`IiC%gu&WFo GK /G{긺17b4 fiK.iX] ֬U302BKELBsISKw!;M٬Ei#fUv]^n:ۅ:2IT!,jkUZ%ZI&uEcze范]aנʗe|v ,=wJJ"`AU/r;KU^_qf泮kpW]f^5gZ ,RFuRKQ0B!ބc]460٦Yu 9d ?,\[N1q=޵(O 1iy38l< gٙ>;jn۳5Ū_B쁝x`b{.T%gNދx|._n.uEf%y7+p~%g21/^!kVl 24b%9Aш_i`2:%9/ڭnZ4Mİv庘u1,PX=4oS"[ɑ&e,-rKp鵞\b3y?jD>Vx[/:$,TŤ5^HJo)<w|ߝ^\]M ᡉd ׇ>]2T S1ղ,pn TIaXͲ /<0H$ o<Vi~S}gk(Ȋn˲itQwXxo?Y :oLb fF-r.NVXnZqրiQPm輙m 򶥚P: 6sIݔjTs%(GQ0c$# Τ_hVLl6ES.j3E@i P6ua,_Msu҈*-#cIKwhMf˜-:(93WTpe&j[q5qZ[ȊG=GG[/^2|"W_\s8Y@ Jj0]˳z=Nvaeҗ:.8"W8/\8)"e?,q{dZM ӗ|s;I㮛CV.`s4tVSv^FT ^zikJ^wJwx_2t3?Ŋ :/䞁gl/΢9qqz2dzث;B g.B0Aly1 p+Ke{ Ľ%Eн-pM.Zc#_5:9lL{B\D4 Q-t-V('b_k05jX6f1|3I7f rlcؓdÊG .bj<'I[iGҮCå-'"cty4=tt]Ƭr{UT}jb|O{Ǟ!n]STmZps||=?E`@~YH>[CܸV_̔e~~ М_]]MnH7 fm6)G8ڲAhpF ui– Y@U)#"2Y;fd_"]|PrEO ƢZ@d|!]Z/,!js ]>PYHK9 k 'P{*z&CQwgYAl/J`D@Ot!W\1--}{"il~^%O`'p\NlLrӮ|," tm4 {)2%^ $,zTjkX=p#-]V{z+:m|ўXrWYU, -ɗJE?5 >&ʀh/2/'S.U*|R?g |ss~ ^m *3d"> ^xD`\a 'u\ p6h* YH$bJ?,ؔ23S hˍ͵?Kx,V,R^5]%vCȜ<9A}|57@s_CXhoDpqW{I\Tdif6E8Q1 i=̧㛋KE\5 XmҳQ@ԼG@@)^+I.H+`$;㸡$A+|pDL"J判%ĕšMz˜;3x #Z^9 ,{RR!'{ds0Ql`β \V ,EӄAUa. iX1E, _j+N _i 5;@CdW ? % C$%'#(W<+#dD %JX qXqW,aNUz-n->t9r:};on|zʂOa F< VTD6i_?(? ];&h!%yj)M)+z0ϧq>O+)5e!? i %W@֞,U$y+XB`o2ܫ|LGO3}z$y&)+IpZBcPc5B[-',LF߄[B Eǝ^@Qg/+iu }}J L]u+0W:n{r_ Ͳp}0膕1-(hb1B8ԕ^iW0`miYV:`y<@P{Mρ;elxx0Vhq]ߺ2!+۩c'N+J'9*nȄSYP;+4_uY:\lΥKq'z 뢈 rµJ UQ3YPר c=j bAER6oaf.ҧIp|岋3JiB~4pJ\eGZԯZx~ɂ|bqqqK .I'>V9}Lu}UWMݭVd)26 k52Džκ8 i1_M)H; UJ{RZU ]2t G&JQ'k}h3cG~)_% IDAT/ 0xbK;=u7ZDrW"y)b: 0=='A|EO|(sqxt.@^f9$Y ⎶K2hXͪn}I5 hZƒ.;&U)t A+ZU|DDž5}tDJ Wv zֳ84{ C ߪ+v9bӑxBa}vki7&W į ũfA7'GGXS-YQnUנfd%nBY6/f=Gdͬ-[S6b&E0Sam3 Iy%#Owq܋2.n,#G듣0P{l\`b}ѼmgU^)UF|Ɣ['_Onr3 [Bc٘wq8QF/lmФ1{bjjF:؁׾F+=]GjY*WRsYivp4JtwRA8+щmv\:Wӵ|X]d~ek3;@ &}pPHO;fK^h󸏋̦=kCh EuIxZ]tlR [CȚīZ쵡-azxy>@b05Q&3Y"9p0 `=̙* 8;/jX;Ngz_q! C1-1@xɯbá/me|. wx#"B)>`j{~Ŗn%S9^IǮ F9wkX~Dqr] Le(9yrHakň`Y$ɃЧ=g{oHsXl .DX[7;R.:gs< 7*%O_"v:Ub |9E74X D 5 KE=x)bE6"lBUvM0%X ]QhO!'}E4 *oTG*#K홭aT?q?2~q8$we}}p_X ;zѩ%v, EuXf|GGGߠk[!>9M>9_|ZlV u<)ٿiŒ]kͷFrk#-4LŸ EH0:moQi)*kk% m*\Y# `,ga٨8 (}F,4N\,}+)uP RB)U 5FY$ܱ&0(¯6迓{c[b?s 'oNd88p$eh%ύk"lU6-7Yj8s#ӼQRI>mmzLSV UtrG!?]XO,=:{e* 8uoVIUl~[w;o$OONv{>e[89߃a#t+rF[|L ȎW#l$﹗La\WdE#i) fY(*RL/e Z16T&k pi߬uΆWѓʌFacfThS)V,TXO*ȾAR~4ͷoenqM*}p9?α5EZvcwmFUşM:f۩џ^A,γOg|Rgo`O=6"]td}zqG7i ,n4oi\FVJ¢ meM."vvmsPGo8`8}K>P]6Vmy%-0^Hʏ??~ӧ~;>FLf>!P7;#-O̬+3^f9U66-gF 6?U#7 2vٔl{xm[ېֆe*B|]h=,wJһPDtHv9oI~8+_^~ǟ^Hs 7Zzɭ?o8>!_F (ЎL ]N;2dG˂鉯8z^qE`ںOxMQXmzRUL,B1GkҖbŻ.z"P-ǚ[(BCT|/<3z1o.yO/8>Dpq~`-xl٪cY=ͦ8NFQ4F٘.ce93knN=,I5:d-{Xjl7W+_B~C2 lUuBk WE? 5~:<̚[ԌC 96W{i֤hƄ(OSئn[ϖFt[|E|{oF!}U"K1SmV ߊA˧bɿ"o>"AR{~w}ϸÕ Z$i%UDRB^1<@]br\ mAz͑4c~u,U$3YU,}JFn!eڂnu|RG>x ݴ_@C(_ `/,칇f{wŰXGܥ$8 *,qpйm4m75꾫gի{_پ![[MDtY="p2 gY֔JOs/-s5kt $+ / Sja+J#^JK2r/uĜ&K|.KfR#{Z %lvPIl:KTSe@1 i%(BXjM6,TlC-qQ^%::ߋύt|8Kt@1b` c1VXaE"2쏬Od&INlW%-b"D(nqøwq 4sW.l-Sg} l^hvbPٴ16H=FZM;G[ӏcA,?/ώ' u/ %ewbfN֎5eoly[vQs[2yqljʑs%}J$W ImpܧOl+ VX%e ktui۶e"%wQ8[>X/g A'lŵ11 }8^4l7= jZfłw,(zIÉѥ'ܩ8`$>RVp=o{a_WKǦ҂Ol:B.*Kb1LxSDJ=8b3 f V&D2{ri(8K}6b=D1oDq=I(O"Y_ޡxhKs&XX-BZ6}?"zo븴Յw-"UooTJ?\YETiߜ|G}&hM-fRieY)z=ΫPKn<dSPe- 9_7E 9l;*k ~V~h ٰ$sUkf&~[e=iC->d?Rr vꈆM"$nHdIyvvVe_Lf 3n2,Dj.NyJYrk9k Tqp7 K8lbh٪-7HB/R5 epɥ}j L64k2DÈDĎOM#vƺ0oA>79oBfZ/4ts} KfzYfIOi^3z+1Ӵhck ]ZއIkawt_VĄ]ETӊ$D5d;mB lR %Y0͒IF Mh*~w>5LOɼYc9|$ p3n\ג>n5cIZ("i>j9/eDh?['?WǦMZ3qjE#JqԃӒ=d3đnDxPwlW֚b*}ۑ1䕋|liǦ8>uSTr_䐑'0YYUQ%yֶ/u^BiYf<_pGn<u\EFe6OMgjޗFB# vz] `6J_=MpO$V-3>ԡmsɒbh Y a+/cH]aϒm3ockR_<>c$Ȱ"$;Oot3Iyӧ+k fmn` ׼&UZ6MEh[>=-a BeMY$3\Aټ`'. !ᆾ\G4 o89qrXЈ /d `?Ù1=H>mwVo q>k ~)tNi_T}_O!k,QYE:0a>'OvpEoW]HIu _ l? Lr_ӈ֩mA8tbxEVLlZizϞ."lІ5ϰ [y@^\~YK%+X帞ΦOί1NZNʅ&Ӣ~Y dGK^ygRzt1dIo;|nB>ʽu%kw2=vo}Tļ/poK[;fSĶ8߮Jʈn'+cOiVr!@FޗDp \ ُ:j tHc'i ˒u_Q).Y_E;n,FIE)Ά$v h(kvU^\iv}3rvVMիv˛%B3ee붹[㢆V ^."<*{T̬&ժY?uU4o Iqxa2_Lkx1@(hg!Ƚga>/8K$slHc`m?Rѷ S9϶diq _{ڼJ{V@vNnu]wV=2\]s(6_lf6Y60RzFs,npRݢ)̬@p˫Oʇ'2^fϴ,=/&/?p8u"nolGRI4z_zQz/LBN~]]'j dt l߇{s'u. ퟵIrWQh)DRh{%>6n3)ho.@˻a3AAr 90 Ҿo H`E6?ͭ2{`0 rŸfs޴]'tƞK6r`3@钞}05L=J[0YWݔkUW]s IDAT{iTa6g&e0fΒp:"xXwj_ ]qۼdUˋW1P&Bs+=)d>tKpefZ * HO| )|;p@n 8<`˕lBD/9Cg5۴$z&_H㰡ĕotWkYt^ioƶCk ʅpMחZ< {ql|p{X?p2U`[,1*; =P:I8{K[ AaO+ ?lVf.@2sIdfD%NO=`-_p =2xq\L. ܔq_7v(|oԧ0u. ͎K%v9#/O F=:L6؎SŶKĄib7с8Ɉz-SY 7<9KP%V/%ض ww ?Z¢[=`šp /_@ V,`,29m|a 8ԄI"\M,w%,`E0o' lA70zbEޘdVY稽gö%>ͿS `{ai<::?ǖí*DjYiPueǘR-ii PjiPOL[=e Wr?֢ 8/ibg}I MV?Gs֖VpXQ@+ 5ݎ8aA0JUKx 1YzhduDt(q#7%fWIk=U2w[H挿 S:/d9 ˳Hg.INUDMDl`G^!^̛\Q5LoQiñI"pB/5=TSwk-wox8DHw˒X0F].V)<UB j͜1FBHK[/jV3 Yŋ#`av(k+>i6}1SlU듀|+h[.=uYC;iΙ^oKfoY*T2!fV髍CH#lHDvlZDžkٷC P.Wq//vT*UTm+ީf3NwD.xq2]i* 2^P \Y`l2\"]l67_s/3⦩^. b|OS?25FXȅ%$cg Xvmel} HҒ8RWo:zV 6ܱ.Lю=sM,&|`R[~LDӕ j$I &%[`Xanx{=uG@#-l' DqY2*i2/ Ǽz q q3b5룐Kxr{fz6Xdfza#V kOXPAd\=̀L >t .5h6m6%1η)8^+V)Y4Q߄kĪ 80W]æIh?'ar$yv6}l'XQVǫ&{x'jEox[iuCeÌ 3)ʠHN}i6>!zZt5&&3 $ /" S׌l|ϧ /X L$ԞsI {jЊ"Bz/Yy2Jb-պܷ7>eRʼn6L%8N "Y͒-Pc١Ul5zMCSR*vdŖioW=ʌ&j046~1+:Uh_(dC#e*%,}[7 ny-9 3ePS1+V~QxlE)|E(LebBI /.)n|hҢÝ)N!J行9Mtu^{.&z.ّtrIk-6î98{0Gk@R5#.pm[dJ 'M 9MHyŰ0iQcVQ7$ >d1\9s.&yᴔ%b+s5XY|y‚R\|~o HOSD㲺I7vȏ5G{g=ޛȶI;hgP ķ6/N.s-s80 R1"vA7\El  _RH9AU \7j$дUroaƼh>UVlx}2q9.tXU-jh jJeu;-^I}/m`/wnMb٦b iy#9+u%1}Qp\5ŹA~*D$}JIшo i6b`.aLt{D>kΪ*dUG ,R/M7D9xŢ+7ifx+f@q<-! ( 3*JF/)wl.]ædy&47zi ۬D .򖵀X[AZY [#/"ZnHX.xSfL/^dz|MAj`Wބoի 1/3Ӱ\=P 6IfBl2d(;g%thvSk%)_4!e'һtuue0w4~O|nTHxI9 Mj挃Wl|g]\K "J2# f+a!a qD e@x=[{RR⦁i4Pl([ctҔEm"Dsܫ bXl1LW& T)"Q)қ7vrKScM`B_%NЧN~cK&zx)^w}uk?f k#q0}u1Agc{3r[)t۽{-ϲ4fQebeWLj@TOO&0Xq͍$Kh%1쇞0,HbZ=ٟW%zSG&}H-6f}!q8(ocd"V%ٜ!1c%sPY$DbXzl5sMҘqO8伿Z=/|G|Cy/- ZLFHq4 Bާy#NlzyZ#r 0)  j4`դaDB-5/ggq7!N6iukSntϥ`"A mj$ih/1²CL8c!bޝ 1ya{*#8Y I;6 ك-Q$oz4mefg+}g8 >PB65jՎ4q>Af6ߤ,689;{YM«N#+jrYL^n)uBY#I)TXi?8v rgAhS>aQgl6]T3??os<,t/UL̥}M\F<u j>M̚2H'FGl^g2bffE&1/l M{~/}WRALN+K ѸwHd4j k+Aݝ-R1n dٙ0߭V_nV8+8-haIhyCJ,5RRꎒ\=0b;mX2dYG:k6U'NJʁCMIpRa*JAJ6f]%U}`Rv \UM 7(Vj[IUclQ+Dlt+^E~ή66Qysr<>6s7[RX2$Lr I3Ȫ+,񂤊9~Ax\Ңhu}?o_ȥ5]Y8 ni+ !MdYCg&|Ÿ'sћB. 2lﱌs218O'F: stXlأ'0aG :y.=ш8A[{~;K^dj Of 5:\R3lsHoZH]4M2IBpieB%pDASfrJ!`Q{ou*ec[v yPiEЁm^{4Wy_k1yIhuIMIe\.h3)0:G迶guϾ>7^OUz+q,m5rz U*QgG_oRq*XHh8p{|{VSJautL|fbj.8q P\/kc?V4q\6UŽb6qY c(q%X/ퟱ}}n!u0OS}Tm]ʲS3Y Nc=eŤWlkRFX9Hw Bn3f+)?n"M((_"LZ"?4[vh6kW@LD65+ */׳dЯMC0Bv=Zt 90ݭ9o?El|xSԤ 5".~IvN&;ֿܹ{)CSohX2w VUoGu/UQ8!O[Q\Ֆi-b-X;PuI)e2w?YblulYFnlXʡkQW[=l/.upɌ)r%ߗ$ahi N>J(a Is .,Rh,d* X)J?K^@{ 8M҄uV9NQŒ;#D=Q@=!ͰݒԆSyDs/BoA=}&x"\ V)xyْUn$|=i'K[%]/ 08~C`J("}nՂ+M12@8b't석9%[ޓ< @]ż ] CxW~v2dVv #ZQ"󗈹|7nHowJ~5BR8ښa;!&!DN&1\8ْw[M8M?GRC.H|D ] yjVmj, bC@:Sx C>bdIp$<4kG mX`lIYe Y9!u'%=]"-!?h:u>@,&wj )s[kGv#[dγq*;Vd ݈ d2%Yg yq8 \F"8p#~&qhLjM:ki}p%Yܾ73aRY#\ÕiQ7%Bl 7Zq<h~TZvT >r~gu|z[5/W$q;qByy[o:*>,MSqjw6>Zop!݁?n]I5wuZ0•vBFv f9ZV@u"N~b%aUIɡV/{۽ҵdDWa av3 ;<ӊ4^zVŌ%{PkL=74w8,-&fV`j{ -7CNLn:!r0O|gOKbB[w/I6\ȩFHNw|ֿ3t8dxxGj3i.e|`@sTX\h5 ݇1Hr ,}-yOb)p\akY{A7evP.80ىf̧VVަn 0Ѩ)."Bwp @1qY>q*_95~g~9KR~C6qiU? Lmc3);wnI~zOߧ ZRgaL=DC7ZjɒE(\{cu"!cm9j:ڏ{qq~ /}F>jVPm7F:]$jU'"x0֟V ~G?a K~"%C^ew|7{}cpi$AI;TA1R?7&NqC O0%UsqeUy_;&S1)M7(SJ-VBhZ'`KNb=vR&qbWƁ 2jE2 לq$IH} MЉKw6qdLc2y [M6jT31$ bP:%g,kv_J6s&&ٳۮAZyj}+bTI{qPJt$کƥ5+;6.9݉xLijpߒ1?ʀ>딩2$DŽcK0\$c?2v]B7b N@n/j&xhaXG8 jmq6\xElVm]"}RN=3W݃L> 5s)ȋnݳDЖL2GHgYk'C|9Yb9YrWҚ!q_@?t72u>9b. ߂g$CNCrɋd>(aL@:}"]u]!bk'2A23(XR{( di|DXO‡J\ B97;ǹ68dǘm%Ymf]3 ՙytR:c$1.5f#Np:YֈL-<oL]skIw A|{8|bdH"18b=兎䂟 _-hwTp‡Vwq0g F2d(A0;r Vл-~tgÔ8 &)E<0x?aZME!bS[m1uяg#L{ECsڂxF`Clu;"??*Oi\VMU z9,#HH1ْNnɹ@1?Pt{4mL0zө$k|"񤍭bnI9?9 oIK۷O?O7l[ 鉝*F9ֳ^dRώB]b{$-9RZY 56o8nHy+C6@^{!!fn*.g6v-upyȳ?6ӉlKCHO8bUB6BrQ$9vLo'('!wl49"ahvikx%4 \q#kOp) ڟpRwۿ.nooYR"ry]@s%`_Y#\c B) )+^ţ.;!+7,\tLQz# #g 3d]ςA?HKH'WM*T oU[%3Xmb: {{n[ADR!"OQ}{I|;ce1KޮiQRl; 15t6I~\Vte& 0:bI2#lbqQ 9B深6S7vo&H0 CNL hϿUqR>9t ,Zٌ4"aB$ ZWa+,}jl%Qm8 ITn:ђYkc[5md5\pL'Yn|qG?716 Cf),hJ;¦{&~56) S,~dSȜ>y8fՋ[&|_CSB Q^c}=c%, ,6ׂ/PO\ۘ):AVǰ#L"+IsF3Uj1z1#Wi#?#Ƿfq"R !7:l $^/7.Vٽ%wu&[V WYmIQsK M%Ś: z"MA旉9H#HBz{?9&$" shnfgm*a$`]G> Kr|(,vdbFyԘ]OZfnrnsJQbb{I^An٬C_HKRp|}&/>fPV0EGr߹GSro)HD 4 āfk|Z(X -Z((&ov'?$*՜SyD o$H_ZSݭl߷- lNV rZ:"v+э0WsQ XjK6ljxs'n-ngWHz8qT)|܆".}ʖ#H &N^FkOABDc.%99".;rج)UC_L'+nƆI0#Q߳2QNɪmEo#-< aɆӆ9~nwSf1(: ZV/'?#Bڻ:^{,|[n3f6W3Ћc0m:Yr$P@Ev-"䜙|uR-˔Iyȶllei, 2P2w,R|ﵢ[S*5 oK; 3}++xVJrF#|ʸz`X|/̪qENOh4ՈT`,mÔLFNg|" X{l\#)>v/DWYIjz0g3ί%ӥ‚3$}'нSPCPRGntb};fhSX ezR+aHnڅY0&Fڅ9l/⭨j} Jl":;At%F$YI?c૫4I3!ceI6LUa+ y?`tP)a^S&Nf?<3s%]j@݉~ZeFmV0a>rҾaS{`ƭ`ն,޴]A_̏|rҷL_]#a}*Us˫@az:?~y}b˱m8)ގXA}qcj*y5w_},m{wj$nSkRn)KЦHۼvam- kz4{$4W.m$36׏e7WŘpO/Spd8~$G"$)(h?6c<Vؑ껓>J՟ӕ vV[gs}F|$34p&'e~n~,>B`8:7X8$6d=椝p%X/U*=\#pvn{4 gq_$$2}x.sʕ2>lx(tfK_Xm#xz|c1y@0}3^%J[UO?}''@LtV"d |n闛!m}:'*yivygp˟LCՄgɹAk#g?HKn2*Ɵ iD IDAT;sآ<禘g`0"mtybBLf F|!8ꅫ"!xDo XbkԀi*6Ǖk-D:SIz=-hgbqKU -fvR"L 9^QbZw@{3藷0qc7Ah:M,iDmVkkmnt(VȚ[Gz#(W:ܽүO ]'^z\3nǀtCu]i.3/PB]ᕼ){ȁ5=Fb_<6pc63a ӌQA멍@ p?ZJ:y KI /1$_FC c]%1׸YH\nW0[D:}ܱ<W]rGsj`zszz=z7q nj)ANv/8c}j/mk`jgV.T֖Ŗn|$q_}^Y~lҝXԌ*zHL!9]l}ޏ7l={s$10b>_Ľ nJ)v<|#d$^-2= cz,7x4 ]=BydAGJB鰼/Vy0cM0 pVk!l޻ԙLX5`Cq6ۀ$Vw'Ū&8h1:DvT["g ed) c%rF=@4>zAFL+kNIoŸ FiW^e:P؜^krHOJu8b#DNu;3H9?=`Ѷ&]4S_6r`a$14/Mb4rzєb 3k8râAh s:l{X"XGFB=pAT'8X x8I"PPج;` VcxUcD]v]ߢM: WOA|] q#B7V'ek , ƒ8 ^ͥ~zśJ,(R˴$T)GQæK kl gm0H*^)}I[ɋ,&G=^*n *1?l#}SNuNIcWʑ9sMwB ` LJjN*f {lq- ivrcER | f9+EН+:%J"`+@qj<JOx r?~!)Jz3SI{㨴rOYsF:vZ,ܻ)쇘]nD{rJ /B7;P9}3߀}bV~vfP*6_fD~~*܍؅Υ0Q_lve^b^ $Kadgsb@2ܣߟ]aHq O:1Zp@:L}r;eY78HtY4H_Х cU^+ɏlXQxDAg)Ds7 ̓^;#ϷƖmT!XMXflF:%=pAX`n߅{)ۗ$c$W̾G"z L6,-t@- [!]>hAcam}P?,C@|3H\B1*SyB~ zVՂ *^^7QyfN0!$axNcqfcyl$PɌQY}8K"9ƫ4䞜bF.D$TEAQK`[\񌃢^[͕ G Aj4'뵴qxNV49UŠXiu}ZOW` Fg D#NE 2M)^Hqt8bݚ~(F-yZS(^G5q{s`&\#jP=향?s?Y*͸I)j$xF=Mu./6&#Vnw1Ƈ"رw" [d-1n`#,J >&>Hӂ~b5 ] anS-eWjtc77mWPafOxo9aɂEZ+d7Bc,uD$jZ. 4i&mKj0RNA6E8KIT9W-V5^\p孋z:M哛2pF)e9i-keCxG䡂zsŌnsvsf89]Ն nOTY R̒<_vM\G 냺Dx9!?C]w#u`I;bq59}JZay 2*<e|}_^GԿ1PS՝ȽvEq|w]֟hK XVo欅])_*W.$ V3R-R\'n'o>UPѣ m8S.% 5 LH"hV EnHbŭPYֶqIIjL3eW56>N㊇{jq [YDp&PY7L35GӼ~O{9+NnNҼ*PU r^٫ai_WW:Ġ LZ k[81A}r^T**KΕSeo3ȳCSɯ'ZNqJ?u5pJR,I^8`(5Cm䊃9 5rfr u3~!ȥFm3jIze NW{Kݎu)UCC@]DLռFJxOj27>OՒUy<`eM |\[Fsfiiv5M:Q?d{'1TJV=9Y6/gKS<kVc eȤR<7 ~**Sh7`6u[IWYl8F/0M挝 `{<}f%k 2iq TKUхdT*?^pK:\|ڣ9s13i@I[QV%RZJtSO+3~= 6U(v 7%aqPEtd1Y&2T$=/p󼯧K~NM0(ϕ>I |#H0MwLW& c*EusN?kY",U'Ϙp x9LxA:үuQjx| e:&f`4RzN.zR|?v^c%WM:fbUr2(W[YmoOZՙZ)2]DL/{ps Cҫ /k(X Yaؑqp.<ϾѯuxfSyO`Ӭz9;O} E*ʤeS|4T9AhT)T&Z|נի{N 9M$os?*zI"пr >ѪVy~ '/CSgVOUdbɲC0P\7}VP;,oH6{^EXaT>}> 3qr*ϯ87ׯAKyn8&\"qNȱTŸE_hb[L pJ? g%?:W#|$A5J<G. XE8'%OJe>nCUQ$|Cy4KҞnݵD1yJ@8Iw+@ U=`ꡥyɐ]fN(*UcӔ 72n $n{N&,9>e;_"Z 겖Ga_=p/k2s(8f e\8Fsq0Ķ9JWߪMuP $9FzV ͈&T2Pb,Z7*rNGkrc9-;"f wUg-=\bi9tXlcChj Pv>TsHF yq+N.1y$ʒW62gqZ9nkjs}>yvJK#ȖUmp8z/ԲǯNlaA׹yCfH/+g1'|=*s,B\Og^J%#g> gn+J,qNpda<¾'r8WҨ[zK^-e_V `pثsS-ˠgR%v;`!G {m%:T/=~k]a$`2̖fkX ~JByN?r oSo:xPpP;,3/+Ûj:ewc}WG«I pn&A IDAT 6M|jiܯC#5Ҫu^ev2Fղ bG_-ꆕ ^*E"e9cj;s*Z|f|PTm`:A7ٌ^|X+c$.Sd/A¼!@e巡x~R;7C$hCy B˨g3_o*?"rdT}1o+3ebft<T; ޥeE2IR|ݬjXMrvH4`OReh&+z2Ek, ztmO~4/qi ?JXjVm%' Q4fsa_ݲNi`ڿ,]O7UhH*6hx|&C &_A > onSUa6NrusvATBw =;t!xl&Йђxgې()z&s8n:Ǵ)I"ŠS_<xe=/X +XG4\3)<^W5ʁwu!|`/G&rWA4PNq2>nUWME>>B\5!=]p1eϩn %ᕱPוJDS\+{SUڛ317cJD$Ёt_. xe+]s,m"6Z5-I}MoisEKy^_cWja`;nc٭Rt-o 7W1GjFY_-ĩ \EJ%elݼӔޅC$}-'*ˡp࢒Hr' K|دuht|:dGV;.;a [NG`.nq</+) tү*m>}2KrWҤ+Vj6>f֎'x^E݂PzJ W}ખ}?qǒ p;/ԄӌZT0a{0*kڅ+B*:jkN~>9wk/"0`x{XzuC;P$C.37,MYutr?;;>ryaqexu =6Aث${*}SV|KgUqp)ۑ= NTQT`&hGB*v%()kʈ5CZ7,@Ws`CEK~F ndp zF:q)V$23s%V-E+1OE*;n*><S::rPJIVm+u4?v!ݣ>[jHWϯ+CO*"-8v?p#mjb=?7%{N^ ]|[ [=)gv~,G(ܓRgbc6k~oZB([歪@ = ;$x/RiogC)w5?ݸR?:ҏ,.l~`3Ns;p=e &?7HIENDB`ethereal/sealife.lua000066400000000000000000000113121335420417000147570ustar00rootroot00000000000000 local S = ethereal.intllib -- Seaweed minetest.register_node("ethereal:seaweed", { description = S("Seaweed"), drawtype = "plantlike", tiles = {"seaweed.png"}, inventory_image = "seaweed.png", wield_image = "seaweed.png", paramtype = "light", walkable = false, climbable = true, drowning = 1, selection_box = { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} }, post_effect_color = {a = 64, r = 100, g = 100, b = 200}, groups = {food_seaweed = 1, snappy = 3, flammable = 3}, on_use = minetest.item_eat(1), sounds = default.node_sound_leaves_defaults(), after_dig_node = function(pos, node, metadata, digger) default.dig_up(pos, node, digger) end, }) minetest.register_craft( { type = "shapeless", output = "dye:dark_green 3", recipe = {"ethereal:seaweed",}, }) -- agar powder minetest.register_craftitem("ethereal:agar_powder", { description = S("Agar Powder"), inventory_image = "ethereal_agar_powder.png", groups = {food_gelatin = 1, flammable = 2}, }) minetest.register_craft({ output = "ethereal:agar_powder 3", recipe = { {"group:food_seaweed", "group:food_seaweed", "group:food_seaweed"}, {"bucket:bucket_water", "bucket:bucket_water", "default:torch"}, {"bucket:bucket_water", "bucket:bucket_water", "default:torch"}, }, replacements = { {"bucket:bucket_water", "bucket:bucket_empty 4"}, }, }) -- Blue Coral minetest.register_node("ethereal:coral2", { description = S("Blue Coral"), drawtype = "plantlike", tiles = {"coral2.png"}, inventory_image = "coral2.png", wield_image = "coral2.png", paramtype = "light", selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 1 / 4, 6 / 16}, }, light_source = 3, groups = {snappy = 3}, sounds = default.node_sound_leaves_defaults(), }) minetest.register_craft( { type = "shapeless", output = "dye:cyan 3", recipe = {"ethereal:coral2",}, }) -- Orange Coral minetest.register_node("ethereal:coral3", { description = S("Orange Coral"), drawtype = "plantlike", tiles = {"coral3.png"}, inventory_image = "coral3.png", wield_image = "coral3.png", paramtype = "light", selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 1 / 4, 6 / 16}, }, light_source = 3, groups = {snappy = 3}, sounds = default.node_sound_leaves_defaults(), }) minetest.register_craft( { type = "shapeless", output = "dye:orange 3", recipe = {"ethereal:coral3",}, }) -- Pink Coral minetest.register_node("ethereal:coral4", { description = S("Pink Coral"), drawtype = "plantlike", tiles = {"coral4.png"}, inventory_image = "coral4.png", wield_image = "coral4.png", paramtype = "light", selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 8 / 16, 6 / 16}, }, light_source = 3, groups = {snappy = 3}, sounds = default.node_sound_leaves_defaults(), }) minetest.register_craft( { type = "shapeless", output = "dye:pink 3", recipe = {"ethereal:coral4",}, }) -- Green Coral minetest.register_node("ethereal:coral5", { description = S("Green Coral"), drawtype = "plantlike", tiles = {"coral5.png"}, inventory_image = "coral5.png", wield_image = "coral5.png", paramtype = "light", selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 3 / 16, 6 / 16}, }, light_source = 3, groups = {snappy = 3}, sounds = default.node_sound_leaves_defaults(), }) minetest.register_craft( { type = "shapeless", output = "dye:green 3", recipe = {"ethereal:coral5",}, }) -- Undersea Sand minetest.register_node("ethereal:sandy", { description = S("Sandy"), tiles = {"default_sand.png"}, is_ground_content = true, groups = { crumbly = 3, falling_node = 1, sand = 1, not_in_creative_inventory = 1 }, drop = "default:sand", sounds = default.node_sound_sand_defaults(), }) -- randomly generate coral or seaweed and have seaweed grow up to 14 high if ethereal.sealife == 1 then minetest.register_abm({ label = "Grow coral/seaweed", nodenames = {"ethereal:sandy"}, neighbors = {"group:water"}, interval = 15, chance = 10, catch_up = false, action = function(pos, node) local sel = math.random(1, 5) pos.y = pos.y + 1 local nod = minetest.get_node(pos).name if nod == "default:water_source" and sel > 1 then if minetest.get_node(pos).name == "default:water_source" then minetest.swap_node(pos, {name = "ethereal:coral" .. sel}) end return end if nod == "ethereal:seaweed" or sel == 1 then local height = 0 local high = 14 while height < high and minetest.get_node(pos).name == "ethereal:seaweed" do height = height + 1 pos.y = pos.y + 1 end if pos.y < 1 and height < high and minetest.get_node(pos).name == "default:water_source" then minetest.swap_node(pos, {name = "ethereal:seaweed"}) end end end, }) end ethereal/settings.conf_example000066400000000000000000000041751335420417000170770ustar00rootroot00000000000000 --[[ Ethereal Settings can be changed here and kept even after the mod has been updated --]] ethereal.leaftype = 0 -- 0 for 2D plantlike, 1 for 3D allfaces ethereal.leafwalk = false -- true for walkable leaves, false to fall through ethereal.cavedirt = true -- caves chop through dirt when true ethereal.torchdrop = true -- torches drop when touching water ethereal.papyruswalk = true -- papyrus can be walked on ethereal.lilywalk = true -- waterlilies can be walked on ethereal.xcraft = true -- allow cheat crafts for cobble->gravel->dirt->sand, ice->snow, dry dirt->desert sand -- Set following to 1 to enable biome or 0 to disable ethereal.glacier = 1 -- Ice glaciers with snow ethereal.bamboo = 1 -- Bamboo with sprouts ethereal.mesa = 1 -- Mesa red and orange clay with giant redwood ethereal.alpine = 1 -- Snowy grass ethereal.healing = 1 -- Snowy peaks with healing trees ethereal.snowy = 1 -- Cold grass with pine trees and snow spots ethereal.frost = 1 -- Blue dirt with blue/pink frost trees ethereal.grassy = 1 -- Green grass with flowers and trees ethereal.caves = 1 -- Desert stone ares with huge caverns underneath ethereal.grayness = 1 -- Grey grass with willow trees ethereal.grassytwo = 1 -- Sparse trees with old trees and flowers ethereal.prairie = 1 -- Flowery grass with many plants and flowers ethereal.jumble = 1 -- Green grass with trees and jungle grass ethereal.junglee = 1 -- Jungle grass with tall jungle trees ethereal.desert = 1 -- Desert sand with cactus ethereal.grove = 1 -- Banana groves and ferns ethereal.mushroom = 1 -- Purple grass with giant mushrooms ethereal.sandstone = 1 -- Sandstone with smaller cactus ethereal.quicksand = 1 -- Quicksand banks ethereal.plains = 1 -- Dry dirt with scorched trees ethereal.savannah = 1 -- Dry yellow grass with acacia tree's ethereal.fiery = 1 -- Red grass with lava craters ethereal.sandclay = 1 -- Sand areas with clay underneath ethereal.swamp = 1 -- Swamp areas with vines on tree's, mushrooms, lilly's and clay sand ethereal.sealife = 1 -- Enable coral and seaweed ethereal.reefs = 1 -- Enable new coral reefs in default ethereal/stairs.lua000066400000000000000000000245711335420417000146670ustar00rootroot00000000000000 local S = ethereal.intllib -- Stairs Redo if stairs and stairs.mod and stairs.mod == "redo" then stairs.register_all("crystal_block", "ethereal:crystal_block", {cracky = 1, level = 2, puts_out_fire = 1, cools_lava = 1}, {"crystal_block.png"}, S("Crystal Block Stair"), S("Crystal Block Slab"), default.node_sound_glass_defaults()) stairs.register_all("icebrick", "ethereal:icebrick", {cracky = 3, puts_out_fire = 1, cools_lava = 1}, {"brick_ice.png"}, S("Ice Brick Stair"), S("Ice Brick Slab"), default.node_sound_glass_defaults()) stairs.register_all("snowbrick", "ethereal:snowbrick", {crumbly = 3, puts_out_fire = 1, cools_lava = 1}, {"brick_snow.png"}, S("Snow Brick Stair"), S("Snow Brick Slab"), default.node_sound_dirt_defaults({ footstep = {name = "default_snow_footstep", gain = 0.25}, dug = {name = "default_snow_footstep", gain = 0.75}, })) stairs.register_all("dry_dirt", "ethereal:dry_dirt", {crumbly = 3}, {"ethereal_dry_dirt.png"}, S("Dried Dirt Stair"), S("Dried Dirt Slab"), default.node_sound_dirt_defaults()) stairs.register_all("mushroom_trunk", "ethereal:mushroom_trunk", {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, {"mushroom_trunk.png"}, S("Mushroom Trunk Stair"), S("Mushroom Trunk Slab"), default.node_sound_wood_defaults()) stairs.register_all("mushroom", "ethereal:mushroom", {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, {"mushroom_block.png"}, S("Mushroom Top Stair"), S("Mushroom Top Slab"), default.node_sound_wood_defaults()) stairs.register_all("frost_wood", "ethereal:frost_wood", {choppy = 2, oddly_breakable_by_hand = 1, put_out_fire = 1}, {"frost_wood.png"}, S("Frost Wood Stair"), S("Frost Wood Slab"), default.node_sound_wood_defaults()) stairs.register_all("yellow_wood", "ethereal:yellow_wood", {choppy = 2, oddly_breakable_by_hand = 1, put_out_fire = 1}, {"yellow_wood.png"}, S("Healing Wood Stair"), S("Healing Wood Slab"), default.node_sound_wood_defaults()) stairs.register_all("palm_wood", "ethereal:palm_wood", {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, {"moretrees_palm_wood.png"}, S("Palm Wood Stair"), S("Palm Wood Slab"), default.node_sound_wood_defaults()) stairs.register_all("birch_wood", "ethereal:birch_wood", {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, {"moretrees_birch_wood.png"}, S("Birch Wood Stair"), S("Birch Wood Slab"), default.node_sound_wood_defaults()) stairs.register_all("banana_wood", "ethereal:banana_wood", {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, {"banana_wood.png"}, S("Banana Wood Stair"), S("Banana Wood Slab"), default.node_sound_wood_defaults()) stairs.register_all("willow_wood", "ethereal:willow_wood", {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, {"willow_wood.png"}, S("Willow Wood Stair"), S("Willow Wood Slab"), default.node_sound_wood_defaults()) stairs.register_all("redwood_wood", "ethereal:redwood_wood", {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, {"redwood_wood.png"}, S("Redwood stair"), S("Redwood Slab"), default.node_sound_wood_defaults()) stairs.register_all("bamboo_wood", "ethereal:bamboo_floor", {snappy = 3, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, {"bamboo_floor.png"}, S("Bamboo stair"), S("Bamboo Slab"), default.node_sound_wood_defaults()) -- Stairs Plus (in More Blocks) elseif minetest.global_exists("stairsplus") then stairsplus:register_all("ethereal", "crystal_block", "ethereal:crystal_block", { description = S("Crystal block"), tiles = {"crystal_block.png"}, groups = {cracky = 1, falling_node = 1, puts_out_fire = 1, cools_lava = 1}, sounds = default.node_sound_glass_defaults(), }) stairsplus:register_all("ethereal", "icebrick", "ethereal:icebrick", { description = S("Ice Brick"), tiles = {"brick_ice.png"}, groups = {cracky = 3, puts_out_fire = 1, cools_lava = 1}, sounds = default.node_sound_glass_defaults(), }) stairsplus:register_all("ethereal", "snowbrick", "ethereal:snowbrick", { description = S("Snow Brick"), tiles = {"brick_snow.png"}, groups = {crumbly = 3, puts_out_fire = 1, cools_lava = 1}, sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_snow_footstep", gain = 0.25}, dug = {name = "default_snow_footstep", gain = 0.75}, }) }) stairsplus:register_all("ethereal", "dry_dirt", "ethereal:dry_dirt", { description = S("Dried Dirt"), tiles = {"ethereal_dry_dirt.png"}, groups = {crumbly = 3}, sounds = default.node_sound_dirt_defaults(), }) stairsplus:register_all("ethereal", "mushroom_trunk", "ethereal:mushroom_trunk", { description = S("Mushroom Trunk"), tiles = {"mushroom_trunk.png"}, groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = default.node_sound_wood_defaults(), }) stairsplus:register_all("ethereal", "mushroom", "ethereal:mushroom", { description = S("Mushroom Top"), tiles = {"mushroom_block.png"}, groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = default.node_sound_wood_defaults(), }) stairsplus:register_all("ethereal", "frost_wood", "ethereal:frost_wood", { description = S("Frost Wood"), tiles = {"frost_wood.png"}, groups = {choppy = 2, oddly_breakable_by_hand = 1, put_out_fire = 1}, sounds = default.node_sound_wood_defaults(), }) stairsplus:register_all("ethereal", "yellow_wood", "ethereal:yellow_wood", { description = S("Healing Wood"), tiles = {"yellow_wood.png"}, groups = {choppy = 2, oddly_breakable_by_hand = 1, put_out_fire = 1}, sounds = default.node_sound_wood_defaults(), }) stairsplus:register_all("ethereal", "palm_wood", "ethereal:palm_wood", { description = S("Palm Wood"), tiles = {"moretrees_palm_wood.png"}, groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) stairsplus:register_all("ethereal", "birch_wood", "ethereal:birch_wood", { description = S("Birch Wood"), tiles = {"moretrees_birch_wood.png"}, groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) stairsplus:register_all("ethereal", "banana_wood", "ethereal:banana_wood", { description = S("Banana Wood"), tiles = {"banana_wood.png"}, groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) stairsplus:register_all("ethereal", "willow_wood", "ethereal:willow_wood", { description = S("Willow Wood"), tiles = {"willow_wood.png"}, groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) stairsplus:register_all("ethereal", "redwood_wood", "ethereal:redwood_wood", { description = S("Redwood"), tiles = {"redwood_wood.png"}, groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) stairsplus:register_all("ethereal", "bamboo_wood", "ethereal:bamboo_floor", { description = S("Bamboo"), tiles = {"bamboo_floor.png"}, groups = {snappy = 3, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) -- Default Stairs else stairs.register_stair_and_slab("crystal_block", "ethereal:crystal_block", {cracky = 1, level = 2, puts_out_fire = 1, cools_lava = 1}, {"crystal_block.png"}, S("Crystal Block Stair"), S("Crystal Block Slab"), default.node_sound_glass_defaults()) stairs.register_stair_and_slab("icebrick", "ethereal:icebrick", {cracky = 3, puts_out_fire = 1, cools_lava = 1}, {"brick_ice.png"}, S("Ice Brick Stair"), S("Ice Brick Slab"), default.node_sound_glass_defaults()) stairs.register_stair_and_slab("snowbrick", "ethereal:snowbrick", {crumbly = 3, puts_out_fire = 1, cools_lava = 1}, {"brick_snow.png"}, S("Snow Brick Stair"), S("Snow Brick Slab"), default.node_sound_dirt_defaults({ footstep = {name = "default_snow_footstep", gain = 0.15}, dug = {name = "default_snow_footstep", gain = 0.2}, dig = {name = "default_snow_footstep", gain = 0.2} })) stairs.register_stair_and_slab("dry_dirt", "ethereal:dry_dirt", {crumbly = 3}, {"ethereal_dry_dirt.png"}, S("Dried Dirt Stair"), S("Dried Dirt Slab"), default.node_sound_dirt_defaults()) stairs.register_stair_and_slab("mushroom_trunk", "ethereal:mushroom_trunk", {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, {"mushroom_trunk.png"}, S("Mushroom Trunk Stair"), S("Mushroom Trunk Slab"), default.node_sound_wood_defaults()) stairs.register_stair_and_slab("mushroom", "ethereal:mushroom", {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, {"mushroom_block.png"}, S("Mushroom Top Stair"), S("Mushroom Top Slab"), default.node_sound_wood_defaults()) stairs.register_stair_and_slab("frost_wood", "ethereal:frost_wood", {choppy = 2, oddly_breakable_by_hand = 1, put_out_fire = 1}, {"frost_wood.png"}, S("Frost Wood Stair"), S("Frost Wood Slab"), default.node_sound_wood_defaults()) stairs.register_stair_and_slab("yellow_wood", "ethereal:yellow_wood", {choppy = 2, oddly_breakable_by_hand = 1, put_out_fire = 1}, {"yellow_wood.png"}, S("Healing Wood Stair"), S("Healing Wood Slab"), default.node_sound_wood_defaults()) stairs.register_stair_and_slab("palm_wood", "ethereal:palm_wood", {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, {"moretrees_palm_wood.png"}, S("Palm Wood Stair"), S("Palm Wood Slab"), default.node_sound_wood_defaults()) stairs.register_stair_and_slab("birch_wood", "ethereal:birch_wood", {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, {"moretrees_birch_wood.png"}, "Birch Wood Stair", "Birch Wood Slab", default.node_sound_wood_defaults()) stairs.register_stair_and_slab("banana_wood", "ethereal:banana_wood", {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, {"banana_wood.png"}, S("Banana Wood Stair"), S("Banana Wood Slab"), default.node_sound_wood_defaults()) stairs.register_stair_and_slab("willow_wood", "ethereal:willow_wood", {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, {"willow_wood.png"}, S("Willow Wood Stair"), S("Willow Wood Slab"), default.node_sound_wood_defaults()) stairs.register_stair_and_slab("redwood_wood", "ethereal:redwood_wood", {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, {"redwood_wood.png"}, S("Redwood stair"), S("Redwood Slab"), default.node_sound_wood_defaults()) stairs.register_stair_and_slab("bamboo_wood", "ethereal:bamboo_floor", {snappy = 3, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, {"bamboo_floor.png"}, S("Bamboo stair"), S("Bamboo Slab"), default.node_sound_wood_defaults()) end ethereal/strawberry.lua000066400000000000000000000063101335420417000155550ustar00rootroot00000000000000 local S = ethereal.intllib -- Strawberry (can also be planted as seed) minetest.register_craftitem("ethereal:strawberry", { description = S("Strawberry"), inventory_image = "strawberry.png", wield_image = "strawberry.png", groups = {food_strawberry = 1, food_berry = 1, flammable = 2}, on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "ethereal:strawberry_1") end, on_use = minetest.item_eat(1), }) -- Define Strawberry Bush growth stages local crop_def = { drawtype = "plantlike", tiles = {"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 = { snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, sounds = default.node_sound_leaves_defaults(), } --stage 1 minetest.register_node("ethereal:strawberry_1", table.copy(crop_def)) -- stage 2 crop_def.tiles = {"strawberry_2.png"} minetest.register_node("ethereal:strawberry_2", table.copy(crop_def)) -- stage 3 crop_def.tiles = {"strawberry_3.png"} minetest.register_node("ethereal:strawberry_3", table.copy(crop_def)) -- stage 4 crop_def.tiles = {"strawberry_4.png"} minetest.register_node("ethereal:strawberry_4", table.copy(crop_def)) -- stage 5 crop_def.tiles = {"strawberry_5.png"} minetest.register_node("ethereal:strawberry_5", table.copy(crop_def)) -- stage 6 crop_def.tiles = {"strawberry_6.png"} crop_def.drop = { items = { {items = {"ethereal:strawberry 1"},rarity = 2}, {items = {"ethereal:strawberry 2"},rarity = 3}, } } minetest.register_node("ethereal:strawberry_6", table.copy(crop_def)) -- stage 7 crop_def.tiles = {"strawberry_7.png"} crop_def.drop = { items = { {items = {"ethereal:strawberry 1"},rarity = 1}, {items = {"ethereal:strawberry 2"},rarity = 3}, } } minetest.register_node("ethereal:strawberry_7", table.copy(crop_def)) -- stage 8 crop_def.tiles = {"strawberry_8.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { {items = {"ethereal:strawberry 2"},rarity = 1}, {items = {"ethereal:strawberry 3"},rarity = 3}, } } minetest.register_node("ethereal:strawberry_8", table.copy(crop_def)) -- growing routine if farming redo isn't present if not farming or not farming.mod or farming.mod ~= "redo" then minetest.register_abm({ label = "Ethereal grow strawberry", nodenames = { "ethereal:strawberry_1", "ethereal:strawberry_2", "ethereal:strawberry_3", "ethereal:strawberry_4", "ethereal:strawberry_5", "ethereal:strawberry_6", "ethereal:strawberry_7" }, neighbors = {"farming:soil_wet"}, interval = 9, chance = 20, catch_up = false, action = function(pos, node) -- are we on wet soil? pos.y = pos.y - 1 if minetest.get_item_group(minetest.get_node(pos).name, "soil") < 3 then return end pos.y = pos.y + 1 -- do we have enough light? local light = minetest.get_node_light(pos) if not light or light < 13 then return end -- grow to next stage local num = node.name:split("_")[2] node.name = "ethereal:strawberry_" .. tonumber(num + 1) minetest.swap_node(pos, node) end }) end -- END IF ethereal/textures/000077500000000000000000000000001335420417000145315ustar00rootroot00000000000000ethereal/textures/baked_clay_grey.png000066400000000000000000000003231335420417000203410ustar00rootroot00000000000000PNG  IHDR(-SPLTE.myIDAT% !BX{#/ӔIȌ>$؈rn4f8X (TN[CMNSt9R[EF( [ۃ,V^gv2K \G_7?PIENDB`ethereal/textures/baked_clay_orange.png000066400000000000000000000006451335420417000206550ustar00rootroot00000000000000PNG  IHDR(-SPLTEtJuLuKtItKvMtKrItItIuKuMvOtLxPvNsIuJvLvMsLwOsJuLtJwNuKvKuNtJtKvMrKqKsMqKvIsMuOsKrIvNsJuLqJwNwPuOtMsI<6IDAT V0&٤XSSiЂU)/g=3Аn'mJs:b,J)Bn2S<`S8#8eW?^E|$9QP>S!m;R)SS!kDQR>2Ij,u'~2D~ZRV׹[քNb@)7{W IENDB`ethereal/textures/baked_clay_red.png000066400000000000000000000006511335420417000201510ustar00rootroot00000000000000PNG  IHDR(-SPLTEj54k76k65i53j65m87i65h32h52g32l87m88h43n;:k66m98q;;n99h53j64l98l76n88j76g42o::h54o:9j75k75m:9m99i64k87n98i55l88k77i63l77h33l86j55i43o99i54n:9m77o<;n::PIDAT V0E;LЉLZhr}";/P<<cɕAKR;ljZfFBކc'Fa2h=>.W^Tā_y4H0NdV ~2֨KG)hV8g'7r -l.?}z%&̐~:o*^dZ{ιe"IENDB`ethereal/textures/bamboo.png000066400000000000000000000003171335420417000164770ustar00rootroot00000000000000PNG  IHDRRPLTEcol 3DXk#QhCttRNS@fbKGDH pHYs  tIME%DZ2J Kߝ}8_A.:c^j(AP ~2w79.]0I>Ō`(cZ#d_<flXɤChud+xpc_+8:bCrƘ[܌(7T>1@OoHWP}"+~C64%x+L"E 'GFuwx/@ї}{>1AvsxLlÍQWw* ҫ4P0VJ); xDy6"ڼZ'`š?FZqqe[ol&Bs`y ^IENDB`ethereal/textures/bamboo_leaves.png000066400000000000000000000003331335420417000200340ustar00rootroot00000000000000PNG  IHDRRPLTEorm 3}mv ǒR1f11:~Yc\IENDB`ethereal/textures/banana_dough.png000066400000000000000000000003011335420417000176370ustar00rootroot00000000000000PNG  IHDRRPLTE u~܍NpritRNS@fTIDATc`]] txH ޑQQ^^`R d2FG3;2:;00(++1<lĎO,IENDB`ethereal/textures/banana_leaf.png000066400000000000000000000006451335420417000174530ustar00rootroot00000000000000PNG  IHDR TgPLTEOT .^"1hFn9P%gVcHIDAT(==n0'FHZ#WnCR[+8ֻ{F?N Ip"]C'aydRLw.Fk{I2ׂkPmΑoYHI~ךK2aHґ}7 X ?-Lȑ7AܓUӳv6#]8m8LN؅jc!T޼!RpM1K#oW;9F-CBq@VN_BTRCxZ{wɷw0h{!?>.t:m-`=q)PffqRv]uTFB6_IENDB`ethereal/textures/banana_leaf_old.png000066400000000000000000000006741335420417000203130ustar00rootroot00000000000000PNG  IHDR TgPLTEpOT .^"1hFn9P%gVKtRNS@fOIDAT(==1 `OAg/N4x%3=Vp{ҵߍcqH,?QL4}'R4 Xtg~R^DH\͋fD.sXІo:Σsf8֢qc0FfGI|eͨ <$A&{`pcE."BR;1--O5.X3SBI#lǀDP+:nڅU `&ܦMqC'0= ]Sk̤a9Xp2`-'z}&2#؄Y蕖fĎGU)WI/gW7~kDTnʸsIDAT 0E KϕJ2A,``ڬ_wz<ycn=U;JM-?Rz=cUvIRQRv uFW'#"IeIENDB`ethereal/textures/banana_wood.png000066400000000000000000000003221335420417000175040ustar00rootroot00000000000000PNG  IHDRRPLTEK:#[F)x^7m@RbrȭuIDAT 1 C  :[K&@[ C WmD6le)\v_A'㜴MN"e6Č=!'GRkZ3ZLBߣA"\VIENDB`ethereal/textures/blank.png000066400000000000000000000005451335420417000163320ustar00rootroot00000000000000PNG  IHDRa,IDAT8˝jP?Tb(:CE,Eکtp+8t](XDK$$Rs1K Opwj4r]ű(q\*D_"K.4o $‚vF=O0ňV``?>;ҍϏs4.ݮ8Nh,D$TlA@Q{`Ͼ;7"gլ*IFciB>%]ߗ $tB4Wq05Sf_ ۻY5>T_ 5o"GIENDB`ethereal/textures/bowl.png000066400000000000000000000004721335420417000162050ustar00rootroot00000000000000PNG  IHDR Tg0PLTEH(:-#h1I8'J@[F IhQ0~b9bykm7y~J(M]OtRNS@fIDAT(͑10 ECbX"R"=HC! : uLDо?Y?sf.K/3yD1$,H$К8rJJ5E#PjVc@&O` uw:{R[9^6Хw tzDGD-Y#Reuڰ?OXuvIENDB`ethereal/textures/brick_ice.png000066400000000000000000000004201335420417000171450ustar00rootroot00000000000000PNG  IHDRR0PLTE}Ð˓ӚϡСةէݯݴ۸o'IDATof!nꗝ`hAڪrw~hfޫwdI"##aDDB뺪fuUFcgtDv@wwefv@iIfvsfDgfA]DGfrf1"B0fJBIENDB`ethereal/textures/brick_ice.png_old000066400000000000000000000004251335420417000200100ustar00rootroot00000000000000PNG  IHDRR$PLTEH?bKGDH pHYs  tIME  7&3wIDATc  afs6kc ۰$l2öKc)kmMf 6o`-M`b-- !qrrVs3TQml& i 6s0%AO/IENDB`ethereal/textures/brick_snow.png000066400000000000000000000002461335420417000174010ustar00rootroot00000000000000PNG  IHDRb PLTEZbKGDH pHYs  tIME  /۩i#IDATcXj ! 0Xb*А &F1_IENDB`ethereal/textures/bucket_cactus.png000066400000000000000000000004241335420417000200560ustar00rootroot00000000000000PNG  IHDR(-S3PLTE@ aaaVۓ\\sߚMtRNS@fbKGDH pHYs  tIME ,DZIDATӍK POQ F+ a/]a:RYCq =;>)'oq}IENDB`ethereal/textures/bucket_cactus.png_hd000066400000000000000000000006451335420417000205360ustar00rootroot00000000000000PNG  IHDR Tg0PLTED,77HSTVihcvui6h}QŦjߚ(+^tRNS@f#IDAT(c` (jڻ0cccOPV#%׊RJiii`%Bj9޽?9ssNv@b[3ϼ{̴Vgμֵ""`UvVcc';TVu:uXתVt Wt (BM Wt! Q6 r  5RlTvX244HI.30VAR#X( blbl|kl/IENDB`ethereal/textures/candle.png000066400000000000000000000003451335420417000164670ustar00rootroot00000000000000PNG  IHDR Hv)PLTEщjrяޮ|ܪ͙&tRNS@fuIDATHc`XA! 4`4ft3P,...(n3gNs@DHA`ILA543]` tkS2 cC$=G81lA!cW0(HIENDB`ethereal/textures/candle_static.png000066400000000000000000000002731335420417000200360ustar00rootroot00000000000000PNG  IHDR TgPLTE)щjrяޮ|ܪgurtRNS@fKIDAT(c`XA! 4`4ft3P,...(n3gNs@DHA`ILA543]` tkSl&3oIENDB`ethereal/textures/charcoal_lump.png000066400000000000000000000002721335420417000200510ustar00rootroot00000000000000PNG  IHDRRPLTE ;;3DClIENDB`ethereal/textures/coral4.png000066400000000000000000000003301335420417000164170ustar00rootroot00000000000000PNG  IHDRRPLTEhR8tRNS@fkIDAT QDg B.D % `|iHwhsvBKg%I{4} 2El^t)A2ig~6n4\RIENDB`ethereal/textures/coral5.png000066400000000000000000000005341335420417000164260ustar00rootroot00000000000000PNG  IHDR(-SNPLTE]VTc_aX[f`k[_Xjx=ab\T^Yja)AutRNSR ]IDATӵN r (g-m%+;0z Jb o,hU*@ɵym`0lDBq;k:r>R'w:alPhxڭ 0B>cfyhE> 6`Vdv6\sRSINKX63ZYIENDB`ethereal/textures/crystal_axe.png000066400000000000000000000002651335420417000175600ustar00rootroot00000000000000PNG  IHDRR'PLTE)IC'SN0XUU`Z6hb>itJSɀİ8tRNS@f@@AEKLQ¹ZԿEIDATEQ { ܰqPO9Q{o{}eV"(SFeU5f {Wdk-glQ^ȸ%`9 7t@l_/{0v/fwPx}2;? sxIENDB`ethereal/textures/crystal_gilly_staff.png000066400000000000000000000002631335420417000213040ustar00rootroot00000000000000PNG  IHDRR*PLTE 0-;=^GnhD>y@8yWzt}tW";/tRNS@f7IDATc`3 4OJ(#\P0v̜[ Bxn&` Q11IENDB`ethereal/textures/crystal_ingot.png000066400000000000000000000003501335420417000201160ustar00rootroot00000000000000PNG  IHDR(-S3PLTE8FA&nhDZsiyjWztԦյݢtRNS@fcIDATӕ D 5# iVޛR>/dlmQ;ZNIU$:zbSz${B+/g{eSDV E?~) _ IENDB`ethereal/textures/crystal_pick.png000066400000000000000000000003141335420417000177240ustar00rootroot00000000000000PNG  IHDRR$PLTEIC'SN0XUU`Z6hb>itSɀİx tRNS@fVIDATc`@4#kt--sfJq),͝( *bl7`Pp30E FTaV2 0d2=jIENDB`ethereal/textures/crystal_shovel.png000066400000000000000000000002701335420417000202770ustar00rootroot00000000000000PNG  IHDRR$PLTEIC'SN0XUUhb>itJSɀİ2~tRNS@fBIDATc`@qVd: `j 0;4S] LsCMn@@~ `rIENDB`ethereal/textures/crystal_spike.png000066400000000000000000000005741335420417000201210ustar00rootroot00000000000000PNG  IHDR TgPLTEtes+Pt7p=LԮwytRNS@fIDAT(ϝN0`Xy7+zv(iWBJ9[zhQ &e]6_fN>O)/fSjeyJQ.k1FdC};ZL4$m _ +AٶZ%M*u!!e";5W=[VS^>MBL@ o Dd&)3jJʄC@(=eOm !}ӡ <tb N? \oF~y";@JjQLIENDB`ethereal/textures/crystal_sword.png000066400000000000000000000002671335420417000201430ustar00rootroot00000000000000PNG  IHDRR'PLTE!IC'SN0TN0^S2XUU`Z6itJɀİtRNS@f>IDATc`@}QB*ЈU*BD`"* 1dXVu.DyUw1nIENDB`ethereal/textures/default_apple_gold.png000066400000000000000000000003021335420417000210440ustar00rootroot00000000000000PNG  IHDRR0PLTEEGPP!XW(bayy5k8ItRNS@f@IDATc` ` S- b+]f 8f̨{{ DA%X- IENDB`ethereal/textures/default_ice.png000066400000000000000000000004201335420417000174770ustar00rootroot00000000000000PNG  IHDRR0PLTE͡ОԣϤڨԭ٩߰ٳ߹ܷWkIDAToDDۛA }}i"@+-f $L٥U{`if$' jea@2!&E$M4e%B۵5bE*JThBbFETI"T"Z!@2&EwitFL3ʍIENDB`ethereal/textures/ethereal_agar_powder.png000066400000000000000000000002241335420417000214000ustar00rootroot00000000000000PNG  IHDRb PLTEe-gD*A2&P?3`y5KiKtRNS ;WIDAT[c`@<\P BK&h< ,+.] vՑVPsX1P!Qe^ )00gNFIENDB`ethereal/textures/ethereal_bush.png000066400000000000000000000003341335420417000200510ustar00rootroot00000000000000PNG  IHDRRPLTE1.[&5g,OBVHeVn`uh㟐IDAT10C_Bi\8f. !e*bKϖyjfa}iXKxv@oԁF7n,4\G7(T00$DWa 1Oj~7n[3IENDB`ethereal/textures/ethereal_crystalgrass.png000066400000000000000000000003121335420417000216250ustar00rootroot00000000000000PNG  IHDRRPLTE2]8hL{qXtRNS@fiIDAT0Cram BtpR"X,8fBO/dѰuZoΞ,-?&>bPx>8.@ FDIENDB`ethereal/textures/ethereal_dry_dirt.png000066400000000000000000000004201335420417000207240ustar00rootroot00000000000000PNG  IHDRR0PLTEsU2}`?c;g:lEoAuHPKZŠjšdȥaѬl۶szIDAToIiA$f!MADڶdt)ztAo9evC&w$7BzR{t}uw)N)u $v J{Uq@Dwf p $k54Jw{!"mwzz8@oIENDB`ethereal/textures/ethereal_dry_shrub.png000066400000000000000000000004331335420417000211110ustar00rootroot00000000000000PNG  IHDRR pHYs  tIME 4X!PLTES2 V:p3$yNuRѳxԲkEtRNSRbKGD hVlIDAT1 PЇN [HPr0!J䷮S.;BQxTМv>78% Bd3*&mggkYIENDB`ethereal/textures/ethereal_fire_flower.png000066400000000000000000000003131335420417000214100ustar00rootroot00000000000000PNG  IHDRR!PLTE- (k 8 T h5xBBztRNS@fXIDATc````K`w( `(10"&IhsDc,`0cBeap̦```j RvIENDB`ethereal/textures/ethereal_firethorn.png000066400000000000000000000002311335420417000211040ustar00rootroot00000000000000PNG  IHDRb PLTEe-gP{q놇wtRNS@f;IDATc` X0;08X70c`8rx/ 2ou7000~ IENDB`ethereal/textures/ethereal_firethorn_jelly.png000066400000000000000000000002471335420417000223120ustar00rootroot00000000000000PNG  IHDRRPLTE!m[yUmP˷ĸ(tRNS@f:IDATc` 0 @hY*eCh6TFe8A(A0Dt ?IENDB`ethereal/textures/ethereal_frost_leaves.png000066400000000000000000000004541335420417000216070ustar00rootroot00000000000000PNG  IHDRRsRGBgAMA a pHYs  ~tIME :OKtEXtSoftwarePaint.NET v3.5.11GB7PLTET"Z!#37P!V^= tRNS\_IDAT 1 E) xRnR ۹z-;e{B_#vK){ ';8xiSP!I}IENDB`ethereal/textures/ethereal_frost_tree.png000066400000000000000000000012361335420417000212660ustar00rootroot00000000000000PNG  IHDRh6sRGBgAMA a pHYs  ~tIME +/tEXtSoftwarePaint.NET v3.5.11GB7IDATrI MR|Tg>w}L%Eۿߟ8ȇTE}}2ԼkvY[Ugp!]t䐢޳91G&&1ҵUT蹜z=_Df"QW53LV''CcʽG9n ٖrFf"o[-"5 0<M84 @Dd Lj!^%svURz5R6۸rXƬs # S&Eo|Z;8/ky_xSު)̬uhUbc^W)s6gbT23 b"K PK1s.H90q{;Tވ311}Hs)w]F)6w{o>EU#_מk"uIENDB`ethereal/textures/ethereal_frost_tree_sapling.png000066400000000000000000000004751335420417000230070ustar00rootroot00000000000000PNG  IHDRRsRGBgAMA a pHYs  ~tIME ,qtEXtSoftwarePaint.NET v3.5.11GB7-PLTE=3,A2&A2&A2&6+#!#.%376+#6,$=3,A2&P!VP?33CRtRNSwKuNIDAT[c`@0CiYp,tg &r `el2xAs UIENDB`ethereal/textures/ethereal_frost_tree_top.png000066400000000000000000000014351335420417000221510ustar00rootroot00000000000000PNG  IHDRh6sRGBgAMA a pHYs  ~tIME  -\,òtEXtSoftwarePaint.NET v3.5.11GB7yIDAT(S=KE]]~(!Y'ʊG:{N8ȊM2MDm]]b)>rW1ee *8 eBF<}L Nt.*"HYn߼\#Dv|{ٛv3!RGK#`zg٦So*V+RX+2 FXq9;.戁ri|v0ùxdoƒA,lL'uS_6֩ u%IƉit2m >(KS`Z>ZNJvyp8Bȡ.G& 7E,O]}/-L)!7jRbҾ(,RN| \ɛݚ3w.M,kVF3 +8"I;q5 !gbXۙ}CAxUU3ٮnz+6lgzxz޵+S٥~(JJliYS^o^Ե  Wϟ=Y&xc]c)zu ݬ6׿27ޟ9v)VnIENDB`ethereal/textures/ethereal_grass_bamboo_side.png000066400000000000000000000011021335420417000225440ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME }n4IDAT8퐽nP;q8 M#.\@$$1C& U H\DHH q\'9>ː2HI;|z _.6aJ),4M2dz,k4I|{F &)CU!9 ( GlGj.5aa'59SkN5BرCS}6LR)kIx#N?-Wz_M:ep<aMėܱTjE @hS9#= >/In҄De2+K:[RBJ>]m* aX-@, J)x*B@) M5;vpl{؎h6p#^Y;xqC8+_F4t-^>Y; \'rgkp>}s7<|5/u@?noP69IENDB`ethereal/textures/ethereal_grass_bamboo_top.png000066400000000000000000000006061335420417000224320ustar00rootroot00000000000000PNG  IHDR(-SWPLTEb4j;g>h?o>sAuCs?SSwBVyDQzESU~IWEZ`H\O^S[]/gzbKGDH pHYs  tIME }n4IDATY0 DQL4x οN'ߟrG#Qz)&FEcgCL@h[ra/A L2t"jR7`P7z&s-ڷeOҪg,〇Ab"IG@mGjY.ۏك qwODZ PlIENDB`ethereal/textures/ethereal_grass_cold_side.png000066400000000000000000000010551335420417000222350ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME }n4IDAT8퐽nAFwǻ5vpB$#)iP:$i"e2BxwCa@HW3!ۖz.lR5REK]ߠ"iF~dz,bqF"evANó^Ţnm6c6,nZ&~je~10|<%e@E0AܲOi-AA%=M/1ƭ @@+ TZر֕$&SP(GtT)a^;_R-vl(D X⨍1IOc̆TQ5<~{7~+0f=E&T3<>ȫhrZbSًTih]Iak·꧜O?(Py·a\첝8ͯnErpG~2IENDB`ethereal/textures/ethereal_grass_cold_top.png000066400000000000000000000006061335420417000221140ustar00rootroot00000000000000PNG  IHDR(-SWPLTEbQqWlPoWsWx]r^zXw[w\d`}`zcdeacikmhirnnotsJ+˸bKGDH pHYs  tIME }n4IDATY0 DQL4x οN'ߟrG#Qz)&FEcgCL@h[ra/A L2t"jR7`P7z&s-ڷeOҪg,〇Ab"IG@mGjY.ۏك qwODZ PlIENDB`ethereal/textures/ethereal_grass_crystal_side.png000066400000000000000000000010531335420417000227730ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME !HIDAT8퐽Q̽s1$D װn: , Zk݊ Xlゅa2Iܙk(sy艻}p_Ċs-hdƬPBF,.QY)tez=A_A`eHCw9 hjMr5m#Q) y x˲}z\b|nfTEA<6/YfK/}| F{ P2+KDOVuR%[ihm6BANTvYW,sD' 0-St3xpTE޿xHJFcy"PԾ xrwGI:4dqw/+!e+h̊YH3ӳ`P̒%GSΎ_MZpȟ%ɯgkPˍRIENDB`ethereal/textures/ethereal_grass_crystal_top.png000066400000000000000000000006061335420417000226540ustar00rootroot00000000000000PNG  IHDR(-SWPLTE@U%Ha#Mb&Ph&Pn)Uf*Ul/Yq+[w/]n2]t.bx1a~5bt7ay.fv2f|8ew7j;k|6l;n8r?r9uDv?|I{Eu7bKGDH pHYs  tIME }n4IDATY0 DQL4x οN'ߟrG#Qz)&FEcgCL@h[ra/A L2t"jR7`P7z&s-ڷeOҪg,〇Ab"IG@mGjY.ۏك qwODZ PlIENDB`ethereal/textures/ethereal_grass_fiery_side.png000066400000000000000000000010271335420417000224310ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME }n4IDAT8jP&4VŮhmw |W(::Mn{]ލ8p8#^b%qe/Cɵw`H'4p 4CA{#F5=cZ!͆ p]$I4I˲vv;,}H5x ,KosETR!Ae(8NTUǡs\zxzRnxIe 3QQZ 4<>v54m۶ɲ8)5h4,(n74 !9qm (qPJ$ #l6I584 1sJ)a:B$Ip8|>\.Ac\etZ)"<|M&O$Ibf||%~4 c5fIENDB`ethereal/textures/ethereal_grass_gray_top.png000066400000000000000000000006061335420417000221350ustar00rootroot00000000000000PNG  IHDR(-SWPLTEvvv|||^L%bKGDH pHYs  tIME }n4IDATY0 DQL4x οN'ߟrG#Qz)&FEcgCL@h[ra/A L2t"jR7`P7z&s-ڷeOҪg,〇Ab"IG@mGjY.ۏك qwODZ PlIENDB`ethereal/textures/ethereal_grass_grove_side.png000066400000000000000000000011011335420417000224260ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME }n4IDAT8퐿ka?ƻ^S(T'A' rCť t+؂ZhKrɽw9TA|6oWW>~%f|N-rI{dJJ!/EsF`f%ᅪHo@QX |.R-X,6xd'vtq9<ִ^?_r֒ r6v}>,jM?}s77/@A;>BEGPrTbKGDH pHYs  tIME }n4IDATY0 DQL4x οN'ߟrG#Qz)&FEcgCL@h[ra/A L2t"jR7`P7z&s-ڷeOҪg,〇Ab"IG@mGjY.ۏك qwODZ PlIENDB`ethereal/textures/ethereal_grass_jungle_side.png000066400000000000000000000010171335420417000225760ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME  i?IDAT8=kQs~dv]452KDABYVI4ٙsE܀xg/s|M3wZHNahSp\1n9et=l=Sp 8&T%Rkn=G"B"B ?G*Saka]ԚUO zfIqb0PZ[m S~@)m"°9A *J)#J)LY֐sfx=*u6RAgCdJw:A)2lcK'"H%[⠽[ 7U `hNff9ɪ1|hwy`9=Yu_>7_v[; !rp~/ó# sIENDB`ethereal/textures/ethereal_grass_jungle_top.png000066400000000000000000000006061335420417000224570ustar00rootroot00000000000000PNG  IHDR(-SWPLTE!/"0%4%6&7(:);*<+>,? -@!.B!/C"0D#1E$1G$2H%3I&4K&5L'6M(7O(8P)9Q*:S*;T+. z5ɿJk J**AȳI)7K<]q4:Է,7 9o?s84LuS" ڢ`c()ȡ7($zq{W wsd'g"ZIENDB`ethereal/textures/ethereal_grass_mushroom_top.png000066400000000000000000000004741335420417000230470ustar00rootroot00000000000000PNG  IHDRR'PLTE`;]i?eeAeo?kkCnnCjsHnqHtxIvIzvMy{R}Q#bKGDH pHYs  tIME  i?IDATo'dsl9VQHV»XIH$|kuv*yUQ!Dvbqu':7Z{WYs9˛%hh8;xb{b lvwT(@y+8DHaUCh7GoIENDB`ethereal/textures/ethereal_grass_prairie_side.png000066400000000000000000000011361335420417000227470ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME  i?IDAT8폿kq?߻xטK"HũAEpqp8bq? 8w_E`Ђh$ޝCtwg]ˎ(c ?Spp|VÂ(h7E~PM+ %I>k۬}Xʩ:$!2,!~J)Z."v̥"gV6s8l݈r8d}M#MLs#7x͘C;Ʒ-LО *g#eQ(IFO iuVSo{۴[-:!c.:h_a(ip{{Ki$u)8diʵ;[9;@A;>BEGVPWZ]¥Ʀǧȧɨʨ˩̩ЫѫծFbKGDH pHYs  tIME  i?IDATWv@Gxa¦iE+968xg܃{z,U BWM0!!?6yne J&׃ESAW ͙>\fBGc<QN乎~^{i qu| qF)_ *T,|es-PxJ>Yz"^k̹-?xZRIENDB`ethereal/textures/ethereal_gray_tree_sapling.png000066400000000000000000000005271335420417000226120ustar00rootroot00000000000000PNG  IHDRasRGBgAMA a pHYs  ~tIME ,qtEXtSoftwarePaint.NET v3.5.11GB7IDAT8Oc)H4e  \f:*pMȆ@E ؠ\=Ufp Cz ( 60]2$ޘ;7`4T nt>@ Cx`.Jg5g|h{v()2@  H6  ;:1Vld]LIENDB`ethereal/textures/ethereal_jungle_tree_sapling.png000066400000000000000000000005431335420417000231320ustar00rootroot00000000000000PNG  IHDR(-SsRGBgAMA a pHYs  ~tIME ,qtEXtSoftwarePaint.NET v3.5.11GB7D*A2&P?3`y5`y5.%P?3A2&6+#6+#.%6+#6,$=3,>D*A2&P?3`y5  tRNS  ]W_IDAT @ґ. @k3iҴ =8A\7iRtܷ˫ pN %${ѣCIENDB`ethereal/textures/ethereal_mushroom_sapling.png000066400000000000000000000003761335420417000225040ustar00rootroot00000000000000PNG  IHDR D3PLTE@  y#36lM1UT947xadqnm5mtRNS@fyIDAT8A EhZQO&RMt0&nFO'zh BCY\DAUYL(Оކ ?ĔR/ZfB'L:Rɒ,`1EnzIENDB`ethereal/textures/ethereal_pine_tree_sapling.png000066400000000000000000000003221335420417000225740ustar00rootroot00000000000000PNG  IHDRR-PLTE=3,A2&A2&A2&6+#!#$mI.%6+#6,$=3,A2&ImP?3';tRNSwKuNIDAT[c`@08Cb)Yp,tg[ &r xel2xAs %IENDB`ethereal/textures/ethereal_snowygrass.png000066400000000000000000000004421335420417000213270ustar00rootroot00000000000000PNG  IHDRR pHYs  tIME9 vFtEXtCommentCreated with GIMPWPLTEcccpppX&6tRNS@fbKGDodIDAT EW tDĿ .0(2m봍8X$$w ;}a;V4u7q t~]tRNS@fgIDATӍK0D;1.ݼ }9Lst/(P)!555A96ty ܝ $7 ׽eYTR>IENDB`ethereal/textures/fern.png000066400000000000000000000003261335420417000161720ustar00rootroot00000000000000PNG  IHDRRPLTEh-E)2H&3P-?Z1<_4Hp=XKpIZ5tRNS@fiIDATc`8 "&UP{@h)PILU D3kJ GhzId*UiE40046* %UCJ12IENDB`ethereal/textures/fern_tubers.png000066400000000000000000000002731335420417000175570ustar00rootroot00000000000000PNG  IHDRRPLTE >)-B z[ Qk;r!BWڲlrtRNS@fNIDATc```Rb(AIB3Z @ɆF[j  ji 6 dH3 6 bP3$0! IENDB`ethereal/textures/fire_dust.png000066400000000000000000000002411335420417000172200ustar00rootroot00000000000000PNG  IHDRRPLTEet- %tRNS@f@IDATc`4#LDM $k$"FP]M .. 0XNQQl0[{IENDB`ethereal/textures/fish_cooked.png000066400000000000000000000005301335420417000175120ustar00rootroot00000000000000PNG  IHDR#§0PLTE/&B5TD#bP)p[/wa2j7m8x>ELPhǯ|XhtRNS@fIDATc`@ (**w..3~+*WE|J1A L3'Za9{?#lL]?Oik^ .sS_#ZM 9998Xdihphi2llljlllqgq()@;SI a`` }q.VS=;IENDB`ethereal/textures/fish_raw.png000066400000000000000000000005571335420417000170500ustar00rootroot00000000000000PNG  IHDRE/3PLTE83>FV:,iD4R@cFt<ƃLSڒWz%BetRNS@fIDAT(ϝۖ ИLu p%Jm}*MkݭvT3jjmlwTL{m+O&؋)t|[akJ yk:WEM5ØkKBZ!E! 1\tYp]W P h;+ oFsN}sZUVLqC"M(4A,gA9V:oIENDB`ethereal/textures/fishing_rod.png000066400000000000000000000003011335420417000175240ustar00rootroot00000000000000PNG  IHDR#§PLTEP?+pS3e;ܜtRNS@f`IDAT} 08P`w1Q(53=)C- bIt!Cq2[.ywB)9Oֶ)]\ 33IENDB`ethereal/textures/fishing_rod_baited.png000066400000000000000000000003261335420417000210430ustar00rootroot00000000000000PNG  IHDR#§PLTE)P?+pS3e;Ž櫨CtRNS@foIDATm 0 ##a S 𞄻Ėd%̋40!r#aRy?% -XZLwɎ.2d<λ;CeFzIENDB`ethereal/textures/fishing_rod_wield.png000066400000000000000000000003271335420417000207200ustar00rootroot00000000000000PNG  IHDR#§PLTEP?+pS3e;Ž櫨 tRNS@fpIDATӵA 0 '( {S&/.$awz< o2h#n\\m(aUFbGN@5z}L)_E5 glXIENDB`ethereal/textures/frost_wood.png000066400000000000000000000004151335420417000174240ustar00rootroot00000000000000PNG  IHDRRgAMA a pHYs(JtIME2ztEXtSoftwarePaint.NET v3.5.11GB7PLTE4@R7DWJ]{Uhg~DdZ[IDAT 0 D`* 35DiLlFm{I)g2"q@Red*) ^ښ%Yuc#6;IENDB`ethereal/textures/glostone.png000066400000000000000000000010141335420417000170650ustar00rootroot00000000000000PNG  IHDRh6IDAT(EKr#EF>2UjlIOYj˕u _D0t9@= ضm }̾\MEd"yN T+4R7/2.֑u'" QaT2I6ɢn_"B n@wz*ݖ:n~ >WMƅh2s誊G82Et:"凃x{u u4kk͉(ѭsn+E3|WƧJT`hhezM{%ѴqXUSD"RABoit@p1՗wuwṬӫ LU}y;5:gDJCDte3?U wݹKD9y09 F;#@ @WQd3jX=&IENDB`ethereal/textures/hearty_stew.png000066400000000000000000000005161335420417000175770ustar00rootroot00000000000000PNG  IHDR D3PLTE8H(:-#h1I8'J@[F IhQ0~b9bykm7y~J(jttRNS@fIDAT8Qn Dx0@ikC Kl~w>j9, "yF?9/|`KIS*fIxr)Qo5(cp[>&wDnA sS.!W [%srXTkƑ&SX%l 7:jpPðy`F8 0#~f _/*' ׽C [[IENDB`ethereal/textures/illumishroom.png000066400000000000000000000051601335420417000177640ustar00rootroot00000000000000PNG  IHDR szzbKGD pHYs  tIME 3wق IDATXÕ[^Uk}.uzfvcǮi6i6 Q[j$^ *V$@HJK$DRUK%r2nvgb{.\˹Z<=1(N%mst~ozD`@ؙ" /xt0 0 H@"`p 䏗^|baȸ' ˝#+uN-X[HdC5P+x8j͡REўfw;U{@7l5!ijq8C: q3 @ xaTH"4şL҉eK]C@[H }Gy^;J#ڢ+ڠ=FQcz?\9`'1"Ƚ1q"35 ^/'9·[wTWvSL҈RIUVU2M!B8u6ITpɈV^77"!Y8? #`&Bd9O/\8PݻZM%II Mch7˗wMxSy=ILJN⿪b=xv݀B 4\9@.=<</xM|8>m_u6!!E |𰊗7Q  $Q *R-UuűF+M{>igk!Z&\Q8xlfG^0xW}&jMu=b<2"sMv,sfn=cTAHf* +tBت-/Ǿ5*j"J+Zص)E)%~_aY!LFm~1hu`@ ª }l1B$G8J|NqΌOhFʠ:ğ v[94ɚy{/nclr"Sl=ǀkXn& y!6L؟{UT'NN߬k;Җ1~1`%DL;8}K-J&X bB+SØ6i<ZXvoC# FKqri5re],q;7t*n<ՙȨ]1mVr”X-_^QE0Uto8 1O)i'k t"܄NJ[v(sy|gM^7V֮k 2\qM {n|8R:m{ҝ4D6/g0WUGW37:!]׷'d-*r%qaT <bw.D8rc5ƊP:)%ޖ/+.. y ~μ6,݁ -3Zd^8Av[::^~ߵ޵妛)(Ż~p3_*o2M9#Wrͷa``ƀ*'?|=-ɤiGiOl6 O~<}`Tz7SFD|ϡtܯ{-'3q[0Eξul `=֜qgytb@^z|m?;wYۮxZC8p;ۣA-H,Dz2A<o'_x9^qP30S seimuz8Ձ] ղ#Ӎ|e՚ `jqg{0['7 FU-C6HBԔU{߂XzU5:WqE X(EdG7OBq⍓@LҴ'}|ވ;5q{f\c{>ՉVgP:cig PPL83iZ.J(k[f&jPX{l Z-ٔ%NH"Vv%%kO0%Ŧ f_:LK5]j7 \jng8:+h~)%8`el[[p1H Qʥ57G >|Vouf:WkWo<ql9u']N/!n˺(/nZ_LieD{gtOq~wgt0n-@ [ ܺsMiI z3&s!n mHASzۨ%Xz 9r^2)dNҥ '] f&x߻F NJ,%TO(39n}-&5 BDKk9ue^NS9`鯎Le{_7\ t?I `U~`۴E-6$] R.mFQiOJ?k6C.[@"Mf2t 1ʟhS4N\Ï-._aBβ)l6eNIW'sŴZc`;|mcZn9Mq/}V&))[/I7F.Q.wÈc.* '9o-g_^L%-yO{В?ƴ,wv3ZMߔ4IGM!H7$n6 "4b:K-h0]"NkU.t8!kӨC(FJҘĹfiT-Y߂;&^]>L-?)q2/?k65DD~SI[L+`I%b oh0z 2j.Ȟ3YS;bU\–dnxB8WaғB)VӞ޸b?2aJٷ'CΑ8e ͸LRJ~ȡG`#SMjemS*/OD;LyB"ΌN뇀ղ57]~d}SUffc?d,ۣ2xtZղX?Z^Ǎ)OrG]*/Yz^tΔ~`{{[X^BJ@dр ~?EfRQԩ_q 5D2h[mV^no=~~O[0Jv9km;PUPs 83swRÖe~=ss_SzD7ȩ R[vx|6w~_Ƀm9(zjV"PTw"zf^[-fV蓀@^Y4+[^:'`42ZKQfvWhW8x3C\#fұ3U$EUQ-Aw:iɆaˋq[( r8owlLLFZJu*RɡMY?Czˀ}|VC=j4x̦2`K:He]_6{H&+zbhQ@?hC=#`̶_>uPtT|W*&_OfPbŘ%E̹D{ުv)֮ wU7%df#tVA GϿOp/1"SW7@AZ Ke-4$C89@A|4k.>_1|=]zƒ~ޗp|DO$rv˛6g%=KUw#- Ot~́b٤lԣ^t yt.]rӬEL؛eٟڱu;:w <3ncO- ':.-a, 0@+ޅIQ).yu=ejNy79'`Y?a&Bi<(??xM .oY͕sQii}l9?lN#S1ԣ6"q;_zM{_#pkGp׎PgQd8UéȐ!QcWA&{kQߍ-3oՀEQe_l}ӳG^@0]sR=We1G7Ŗ%yb|Y&&5r?y{qRe@ڭh=l!ͦqN'af4f]Tòtd1fZɋqU]BwŷۃD^Zp$IǴM9˫S@ﵴEuZ*0^u}P jS/7x^M^QxYAMIqn%yq.1.E8(IlmkYf=AIAK|-Qۆ]NN,<k= Ѣh\mcǯ֏smw\O ^?`a 8ٟa:'t8 7{9i..? t_ley/wpNڽ{>zK-uĖp]Z?4Kd&Ɩ?97=IENDB`ethereal/textures/light_staff.png000066400000000000000000000005511335420417000175320ustar00rootroot00000000000000PNG  IHDRa0IDAT8˥1KA24DP$ bי vW٤S,&'JlDBr9$g|07 Svl-kj&0;o8Sݗ$@'>9_|Z]RDQ~+7 vθAf8BguZkIZk'1b% 1h41F:Ic7ɇ2IENDB`ethereal/textures/lightstring.png000066400000000000000000000003111335420417000175700ustar00rootroot00000000000000PNG  IHDRRPLTEet-¿GqtRNS@fhIDAT 0 PH?S<AW2({l=Ρ D*3!|`c/7_0WCmeLўb^>.7Aœ?6-IENDB`ethereal/textures/moretrees_acacia_leaves.png000066400000000000000000000005241335420417000220650ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIMEDIDAT8˭-0B*cr`ArLj5pL%#k7hr#.GQE=DoEpŸgY8MǏscSSe,e)x=jrQF-#PTuJ3lDktF8M6(*xڧT/4~w iï $ }BIanL[uw,LIENDB`ethereal/textures/moretrees_birch_leaves.png000066400000000000000000000007131335420417000217530ustar00rootroot00000000000000PNG  IHDR(-SPLTE6s/ 0.) :*H*S*v,4+#:"H/Q/.* 2..U/S/&B&o'E'mY_]t.P.'C')G)W1U1(F([*J*ak,N,,L,+K+eg-O-ci2:3tRNSqIDATaA AL_\fxm'Ui(o-j錐XAѹx:y=Z[_|ت#"HL8pg^maFv[%tY22*6shE\+`+73E ^?')7IENDB`ethereal/textures/moretrees_birch_sapling.png000066400000000000000000000003201335420417000221230ustar00rootroot00000000000000PNG  IHDRRPLTE&{  &{ 0ptRNSvdIDAT1@x `kAxlmOX)Ah P(ַޔrf#>GobԜՌؓأuP];Dž?ɑSƝ=IENDB`ethereal/textures/moretrees_birch_trunk.png000066400000000000000000000017171335420417000216440ustar00rootroot00000000000000PNG  IHDR(-SgAMA ajPLTEkVqҾqYnL9n\Ⱦ˾xbcIiVňwcfMnVCxkcLǺķ˵ŬV<%xf@!ӝci{VnMľwV}_Fȳٺw󺬘ʿͺǸkS@/nSķ򷤕bLǸźǷķı⚉}įܺžӳֵĵʿóDZȱŸǾͿĐn}qbͼȼtbqĸnǼ{kPf5/˳ȵóY9(Ⳡʿ}nЯqiYFIDATcؖiauN[jCz=+׮>|)îwnܰy뎳;~ zY qE ΚpZNuk)OdЖ~ hfj]>m9E,wop&>޳gt={0+0q x&pDMQT^S-8)aOYC3 2gl =asS|cs5b6gl{[k︊# G,Wg`峿a1JxsIENDB`ethereal/textures/moretrees_birch_trunk_top.png000066400000000000000000000014531335420417000225230ustar00rootroot00000000000000PNG  IHDR(-SPLTEϱ{ye˹ʸrD>1|^O[MhXp]t`k[p^äƫxѳŦpΰĢͿnîqSFDz̺r˰̰ŧɵtWIĪqo[ˮwȬε˸ĬưXMArXI{hȩo]ϸZD8ǬʱçĤotͺɰĩxҺ[H9Ѷq[G9t{fͽuį˸r^N~_KPF5Ȳ=6-tí¦ƱdhVxbȳRE7©~̹;[D34**ɷXH:ƭZH8Ȱé5,,mH91B60̬ҶA7/ӽ;ŮM>1ɬuͼ̹иɲũ***г˷οWI9H@1¤̻Ҹ=4-N?2B80 mIDATbCAm۶m۶mIOw#@s򁡭2-)%#u@-QWe\̭<QZCj ̲Z!RPTocY2EcABL|vAs:%?&./_ܺ`@MVgw?m,DG6On?;ܶ,[dAjWGcKӫqgak[ ёË7qD℈6jͼwIENDB`ethereal/textures/moretrees_birch_wood.png000066400000000000000000000020631335420417000214440ustar00rootroot00000000000000PNG  IHDR(-SPLTEں}k9ௐhŽʡXiʙ۵yͩpϫxཌྷi9i3ҩvfֱsͩv۱y຀a^U心ޱs†ō広㿈ݱsʖ~۫q㼈q<^ɣkֵ{͙̗Ŏvaq;۵}弊ʛeݸϬnŔf-ǎ‹y콁ʙ`kկuرxp/庅ɗu9u;D֞忐s<֯{ͣYɞạf潀i0u{v֬qݵ֯uիp۳ɧsϦpx*Ő彆Ic }濅֮yڷ~ɞhAݳ}xC^L ⺈լyfHm4“ر޼y3֮su@ཆݳyຆݳn…֩n㸊if c ϖ⼀kطyk əmɓ彊fţcձxĔf™aUX~֫e~6ğeu*9خf迅xرv漀m*uʛaəŠ⼍ֵf޷}֧u̐xKϬs{Hp9x/Nڱyә{3{@ɜ`̱~֮pϦfŞ^ĈϤe*֮qݱ}ҫia4}֯nݼ{ɞcU⺁ͦfرqňϦm—[u<؞̣eլu۷y~۱~ɟfدxˆ֫fx)ɟX֯s۳sӬmӫn^ʡfsA۳xʤiիqݵyɟe~޷өpҧqǜah/ɡnڱvϦuݵv<~v-q yDݵxNvA 3IDATWJA矝]v-H ,)f }i2D˺v8Κ+{^D%n9/␡%f(>F'@j廃u(>V6V?~uI <+6$e uCHσR}v!YO4;[2a5}W/?8Y)Ҙn[,kkIENDB`ethereal/textures/moretrees_coconut.png000066400000000000000000000017311335420417000210000ustar00rootroot00000000000000PNG  IHDR(-SgAMA aPLTEo+G"L$6DLC9M"N$B L&V.4N"@@+^*Z(k-I 2E# 1\#AE?Q=5@IAR=6U!<7k+9FR994E"\&3t.AN"?m1;;Z"Ag)E2k.X#g(A6](Z(p0R!U%%NM#T%4M$U""B; ?C' .+T >\'R!?&' 41& % (.T $3:/<;/M"F! 2:IJ!& 0A7'C@% 5'  =5 ;8835 ),L),*,01" !'!)"()[>(_L(^!R 8 90gQ!UF-d!Y3F)`!P?4%[JO> 4,EE 6-c 3+c$TP&Z;@)c 5!O8,b *3 /&UN!T6B4+/h+[ 7P&_!M&1'+#W:%SB/g@0&R,`= 3E 7:FFCO,cH 72$U$W7 T0([:J)0e+`LqStRNSE9QIDATb@_۶mm۶f߅;#p}hJ/涃|&#~ 15']Mث;0=f-yY/ryǐ%6TBitnxws!QɨqF1䧢䢨|82L!+}>sW:*ڰx92K+E:_읃Ph#-'g h)iʾ],1zI*f5FP/gOIENDB`ethereal/textures/moretrees_palm_sapling.png000066400000000000000000000004031335420417000217670ustar00rootroot00000000000000PNG  IHDRabKGD)#N pHYs  tIME 6&@geFtEXtCommentCreated with GIMPWkIDAT8c`hMP:?2ߌD!L蚑m׌` ad0pxFCXS忦 ^3kY &JI?pA )7iCMIENDB`ethereal/textures/moretrees_palm_trunk.png000066400000000000000000000004771335420417000215100ustar00rootroot00000000000000PNG  IHDR(-SgAMA aNPLTEgEqOdE^?nKjHT8 `&@(K.bDT7 ^@O2W9 [=Q5 yV["V9 P4rO`CX<hIA)ݫIDAT- Cٺ۪U.P P氦 04HJ+ *ɭ==rHe0=xlnd8z:w9Q袜LAW(3v.=|4Vƿ&ց\ d{IXIENDB`ethereal/textures/moretrees_palm_trunk_top.png000066400000000000000000000006461335420417000223700ustar00rootroot00000000000000PNG  IHDR(-SgAMA aPLTE>{9;x8s4Z*m1d/D1s5P$W=f.{W)mM$iJ#O8~Y)m3q5v7i1a-\Bk2aE ΊOy6v5w7֞mI4yV(S;ڧ{ӗbN7ʂC՛hܫώV˃Dأuѓ\ݮآs۩~C/uIDATUv1P9qSe<)H ];`l7f>8X;ׅ@ʼn m/zU+̒"\V[e GNER&Q˨# ǁ탤7/miShy $<廙yx<O`ه?[%mPIENDB`ethereal/textures/moretrees_palm_wood.png000066400000000000000000000011261335420417000213050ustar00rootroot00000000000000PNG  IHDR(-SgAMA aPLTEũ¢yJnDd>oDg*V#l/}MY6eO0D*_'I,T#]&I-jf)pkm1v¡`P1?'G+oB)tG@(UQ!j,zKT3<%W#Y7i{U#U#vIwAZ%^9r9qEq8zGn3_'bXxIyDTp6|I{LxCdu>lo5cK.PQg{H}Js:Lt=^OY[R2zEW_\SNnNIDATPv6mlԝ:U瓖(^@|wsڗ"a#qWxug"j+߿Ū׏az#Z$4H҂ކ0Kqoط~'aGq"eTYvfVvĜi%J~fr"*^w(dogc/TUԽIENDB`ethereal/textures/mushroom_block.png000066400000000000000000000003501335420417000202600ustar00rootroot00000000000000PNG  IHDRR0PLTEe_ o nmz$x)x,!8*NBwkѼasIDATcP\!(((  Ak !C2A!%FA@Bs2bjAU` k6 0uP#("Q  $g-ۇIENDB`ethereal/textures/mushroom_pore.png000066400000000000000000000003671335420417000201430ustar00rootroot00000000000000PNG  IHDR(-S-PLTEϮzʪwͮzͭzɪxɩvcǧuƦv˫xέyťv̫wƥuȩwicIDAT-Y!Ă .?*<R@fN ~X9ٳʓl=Ae&jf`ݸhN/hx%"suWԏwB6%OVE#趲KK|<M&!IENDB`ethereal/textures/mushroom_soup.png000066400000000000000000000004701335420417000201570ustar00rootroot00000000000000PNG  IHDR Tg'PLTE)H(:-#I8'J@[F `IphQ0wP~b9m7~J4)tRNS@fIDAT(͑A 0ESZB,q-CԵCz0l.s('IGП<?%aνahRظhrո@[kny11GYGH#R!(\#,a(/e%/l*4v-:|2:3B;ITQTjd)YzؐAuw#]Kr57/-X-5*;g kp B~Jٮ}`uI0hAI̜/1,Fw_d⵨*Q]>6oyfOӣ:oVS9N]?+5bp f֌昛ȈGnL%?E+^|FD;! ͝{ONe| К#2B-kZ(?7!1\ᓋI] $䧹՚0qfx -Zϐ\ B`m|G8 iѱ7 -ܐZtR_U6zQ=~A7D[6:*HS;s}վm"Cc+KaVIENDB`ethereal/textures/orange_tree_sapling.png000066400000000000000000000002761335420417000212530ustar00rootroot00000000000000PNG  IHDRR!PLTE!#.%6+#6,$A2&=3,P?3mY0(KtRNS@fKIDATc`@\0FahQ XA 3Bᬮ3A4RR j0,0sL0Vf-I  $y[IENDB`ethereal/textures/palm_wax.png000066400000000000000000000002451335420417000170500ustar00rootroot00000000000000PNG  IHDRRPLTEhŗϟޮ|1tRNS@f8IDATc` ())i挎 C5 MM )DBBC]A &A k,# %*IENDB`ethereal/textures/paper_wall.png000066400000000000000000000005051335420417000173650ustar00rootroot00000000000000PNG  IHDR(-S`PLTEjL!iL&pQrT'rW/nEu@vFy>zDOJNNIRQXN[VS[a\âfgƪjǬrͱqϴyYIDAT]0 D^BS9p#9剔V~mFhӠm*FQJ yHBoo:RBp"58πC $!;~O{|X1O31k d(FZ?2 ?6IIENDB`ethereal/textures/pine_leaves.png000066400000000000000000000017261335420417000175370ustar00rootroot00000000000000PNG  IHDRaIDAT8U_L[uſKK ܖvťei膸+``jL`|h>,h$NL,˲L5L@X*]iX!pAsN>IVJ)7:ZJ6&^fMnZ󞑈wu쟝,|2oauqD (R~^ol+ؗp^ 'Ro#\7uqBF*UG>IfzG; @}[RT$SaZV%9c:MKLE:ljvDQ2"cLk氜K#3m[@0G!mX)5۬[ϟ} ' c߷^?6j0#XRrYX)QV{@4O3Ɔ Tֲ9C>wQ3!5 ` ]V'-~xW9cdsӝ9Lx՛/wU<BgmVPIX z 5sᔎ qwҌݓju=#-sWK+}09ϗ?tK8`F1w;q^5nx]E9^Z(%S"vÈN՞nJn~-!GB;m-.%z\uhZCBJfG/2XC/ -EE%RT|tX.5/x&X=bEWNpOټ4 Dsr2Fw oJl-Rk;kmcurK.DT 卽"ĸrv~$!~-vc!KЩS]ghryF+q 4rFCC"eU$e",ZD?PsvߔQg4gdDH0WVn;})EVwEJ;gUi?pL$4~@;WHɇDճyR忡s\0f Dpb 7ukHMqT9R;?t7*]udK!y*\_\{2M)`/y#+)3`[ͻU_$fy|bd[0v 5{eh"[) ßv=@~8t5Bz;<`s&R_YMݲhA:ta4 CN6Rw* ϲҭ{U9 Mݮg"H~QD*`y5~ mztRNS@fbKGDH pHYs  tIMENPCIDATc`@ PڭHwK)3ʜT!R)$3.#cl /lbR@g  ڀA6IENDB`ethereal/textures/redwood_trunk.png000066400000000000000000000015431335420417000201300ustar00rootroot00000000000000PNG  IHDR D`PLTE  ! &+'+ 3080437;"7$<#A":&C%@'J)C,N(E,H-S,T2!P3%P4 T41MbKGDH pHYs  tIME;6IDAT8 ջb \ؒF߲l%|abNw1H=Ũf UHٺ;sz\C/ZRQkQK Rـe7]dY(d>͖Uǒb KˀAdJ50Lw vlT >˕Ɍ>.e暿u߾櫸?KSZ}wBq%!!4KաC\\¿jcB1FS?;xpw׃/$DGY #X6W@bGPHֵ>įˍc%klTCYP{C?'i 2ic޷ǩ‹WE(3nXnSj Ϗ׫4r7Pub@PxtO!zOO&MDQ6O#VyL_Bb̹~ԓ/Lc2L zkwf йֶgz)V' %.! a汫3 =R?xaJxݼ<ȹ ~~ѻ,]ƪϟ_n V4[|vF@J_”UiºEMKW-sgdL Gi{pHARx}&Һ+E.u8FɩIENDB`ethereal/textures/redwood_trunk_top.png000066400000000000000000000014661335420417000210160ustar00rootroot00000000000000PNG  IHDR D`PLTE ! ' (7;A C0=@I@ G GM8"JP M! @%V$Y& T'K/!_,\-a,f,i5b='}Y[bKGDH pHYs  tIME;̂`\IDAT8=T BBp6T$٠1zvz,y,t՜ZmKD)S {3ru%g#iRkRt!vZ0K 瓻b"a('*hg.j"R7x#U*(>7KE]+D!xtykkrLēА|@T]r]an,hTp.Tq)>&,w Ou90T<3;dB(0oe»TiQ*צ9S$!Ѻ07wBF8s !8k}c &$g7*B0Iυ ËdfC hYPX{",8NC 5ߑr#ڠߥq X]_̏Yz8{=O|QBp>IENDB`ethereal/textures/redwood_wood.png000066400000000000000000000012161335420417000177320ustar00rootroot00000000000000PNG  IHDR D`PLTE-2 26; 9 ?<E A HC AK F D NJP M M!T!Q$\" X$ W$['Z'X) X*_*].lIDAT8UR R*a\AW/oz7 db9{|X_ʑP~Yb#{fߠὄ&2o,AX䄔$( klľ$_8/%H 4u@UAHW]KQ^>fRJԓ9 d$)R̂,﹃,& Bkk"J)ي@C0@ڶZ6ԡFPU^%؈ tFA )[a}0 < ,lyIENDB`ethereal/textures/sashimi.png000066400000000000000000000007451335420417000167020ustar00rootroot00000000000000PNG  IHDR D3PLTE>%+*%>>=R TY[4?ACBulm~}q tRNS@fbKGDH pHYs  tIME*X+IDAT8˵ے C/[kW6i3}&  Q"/n\#D<]it9rpUGm]u*Vyn<@qޑsLX6Z),rY{Tl''p .ftn c{}W]]ت]>ΐ:{D#DyHhh"p[!.>VdQm@|\6$l\z?\~@4X+IENDB`ethereal/textures/scorched_tree.png000066400000000000000000000004201335420417000200440ustar00rootroot00000000000000PNG  IHDRR0PLTE  !"$!$%#&(%()'*,),-+./-130BIDAToaa7GqrXx)نbJmׇ2<:ţ!=6Ӳ2>ձ"3v"^aZ2-N?lbw_Bhq>qMNV_~QP1.qIENDB`ethereal/textures/scorched_tree_top.png000066400000000000000000000004201335420417000207260ustar00rootroot00000000000000PNG  IHDRR0PLTE!" &'%+-+686CDBMOLVWU^`]kmjxzwD,dLIDATo1 "!&5wD0%%˼A%r$b$Q%΁ˬ́̾͂˩νrq̹R[05fwS1"!7F`IENDB`ethereal/textures/seaweed.png000066400000000000000000000007721335420417000166620ustar00rootroot00000000000000PNG  IHDRaIDAT8}1HQ]z*F+Qx xur ""E . N"N!CI!C;i!݌hTl;r}}LUPY?s`҈`W(.D"a<\L=mtG8 *(`ߖ/TUFrd,φ.UR_EG* ѯÔ~y`3("k]f/]Ve5rI^jjf@ RZڛ,6ioq;0káCɖ{ލ> 4VYe:\I (9݆:= al}oGADʝWp5冗/{nrJIENDB`ethereal/textures/stone_ladder.png000066400000000000000000000002651335420417000177050ustar00rootroot00000000000000PNG  IHDRR!PLTE 76*:9.GF7WUEfcNfeOonXsp[u]RtRNS@fBIDATc`U3 NIP.͹jQ e6DF0)0s ָ@1 # M IENDB`ethereal/textures/strawberry.png000066400000000000000000000005761335420417000174530ustar00rootroot00000000000000PNG  IHDR D3PLTE8aw L"Z (m ,z9r@"PtRNS@fIDAT8˽mo cb0ڞnn&R>{;G8\O7@tq޼ orq5}ŏ h!Fo%~Y hJ#@)>$ oZ LhPe9 U IT,&` 9.) .XXS¡䜒!l̙ ;|FʉAonx;!3_0zq b~/xs Z/IENDB`ethereal/textures/strawberry_1.png000066400000000000000000000001641335420417000176640ustar00rootroot00000000000000PNG  IHDR IPLTE_8"0tRNS@fIDATc`0 y@`C#1IENDB`ethereal/textures/strawberry_2.png000066400000000000000000000002111335420417000176560ustar00rootroot00000000000000PNG  IHDR g PLTE _8ƤtRNS@f.IDATc`52T$ e0`a 8`C?IENDB`ethereal/textures/strawberry_3.png000066400000000000000000000002351335420417000176650ustar00rootroot00000000000000PNG  IHDR g PLTE_8ωstRNS@f?IDATc`` 2D# caQe0`c(@;܊@(Xj 8|IENDB`ethereal/textures/strawberry_4.png000066400000000000000000000003211335420417000176620ustar00rootroot00000000000000PNG  IHDR TgPLTE_8mƕtRNS@fpIDAT(α 0 7؀ 3(,DA;_Į7i A˫C@e9d6j|EPN0>A `2ZeȐ+op%wIENDB`ethereal/textures/strawberry_5.png000066400000000000000000000003521335420417000176670ustar00rootroot00000000000000PNG  IHDR TgPLTE_8ςI1tRNS@fIDAT( sE}VF?K!*u't|h R'ٳ9BFZhpEDaL:[H< n ;Vx-xO_sޕ9mt * G*IENDB`ethereal/textures/strawberry_6.png000066400000000000000000000003601335420417000176670ustar00rootroot00000000000000PNG  IHDR TgPLTE_8mmItRNS@fIDAT(͐ ! DA"w֢D迖Rdr7f>.O``e]* &Ԙ] QLtPѮhsx@]#k>nyeUo򍾼v@ 0u`{> نIENDB`ethereal/textures/strawberry_7.png000066400000000000000000000004021335420417000176650ustar00rootroot00000000000000PNG  IHDR TgPLTE_8A6ImmڪmtRNS@fIDAT(͐;1 m)F'XVIOQSGETȟy!o(سozuK^%Hk7*Ձ] tw3|fudy 4Z[awk ~inفzyZzHJ1LLNwSg@XIENDB`ethereal/textures/strawberry_8.png000066400000000000000000000004021335420417000176660ustar00rootroot00000000000000PNG  IHDR TgPLTE_8I.ttRNS@fIDAT( P[*wjA٠;pGf_R;tDѿ,?)Z,Ϡ syGBYH IENDB`ethereal/textures/vine.png000066400000000000000000000003161335420417000162000ustar00rootroot00000000000000PNG  IHDRRPLTE&M._1d8sFstRNS@fjIDAT1 0 GBe6gp>-gw2Bho^~#.'x$H-S2cKU&DkOrŰY֩m/O4IENDB`ethereal/textures/wild_onion.png000066400000000000000000000002561335420417000174030ustar00rootroot00000000000000PNG  IHDRRPLTEap?o;|Āڲ 8wtRNS@fDIDATc`  4!@4[y HqzyV^d@zZDST: <`IENDB`ethereal/textures/willow_sapling.png000066400000000000000000000005431335420417000202730ustar00rootroot00000000000000PNG  IHDRa*IDAT8˵1KPK {J\Hl8#1CN}OBZQK4d0[.~w.B 0i(=a6e256qJIhmP PJ,L_jm`DgF\6ٸ7߳7}T8$@A46"M[V=&NABr z#(zeJu E$ȣ]˟ad9,jz^`;Qڇggg.7/Sx6ly}}?w&Y𮕗_IENDB`ethereal/textures/willow_trunk.png000066400000000000000000000012201335420417000177720ustar00rootroot00000000000000PNG  IHDR Tg0PLTE]_\ac`cebfheikhmolrtqvxuz|y~}oIDAT( O`-i!c 9O0mm%zԵ{D>#t^p/h$,r5qo2^G~|@.wV&Vw7)i#gL0Z Ά`͕+ss!#?ue_ƫ5Q +pb@ up${~g.BM@,yf275!z36jAnZE/gza@zCo@nXWEn4T6$jG u; "w'DU,ǚV%[ޫkm쑹NMy ܙk}[K/#eg{ \QZIENDB`ethereal/textures/willow_trunk_top.png000066400000000000000000000007541335420417000206670ustar00rootroot00000000000000PNG  IHDR Tg0PLTE`b_hjgmolrtqxzw~r|çƪǭ̱ϴӺЪwIDAT(MOn@ƟQֈto^@@&nKuopH'hݛt ~7 <ncÅ޺Mce0e]_TJD^eza$޺ϝ|A؋,{-w+s<H'v9;֥|đzyE s׈5fQ}Σ4rY yrZti1#ŋސ0OYC'(䄏D5N(( 4a */&`2YÃޥgJ&"mRpJl Ĭ* t7c:mv18 Ņhcd.$W8 %X8:pkikeߒ^kʘR ؍F0f2Ve@T7!@/n~H50\)_|FhhR_.EQ00W2&M&@̈́e~^$I[[2ޤ#^1y/jA*{kTDedAbN(i>YHIe/F!>#.46 B)]0+e!Pq r(((4ui'e9TE){01ăYBjJ(poǀ"[x"R%ZԒJG} H23vT Kj&qB osO2T U7d)(p'R & XX8E[qWŶ"OދW":W _6p4,TVRs; xOLe؃seRrWXIQ-]q4PT='ԗܱ$DRרKlrA\Ջ f8HUƃVܥIFЋihJ]2uSK>WLvzЈxi* {J4 .<9u0t5}dpLgn{D-#-s:٢a).@sz!GfxANF^cO )V8_ {]9QQjH_|GдhkAdʶLC_CxYNi4\on_aZ^X5[tSď /[nyxzr[GO/)163m!YFIENDB`ethereal/textures/willow_wood.png000066400000000000000000000014621335420417000176070ustar00rootroot00000000000000PNG  IHDR IDATHǕV=@]zX6BV B_Iyu@MqI$Pd!l9ΚD)f 'a|3f{F}^;-ldP K2Lw~&w&rZ! A\8$V5ty`1L.6T'YN|>$v#JILu=Y1@d_ T`!>PV0KEI'zC>J_eSd1%s[pVah씼7捯0-E1& P>(ÖS=XSŃuY@1s)h7+kt8 D!7dV, e-`ĸh pe)N*x?I!iw}aDjC|!)Ly(+櫓wD.a>V&ySRr".ł3")Fmyp!9qq "uY)x$(R^ga;FF97D6%j{SD6A6b~VƘh;Y)IENDB`ethereal/textures/worm.png000066400000000000000000000002441335420417000162230ustar00rootroot00000000000000PNG  IHDR g PLTEŽ櫨佻FٮItRNS@fFIDATc` a K fe9+1`Xb0ຘa V'̮%JLh~ IENDB`ethereal/textures/yellow_leaves.png000066400000000000000000000004541335420417000201140ustar00rootroot00000000000000PNG  IHDRRsRGBgAMA a pHYs  ~tIME :OKtEXtSoftwarePaint.NET v3.5.11GB7PLTEc/T9_ﻢ4tRNS\_IDAT 1 E) xRnR ۹z-;e{B_#vK){ ';8xiSP!I}IENDB`ethereal/textures/yellow_tree.png000066400000000000000000000012421335420417000175700ustar00rootroot00000000000000PNG  IHDRh6sRGBgAMA a pHYs  ~tIME +/tEXtSoftwarePaint.NET v3.5.11GB7IDATW@lB;P?}ynGqޕ-K ^kJ|\z\ !\/^R{dt.: BVXEzQD@!yTYeZc<lVqUw[]lvADYJ95~uʜ:MJv1`QtXE!);m_jdf"SaV U)|^)Uy^Fsxe|~sC5u~~{},1ۙSʬ@`B}ߋwȼ艬]y"br@DP__緣;yuu0~S#qnVs8Xu~-h<$R3&Yi4Υ8})D"j<;9deD:4|(,]`fHћom*6IENDB`ethereal/textures/yellow_tree_sapling.png000066400000000000000000000002701335420417000213050ustar00rootroot00000000000000PNG  IHDRRPLTE$!.%6+#6,$A2&=3,P?3NHG tRNS@fHIDATc`@0F0ahQXA `pVWR.5~JҬ0)S  #z#IENDB`ethereal/textures/yellow_tree_top.png000066400000000000000000000014401335420417000204520ustar00rootroot00000000000000PNG  IHDRh6sRGBgAMA a pHYs  ~tIME  -\,òtEXtSoftwarePaint.NET v3.5.11GB7|IDATnEvvwgm'[HE*p ' x • H q+*JRٱ;;;ǟ=0{W#FR7F$y5).}g'{{Ma_<_KsgS6#;Qp ;r.1}+ !ɂ#ۿU甍 <&;W)t<ْlOE^Tέ^+Ѝh-9Rxm/Gݲub,[cd=NʸMRj8/jxS]!g~ >h.6]ID.~oMCMp;\*kι( pC>C)f݃ xA[kvyH}mPh}EuK'(ݭ(g v}?ˏɵf\=ԡ]ۗ֒IlGR=V8?:H1I#* Q?~vpDOr,Y9.+}4K1Jd-9@դZ h$R7@&Pubx IENDB`ethereal/textures/yellow_wood.png000066400000000000000000000004151335420417000176020ustar00rootroot00000000000000PNG  IHDRRgAMA a pHYs(JtIME2ztEXtSoftwarePaint.NET v3.5.11GB7PLTEP[)U`,u7DRs~G[IDAT 0 D`* 35DiLlFm{I)g2"q@Red*) ^ښ%Yuc#6;IENDB`ethereal/water.lua000066400000000000000000000110201335420417000144650ustar00rootroot00000000000000 local S = ethereal.intllib -- Ice Brick minetest.register_node("ethereal:icebrick", { description = S("Ice Brick"), tiles = {"brick_ice.png"}, paramtype = "light", freezemelt = "default:water_source", is_ground_content = false, groups = {cracky = 3, puts_out_fire = 1, cools_lava = 1}, sounds = default.node_sound_glass_defaults(), }) minetest.register_craft({ output = 'ethereal:icebrick 4', recipe = { {'default:ice', 'default:ice'}, {'default:ice', 'default:ice'}, } }) -- Snow Brick minetest.register_node("ethereal:snowbrick", { description = S("Snow Brick"), tiles = {"brick_snow.png"}, paramtype = "light", freezemelt = "default:water_source", is_ground_content = false, groups = {crumbly = 3, puts_out_fire = 1, cools_lava = 1}, sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_snow_footstep", gain = 0.15}, dug = {name = "default_snow_footstep", gain = 0.2}, dig = {name = "default_snow_footstep", gain = 0.2}, }), }) minetest.register_craft({ output = 'ethereal:snowbrick 4', recipe = { {'default:snowblock', 'default:snowblock'}, {'default:snowblock', 'default:snowblock'}, } }) -- If Crystal Spike, Crystal Dirt, Snow near Water, change Water to Ice minetest.register_abm({ label = "Ethereal freeze water", nodenames = { "ethereal:crystal_spike", "default:snow", "default:snowblock", "ethereal:snowbrick" }, neighbors = {"default:water_source", "default:river_water_source"}, interval = 15, chance = 4, catch_up = false, action = function(pos, node) local near = minetest.find_node_near(pos, 1, {"default:water_source", "default:river_water_source"}) if near then minetest.swap_node(near, {name = "default:ice"}) end end, }) -- If Heat Source near Ice or Snow then melt. minetest.register_abm({ label = "Ethereal melt snow/ice", nodenames = { "default:ice", "default:snowblock", "default:snow", "default:dirt_with_snow", "ethereal:snowbrick", "ethereal:icebrick" }, neighbors = { "fire:basic_fire", "default:lava_source", "default:lava_flowing", "default:furnace_active", "default:torch", "default:torch_wall", "default:torch_ceiling" }, interval = 5, chance = 4, catch_up = false, action = function(pos, node) local water_node = "default:water" if pos.y > 2 then water_node = "default:river_water" end if node.name == "default:ice" or node.name == "default:snowblock" or node.name == "ethereal:icebrick" or node.name == "ethereal:snowbrick" then minetest.swap_node(pos, {name = water_node.."_source"}) elseif node.name == "default:snow" then minetest.swap_node(pos, {name = water_node.."_flowing"}) elseif node.name == "default:dirt_with_snow" then minetest.swap_node(pos, {name = "default:dirt_with_grass"}) end ethereal.check_falling(pos) end, }) -- If Water Source near Dry Dirt, change to normal Dirt minetest.register_abm({ label = "Ethereal wet dry dirt", nodenames = {"ethereal:dry_dirt", "default:dirt_with_dry_grass"}, neighbors = {"group:water"}, interval = 15, chance = 2, catch_up = false, action = function(pos, node) if node == "ethereal:dry_dirt" then minetest.swap_node(pos, {name = "default:dirt"}) else minetest.swap_node(pos, {name = "default:dirt_with_grass"}) end end, }) -- If torch touching water then drop as item (when enabled) if ethereal.torchdrop == true then local torch_drop = "default:torch" local drop_sound = "fire_extinguish_flame" if minetest.get_modpath("real_torch") then torch_drop = "real_torch:torch" drop_sound = "real_torch_extinguish" end minetest.register_abm({ label = "Ethereal drop torch", nodenames = {"default:torch", "default:torch_wall", "default:torch_ceiling", "real_torch:torch", "real_torch:torch_wall", "real_torch:torch_ceiling"}, neighbors = {"group:water"}, interval = 5, chance = 1, catch_up = false, action = function(pos, node) local num = #minetest.find_nodes_in_area( {x = pos.x - 1, y = pos.y, z = pos.z}, {x = pos.x + 1, y = pos.y, z = pos.z}, {"group:water"}) if num == 0 then num = num + #minetest.find_nodes_in_area( {x = pos.x, y = pos.y, z = pos.z - 1}, {x = pos.x, y = pos.y, z = pos.z + 1}, {"group:water"}) end if num == 0 then num = num + #minetest.find_nodes_in_area( {x = pos.x, y = pos.y + 1, z = pos.z}, {x = pos.x, y = pos.y + 1, z = pos.z}, {"group:water"}) end if num > 0 then minetest.set_node(pos, {name = "air"}) minetest.sound_play({name = drop_sound, gain = 0.2}, {pos = pos, max_hear_distance = 10}) minetest.add_item(pos, {name = torch_drop}) end end, }) end ethereal/wood.lua000066400000000000000000000161221335420417000143230ustar00rootroot00000000000000 local S = ethereal.intllib -- willow trunk minetest.register_node("ethereal:willow_trunk", { description = S("Willow Trunk"), tiles = { "willow_trunk_top.png", "willow_trunk_top.png", "willow_trunk.png" }, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = default.node_sound_wood_defaults(), paramtype2 = "facedir", on_place = minetest.rotate_node, }) -- willow wood minetest.register_node("ethereal:willow_wood", { description = S("Willow Wood"), tiles = {"willow_wood.png"}, is_ground_content = false, groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_craft({ output = "ethereal:willow_wood 4", recipe = {{"ethereal:willow_trunk"}} }) -- redwood trunk minetest.register_node("ethereal:redwood_trunk", { description = S("Redwood Trunk"), tiles = { "redwood_trunk_top.png", "redwood_trunk_top.png", "redwood_trunk.png" }, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = default.node_sound_wood_defaults(), paramtype2 = "facedir", on_place = minetest.rotate_node, }) -- redwood wood minetest.register_node("ethereal:redwood_wood", { description = S("Redwood Wood"), tiles = {"redwood_wood.png"}, is_ground_content = false, groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_craft({ output = "ethereal:redwood_wood 4", recipe = {{"ethereal:redwood_trunk"}}, }) -- frost trunk minetest.register_node("ethereal:frost_tree", { description = S("Frost Tree"), tiles = { "ethereal_frost_tree_top.png", "ethereal_frost_tree_top.png", "ethereal_frost_tree.png" }, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, put_out_fire = 1}, sounds = default.node_sound_wood_defaults(), paramtype2 = "facedir", on_place = minetest.rotate_node, }) -- frost wood minetest.register_node("ethereal:frost_wood", { description = S("Frost Wood"), tiles = {"frost_wood.png"}, is_ground_content = false, groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, put_out_fire = 1}, sounds = default.node_sound_wood_defaults(), }) minetest.register_craft({ output = "ethereal:frost_wood 4", recipe = {{"ethereal:frost_tree"}} }) -- healing trunk minetest.register_node("ethereal:yellow_trunk", { description = S("Healing Tree Trunk"), tiles = { "yellow_tree_top.png", "yellow_tree_top.png", "yellow_tree.png" }, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, put_out_fire = 1}, sounds = default.node_sound_wood_defaults(), paramtype2 = "facedir", on_place = minetest.rotate_node, }) -- healing wood minetest.register_node("ethereal:yellow_wood", { description = S("Healing Tree Wood"), tiles = {"yellow_wood.png"}, is_ground_content = false, groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, put_out_fire = 1}, sounds = default.node_sound_wood_defaults(), }) minetest.register_craft({ output = "ethereal:yellow_wood 4", recipe = {{"ethereal:yellow_trunk"}} }) -- palm trunk (thanks to VanessaE for palm textures) minetest.register_node("ethereal:palm_trunk", { description = S("Palm Trunk"), tiles = { "moretrees_palm_trunk_top.png", "moretrees_palm_trunk_top.png", "moretrees_palm_trunk.png" }, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = default.node_sound_wood_defaults(), paramtype2 = "facedir", on_place = minetest.rotate_node, }) -- palm wood minetest.register_node("ethereal:palm_wood", { description = S("Palm Wood"), tiles = {"moretrees_palm_wood.png"}, is_ground_content = false, groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_craft({ output = "ethereal:palm_wood 4", recipe = {{"ethereal:palm_trunk"}} }) -- banana trunk minetest.register_node("ethereal:banana_trunk", { description = S("Banana Trunk"), tiles = { "banana_trunk_top.png", "banana_trunk_top.png", "banana_trunk.png" }, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = default.node_sound_wood_defaults(), paramtype2 = "facedir", on_place = minetest.rotate_node, }) -- banana wood minetest.register_node("ethereal:banana_wood", { description = S("Banana Wood"), tiles = {"banana_wood.png"}, is_ground_content = false, groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_craft({ output = "ethereal:banana_wood 4", recipe = {{"ethereal:banana_trunk"}} }) -- scorched trunk minetest.register_node("ethereal:scorched_tree", { description = S("Scorched Tree"), tiles = { "scorched_tree_top.png", "scorched_tree_top.png", "scorched_tree.png" }, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 1}, sounds = default.node_sound_wood_defaults(), paramtype2 = "facedir", on_place = minetest.rotate_node, }) minetest.register_craft({ output = "ethereal:scorched_tree 8", recipe = { {"group:tree", "group:tree", "group:tree"}, {"group:tree", "default:torch", "group:tree"}, {"group:tree", "group:tree", "group:tree"}, } }) -- mushroom trunk minetest.register_node("ethereal:mushroom_trunk", { description = S("Mushroom"), tiles = { "mushroom_trunk_top.png", "mushroom_trunk_top.png", "mushroom_trunk.png" }, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = default.node_sound_wood_defaults(), paramtype2 = "facedir", on_place = minetest.rotate_node, }) -- birch trunk (thanks to VanessaE for birch textures) minetest.register_node("ethereal:birch_trunk", { description = S("Birch Trunk"), tiles = { "moretrees_birch_trunk_top.png", "moretrees_birch_trunk_top.png", "moretrees_birch_trunk.png" }, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = default.node_sound_wood_defaults(), paramtype2 = "facedir", on_place = minetest.rotate_node, }) -- birch wood minetest.register_node("ethereal:birch_wood", { description = S("Birch Wood"), tiles = {"moretrees_birch_wood.png"}, is_ground_content = false, groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_craft({ output = "ethereal:birch_wood 4", recipe = {{"ethereal:birch_trunk"}} }) -- Bamboo (thanks to Nelo-slay on DeviantArt for the free Bamboo base image) minetest.register_node("ethereal:bamboo", { description = S("Bamboo"), drawtype = "plantlike", tiles = {"bamboo.png"}, inventory_image = "bamboo.png", wield_image = "bamboo.png", paramtype = "light", sunlight_propagates = true, walkable = true, selection_box = { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} }, groups = {choppy = 3, oddly_breakable_by_hand = 1, flammable = 2, tree = 1}, sounds = default.node_sound_leaves_defaults(), after_dig_node = function(pos, node, metadata, digger) default.dig_up(pos, node, digger) end, }) minetest.register_craft({ type = "fuel", recipe = "ethereal:bamboo", burntime = 1, })