diff --git a/mods/ethereal/README.md b/mods/ethereal/README.md new file mode 100644 index 00000000..da751c50 --- /dev/null +++ b/mods/ethereal/README.md @@ -0,0 +1,377 @@ +# 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 +42 + +## Changelog + +### 1.27 + + - Added Etherium ore and dust + - Added sparse decoration of dry grass and shrub to caves biome + - Added sponges that spawn near coral, dry sponge in furnace to soak up water + - Added new savanna dirt and decorations + - Use default grass abms + +### 1.26 + + - Added Sakura biome, pink sakura trees and saplings + - 1 in 10 chance of sakura sapling growing into white sakura + - Bamboo grows in higher elevation while sakura grows in lower + - Added sakura wood, stairs, fence, gate and door + - Added 5.0 checks to add new biomes and decorations + - Fixed water abm for dry dirt and added check for minetest 5.1 dry dirt also + +### 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 + - 2x2 bamboo = bamboo floor, 3x3 bamboo or 2x bamboo floor = bamboo block, blocks can be made into sticks, bamboo stairs need blocks to craft + +### 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 diff --git a/mods/ethereal/plantpack.lua b/mods/ethereal/plantpack.lua new file mode 100644 index 00000000..51d7aaaf --- /dev/null +++ b/mods/ethereal/plantpack.lua @@ -0,0 +1,193 @@ + +--= 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"}, +}) diff --git a/mods/ethereal/sapling.lua b/mods/ethereal/sapling.lua new file mode 100644 index 00000000..92990c2a --- /dev/null +++ b/mods/ethereal/sapling.lua @@ -0,0 +1,235 @@ + +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) +register_sapling("ethereal:sakura", "Sakura", "ethereal_sakura_sapling", 10) + +local add_tree = function (pos, ofx, ofy, ofz, schem, replace) + -- 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, replace, 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 + +function ethereal.grow_sakura_tree(pos) + if math.random(10) == 1 then + add_tree(pos, 4, 0, 3, ethereal.sakura_tree, + {{"ethereal:sakura_leaves", "ethereal:sakura_leaves2"}}) + else + add_tree(pos, 4, 0, 3, ethereal.sakura_tree) + end +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) + + elseif node.name == "ethereal:sakura_sapling" + and under == "ethereal:bamboo_dirt" then + ethereal.grow_sakura_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, +}) diff --git a/mods/ethereal/screenshot.png b/mods/ethereal/screenshot.png new file mode 100644 index 00000000..c4d80012 Binary files /dev/null and b/mods/ethereal/screenshot.png differ diff --git a/mods/ethereal/sealife.lua b/mods/ethereal/sealife.lua new file mode 100644 index 00000000..50866de6 --- /dev/null +++ b/mods/ethereal/sealife.lua @@ -0,0 +1,295 @@ + +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, 6) + + pos.y = pos.y + 1 + + local nod = minetest.get_node(pos).name + + if nod == "default:water_source" + and sel == 6 then + + minetest.swap_node(pos, {name = "ethereal:sponge_wet"}) + + return + end + + if nod == "default:water_source" + and sel > 1 then + + minetest.swap_node(pos, {name = "ethereal:coral" .. sel}) + + 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 + +-- sponges + +minetest.register_node("ethereal:sponge_air", { + drawtype = "airlike", + paramtype = "light", + walkable = false, + buildable_to = true, + sunlight_propagates = true, + pointable = false, + drop = "", + groups = {not_in_creative_inventory = 1}, +}) + + +minetest.register_node("ethereal:sponge", { + description = S("Sponge"), + tiles = {"ethereal_sponge.png"}, + groups = {crumbly = 3}, + sounds = default.node_sound_sand_defaults(), + + after_place_node = function(pos, placer, itemstack, pointed_thing) + + -- get player name + local name = placer:get_player_name() + + -- is area protected + if minetest.is_protected(pos, name) then + return + end + + -- get water nodes within range + local num = minetest.find_nodes_in_area( + {x = pos.x - 3, y = pos.y - 3, z = pos.z - 3}, + {x = pos.x + 3, y = pos.y + 3, z = pos.z + 3}, + {"group:water"}) + + -- no water + if #num == 0 then return end + + -- replace water nodes with sponge air + for _, w in pairs(num) do + + if not minetest.is_protected(pos, name) then + minetest.swap_node(w, {name = "ethereal:sponge_air"}) + end + end + + -- replace dry sponge with wet sponge + minetest.swap_node(pos, {name="ethereal:sponge_wet"}) + end +}) + + +minetest.register_node("ethereal:sponge_wet", { + description = S("Wet sponge"), + tiles = {"ethereal_sponge_wet.png"}, + groups = {crumbly = 3}, + sounds = default.node_sound_sand_defaults(), +}) + +-- cook wet sponge into dry sponge +minetest.register_craft({ + type = "cooking", + recipe = "ethereal:sponge_wet", + output = "ethereal:sponge", + cooktime = 3, +}) + +-- use leaf decay to remove sponge air nodes +default.register_leafdecay({ + trunks = {"ethereal:sponge_wet"}, + leaves = {"ethereal:sponge_air"}, + radius = 3 +}) + +-- dry sponges can be used as fuel +minetest.register_craft({ + type = "fuel", + recipe = "ethereal:sponge", + burntime = 5, +})