ethereal - added ethereal with hard optimized images

* we used pngquan cos we need more more optimized images
  to being able to load in older phones (Client) and small devices (server),
master
mckaygerhard 2023-06-11 03:19:39 -04:00
parent 3aecefc73a
commit 4c0e3fa1de
339 changed files with 13922 additions and 1 deletions

View File

@ -34,7 +34,7 @@ To download you can play this game with the following minetest engines:
#### Mods
* minetest default
* killme/game_commands were simplified into default mod, and provide CC-BY-SA-NC license
* integrated the killme/game_commands were simplified into default mod, and provide CC-BY-SA-NC license
* sorceredkid auth mod
* minetest Auth Redux as `auth_rx` [mods/auth_rx](mods/auth_rx) from https://codeberg.org/minenux/minetest-mod-auth_rx
* so then minetest Formspecs as `formspecs` [mods/formspecs](mods/formspecs) from https://codeberg.org/minenux/minetest-mod-formspecs
@ -43,6 +43,7 @@ To download you can play this game with the following minetest engines:
* tenplus1 customized mods
* simple_skins as `skins` [mods/skins](mods/skins) from https://codeberg.org/minenux/minetest-mod-simple_skins
* regrow as `regrow` [mods/regrow](mods/regrow) from https://codeberg.org/minenux/minetest-mod-regrow
* ethereal as `ethereal` [mods/ethereal](mods/ethereal) from https://codeberg.org/minenux/minetest-mod-ethereal
* armors and stuff mods
* 3d_armor and shields [mods/3d_armor](mods/3d_armor) https://codeberg.org/minenux/minetest-mod-3d_armor
* minenux bags as `backpacks` [mods/backpacks](mods/backpacks)

398
mods/ethereal/CHANGELOG.md Normal file
View File

@ -0,0 +1,398 @@
## Changelog
A huge thanks to Chinchow who was the inspiration behind Ethereal and everyone
who helped make this mod bigger and better throughout it's release :)
As of January 3rd 2023, All gameplay features are up to-date
#### 1.29
- Use "stratum" to generate mesa biome for stripey goodness
- Added coloured candles (thanks wRothbard)
- Rename some biomes to fall inline with default for spawning
- Make stairs and doors a soft dependency, fix willow recipes (thanks sangeet)
- Added 'ethereal.flightpotion_duration' setting, potion also works on 0.4.x clients
- Added olive wood fences, gates, mese posts
- Added lilac to sakura biome (can be crafted into magenta dye)
#### 1.28
- Added new Mediterranean biome with Lemon and Olive trees (thanks Felfa)
- Added Candied Lemon and Olive Oil items and recipe
- Rewrite stairs and add auto-select function
- Added Lemonade
- Added smaller redwood trees, to grow large variety 2 saplings required
- Added Flight Potion (etherium dust arch, fire dust middle, empty bottle bottom)
- Added new Fishing mechanics (inspired by Rootyjr's on mineclone2)
- Added fishing api to add new items (read API.txt file)
- Certain fish can only be found in specific biomes
- Rename textures so they begin with ethereal_ (sorry texture pack folks)
- Override mushroom spread abm to use "group:mushroom"
#### 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
- Split and re-write mapgen files for tidier generation
- Giant Mushroom tops now decay when trunk removed
- Added Blue Marble to grey biomes and Blue Marble Tile recipe
#### 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

615
mods/ethereal/README.md Normal file
View File

@ -0,0 +1,615 @@
minetest mod ethereal NG
======================
BIOME mod mapgen to add many new biomes to the world
## Information
--------------
This mod is named `ethereal`, it produces huge amount of new biomes
overriding defaults, many new items and features that spice up gameplay.
Known as Ethereal NG (next-generation) it give players that
little something extra to look for while exploring the world.
![screenshot.png](screenshot.png)
Forum Topic https://forum.minetest.net/viewtopic.php?f=11&t=14638
TODO: document items and crafting
#### Lucky Blocks
It provides 63 new lucky blocks if the mod is detected.
## Technical info
-----------------
- [Information](#information)
- [Lucky Blocks](#lucky-blocks)
- [Technical info](#technical-info)
- [Mod structure and customization](#mod-structure-and-customization)
- [Dependencies](#dependencies-and-compatibility)
- [Compatibility](#dependencies-and-compatibility)
- [Settings](#settings)
- [Fishing api](#fishing-api)
- [Biomes list](#biomes-list)
- [Biome work](#biome-work)
- [Node list](#node-list)
- [Hard nodes or blocks](#hard-nodes-or-blocks)
- [Biome nodes like trees and plants](#biome-nodes-like-trees-and-plants)
- [Willow](#willow)
- [Redwood](#redwood)
- [Frost megatree](#frost-megatree)
- [Banana ](#banana-)
- [Orange minitree](#orange-minitree)
- [Healing megatree](#healing-megatree)
- [Palm tree](#palm-tree)
- [Birch minitree ](#birch-minitree-)
- [Bamboo](#bamboo)
- [Sakura megatree](#sakura-megatree)
- [Lemon tree](#lemon-tree)
- [Olive megatree](#olive-megatree)
- [Other "Wood-like" items](#other-"wood-like"-items)
- [Mushroom](#mushroom)
- [Misc bushes](#misc-bushes)
- [BIG SAPLING](#big-sapling)
- [Understanding Biome customization](#understanding-biome-customization)
- [Changelog](#changelog)
- [1.30](#1.30)
- [1.29](#1.29)
- [1.28](#1.28)
- [1.27](#1.27)
- [1.26](#1.26)
- [1.25](#1.25)
- [1.24](#1.24)
- [1.23](#1.23)
- [1.22](#1.22)
- [1.21](#1.21)
- [1.20](#1.20)
- [1.19](#1.19)
- [1.18](#1.18)
- [1.17](#1.17)
- [1.16](#1.16)
- [1.15](#1.15)
- [1.14](#1.14)
- [1.13](#1.13)
- [1.12](#1.12)
- [1.11](#1.11)
- [1.10](#1.10)
- [1.09](#1.09)
- [LICENSE](#license)
#### Mod structure and customization
Biomes customization values are hardcoded in the [`biomes.lua`](biomes.lua) file,
and initialized in the [`biomes_init.lua`](biomes_init.lua) file.
Nodes and elements are hardcoded in the [schems.lua](schems.lua) file,
each of those are defined in [schematics](schematics) directory.
Underwater life are defined in the [sealife.lua](sealife.lua) file.
#### Dependencies and compatibility
Make sure you are using Minetest 0.4.16+ and start a new world (anything but v6),
then enable Ethereal in the mods list. Ethereal has been designed to work
alongside with those mods:
* default
* farming (Farming Redo, not normal build in, support for seeds, plant and new foods)
* flowers ( for sunflowers, fire flowers and each variety of viola and others)
* mobs (Mobs Redo, is heaviliy used)
* backedclay (For clay biomes and results)
* stairs
Also those more as optional:
* lucky_block (will provide much more surprices for, 60+ surprices)
* doors (will provide a fence gate and a sakura door)
* intllib (only need on older engines for translations)
* toolranks (Will provide support for new crystal stuffs)
#### Settings
**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`
| name setting | Description | values | default |
| ------------------------------ | --------------------------------- | ---- | ------ |
| ethereal.leaftype | 2D plantlike leaves (0) or 3D (1) | int | 0 |
| ethereal.leafwalk | Walkable leaves | bool | false |
| ethereal.cavedirt | Caves cut through dirt | bool | true |
| ethereal.torchdrop | Torches drop when in water | bool | true |
| ethereal.papyruswalk | Papyrus and Bamboo are walkable | bool | true |
| ethereal.lilywalk | Lilypads are walkable | bool | true |
| ethereal.xcraft | Enable X-Craft cheats | bool | true |
| ethereal.flight | Enable Flight Potion | bool | true |
| ethereal.glacier | Glacier biome, 1=on / 0=off | int | 1 |
| ethereal.bambo | Bamboo biome, 1=on / 0=off | int | 1 |
| ethereal.mesa | Mesa biome, 1=on / 0=off | int | 1 |
| ethereal.alpine | Alpine biome, 1=on / 0=off | int | 1 |
| ethereal.healing | Healing Tree biome, 1=on / 0=off | int | 1 |
| ethereal.snowy | Pine Tree biome, 1=on / 0=off | int | 1 |
| ethereal.frost | Blue Frost biome, 1=on / 0=off | int | 1 |
| ethereal.grassy | Grassy biome, 1=on / 0=off | int | 1 |
| ethereal.caves | Desertstone biome, 1=on / 0=off | int | 1 |
| ethereal.grayness | Grey Willow biome, 1=on / 0=off | int | 1 |
| ethereal.grassytwo | GrassyTwo biome, 1=on / 0=off | int | 1 |
| ethereal.prairie | Prairie biome, 1=on / 0=off | int | 1 |
| ethereal.jumble | Jumble biome, 1=on / 0=off | int | 1 |
| ethereal.junglee | Jungle biome, 1=on / 0=off | int | 1 |
| ethereal.desert | Desert biome, 1=on / 0=off | int | 1 |
| ethereal.grove | Banana Grove biome, 1=on / 0=off | int | 1 |
| ethereal.mushroom | Mushroom biome, 1=on / 0=off | int | 1 |
| ethereal.sandstone | Sandstone biome, 1=on / 0=off | int | 1 |
| ethereal.quicksand | Quicksand Bank biome, 1=on / 0=off | int | 1 |
| ethereal.plains | Scorched Plains biome, 1=on / 0=off | int | 1 |
| ethereal.savanna | Savanna biome, 1=on / 0=off | int | 1 |
| ethereal.fiery | Feiry Lava biome, 1=on / 0=off | int | 1 |
| ethereal.sandclay | Sandy Clay biome, 1=on / 0=off | int | 1 |
| ethereal.swamp | Swamp biome, 1=on / 0=off | int | 1 |
| ethereal.sealife | Coral and Seaweed biome, 1=on / 0=off | int | 1 |
| ethereal.reefs | MT5 Coral biome, 1=on / 0=off | int | 1 |
| ethereal.sakura | Sakura biome, 1=on / 0=off | int | 1 |
| ethereal.tundra | Tundra biome, 1=on / 0=off | int | 1 |
| ethereal.mediterranean | Mediterranean biome, 1=on / 0=off | int | 1 |
| ethereal.flightpotion_duration | Flight Potion Duration seconds | int | 300 |
#### Fishing api
The mod provides a fishing api, basically is `ethereal.add_item(fish, junk, bonus)`,
several examples are at the documentation of [api.txt](api.txt) file.
#### Biomes list
There are almost 20 biomes or more, those are indicators of (WIP list.. maybe more):
| biome | y.min | y.max | heat | humidity | enabled/setting |
| ----------------- | ---- | ---- | ----- | --------- | ------------- |
| mountain | 140 | 31000 | 50 | 50 | 1 (enabled) |
| grassland | 3 | 71 | 45 | 65 | 1 (enalbed) |
| underground | -31000 | -192 | 50 | 50 | 1 (enabled) |
| desert | 3 | 23 | 35 | 20 | ethereal.desert |
| desert_ocean | -192 | 3 | 35 | 20 | ethereal.desert |
| bamboo | 25 | 70 | 45 | 75 | ethereal.bamboo |
| sakura | 3 | 25 | 45 | 75 | ethereal.sakura |
| sakura_ocean | -192 | 2 | 45 | 75 | ethereal.sakura |
| mesa | 1 | 71 | 25 | 28 | ethereal.mesa |
| mesa_ocean | -192 | 1 | 25 | 28 | ethereal.mesa |
| coniferous_forest | 4 | 40 | 10 | 40 | ethereal.snowy |
| taiga | 40 | 140 | 10 | 40 | ethereal.alpine |
| frost_floatland | 1025 | 1750 | 10 | 40 | ethereal.frost |
| frost | 1 | 71 | 10 | 40 | ethereal.frost |
| frost_ocean | -192 | 1 | 10 | 40 | ethereal.frost |
| deciduous_forest | 3 | 91 | 13 | 40 | ethereal.grassy |
| deciduous_forest_ocean | -31000 | 3 | 13 | 40 | ethereal.grassy |
| caves | 4 | 41 | 15 | 25 | ethereal.caves |
| grayness | 2 | 41 | 15 | 30 | ethereal.grayness |
| grayness_ocean | -28 | 1 | 15 | 30 | ethereal.grayness |
| grassytwo | 1 | 91 | 15 | 40 | ethereal.grassytwo |
| grassytwo_ocean | -192 | 1 | 15 | 40 | ethereal.grassytwo |
| prairie | 3 | 26 | 20 | 40 | ethereal.prairie |
| prairie_ocean | -192 | 1 | 20 | 40 | ethereal.prairie |
| jumble | 1 | 71 | 25 | 50 | ethereal.jumble |
| jumble_ocean | -192 | 1 | 25 | 50 | ethereal.jumble |
| junglee | 1 | 71 | 30 | 60 | ethereal.junglee |
| junglee_ocean | -192 | 1 | 30 | 60 | ethereal.junglee |
| grove | 3 | 23 | 45 | 35 | ethereal.grove |
| grove_ocean | -192 | 2 | 45 | 35 | ethereal.grove |
| mediterranean | 3 | 50 | 20 | 45 | ethereal.mediterranean |
| mushroom | 3 | 50 | 45 | 55 | ethereal.mushroom |
| mushroom_ocean | -192 | 2 | 45 | 55 | ethereal.mushroom |
| sandstone | 3 | 23 | 50 | 20 | ethereal.sandstone |
| sandstone_ocean | -192 | 2 | 50 | 20 | ethereal.sandstone |
| quicksand | 1 | 1 | 50 | 38 | ethereal.quicksand |
| plains | 3 | 25 | 65 | 25 | ethereal.plains |
| plains_ocean | -192 | 2 | 55 | 25 | ethereal.plains |
| savanna | 3 | 50 | 55 | 25 | ethereal.savanna |
| savanna_ocean | -192 | 1 | 55 | 25 | ethereal.savanna |
| fiery | 5 | 20 | 75 | 10 | ethereal.fiery |
| fiery_ocean | -192 | 4 | 75 | 10 | ethereal.fiery |
| sandclay | 1 | 11 | 65 | 2 | ethereal.sandclay |
| swamp | 1 | 7 | 80 | 90 | ethereal.swamp |
| swamp_ocean | -192 | 1 | 80 | 90 | ethereal.swamp |
#### Biome work
This is done by assigning a heat and a humidity value to each biome.
Each biome is assigned with a heat and humidity value between 0 and 100.
The `ethereal` mod will sustitute all the current biomes and will
places new ones.. the code do `minetest.clear_registered_biomes()` and
the `minetest.clear_registered_decorations()` rutines, ores still are
not well developed and are just defaults and featured.
### Node list
#### Hard nodes or blocks
* ethereal:etherium_ore, ethereal:stone_with_etherium_ore. Regular ore, cosmetic use like gold ore.
* ethereal:crystal_spike, mix 2 Crystal and 2 Mese for a crystal ingot, water bucket, gives ethereal:crystal_ingot, used for silk touch tools, ow OP sword
* ethereal:crystal_block Block of the above mineral, Only for cosmetic use.
* ethereal:stone_ladder Ladders made of stone
* ethereal:glostone Light block, Same light level as a mese post, decorative
#### Biome nodes like trees and plants
Stairs, Slabs, Outer and Inner variants of wood exists, Just append, _stair _slab _outer_stairs _inner_stair to every wood respectively.
List goes, Leaves, Trunk, Wood, Sapling, and extras
##### Willow
* ethereal:willow_twig
* ethereal:willow_trunk
* ethereal:willow_wood
* ethereal:willow_sapling
##### Redwood
* ethereal:redwood_leaves
* ethereal:redwood_trunk
* ethereal:redwood_wood
* ethereal:redwood_sapling - Grows a small redwood tree
* ethereal:giant_redwood_sapling - The big one, crafted from 2 saplings.
##### Frost megatree
* ethereal:frost_leaves
* ethereal:frost_tree - Substantially harder to break
* ethereal:frost_wood - A bit hard to break
* ethereal:frost_sapling
##### Banana
* ethereal:bananaleaves
* ethereal:banana_trunk
* ethereal:banana_wood
* ethereal:banana_tree_sapling
* ethereal:banana - Heals 2 hearts
##### Orange minitree
Orange uses apple trunk and wood as base
* ethereal:orange_leaves
* ethereal:orange_sapling
* ethereal:orange - heals 1.5 hearts
##### Healing megatree
* ethereal:yellowleaves
* ethereal:yellow_trunk
* ethereal:yellow_wood
* ethereal:yellow_tree_sapling
* ethereal:golden_apple - Heals to full health (It does not heal 10 hearts, just heals to default full)
##### Palm tree
Like pine
* ethereal:palmleaves
* ethereal:palm_trunk
* ethereal:palm_wood
* ethereal:palmsapling
##### Birch minitree
Like aspen
* ethereal:birch_leaves
* ethereal:birch_trunk
* ethereal:birch_wood
* ethereal:birch_sapling
##### Bamboo
* ethereal:bamboo_trunk - Cheap wood, easy to break a trunk of it
* ethereal:bamboo_leaves
* ethereal:bamboo_sprout
##### Sakura megatree
* ethereal:sakura_leaves
* ethereal:sakura_leaves2 - Nosense to be honest
* ethereal:sakura_trunk
* ethereal:sakura_wood
* ethereal:sakura_sapling
##### Lemon tree
* ethereal:lemon_leaves
* ethereal:lemon_trunk
* ethereal:lemon_wood
* ethereal:lemon_sapling
* ethereal:lemon - TODO: Healing value
##### Olive megatree
* ethereal:olive_leaves
* ethereal:olive_trunk
* ethereal:olive_wood
* ethereal:olive_sapling
#### Other "Wood-like" items
##### Mushroom
* ethereal:mushroom_sapling
* ethereal:mushroom
* ethereal:mushroom_trunk
* ethereal:mushroom_pore
##### Misc bushes
* ethereal:bush3 (wtf?)
* ethereal:bush2 (Nonsense)
* ethereal:bush
#### BIG SAPLING
-Crafted with 3 regular apple saplings, gros a big tree with lots of wood and apples
* ethereal:big_tree_sapling
#### Understanding Biome customization
Are there any settings to enable to correctly use it to customized?
Each biome has a `y.min` and `y.max` values where will be apply.
Also is assigned with a `heat` and `humidity` value between 0 and 100.
As well as drawing them by hand, **you can also create Voronoi diagrams
using programs such as Geogebra.** Dug up this **ethereal voronoi diagram**
from Paramat at https://www.geogebra.org/classic/jcc8eyy5 using those basics:
* Firstly GeoGebra is not what we call super user friendly - Quirky
would be good descriptor :)
* Depending on your monitor size/aspect ratio you may need to change some
of the pane sizes :) large widescreen monitors will be helpfully
* If playing with the above don't try and move the blue dots that'll
totally break the height automation
* Update the Height Min/Max Heat/Humidity values in the spreadsheet
view, It left open on the right (red box below) - and don't change
the formula in Column F, that'll break it.
* When updating click in cell update value then click outside the cell
on the top menu bar works well...pressing enter will move you down a
cell which is annoying - quirky
* Adjusting to an exact height click on the slider and then update the
value in the right most pane "definition" field to an exact value - The
above link will open setup like that but as soon as you click on another
element it's properties will be displayed (Blue box below)
Legend: heat = x and humidity = y so then by example:
![screenshot-geogebra-ethereal.png](screenshot-geogebra-ethereal.png)
File to import in new geogebra: [ethereal-biomes-defaults-22-Jul-2022-geogebra.ggb](ethereal-biomes-defaults-22-Jul-2022-geogebra.ggb)
For example, the Frost biome has heat=10 and humidity=40 by default
Recommendations:
* https://rubenwardy.com/minetest_modding_book/en/advmap/biomesdeco.html
- [Mod structure and customization](#mod-structure-and-customization)
- [Dependencies](#dependencies-and-compatibility)
- [Compatibility](#dependencies-and-compatibility)
- [Settings](#settings)
- [Fishing api](#fishing-api)
- [Biomes list](#biomes-list)
- [Biome work](#biome-work)
## Changelog
A huge thanks to Chinchow who was the inspiration behind Ethereal and everyone
who helped make this mod bigger and better throughout it's release :)
### 1.30
- New fish textures by SirroBzeroone and BlueTangs Rock
- New fish added along with food recipes (thanks BlueTangs Rock)
- Fishing rod now has 65 uses
- Fixed willow leaves scaling and forced schematic trunk placement
- Add 11 new lucky blocks
- Caverealms' glow bait reduces wait time when fishing
- Add Basandra Bush and wood items, Add Spore Grass
#### 1.29
- Use "stratum" to generate mesa biome for stripey goodness
- Added coloured candles (thanks wRothbard)
- Rename some biomes to fall inline with default for spawning
- Make stairs and doors a soft dependency, fix willow recipes (thanks sangeet)
- Added 'ethereal.flightpotion_duration' setting, potion also works on 0.4.x clients
- Added olive wood fences, gates, mese posts
- Added lilac to sakura biome (can be crafted into magenta dye)
#### 1.28
- Added new Mediterranean biome with Lemon and Olive trees (thanks Felfa)
- Added Candied Lemon and Olive Oil items and recipe
- Rewrite stairs and add auto-select function
- Added Lemonade
- Added smaller redwood trees, to grow large variety 2 saplings required
- Added Flight Potion (etherium dust arch, fire dust middle, empty bottle bottom)
- Added new Fishing mechanics (inspired by Rootyjr's on mineclone2)
- Added fishing api to add new items (read API.txt file)
- Certain fish can only be found in specific biomes
- Rename textures so they begin with ethereal_ (sorry texture pack folks)
- Override mushroom spread abm to use "group:mushroom"
#### 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
- Split and re-write mapgen files for tidier generation
- Giant Mushroom tops now decay when trunk removed
- Added Blue Marble to grey biomes and Blue Marble Tile recipe
#### 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
## LICENSE
* Code:
* The MIT License (MIT) Copyright (c) 2016 TenPlus1
* Art:
* Free textures from lisheng2121 (shutterstock)
* Free textures from epicwannehz, Altairas, JMArtsDesign
* Some from Royalty Free SFX from dreamstime.com
* Others
Complete details are at the [license.txt](license.txt) file.

41
mods/ethereal/api.txt Normal file
View File

@ -0,0 +1,41 @@
Ethereal Fishing Rod API
Usage:
ethereal.add_item(fish, junk, bonus)
Example:
The fish, junk and bonus entries can all be entered or used seperately e.g.
..add fish:
ethereal.add_item("mymod:myfish", "", "")
..add fish and junk:
ethereal.add_item("mymod:myfish", "mymod:myjunk", "")
You may also use a table that not only adds an item but the biome it can be found in:
..add fish only found in 'grassy_ocean' biome:
ethereal.add_item({"mymod:myfish", "grassy_ocean"}, "", "")
..add special item only found in 'frost' biome waters:
ethereal.add_item("", "", {"ethereal:crystal_spike", "frost"})
.. add special item with wear level:
ethereal.add_item("", "", "default:sword_steel 15000")
Please note that only Ethereal biome names can be used for specific finds, unless mod
specifically adds ethereal as an optional dependency.
Crystal Shovel has silk touch ability for digging blocks and returning the actual block
intact. The {no_silktouch=1} group can be used to override this.

515
mods/ethereal/biomes.lua Normal file
View File

@ -0,0 +1,515 @@
local S = ethereal.intllib
-- Blue Marble Nodes
minetest.register_node("ethereal:blue_marble", {
description = S("Blue Marble"),
tiles = {"ethereal_blue_marble.png"},
groups = {cracky = 1, stone = 1},
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("ethereal:blue_marble_tile", {
description = S("Blue Marble Tile"),
tiles = {"ethereal_blue_marble_tile.png"},
groups = {cracky = 1, stone = 1},
sounds = default.node_sound_stone_defaults()
})
minetest.register_craft({
output = "ethereal:blue_marble_tile 9",
recipe = {
{"ethereal:blue_marble", "ethereal:blue_marble", "ethereal:blue_marble"},
{"ethereal:blue_marble", "ethereal:blue_marble", "ethereal:blue_marble"},
{"ethereal:blue_marble", "ethereal:blue_marble", "ethereal:blue_marble"}
}
})
-- helper strings
local tmp, tmp2
-- helper function
local add_biome = function(a, l, m, n, o, p, b, c, d, e, f, g, nd, na, ns)
-- if not 1 then biome disabled, don't add
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,
node_dungeon = nd or "default:cobble",
node_dungeon_alt = (nd and "") or "default:mossycobble",
node_dungeon_stair = ns or "stairs:stair_cobble"
})
end
-- always registered biomes
add_biome("mountain", 140, 31000, 50, 50, 1,
nil, "default:snow", 1, "default:snowblock", 2)
add_biome("grassland", 3, 71, 45, 65, 1,
nil, "default:dirt_with_grass", 1, "default:dirt", 3)
add_biome("grassland_ocean", -192, 1, 45, 65, 1,
nil, "default:sand", 1, "default:sand", 3)
minetest.register_biome({
name = "grassland_under",
node_cave_liquid = {"default:water_source", "default:lava_source"},
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = -256,
y_min = -31000,
heat_point = 45,
humidity_point = 65
})
--add_biome("underground", -31000, -192, 50, 50, 1,
-- nil, nil, nil, nil, nil)
-- biomes with disable setting
tmp = "default:desert_stone"
add_biome("desert", 3, 23, 35, 20, ethereal.desert,
nil, "default:desert_sand", 1, "default:desert_sand", 3, tmp,
"default:desert_stone", nil, "stairs:stair_desert_stone")
add_biome("desert_ocean", -192, 3, 35, 20, ethereal.desert,
nil, "default:sand", 1, "default:sand", 2, tmp,
"default:desert_stone", nil, "stairs:stair_desert_stone")
if ethereal.desert then
minetest.register_biome({
name = "desert_under",
node_cave_liquid = {"default:water_source", "default:lava_source"},
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = -256,
y_min = -31000,
heat_point = 35,
humidity_point = 20
})
end
add_biome("bamboo", 25, 70, 45, 75, ethereal.bamboo,
nil, "ethereal:bamboo_dirt", 1, "default:dirt", 3)
add_biome("sakura", 3, 25, 45, 75, ethereal.sakura,
nil, "ethereal:bamboo_dirt", 1, "default:dirt", 3)
add_biome("sakura_ocean", -192, 2, 45, 75, ethereal.sakura,
nil, "default:sand", 1, "default:sand", 2)
add_biome("mesa", 1, 71, 25, 28, ethereal.mesa,
nil, "default:dirt_with_dry_grass", 1, "bakedclay:orange", 15)
add_biome("mesa_ocean", -192, 1, 25, 28, ethereal.mesa,
nil, "default:sand", 1, "default:sand", 2)
tmp = "default:dirt_with_coniferous_litter"
if not minetest.registered_nodes[tmp] then
tmp = "ethereal:cold_dirt"
end
-- was 'snowy' biome
add_biome("coniferous_forest", 4, 40, 10, 40, ethereal.snowy,
nil, tmp, 1, "default:dirt", 2)
add_biome("coniferous_forest_ocean", -192, 1, 10, 40, ethereal.snowy,
nil, "default:sand", 1, "default:sand", 2)
if ethereal.snowy then
minetest.register_biome({
name = "coniferous_forest_under",
node_cave_liquid = {"default:water_source", "default:lava_source"},
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = -256,
y_min = -31000,
heat_point = 10,
humidity_point = 40
})
end
add_biome("taiga", 40, 140, 10, 40, ethereal.alpine,
nil, "default:dirt_with_snow", 1, "default:dirt", 2)
add_biome("taiga_ocean", -192, 1, 10, 40, ethereal.alpine,
nil, "default:sand", 1, "default:sand", 2)
if ethereal.alpine then
minetest.register_biome({
name = "taiga_under",
node_cave_liquid = {"default:water_source", "default:lava_source"},
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = -256,
y_min = -31000,
heat_point = 10,
humidity_point = 40
})
end
add_biome("frost_floatland", 1025, 1750, 10, 40, ethereal.frost,
nil, "ethereal:crystal_dirt", 1, "default:dirt", 1)
add_biome("frost", 1, 71, 10, 40, ethereal.frost,
nil, "ethereal:crystal_dirt", 1, "default:dirt", 3)
add_biome("frost_ocean", -192, 1, 10, 40, ethereal.frost,
nil, "default:sand", 1, "default:sand", 2)
add_biome("deciduous_forest", 3, 91, 13, 40, ethereal.grassy,
nil, "default:dirt_with_grass", 1, "default:dirt", 3)
add_biome("deciduous_forest_ocean", -31000, 3, 13, 40, ethereal.grassy,
nil, "default:sand", 2, "default:gravel", 1)
if ethereal.grassy then
minetest.register_biome({
name = "deciduous_forest_under",
node_cave_liquid = {"default:water_source", "default:lava_source"},
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = -256,
y_min = -31000,
heat_point = 13,
humidity_point = 40
})
end
add_biome("caves", 4, 41, 15, 25, ethereal.caves,
nil, "default:desert_stone", 3, "air", 8)
tmp = "default:silver_sand"
if not minetest.registered_nodes[tmp] then
tmp = "default:sand"
end
add_biome("grayness", 2, 41, 15, 30, ethereal.grayness,
nil, "ethereal:gray_dirt", 1, "default:dirt", 3)
add_biome("grayness_ocean", -18, 1, 15, 30, ethereal.grayness,
nil, tmp, 2, "default:sand", 2, "ethereal:blue_marble")
if ethereal.grayness then
minetest.register_biome({
name = "grayness_under",
node_cave_liquid = {"default:water_source", "default:lava_source"},
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = -256,
y_min = -31000,
heat_point = 15,
humidity_point = 30
})
end
add_biome("grassytwo", 1, 91, 15, 40, ethereal.grassytwo,
nil, "default:dirt_with_grass", 1, "default:dirt", 3)
add_biome("grassytwo_ocean", -192, 1, 15, 40, ethereal.grassytwo,
nil, "default:sand", 1, "default:sand", 2)
add_biome("prairie", 3, 26, 20, 40, ethereal.prairie,
nil, "ethereal:prairie_dirt", 1, "default:dirt", 3)
add_biome("prairie_ocean", -192, 1, 20, 40, ethereal.prairie,
nil, "default:sand", 1, "default:sand", 2)
add_biome("jumble", 1, 71, 25, 50, ethereal.jumble,
nil, "default:dirt_with_grass", 1, "default:dirt", 3)
add_biome("jumble_ocean", -192, 1, 25, 50, ethereal.jumble,
nil, "default:sand", 1, "default:sand", 2)
tmp = "default:dirt_with_rainforest_litter"
if not minetest.registered_nodes[tmp] then
tmp = "ethereal:jungle_dirt"
end
add_biome("junglee", 1, 71, 30, 60, ethereal.junglee,
nil, tmp, 1, "default:dirt", 3)
add_biome("junglee_ocean", -192, 1, 30, 60, ethereal.junglee,
nil, "default:sand", 1, "default:sand", 2)
if ethereal.junglee then
minetest.register_biome({
name = "junglee_under",
node_cave_liquid = {"default:water_source", "default:lava_source"},
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = -256,
y_min = -31000,
heat_point = 30,
humidity_point = 60
})
end
add_biome("grove", 3, 23, 45, 35, ethereal.grove,
nil, "ethereal:grove_dirt", 1, "default:dirt", 3)
add_biome("grove_ocean", -192, 2, 45, 35, ethereal.grove,
nil, "default:sand", 1, "default:sand", 2)
add_biome("mediterranean", 3, 50, 20, 45, ethereal.mediterranean,
nil, "ethereal:grove_dirt", 1, "default:dirt", 3)
add_biome("mushroom", 3, 50, 45, 55, ethereal.mushroom,
nil, "ethereal:mushroom_dirt", 1, "default:dirt", 3)
add_biome("mushroom_ocean", -192, 2, 45, 55, ethereal.mushroom,
nil, "default:sand", 1, "default:sand", 2)
add_biome("sandstone_desert", 3, 23, 50, 20, ethereal.sandstone,
nil, "default:sandstone", 1, "default:sandstone", 1, "default:sandstone",
"default:sandstone", nil, "stairs:stair_sandstone")
add_biome("sandstone_desert_ocean", -192, 2, 50, 20, ethereal.sandstone,
nil, "default:sand", 1, "default:sand", 2, "default:sandstone",
"default:sandstone", nil, "stairs:stair_sandstone")
if ethereal.sandstone then
minetest.register_biome({
name = "sandstone_desert_under",
node_cave_liquid = {"default:water_source", "default:lava_source"},
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = -256,
y_min = -31000,
heat_point = 50,
humidity_point = 20
})
end
add_biome("quicksand", 1, 1, 50, 38, ethereal.quicksand,
nil, "ethereal:quicksand2", 3, "default:gravel", 1)
add_biome("plains", 3, 25, 65, 25, ethereal.plains,
nil, "ethereal:dry_dirt", 1, "default:dirt", 3)
add_biome("plains_ocean", -192, 2, 55, 25, ethereal.plains,
nil, "default:sand", 1, "default:sand", 2)
tmp = "default:dry_dirt_with_dry_grass"
tmp2 = "default:dry_dirt"
if not minetest.registered_nodes[tmp] then
tmp = "default:dirt_with_dry_grass"
tmp2 = "default:dirt"
end
add_biome("savanna", 3, 50, 55, 25, ethereal.savanna,
nil, tmp, 1, tmp2, 3)
add_biome("savanna_ocean", -192, 1, 55, 25, ethereal.savanna,
nil, "default:sand", 1, "default:sand", 2)
if ethereal.savanna then
minetest.register_biome({
name = "savanna_under",
node_cave_liquid = {"default:water_source", "default:lava_source"},
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = -256,
y_min = -31000,
heat_point = 55,
humidity_point = 25
})
end
add_biome("fiery", 5, 20, 75, 10, ethereal.fiery,
nil, "ethereal:fiery_dirt", 1, "default:dirt", 3)
add_biome("fiery_beach", 1, 4, 75, 10, ethereal.fiery,
nil, "default:desert_sand", 1, "default:sand", 2)
add_biome("fiery_ocean", -192, 0, 75, 10, ethereal.fiery,
nil, "default:sand", 1, "default:sand", 2)
if ethereal.fiery then
minetest.register_biome({
name = "fiery_under",
node_cave_liquid = {"default:lava_source"},
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = -256,
y_min = -31000,
heat_point = 75,
humidity_point = 10
})
end
add_biome("sandclay", 1, 11, 65, 2, ethereal.sandclay,
nil, "default:sand", 3, "default:clay", 2)
add_biome("swamp", 1, 7, 80, 90, ethereal.swamp,
nil, "default:dirt_with_grass", 1, "default:dirt", 3)
add_biome("swamp_ocean", -192, 1, 80, 90, ethereal.swamp,
nil, "default:sand", 2, "default:clay", 2)
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_river_water = "default:ice",
node_riverbed = "default:gravel",
depth_riverbed = 2,
node_dungeon = "ethereal:icebrick",
node_dungeon_stair = "stairs:stair_ice",
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,
y_min = -112,
y_max = -9,
heat_point = 0,
humidity_point = 50
})
minetest.register_biome({
name = "glacier_under",
node_cave_liquid = {"default:water_source", "default:lava_source"},
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = -256,
y_min = -31000,
heat_point = 0,
humidity_point = 50
})
end
if ethereal.tundra == 1 and minetest.registered_nodes["default:permafrost"] then
minetest.register_biome({
name = "tundra_highland",
node_dust = "default:snow",
node_riverbed = "default:gravel",
depth_riverbed = 2,
y_max = 180,
y_min = 47,
heat_point = 0,
humidity_point = 40
})
minetest.register_biome({
name = "tundra",
node_top = "default:permafrost_with_stones",
depth_top = 1,
node_filler = "default:permafrost",
depth_filler = 1,
node_riverbed = "default:gravel",
depth_riverbed = 2,
vertical_blend = 4,
y_max = 46,
y_min = 2,
heat_point = 0,
humidity_point = 40
})
minetest.register_biome({
name = "tundra_beach",
node_top = "default:gravel",
depth_top = 1,
node_filler = "default:gravel",
depth_filler = 2,
node_riverbed = "default:gravel",
depth_riverbed = 2,
vertical_blend = 1,
y_max = 1,
y_min = -3,
heat_point = 0,
humidity_point = 40
})
minetest.register_biome({
name = "tundra_ocean",
node_top = "default:sand",
depth_top = 1,
node_filler = "default:sand",
depth_filler = 3,
node_riverbed = "default:gravel",
depth_riverbed = 2,
vertical_blend = 1,
y_max = -4,
y_min = -112,
heat_point = 0,
humidity_point = 40
})
minetest.register_biome({
name = "tundra_under",
node_cave_liquid = {"default:water_source", "default:lava_source"},
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = -256,
y_min = -31000,
heat_point = 0,
humidity_point = 40
})
end

View File

@ -0,0 +1,117 @@
local old_biomes = {}
local old_decor = {}
-- backup registered biome data
for key, def in pairs(minetest.registered_biomes) do
old_biomes[key] = def
end
for key, def in pairs(minetest.registered_decorations) do
old_decor[key] = def
end
-- clear current biome data
minetest.clear_registered_biomes()
minetest.clear_registered_decorations()
-- minetest.clear_registered_ores()
-- create list of default biomes to remove
local def_biomes = {
["rainforest_swamp"] = 1,
["grassland_dunes"] = 1,
["cold_desert"] = 1,
["taiga"] = 1,
["icesheet_ocean"] = 1,
["snowy_grassland_under"] = 1,
["desert"] = 1,
["deciduous_forest"] = 1,
["taiga_ocean"] = 1,
["desert_ocean"] = 1,
["tundra_ocean"] = 1,
["snowy_grassland_ocean"] = 1,
["sandstone_desert"] = 1,
["tundra_under"] = 1,
["coniferous_forest_ocean"] = 1,
["tundra"] = 1,
["sandstone_desert_under"] = 1,
["grassland"] = 1,
["rainforest"] = 1,
["grassland_ocean"] = 1,
["tundra_beach"] = 1,
["rainforest_under"] = 1,
["savanna_under"] = 1,
["icesheet"] = 1,
["savanna_ocean"] = 1,
["tundra_highland"] = 1,
["savanna"] = 1,
["cold_desert_under"] = 1,
["cold_desert_ocean"] = 1,
["desert_under"] = 1,
["taiga_under"] = 1,
["savanna_shore"] = 1,
["sandstone_desert_ocean"] = 1,
["snowy_grassland"] = 1,
["coniferous_forest_under"] = 1,
["deciduous_forest_ocean"] = 1,
["grassland_under"] = 1,
["icesheet_under"] = 1,
["rainforest_ocean"] = 1,
["deciduous_forest_shore"] = 1,
["deciduous_forest_under"] = 1,
["coniferous_forest_dunes"] = 1,
["coniferous_forest"] = 1
}
-- only re-register biomes that aren't on the list
for key, def in pairs(old_biomes) do
if not def_biomes[key] then
minetest.register_biome(def)
end
end
-- loop through decorations
for key, def in pairs(old_decor) do
local can_add = true
local new_biomes = {}
if type(def.biomes) == "table" then
-- loop through decoration biomes, only re-add one's not on above list
for num, bio in pairs(def.biomes) do
if not def_biomes[bio] then
table.insert(new_biomes, bio)
end
end
-- if no biomes are left on new list, do not re-add decoration
if #new_biomes == 0 then
can_add = false
end
elseif type(def.biomes) == "string" then
if def_biomes[def.biomes] then
can_add = false
else
new_biomes = {def.biomes} -- convert to table
end
elseif not def.biomes then
new_biomes = nil -- keep it nil for re-adding
end
if can_add == true then
def.biomes = new_biomes
minetest.register_decoration(def)
end
end

View File

@ -0,0 +1,51 @@
-- 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")
-- check if pine bush stem exists, if not create alias
if not minetest.registered_nodes["default:pine_bush_stem"] then
minetest.register_alias("default:pine_bush_stem", "default:wood")
end

319
mods/ethereal/crystal.lua Normal file
View File

@ -0,0 +1,319 @@
local S = ethereal.intllib
-- Crystal Spike (Hurts if you touch it)
minetest.register_node("ethereal:crystal_spike", {
description = S("Crystal Spike"),
drawtype = "plantlike",
tiles = {"ethereal_crystal_spike.png"},
inventory_image = "ethereal_crystal_spike.png",
wield_image = "ethereal_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 = "ethereal_crystal_ingot.png",
wield_image = "ethereal_crystal_ingot.png"
})
-- Check for builtin_item mod and add custom drop code to crystal spikes
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 = minetest.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()
minetest.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 = {"ethereal_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 = "ethereal_crystal_sword.png",
wield_image = "ethereal_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}
},
groups = {sword = 1},
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 = "ethereal_crystal_axe.png",
wield_image = "ethereal_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}
},
groups = {axe = 1},
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 = "ethereal_crystal_pick.png",
wield_image = "ethereal_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}
},
groups = {pickaxe = 1},
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", ""}
}
})
-- dig override for crystal shovel's silk touch ability
local old_handle_node_drops = minetest.handle_node_drops
function minetest.handle_node_drops(pos, drops, digger)
-- are we holding Crystal Shovel?
if not digger
or 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
or minetest.get_item_group(nn, "no_silktouch") == 1 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 = S("Crystal Shovel"),
inventory_image = "ethereal_crystal_shovel.png",
wield_image = "ethereal_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}
},
groups = {shovel = 1},
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 = "ethereal_crystal_gilly_staff.png",
wield_image = "ethereal_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({
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
-- Helper function
local function add_tool(name, desc, afteruse)
minetest.override_item(name, {
original_description = desc,
description = toolranks.create_description(desc, 0, 1),
after_use = afteruse and toolranks.new_afteruse
})
end
add_tool("ethereal:pick_crystal", "Crystal Pickaxe", true)
add_tool("ethereal:axe_crystal", "Crystal Axe", true)
add_tool("ethereal:shovel_crystal", "Crystal Shovel", true)
add_tool("ethereal:sword_crystal", "Crystal Sword", true)
end

806
mods/ethereal/decor.lua Normal file
View File

@ -0,0 +1,806 @@
if minetest.registered_nodes["farming:cotton_wild"] then
minetest.register_decoration({
name = "farming:cotton_wild",
deco_type = "simple",
place_on = {"default:dry_dirt_with_dry_grass"},
sidelen = 16,
noise_params = {
offset = -0.1,
scale = 0.1,
spread = {x = 50, y = 50, z = 50},
seed = 4242,
octaves = 3,
persist = 0.7
},
biomes = {"savanna"},
y_max = 31000,
y_min = 1,
decoration = "farming:cotton_wild"
})
end
-- water pools in swamp areas if 5.0 detected
if minetest.registered_nodes["default:permafrost"] then
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.01,
biomes = {"swamp"},
y_max = 2,
y_min = 1,
flags = "force_placement",
decoration = "default:water_source",
spawn_by = "default:dirt_with_grass",
num_spawn_by = 8
})
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.1,
biomes = {"swamp"},
y_max = 2,
y_min = 1,
flags = "force_placement",
decoration = "default:water_source",
spawn_by = {"default:dirt_with_grass", "default:water_source"},
num_spawn_by = 8
})
end
if minetest.registered_nodes["default:dry_dirt_with_dry_grass"] then
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dry_dirt_with_dry_grass"},
sidelen = 4,
noise_params = {
offset = -1.5,
scale = -1.5,
spread = {x = 200, y = 200, z = 200},
seed = 329,
octaves = 4,
persist = 1.0
},
biomes = {"savanna"},
y_max = 31000,
y_min = 1,
decoration = "default:dry_dirt",
place_offset_y = -1,
flags = "force_placement"
})
end
-- helper string
local tmp
-- helper function
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, {"deciduous_forest_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_desert"}, 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:dry_dirt_with_dry_grass",
"default:dirt_with_dry_grass"}, 0.25, {"savanna"}, 1, 100,
{"default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4",
"default:dry_grass_5"}, nil, nil, nil, ethereal.savanna)
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)
add_node({"default:desert_stone"}, 0.005, {"caves"}, 5, 40,
{"default:dry_grass_2", "default:dry_grass_3", "default:dry_shrub"},
nil, nil, nil, ethereal.caves)
-- flowers & strawberry
add_node({"default:dirt_with_grass"}, 0.025, {"deciduous_forest"}, 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",
"flowers:chrysanthemum_green", "flowers:tulip_black"}, nil, nil, nil,
ethereal.prairie)
-- crystal spike & crystal grass
add_node({"ethereal:crystal_dirt"}, 0.02, {"frost", "frost_floatland"}, 1, 1750,
{"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)
-- snowy grass
add_node({"ethereal:gray_dirt"}, 0.05, {"grayness"}, 1, 100,
{"ethereal:snowygrass"}, nil, nil, nil, ethereal.grayness)
add_node({"ethereal:cold_dirt", "default:dirt_with_coniferous_litter"}, 0.05,
{"coniferous_forest"}, 1, 100, {"ethereal:snowygrass"}, nil, nil, nil, ethereal.snowy)
-- cactus
add_node({"default:sandstone"}, 0.002, {"sandstone_desert"}, 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_red"}, nil, nil, nil, ethereal.mushroom)
-- spore grass
add_node({"ethereal:mushroom_dirt"}, 0.1, {"mushroom"}, 1, 100,
{"ethereal:spore_grass"}, nil, nil, nil, ethereal.mushroom)
local list = {
{"junglee", {"ethereal:jungle_dirt", "default:dirt_with_rainforest_litter"}, ethereal.junglee},
{"deciduous_forest", {"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, {"deciduous_forest"}, 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:grove_dirt"}, 0.35, {"mediterranean"}, 1, 100,
{"default:grass_2", "default:grass_3", "default:grass_4",
"default:grass_5"}, nil, nil, nil, ethereal.mediterranean)
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, {"grassland", "swamp"},
1, 100, {"default:grass_3", "default:grass_4"}, nil, nil, nil, 1)
add_node({"ethereal:bamboo_dirt"}, 0.35, {"sakura"}, 1, 100,
{"default:grass_2", "default:grass_3", "default:grass_4",
"default:grass_5"}, nil, nil, nil, ethereal.sakura)
add_node({"ethereal:bamboo_dirt"}, 0.025, {"sakura"}, 1, 100,
{"ethereal:lilac"}, nil, nil, nil, ethereal.sakura)
-- grass on sand
if minetest.registered_nodes["default:marram_grass_1"] then
add_node({"default:sand"}, 0.25, {"sandclay"}, 3, 4, {"default:marram_grass_1",
"default:marram_grass_2", "default:marram_grass_3"}, nil, nil, nil,
ethereal.sandclay)
else
add_node({"default:sand"}, 0.25, {"sandclay"}, 3, 4, {"default:grass_2",
"default:grass_3"}, nil, nil, nil, ethereal.sandclay)
end
-- 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)
add_node({"ethereal:crystal_dirt"}, 0.001, {"frost_floatlands"}, 1025, 1750,
{"ethereal:fern"}, nil, nil, nil, ethereal.frost)
-- snow
add_node({"ethereal:cold_dirt", "default:dirt_with_coniferous_litter"},
0.8, {"coniferous_forest"}, 4, 40, {"default:snow"}, nil, nil, nil, ethereal.snowy)
add_node({"default:dirt_with_snow"}, 0.8, {"taiga"}, 40, 140,
{"default:snow"}, nil, nil, nil, ethereal.alpine)
-- wild onion
add_node({"default:dirt_with_grass", "ethereal:prairie_dirt"}, 0.025,
{"deciduous_forest", "grassytwo", "jumble", "prairie"}, 1, 100,
{"ethereal:onion_4"}, nil, nil, nil, 1)
-- papyrus
add_node({"default:dirt_with_grass"}, 0.1, {"deciduous_forest"}, 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.002, {"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.002, {"grassytwo"}, 1, 100,
{"farming:carrot_7", "farming:cucumber_4", "farming:potato_3", "farming:vanilla_7",
"farming:tomato_7", "farming:corn_8", "farming:coffee_5", "farming:blackberry_4",
"farming:raspberry_4", "farming:rhubarb_3", "farming:blueberry_4",
"farming:cabbage_6", "farming:lettuce_5", "farming:sunflower_8",
"farming:asparagus"}, nil, nil, nil,
ethereal.grassytwo)
add_node({"default:dirt_with_grass"}, 0.002, {"deciduous_forest"}, 1, 100,
{"farming:carrot_7", "farming:cucumber_4", "farming:potato_3", "farming:vanilla_7",
"farming:tomato_7", "farming:corn_8", "farming:coffee_5", "farming:blackberry_4",
"farming:raspberry_4", "farming:rhubarb_3", "farming:blueberry_4",
"farming:beetroot_5", "farming:sunflower_8",
"farming:eggplant_3"}, nil, nil, nil, ethereal.grassy)
add_node({"default:dirt_with_grass"}, 0.002, {"jumble"}, 1, 100,
{"farming:carrot_7", "farming:cucumber_4", "farming:potato_3", "farming:vanilla_7",
"farming:tomato_7", "farming:corn_8", "farming:coffee_5", "farming:blackberry_4",
"farming:raspberry_4", "farming:rhubarb_3", "farming:blueberry_4",
"farming:cabbage_6", "farming:lettuce_5",
"farming:spinach_3"}, nil, nil, nil, ethereal.jumble)
add_node({"ethereal:prairie_dirt"}, 0.025, {"prairie"}, 1, 100,
{"farming:carrot_7", "farming:cucumber_4", "farming:potato_3", "farming:parsley_3",
"farming:tomato_7", "farming:corn_8", "farming:coffee_5", "farming:blackberry_4",
"farming:raspberry_4", "farming:rhubarb_3", "farming:blueberry_4",
"farming:pea_5", "farming:beetroot_5", "farming:sunflower_8"}, nil, nil, nil,
ethereal.prairie)
add_node({"ethereal:grove_dirt"}, 0.002, {"mediterranean"}, 1, 100,
{"farming:parsley_3"}, nil, nil, nil, ethereal.mediterranean)
-- melon and pumpkin
add_node({"ethereal:jungle_dirt", "default:dirt_with_rainforest_litter"},
0.001, {"junglee"}, 1, 1, {"farming:melon_8", "farming:pumpkin_8"},
nil, "default:water_source", 1, ethereal.junglee)
add_node({"default:dirt_with_grass"}, 0.001, {"deciduous_forest"}, 1, 1,
{"farming:melon_8", "farming:pumpkin_8"}, nil, "default:water_source",
1, ethereal.grassy)
add_node({"default:dirt_with_grass"}, 0.001, {"grassytwo"}, 1, 1,
{"farming:melon_8", "farming:pumpkin_8"}, nil, "default:water_source",
1, ethereal.grassytwo)
add_node({"default:dirt_with_grass"}, 0.001, {"jumble"}, 1, 1,
{"farming:melon_8", "farming:pumpkin_8"}, nil, "default:water_source",
1, ethereal.jumble)
-- mint
add_node({"default:dirt_with_grass", "default:dirt_with_coniferous_litter",
"ethereal:bamboo_dirt"}, 0.005, nil, 1, 75, "farming:mint_4", nil,
{"group:water", "group:sand"}, 1, 1)
-- green beans
add_node({"default:dirt_with_grass"}, 0.001, {"grassytwo"}, 1, 100,
{"farming:beanbush"}, nil, nil, nil, ethereal.grassytwo)
-- grape bushel
add_node({"default:dirt_with_grass"}, 0.001, {"grassytwo"}, 1, 100,
{"farming:grapebush"}, nil, nil, nil, ethereal.grassytwo)
add_node({"default:dirt_with_grass"}, 0.001, {"deciduous_forest"}, 1, 100,
{"farming:grapebush"}, nil, nil, nil, ethereal.grassy)
add_node({"ethereal:prairie_dirt"}, 0.001, {"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.002,
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:pepper_6",
"farming:onion_5", "farming:hemp_7", "farming:pepper_7", "farming:soy_5",
"farming:ginger"
},
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.002,
spread = {x = 100, y = 100, z = 100},
seed = 917,
octaves = 3,
persist = 0.6
},
y_min = 18,
y_max = 30,
decoration = {"farming:pineapple_8", "farming:soy_5"}
})
minetest.register_decoration({
deco_type = "simple",
place_on = {"ethereal:grove_dirt"},
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.002,
spread = {x = 100, y = 100, z = 100},
seed = 448,
octaves = 3,
persist = 0.6
},
y_min = 15,
y_max = 40,
decoration = {"farming:artichoke_5"},
spawn_by = "group:tree",
num_spawn_by = 1
})
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_dirt", "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_dirt", "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 == 1 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
if ethereal.snowy == 1 and minetest.registered_nodes["default:fern_1"] then
local function register_fern_decoration(seed, length)
minetest.register_decoration({
name = "default:fern_" .. length,
deco_type = "simple",
place_on = {
"ethereal:cold_dirt", "default:dirt_with_coniferous_litter"},
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.2,
spread = {x = 100, y = 100, z = 100},
seed = seed,
octaves = 3,
persist = 0.7
},
y_max = 31000,
y_min = 6,
decoration = "default:fern_" .. length
})
end
register_fern_decoration(14936, 3)
register_fern_decoration(801, 2)
register_fern_decoration(5, 1)
end
if ethereal.tundra == 1 and minetest.registered_nodes["default:permafrost"] then
-- Tundra moss
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:permafrost_with_stones"},
sidelen = 4,
noise_params = {
offset = -0.8,
scale = 2.0,
spread = {x = 100, y = 100, z = 100},
seed = 53995,
octaves = 3,
persist = 1.0
},
biomes = {"tundra"},
y_max = 50,
y_min = 2,
decoration = "default:permafrost_with_moss",
place_offset_y = -1,
flags = "force_placement"
})
-- Tundra patchy snow
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:permafrost_with_moss",
"default:permafrost_with_stones",
"default:stone",
"default:gravel"
},
sidelen = 4,
noise_params = {
offset = 0,
scale = 1.0,
spread = {x = 100, y = 100, z = 100},
seed = 172555,
octaves = 3,
persist = 1.0
},
biomes = {"tundra", "tundra_beach"},
y_max = 50,
y_min = 1,
decoration = "default:snow"
})
end
if minetest.get_modpath("butterflies") then
minetest.register_decoration({
name = "butterflies:butterfly",
deco_type = "simple",
place_on = {"default:dirt_with_grass", "ethereal:prairie_dirt"},
place_offset_y = 2,
sidelen = 80,
fill_ratio = 0.005,
biomes = {"deciduous_forest", "grassytwo", "prairie", "jumble"},
y_max = 31000,
y_min = 1,
decoration = {
"butterflies:butterfly_white",
"butterflies:butterfly_red",
"butterflies:butterfly_violet"
},
spawn_by = "group:flower",
num_spawn_by = 1
})
-- restart butterfly timers
minetest.register_lbm({
name = ":butterflies:butterfly_timer",
nodenames = {
"butterflies:butterfly_white", "butterflies:butterfly_red",
"butterflies:butterfly_violet"
},
run_at_every_load = true,
action = function(pos)
minetest.get_node_timer(pos):start(5)
end
})
end
if minetest.get_modpath("fireflies") then
minetest.register_decoration({
name = "fireflies:firefly_low",
deco_type = "simple",
place_on = {
"default:dirt_with_grass",
"default:dirt_with_coniferous_litter",
"default:dirt_with_rainforest_litter",
"default:dirt",
"ethereal:cold_dirt", "prairie"
},
place_offset_y = 2,
sidelen = 80,
fill_ratio = 0.0005,
biomes = {
"deciduous_forest", "grassytwo", "coniferous_forest", "junglee", "swamp"},
y_max = 31000,
y_min = -1,
decoration = "fireflies:hidden_firefly"
})
-- restart firefly timers
minetest.register_lbm({
name = ":fireflies:firefly_timer",
nodenames = {"fireflies:firefly", "fireflies:hidden_firefly"},
run_at_every_load = true,
action = function(pos)
minetest.get_node_timer(pos):start(5)
end
})
end
-- Coral Reef (Minetest 5.0)
if minetest.registered_nodes["default:coral_green"] then
minetest.register_decoration({
name = "default:corals",
deco_type = "simple",
place_on = {"default:sand"},
place_offset_y = -1,
sidelen = 4,
noise_params = {
offset = -4,
scale = 4,
spread = {x = 50, y = 50, z = 50},
seed = 7013,
octaves = 3,
persist = 0.7,
},
biomes = {"desert_ocean", "savanna_ocean", "junglee_ocean"},
y_max = -2,
y_min = -8,
flags = "force_placement",
decoration = {
"default:coral_green", "default:coral_pink",
"default:coral_cyan", "default:coral_brown",
"default:coral_orange", "default:coral_skeleton"
}
})
-- Kelp
minetest.register_decoration({
name = "default:kelp",
deco_type = "simple",
place_on = {"default:sand"},
place_offset_y = -1,
sidelen = 16,
noise_params = {
offset = -0.04,
scale = 0.1,
spread = {x = 200, y = 200, z = 200},
seed = 87112,
octaves = 3,
persist = 0.7
},
biomes = {
"frost_ocean", "deciduous_forest_ocean", "sandstone_ocean", "swamp_ocean"},
y_max = -5,
y_min = -10,
flags = "force_placement",
decoration = "default:sand_with_kelp",
param2 = 48,
param2_max = 96
})
end
local random = math.random
-- Generate Illumishroom in caves on top of 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(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)

10
mods/ethereal/depends.txt Normal file
View File

@ -0,0 +1,10 @@
default
farming
stairs?
flowers
doors?
bakedclay?
moreblocks?
intllib?
lucky_block?
toolranks?

View File

@ -0,0 +1 @@
BIOME mod mapgen to add many new biomes to the world

323
mods/ethereal/dirt.lua Normal file
View File

@ -0,0 +1,323 @@
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,
})
-- register ethereal dirt types
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, spreading_dirt_type = 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
-- 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
pos.y = pos.y - 1
local under = minetest.get_node(pos)
-- make sure we have soil underneath
if minetest.get_item_group(under.name, "soil") == 0
or under.name == "default:desert_sand" then
return
end
local seedling = minetest.find_nodes_in_area_under_air(
pos0, pos1, {under.name})
if #seedling > 0 then
pos = seedling[math.random(#seedling)]
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 ""
if label == "Flower spread"
or node1 == "group:flora" then
--ab.interval = 1
ab.chance = 96 -- back to original chance from 300
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
elseif label == "Mushroom spread" then
--ab.interval = 1
ab.chance = 50 -- back to original chance from 150
ab.nodenames = {"group:mushroom"}
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, not_in_creative_inventory = 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^[colorize:#00004F10"},
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", "bucket:bucket_water", "group:sand"},
{"group:sand", "group:sand", "group:sand"}
},
replacements = {
{"bucket:bucket_water", "bucket:bucket_empty"}
}
})

436
mods/ethereal/extra.lua Normal file
View File

@ -0,0 +1,436 @@
local S = ethereal.intllib
-- Etherium Dust
minetest.register_craftitem("ethereal:etherium_dust", {
description = S("Etherium Dust"),
inventory_image = "ethereal_etherium_dust.png",
wield_image = "ethereal_etherium_dust.png"
})
-- Ethereium Ore
minetest.register_node("ethereal:etherium_ore", {
description = S("Etherium Ore"),
tiles = {"default_desert_stone.png^ethereal_etherium_ore.png"},
groups = {cracky = 3},
drop = "ethereal:etherium_dust",
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("ethereal:stone_with_etherium_ore", {
description = S("Etherium Ore"),
tiles = {"default_stone.png^ethereal_etherium_ore.png"},
groups = {cracky = 3},
drop = "ethereal:etherium_dust",
sounds = default.node_sound_stone_defaults()
})
-- Bamboo Flooring
minetest.register_node("ethereal:bamboo_floor", {
description = S("Bamboo Floor"),
drawtype = "nodebox",
tiles = {"ethereal_bamboo_floor.png"},
wield_image = "ethereal_bamboo_floor.png",
inventory_image = "ethereal_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()
})
minetest.register_craft({
output = "ethereal:bamboo_floor 2",
recipe = {
{"ethereal:bamboo", "ethereal:bamboo"},
{"ethereal:bamboo", "ethereal:bamboo"}
}
})
-- Bamboo Block
minetest.register_node("ethereal:bamboo_block", {
description = S("Bamboo Block"),
tiles = {"ethereal_bamboo_floor.png"},
paramtype = "light",
groups = {snappy = 3, choppy = 3 , flammable = 2, wood = 1},
sounds = default.node_sound_wood_defaults()
})
minetest.register_craft({
output = "ethereal:bamboo_block",
recipe = {
{"ethereal:bamboo_floor"},
{"ethereal:bamboo_floor"}
}
})
minetest.register_craft({
output = "ethereal:bamboo_block",
recipe = {
{"ethereal:bamboo", "ethereal:bamboo", "ethereal:bamboo"},
{"ethereal:bamboo", "ethereal:bamboo", "ethereal:bamboo"},
{"ethereal:bamboo", "ethereal:bamboo", "ethereal:bamboo"}
}
})
-- Paper recipes
minetest.register_craft({
output = "default:paper 6",
recipe = {
{"ethereal:bamboo", "ethereal:bamboo"},
{"ethereal:bamboo", "ethereal:bamboo"},
{"ethereal:bamboo", "ethereal:bamboo"}
}
})
minetest.register_craft({
output = "default:paper 2",
recipe = {
{"farming:cotton", "farming:cotton", "farming:cotton"}
}
})
-- 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"}
}
})
-- X pattern craft recipes (5x 'a' in X pattern gives 5 of 'b')
if ethereal.xcraft == true then
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},
{"default:stone", "default:silver_sandstone", 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
-- Palm Wax
minetest.register_craftitem("ethereal:palm_wax", {
description = S("Palm Wax"),
inventory_image = "ethereal_palm_wax.png",
wield_image = "ethereal_palm_wax.png"
})
minetest.register_craft({
type = "cooking",
cooktime = 10,
output = "ethereal:palm_wax",
recipe = "ethereal:palmleaves"
})
local function add_candle(col, dcol)
local rcol = ""
if col ~= "" then
rcol = col
col = "_" .. col
end
minetest.register_node("ethereal:candle" .. col, {
description = S(dcol .. "Candle"),
drawtype = "plantlike",
inventory_image = "ethereal_candle" .. col .. "_static.png",
wield_image = "ethereal_candle" .. col .. "_static.png",
tiles = {
{
name = "ethereal_candle" .. col .. ".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 = {candle = 1, 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 }
}
})
if col ~= "" then
minetest.register_craft({
output = "ethereal:candle" .. col,
recipe = {
{"group:candle", "dye:" .. rcol},
}
})
end
end
add_candle("", "")
add_candle("black", "Black ") -- candle colour textures by wRothbard
add_candle("blue", "Blue ")
add_candle("brown", "Brown ")
add_candle("cyan", "Cyan ")
add_candle("dark_green", "Dark Green ")
add_candle("dark_grey", "Dark Grey ")
add_candle("green", "Green ")
add_candle("grey", "Grey ")
add_candle("magenta", "Magenta ")
add_candle("orange", "Orange ")
add_candle("pink", "Pink ")
add_candle("red", "Red ")
add_candle("violet", "Violet ")
add_candle("yellow", "Yellow ")
-- white candle recipe
minetest.register_craft({
output = "ethereal:candle",
recipe = {
{"group:candle", "dye:white"}
}
})
-- candle recipe
minetest.register_craft({
output = "ethereal:candle 2",
recipe = {
{"farming:string"},
{"ethereal:palm_wax"},
{"ethereal:palm_wax"}
}
})
-- Wooden Bowl
minetest.register_craftitem("ethereal:bowl", {
description = S("Bowl"),
inventory_image = "ethereal_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 = {"ethereal_stone_ladder.png"},
inventory_image = "ethereal_stone_ladder.png",
wield_image = "ethereal_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 = {"ethereal_paper_wall.png"},
inventory_image = "ethereal_paper_wall.png",
wield_image = "ethereal_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 = {
{"group:stick", "default:paper", "group:stick"},
{"group:stick", "default:paper", "group:stick"},
{"group:stick", "default:paper", "group:stick"}
}
})
-- Glostone (A little bit of light decoration)
minetest.register_node("ethereal:glostone", {
description = S("Glo Stone"),
tiles = {"ethereal_glostone.png"},
groups = {cracky = 3},
light_source = 13,
drop = "ethereal:glostone",
sounds = default.node_sound_stone_defaults()
})
minetest.register_craft({
output = "ethereal:glostone",
recipe = {
{"", "default:torch", ""},
{"default:torch", "default:stone", "default:torch"},
{"", "dye:yellow", ""}
}
})
-- Charcoal Lump
minetest.register_craftitem("ethereal:charcoal_lump", {
description = S("Lump of Charcoal"),
inventory_image = "ethereal_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 alternative node list
ethereal.lightstaff_recipes = {
["nether:rack"] = "nether:glowstone",
["nether:rack_deep"] = "nether:glowstone_deep"
}
-- Staff of Light (by Xanthin)
minetest.register_tool("ethereal:light_staff", {
description = S("Staff of Light"),
inventory_image = "ethereal_light_staff.png",
light_source = 13,
wield_image = "ethereal_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
local def = minetest.registered_nodes[node]
local stone = def and def.groups and def.groups.stone and def.groups.stone == 1
if ethereal.lightstaff_recipes[node] or stone then
local glo = ethereal.lightstaff_recipes[node] or "ethereal:glostone"
minetest.set_node(pos, {name = glo})
itemstack:add_wear(65535 / 149) -- 150 uses
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"}
}
})

103
mods/ethereal/fences.lua Normal file
View File

@ -0,0 +1,103 @@
local S = ethereal.intllib
local door_mod = minetest.get_modpath("doors")
local add_fence = function(name, node, desc, texture)
if default.register_fence then
default.register_fence("ethereal:fence_" .. name, {
description = S(desc .. " Fence"),
texture = texture .. ".png",
material = "ethereal:" .. node,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults(),
check_for_pole = true
})
end
if default.register_fence_rail then
default.register_fence_rail("ethereal:fence_rail_" .. name, {
description = S(desc .. " Fence Rail"),
texture = texture .. ".png",
material = "ethereal:" .. node,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
})
end
if door_mod and doors.register_fencegate then
doors.register_fencegate("ethereal:fencegate_" .. name, {
description = S(desc .. " Fence Gate"),
texture = texture .. ".png",
material = "ethereal:" .. node,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}
})
end
if default.register_mesepost then
default.register_mesepost("ethereal:mese_post_" .. name, {
description = S(desc .. " Mese Post Light"),
texture = texture .. ".png",
material = "ethereal:" .. node,
})
end
end
add_fence("scorched", "scorched_tree", "Scorched", "ethereal_scorched_tree")
add_fence("frostwood", "frost_wood", "Frost", "ethereal_frost_wood")
add_fence("redwood", "redwood_wood", "Redwood", "ethereal_redwood_wood")
add_fence("willow", "willow_wood", "Willow", "ethereal_willow_wood")
add_fence("yellowwood", "yellow_wood", "Healing Wood", "ethereal_yellow_wood")
add_fence("palm", "palm_wood", "Palm", "moretrees_palm_wood")
add_fence("banana", "banana_wood", "Banana Wood", "ethereal_banana_wood")
add_fence("mushroom", "mushroom_trunk", "Mushroom", "ethereal_mushroom_trunk")
add_fence("birch", "birch_wood", "Birch", "moretrees_birch_wood")
add_fence("sakura", "sakura_wood", "Sakura", "ethereal_sakura_wood")
add_fence("olive", "olive_wood", "Olive", "ethereal_olive_wood")
add_fence("basandra", "basandra_wood", "Basandra", "ethereal_basandra_bush_wood")
-- 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")
-- sakura door
if door_mod then
doors.register("ethereal:door_sakura", {
tiles = {
{name = "ethereal_sakura_door.png", backface_culling = true}
},
description = S("Sakura Wood Door"),
inventory_image = "ethereal_sakura_door_inv.png",
groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sound_open = "doors_glass_door_open",
sound_close = "doors_glass_door_close",
recipe = {
{"group:stick", "default:paper"},
{"default:paper", "group:stick"},
{"ethereal:sakura_wood", "ethereal:sakura_wood"}
}
})
minetest.register_alias("ethereal:sakura_door", "ethereal:door_sakura")
minetest.register_alias("ethereal:sakura_door_a", "ethereal:door_sakura_a")
minetest.register_alias("ethereal:sakura_door_b", "ethereal:door_sakura_b")
end

611
mods/ethereal/fishing.lua Normal file
View File

@ -0,0 +1,611 @@
--[[
This fishing routine is inspired by the great work Rootyjr did for MineClone2
]]--
local S = ethereal.intllib
local fish_items = {
"ethereal:fish_bluefin",
"ethereal:fish_blueram",
"ethereal:fish_catfish",
"ethereal:fish_plaice",
"ethereal:fish_salmon",
{"ethereal:fish_clownfish", "savanna"},
{"ethereal:fish_pike", "grassy"},
{"ethereal:fish_flathead", "jungle"},
{"ethereal:fish_pufferfish", "desert_ocean"},
{"ethereal:fish_cichlid", "junglee_ocean"},
{"ethereal:fish_coy", "sakura"},
{"ethereal:fish_tilapia", "sakura"},
{"ethereal:fish_trevally", "sakura"},
{"ethereal:fish_angler", "ocean"},
{"ethereal:fish_jellyfish", "ocean"},
{"ethereal:fish_seahorse", "ocean"},
{"ethereal:fish_seahorse_green", "junglee_ocean"},
{"ethereal:fish_seahorse_pink", "mushroom_ocean"},
{"ethereal:fish_seahorse_blue", "frost_ocean"},
{"ethereal:fish_seahorse_yellow", "desert_ocean"},
{"ethereal:fish_parrot", "desert"},
{"ethereal:fish_piranha", "jungle"},
{"ethereal:fish_tuna", "jungle"},
{"ethereal:fish_trout", "ocean"},
{"ethereal:fish_cod", "ocean"},
{"ethereal:fish_flounder", "ocean"},
{"ethereal:fish_redsnapper", "ocean"},
{"ethereal:fish_squid", "ocean"},
{"ethereal:fish_shrimp", "ocean"},
{"ethereal:fish_carp", "swamp"}
}
-- grassland_ocean, desert_ocean, sakura_ocean, mesa_ocean, coniferous_forest_ocean,
-- taiga_ocean, frost_ocean, deciduous_forest_ocean, grayness_ocean, grassytwo_ocean,
-- prairie_ocean, jumble_ocean, junglee_ocean, grove_ocean, mushroom_ocean,
-- sandstone_desert_ocean, plains_ocean, savanna_ocean, fiery_ocean, swamp_ocean,
-- glacier_ocean, tundra_ocean
local mod_bonemeal = minetest.get_modpath("bonemeal")
local mod_armor = minetest.get_modpath("3d_armor")
local mod_mobs = minetest.get_modpath("mobs")
local junk_items = {
"ethereal:bowl",
"default:stick",
"farming:string",
"default:papyrus",
"dye:black",
"flowers:waterlily",
"default:paper",
"flowers:mushroom_red",
"vessels:glass_bottle",
{"ethereal:bamboo", "bamboo"},
mod_bonemeal and "bonemeal:bone" or "default:stick",
mod_armor and "3d_armor:boots_wood 6000" or "default:stick"
}
local bonus_items = {
mod_mobs and "mobs:nametag" or "fireflies:bug_net",
mod_mobs and "mobs:net" or "default:sapling",
"fireflies:firefly_bottle",
mod_mobs and "mobs:saddle" or "farming:cotton_wild",
"default:book",
{"ethereal:firethorn", "glacier"},
{"ethereal:crystal_spike", "frost"},
{"ethereal:banana_bunch", "grove"},
"tnt:tnt_stick",
"bucket:bucket_empty",
"default:sword_steel 12000",
"ethereal:fishing_rod 9000"
}
local default_item = "default:dirt"
local random = math.random -- yup we use this a lot
-- add item function
ethereal.add_item = function(fish, junk, bonus)
if fish and fish ~= "" then
table.insert(fish_items, fish)
end
if junk and junk ~= "" then
table.insert(junk_items, junk)
end
if bonus and bonus ~= "" then
table.insert(bonus_items, bonus)
end
end
local effect = function(pos)
minetest.add_particle({
pos = {
x = pos.x + random() - 0.5,
y = pos.y + 0.1,
z = pos.z + random() - 0.5
},
velocity = {x = 0, y = 4, z = 0},
acceleration = {x = 0, y = -5, z = 0},
expirationtime = random() * 0.5,
size = random(),
collisiondetection = false,
vertical = false,
texture = "bubble.png"
})
end
-- fishing bob entity
minetest.register_entity("ethereal:bob_entity", {
textures = {"ethereal_fishing_bob.png"},
visual_size = {x = 0.5, y = 0.5},
collisionbox = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
physical = false,
pointable = false,
static_save = false,
timer = 0,
on_step = function(self, dtime)
local pos = self.object:get_pos()
local node = minetest.get_node(pos)
local def = minetest.registered_nodes[node.name]
-- casting rod into water
if not self.cast then
-- remove if we hit something hard
if (def and def.walkable) or node.name == "ignore" then
self.object:remove() ; --print("-- hit block")
return
end
-- while bob is in water
if def and def.liquidtype == "source"
and minetest.get_item_group(node.name, "water") > 0 then
-- incase of lag find water level
local free_fall, blocker = minetest.line_of_sight(
{x = pos.x, y = pos.y + 2, z = pos.z},
{x = pos.x, y = pos.y , z = pos.z})
-- do we have worms for bait, if so take one
local player = self.fisher and minetest.get_player_by_name(self.fisher)
local inv = player and player:get_inventory()
local bait = 0
if inv and inv:contains_item("main", "caverealms:glow_bait") then
inv:remove_item("main", "caverealms:glow_bait")
bait = 40
elseif inv and inv:contains_item("main", "ethereal:worm") then
inv:remove_item("main", "ethereal:worm")
bait = 20
end
-- re-position fishing bob and set to cast
pos = {x = pos.x, y = blocker.y + 0.45, z = pos.z}
self.object:set_acceleration({x = 0, y = 0, z = 0})
self.object:set_velocity({x = 0, y = 0, z = 0})
self.object:set_pos(pos)
self.bait = bait
self.cast = true
-- splash
effect(pos) ; effect(pos) ; effect(pos) ; effect(pos)
minetest.sound_play("default_water_footstep", {
pos = pos, gain = 0.1}, true)
end
else -- already cast and waiting for fish
-- we need a name
if self.fisher == nil or self.fisher == "" then
self.object:remove() ; --print("-- no name")
return
end
local player = minetest.get_player_by_name(self.fisher)
-- we need an actual person
if not player then
self.object:remove() ; --print("-- no player")
return
end
local wield = player:get_wielded_item()
-- we also need a rod to fish with
if not wield or wield:get_name() ~= "ethereal:fishing_rod" then
self.object:remove() ; --print("-- no rod")
return
end
-- remove bob if player is too far away
local pla_pos = player:get_pos()
if (pla_pos.y - pos.y) > 15
or (pla_pos.y - pos.y) < -15
or (pla_pos.x - pos.x) > 15
or (pla_pos.x - pos.x) < -15
or (pla_pos.z - pos.z) > 15
or (pla_pos.z - pos.z) < -15 then
self.object:remove() ; --print("-- out of range")
return
end
-- when in water, bob.
if def and def.liquidtype == "source"
and minetest.get_item_group(def.name, "water") ~= 0 then
self.old_y = self.old_y or pos.y
-- choose random time to wait (minus bait time for worm)
if not self.patience or self.patience <= 0 then
self.patience = random(10, (45 - self.bait))
self.bait = 0
end
-- add particles if bobber bobbing
if self.bob then
effect(pos)
-- handle timer
if self.timer < self.patience then
self.timer = self.timer + dtime
else
self.patience = 0
self.timer = 0
self.bob = false
end
else
-- handle timer
if self.timer < self.patience then
self.timer = self.timer + dtime
else
-- waiting over, bob that bobber and play splash sound
self.bob = true
self.patience = 1.5 -- timeframe to catch fish after bob
self.timer = 0
self.object:set_velocity({x = 0, y = -1, z = 0})
self.object:set_acceleration({x = 0, y = 3, z = 0})
minetest.sound_play("default_water_footstep", {
pos = pos, gain = 0.1}, true)
end
end
else
-- reset to original position after dive.
if self.old_y and pos.y > self.old_y then
self.object:set_velocity({x = 0, y = 0, z = 0})
self.object:set_acceleration({x = 0, y = 0, z = 0})
self.object:set_pos({x = pos.x, y = self.old_y, z = pos.z})
--print("-- reset bob y pos")
end
-- remove if not in water and not bobbing
if not self.bob then
self.object:remove() ; --print("-- not in water")
end
end
end -- if not self.cast
end -- on_step
})
-- narrow item list depending on biome if applicable
local find_item = function(list, pos)
local item
local items = {}
local data= minetest.get_biome_data(pos)
local biome = data and minetest.get_biome_name(data.biome) or ""
for n = 1, #list do
item = list[n]
if type(item) == "string" then
table.insert(items, item)
elseif type(item) == "table" then
if item[2] == "" or biome:find(item[2]) then
table.insert(items, item[1])
end
end
end
--print("==biome: " .. biome, dump(items))
if #items > 0 then
return items[random(#items)]
end
return ""
end
-- fishing rod function that throws pre bob, places bob and catches fish when it moves
local use_rod = function(itemstack, player, pointed_thing)
local pos = player:get_pos()
local objs = minetest.get_objects_inside_radius(pos, 15)
local found = true
local ent
-- loop through entities and look for bobs
for n = 1, #objs do
ent = objs[n]:get_luaentity()
if ent
and ent.fisher
and ent.name == "ethereal:bob_entity"
and player:get_player_name() == ent.fisher then
found = false
if ent.bob == true then
local item
local r = random(100)
if r < 86 then
item = find_item(fish_items, pos)
elseif r > 85 and r < 96 then
item = find_item(junk_items, pos)
else
item = find_item(bonus_items, pos)
end
-- split into name and number (wear level or number of items)
local item_name = item:split(" ")[1]
local item_wear = item:split(" ")[2]
-- make sure item exists, if not replace with default item
if not minetest.registered_items[item_name] then
item = default_item
end
--print ("---caught", item, r)
item = ItemStack(item) -- convert into itemstack
-- if tool then add wear
if item_wear and minetest.registered_tools[item_name] then
item:set_wear(65535 - item_wear)
end
local inv = player:get_inventory()
if inv:room_for_item("main", item) then
inv:add_item("main", item)
else
minetest.add_item(pos, item)
end
end
ent.object:remove()
return itemstack
end
end
-- loop through entities and look for bobs
for n = 1, #objs do
ent = objs[n]:get_luaentity()
if ent
and ent.fisher
and ent.name == "ethereal:bob_entity"
and player:get_player_name() == ent.fisher then
found = false
break
end
end
if found == true then
local playerpos = player:get_pos()
local dir = player:get_look_dir()
local pos = {x = playerpos.x, y = playerpos.y + 1.5, z = playerpos.z}
minetest.sound_play("ethereal_casting_rod",
{pos = pos, gain = 1.0, max_hear_distance = 10}, true)
-- place actual bob
local obj = minetest.add_entity(pos, "ethereal:bob_entity")
obj:set_velocity({x = dir.x * 8, y = dir.y * 8, z = dir.z * 8})
obj:set_acceleration({x = dir.x * -3, y = -9.8, z = dir.z * -3})
obj:get_luaentity().fisher = player and player:get_player_name()
end
-- Add wear to fishing rod (65 uses)
local item = player:get_wielded_item()
item:add_wear(65535 / 65)
player:set_wielded_item(item)
end
-- scan area for bobs that belong to player and remove
local remove_bob = function(player)
local objs = minetest.get_objects_inside_radius(player:get_pos(), 15)
local name = player:get_player_name()
local ent
for n = 1, #objs do
ent = objs[n]:get_luaentity()
if ent and ent.name == "ethereal:bob_entity" then
-- only remove players own bob
if ent.fisher and ent.fisher == name then
ent.object:remove()
end
end
end
end
-- remove bob if player signs off
minetest.register_on_leaveplayer(function(player)
remove_bob(player)
end)
-- remove bob if player dies
minetest.register_on_dieplayer(function(player)
remove_bob(player)
end)
-- fishing rod
minetest.register_tool("ethereal:fishing_rod", {
description = S("Fishing Rod (USE to cast and again when the time is right)"),
groups = {tool = 1},
inventory_image = "ethereal_fishing_rod.png",
wield_image = "ethereal_fishing_rod.png^[transformFX",
wield_scale = {x = 1.5, y = 1.5, z = 1},
stack_max = 1,
on_use = use_rod,
sound = {breaks = "default_tool_breaks"}
})
minetest.register_craft({
output = "ethereal:fishing_rod",
recipe = {
{"","","group:stick"},
{"","group:stick","farming:string"},
{"group:stick","","farming:string"}
}
})
minetest.register_craft({
type = "fuel",
recipe = "ethereal:fishing_rod",
burntime = 15
})
local fish = {
{"Blue Fin", "bluefin", 2},
{"Blue Ram Chichlid", "blueram", 2},
{"Common Carp", "carp", 2},
{"Cod", "cod", 2},
{"Redtail Catfish", "catfish", 2},
{"Clownfish", "clownfish", 2},
{"Northern Pike", "pike", 2},
{"Dusky Flathead", "flathead", 2},
{"Plaice", "plaice", 2},
{"Tiger Pufferfish", "pufferfish", -2},
{"Coy", "coy", 2},
{"European Flounder", "flounder", 2},
{"Atlantic Salmon", "salmon", 2},
{"Iceblue Zebra Cichlid", "cichlid", 2},
{"Angler", "angler", 2},
{"Moon Jellyfish", "jellyfish", 0},
{"Pacific Mackerel", "mackerel", 2},
{"Piranha", "piranha", 2},
{"Rainbow Trout", "trout", 2},
{"Red Snapper", "redsnapper", 2},
{"Red Seahorse", "seahorse", 0},
{"Green Seahorse", "seahorse_green", 0},
{"Pink Seahorse", "seahorse_pink", 0},
{"Blue Seahorse", "seahorse_blue", 0},
{"Yellow Seahorse", "seahorse_yellow", 0},
{"Yellowfin Tuna", "tuna", 2},
{"Humboldt Squid", "squid", 0},
{"White Shrimp", "shrimp", 0},
{"Neon Tetra", "tetra", 1},
{"Tilapia", "tilapia", 2},
{"Golden Trevally", "trevally", 2},
{"Stoplight Parrotfish", "parrot", 2}
}
for n = 1, #fish do
local usage
local groups
if fish[n][3] > 0 then
usage = minetest.item_eat(fish[n][3])
groups = {food_fish_raw = 1, ethereal_fish = 1}
end
minetest.register_craftitem("ethereal:fish_" .. fish[n][2], {
description = S(fish[n][1]),
inventory_image = "ethereal_fish_" .. fish[n][2] .. ".png",
on_use = usage,
groups = groups
})
end
-- Make Neon Tetra glow slightly
minetest.override_item("ethereal:fish_tetra", {light_source = 3})
-- cooked fish
minetest.register_craftitem(":ethereal:fish_cooked", {
description = S("Cooked Fish"),
inventory_image = "ethereal_fish_cooked.png",
wield_image = "ethereal_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 = "group:ethereal_fish",
cooktime = 8
})
-- Sashimi
minetest.register_craftitem("ethereal:sashimi", {
description = S("Sashimi"),
inventory_image = "ethereal_sashimi.png",
wield_image = "ethereal_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 = "ethereal_worm.png",
wield_image = "ethereal_worm.png"
})
minetest.register_craft({
output = "ethereal:worm",
recipe = {
{"default:dirt", "default:dirt"}
}
})
-- compatibility
minetest.register_alias("ethereal:fish_raw", "ethereal:fish_cichlid")
minetest.register_alias("ethereal:fishing_rod_baited", "ethereal:fishing_rod")
minetest.register_alias("ethereal:fish_chichlid", "ethereal:fish_cichlid")

218
mods/ethereal/flight.lua Normal file
View File

@ -0,0 +1,218 @@
local flight_secs = minetest.settings:get("ethereal.flightpotion_duration") or (5 * 60)
local timer_check = 5 -- seconds per check
local S = ethereal.intllib
local is_50 = minetest.has_feature("object_use_texture_alpha")
local function get_timer(user)
if not user then return end
if is_50 then
local meta = user:get_meta()
if not meta then return "" end
return meta:get_string("ethereal:fly_timer") or ""
else
return user:get_attribute("ethereal:fly_timer") or ""
end
end
local function has_fly(name)
return minetest.get_player_privs(name).fly
end
local function set_timer(user, timer)
if is_50 then
local meta = user:get_meta() ; if not meta then return end
meta:set_string("ethereal:fly_timer", timer)
else
user:set_attribute("ethereal:fly_timer", timer)
end
end
local function set_flight(user, set)
local name = user and user:get_player_name() ; if not name then return end
local privs = minetest.get_player_privs(name)
privs.fly = set
minetest.set_player_privs(name, privs)
-- when flight removed set timer to temp position
if set ~= true then
set_timer(user, "-99")
end
end
-- after function
local function ethereal_set_flight(user)
local name = user and user:get_player_name() ; if not name then return end
local timer = tonumber(get_timer(user)) or 0
-- if timer ran out then remove 'fly' privelage
if timer <= 0 and timer ~= -99 then
set_flight(user, nil)
return
end
local privs = minetest.get_player_privs(name)
-- have we already applied 'fly' privelage?
if not privs.fly then
set_flight(user, true)
end
-- handle timer
timer = timer - timer_check
-- show expiration message and play sound
if timer <= 10 then
minetest.chat_send_player(name,
minetest.get_color_escape_sequence("#ff5500")
.. S("Flight timer about to expire!"))
minetest.sound_play("default_dig_dig_immediate",
{to_player = name, gain = 1.0}, true)
end
-- set updated timer
set_timer(user, timer)
-- restart checks
minetest.after(timer_check, function()
ethereal_set_flight(user)
end)
end
-- on join / leave
minetest.register_on_joinplayer(function(player)
-- wait 2 seconds before doing flight checks on player
minetest.after(2.0, function(player)
-- get player name and timer
local name = player and player:get_player_name() ; if not name then return end
local timer = get_timer(player)
-- if timer is blank and player can already fly then default and return
if timer == "" and has_fly(name) then
set_timer(player, "-99")
return
end
timer = tonumber(timer) or 0
-- if timer is set to default then return
if timer == -99 then
return
end
-- if we got this far and player is flying then start countdown check
if has_fly(name) then
minetest.after(timer_check, function()
ethereal_set_flight(player)
end)
end
end, player)
end)
-- potion item
minetest.register_node("ethereal:flight_potion", {
description = S("Flight Potion"),
drawtype = "plantlike",
tiles = {"ethereal_flight_potion.png"},
inventory_image = "ethereal_flight_potion.png",
wield_image = "ethereal_flight_potion.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 = {dig_immediate = 3},
sounds = default.node_sound_glass_defaults(),
on_use = function(itemstack, user, pointed_thing)
if not user then return end
-- get privs
local name = user:get_player_name()
local privs = minetest.get_player_privs(name)
local timer = get_timer(user)
if privs.fly then
local msg = timer
if timer == "" or timer == "-99" then
msg = S("unlimited")
end
minetest.chat_send_player(name,
minetest.get_color_escape_sequence("#ffff00")
.. S("Flight already granted, @1 seconds left!", msg))
return
end
-- set flight timer
set_timer(user, flight_secs)
-- show time remaining
minetest.chat_send_player(name,
minetest.get_color_escape_sequence("#1eff00")
.. S("Flight granted, you have @1 seconds!", flight_secs))
-- start check
ethereal_set_flight(user)
-- take item
itemstack:take_item()
-- return empty bottle
local inv = user:get_inventory()
if inv:room_for_item("main", {name = "vessels:glass_bottle"}) then
user:get_inventory():add_item("main", "vessels:glass_bottle")
else
minetest.add_item(user:get_pos(), {name = "vessels:glass_bottle"})
end
return itemstack
end
})
-- recipe
minetest.register_craft({
output = "ethereal:flight_potion",
recipe = {
{"ethereal:etherium_dust", "ethereal:etherium_dust", "ethereal:etherium_dust"},
{"ethereal:etherium_dust", "ethereal:fire_dust", "ethereal:etherium_dust"},
{"ethereal:etherium_dust", "vessels:glass_bottle", "ethereal:etherium_dust"}
}
})

685
mods/ethereal/food.lua Normal file
View File

@ -0,0 +1,685 @@
local S = ethereal.intllib
-- Banana (Heals one heart when eaten)
minetest.register_node("ethereal:banana", {
description = S("Banana"),
drawtype = "torchlike",
tiles = {"ethereal_banana_single.png"},
inventory_image = "ethereal_banana_single.png",
wield_image = "ethereal_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 Bunch
minetest.register_node("ethereal:banana_bunch", {
description = S("Banana Bunch"),
drawtype = "torchlike",
tiles = {"ethereal_banana_bunch.png"},
inventory_image = "ethereal_banana_bunch.png",
wield_image = "ethereal_banana_bunch.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 = {
fleshy = 3, dig_immediate = 3, flammable = 2,
leafdecay = 1, leafdecay_drop = 1
},
drop = "ethereal:banana_bunch",
on_use = minetest.item_eat(6),
sounds = default.node_sound_leaves_defaults(),
after_place_node = function(pos, placer)
if placer:is_player() then
minetest.set_node(pos, {name = "ethereal:banana_bunch", param2 = 1})
end
end
})
-- Bunch to Single
minetest.register_craft({
output = "ethereal:banana 3",
recipe = {{"ethereal:banana_bunch"}}
})
minetest.register_craft({
output = "ethereal:banana_bunch",
recipe = {{"ethereal:banana", "ethereal:banana", "ethereal:banana"}}
})
-- Banana Dough
minetest.register_craftitem("ethereal:banana_dough", {
description = S("Banana Dough"),
inventory_image = "ethereal_banana_dough.png"
})
minetest.register_craft({
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 = "ethereal_pine_nuts.png",
wield_image = "ethereal_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 = "ethereal_banana_bread.png",
wield_image = "ethereal_banana_bread.png",
groups = {food_bread = 1, flammable = 3},
on_use = minetest.item_eat(6)
})
-- coconut settings if farming redo found
local fredo = minetest.get_modpath("farming") and farming and farming.mod
and farming.mod == "redo"
local cdrp = fredo and "ethereal:coconut" or "ethereal:coconut_slice 4"
local cgrp = fredo and {3, 2} or {1, 1}
-- Coconut (drops 4x coconut slice by default, whole coconut if farming redo found)
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 = cgrp[1], oddly_breakable_by_hand = cgrp[2],
cracky = cgrp[1], choppy = cgrp[1], flammable = 1,
leafdecay = 3, leafdecay_drop = 1
},
drop = cdrp,
sounds = default.node_sound_wood_defaults(),
after_place_node = function(pos, placer)
if placer:is_player() then
minetest.set_node(pos, {name = "ethereal:coconut", param2 = 1})
end
end
})
-- 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)
})
-- coconut slice recipe (farming redo)
if fredo then
minetest.register_craft({
output = "ethereal:coconut_slice 4",
recipe = {{"farming:cutting_board", "ethereal:coconut"}},
replacements = {{"farming:cutting_board", "farming:cutting_board"}}
})
end
-- coconut slice into whole coconut
minetest.register_craft({
output = "ethereal:coconut",
recipe = {
{"ethereal:coconut_slice", "ethereal:coconut_slice"},
{"ethereal:coconut_slice", "ethereal:coconut_slice"}
}
})
-- 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",
sounds = default.node_sound_leaves_defaults(),
on_use = function(itemstack, user, pointed_thing)
if user and pointed_thing and pointed_thing.type ~= "object" then
user:set_hp(20)
return minetest.do_item_eat(2, nil, itemstack, user, pointed_thing)
end
end,
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)
minetest.register_craftitem("ethereal:hearty_stew", {
description = S("Hearty Stew"),
inventory_image = "ethereal_hearty_stew.png",
wield_image = "ethereal_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 fredo 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,
groups = {vessel = 1, drink = 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"),
groups = {vessel = 1}
})
if minetest.registered_items["farming:bowl"] then
minetest.register_craft({
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
-- Lemon
minetest.register_node("ethereal:lemon", {
description = S("Lemon"),
drawtype = "plantlike",
tiles = {"ethereal_lemon.png"},
inventory_image = "ethereal_lemon_fruit.png",
wield_image = "ethereal_lemon_fruit.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_lemon = 1, fleshy = 3, dig_immediate = 3, flammable = 2,
leafdecay = 3, leafdecay_drop = 1
},
drop = "ethereal:lemon",
on_use = minetest.item_eat(3),
sounds = default.node_sound_leaves_defaults(),
after_place_node = function(pos, placer)
if placer:is_player() then
minetest.set_node(pos, {name = "ethereal:lemon", param2 = 1})
end
end
})
-- Candied Lemon
minetest.register_craftitem("ethereal:candied_lemon", {
description = S("Candied Lemon"),
inventory_image = "ethereal_candied_lemon.png",
wield_image = "ethereal_candied_lemon.png",
groups = {food_candied_lemon = 1},
on_use = minetest.item_eat(5)
})
minetest.register_craft({
output = "ethereal:candied_lemon",
recipe = {
{"farming:baking_tray", "ethereal:lemon", "group:food_sugar"}
},
replacements = {
{"farming:baking_tray", "farming:baking_tray"}
}
})
-- Lemonade
minetest.register_node("ethereal:lemonade", {
description = S("Lemonade"),
drawtype = "plantlike",
tiles = {"ethereal_lemonade.png"},
inventory_image = "ethereal_lemonade.png",
wield_image = "ethereal_lemonade.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25}
},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1, drink = 1},
on_use = minetest.item_eat(5, "vessels:drinking_glass"),
sounds = default.node_sound_glass_defaults()
})
minetest.register_craft({
output = "ethereal:lemonade",
recipe = {
{"ethereal:lemon", "group:food_sugar", "group:food_sugar"},
{"vessels:drinking_glass", "group:water_bucket", ""}
},
replacements = {
{"group:water_bucket", "bucket:bucket_empty"},
}
})
-- Olive
minetest.register_node("ethereal:olive", {
description = S("Olive"),
drawtype = "plantlike",
tiles = {"ethereal_olive.png"},
inventory_image = "ethereal_olive_fruit.png",
wield_image = "ethereal_olive_fruit.png",
visual_scale = 0.2,
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.1, -0.5, -0.1, 0.1, -0.3, 0.1}
},
groups = {
fleshy = 3, dig_immediate = 3, flammable = 2,
leafdecay = 3, leafdecay_drop = 1
},
drop = "ethereal:olive",
on_use = minetest.item_eat(1),
sounds = default.node_sound_leaves_defaults(),
after_place_node = function(pos, placer)
if placer:is_player() then
minetest.set_node(pos, {name = "ethereal:olive", param2 = 1})
end
end
})
-- Olive Oil
minetest.register_craftitem("ethereal:olive_oil", {
description = S("Olive Oil"),
inventory_image = "ethereal_olive_oil.png",
wield_image = "ethereal_olive_oil.png",
groups = {food_oil = 1, food_olive_oil = 1, vessel = 1}
})
minetest.register_craft({
output = "ethereal:olive_oil",
recipe = {
{"ethereal:olive", "ethereal:olive", "ethereal:olive"},
{"ethereal:olive", "ethereal:olive", "ethereal:olive"},
{"farming:juicer", "vessels:glass_bottle", ""}
},
replacements = {
{"farming:juicer", "farming:juicer"}
}
})
-- Kappa Maki (sushi with cucumber)
minetest.register_craftitem("ethereal:sushi_kappamaki", {
description = S("Kappa Maki Sushi"),
inventory_image = "ethereal_sushi_kappa_maki.png",
on_use = minetest.item_eat(3)
})
minetest.register_craft({
output = "ethereal:sushi_kappamaki 2",
recipe = {
{"group:food_seaweed", "group:food_cucumber", "group:food_rice"}
}
})
-- Nigiri (sushi with raw fish)
minetest.register_craftitem("ethereal:sushi_nigiri", {
description = S("Nigiri Sushi"),
inventory_image = "ethereal_sushi_nigiri.png",
on_use = minetest.item_eat(2)
})
minetest.register_craft({
output = "ethereal:sushi_nigiri 2",
recipe = {
{"group:food_rice", "group:food_fish_raw", ""}
}
})
-- Tamago (sushi with sweet egg)
minetest.register_craftitem("ethereal:sushi_tamago", {
description = S("Tamago Sushi"),
inventory_image = "ethereal_sushi_tamago.png",
on_use = minetest.item_eat(2)
})
minetest.register_craft({
output = "ethereal:sushi_tamago 2",
recipe = {
{"group:food_seaweed", "group:food_egg", "group:food_rice"}
}
})
-- Fugu (prepared pufferfish)
minetest.register_craftitem("ethereal:fugu", {
description = S("Fugusashi"),
inventory_image = "ethereal_fugu.png",
on_use = function(itemstack, user, pointed_thing)
if user then
if math.random(12) == 1 then
return minetest.do_item_eat(-16, nil, itemstack, user, pointed_thing)
else
return minetest.do_item_eat(4, nil, itemstack, user, pointed_thing)
end
end
end
})
minetest.register_craft({
output = "ethereal:fugu",
recipe = {
{"group:food_cutting_board", "ethereal:fish_pufferfish", "group:food_soy_sauce"}
},
replacements = {
{"group:food_cutting_board", "farming:cutting_board"},
{"group:food_soy_sauce", "vessels:glass_bottle"}
}
})
-- Teriyaki Chicken
minetest.register_craftitem("ethereal:teriyaki_chicken", {
description = S("Teriyaki Chicken"),
inventory_image = "ethereal_teriyaki_chicken.png",
on_use = minetest.item_eat(4)
})
minetest.register_craft({
output = "ethereal:teriyaki_chicken 2",
recipe = {
{"group:food_chicken_raw", "group:food_sugar", "group:food_soy_sauce"},
{"group:food_garlic_clove", "group:food_saucepan", "group:food_gelatin"}
},
replacements = {
{"group:food_soy_sauce", "vessels:glass_bottle"},
{"group:food_saucepan", "farming:saucepan"}
}
})
-- Teriyaki Beef
minetest.register_craftitem("ethereal:teriyaki_beef", {
description = S("Teriyaki Beef"),
inventory_image = "ethereal_teriyaki_beef.png",
on_use = minetest.item_eat(12, "ethereal:bowl")
})
minetest.register_craft({
output = "ethereal:teriyaki_beef",
recipe = {
{"group:food_meat_raw", "group:food_sugar", "group:food_soy_sauce"},
{"group:food_garlic_clove", "group:food_saucepan", "group:food_gelatin"},
{"group:food_cabbage", "group:food_rice", "group:food_bowl"}
},
replacements = {
{"group:food_soy_sauce", "vessels:glass_bottle"},
{"group:food_saucepan", "farming:saucepan"}
}
})
-- mushroom soup (Heals 1 heart)
minetest.register_craftitem("ethereal:mushroom_soup", {
description = S("Mushroom Soup"),
inventory_image = "ethereal_mushroom_soup.png",
groups = {drink = 1},
on_use = minetest.item_eat(5, "ethereal:bowl")
})
minetest.register_craft({
output = "ethereal:mushroom_soup",
recipe = {
{"group:food_mushroom"},
{"group:food_mushroom"},
{"group:food_bowl"}
}
})
-- boiled shrimp
minetest.register_craftitem("ethereal:fish_shrimp_cooked", {
description = S("Boiled Shrimp"),
inventory_image = "ethereal_fish_shrimp_cooked.png",
on_use = minetest.item_eat(2)
})
minetest.register_craft({
output = "ethereal:fish_shrimp_cooked 5",
recipe = {
{"ethereal:fish_shrimp", "ethereal:fish_shrimp", "ethereal:fish_shrimp"},
{"ethereal:fish_shrimp", "group:water_bucket", "ethereal:fish_shrimp"},
{"", "ethereal:fire_dust", ""}
},
replacements = {
{"group:water_bucket", "bucket:bucket_empty"},
}
})
-- garlic butter shrimp
minetest.register_craftitem("ethereal:garlic_shrimp", {
description = S("Garlic Butter Shrimp"),
inventory_image = "ethereal_garlic_butter_shrimp.png",
on_use = minetest.item_eat(6)
})
minetest.register_craft({
output = "ethereal:garlic_shrimp",
recipe = {
{"farming:skillet", "ethereal:fish_shrimp", "ethereal:fish_shrimp"},
{"group:food_butter", "group:food_garlic_clove", "ethereal:lemon"}
},
replacements = {{"farming:skillet", "farming:skillet"}}
})
-- jellyfish salad
minetest.register_craftitem("ethereal:jellyfish_salad", {
description = S("Jellyfish Salad"),
inventory_image = "ethereal_jellyfish_salad.png",
on_use = minetest.item_eat(6)
})
minetest.register_craft({
output = "ethereal:jellyfish_salad",
recipe = {
{"farming:cutting_board", "ethereal:fish_jellyfish", "group:food_onion"},
},
replacements = {{"farming:cutting_board", "farming:cutting_board"}}
})
-- raw calamari
minetest.register_craftitem("ethereal:calamari_raw", {
description = S("Raw Calamari"),
inventory_image = "ethereal_calamari_raw.png",
on_use = minetest.item_eat(-2)
})
minetest.register_craft({
output = "ethereal:calamari_raw 2",
recipe = {
{"farming:cutting_board", "ethereal:fish_squid"},
},
replacements = {{"farming:cutting_board", "farming:cutting_board"}}
})
-- cooked calamari
minetest.register_craftitem("ethereal:calamari_cooked", {
description = S("Calamari"),
inventory_image = "ethereal_calamari_cooked.png",
on_use = minetest.item_eat(5)
})
minetest.register_craft({
output = "ethereal:calamari_cooked",
recipe = {
{"farming:skillet", "ethereal:calamari_raw", "farming:flour"},
},
replacements = {{"farming:skillet", "farming:skillet"}}
})
-- fish & chips
minetest.register_craftitem("ethereal:fish_n_chips", {
description = S("Fish & Chips"),
inventory_image = "ethereal_fish_chips.png",
on_use = minetest.item_eat(6)
})
minetest.register_craft({
output = "ethereal:fish_n_chips",
recipe = {
{"farming:baking_tray", "group:ethereal_fish", "group:food_potato"}
},
replacements = {
{"farming:baking_tray", "farming:baking_tray"}
}
})

171
mods/ethereal/init.lua Normal file
View File

@ -0,0 +1,171 @@
--[[
Minetest Ethereal Mod
Created by ChinChow
Updated by TenPlus1
]]
ethereal = {version = "20221230"}
local function setting(stype, name, default)
local value
if stype == "bool" then
value = minetest.settings:get_bool("ethereal." .. name)
elseif stype == "string" then
value = minetest.settings:get("ethereal." .. name)
elseif stype == "number" then
value = tonumber(minetest.settings:get("ethereal." .. name))
end
if value == nil then
value = default
end
ethereal[name] = value
end
-- DO NOT change settings below, use the settings.conf file instead
setting("number", "leaftype", 0)
setting("bool", "leafwalk", false)
setting("bool", "cavedirt", true)
setting("bool", "torchdrop", true)
setting("bool", "papyruswalk", true)
setting("bool", "lilywalk", true)
setting("bool", "xcraft", true)
setting("bool", "flight", true)
setting("number", "glacier", 1)
setting("number", "bamboo", 1)
setting("number", "mesa", 1)
setting("number", "alpine", 1)
setting("number", "healing", 1)
setting("number", "snowy", 1)
setting("number", "frost", 1)
setting("number", "grassy", 1)
setting("number", "caves", 1)
setting("number", "grayness", 1)
setting("number", "grassytwo", 1)
setting("number", "prairie", 1)
setting("number", "jumble", 1)
setting("number", "junglee", 1)
setting("number", "desert", 1)
setting("number", "grove", 1)
setting("number", "mushroom", 1)
setting("number", "sandstone", 1)
setting("number", "quicksand", 1)
setting("number", "plains", 1)
setting("number", "savanna", 1)
setting("number", "fiery", 1)
setting("number", "sandclay", 1)
setting("number", "swamp", 1)
setting("number", "sealife", 1)
setting("number", "reefs", 1)
setting("number", "sakura", 1)
setting("number", "tundra", 1)
setting("number", "mediterranean", 1)
local path = minetest.get_modpath("ethereal")
-- Load settings.conf file 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.get_translator ~= nil then
S = minetest.get_translator("ethereal") -- 5.x translation function
else
if minetest.get_modpath("intllib") then
dofile(minetest.get_modpath("intllib") .. "/init.lua")
if intllib.make_gettext_pair then
gettext, ngettext = intllib.make_gettext_pair() -- new gettext method
else
gettext = intllib.Getter() -- old text file method
end
S = gettext
else -- boilerplate function
S = function(str, ...)
local args = {...}
return str:gsub("@%d+", function(match)
return args[tonumber(match:sub(2))]
end)
end
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 .. "/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")
if minetest.settings:get_bool("ethereal.clear_default_biomes", true) then
dofile(path .. "/biomes_init.lua")
end
dofile(path .. "/biomes.lua")
dofile(path .. "/ores.lua")
dofile(path .. "/schems.lua")
dofile(path .. "/decor.lua")
dofile(path .. "/compatibility.lua")
dofile(path .. "/stairs.lua")
-- add flight if enabled
if ethereal.flight then
dofile(path .. "/flight.lua")
end
-- add lucky blocks if mod active
if minetest.get_modpath("lucky_block") then
dofile(path .. "/lucky_block.lua")
end
-- 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 ("[MOD] Ethereal loaded")

604
mods/ethereal/leaves.lua Normal file
View File

@ -0,0 +1,604 @@
local S = ethereal.intllib
-- set leaftype (value inside init.lua)
local leaftype = "plantlike"
local leafscale = 1.4
if ethereal.leaftype ~= 0 then
leaftype = "allfaces_optional"
leafscale = 1.0
end
-- default apple tree leaves
minetest.override_item("default:leaves", {
drawtype = leaftype,
visual_scale = leafscale,
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 = leafscale,
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 = leafscale,
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 = leafscale,
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 = leafscale,
walkable = ethereal.leafwalk
})
-- willow twig
minetest.register_node("ethereal:willow_twig", {
description = S("Willow Twig"),
drawtype = "plantlike",
tiles = {"ethereal_willow_twig.png"},
inventory_image = "ethereal_willow_twig.png",
wield_image = "ethereal_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 = leafscale,
tiles = {"ethereal_redwood_leaves.png"},
inventory_image = "ethereal_redwood_leaves.png",
wield_image = "ethereal_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 = leafscale,
tiles = {"ethereal_orange_leaves.png"},
inventory_image = "ethereal_orange_leaves.png",
wield_image = "ethereal_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 = leafscale,
tiles = {"ethereal_banana_leaf.png"},
inventory_image = "ethereal_banana_leaf.png",
wield_image = "ethereal_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 = leafscale,
tiles = {"ethereal_yellow_leaves.png"},
inventory_image = "ethereal_yellow_leaves.png",
wield_image = "ethereal_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 = leafscale,
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 = leafscale,
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 = leafscale,
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 = leafscale,
tiles = {"ethereal_bamboo_leaves.png"},
inventory_image = "ethereal_bamboo_leaves.png",
wield_image = "ethereal_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
})
-- sakura leaves
minetest.register_node("ethereal:sakura_leaves", {
description = S("Sakura Leaves"),
drawtype = leaftype,
visual_scale = leafscale,
tiles = {"ethereal_sakura_leaves.png"},
inventory_image = "ethereal_sakura_leaves.png",
wield_image = "ethereal_sakura_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:sakura_sapling"}, rarity = 30},
{items = {"ethereal:sakura_leaves"}}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves
})
minetest.register_node("ethereal:sakura_leaves2", {
description = S("Sakura Leaves"),
drawtype = leaftype,
visual_scale = leafscale,
tiles = {"ethereal_sakura_leaves2.png"},
inventory_image = "ethereal_sakura_leaves2.png",
wield_image = "ethereal_sakura_leaves2.png",
paramtype = "light",
walkable = ethereal.leafwalk,
waving = 1,
groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2},
drop = {
max_items = 1,
items = {
{items = {"ethereal:sakura_sapling"}, rarity = 30},
{items = {"ethereal:sakura_leaves2"}}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves
})
-- lemon tree leaves
minetest.register_node("ethereal:lemon_leaves", {
description = S("Lemon Tree Leaves"),
drawtype = leaftype,
visual_scale = leafscale,
tiles = {"ethereal_lemon_leaves.png"},
inventory_image = "ethereal_lemon_leaves.png",
wield_image = "ethereal_lemon_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:lemon_tree_sapling"}, rarity = 25},
{items = {"ethereal:lemon_leaves"}}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves
})
-- olive tree leaves
minetest.register_node("ethereal:olive_leaves", {
description = S("Olive Tree Leaves"),
drawtype = leaftype,
visual_scale = leafscale,
tiles = {"ethereal_olive_leaves.png"},
inventory_image = "ethereal_olive_leaves.png",
wield_image = "ethereal_olive_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:olive_tree_sapling"}, rarity = 25},
{items = {"ethereal:olive_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 = {"ethereal_mushroom_block.png"},
groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, leafdecay = 3},
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 = {"ethereal_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,
leafdecay = 3
},
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
})
-- basandra bush stem, leaves
minetest.register_node("ethereal:basandra_bush_stem", {
description = S("Basandra Bush Stem"),
drawtype = "plantlike",
visual_scale = 1.41,
damage_per_second = 2,
tiles = {"ethereal_basandra_bush_stem.png"},
inventory_image = "ethereal_basandra_bush_stem.png",
wield_image = "ethereal_basandra_bush_stem.png",
paramtype = "light",
sunlight_propagates = true,
groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = default.node_sound_wood_defaults(),
selection_box = {
type = "fixed",
fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, 0.5, 7 / 16},
}
})
minetest.register_node("ethereal:basandra_bush_leaves", {
description = S("Basandra Bush Leaves"),
drawtype = "allfaces_optional",
tiles = {"ethereal_basandra_bush_leaves.png"},
paramtype = "light",
groups = {snappy = 3, flammable = 2, leaves = 1},
drop = {
max_items = 1,
items = {
{items = {"ethereal:basandra_bush_sapling"}, rarity = 5},
{items = {"ethereal:basandra_bush_leaves"}}
}
},
sounds = default.node_sound_leaves_defaults()
})
-- 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",
"ethereal:lemon", "ethereal:lemon_leaves",
"ethereal:vine"
},
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", "ethereal:banana_bunch"},
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
})
default.register_leafdecay({
trunks = {"ethereal:sakura_trunk"},
leaves = {"ethereal:sakura_leaves", "ethereal:sakura_leaves2"},
radius = 3
})
default.register_leafdecay({
trunks = {"ethereal:olive_trunk"},
leaves = {"ethereal:olive_leaves", "ethereal:olive"},
radius = 3
})
default.register_leafdecay({
trunks = {"ethereal:mushroom_trunk"},
leaves = {"ethereal:mushroom", "ethereal:mushroom_pore"},
radius = 3
})
end

151
mods/ethereal/license.txt Normal file
View File

@ -0,0 +1,151 @@
The MIT License (MIT)
Copyright (c) 2016 TenPlus1
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Textures by TenPlus1 (CC0) unless listed below...
Based on default_leaves.png (Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
ethereal_frost_leaves.png [edited by TenPlus1]
ethereal_yellow_leaves.png [edited by TenPlus1]
ethereal_basandra_leaves.png [edited by TenPlus1]
Textures by BlueTangs Rock (CC BY-SA 3.0):
ethereal_seaweed.png
ethereal_fish_angler.png
ethereal_fish_bluefin.png
ethereal_fish_blueram.png
ethereal_fish_carp.png
ethereal_fish_catfish.png
ethereal_fish_chichlid.png
ethereal_fish_clownfish.png
ethereal_fish_cod.png
ethereal_fish_flathead.png
ethereal_fish_flounder.png
ethereal_fish_jellyfish.png
ethereal_fish_mackerel.png
ethereal_fish_parrot.png
ethereal_fish_pike.png
ethereal_fish_piranha.png
ethereal_fish_plaice.png
ethereal_fish_pufferfish.png
ethereal_fish_redsnapper.png
ethereal_fish_salmon.png
ethereal_fish_shrimp.png
ethereal_fish_shrimp_cooked.png
ethereal_fish_squid.png
ethereal_fish_tetra.png
ethereal_fish_tilapia.png
ethereal_fish_trevally.png
ethereal_fish_tuna.png
ethereal_fish_trout.png
ethereal_sashimi.png
ethereal_fugu.png
ethereal_fish_chips.png
ethereal_calamari_raw.png
ethereal_calamari_cooked.png
ethereal_garlic_butter_shrimp.png
Texture by Sirrobzeroone (CC0)
ethereal_fish_seahorse*.png
ethereal_fish_coy.png
ethereal_fish_cooked.png
Textures by Epoxum (CC0)
ethereal_sushi_*.png
Based on candle textures and coloured by wRothbard (CC0):
ethereal_candle_black*.png
ethereal_candle_blue*.png
ethereal_candle_cyan*.png
ethereal_candle_dark_green*.png
ethereal_candle_dark_grey*.png
ethereal_candle_green*.png
ethereal_candle_grey*.png
ethereal_candle_magenta*.png
ethereal_candle_orange*.png
ethereal_candle_pink*.png
ethereal_candle_red*.png
ethereal_candle_violet*.png
ethereal_candle_yellow*.png
Based on default tool textures by BlockMen in Minetest (CC BY-SA 3.0):
ethereal_crystal_pick.png
ethereal_crystal_shovel.png
ethereal_crystal_axe.png
ethereal_crystal_sword.png
Based on texture by ElementW (CC BY-SA 3.0):
bucket_cactus.png
Based on tree textures by ElementW (CC BY-SA 3.0):
ethereal_yellow_tree.png
ethereal_yellow_tree_top.pngethereal_fish_plaice.png
ethereal_frost_tree.png
ethereal_frost_tree_top.png
ethereal_scorched_tree.png
ethereal_scorched_tree_top.png
Based on wood texture by BlockMen (CC BY-SA 3.0):
ethereal_yellow_wood.png [edited by alerikaisattera]
ethereal_frost_wood.png [edited by alerikaisattera]
Based on bottle texture by Thomas-S (CC BY-SA 3.0):
ethereal_flight_potion.png
ethereal_firethorn_jelly.png
Textures based on default_grass.png and default_grass_side.png by TumeniNodes (CC BY-SA 3.0)
ethereal_grass_*.png [Edited by TenPlus1]
ethereal_crystal_moss.png
ethereal_mushroom_moss.png
ethereal_fiery_moss.png
ethereal_gray_moss.png
ethereal_green_moss.png
Texture by ZonerDarkRevention (CC0)
ethereal_crystal_spike.png [edited by TenPlus1]
ethereal_bowl.png [edited by TenPlus1]
ethereal_teriyaki_beef.png [edited by TenPlus1]
ethereal_hearty_stew.png
Textures by VanessaE (CC-BY-SA 4.0)
moretrees_*.png
ethereal_banana_wood.png (edited)
ethereal_olive_wood.png (edited)
Based on default ice texture by asl97 (CC BY-SA 3.0):
ethereal_brick_ice.png [edited by philipmi]
Based on default snow texture by Gambit (CC BY-SA 3.0):
ethereal_brick_snow.png [edited by philipmi]
Textures by Felfa (CC0)
olive*.png
lemon*.png
Textures by Isaiah658 (CC0)
ethereal_lemonade.png
ethereal_bamboo.png
Created by XSSheep (CC BY-SA 4.0 - https://minecraft.curseforge.com/projects/pixel-perfection-freshly-updated)
default_apple_gold.png
Sound by I_q (Attribution 3.0) https://freesound.org/people/l_q/sounds/440956/
ethereal_casting_rod.ogg

220
mods/ethereal/locale/de.txt Normal file
View File

@ -0,0 +1,220 @@
# 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 = Bambus

296
mods/ethereal/locale/es.txt Normal file
View File

@ -0,0 +1,296 @@
# Spanish translations of ethereal mod
# Traducción al español del mod ethereal
# Author: ost1
# last update: 2022/June/04
#biomes.lua
Blue Marble=Mármol azul
Blue Marble Tile=Baldosa de mármol azul
#bonemeal.lua
Bone=Hueso
Bone Meal=Fertilizante de hueso
#crystal.lua
Crystal Spike=Púa de Cristal
Crystal Ingot=Lingote de Cristal
Crystal Block=Bloque de Cristal
Crystal Sword=Espada de Cristal
Crystal Axe=Hacha de Cristal
Crystal Pickaxe=Pico de Cristal
Crystal Shovel=Pala de Cristal
Crystal Gilly Staff=Bastón de Cristal de Gilly
#dirt.lua
Green Dirt=Tierra verde
Dried Dirt=Tierra seca
Bamboo Dirt=Tierra de bamboo
Jungle Dirt=Tierra de la jungla
Grove Dirt=Tierra de la arboleda
Prairie Dirt=Tierra de la pradera
Cold Dirt=Tierra helada
Crystal Dirt=Tierra de cristal
Mushroom Dirt=Tierra de champiñones
Fiery Dirt=Tierra de fuego
Gray Dirt=Tierra gris
Red Baked Clay=Arcilla roja cocida
Orange Baked Clay=Arcilla naranja cocida
Grey Baked Clay=Arcilla gris cocida
Quicksand=Arena movediza
#extra.lua
Bamboo Floor=Piso de bamboo
Palm Wax=Cera de palma
Candle=Vela
Black Candle=Vela negra
Blue Candle=Vela azul
Brown Candle=Vela café
Cyan Candle=Vela turquesa
Dark Green Candle=Vela verde oscuro
Dark Grey Candle=Vela gris oscuro
Green Candle=Vela verde
Grey Candle=Vela gris
Magenta Candle=Vela magenta
Orange Candle=Vela naranja
Pink Candle=Vela rosada
Red Candle=Vela roja
Violet Candle=Vela violeta
Yellow Candle=Vela amarilla
Bowl=Tazón
Stone Ladder=Escalera de piedra
Paper Wall=Papel mural
Glo Stone=Piedra brillante
Lump of Charcoal=Carbón de madera
Staff of Light=Bastón de Luz
Etherium Dust=Polvo de Etherium
Etherium Ore=Mineral de Etherium
Bamboo Block=Bloque de bamboo
#fences.lua
Scorched Fence=Cerca de madera quemada
Frost Fence=Cerca congelada
Redwood Fence=Cerca de secoya
Willow Fence=Cerca de sauce
Healing Wood Fence=Cerca de madera de árbol sanador
Palm Fence=Cerca de palma
Banana Wood Fence=Cerca de madera de árbol de banana
Mushroom Fence=Cerca de champiñones
Birch Fence=Cerca de abedul
Sakura Wood Door=Puerta de madera de sakura
#fishing.lua
Blue Fin=Atún
Blue Ram=Ramirezi
Catfish=Pezgato
Clownfish=Pez payaso
Pike=Lucio
Flathead=Flathead
Plaice=Solla
Pufferfish=Pez globo
Coy=Coy
Salmon=Salmón
Cichlid=Cíclido
Angler=Lophiiforme
Jellyfish=Medusa
Seahorse=Hipocampo
Piranha=Piraña
Trout=Trucha
Raw Fish=Pescado crudo
Cooked Fish=Pescado cocido
Sashimi=Sashimi
Worm=Gusano
Fishing Rod (USE to cast and again when the time is right)=Caña de pescar (Botón principal para lanzar, cuando sea el momento adecuado vuelve a presionarlo)
Baited Fishing Rod=Caña de pescar con cebo
Inventory full, Fish Got Away!=Inventario lleno, ¡el pez se ha escapado!
#flight.lua
Flight Potion=Poción de vuelo
Flight timer about to expire!=¡El tiempo de vuelo está apunto de acabarse!
Flight already granted, @1 seconds left!=El vuelo ya ha sido otorgado, ¡te quedan @1 segundos!
Flight granted, you have @1 seconds!=Ya puedes volar, ¡tienes @1 segundos!
#food.lua
Banana Bunch=Racimo de bananas
Firethorn Jelly=Jalea de Firethorn
Lemon=Limón
Candied Lemon=Limón confitado
Lemonade=Limonada
Olive=Aceituna
Olive Oil=Aceite de oliva
Kappa Maki Sushi=Sushi Kappa Maki
Nigiri Sushi=Sushi Nigiri
Tamago Sushi=Sushi Tamago
Fugusashi=Fugusashi
Teriyaki Chicken=Pollo Teriyaki
Teriyaki Beef=Asado Teriyaki
Banana=Banana
Banana Dough=Masa de banana
Orange=Naranja
Pine Nuts=Piñones
Banana Loaf=Pan de banana
Coconut=Coco
Coconut Slice=Trozo de coco
Golden Apple=Manzana de oro
Hearty Stew=Guiso abundante
Bucket of Cactus Pulp=Cubo de pulpa de cactus
#gates.lua
Scorched Wood Fence Gate=Puerta de cerca de madera quemada
Frost Wood Fence Gate=Puerta de cerca de madera congelada
Redwood Fence Gate=Puerta de cerca de secoya
Willow Wood Fence Gate=Puerta de cerca de sauce
Healing Wood Fence Gate=Puera de cerca de madera de arbol sanador
Palm Wood Fence Gate=Puerta de cerca de madera de palma
Banana Wood Fence Gate=Puerta de cerca de madera de banana
Mushroom Trunk Fence Gate=Puerta de cerca de tronco de champiñones
Birch Wood Fence Gate=Puerta de cerca de madera de abedul
#init.lua
[MOD] Ethereal loaded=[MOD] Ethereal cargado
#leaves.lua
Sakura Leaves=Hojas de sakura
Lemon Tree Leaves=Hojas de limonero
Olive Tree Leaves=Hojas de olivo
Willow Twig=Ramas de sauce
Redwood Leaves=Hojas de secoya
Orange Leaves=Hojas de naranja
Banana Leaves=Hojas de banana
Healing Tree Leaves=Hojas de árbol sanador
Palm Leaves=Hojas de palma
Birch Leaves=Hojas de abedul
Frost Leaves=Hojas congeladas
Bamboo Leaves=Hojas de bamboo
Mushroom Cap=Sombrero de champiñón
Mushroom Pore=Esporas de champiñón
Bush=Arbusto
Bush #2=Arbusto #2
Bush #3=Arbusto #3
#mushroom.lua
Mushroom Soup=Sopa de champiñón
#onion.lua
Wild Onion=Cebolla silvestre
#plantlife.lua
Firethorn Shrub=Arbusto de Firethorn
Fire Flower=Flor de fuego
Fire Dust=Polvo de fuego
Vine=Enredadera
Light String Vine=Enredadera luminosa
Fern=Helecho
Fern Tubers=Tubérculos de helecho
Fiery Dry Shrub=Arbusto seco de fuego
Snowy Grass=Pasto nevado
Crystal Grass=Pasto de cristal
Crystal Moss=Musgo de cristal
Mushroom Moss=Musgo de champiñón
Fiery Moss=Musgo ardiente
Gray Moss=Musgo gris
Green Moss=Musgo verde
Red Illumishroom=Champiluz roja
Green Illumishroom=Champiluz verde
Cyan Illumishroom=Champiluz turquesa
#sapling.lua
Giant Redwood Tree Sapling=Retoño de secoya gigante
Sakura Tree Sapling=Retoño de sakura
Lemon Tree Sapling=Retoño de limonero
Olive Tree Sapling=Retoño de olivo
Bamboo Sprout=Brote de bamboo
Willow Tree Sapling=Retoño de sauce
Healing Tree Sapling=Retoño de árbol sanador
Apple Tree Sapling=Retoño de manzano
Jungle Tree Sapling=Retoño de árbol tropical
Pine Tree Sapling=Retoño de pino
Big Tree Sapling=Retoño de árbol gigante
Banana Tree Sapling=Retoño de banana
Frost Tree Sapling=Retoño de árbol congelado
Mushroom Tree Sapling=Retoño de champiñón
Palm Tree Sapling=Retoño de Palma
Redwood Tree Sapling=Retoño de secoya
Orange Tree Sapling=Retoño de naranja
Birch Tree Sapling=Retoño de abedul
Schematic not found=Schematica no encontrada
#sealife.lua
Agar Powder=Polvo de Agar
Sponge=Esponja de mar
Wet sponge=Esponja de mar con agua
Seaweed=Alga marina
Blue Glow Coral=Coral azul brillante
Orange Glow Coral=Coral naranjo brillante
Pink Glow Coral=Coral rosado brillante
Green Glow Coral=Coral verde brillante
#stairs.lua
Blue Marble Stair=Escalera de marmol azul
Blue Marble Tile=Baldosa de marmol azul
Sakura Wood Stair=Escalera de madera de sakura
Sakura Wood Tile=Baldosa de madera de sakura
Olive Wood Stair=Escalera de madera de olivo
Olive Wood Tile=Baldosa de madera de olivo
Crystal Block Stair=Escalera de bloque de cristal
Crystal Block Slab=Losa de bloque de cristal
Ice Brick Stair=Escalera de ladrillo de hielo
Ice Brick Slab=Losa de ladrillo de hielo
Snow Brick Stair=Escalera de ladrillo de nieve
Snow Brick Slab=Losa de ladrillo de nieve
Dried Dirt Stair=Escalera de tierra seca
Dried Dirt Slab=Losa de tiera seca
Mushroom Trunk Stair=Escalera de tronco de champiñón
Mushroom Trunk Slab=Losa de tronco de champiñón
Mushroom Top Stair=Escalera de sombrero de champiñón
Mushroom Top Slab=Losa de sombrero de champiñón
Frost Wood Stair=Escalera de madera congelada
Frost Wood Slab=Losa de madera congelada
Healing Wood Stair=Escalera de madera de árbol sanador
Healing Wood Slab=Losa de madera de árbol sanador
Palm Wood Stair=Escalera de madera de palma
Palm Wood Slab=Losa de madera de palma
Birch Wood Stair=Escalera de madera de abedul
Birch Wood Slab=Losa de madera de abedul
Banana Wood Stair=Escalera de madera de banana
Banana Wood Slab=Losa de madera de banana
Willow Wood Stair=Escalera de madera de sauce
Willow Wood Slab=Losa de madera de sauce
Redwood Stair=Escalera de secoya
Redwood Slab=Losa de secoya
Bamboo Stair=Escalera de bamboo
Bamboo Slab=Losa de bamboo
Dry Dirt=Tierra seca
Mushroom Trunk=Tronco de champiñón
Mushroom Top=Sombrero de champión
Healing Wood=Madera de árbol sanador
Redwood=Secoya
#strawberry.lua
Strawberry=Fresa
#water.lua
Ice Brick=Ladrillo de hielo
Snow Brick=Ladrillo de nieve
#wood.lua
Sakura Trunk=Tronco de sakura
Sakura Wood=Madera de sakura
Olive Trunk=Tronco de olivo
Olive Wood=Madera de olivo
Willow Trunk=Tronco de sauce
Willow Wood=Madera de sauce
Redwood Trunk=Tronco de secoya
Redwood Wood=Madera de secoya
Frost Tree=Árbol sanador
Frost Wood=Madera congelada
Healing Tree Trunk=Tronco de árbol sanador
Healing Tree Wood=Madera de árbol sanador
Palm Trunk=Tronco de palma
Palm Wood=Madera de palma
Banana Trunk=Tronco de banana
Banana Wood=Madera de banana
Scorched Tree=Árbol quemado
Mushroom=Champiñón
Birch Trunk=Tronco de abedul
Birch Wood=Madera de abedul
Bamboo=Bamboo

View File

@ -0,0 +1,163 @@
# textdomain:ethereal
Agar Powder=Agarpulver
Baited Fishing Rod=Angel mit Köder
Bamboo=Bambus
Bamboo Block=Bambusblock
Bamboo Floor=Bambusboden
Bamboo Leaves=Bambusblätter
Bamboo Slab=Bambusplatte
Bamboo Sprout=Bambussprosse
Bamboo stair=Bambustreppe
Banana=Banane
Banana Bunch=Bananenbündel
Banana Dough=Bananenteig
Banana Leaves=Bananenblätter
Banana Loaf=Bananenbrot
Banana Trunk=Bananenstamm
Banana Wood=Bananenholz
Banana Wood Fence=Bananenholzzaun
Banana Wood Fence Gate=Bananenholzzauntor
Banana Wood Slab=Bananenholzplatte
Banana Wood Stair=Bananenholztreppe
Birch Fence=Birkenzaun
Birch Leaves=Birkenblätter
Birch Trunk=Birkenstamm
Birch Wood=Birkenholz
Birch Wood Fence Gate=Birkenholzzauntor
Blue Glow Coral=Blaue Leuchtende Koralle
Bowl=Schale
Bucket of Cactus Pulp=Eimer Kaktusmark
Bush=Busch
Bush #2=Busch #2
Bush #3=Busch #3
Candle=Kerze
Coconut=Kokosnuss
Coconut Slice=Kokosscheibe
Cooked Fish=Gekochter Fisch
Crystal Axe=Kristallaxt
Crystal Block=Kristallblock
Crystal Block Slab=Kristallblockplatte
Crystal Block Stair=Kristallblocktreppe
Crystal Gilly Staff=Kristallener Gilly-Stab
Crystal Grass=Kristallgras
Crystal Ingot=Kristallbarren
Crystal Pickaxe=Kristallspitzhacke
Crystal Spike=Kristallnadel
Crystal Sword=Kristallschwert
Crystal block=Kristallblock
Cyan Illumishroom=Türkiser Leuchtpilz
Dried Dirt=Vertrocknete Erde
Dried Dirt Slab=Vertrocknete Erdplatte
Dried Dirt Stair=Vertrocknete Erdtreppe
Etherium Dust=Etheriumstaub
Etherium Ore=Etheriumerz
Fern=Farn
Fern Tubers=Farnsporenkapseln
Fiery Dry Shrub=Feuerroter vertrockneter Strauch
Fire Dust=Feuerstaub
Fire Flower=Feuerblume
Firethorn Jelly=Feuerdorngelee
Firethorn Shrub=Feuerdornbusch
Fishing Rod (Right-Click with rod to bait with worm from inventory)=Angel (Rechtsklick mit Angel, um Wurm aus Inventar als Köder zu benutzen)
Frost Fence=Frostzaun
Frost Leaves=Frostblätter
Frost Tree=Frostbaum
Frost Wood=Frostholz
Frost Wood Fence Gate=Frostholzzauntor
Frost Wood Slab=Frostholzplatte
Frost Wood Stair=Frostholztreppe
Glo Stone=Leuchtstein
Golden Apple=Goldener Apfel
Green Glow Coral=Grüne Leuchtende Koralle
Green Illumishroom=Grüner Leuchtpilz
Grey Baked Clay=Grauer gebrannter Ton
Healing Tree Leaves=Lebensbaumblätter
Healing Tree Trunk=Lebensbaumstamm
Healing Tree Wood=Lebensbaumholz
Healing Wood=Lebensholz
Healing Wood Fence=Lebensholzzaun
Healing Wood Fence Gate=Lebensholzzauntor
Healing Wood Slab=Lebensholzplatte
Healing Wood Stair=Lebensholztreppe
Hearty Stew=Deftiger Eintopf
Ice Brick=Eisziegel
Ice Brick Slab=Eisziegelplatte
Ice Brick Stair=Eisziegeltreppe
Inventory full, Fish Got Away!=Inventar voll, Fisch entkam!
Light String Vine=Leuchtschnurrebe
Lump of Charcoal=Holzkohleklumpen
Mushroom=Pilz
Mushroom Cap=Pilzkappe
Mushroom Fence=Pilzzaun
Mushroom Pore=Pilzpore
Mushroom Soup=Pilzsuppe
Mushroom Top=Pilzkappe
Mushroom Top Slab=Pilzkappenplatte
Mushroom Top Stair=Pilzkappentreppe
Mushroom Trunk=Pilzstamm
Mushroom Trunk Fence Gate=Pilzstammzauntor
Mushroom Trunk Slab=Pilzstammplatte
Mushroom Trunk Stair=Pilzstammtreppe
Orange=Orange
Orange Baked Clay=Orange gebrannter Ton
Orange Glow Coral=Orange Leuchtende Koralle
Orange Leaves=Orangenblätter
Palm Fence=Palmzaun
Palm Leaves=Palmenblätter
Palm Trunk=Palmstamm
Palm Wax=Palmwachs
Palm Wood=Palmholz
Palm Wood Fence Gate=Palmholzzauntor
Palm Wood Slab=Palmholzplatte
Palm Wood Stair=Palmholztreppe
Paper Wall=Papierwand
Pine Nuts=Kiefernkerne
Pink Glow Coral=Rosa Leuchtende Koralle
Quicksand=Treibsand
Raw Fish=Roher Fisch
Red Baked Clay=Roter gebrannter Ton
Red Illumishroom=Roter Leuchtpilz
Redwood=Mammutbaum
Redwood Fence=Mammutbaumzaun
Redwood Fence Gate=Mammutbaumzauntor
Redwood Leaves=Mammutbaumblätter
Redwood Slab=Mammutbaumplatte
Redwood Trunk=Mammutbaumstamm
Redwood Wood=Mammutbaumholz
Redwood stair=Mammutbaumtreppe
Sakura=Sakura
Sakura Fence=Sakurazaun
Sakura Leaves=Sakurablätter
Sakura Trunk=Sakurastamm
Sakura Wood=Sakuraholz
Sakura Wood Door=Sakuraholztür
Sakura Wood Fence Gate=Sakuraholzzauntor
Sakura Wood Slab=Sakuraholzplatte
Sakura Wood Stair=Sakuraholztreppe
Sandy=Sandy
Sashimi=Sashimi
Schematic not found=Schematic nicht gefunden
Scorched Fence=Verbrannter Zaun
Scorched Tree=Verbrannter Baum
Scorched Wood Fence Gate=Verbranntes Holzzauntor
Seaweed=Seetang
Snow Brick=Schneeziegel
Snow Brick Slab=Schneeziegelplatte
Snow Brick Stair=Schneeziegeltreppe
Snowy Grass=Verschneites Gras
Sponge=Schwamm
Staff of Light=Stab des Lichts
Stone Ladder=Steinleiter
Strawberry=Erdbeere
Vine=Liane
Wet sponge=Nasser Schwamm
Wild Onion=Wildzwiebel
Willow Fence=Weidenzaun
Willow Trunk=Weidenstamm
Willow Twig=Weidenrute
Willow Wood=Weidenholz
Willow Wood Fence Gate=Weidenholztor
Willow Wood Slab=Weidenholzplatte
Willow Wood Stair=Weidenholztreppe
Worm=Wurm
[MOD] Ethereal loaded=[MOD] Ethereal geladen

View File

@ -0,0 +1,163 @@
# textdomain:ethereal
#Agar Powder=
#Baited Fishing Rod=
#Bamboo=
#Bamboo Block=
#Bamboo Floor=
#Bamboo Leaves=
#Bamboo Slab=
#Bamboo Sprout=
#Bamboo stair=
#Banana=
#Banana Bunch=
#Banana Dough=
#Banana Leaves=
#Banana Loaf=
#Banana Trunk=
#Banana Wood=
#Banana Wood Fence=
#Banana Wood Fence Gate=
#Banana Wood Slab=
#Banana Wood Stair=
#Birch Fence=
#Birch Leaves=
#Birch Trunk=
#Birch Wood=
#Birch Wood Fence Gate=
#Blue Glow Coral=
#Bowl=
#Bucket of Cactus Pulp=
#Bush=
#Bush #2=
#Bush #3=
#Candle=
#Coconut=
#Coconut Slice=
#Cooked Fish=
#Crystal Axe=
#Crystal Block=
#Crystal Block Slab=
#Crystal Block Stair=
#Crystal Gilly Staff=
#Crystal Grass=
#Crystal Ingot=
#Crystal Pickaxe=
#Crystal Spike=
#Crystal Sword=
#Crystal block=
#Cyan Illumishroom=
#Dried Dirt=
#Dried Dirt Slab=
#Dried Dirt Stair=
#Etherium Dust=
#Etherium Ore=
#Fern=
#Fern Tubers=
#Fiery Dry Shrub=
#Fire Dust=
#Fire Flower=
#Firethorn Jelly=
#Firethorn Shrub=
#Fishing Rod (Right-Click with rod to bait with worm from inventory)=
#Frost Fence=
#Frost Leaves=
#Frost Tree=
#Frost Wood=
#Frost Wood Fence Gate=
#Frost Wood Slab=
#Frost Wood Stair=
#Glo Stone=
#Golden Apple=
#Green Glow Coral=
#Green Illumishroom=
#Grey Baked Clay=
#Healing Tree Leaves=
#Healing Tree Trunk=
#Healing Tree Wood=
#Healing Wood=
#Healing Wood Fence=
#Healing Wood Fence Gate=
#Healing Wood Slab=
#Healing Wood Stair=
#Hearty Stew=
#Ice Brick=
#Ice Brick Slab=
#Ice Brick Stair=
#Inventory full, Fish Got Away!=
#Light String Vine=
#Lump of Charcoal=
#Mushroom=
#Mushroom Cap=
#Mushroom Fence=
#Mushroom Pore=
#Mushroom Soup=
#Mushroom Top=
#Mushroom Top Slab=
#Mushroom Top Stair=
#Mushroom Trunk=
#Mushroom Trunk Fence Gate=
#Mushroom Trunk Slab=
#Mushroom Trunk Stair=
#Orange=
#Orange Baked Clay=
#Orange Glow Coral=
#Orange Leaves=
#Palm Fence=
#Palm Leaves=
#Palm Trunk=
#Palm Wax=
#Palm Wood=
#Palm Wood Fence Gate=
#Palm Wood Slab=
#Palm Wood Stair=
#Paper Wall=
#Pine Nuts=
#Pink Glow Coral=
#Quicksand=
#Raw Fish=
#Red Baked Clay=
#Red Illumishroom=
#Redwood=
#Redwood Fence=
#Redwood Fence Gate=
#Redwood Leaves=
#Redwood Slab=
#Redwood Trunk=
#Redwood Wood=
#Redwood stair=
#Sakura=
#Sakura Fence=
#Sakura Leaves=
#Sakura Trunk=
#Sakura Wood=
#Sakura Wood Door=
#Sakura Wood Fence Gate=
#Sakura Wood Slab=
#Sakura Wood Stair=
#Sandy=
#Sashimi=
#Schematic not found=
#Scorched Fence=
#Scorched Tree=
#Scorched Wood Fence Gate=
#Seaweed=
#Snow Brick=
#Snow Brick Slab=
#Snow Brick Stair=
#Snowy Grass=
#Sponge=
#Staff of Light=
#Stone Ladder=
#Strawberry=
#Vine=
#Wet sponge=
#Wild Onion=
#Willow Fence=
#Willow Trunk=
#Willow Twig=
#Willow Wood=
#Willow Wood Fence Gate=
#Willow Wood Slab=
#Willow Wood Stair=
#Worm=
#[MOD] Ethereal loaded=

View File

@ -0,0 +1,250 @@
# textdomain:ethereal
Agar Powder=Polvo de Agar
Angler=Lophiiforme
Apple Tree Sapling=Retoño de manzano
Baited Fishing Rod=Caña de pescar con cebo
Bamboo Block=Bloque de bamboo
Bamboo Dirt=Tierra de bamboo
Bamboo Floor=Piso de bamboo
Bamboo Leaves=Hojas de bamboo
Bamboo Slab=Losa de bamboo
Bamboo Sprout=Brote de bamboo
Bamboo Stair=Escalera de bamboo
Bamboo=Bamboo
Banana Bunch=Racimo de bananas
Banana Dough=Masa de banana
Banana Leaves=Hojas de banana
Banana Loaf=Pan de banana
Banana Tree Sapling=Retoño de banana
Banana Trunk=Tronco de banana
Banana Wood Fence Gate=Puerta de cerca de madera de banana
Banana Wood Fence=Cerca de madera de árbol de banana
Banana Wood Slab=Losa de madera de banana
Banana Wood Stair=Escalera de madera de banana
Banana Wood=Madera de banana
Banana=Banana
Big Tree Sapling=Retoño de árbol gigante
Birch Fence=Cerca de abedul
Birch Leaves=Hojas de abedul
Birch Tree Sapling=Retoño de abedul
Birch Trunk=Tronco de abedul
Birch Wood Fence Gate=Puerta de cerca de madera de abedul
Birch Wood Slab=Losa de madera de abedul
Birch Wood Stair=Escalera de madera de abedul
Birch Wood=Madera de abedul
Black Candle=Vela negra
Blue Candle=Vela azul
Blue Fin=Atún
Blue Glow Coral=Coral azul brillante
Blue Marble=Mármol azul
Blue Marble Stair=Escalera de marmol azul
Blue Marble Tile=Baldosa de marmol azul
Blue Ram=Ramirezi
Bone Meal=Fertilizante de hueso
Bone=Hueso
Bowl=Tazón
Brown Candle=Vela café
Bucket of Cactus Pulp=Cubo de pulpa de cactus
Bush #2=Arbusto #2
Bush #3=Arbusto #3
Bush=Arbusto
Candied Lemon=Limón confitado
Candle=Vela
Catfish=Pezgato
Cichlid=Cíclido
Clownfish=Pez payaso
Coconut Slice=Trozo de coco
Coconut=Coco
Cold Dirt=Tierra helada
Cooked Fish=Pescado cocido
Coy=Coy
Crystal Axe=Hacha de Cristal
Crystal Block Slab=Losa de bloque de cristal
Crystal Block Stair=Escalera de bloque de cristal
Crystal Block=Bloque de Cristal
Crystal Dirt=Tierra de cristal
Crystal Gilly Staff=Bastón de Cristal de Gilly
Crystal Grass=Pasto de cristal
Crystal Ingot=Lingote de Cristal
Crystal Moss=Musgo de cristal
Crystal Pickaxe=Pico de Cristal
Crystal Shovel=Pala de Cristal
Crystal Spike=Púa de Cristal
Crystal Sword=Espada de Cristal
Cyan Candle=Vela turquesa
Cyan Illumishroom=Champiluz turquesa
Dark Green Candle=Vela verde oscuro
Dark Grey Candle=Vela gris oscuro
Dried Dirt Slab=Losa de tiera seca
Dried Dirt Stair=Escalera de tierra seca
Dried Dirt=Tierra seca
Dry Dirt=Tierra seca
Etherium Dust=Polvo de Etherium
Etherium Ore=Mineral de Etherium
Fern Tubers=Tubérculos de helecho
Fern=Helecho
Fiery Dirt=Tierra de fuego
Fiery Dry Shrub=Arbusto seco de fuego
Fiery Moss=Musgo ardiente
Fire Dust=Polvo de fuego
Fire Flower=Flor de fuego
Firethorn Jelly=Jalea de Firethorn
Firethorn Shrub=Arbusto de Firethorn
Fishing Rod (USE to cast and again when the time is right)=Caña de pescar (Botón principal para lanzar, cuando sea el momento adecuado vuelve a presionarlo)
Flathead=Flathead
Flight already granted, @1 seconds left!=El vuelo ya ha sido otorgado, ¡te quedan @1 segundos!
Flight granted, you have @1 seconds!=Ya puedes volar, ¡tienes @1 segundos!
Flight Potion=Poción de vuelo
Flight timer about to expire!=¡El tiempo de vuelo está apunto de acabarse!
Frost Fence=Cerca congelada
Frost Leaves=Hojas congeladas
Frost Tree Sapling=Retoño de árbol congelado
Frost Tree=Árbol sanador
Frost Wood Fence Gate=Puerta de cerca de madera congelada
Frost Wood Slab=Losa de madera congelada
Frost Wood Stair=Escalera de madera congelada
Frost Wood=Madera congelada
Fugusashi=Fugusashi
Giant Redwood Tree Sapling=Retoño de secoya gigante
Glo Stone=Piedra brillante
Golden Apple=Manzana de oro
Gray Dirt=Tierra gris
Gray Moss=Musgo gris
Green Candle=Vela verde
Green Dirt=Tierra verde
Green Glow Coral=Coral verde brillante
Green Illumishroom=Champiluz verde
Green Moss=Musgo verde
Grey Baked Clay=Arcilla gris cocida
Grey Candle=Vela gris
Grove Dirt=Tierra de la arboleda
Healing Tree Leaves=Hojas de árbol sanador
Healing Tree Sapling=Retoño de árbol sanador
Healing Tree Trunk=Tronco de árbol sanador
Healing Tree Wood=Madera de árbol sanador
Healing Wood Fence Gate=Puera de cerca de madera de arbol sanador
Healing Wood Fence=Cerca de madera de árbol sanador
Healing Wood Slab=Losa de madera de árbol sanador
Healing Wood Stair=Escalera de madera de árbol sanador
Healing Wood=Madera de árbol sanador
Hearty Stew=Guiso abundante
Ice Brick Slab=Losa de ladrillo de hielo
Ice Brick Stair=Escalera de ladrillo de hielo
Ice Brick=Ladrillo de hielo
Inventory full, Fish Got Away!=Inventario lleno, ¡el pez se ha escapado!
Jellyfish=Medusa
Jungle Dirt=Tierra de la jungla
Jungle Tree Sapling=Retoño de árbol tropical
Kappa Maki Sushi=Sushi Kappa Maki
Lemon Tree Leaves=Hojas de limonero
Lemon Tree Sapling=Retoño de limonero
Lemon=Limón
Lemonade=Limonada
Light String Vine=Enredadera luminosa
Lump of Charcoal=Carbón de madera
Magenta Candle=Vela magenta
Mushroom Cap=Sombrero de champiñón
Mushroom Dirt=Tierra de champiñones
Mushroom Fence=Cerca de champiñones
Mushroom Moss=Musgo de champiñón
Mushroom Pore=Esporas de champiñón
Mushroom Soup=Sopa de champiñón
Mushroom Top Slab=Losa de sombrero de champiñón
Mushroom Top Stair=Escalera de sombrero de champiñón
Mushroom Top=Sombrero de champión
Mushroom Tree Sapling=Retoño de champiñón
Mushroom Trunk Fence Gate=Puerta de cerca de tronco de champiñones
Mushroom Trunk Slab=Losa de tronco de champiñón
Mushroom Trunk Stair=Escalera de tronco de champiñón
Mushroom Trunk=Tronco de champiñón
Mushroom=Champiñón
Nigiri Sushi=Sushi Nigiri
Olive Oil=Aceite de oliva
Olive Tree Leaves=Hojas de olivo
Olive Tree Sapling=Retoño de olivo
Olive Trunk=Tronco de olivo
Olive Wood Stair=Escalera de madera de olivo
Olive Wood Tile=Baldosa de madera de olivo
Olive Wood=Madera de olivo
Olive=Aceituna
Orange Baked Clay=Arcilla naranja cocida
Orange Candle=Vela naranja
Orange Glow Coral=Coral naranjo brillante
Orange Leaves=Hojas de naranja
Orange Tree Sapling=Retoño de naranja
Orange=Naranja
Palm Fence=Cerca de palma
Palm Leaves=Hojas de palma
Palm Tree Sapling=Retoño de Palma
Palm Trunk=Tronco de palma
Palm Wax=Cera de palma
Palm Wood Fence Gate=Puerta de cerca de madera de palma
Palm Wood Slab=Losa de madera de palma
Palm Wood Stair=Escalera de madera de palma
Palm Wood=Madera de palma
Paper Wall=Papel mural
Pike=Lucio
Pine Nuts=Piñones
Pine Tree Sapling=Retoño de pino
Pink Candle=Vela rosada
Pink Glow Coral=Coral rosado brillante
Piranha=Piraña
Plaice=Solla
Prairie Dirt=Tierra de la pradera
Pufferfish=Pez globo
Quicksand=Arena movediza
Raw Fish=Pescado crudo
Red Baked Clay=Arcilla roja cocida
Red Candle=Vela roja
Red Illumishroom=Champiluz roja
Redwood Fence Gate=Puerta de cerca de secoya
Redwood Fence=Cerca de secoya
Redwood Leaves=Hojas de secoya
Redwood Slab=Losa de secoya
Redwood Stair=Escalera de secoya
Redwood Tree Sapling=Retoño de secoya
Redwood Trunk=Tronco de secoya
Redwood Wood=Madera de secoya
Redwood=Secoya
Sakura Leaves=Hojas de sakura
Sakura Tree Sapling=Retoño de sakura
Sakura Trunk=Tronco de sakura
Sakura Wood Door=Puerta de madera de sakura
Sakura Wood Stair=Escalera de madera de sakura
Sakura Wood Tile=Baldosa de madera de sakura
Sakura Wood=Madera de sakura
Salmon=Salmón
Sashimi=Sashimi
Schematic not found=Schematica no encontrada
Scorched Fence=Cerca de madera quemada
Scorched Tree=Árbol quemado
Scorched Wood Fence Gate=Puerta de cerca de madera quemada
Seahorse=Hipocampo
Seaweed=Alga marina
Snow Brick Slab=Losa de ladrillo de nieve
Snow Brick Stair=Escalera de ladrillo de nieve
Snow Brick=Ladrillo de nieve
Snowy Grass=Pasto nevado
Sponge=Esponja de mar
Staff of Light=Bastón de Luz
Stone Ladder=Escalera de piedra
Strawberry=Fresa
Tamago Sushi=Sushi Tamago
Teriyaki Beef=Asado Teriyaki
Teriyaki Chicken=Pollo Teriyaki
Trout=Trucha
Vine=Enredadera
Violet Candle=Vela violeta
Wet sponge=Esponja de mar con agua
Wild Onion=Cebolla silvestre
Willow Fence=Cerca de sauce
Willow Tree Sapling=Retoño de sauce
Willow Trunk=Tronco de sauce
Willow Twig=Ramas de sauce
Willow Wood Fence Gate=Puerta de cerca de sauce
Willow Wood Slab=Losa de madera de sauce
Willow Wood Stair=Escalera de madera de sauce
Willow Wood=Madera de sauce
Worm=Gusano
Yellow Candle=Vela amarilla
[MOD] Ethereal loaded=[MOD] Ethereal cargado

View File

@ -0,0 +1,163 @@
# textdomain:ethereal
Agar Powder=Poudre d'agar
Baited Fishing Rod=Canne à pêche avec appât
Bamboo=Bambou
Bamboo Block=Bloc de bambou
Bamboo Floor=Plancher de bambou
Bamboo Leaves=Feuilles de bambou
Bamboo Slab=Dalle de bambou
Bamboo Sprout=Germe de bambou
Bamboo stair=Marche de bambou
Banana=Banane
Banana Bunch=Régime de banane
Banana Dough=Pâte de banande
Banana Leaves=Feuilles de bananier
Banana Loaf=Pain aux bananes
Banana Trunk=Tronc de bananier
Banana Wood=Bois de bananier
Banana Wood Fence=Clôture en bananier
Banana Wood Fence Gate=Porte de clôture en bananier
Banana Wood Slab=Dalle de bois de bananier
Banana Wood Stair=Marche en bois de bananier
Birch Fence=Clôture en bouleau
Birch Leaves=Feuilles de bouleau
Birch Trunk=Tronc de bouleau
Birch Wood=Bois de bouleau
Birch Wood Fence Gate=Porte de clôture en bouleau
Blue Glow Coral=Corail lueur bleu
Bowl=Bol
Bucket of Cactus Pulp=Seau de pâte de cactus
Bush=Arbuste
Bush #2=Arbuste #2
Bush #3=Arbuste #3
Candle=Chandelle
Coconut=Noix de coco
Coconut Slice=Tranche de noix de coco
Cooked Fish=Poisson cuit
Crystal Axe=Hâche de crystal
Crystal Block=Bloc de crystal
Crystal Block Slab=Dalle de crystal
Crystal Block Stair=Marche de crystal
Crystal Gilly Staff=Baton de crystal
Crystal Grass=Herbe de crystal
Crystal Ingot=Lingot de crystal
Crystal Pickaxe=Pioche de crystal
Crystal Spike=Pic de crystal
Crystal Sword=Épée de crystal
Crystal block=Bloc de crystal
Cyan Illumishroom=Luminochampignon cyan
Dried Dirt=Terre sèche
Dried Dirt Slab=Dalle de terre sèche
Dried Dirt Stair=Marche de terre sèche
Etherium Dust=Poudre céleste
Etherium Ore=Minerai céleste
Fern=Fougère
Fern Tubers=Tubercules de fougère
Fiery Dry Shrub=Arbuste ardent sec
Fire Dust=Poudre de feu
Fire Flower=Fleur de feu
Firethorn Jelly=Gelée d'épinafeu
Firethorn Shrub=Arbuste épinafeu
Fishing Rod (Right-Click with rod to bait with worm from inventory)=Canne à pèche (Clic droit avec canne pour ajouter l'appât à partir de l'inventaire)
Frost Fence=Clôture de givrier
Frost Leaves=Feuilles de givrier
Frost Tree=Givrier
Frost Wood=Bois de givrier
Frost Wood Fence Gate=Porte de clôture en givrier
Frost Wood Slab=Dalle de givrier
Frost Wood Stair=Marche en givrier
Glo Stone=Pierre luminescente
Golden Apple=Pomme dorée
Green Glow Coral=Corail lueur vert
Green Illumishroom=Luminochampignon vert
Grey Baked Clay=Terre cuite grise
Healing Tree Leaves=Feuilles de soignantier
Healing Tree Trunk=Tronc de soignantier
Healing Tree Wood=Bois de soignantier
Healing Wood=Bois soignant
Healing Wood Fence=Clôture en soignantier
Healing Wood Fence Gate=Porte de clôture en soignantier
Healing Wood Slab=Dalle de soignantier
Healing Wood Stair=Marche en soignantier
Hearty Stew=Ragoût copieux
Ice Brick=Brique de glace
Ice Brick Slab=Dalle en briques de glace
Ice Brick Stair=Marche en briques de glace
Inventory full, Fish Got Away!=Inventaire plein, un poisson s'est échappé !
Light String Vine=Vigne en girlande de lumières
Lump of Charcoal=Morceau de charbon de bois
Mushroom=Champignon
Mushroom Cap=Dessus de champignon
Mushroom Fence=Clôture en champignon
Mushroom Pore=Pore de champignon
Mushroom Soup=Soupe aux champignons
Mushroom Top=Tête de champignon
Mushroom Top Slab=Dalle en tête de champignon
Mushroom Top Stair=Marche en tête de champignon
Mushroom Trunk=Tronc de champignon
Mushroom Trunk Fence Gate=Porte de clôture en champignon
Mushroom Trunk Slab=Dalle de champignon
Mushroom Trunk Stair=Marche en champignon
Orange=Orange
Orange Baked Clay=Terre cuite orange
Orange Glow Coral=Corail lueur orange
Orange Leaves=Feuilles orange
Palm Fence=Clôture de palmier
Palm Leaves=Feuilles de palmier
Palm Trunk=Tronc de palmier
Palm Wax=Cire de palmier
Palm Wood=Bois de palmier
Palm Wood Fence Gate=Porte de clôture en palmier
Palm Wood Slab=Dalle de palmier
Palm Wood Stair=Marche en palmier
Paper Wall=Mûr de papier
Pine Nuts=Pignon de pin
Pink Glow Coral=Corail lueur rose
Quicksand=Sables mouvants
Raw Fish=Poisson cru
Red Baked Clay=Terre cuite rouge
Red Illumishroom=Luminochampignon rouge
Redwood=Séquoia
Redwood Fence=Clôture en séquoia
Redwood Fence Gate=Porte de clôture en séquoia
Redwood Leaves=Feuilles de séquoia
Redwood Slab=Dalle de séquoia
Redwood Trunk=Tronc de séquoia
Redwood Wood=Bois de séquoia
Redwood stair=Marche en séquoia
Sakura=Sakura
Sakura Fence=Clôture en sakura
Sakura Leaves=Feuilles de sakura
Sakura Trunk=Tronc de sakura
Sakura Wood=Bois de sakura
Sakura Wood Door=Porte en sakura
Sakura Wood Fence Gate=Porte de clôture en sakura
Sakura Wood Slab=Dalle de sakura
Sakura Wood Stair=Marche de sakura
Sandy=Sable de mer
Sashimi=Sashimi
Schematic not found=Schéma introuvable
Scorched Fence=Clôture brûlée
Scorched Tree=Arbre brûlé
Scorched Wood Fence Gate=Porte de clôture en bois brûlé
Seaweed=Algues
Snow Brick=Brique de neige
Snow Brick Slab=Dalle en briques de neige
Snow Brick Stair=Marche en briques de neige
Snowy Grass=Herbe des neiges
Sponge=Éponge
Staff of Light=Bâton de lumière
Stone Ladder=Échelle en roche
Strawberry=Fraise
Vine=Vigne
Wet sponge=Éponge mouillée
Wild Onion=Onion sauvage
Willow Fence=Clôture en saule
Willow Trunk=Tronc de saule
Willow Twig=Brindille de saule
Willow Wood=Bois de saule
Willow Wood Fence Gate=Porte de clôture en saule
Willow Wood Slab=Dalle de saule
Willow Wood Stair=Marche en saule
Worm=Ver
[MOD] Ethereal loaded=[MOD] Ethereal chargé

View File

@ -0,0 +1,163 @@
# textdomain:ethereal
#Agar Powder=
Baited Fishing Rod=Удочка с приманкой
Bamboo=Бамбук
#Bamboo Block=
Bamboo Floor=Бамбуковый пол
Bamboo Leaves=Бамбуковая листва
Bamboo Slab=Плита из бамбука
Bamboo Sprout=Росток бамбука
#Bamboo stair=
Banana=Банан
#Banana Bunch=
Banana Dough=Банановое тесто
Banana Leaves=Листва банана
Banana Loaf=Банадовый хлеб
Banana Trunk=Ствол бананового дерева
Banana Wood=Доски банавого дерева
Banana Wood Fence=Забор из бананового дерева
Banana Wood Fence Gate=Ворота из бананового дерева для забора
Banana Wood Slab=Плита из банановых досок
Banana Wood Stair=Ступенька из банановых досок
Birch Fence=Берёзовый забор
Birch Leaves=Берёзовая листва
Birch Trunk=Ствол берёзы
Birch Wood=Доски берёзы
Birch Wood Fence Gate=Берёзовые ворота для забора
Blue Glow Coral=Синий коралл
Bowl=Чашка
Bucket of Cactus Pulp=Ведро с мякотью кактуса
Bush=Куст
Bush #2=Куст #2
Bush #3=Куст #3
Candle=Свеча
Coconut=Кокос
Coconut Slice=Кокосовый ломтик
Cooked Fish=Свареная рыба
Crystal Axe=Хрустальный топор
Crystal Block=Хрустальный блок
Crystal Block Slab=Плита из хрустального блока
Crystal Block Stair=Ступенька из хрустального блока
Crystal Gilly Staff=Хрустальный посох Джилли
Crystal Grass=Хрустальная трава
Crystal Ingot=Хрустальный слиток
Crystal Pickaxe=Хрустальная кирка
Crystal Spike=Хрустальный шип
Crystal Sword=Хрустальный меч
#Crystal block=
Cyan Illumishroom=Голубой светящийся гриб
Dried Dirt=Высушенная земля
#Dried Dirt Slab=
#Dried Dirt Stair=
#Etherium Dust=
#Etherium Ore=
Fern=Папоротник
Fern Tubers=Клубни папоротника
Fiery Dry Shrub=Огненный сухой кустарник
Fire Dust=Огненая пыль
Fire Flower=Огненый цветок
#Firethorn Jelly=
#Firethorn Shrub=
#Fishing Rod (Right-Click with rod to bait with worm from inventory)=
Frost Fence=Замороженный забор
Frost Leaves=Замороженная листва
Frost Tree=Морозное дерево
Frost Wood=Доски
Frost Wood Fence Gate=Замороженные деревянные ворота для забора
Frost Wood Slab=Плита из замороженных досок
Frost Wood Stair=Ступенька из замороженных досок
Glo Stone=Светящийся камень
Golden Apple=Золотое яблоко
Green Glow Coral=Залёный коралл
Green Illumishroom=Зелёный светящийся гриб
Grey Baked Clay=Серая обожжёная глина
Healing Tree Leaves=Листва лечащего дерева
Healing Tree Trunk=Ствол лечебного дерева
Healing Tree Wood=Доски лечебного дерева
Healing Wood=лечебная древесина
Healing Wood Fence=Забор из лечащего дерева
Healing Wood Fence Gate=Ворота из лечащего дерева для забора
Healing Wood Slab=Плита из лечебного дерева
Healing Wood Stair=Ступенька из лечебного дерева
Hearty Stew=Сытное рагу
Ice Brick=Ледяной кирпич
Ice Brick Slab=Плита из ледяного кирпича
Ice Brick Stair=Ступенька из ледяного кирпича
Inventory full, Fish Got Away!=Инвентарь заполнен, рыба сбежала!
Light String Vine=Светящаяся виноградная лоза
Lump of Charcoal=Кусок угля
Mushroom=Гриб
Mushroom Cap=Шляпка гриба
Mushroom Fence=Грибной забор
Mushroom Pore=Грибные поры
Mushroom Soup=Грибной суп
Mushroom Top=Шляпка гриба
Mushroom Top Slab=Плита из шляпки гриба
Mushroom Top Stair=Ступенька из шляпки гриба
Mushroom Trunk=Ствол гриба
Mushroom Trunk Fence Gate=Ворота из грибного ствола для забора
Mushroom Trunk Slab=Плита из ствола гриба
Mushroom Trunk Stair=Ступенька из ствола гриба
Orange=Апельсин
Orange Baked Clay=Оранжевая обожжёная глина
Orange Glow Coral=Оранжевый коралл
Orange Leaves=Листва апельсина
Palm Fence=Пальмовый забор
Palm Leaves=Пальмовая листва
Palm Trunk=Ствол пальмы
Palm Wax=Пальмовый воск
Palm Wood=Доски пальмы
Palm Wood Fence Gate=Ворота из пальмого дерева для забора
Palm Wood Slab=Плита из пальмовых досок
Palm Wood Stair=Ступенька из пальмовых досок
Paper Wall=Обои
Pine Nuts=Кедровые орехи
Pink Glow Coral=Розовый коралл
Quicksand=Зыбучий песок
Raw Fish=Сырая рыба
Red Baked Clay=Красная обожжёная глина
Red Illumishroom=Красный светящийся гриб
Redwood=Секвойя
Redwood Fence=Забор из секвойи
Redwood Fence Gate=Ворота из секвойи для забора
Redwood Leaves=Листва секвойи
Redwood Slab=Плита из секвойи
Redwood Trunk=Ствол секвойи
Redwood Wood=Доски секвойи
#Redwood stair=
#Sakura=
#Sakura Fence=
#Sakura Leaves=
#Sakura Trunk=
#Sakura Wood=
#Sakura Wood Door=
#Sakura Wood Fence Gate=
#Sakura Wood Slab=
#Sakura Wood Stair=
Sandy=Песочный
Sashimi=Сашими
Schematic not found=Схема не найдена
Scorched Fence=Обожжёный забор
Scorched Tree=Обожжёное дерево
Scorched Wood Fence Gate=Обожжёные деревянные ворота для забора
Seaweed=Водоросли
Snow Brick=Снежный кирпич
Snow Brick Slab=Плита из снежного кирпича
Snow Brick Stair=Ступенька из снежного кирпича
Snowy Grass=Заснеженная трава
#Sponge=
Staff of Light=Световой посох
Stone Ladder=Каменная лестница
Strawberry=Клубника
Vine=Виноградная лоза
#Wet sponge=
Wild Onion=Дикий лук
Willow Fence=Ивовый забор
Willow Trunk=Ствол ивы
Willow Twig=Ивовый прут
Willow Wood=Доски ивы
Willow Wood Fence Gate=Ивовые ворота для забора
Willow Wood Slab=Плита из ивовых досок
Willow Wood Stair=Ступенька из ивовых досок
Worm=Червь
[MOD] Ethereal loaded=[MOD] Ethereal загружен

View File

@ -0,0 +1,163 @@
# textdomain:ethereal
#Agar Powder=
Baited Fishing Rod=带饵的钓鱼竿
Bamboo=竹子
#Bamboo Block=
Bamboo Floor=竹地板
Bamboo Leaves=竹叶
Bamboo Slab=竹板
Bamboo Sprout=竹笋
#Bamboo stair=
Banana=香蕉
#Banana Bunch=
Banana Dough=香蕉皮
Banana Leaves=香蕉树叶
Banana Loaf=香蕉面包
Banana Trunk=香蕉树干
Banana Wood=香蕉木
Banana Wood Fence=香蕉木栅栏
Banana Wood Fence Gate=香蕉木栅栏门
Banana Wood Slab=香蕉木板
Banana Wood Stair=香蕉木楼梯
Birch Fence=桦树栅栏
Birch Leaves=白桦树叶
Birch Trunk=桦树树干
Birch Wood=白桦木材
Birch Wood Fence Gate=白桦木栅栏门
Blue Glow Coral=蓝色珊瑚
Bowl=碗
Bucket of Cactus Pulp=仙人掌果肉桶
Bush=灌木
Bush #2=灌木 #2
Bush #3=灌木 #3
Candle=蜡烛
Coconut=椰子
Coconut Slice=椰子片
Cooked Fish=煮熟的鱼
Crystal Axe=水晶斧
Crystal Block=水晶块
Crystal Block Slab=水晶板
Crystal Block Stair=水晶楼梯
Crystal Gilly Staff=水晶网络人员
Crystal Grass=水晶草
Crystal Ingot=水晶锭
Crystal Pickaxe=水晶锄
Crystal Spike=水晶尖
Crystal Sword=水晶剑
#Crystal block=
Cyan Illumishroom=青色蘑菇
Dried Dirt=干土
#Dried Dirt Slab=
#Dried Dirt Stair=
#Etherium Dust=
#Etherium Ore=
Fern=蕨类植物
Fern Tubers=蕨类植物的茎
Fiery Dry Shrub=干枯灌木
Fire Dust=火土
Fire Flower=火焰花
#Firethorn Jelly=
#Firethorn Shrub=
#Fishing Rod (Right-Click with rod to bait with worm from inventory)=
Frost Fence=霜木栅栏
Frost Leaves=霜叶子
Frost Tree=霜树
Frost Wood=霜木
Frost Wood Fence Gate=霜木栅栏门
Frost Wood Slab=霜木材板
Frost Wood Stair=霜木楼梯
Glo Stone=荧光石
Golden Apple=金苹果
Green Glow Coral=绿色珊瑚
Green Illumishroom=绿色蘑菇
Grey Baked Clay=灰色烤粘土
Healing Tree Leaves=治疗树叶
Healing Tree Trunk=治疗树干
Healing Tree Wood=治疗树木材
Healing Wood=治疗木
Healing Wood Fence=治疗木栅栏
Healing Wood Fence Gate=愈合木栅栏门
Healing Wood Slab=治疗木板
Healing Wood Stair=治疗木楼梯
Hearty Stew=丰盛的炖肉
Ice Brick=冰砖
Ice Brick Slab=冰砖板
Ice Brick Stair=冰砖楼梯
Inventory full, Fish Got Away!=库存满了,鱼逃掉了!
Light String Vine=荧光藤蔓
Lump of Charcoal=块木炭
Mushroom=蘑菇
Mushroom Cap=蘑菇帽
Mushroom Fence=蘑菇栅栏
Mushroom Pore=蘑菇孔隙
Mushroom Soup=蘑菇汤
Mushroom Top=蘑菇顶部
Mushroom Top Slab=蘑菇顶部板
Mushroom Top Stair=蘑菇上楼梯
Mushroom Trunk=蘑菇干
Mushroom Trunk Fence Gate=蘑菇栅栏门
Mushroom Trunk Slab=蘑菇板
Mushroom Trunk Stair=蘑菇楼梯
Orange=橙子
Orange Baked Clay=橙色烤粘土
Orange Glow Coral=橙色珊瑚
Orange Leaves=橙子树叶
Palm Fence=棕榈栅栏
Palm Leaves=棕榈叶
Palm Trunk=棕榈树干
Palm Wax=棕榈蜡
Palm Wood=棕榈木
Palm Wood Fence Gate=棕榈木栅栏门
Palm Wood Slab=棕榈木板
Palm Wood Stair=棕榈木楼梯
Paper Wall=纸墙
Pine Nuts=松子
Pink Glow Coral=粉色珊瑚
Quicksand=流沙
Raw Fish=生鱼
Red Baked Clay=红色烤粘土
Red Illumishroom=红色蘑菇
Redwood=红木
Redwood Fence=红杉栅栏
Redwood Fence Gate=红杉栅栏门
Redwood Leaves=红杉树叶
Redwood Slab=红杉板
Redwood Trunk=红木箱子
Redwood Wood=红木木材
#Redwood stair=
#Sakura=
#Sakura Fence=
#Sakura Leaves=
#Sakura Trunk=
#Sakura Wood=
#Sakura Wood Door=
#Sakura Wood Fence Gate=
#Sakura Wood Slab=
#Sakura Wood Stair=
Sandy=沙子
Sashimi=生鱼片
Schematic not found=没有找到示意图
Scorched Fence=烧焦的栅栏
Scorched Tree=烧焦的树
Scorched Wood Fence Gate=烧焦的木栅栏门
Seaweed=海藻
Snow Brick=雪砖
Snow Brick Slab=雪砖板
Snow Brick Stair=雪砖楼梯
Snowy Grass=雪草
#Sponge=
Staff of Light=灯柱
Stone Ladder=石梯
Strawberry=草莓
Vine=藤蔓
#Wet sponge=
Wild Onion=野生洋葱
Willow Fence=柳树栅栏
Willow Trunk=柳树树干
Willow Twig=柳树枝
Willow Wood=柳树木
Willow Wood Fence Gate=柳树木栅栏门
Willow Wood Slab=柳树木板
Willow Wood Stair=柳树木楼梯
Worm=蠕虫
[MOD] Ethereal loaded=(MOD)的加载

220
mods/ethereal/locale/ru.txt Normal file
View File

@ -0,0 +1,220 @@
# 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 = Бамбук

View File

@ -0,0 +1,294 @@
# Template for translations of ethereal mod
# last update: 2022/June/04
#biomes.lua
Blue Marble=
Blue Marble Tile=
#bonemeal.lua
Bone=Hueso
Bone Meal=
#crystal.lua
Crystal Spike=
Crystal Ingot=
Crystal Block=
Crystal Sword=
Crystal Axe=
Crystal Pickaxe=
Crystal 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=
Black Candle=
Blue Candle=
Brown Candle=
Cyan Candle=
Dark Green Candle=
Dark Grey Candle=
Green Candle=
Grey Candle=
Magenta Candle=
Orange Candle=
Pink Candle=
Red Candle=
Violet Candle=
Yellow Candle=
Bowl=
Stone Ladder=
Paper Wall=
Glo Stone=
Lump of Charcoal=
Staff of Light=
Etherium Dust=
Etherium Ore=
Bamboo Block=
#fences.lua
Scorched Fence=
Frost Fence=
Redwood Fence=
Willow Fence=
Healing Wood Fence=
Palm Fence=
Banana Wood Fence=
Mushroom Fence=
Birch Fence=
Sakura Wood Door=
#fishing.lua
Blue Fin=
Blue Ram=
Catfish=
Clownfish=
Pike=
Flathead=
Plaice=
Pufferfish=
Coy=
Salmon=
Cichlid=
Angler=
Jellyfish=
Seahorse=
Piranha=
Trout=
Raw Fish=
Cooked Fish=
Sashimi=
Worm=
Fishing Rod (USE to cast and again when the time is right)=
Baited Fishing Rod=
Inventory full, Fish Got Away!=
#flight.lua
Flight Potion=
Flight timer about to expire!=
Flight already granted, @1 seconds left!=
Flight granted, you have @1 seconds!=
#food.lua
Banana Bunch=
Firethorn Jelly=
Lemon=
Candied Lemon=
Lemonade=
Olive=
Olive Oil=
Kappa Maki Sushi=
Nigiri Sushi=
Tamago Sushi=
Fugusashi=
Teriyaki Chicken=
Teriyaki Beef=
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
Sakura Leaves=
Lemon Tree Leaves=
Olive Tree Leaves=
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
Firethorn Shrub=
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
Giant Redwood Tree Sapling=
Sakura Tree Sapling=
Lemon Tree Sapling=
Olive Tree Sapling=
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=
Birch Tree Sapling=
Schematic not found=
#sealife.lua
Agar Powder=
Sponge=
Wet sponge=
Seaweed=
Blue Glow Coral=
Orange Glow Coral=
Pink Glow Coral=
Green Glow Coral=
#stairs.lua
Blue Marble Stair=
Blue Marble Tile=
Sakura Wood Stair=
Sakura Wood Tile=
Olive Wood Stair=
Olive Wood Tile=
Crystal Block Stair=
Crystal Block Slab=
Ice Brick Stair=
Ice Brick Slab=
Snow Brick Stair=
Snow Brick Slab=
Dried Dirt Stair=
Dried 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
Sakura Trunk=
Sakura Wood=
Olive Trunk=
Olive Wood=
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=

View File

@ -0,0 +1,178 @@
Bone =骨
Bone Meal =骨粉
Crystal Spike =水晶尖
Crystal Ingot =水晶锭
Crystal Block =水晶块
Crystal Sword =水晶剑
Crystal Axe =水晶斧
Crystal Pickaxe =水晶锄
Crystal (soft touch) Shovel =水晶铲
Crystal Gilly Staff =水晶网络人员
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 =流沙
Bamboo Floor =竹地板
Palm Wax =棕榈蜡
Candle =蜡烛
Bowl =碗
Stone Ladder =石梯
Paper Wall =纸墙
Glo Stone =荧光石
Lump of Charcoal =块木炭
Staff of Light =灯柱
Scorched Fence =烧焦的栅栏
Frost Fence =霜木栅栏
Redwood Fence =红杉栅栏
Willow Fence =柳树栅栏
Healing Wood Fence =治疗木栅栏
Palm Fence =棕榈栅栏
Banana Wood Fence =香蕉木栅栏
Mushroom Fence =蘑菇栅栏
Birch Fence =桦树栅栏
Raw Fish =生鱼
Cooked Fish =煮熟的鱼
Sashimi =生鱼片
Worm =蠕虫
Fishing Rod =鱼竿
Baited Fishing Rod =带饵的钓鱼竿
Inventory full, Fish Got Away! =库存满了,鱼逃掉了!
Banana =香蕉
Banana Dough =香蕉皮
Orange =橙子
Pine Nuts =松子
Banana Loaf =香蕉面包
Coconut =椰子
Coconut Slice =椰子片
Golden Apple =金苹果
Hearty Stew =丰盛的炖肉
Bucket of Cactus Pulp =仙人掌果肉桶
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 =白桦木栅栏门
[MOD] Ethereal loaded =(MOD)的加载
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 Soup =蘑菇汤
Wild Onion =野生洋葱
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 =青色蘑菇
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 =没有找到示意图
Seaweed =海藻
Blue Coral =蓝色珊瑚
Orange Coral =橙色珊瑚
Pink Coral =粉色珊瑚
Green Coral =绿色珊瑚
Sandy =沙子
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 =草莓
Ice Brick =冰砖
Snow Brick =雪砖
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 =竹子

View File

@ -0,0 +1,159 @@
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 = 2, y = 0, z = 2}},
{"birchtree", ethereal.birchtree, {x = 2, y = 0, z = 2}},
{"basandrabush", ethereal.basandrabush, {x = 1, y = 0, z = 1}}
})
lucky_block:add_blocks({
{"sch", "basandrabush", 0, false},
{"dro", {"ethereal:basandra_wood"}, 5},
{"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:flight_potion"}, 1},
{"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"}},
{"nod", "ethereal:basandra_bush_stem", 1},
{"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"}},
{"nod", "default:chest", 0, {
{name = "ethereal:birch_sapling", max = 10},
{name = "ethereal:palm_sapling", max = 10},
{name = "ethereal:orange_tree_sapling", max = 10},
{name = "ethereal:redwood_sapling", max = 10},
{name = "ethereal:bamboo_sprout", max = 10},
{name = "ethereal:banana_tree_sapling", max = 10},
{name = "ethereal:mushroom_sapling", max = 10},
{name = "ethereal:frost_tree_sapling", max = 10},
{name = "ethereal:sakura_sapling", max = 10},
{name = "ethereal:willow_sapling", max = 10},
{name = "ethereal:lemon_tree_sapling", max = 10},
{name = "ethereal:olive_tree_sapling", max = 10}
}},
{"flo", 5, {"ethereal:blue_marble_tile"}, 2},
{"dro", {"ethereal:blue_marble", "ethereal:blue_marble_tile"}, 8},
{"dro", {"ethereal:etherium_ore"}, 5},
{"nod", "default:chest", 0, {
{name = "ethereal:fish_bluefin", max = 7},
{name = "ethereal:fish_blueram", max = 7},
{name = "ethereal:fish_catfish", max = 7},
{name = "ethereal:fish_clownfish", max = 7},
{name = "ethereal:fish_pike", max = 7},
{name = "ethereal:fish_flathead", max = 7},
{name = "ethereal:fish_plaice", max = 7},
{name = "ethereal:fish_pufferfish", max = 5},
{name = "ethereal:fish_salmon", max = 7},
{name = "ethereal:fish_cichlid", max = 7},
{name = "ethereal:fish_trout", max =7},
{name = "ethereal:fish_tilapia", max = 4},
{name = "ethereal:fish_parrot", max = 4},
{name = "ethereal:fishing_rod", max = 1},
{name = "ethereal:worm", max = 10}
}},
{"nod", "default:chest", 0, {
{name = "ethereal:fish_carp", max = 4},
{name = "ethereal:fish_coy", max = 4},
{name = "ethereal:fish_flounder", max = 4},
{name = "ethereal:fish_jellyfish", max = 4},
{name = "ethereal:fish_mackerel", max = 4},
{name = "ethereal:fish_redsnapper", max = 4},
{name = "ethereal:fish_tuna", max = 4},
{name = "ethereal:fish_squid", max = 4},
{name = "ethereal:fish_shrimp", max = 4},
{name = "ethereal:fish_angler", max = 4},
{name = "ethereal:fish_piranha", max = 4},
{name = "ethereal:fish_trevally", max = 4},
{name = "ethereal:fishing_rod", max = 1},
{name = "ethereal:worm", max = 10}
}},
{"dro", {"ethereal:lemon"}, 9},
{"dro", {"ethereal:fish_seahorse", "ethereal:fish_seahorse_green",
"ethereal:fish_seahorse_pink", "ethereal:fish_seahorse_blue",
"ethereal:fish_seahorse_yellow"}, 1},
{"dro", {"ethereal:jellyfish_salad"}, 2},
{"dro", {"ethereal:calamari_cooked", "ethereal:calamari_raw"}, 4},
{"dro", {"ethereal:fish_shrimp", "ethereal:fish_shrimp_cooked"}, 4},
{"dro", {"ethereal:teriyaki_chicken", "ethereal:teriyaki_beef"}, 4},
{"dro", {"ethereal:sushi_tamago", "ethereal:sushi_nigiri",
"ethereal:sushi_kappamaki", "ethereal:fugu", "ethereal:sashimi"}, 4},
{"flo", 3, {"ethereal:gray_moss", "ethereal:fiery_moss", "ethereal:green_moss",
"ethereal:crystal_moss", "ethereal:mushroom_moss"}, 1},
{"tro", "ethereal:candle_red", "tnt_blast", true},
{"nod", "ethereal:candle_orange", 0},
{"nod", "ethereal:candle", 0},
{"dro", {"ethereal:fish_tetra", "ethereal:fish_shrimp", "ethereal:worm"}, 1},
{"nod", "default:chest", 0, {
{name = "ethereal:fish_n_chips", max = 1},
{name = "ethereal:calamari_cooked", max = 1},
{name = "ethereal:jellyfish_salad", max = 1},
{name = "ethereal:garlic_shrimp", max = 1},
{name = "ethereal:fish_shrimp_cooked", max = 1},
{name = "ethereal:mushroom_soup", max = 1},
{name = "ethereal:teriyaki_beed", max = 1},
{name = "ethereal:teriyaki_chicken", max = 1},
{name = "ethereal:fugu", max = 1},
{name = "ethereal:sushu_tamago", max = 1},
{name = "ethereal:sushi_nigiri", max = 1},
{name = "ethereal:sushi_kappamaki", max = 1},
{name = "ethereal:hearty_stew", max = 1},
}}
})
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

4
mods/ethereal/mod.conf Normal file
View File

@ -0,0 +1,4 @@
name = ethereal
depends = default, flowers, farming
optional_depends = stairs, doors, bakedclay, moreblocks, lucky_block, toolranks
description = BIOME mod mapgen to add many new biomes to the world

128
mods/ethereal/onion.lua Normal file
View File

@ -0,0 +1,128 @@
local S = ethereal.intllib
-- wild onion
minetest.register_craftitem("ethereal:wild_onion_plant", {
description = S("Wild Onion"),
inventory_image = "ethereal_wild_onion.png",
wield_image = "ethereal_wild_onion.png",
groups = {food_onion = 1, flammable = 2},
on_use = minetest.item_eat(2),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "ethereal:wild_onion_1")
end
})
-- Define Onion growth stages
local 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(def))
--stage 2
def.tiles = {"ethereal_wild_onion_2.png"}
minetest.register_node("ethereal:onion_2", table.copy(def))
--stage 3
def.tiles = {"ethereal_wild_onion_3.png"}
minetest.register_node("ethereal:onion_3", table.copy(def))
--stage 4
def.tiles = {"ethereal_wild_onion_4.png"}
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(def))
--stage 5
def.tiles = {"ethereal_wild_onion_5.png"}
def.groups.growing = nil
def.selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5}
}
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(def))
-- growing routine if farming redo isn't present
if farming and farming.mod and farming.mod == "redo" then
-- add to registered_plants
farming.registered_plants["ethereal:wild_onion_plant"] = {
crop = "ethereal:onion",
seed = "ethereal:wild_onion_plant",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 5
}
else
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 = 11,
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

87
mods/ethereal/ores.lua Normal file
View File

@ -0,0 +1,87 @@
-- Baked Clay (mesa biome is between 1 and 71)
local add_stratum = function(y_min, y_max, node)
minetest.register_ore({
ore_type = "stratum",
ore = node,
wherein = {"bakedclay:orange"},
clust_scarcity = 1,
y_max = y_max,
y_min = y_min,
biomes = {"mesa"}
})
end
add_stratum(5, 10, "bakedclay:red")
add_stratum(15, 20, "bakedclay:grey")
add_stratum(25, 30, "bakedclay:red")
add_stratum(35, 40, "bakedclay:grey")
add_stratum(45, 50, "bakedclay:red")
add_stratum(55, 60, "bakedclay:grey")
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)
-- Etherium
minetest.register_ore({
ore_type = "scatter",
ore = "ethereal:etherium_ore",
wherein = "default:desert_stone",
clust_scarcity = 10 * 10 * 10,
clust_num_ores = 1,
clust_size = 1,
y_min = 5,
y_max = 40,
biomes = {"caves"}
})
-- Etherium in floatlands
minetest.register_ore({
ore_type = "scatter",
ore = "ethereal:stone_with_etherium_ore",
wherein = "default:stone",
clust_scarcity = 9 * 9 * 9,
clust_num_ores = 6,
clust_size = 2,
y_min = 1025,
y_max = 31000
})

337
mods/ethereal/plantlife.lua Normal file
View File

@ -0,0 +1,337 @@
local S = ethereal.intllib
-- Spore Grass
minetest.register_node("ethereal:spore_grass", {
description = S("Spore Grass"),
drawtype = "plantlike",
tiles = {"ethereal_spore_grass.png"},
inventory_image = "ethereal_spore_grass.png",
wield_image = "ethereal_spore_grass.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}
}
})
-- 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 = "ethereal_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 = {"ethereal_vine.png"},
inventory_image = "ethereal_vine.png",
wield_image = "ethereal_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 = {"ethereal_lightstring.png"},
inventory_image = "ethereal_lightstring.png",
wield_image = "ethereal_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 = {"ethereal_fern.png"},
inventory_image = "ethereal_fern.png",
wield_image = "ethereal_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 = "ethereal_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}
}
})
-- lilac
minetest.register_node("ethereal:lilac", {
description = S("Lilac"),
drawtype = "plantlike",
visual_scale = 1.9,
tiles = {"ethereal_lilac.png"},
inventory_image = "ethereal_lilac.png",
wield_image = "ethereal_lilac.png",
paramtype = "light",
sunlight_propagates = true,
waving = 1,
walkable = false,
buildable_to = true,
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}
}
})
minetest.register_craft({
output = "dye:magenta 2",
recipe = {{"ethereal:lilac"}}
})
-- 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({
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:spore_grass")
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)
local add_shroom = function(name, desc, ad)
minetest.register_node("ethereal:illumishroom" .. ad, {
description = S(desc .. " Illumishroom"),
drawtype = "plantlike",
tiles = {"ethereal_illumishroom_" .. name .. ".png"},
inventory_image = "ethereal_illumishroom_" .. name .. ".png",
wield_image = "ethereal_illumishroom_" .. name .. ".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}
}
})
end
add_shroom("red", "Red", "")
add_shroom("green", "Green", "2")
add_shroom("cyan", "Cyan", "3")

196
mods/ethereal/plantpack.lua Normal file
View File

@ -0,0 +1,196 @@
--= 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", "deciduous_forest", "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_dirt", "default:dirt_with_grass",
"ethereal:grove_dirt", "ethereal:bamboo_dirt"
},
sidelen = 16,
fill_ratio = 0.005,
biomes = {"prairie", "deciduous_forest", "grassytwo", "bamboo"},
decoration = {
"xanadu:flower_jacobsladder", "xanadu:flower_thistle",
"xanadu:flower_wildcarrot"
}
})
minetest.register_decoration({
deco_type = "simple",
place_on = {
"ethereal:prairie_dirt", "default:dirt_with_grass",
"ethereal:grove_dirt"
},
sidelen = 16,
fill_ratio = 0.005,
biomes = {"prairie", "deciduous_forest", "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_dirt", "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", "deciduous_forest", "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 = {"coniferous_forest", "taiga", "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", "deciduous_forest_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", "deciduous_forest", "grassytwo", "jumble", "coniferous_forest",
"taiga", "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 = {"grassland"},
decoration = {"xanadu:poppy"}
})

309
mods/ethereal/sapling.lua Normal file
View File

@ -0,0 +1,309 @@
local S = ethereal.intllib
-- Basandra Bush Sapling
minetest.register_node("ethereal:basandra_bush_sapling", {
description = S("Basandra Bush Sapling"),
drawtype = "plantlike",
tiles = {"ethereal_basandra_bush_sapling.png"},
inventory_image = "ethereal_basandra_bush_sapling.png",
wield_image = "ethereal_basandra_bush_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, attached_node = 1, ethereal_sapling = 1,
sapling = 1},
sounds = default.node_sound_leaves_defaults(),
grown_height = 2
})
-- Bamboo Sprout
minetest.register_node("ethereal:bamboo_sprout", {
description = S("Bamboo Sprout"),
drawtype = "plantlike",
tiles = {"ethereal_bamboo_sprout.png"},
inventory_image = "ethereal_bamboo_sprout.png",
wield_image = "ethereal_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", "ethereal_willow_sapling", 14)
register_sapling("ethereal:yellow_tree", "Healing", "ethereal_yellow_tree_sapling", 19)
register_sapling("ethereal:big_tree", "Big", "ethereal_big_tree_sapling", 7)
register_sapling("ethereal:banana_tree", "Banana", "ethereal_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:giant_redwood", "Giant Redwood",
"ethereal_giant_redwood_sapling", 33)
register_sapling("ethereal:redwood", "Redwood", "ethereal_redwood_sapling", 21)
register_sapling("ethereal:orange_tree", "Orange", "ethereal_orange_tree_sapling", 6)
register_sapling("ethereal:birch", "Birch", "moretrees_birch_sapling", 7)
register_sapling("ethereal:sakura", "Sakura", "ethereal_sakura_sapling", 10)
register_sapling("ethereal:lemon_tree", "Lemon", "ethereal_lemon_tree_sapling", 7)
register_sapling("ethereal:olive_tree", "Olive", "ethereal_olive_tree_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_basandra_bush(pos)
add_tree(pos, 1, 0, 1, ethereal.basandrabush)
end
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)
if math.random(3) == 1 and minetest.find_node_near(pos, 1, {"farming:soil_wet"}) then
add_tree(pos, 3, 0, 3, ethereal.bananatree,
{{"ethereal:banana", "ethereal:banana_bunch"}})
else
add_tree(pos, 3, 0, 3, ethereal.bananatree)
end
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, 4, 0, 4, ethereal.redwood_small_tree)
end
function ethereal.grow_giant_redwood_tree(pos)
add_tree(pos, 7, 0, 7, ethereal.redwood_tree)
end
function ethereal.grow_orange_tree(pos)
add_tree(pos, 2, 0, 2, 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
function ethereal.grow_lemon_tree(pos)
add_tree(pos, 2, 0, 2, ethereal.lemontree)
end
function ethereal.grow_olive_tree(pos)
add_tree(pos, 3, 0, 3, ethereal.olivetree)
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
ethereal.grow_sapling = function(pos, node)
local light_level = minetest.get_node_light(pos) or 0
if light_level < 13 then
return
end
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:basandra_bush_sapling"
and under == "ethereal:fiery_dirt" then
ethereal.grow_basandra_bush(pos)
elseif 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:giant_redwood_sapling"
and under == "default:dirt_with_dry_grass" then
ethereal.grow_giant_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)
elseif node.name == "ethereal:olive_tree_sapling"
and under == "ethereal:grove_dirt" then
ethereal.grow_olive_tree(pos)
elseif node.name == "ethereal:lemon_tree_sapling"
and under == "ethereal:grove_dirt" then
ethereal.grow_lemon_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)
ethereal.grow_sapling(pos, node)
end
})
-- 2x redwood saplings make 1x giant redwood sapling
minetest.register_craft({
output = "ethereal:giant_redwood_sapling",
recipe = {{"ethereal:redwood_sapling", "ethereal:redwood_sapling"}}
})

View File

@ -0,0 +1,86 @@
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},
{ypos = 3, prob = 127}
},
data = {
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
l,L,l,
_,L,_,
_,_,_,
_,B,_,
_,B,_,
_,B,_,
_,B,_,
_,B,_,
_,B,_,
_,B,_,
_,B,_,
_,B,_,
_,B,_,
_,B,_,
_,B,_,
_,B,_,
_,B,_,
_,B,_,
l,B,l,
_,L,_,
_,l,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
_,_,_,
l,L,l,
_,L,_,
_,_,_,
}
}
if ethereal.papyruswalk == true then
minetest.override_item("default:papyrus", {
walkable = true,
sunlight_propagates = true
})
end

View File

@ -0,0 +1,85 @@
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},
{ypos = 1, prob = 127},
{ypos = 2, prob = 127}
},
data = {
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,l,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,l,_,_,_,
_,_,_,L,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,b,_,_,_,
_,_,_,B,_,_,_,
_,_,_,L,_,_,_,
_,_,_,_,_,_,_,
_,_,_,T,_,_,_,
_,_,_,T,_,_,_,
_,_,_,T,_,_,_,
_,_,_,T,_,_,_,
_,_,b,T,b,_,_,
_,_,B,T,B,_,_,
_,L,L,L,L,L,_,
l,l,_,L,_,l,l,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,b,_,_,_,
_,_,_,B,_,_,_,
_,_,_,L,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,L,_,_,_,
_,_,_,l,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,l,_,_,_,
}
}

View File

@ -0,0 +1,23 @@
local _ = {name = "air", param1 = 0}
local S = {name = "ethereal:basandra_bush_stem", param1 = 255, force_place = true}
local B = {name = "ethereal:basandra_bush_leaves", param1 = 255}
local b = {name = "ethereal:basandra_bush_leaves", param1 = 100}
ethereal.basandrabush = {
size = {x = 3, y = 2, z = 3},
data = {
b,B,b,
b,b,b,
B,S,B,
b,B,b,
b,B,b,
b,b,b,
}
}

View File

@ -0,0 +1,100 @@
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,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
}
}

View File

@ -0,0 +1,59 @@
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,
_,_,_,_,_,
_,_,_,_,_,
}
}

View File

@ -0,0 +1,38 @@
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,
_,_,_,_,_,
_,_,_,_,_,
}
}

Binary file not shown.

View File

@ -0,0 +1,184 @@
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,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
}
}

View File

@ -0,0 +1,62 @@
local _ = {name = "air", prob = 0}
local S = {name = "default:snowblock", prob = 255}
local P = {name = "default:pine_bush_stem", prob = 50}
local C = {name = "ethereal:coconut", prob = 50}
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,P,_,_,_,C,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,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
}
}

View File

@ -0,0 +1,65 @@
local _ = {name = "air", param1 = 0}
local L = {name = "ethereal:lemon_leaves", param1 = 255}
local l = {name = "ethereal:lemon_leaves", param1 = 127}
local T = {name = "default:tree", param1 = 255}
local e = {name = "ethereal:lemon", param1 = 100}
ethereal.lemontree = {
size = {x = 5, y = 8, z = 5},
yslice_prob = {
{ypos = 0, prob = 127},
{ypos = 3, prob = 127}
},
data = {
_,_,_,_,_,
_,_,_,_,_,
_,_,_,_,_,
_,_,e,_,_,
_,L,L,L,e,
e,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,_,
_,_,T,_,_,
_,_,T,_,_,
_,_,T,_,_,
l,e,T,l,l,
L,L,T,L,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,L,l,
_,l,L,L,_,
_,_,_,_,_,
_,_,_,_,_,
_,_,_,_,_,
_,_,l,_,_,
e,L,L,l,_,
_,l,L,L,_,
_,L,L,L,e,
_,_,l,_,_,
}
}

View File

@ -0,0 +1,116 @@
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,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
}
}

View File

@ -0,0 +1,84 @@
local _ = {name = "air", param1 = 0}
local L = {name = "ethereal:olive_leaves", param1 = 255}
local T = {name = "ethereal:olive_trunk", param1 = 255}
local o = {name = "ethereal:olive", param1 = 150}
ethereal.olivetree = {
size = {x = 8, y = 9, z = 7},
data = {
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,L,_,_,_,_,L,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,L,_,L,L,o,_,
L,T,L,L,o,L,T,L,
_,L,_,_,_,_,L,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,T,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,L,T,L,_,T,L,_,
_,L,L,_,L,L,L,_,
_,_,_,L,L,_,_,_,
_,_,o,L,L,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,T,T,_,_,_,
_,_,_,T,T,_,_,_,
_,_,_,T,T,_,_,_,
_,_,L,T,T,_,_,_,
_,o,L,T,T,T,L,_,
_,L,L,T,T,L,o,_,
_,_,L,T,T,L,_,_,
_,_,L,T,T,L,_,_,
_,_,_,L,L,_,_,_,
_,_,_,_,T,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,L,_,_,_,
_,_,L,T,L,L,_,_,
_,_,L,L,T,L,_,_,
_,_,_,L,L,L,_,_,
_,_,L,L,L,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,o,L,_,_,_,_,
_,L,T,L,L,o,_,_,
_,_,L,_,L,T,L,_,
_,_,o,_,_,L,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
_,_,L,_,_,_,_,_,
_,_,_,_,_,L,_,_,
_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,
}
}

View File

@ -0,0 +1,54 @@
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 = 200}
ethereal.orangetree = {
size = {x = 5, y = 6, z = 5},
yslice_prob = {
{ypos = 0, prob = 127}
},
data = {
_,_,_,_,_,
_,_,_,_,_,
_,_,_,_,_,
_,_,L,_,_,
_,_,L,_,_,
_,_,_,_,_,
_,_,_,_,_,
_,_,_,_,_,
_,_,_,_,_,
_,o,L,o,_,
_,L,L,L,_,
_,_,L,_,_,
_,_,T,_,_,
_,_,T,_,_,
_,_,T,_,_,
L,L,T,L,L,
L,T,L,T,L,
_,L,L,L,_,
_,_,_,_,_,
_,_,_,_,_,
_,_,_,_,_,
_,o,L,o,_,
_,L,L,L,_,
_,_,L,_,_,
_,_,_,_,_,
_,_,_,_,_,
_,_,_,_,_,
_,_,L,_,_,
_,_,L,_,_,
_,_,_,_,_,
}
}

View File

@ -0,0 +1,110 @@
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,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
}
}

View File

@ -0,0 +1,81 @@
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,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
}
}

View File

@ -0,0 +1,219 @@
local _ = {name = "air", prob = 0}
local T = {name = "ethereal:redwood_trunk", prob = 255}
local L = {name = "ethereal:redwood_leaves", prob = 255}
ethereal.redwood_small_tree = {
size = {x = 9, y = 21, z = 9},
yslice_prob = {
{ypos = 0, prob = 127},
{ypos = 1, prob = 127},
{ypos = 2, prob = 127},
{ypos = 3, prob = 127},
{ypos = 4, prob = 127}
},
data = {
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,L,L,T,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,L,_,_,_,
_,_,L,L,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,L,L,L,L,_,_,
_,_,_,L,L,L,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,T,T,_,_,
_,_,_,_,_,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,_,_,L,L,
_,_,_,_,T,_,_,_,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,_,L,T,
_,_,_,T,T,T,_,_,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,_,_,_,L,
_,T,T,T,T,_,_,_,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,L,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,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,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,L,L,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
}
}

View File

@ -0,0 +1,533 @@
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,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
}
}

View File

@ -0,0 +1,96 @@
local T = {name = "ethereal:sakura_trunk", param1 = 255}
local P = {name = "ethereal:sakura_leaves", param1 = 255}
local W = {name = "ethereal:sakura_leaves2", param1 = 255}
local _ = {name = "air", param1 = 255}
ethereal.sakura_tree = {
size = {x=10, y=10, z=7},
yslice_prob = {
{ypos = 0, prob = 127},
{ypos = 3, prob = 127},
{ypos = 8, prob = 127}
},
data = {
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,P,P,_,_,_,_,
_,_,_,P,P,P,P,_,_,_,
_,_,_,P,P,P,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,P,P,P,P,_,_,_,
_,_,_,P,P,P,P,_,_,_,
_,_,P,P,T,P,P,P,_,_,
_,_,P,P,P,P,P,P,_,_,
_,_,P,_,P,P,P,P,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,P,P,P,_,_,_,_,
_,_,P,P,P,P,P,P,_,_,
_,_,P,P,T,P,P,P,P,_,
_,P,P,P,P,P,P,P,P,P,
_,P,P,P,P,P,P,P,P,P,
_,P,P,P,P,P,P,P,P,_,
_,_,P,P,P,P,P,P,_,_,
_,_,_,_,T,_,_,_,_,_,
_,_,_,_,T,_,_,_,_,_,
_,_,_,_,T,_,_,_,_,_,
_,_,P,P,T,T,P,_,_,_,
_,P,P,T,T,T,T,P,P,_,
_,P,P,T,_,T,P,T,P,_,
P,P,P,T,P,T,P,P,T,P,
P,P,T,P,P,P,P,P,T,P,
P,P,T,P,P,P,P,T,P,P,
_,P,P,P,P,P,P,P,P,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,P,_,P,_,_,_,_,
_,_,P,P,T,P,P,P,_,_,
_,_,P,P,_,P,P,P,P,_,
_,P,P,P,P,P,P,P,P,P,
_,P,P,P,P,P,P,P,P,P,
_,P,P,P,P,P,P,P,P,_,
_,_,P,P,P,P,P,P,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,P,_,_,_,_,_,
_,_,_,P,P,P,_,_,_,_,
_,_,_,P,T,P,_,_,_,_,
_,_,P,P,T,P,P,P,P,_,
_,_,P,P,P,P,P,P,P,_,
_,_,P,P,P,P,_,P,P,_,
_,_,_,_,P,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
_,_,_,_,P,_,_,_,_,_,
_,_,_,P,P,P,_,_,_,_,
_,_,_,P,P,P,_,_,_,_,
_,_,_,P,P,P,_,_,_,_,
_,_,_,_,P,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,
}
}

View File

@ -0,0 +1,77 @@
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,_,_,
_,_,_,_,_,_,_,
_,_,_,_,_,_,_,
}
}

View File

@ -0,0 +1,97 @@
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,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
}
}

View File

@ -0,0 +1,36 @@
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,_,
_,_,_,_,_,_,
}
}

View File

@ -0,0 +1,28 @@
-- 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
})
if minetest.registered_nodes["flowers:waterlily_waving"] then
minetest.override_item("flowers:waterlily_waving", {
walkable = true
})
end
end

View File

@ -0,0 +1,199 @@
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,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,
}
}

View File

@ -0,0 +1,201 @@
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,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,
}
}

337
mods/ethereal/schems.lua Normal file
View File

@ -0,0 +1,337 @@
local path = minetest.get_modpath("ethereal") .. "/schematics/"
local dpath = minetest.get_modpath("default") .. "/schematics/"
-- load schematic tables
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 .. "redwood_small_tree.lua")
dofile(path .. "vinetree.lua")
dofile(path .. "sakura.lua")
dofile(path .. "igloo.lua")
dofile(path .. "lemon_tree.lua")
dofile(path .. "olive_tree.lua")
dofile(path .. "basandra_bush.lua")
-- helper function
local add_schem = function(a, b, c, d, e, f, g, h, i, j, k)
-- if not 1 then biome disabled, don't add
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",
replacements = h,
spawn_by = i,
num_spawn_by = j,
rotation = k
})
end
-- igloo
add_schem("default:snowblock", 0.0005, {"glacier"}, 3, 50,
ethereal.igloo, ethereal.glacier, nil, "default:snowblock", 8, "random")
-- sakura tree
add_schem({"ethereal:bamboo_dirt"}, 0.001, {"sakura"}, 7, 100,
ethereal.sakura_tree, ethereal.sakura, nil,
"ethereal:bamboo_dirt", 6)
-- redwood tree
add_schem({"default:dirt_with_dry_grass"}, 0.0025, {"mesa"}, 1, 100,
ethereal.redwood_tree, ethereal.mesa, nil,
"default:dirt_with_dry_grass", 8)
-- 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, {"taiga"}, 120, 140,
ethereal.yellowtree, ethereal.alpine, nil, "default:dirt_with_snow", 8)
-- crystal frost tree
add_schem({"ethereal:crystal_dirt"}, 0.01, {"frost", "frost_floatland"}, 1, 1750,
ethereal.frosttrees, ethereal.frost, nil,
"ethereal:crystal_dirt", 8)
-- giant mushroom
add_schem("ethereal:mushroom_dirt", 0.02, {"mushroom"}, 1, 100,
ethereal.mushroomone, ethereal.mushroom, nil,
"ethereal:mushroom_dirt", 8)
-- small lava crater
add_schem("ethereal:fiery_dirt", 0.01, {"fiery"}, 1, 100,
ethereal.volcanom, ethereal.fiery, nil, "ethereal:fiery_dirt", 8)
-- large lava crater
add_schem("ethereal:fiery_dirt", 0.003, {"fiery"}, 1, 100,
ethereal.volcanol, ethereal.fiery, nil, "ethereal:fiery_dirt", 8, "random")
-- basandra bush
add_schem("ethereal:fiery_dirt", 0.03, {"fiery"}, 1, 100,
ethereal.basandrabush, ethereal.fiery)
-- 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, nil,
"ethereal:gray_dirt", 6)
-- default large pine tree for lower elevation
add_schem({"ethereal:cold_dirt", "default:dirt_with_coniferous_litter"},
0.025, {"coniferous_forest"}, 10, 40, ethereal.pinetree, ethereal.snowy)
-- small pine for higher elevation
add_schem({"default:dirt_with_snow"}, 0.025, {"taiga"}, 40, 140,
ethereal.pinetree, ethereal.alpine)
-- default apple tree
add_schem({"default:dirt_with_grass"}, 0.025, {"jumble", "deciduous_forest"}, 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, nil,
"default:dirt_with_grass", 8)
-- default 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:dry_dirt_with_dry_grass",
"default:dirt_with_dry_grass"}, 0.004, {"savanna"}, 1, 100,
dpath .. "acacia_tree.mts", ethereal.savanna)
-- palm tree
add_schem("default:sand", 0.0025, {"desert_ocean", "plains_ocean", "sandclay",
"sandstone_ocean", "mesa_ocean", "grove_ocean", "deciduous_forest_ocean"}, 1, 1,
ethereal.palmtree, 1)
-- 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)
-- lemon tree
add_schem({"ethereal:grove_dirt"}, 0.002, {"mediterranean"}, 5, 50,
ethereal.lemontree, ethereal.mediterranean)
-- olive tree
add_schem({"ethereal:grove_dirt"}, 0.002, {"mediterranean"}, 5, 35,
ethereal.olivetree, ethereal.mediterranean)
-- default large cactus
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",
rotation = "random",
})
end
-- default 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 = {"deciduous_forest", "grassytwo", "jumble"},
y_min = 1,
y_max = 31000,
schematic = dpath .. "bush.mts",
flags = "place_center_x, place_center_z"
})
-- default acacia bush
minetest.register_decoration({
deco_type = "schematic",
place_on = {
"default:dirt_with_dry_grass", "default:dry_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 = {"savanna", "mesa"},
y_min = 1,
y_max = 31000,
schematic = dpath .. "acacia_bush.mts",
flags = "place_center_x, place_center_z"
})
-- default pine bush
if minetest.registered_nodes["default:pine_bush"] then
minetest.register_decoration({
name = "default:pine_bush",
deco_type = "schematic",
place_on = {"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 = {"taiga"},
y_max = 31000,
y_min = 4,
schematic = dpath .. "pine_bush.mts",
flags = "place_center_x, place_center_z"
})
end
-- default blueberry bush
if minetest.registered_nodes["default:blueberry_bush_leaves"] then
minetest.register_decoration({
name = "default:blueberry_bush",
deco_type = "schematic",
place_on = {
"default:dirt_with_coniferous_litter", "default:dirt_with_snow"},
sidelen = 16,
noise_params = {
offset = -0.004,
scale = 0.01,
spread = {x = 100, y = 100, z = 100},
seed = 697,
octaves = 3,
persist = 0.7,
},
biomes = {"coniferous_forest", "taiga"},
y_max = 31000,
y_min = 1,
place_offset_y = 1,
schematic = dpath .. "blueberry_bush.mts",
flags = "place_center_x, place_center_z"
})
end
-- place waterlily in beach areas
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 = {"desert_ocean", "plains_ocean", "sandclay",
"mesa_ocean", "grove_ocean", "deciduous_forest_ocean", "swamp_ocean"},
y_min = 0,
y_max = 0,
schematic = ethereal.waterlily,
rotation = "random"
})
-- coral reef
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 = path .. "corals.mts",
flags = "place_center_x, place_center_z",
rotation = "random"
})
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

298
mods/ethereal/sealife.lua Normal file
View File

@ -0,0 +1,298 @@
local S = ethereal.intllib
-- Seaweed
minetest.register_node("ethereal:seaweed", {
description = S("Seaweed"),
drawtype = "plantlike",
tiles = {"ethereal_seaweed.png"},
inventory_image = "ethereal_seaweed.png",
wield_image = "ethereal_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 Glow Coral"),
drawtype = "plantlike",
tiles = {"ethereal_coral_blue.png"},
inventory_image = "ethereal_coral_blue.png",
wield_image = "ethereal_coral_blue.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( {
output = "dye:cyan 3",
recipe = {{"ethereal:coral2"}}
})
-- Orange Coral
minetest.register_node("ethereal:coral3", {
description = S("Orange Glow Coral"),
drawtype = "plantlike",
tiles = {"ethereal_coral_orange.png"},
inventory_image = "ethereal_coral_orange.png",
wield_image = "ethereal_coral_orange.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( {
output = "dye:orange 3",
recipe = {{"ethereal:coral3"}}
})
-- Pink Coral
minetest.register_node("ethereal:coral4", {
description = S("Pink Glow Coral"),
drawtype = "plantlike",
tiles = {"ethereal_coral_pink.png"},
inventory_image = "ethereal_coral_pink.png",
wield_image = "ethereal_coral_pink.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( {
output = "dye:pink 3",
recipe = {{"ethereal:coral4"}}
})
-- Green Coral
minetest.register_node("ethereal:coral5", {
description = S("Green Glow Coral"),
drawtype = "plantlike",
tiles = {"ethereal_coral_green.png"},
inventory_image = "ethereal_coral_green.png",
wield_image = "ethereal_coral_green.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( {
output = "dye:green 3",
recipe = {{"ethereal:coral5"}}
})
-- Undersea Sand (used for growing seaweed and corals)
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(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
-- sponge nodes
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_wet", {
description = S("Wet sponge"),
tiles = {"ethereal_sponge_wet.png"},
groups = {crumbly = 3},
sounds = default.node_sound_sand_defaults()
})
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
})
-- 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
})

View File

@ -0,0 +1,44 @@
--[[
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
ethereal.flight = true -- enable flight potion
-- Set following to 1 to enable biome or false 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.savanna = 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.sakura = 1 -- Enable sakura biomes with trees
ethereal.mediterranean = 1 -- Enable Mediterranean biome

View File

@ -0,0 +1,43 @@
ethereal.leaftype (0 for 2D plantlike leaves or 1 for 3D) int 0
ethereal.leafwalk (Walkable leaves) bool false
ethereal.cavedirt (Caves cut through dirt) bool true
ethereal.torchdrop (Torches drop when in water) bool true
ethereal.papyruswalk (Papyrus and Bamboo are walkable) bool true
ethereal.lilywalk (Lilypads are walkable) bool true
ethereal.xcraft (Enable X-Craft cheats) bool true
ethereal.flight (Enable Flight Potion) bool true
ethereal.glacier (Glacier biome, 1 = Enable / 0 = Disable) int 1
ethereal.bambo (Bamboo biome, 1 = Enable / 0 = Disable) int 1
ethereal.mesa (Mesa biome, 1 = Enable / 0 = Disable) int 1
ethereal.alpine (Alpine biome, 1 = Enable / 0 = Disable) int 1
ethereal.healing (Healing Tree biome, 1 = Enable / 0 = Disable) int 1
ethereal.snowy (Pine Tree biome, 1 = Enable / 0 = Disable) int 1
ethereal.frost (Blue Frost biome, 1 = Enable / 0 = Disable) int 1
ethereal.grassy (Grassy biome, 1 = Enable / 0 = Disable) int 1
ethereal.caves (Desertstone biome, 1 = Enable / 0 = Disable) int 1
ethereal.grayness (Grey Willow biome, 1 = Enable / 0 = Disable) int 1
ethereal.grassytwo (GrassyTwo biome, 1 = Enable / 0 = Disable) int 1
ethereal.prairie (Prairie biome, 1 = Enable / 0 = Disable) int 1
ethereal.jumble (Jumble biome, 1 = Enable / 0 = Disable) int 1
ethereal.junglee (Jungle biome, 1 = Enable / 0 = Disable) int 1
ethereal.desert (Desert biome, 1 = Enable / 0 = Disable) int 1
ethereal.grove (Banana Grove biome, 1 = Enable / 0 = Disable) int 1
ethereal.mushroom (Mushroom biome, 1 = Enable / 0 = Disable) int 1
ethereal.sandstone (Sandstone biome, 1 = Enable / 0 = Disable) int 1
ethereal.quicksand (Quicksand Bank biome, 1 = Enable / 0 = Disable) int 1
ethereal.plains (Scorched Plains biome, 1 = Enable / 0 = Disable) int 1
ethereal.savanna (Savanna biome, 1 = Enable / 0 = Disable) int 1
ethereal.fiery (Feiry Lava biome, 1 = Enable / 0 = Disable) int 1
ethereal.sandclay (Sandy Clay biome, 1 = Enable / 0 = Disable) int 1
ethereal.swamp (Swamp biome, 1 = Enable / 0 = Disable) int 1
ethereal.sealife (Coral and Seaweed biome, 1 = Enable / 0 = Disable) int 1
ethereal.reefs (MT5 Coral biome, 1 = Enable / 0 = Disable) int 1
ethereal.sakura (Sakura biome, 1 = Enable / 0 = Disable) int 1
ethereal.tundra (Tundra biome, 1 = Enable / 0 = Disable) int 1
ethereal.mediterranean (Mediterranean biome, 1 = Enable / 0 = Disable) int 1
ethereal.flightpotion_duration (Flight Potion Duration) int 300
ethereal.clear_default_biomes (Clear Default Biomes and Decoration) bool true

Binary file not shown.

196
mods/ethereal/stairs.lua Normal file
View File

@ -0,0 +1,196 @@
-- language support
local S = ethereal.intllib
-- stair mods active
local stairs_mod = minetest.get_modpath("stairs")
local stairs_redo = stairs_mod and stairs.mod and stairs.mod == "redo"
local stairs_plus = minetest.global_exists("stairsplus")
-- stair selection function
local do_stair = function(description, name, node, groups, texture, sound)
if stairs_redo then
stairs.register_all(name, node, groups, texture, S(description), sound)
elseif stairs_plus then
local mod = "ethereal"
stairsplus:register_all(mod, name, node, {
description = S(description),
tiles = texture,
groups = groups,
sounds = sound
})
-- aliases need to be set for previous stairs to avoid unknown nodes
minetest.register_alias_force("stairs:stair_" .. name,
mod .. ":stair_" .. name)
minetest.register_alias_force("stairs:stair_outer_" .. name,
mod .. ":stair_" .. name .. "_outer")
minetest.register_alias_force("stairs:stair_inner_" .. name,
mod .. ":stair_" .. name .. "_inner")
minetest.register_alias_force("stairs:slab_" .. name,
mod .. ":slab_" .. name)
else
stairs.register_stair_and_slab(name, node, groups, texture,
S(description .. " Stair"), S(description .. " Slab"), sound)
end
end
-- Register Stairs (stair mod will be auto-selected)
do_stair(
"Blue Marble",
"blue_marble",
"ethereal:blue_marble",
{cracky = 1},
{"ethereal_blue_marble.png"},
default.node_sound_stone_defaults())
do_stair(
"Blue Marble Tile",
"blue_marble_tile",
"ethereal:blue_marble_tile",
{cracky = 1},
{"ethereal_blue_marble_tile.png"},
default.node_sound_stone_defaults())
do_stair(
"Crystal Block",
"crystal_block",
"ethereal:crystal_block",
{cracky = 1, level = 2, puts_out_fire = 1, cools_lava = 1},
{"ethereal_crystal_block.png"},
default.node_sound_glass_defaults())
do_stair(
"Ice Brick",
"icebrick",
"ethereal:icebrick",
{cracky = 3, puts_out_fire = 1, cools_lava = 1},
{"ethereal_brick_ice.png"},
default.node_sound_glass_defaults())
do_stair(
"Snow Brick",
"snowbrick",
"ethereal:snowbrick",
{crumbly = 3, puts_out_fire = 1, cools_lava = 1},
{"ethereal_brick_snow.png"},
default.node_sound_dirt_defaults({
footstep = {name = "default_snow_footstep", gain = 0.25},
dug = {name = "default_snow_footstep", gain = 0.75},
}))
do_stair(
"Dried Dirt",
"dry_dirt",
"ethereal:dry_dirt",
{crumbly = 3},
{"ethereal_dry_dirt.png"},
default.node_sound_dirt_defaults())
do_stair(
"Mushroom Trunk",
"mushroom_trunk",
"ethereal:mushroom_trunk",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
{"ethereal_mushroom_trunk.png"},
default.node_sound_wood_defaults())
do_stair(
"Mushroom Top",
"mushroom",
"ethereal:mushroom",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
{"ethereal_mushroom_block.png"},
default.node_sound_wood_defaults())
do_stair(
"Frost Wood",
"frost_wood",
"ethereal:frost_wood",
{choppy = 2, oddly_breakable_by_hand = 1, put_out_fire = 1},
{"ethereal_frost_wood.png"},
default.node_sound_wood_defaults())
do_stair(
"Healing Wood",
"yellow_wood",
"ethereal:yellow_wood",
{choppy = 2, oddly_breakable_by_hand = 1, put_out_fire = 1},
{"ethereal_yellow_wood.png"},
default.node_sound_wood_defaults())
do_stair(
"Palm Wood",
"palm_wood",
"ethereal:palm_wood",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"moretrees_palm_wood.png"},
default.node_sound_wood_defaults())
do_stair(
"Birch Wood",
"birch_wood",
"ethereal:birch_wood",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"moretrees_birch_wood.png"},
default.node_sound_wood_defaults())
do_stair(
"Banana Wood",
"banana_wood",
"ethereal:banana_wood",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"ethereal_banana_wood.png"},
default.node_sound_wood_defaults())
do_stair(
"Willow Wood",
"willow_wood",
"ethereal:willow_wood",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"ethereal_willow_wood.png"},
default.node_sound_wood_defaults())
do_stair(
"Redwood",
"redwood_wood",
"ethereal:redwood_wood",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"ethereal_redwood_wood.png"},
default.node_sound_wood_defaults())
do_stair(
"Bamboo",
"bamboo_wood",
"ethereal:bamboo_block",
{snappy = 3, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"ethereal_bamboo_floor.png"},
default.node_sound_wood_defaults())
do_stair(
"Sakura Wood",
"sakura_wood",
"ethereal:sakura_wood",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"ethereal_sakura_wood.png"},
default.node_sound_wood_defaults())
do_stair(
"Olive Wood",
"olive_wood",
"ethereal:olive_wood",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"ethereal_olive_wood.png"},
default.node_sound_wood_defaults())

View File

@ -0,0 +1,147 @@
local S = ethereal.intllib
-- Strawberry (can also be planted as seed)
minetest.register_craftitem("ethereal:strawberry", {
description = S("Strawberry"),
inventory_image = "ethereal_strawberry.png",
wield_image = "ethereal_strawberry.png",
groups = {food_strawberry = 1, food_berry = 1, flammable = 2},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "ethereal:strawberry_1")
end
})
-- Define Strawberry Bush growth stages
local def = {
drawtype = "plantlike",
tiles = {"ethereal_strawberry_1.png"},
paramtype = "light",
sunlight_propagates = true,
waving = 1,
walkable = false,
buildable_to = true,
drop = "",
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}
},
groups = {
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(def))
-- stage 2
def.tiles = {"ethereal_strawberry_2.png"}
minetest.register_node("ethereal:strawberry_2", table.copy(def))
-- stage 3
def.tiles = {"ethereal_strawberry_3.png"}
minetest.register_node("ethereal:strawberry_3", table.copy(def))
-- stage 4
def.tiles = {"ethereal_strawberry_4.png"}
minetest.register_node("ethereal:strawberry_4", table.copy(def))
-- stage 5
def.tiles = {"ethereal_strawberry_5.png"}
minetest.register_node("ethereal:strawberry_5", table.copy(def))
-- stage 6
def.tiles = {"ethereal_strawberry_6.png"}
def.drop = {
items = {
{items = {"ethereal:strawberry 1"}, rarity = 2},
{items = {"ethereal:strawberry 2"}, rarity = 3}
}
}
minetest.register_node("ethereal:strawberry_6", table.copy(def))
-- stage 7
def.tiles = {"ethereal_strawberry_7.png"}
def.drop = {
items = {
{items = {"ethereal:strawberry 1"}, rarity = 1},
{items = {"ethereal:strawberry 2"}, rarity = 3}
}
}
minetest.register_node("ethereal:strawberry_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"ethereal_strawberry_8.png"}
def.groups.growing = nil
def.selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5}
}
def.drop = {
items = {
{items = {"ethereal:strawberry 2"}, rarity = 1},
{items = {"ethereal:strawberry 3"}, rarity = 3}
}
}
minetest.register_node("ethereal:strawberry_8", table.copy(def))
-- growing routine if farming redo isn't present
if farming and farming.mod and farming.mod == "redo" then
-- add to registered_plants
farming.registered_plants["ethereal:strawberry"] = {
crop = "ethereal:strawberry",
seed = "ethereal:strawberry",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 8
}
else
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

View File

@ -0,0 +1,5 @@
based on default minetest wood textures
edited by alerikaisattera
license: CC-BY-SA 3.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

Some files were not shown because too many files have changed in this diff Show More