write something there
539
mods/ethereal/README.md
Normal file
|
@ -0,0 +1,539 @@
|
|||
minetest mod ethereal NG
|
||||
======================
|
||||
|
||||
## 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.
|
||||
|
||||

|
||||
|
||||
Forum Topic https://forum.minetest.net/viewtopic.php?f=11&t=14638
|
||||
|
||||
TODO:
|
||||
* document items and crafting
|
||||
|
||||
#### Lucky Blocks
|
||||
|
||||
It provides 66 new lucky blocks if the mod is detected.
|
||||
|
||||
## Technical info
|
||||
-----------------
|
||||
|
||||
#### 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
|
||||
* flowers
|
||||
* Farming Redo `farming`
|
||||
* Mobs Redo, `mobs`
|
||||
* Baked Clay `backedclay`
|
||||
* stairs
|
||||
|
||||
Also those more as optional:
|
||||
|
||||
* Lucky Block `lucky_block`
|
||||
* doors
|
||||
* moreblocks
|
||||
* toolranks
|
||||
|
||||
#### Settings and Biome List
|
||||
|
||||
| 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.leaf_particles | Enable falling lead particles | 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.
|
||||
|
||||
## 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.32
|
||||
- Add {eatable} groups to food items
|
||||
- Use underground decoration placement for illumishrooms to improve performance
|
||||
- Use worldalign textures for stairs
|
||||
- Tidy and tweak code to run on Minetest 5.2 and above
|
||||
- Replace 32px textures with 16px variants so items do not look mismatched
|
||||
- Add new biome layout so that specific biomes aren't too large or small
|
||||
- Add falling leaf particles with setting to disable
|
||||
- Add 'ethereal.old_biomes' setting to stay with older biome settings and not use
|
||||
the new layout for compatibility if wanted.
|
||||
- Update settings.
|
||||
- Candles use [multiply for colour.
|
||||
- Add desert stone spikes to caves biome, and stone spikes underneath.
|
||||
- Add pond schematic for generation in flat mesa areas, add new pond lucky blocks.
|
||||
|
||||
### 1.31
|
||||
- Fix fishing biome checks
|
||||
- Increase bamboo leaf decay radius
|
||||
- Switch ethereal coral to new plantlike_rooted drawtype (thanks Niklp)
|
||||
- Switch seaweed to new plantlike_rooted drawtype (thanks Niklp)
|
||||
- Added 'ethereal.logs' setting that adds decorative fallen tree logs to biomes
|
||||
- Added 'ethereal.sapling_protection_check' setting to use default sapling placement checks
|
||||
- Added alternative giant brown mushroom to higher elevations in mushroom biome
|
||||
- Added 'ethereal.wood_rotate' setting to enable/disable directional placement of wood in ethereal
|
||||
|
||||
### 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
|
||||
- Add 'ethereal.abundant_onions' setting (default: true)
|
||||
|
||||
#### 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
|
||||
|
||||
## 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.
|
||||
|
BIN
mods/ethereal/alt_textures/ethereal_bamboo_floor_32px.png
Normal file
After Width: | Height: | Size: 564 B |
BIN
mods/ethereal/alt_textures/ethereal_banana_bread_32px.png
Normal file
After Width: | Height: | Size: 385 B |
BIN
mods/ethereal/alt_textures/ethereal_banana_leaf_32px.png
Normal file
After Width: | Height: | Size: 421 B |
BIN
mods/ethereal/alt_textures/ethereal_banana_wood_alt.png
Normal file
After Width: | Height: | Size: 785 B |
BIN
mods/ethereal/alt_textures/ethereal_basandra_bush_wood_32px.png
Normal file
After Width: | Height: | Size: 824 B |
BIN
mods/ethereal/alt_textures/ethereal_blue_marble_32px.png
Normal file
After Width: | Height: | Size: 583 B |
BIN
mods/ethereal/alt_textures/ethereal_blue_marble_tile_32px.png
Normal file
After Width: | Height: | Size: 601 B |
BIN
mods/ethereal/alt_textures/ethereal_bowl_32px.png
Normal file
After Width: | Height: | Size: 314 B |
BIN
mods/ethereal/alt_textures/ethereal_crystal_spike_32px.png
Normal file
After Width: | Height: | Size: 380 B |
BIN
mods/ethereal/alt_textures/ethereal_frost_wood_alt.png
Normal file
After Width: | Height: | Size: 791 B |
BIN
mods/ethereal/alt_textures/ethereal_hearty_stew_32px.png
Normal file
After Width: | Height: | Size: 334 B |
BIN
mods/ethereal/alt_textures/ethereal_illumishroom_cyan_32px.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
mods/ethereal/alt_textures/ethereal_illumishroom_green_32px.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
mods/ethereal/alt_textures/ethereal_illumishroom_red_32px.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
mods/ethereal/alt_textures/ethereal_lemon_leaves_32px.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
mods/ethereal/alt_textures/ethereal_lemonade_32px.png
Normal file
After Width: | Height: | Size: 207 B |
After Width: | Height: | Size: 362 B |
BIN
mods/ethereal/alt_textures/ethereal_mushroom_sapling_32px.png
Normal file
After Width: | Height: | Size: 254 B |
BIN
mods/ethereal/alt_textures/ethereal_mushroom_soup_32px.png
Normal file
After Width: | Height: | Size: 312 B |
BIN
mods/ethereal/alt_textures/ethereal_olive_fruit_32px.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
mods/ethereal/alt_textures/ethereal_olive_leaves_32px.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
mods/ethereal/alt_textures/ethereal_olive_trunk_32px.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
mods/ethereal/alt_textures/ethereal_olive_trunk_top_32px.png
Normal file
After Width: | Height: | Size: 884 B |
BIN
mods/ethereal/alt_textures/ethereal_olive_wood_alt.png
Normal file
After Width: | Height: | Size: 848 B |
BIN
mods/ethereal/alt_textures/ethereal_orange_leaves_32px.png
Normal file
After Width: | Height: | Size: 622 B |
BIN
mods/ethereal/alt_textures/ethereal_redwood_trunk_32px.png
Normal file
After Width: | Height: | Size: 867 B |
BIN
mods/ethereal/alt_textures/ethereal_redwood_trunk_top_32px.png
Normal file
After Width: | Height: | Size: 822 B |
BIN
mods/ethereal/alt_textures/ethereal_redwood_wood_32px.png
Normal file
After Width: | Height: | Size: 654 B |
BIN
mods/ethereal/alt_textures/ethereal_redwood_wood_alt.png
Normal file
After Width: | Height: | Size: 767 B |
BIN
mods/ethereal/alt_textures/ethereal_sakura_trunk_32px.png
Normal file
After Width: | Height: | Size: 564 B |
BIN
mods/ethereal/alt_textures/ethereal_sakura_trunk_top_32px.png
Normal file
After Width: | Height: | Size: 592 B |
BIN
mods/ethereal/alt_textures/ethereal_sakura_wood_32px.png
Normal file
After Width: | Height: | Size: 529 B |
BIN
mods/ethereal/alt_textures/ethereal_sakura_wood_alt.png
Normal file
After Width: | Height: | Size: 781 B |
BIN
mods/ethereal/alt_textures/ethereal_strawberry_32px.png
Normal file
After Width: | Height: | Size: 382 B |
BIN
mods/ethereal/alt_textures/ethereal_teriyaki_beef_32px.png
Normal file
After Width: | Height: | Size: 339 B |
BIN
mods/ethereal/alt_textures/ethereal_wild_onion.png
Normal file
After Width: | Height: | Size: 174 B |
BIN
mods/ethereal/alt_textures/ethereal_wild_onion_1.png
Normal file
After Width: | Height: | Size: 105 B |
BIN
mods/ethereal/alt_textures/ethereal_wild_onion_2.png
Normal file
After Width: | Height: | Size: 108 B |
BIN
mods/ethereal/alt_textures/ethereal_wild_onion_3.png
Normal file
After Width: | Height: | Size: 106 B |
BIN
mods/ethereal/alt_textures/ethereal_wild_onion_4.png
Normal file
After Width: | Height: | Size: 109 B |
BIN
mods/ethereal/alt_textures/ethereal_wild_onion_5.png
Normal file
After Width: | Height: | Size: 130 B |
BIN
mods/ethereal/alt_textures/ethereal_willow_trunk_32px.png
Normal file
After Width: | Height: | Size: 656 B |
BIN
mods/ethereal/alt_textures/ethereal_willow_trunk_top_32px.png
Normal file
After Width: | Height: | Size: 492 B |
BIN
mods/ethereal/alt_textures/ethereal_willow_twig_64px.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
mods/ethereal/alt_textures/ethereal_willow_wood_32px.png
Normal file
After Width: | Height: | Size: 818 B |
BIN
mods/ethereal/alt_textures/ethereal_willow_wood_alt.png
Normal file
After Width: | Height: | Size: 798 B |
BIN
mods/ethereal/alt_textures/ethereal_worm_32px.png
Normal file
After Width: | Height: | Size: 164 B |
BIN
mods/ethereal/alt_textures/ethereal_yellow_wood_alt.png
Normal file
After Width: | Height: | Size: 791 B |
BIN
mods/ethereal/alt_textures/moretrees_birch_wood_alt.png
Normal file
After Width: | Height: | Size: 785 B |
BIN
mods/ethereal/alt_textures/moretrees_palm_wood_alt.png
Normal file
After Width: | Height: | Size: 795 B |
46
mods/ethereal/ambience.lua
Normal file
|
@ -0,0 +1,46 @@
|
|||
|
||||
-- mushroom biome
|
||||
|
||||
ambience.add_set("ethereal_mushroom", {
|
||||
|
||||
frequency = 40,
|
||||
|
||||
sounds = {
|
||||
{name = "ethereal_mushroom", length = 1.3, ephemeral = true},
|
||||
{name = "ethereal_mushroom", length = 1.3, pitch = 0.9, ephemeral = true},
|
||||
{name = "ethereal_mushroom", length = 1.3, pitch = 1.2, ephemeral = true},
|
||||
},
|
||||
|
||||
nodes = ({"ethereal:mushroom_trunk", "ethereal:mushroom_dirt"}),
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
local c = (def.totals["ethereal:mushroom_trunk"] or 0)
|
||||
local d = (def.totals["ethereal:mushroom_dirt"] or 0)
|
||||
|
||||
if c > 30 and d > 70 then return "ethereal_mushroom" end
|
||||
end
|
||||
})
|
||||
|
||||
-- frost biome
|
||||
|
||||
ambience.add_set("ethereal_crystal", {
|
||||
|
||||
frequency = 50,
|
||||
|
||||
sounds = {
|
||||
{name = "ethereal_crystal", length = 2.3, gain = 2.0, ephemeral = true},
|
||||
{name = "ethereal_crystal", length = 2.3, gain = 2.0, pitch = 0.9, ephemeral = true},
|
||||
{name = "ethereal_crystal", length = 2.3, gain = 2.0, pitch = 1.1, ephemeral = true},
|
||||
},
|
||||
|
||||
nodes = ({"ethereal:crystal_spike", "ethereal:crystal_dirt"}),
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
local c = (def.totals["ethereal:crystal_spike"] or 0)
|
||||
local d = (def.totals["ethereal:crystal_dirt"] or 0)
|
||||
|
||||
if c > 0 and d > 70 then return "ethereal_crystal" end
|
||||
end
|
||||
})
|
41
mods/ethereal/api.txt
Normal 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.
|
74
mods/ethereal/biome_info.json
Normal file
|
@ -0,0 +1,74 @@
|
|||
[
|
||||
{"name": "mountain", "heat_point": 50, "humidity_point": 50, "y_min": 140, "y_max": 31000},
|
||||
{"name": "grassland", "heat_point": 50, "humidity_point": 35, "y_min": 3, "y_max": 71},
|
||||
{"name": "grassland_ocean", "heat_point": 50, "humidity_point": 35, "y_min": -192, "y_max": 2},
|
||||
{"name": "grassland_under", "heat_point": 50, "humidity_point": 35, "y_min": -31000, "y_max": -256},
|
||||
{"name": "desert", "heat_point": 92, "humidity_point": 16, "y_min": 3, "y_max": 23},
|
||||
{"name": "desert_ocean", "heat_point": 92, "humidity_point": 16, "y_min": -192, "y_max": 3},
|
||||
{"name": "desert_under", "heat_point": 92, "humidity_point": 16, "y_min": -31000, "y_max": -256},
|
||||
{"name": "bamboo", "heat_point": 45, "humidity_point": 45, "y_min": 3, "y_max": 70},
|
||||
{"name": "bamboo_ocean", "heat_point": 45, "humidity_point": 45, "y_min": -192, "y_max": 2},
|
||||
{"name": "mesa", "heat_point": 25, "humidity_point": 10, "y_min": 18, "y_max": 71},
|
||||
{"name": "mesa_redwood", "heat_point": 25, "humidity_point": 10, "y_min": 11, "y_max": 17},
|
||||
{"name": "mesa_beach", "heat_point": 25, "humidity_point": 10, "y_min": -1, "y_max": 10},
|
||||
{"name": "mesa_ocean", "heat_point": 25, "humidity_point": 10, "y_min": -192, "y_max": -2},
|
||||
{"name": "coniferous_forest", "heat_point": 45, "humidity_point": 70, "y_min": 6, "y_max": 140},
|
||||
{"name": "coniferous_dunes", "heat_point": 45, "humidity_point": 70, "y_min": 4, "y_max": 5},
|
||||
{"name": "coniferous_forest_ocean", "heat_point": 45, "humidity_point": 70, "y_min": -255, "y_max": 3},
|
||||
{"name": "coniferous_forest_under", "heat_point": 45, "humidity_point": 70, "y_min": -31000, "y_max": -256},
|
||||
{"name": "taiga", "heat_point": 25, "humidity_point": 70, "y_min": 4, "y_max": 140},
|
||||
{"name": "taiga_ocean", "heat_point": 25, "humidity_point": 70, "y_min": -255, "y_max": 3},
|
||||
{"name": "taiga_under", "heat_point": 25, "humidity_point": 70, "y_min": -31000, "y_max": -256},
|
||||
{"name": "frost_floatland", "heat_point": 5, "humidity_point": 60, "y_min": 1025, "y_max": 1750},
|
||||
{"name": "frost", "heat_point": 5, "humidity_point": 60, "y_min": 2, "y_max": 71},
|
||||
{"name": "frost_ocean", "heat_point": 5, "humidity_point": 60, "y_min": -192, "y_max": 1},
|
||||
{"name": "snowy_grassland", "heat_point": 15, "humidity_point": 58, "y_min": 3, "y_max": 30},
|
||||
{"name": "snowy_grassland_ocean", "heat_point": 15, "humidity_point": 58, "y_min": 2, "y_max": -192},
|
||||
{"name": "deciduous_forest", "heat_point": 60, "humidity_point": 68, "y_min": 3, "y_max": 91},
|
||||
{"name": "deciduous_forest_ocean", "heat_point": 60, "humidity_point": 68, "y_min": -31000, "y_max": 3},
|
||||
{"name": "deciduous_forest_under", "heat_point": 60, "humidity_point": 68, "y_min": -31000, "y_max": -256},
|
||||
{"name": "caves", "heat_point": 70, "humidity_point": 5, "y_min": 4, "y_max": 41},
|
||||
{"name": "grayness", "heat_point": 15, "humidity_point": 30, "y_min": 2, "y_max": 41},
|
||||
{"name": "grayness_ocean", "heat_point": 15, "humidity_point": 30, "y_min": -22, "y_max": 2},
|
||||
{"name": "grayness_under", "heat_point": 15, "humidity_point": 30, "y_min": -31000, "y_max": -23},
|
||||
{"name": "grassytwo", "heat_point": 15, "humidity_point": 25, "y_min": 1, "y_max": 91},
|
||||
{"name": "grassytwo_ocean", "heat_point": 15, "humidity_point": 25, "y_min": -192, "y_max": 2},
|
||||
{"name": "prairie", "heat_point": 30, "humidity_point": 35, "y_min": 3, "y_max": 26},
|
||||
{"name": "prairie_ocean", "heat_point": 30, "humidity_point": 35, "y_min": -192, "y_max": 2},
|
||||
{"name": "jumble", "heat_point": 25, "humidity_point": 55, "y_min": 1, "y_max": 71},
|
||||
{"name": "jumble_ocean", "heat_point": 25, "humidity_point": 55, "y_min": -192, "y_max": 1},
|
||||
{"name": "rainforest", "heat_point": 86, "humidity_point": 65, "y_min": 1, "y_max": 71},
|
||||
{"name": "rainforest_ocean", "heat_point": 86, "humidity_point": 65, "y_min": -192, "y_max": 0},
|
||||
{"name": "rainforest_under", "heat_point": 86, "humidity_point": 65, "y_min": -31000, "y_max": -256},
|
||||
{"name": "swamp", "heat_point": 80, "humidity_point": 90, "y_min": 1, "y_max": 7},
|
||||
{"name": "swamp_beach", "heat_point": 80, "humidity_point": 90, "y_min": -1, "y_max": 0},
|
||||
{"name": "swamp_ocean", "heat_point": 80, "humidity_point": 90, "y_min": -192, "y_max": -1},
|
||||
{"name": "grove", "heat_point": 40, "humidity_point": 25, "y_min": 3, "y_max": 23},
|
||||
{"name": "grove_ocean", "heat_point": 40, "humidity_point": 25, "y_min": -192, "y_max": 2},
|
||||
{"name": "mediterranean", "heat_point": 30, "humidity_point": 45, "y_min": 3, "y_max": 50},
|
||||
{"name": "mushroom", "heat_point": 45, "humidity_point": 82, "y_min": 4, "y_max": 50},
|
||||
{"name": "mushroom_ocean", "heat_point": 45, "humidity_point": 82, "y_min": -255, "y_max": 5},
|
||||
{"name": "sandstone_desert", "heat_point": 60, "humidity_point": 0, "y_min": 3, "y_max": 23},
|
||||
{"name": "sandstone_desert_ocean", "heat_point": 60, "humidity_point": 0, "y_min": -192, "y_max": 2},
|
||||
{"name": "sandstone_desert_under", "heat_point": 60, "humidity_point": 0, "y_min": -31000, "y_max": -256},
|
||||
{"name": "plains", "heat_point": 74, "humidity_point": 23, "y_min": 3, "y_max": 25},
|
||||
{"name": "plains_ocean", "heat_point": 74, "humidity_point": 23, "y_min": -192, "y_max": 2},
|
||||
{"name": "savanna", "heat_point": 89, "humidity_point": 42, "y_min": 3, "y_max": 50},
|
||||
{"name": "savanna_ocean", "heat_point": 89, "humidity_point": 42, "y_min": -192, "y_max": 2},
|
||||
{"name": "savanna_under", "heat_point": 89, "humidity_point": 42, "y_min": -31000, "y_max": -256},
|
||||
{"name": "fiery", "heat_point": 80, "humidity_point": 10, "y_min": 5, "y_max": 20},
|
||||
{"name": "fiery_beach", "heat_point": 80, "humidity_point": 10, "y_min": 1, "y_max": 4},
|
||||
{"name": "fiery_ocean", "heat_point": 80, "humidity_point": 10, "y_min": -192, "y_max": 2},
|
||||
{"name": "fiery_under", "heat_point": 80, "humidity_point": 10, "y_min": -31000, "y_max": -256},
|
||||
{"name": "glacier", "heat_point": 0, "humidity_point": 73, "y_min": -8, "y_max": 31000},
|
||||
{"name": "glacier_ocean", "heat_point": 0, "humidity_point": 73, "y_min": -112, "y_max": -9},
|
||||
{"name": "glacier_under", "heat_point": 0, "humidity_point": 73, "y_min": -31000, "y_max": -256},
|
||||
{"name": "tundra_highland", "heat_point": 0, "humidity_point": 40, "y_min": 47, "y_max": 180},
|
||||
{"name": "tundra", "heat_point": 0, "humidity_point": 40, "y_min": 2, "y_max": 46},
|
||||
{"name": "tundra_beach", "heat_point": 0, "humidity_point": 40, "y_min": -3, "y_max": 1},
|
||||
{"name": "tundra_ocean", "heat_point": 0, "humidity_point": 40, "y_min": -112, "y_max": -4},
|
||||
{"name": "tundra_under", "heat_point": 0, "humidity_point": 40, "y_min": -31000, "y_max": -256},
|
||||
{"name": "cold_desert", "heat_point": 20, "humidity_point": 85, "y_min": 4, "y_max": 100},
|
||||
{"name": "cold_desert_ocean", "heat_point": 20, "humidity_point": 85, "y_min": -255, "y_max": 3},
|
||||
{"name": "cold_desert_under", "heat_point": 20, "humidity_point": 85, "y_min": -31000, "y_max": -256}
|
||||
]
|
632
mods/ethereal/biomes.lua
Normal file
|
@ -0,0 +1,632 @@
|
|||
|
||||
-- register biome helper
|
||||
|
||||
local function register_biome(enabled, def)
|
||||
|
||||
if enabled ~= 1 then return end
|
||||
|
||||
def.node_dungeon = def.node_dungeon or "default:cobble"
|
||||
def.node_dungeon_alt = def.node_dungeon_alt or "default:mossycobble"
|
||||
def.node_dungeon_stair = def.node_dungeon_stair or "stairs:stair_cobble"
|
||||
|
||||
if def.y_max > 0 and def.node_riverbed == nil then
|
||||
def.node_riverbed = "default:sand" ; def.depth_riverbed = 2
|
||||
end
|
||||
|
||||
if def.y_min > 0 then def.vertical_blend = 1 end
|
||||
|
||||
minetest.register_biome(def)
|
||||
|
||||
--[[print('{"name": "' .. def.name .. '", "heat_point": ' ..def.heat_point .. ', "humidity_point": '
|
||||
.. def.humidity_point .. ', "y_min": ' .. def.y_min .. ', "y_max": ' .. def.y_max .. '}')]]
|
||||
|
||||
end
|
||||
|
||||
-- old biome setting (when enabled old heat/humidity values are used)
|
||||
|
||||
local old = minetest.settings:get_bool("ethereal.old_biomes")
|
||||
|
||||
-- mountain
|
||||
|
||||
register_biome(1, {
|
||||
name = "mountain",
|
||||
heat_point = 50, humidity_point = 50,
|
||||
y_min = 140, y_max = 31000,
|
||||
node_top = "default:snow", depth_top = 1,
|
||||
node_filler = "default:snowblock", depth_filler = 2})
|
||||
|
||||
-- grassland
|
||||
|
||||
register_biome(1, {
|
||||
name = "grassland",
|
||||
heat_point = old and 45 or 50, humidity_point = old and 65 or 35,
|
||||
y_min = 3, y_max = 71,
|
||||
node_top = "default:dirt_with_grass", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3})
|
||||
|
||||
register_biome(1, {
|
||||
name = "grassland_ocean",
|
||||
heat_point = old and 45 or 50, humidity_point = old and 65 or 35,
|
||||
y_min = -192, y_max = 2,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 3})
|
||||
|
||||
register_biome(1, {
|
||||
name = "grassland_under",
|
||||
node_cave_liquid = {"default:water_source", "default:lava_source"},
|
||||
heat_point = old and 45 or 50, humidity_point = old and 65 or 35,
|
||||
y_min = -31000, y_max = -256})
|
||||
|
||||
-- desert
|
||||
|
||||
register_biome(ethereal.desert, {
|
||||
name = "desert",
|
||||
heat_point = old and 35 or 92, humidity_point = old and 20 or 16,
|
||||
y_min = 3, y_max = 23,
|
||||
node_top = "default:desert_sand", depth_top = 1,
|
||||
node_filler = "default:desert_sand", depth_filler = 3,
|
||||
node_stone = "default:desert_stone",
|
||||
node_dungeon_alt = "default:desert_cobble",
|
||||
node_dungeon = "default:desert_stone",
|
||||
node_dungeon_stair = "stairs:stair_desert_stone"})
|
||||
|
||||
register_biome(ethereal.desert, {
|
||||
name = "desert_ocean",
|
||||
heat_point = old and 35 or 92, humidity_point = old and 20 or 16,
|
||||
y_min = -192, y_max = 3,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 2,
|
||||
node_stone = "default:desert_stone",
|
||||
node_dungeon_alt = "default:desert_cobble",
|
||||
node_dungeon = "default:desert_stone",
|
||||
node_dungeon_stair = "stairs:stair_desert_stone"})
|
||||
|
||||
register_biome(ethereal.desert, {
|
||||
name = "desert_under",
|
||||
heat_point = old and 35 or 92, humidity_point = old and 20 or 16,
|
||||
y_min = -31000, y_max = -256,
|
||||
node_cave_liquid = {"default:water_source", "default:lava_source"}})
|
||||
|
||||
-- bamboo
|
||||
|
||||
register_biome(ethereal.bamboo, {
|
||||
name = "bamboo",
|
||||
heat_point = 45, humidity_point = old and 75 or 45,
|
||||
y_min = 3, y_max = 70,
|
||||
node_top = "ethereal:bamboo_dirt", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3})
|
||||
|
||||
register_biome(ethereal.bamboo, {
|
||||
name = "bamboo_ocean",
|
||||
heat_point = 45, humidity_point = old and 75 or 45,
|
||||
y_min = -192, y_max = 2,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 2})
|
||||
|
||||
-- mesa
|
||||
|
||||
register_biome(ethereal.mesa, {
|
||||
name = "mesa",
|
||||
heat_point = 25, humidity_point = old and 28 or 10,
|
||||
y_min = 18, y_max = 71,
|
||||
node_top = old and "default:dirt_with_dry_grass" or "bakedclay:orange", depth_top = 1,
|
||||
node_filler = "bakedclay:orange", depth_filler = 15,
|
||||
node_riverbed = "default:desert_sand", depth_riverbed = 2,
|
||||
node_dungeon_alt = "default:desert_sandstone",
|
||||
node_dungeon = "default:desert_sandstone_brick",
|
||||
node_dungeon_stair = "stairs:stair_desert_sandstone_brick"})
|
||||
|
||||
register_biome(ethereal.mesa, {
|
||||
name = "mesa_redwood",
|
||||
heat_point = 25, humidity_point = old and 28 or 10,
|
||||
y_min = 11, y_max = 17,
|
||||
node_top = "default:dirt_with_dry_grass", depth_top = 1,
|
||||
node_filler = "bakedclay:orange", depth_filler = 15,
|
||||
node_riverbed = "default:desert_sand", depth_riverbed = 2,
|
||||
node_dungeon_alt = "",
|
||||
node_dungeon = "default:desert_sandstone",
|
||||
node_dungeon_stair = "stairs:stair_desert_sandstone"})
|
||||
|
||||
register_biome(ethereal.mesa, {
|
||||
name = "mesa_beach",
|
||||
heat_point = 25, humidity_point = old and 28 or 10,
|
||||
y_min = -1, y_max = 10,
|
||||
node_top = "default:desert_sand", depth_top = 1,
|
||||
node_filler = "bakedclay:orange", depth_filler = 2,
|
||||
node_riverbed = "default:desert_sand", depth_riverbed = 2,
|
||||
node_dungeon_alt = "",
|
||||
node_dungeon = "default:desert_sandstone",
|
||||
node_dungeon_stair = "stairs:stair_desert_sandstone"})
|
||||
|
||||
register_biome(ethereal.mesa, {
|
||||
name = "mesa_ocean",
|
||||
heat_point = 25, humidity_point = old and 28 or 10,
|
||||
y_min = -192, y_max = -2,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 2})
|
||||
|
||||
-- coniferous forest
|
||||
|
||||
register_biome(ethereal.snowy, {
|
||||
name = "coniferous_forest",
|
||||
heat_point = old and 10 or 45, humidity_point = old and 40 or 70,
|
||||
y_min = 6, y_max = 140,
|
||||
node_top = "default:dirt_with_coniferous_litter", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 2})
|
||||
|
||||
register_biome(ethereal.snowy, {
|
||||
name = "coniferous_forest_dunes",
|
||||
heat_point = old and 10 or 45, humidity_point = old and 40 or 70,
|
||||
y_min = 4, y_max = 5,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 3,
|
||||
vertical_blend = 1})
|
||||
|
||||
register_biome(ethereal.snowy, {
|
||||
name = "coniferous_forest_ocean",
|
||||
heat_point = old and 10 or 45, humidity_point = old and 40 or 70,
|
||||
y_min = -255, y_max = 3,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 2})
|
||||
|
||||
register_biome(ethereal.snowy, {
|
||||
name = "coniferous_forest_under",
|
||||
heat_point = old and 10 or 45, humidity_point = old and 40 or 70,
|
||||
y_min = -31000, y_max = -256,
|
||||
node_cave_liquid = {"default:water_source", "default:lava_source"}})
|
||||
|
||||
-- taiga
|
||||
|
||||
register_biome(ethereal.alpine, {
|
||||
name = "taiga",
|
||||
heat_point = old and 10 or 25, humidity_point = old and 40 or 70,
|
||||
y_min = 4, y_max = 140,
|
||||
node_top = "default:dirt_with_snow", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 2})
|
||||
|
||||
register_biome(ethereal.alpine, {
|
||||
name = "taiga_ocean",
|
||||
heat_point = old and 10 or 25, humidity_point = old and 40 or 70,
|
||||
y_min = -255, y_max = 3,
|
||||
node_dust = "default:snow",
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 3,
|
||||
node_cave_liquid = "default:water_source",
|
||||
vertical_blend = 1})
|
||||
|
||||
register_biome(ethereal.alpine, {
|
||||
name = "taiga_under",
|
||||
heat_point = old and 10 or 25, humidity_point = old and 40 or 70,
|
||||
y_min = -31000, y_max = -256,
|
||||
node_cave_liquid = {"default:water_source", "default:lava_source"}})
|
||||
|
||||
-- frost
|
||||
|
||||
register_biome(ethereal.frost, {
|
||||
name = "frost_floatland",
|
||||
heat_point = old and 10 or 5, humidity_point = old and 40 or 60,
|
||||
y_min = 1025, y_max = 1750,
|
||||
node_top = "ethereal:crystal_dirt", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 2})
|
||||
|
||||
register_biome(ethereal.frost, {
|
||||
name = "frost",
|
||||
heat_point = old and 10 or 5, humidity_point = old and 40 or 60,
|
||||
y_min = 2, y_max = 71,
|
||||
node_top = "ethereal:crystal_dirt", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3})
|
||||
|
||||
register_biome(ethereal.frost, {
|
||||
name = "frost_ocean",
|
||||
heat_point = old and 10 or 5, humidity_point = old and 40 or 60,
|
||||
y_min = -192, y_max = 1,
|
||||
node_top = "default:silver_sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 3})
|
||||
|
||||
-- deciduous forest
|
||||
|
||||
register_biome(ethereal.grassy, {
|
||||
name = "deciduous_forest",
|
||||
heat_point = old and 13 or 60, humidity_point = old and 40 or 68,
|
||||
y_min = 3, y_max = 91,
|
||||
node_top = "default:dirt_with_grass", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3})
|
||||
|
||||
register_biome(ethereal.grassy, {
|
||||
name = "deciduous_forest_ocean",
|
||||
heat_point = old and 13 or 60, humidity_point = old and 40 or 68,
|
||||
y_min = -31000, y_max = 3,
|
||||
node_top = "default:sand", depth_top = 2,
|
||||
node_filler = "default:gravel", depth_filler = 1})
|
||||
|
||||
register_biome(ethereal.grassy, {
|
||||
name = "deciduous_forest_under",
|
||||
heat_point = old and 13 or 60, humidity_point = old and 40 or 68,
|
||||
y_min = -31000, y_max = -256,
|
||||
node_cave_liquid = {"default:water_source", "default:lava_source"}})
|
||||
|
||||
-- caves
|
||||
|
||||
register_biome(ethereal.caves, {
|
||||
name = "caves",
|
||||
heat_point = old and 15 or 70, humidity_point = old and 25 or 5,
|
||||
y_min = 4, y_max = 41,
|
||||
node_top = "default:desert_stone", depth_top = 3,
|
||||
node_filler = "air", depth_filler = 8,
|
||||
node_dungeon_alt = "",
|
||||
node_dungeon = "default:desert_cobble",
|
||||
node_dungeon_stair = "stairs:stair_desert_cobble"})
|
||||
|
||||
-- grayness
|
||||
|
||||
register_biome(ethereal.grayness, {
|
||||
name = "grayness",
|
||||
heat_point = 15, humidity_point = old and 25 or 30,
|
||||
y_min = 2, y_max = 41,
|
||||
node_top = "ethereal:gray_dirt", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3})
|
||||
|
||||
register_biome(ethereal.grayness, {
|
||||
name = "grayness_ocean",
|
||||
heat_point = 15, humidity_point = old and 25 or 30,
|
||||
y_min = -22, y_max = 2,
|
||||
node_top = "default:silver_sand", depth_top = 2,
|
||||
node_filler = "default:sand", depth_filler = 2,
|
||||
node_stone = "ethereal:blue_marble",
|
||||
node_dungeon_alt = "",
|
||||
node_dungeon = "ethereal:blue_marble",
|
||||
node_dungeon_stair = "stairs:stair_blue_marble"})
|
||||
|
||||
register_biome(ethereal.grayness, {
|
||||
name = "grayness_under",
|
||||
heat_point = 15, humidity_point = old and 25 or 30,
|
||||
y_min = -31000, y_max = -23,
|
||||
node_cave_liquid = {"default:water_source", "default:lava_source"}})
|
||||
|
||||
-- grassy two
|
||||
|
||||
register_biome(ethereal.grassytwo, {
|
||||
name = "grassytwo",
|
||||
heat_point = 15, humidity_point = old and 40 or 25,
|
||||
y_min = 1, y_max = 91,
|
||||
node_top = "default:dirt_with_grass", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3})
|
||||
|
||||
register_biome(ethereal.grassytwo, {
|
||||
name = "grassytwo_ocean",
|
||||
heat_point = 15, humidity_point = old and 40 or 25,
|
||||
y_min = -192, y_max = 2,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 2})
|
||||
|
||||
-- prairie
|
||||
|
||||
register_biome(ethereal.prairie, {
|
||||
name = "prairie",
|
||||
heat_point = old and 20 or 30, humidity_point = old and 40 or 35,
|
||||
y_min = 3, y_max = 26,
|
||||
node_top = "ethereal:prairie_dirt", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3})
|
||||
|
||||
register_biome(ethereal.prairie, {
|
||||
name = "prairie_ocean",
|
||||
heat_point = old and 20 or 30, humidity_point = old and 40 or 35,
|
||||
y_min = -192, y_max = 2,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 2})
|
||||
|
||||
-- jumble
|
||||
|
||||
register_biome(ethereal.jumble, {
|
||||
name = "jumble",
|
||||
heat_point = 25, humidity_point = old and 50 or 55,
|
||||
y_min = 1, y_max = 71,
|
||||
node_top = "default:dirt_with_grass", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3})
|
||||
|
||||
register_biome(ethereal.jumble, {
|
||||
name = "jumble_ocean",
|
||||
heat_point = 25, humidity_point = old and 50 or 55,
|
||||
y_min = -192, y_max = 1,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 2})
|
||||
|
||||
-- rainforest
|
||||
|
||||
register_biome(ethereal.junglee, {
|
||||
name = "rainforest",
|
||||
heat_point = old and 30 or 86, humidity_point = old and 60 or 65,
|
||||
y_min = 1, y_max = 71,
|
||||
node_top = "default:dirt_with_rainforest_litter", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3})
|
||||
|
||||
register_biome(ethereal.junglee, {
|
||||
name = "rainforest_ocean",
|
||||
heat_point = old and 30 or 86, humidity_point = old and 60 or 65,
|
||||
y_min = -192, y_max = 0,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 2})
|
||||
|
||||
register_biome(ethereal.junglee, {
|
||||
name = "rainforest_under",
|
||||
heat_point = old and 30 or 86, humidity_point = old and 60 or 65,
|
||||
y_min = -31000, y_max = -256,
|
||||
node_cave_liquid = {"default:water_source", "default:lava_source"}})
|
||||
|
||||
-- swamp
|
||||
|
||||
register_biome(ethereal.swamp, {
|
||||
name = "swamp",
|
||||
heat_point = 80, humidity_point = 90, y_min = 1, y_max = 7,
|
||||
node_top = "default:dirt_with_grass", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3})
|
||||
|
||||
register_biome(ethereal.quicksand, {
|
||||
name = "swamp_beach",
|
||||
heat_point = 80, humidity_point = 90, y_min = -1, y_max = 0,
|
||||
node_top = "ethereal:quicksand2", depth_top = 3,
|
||||
node_filler = "default:clay", depth_filler = 2,
|
||||
vertical_blend = 1})
|
||||
|
||||
register_biome(ethereal.swamp, {
|
||||
name = "swamp_ocean",
|
||||
heat_point = 80, humidity_point = 90, y_min = -192, y_max = -1,
|
||||
node_top = "default:sand", depth_top = 2,
|
||||
node_filler = "default:clay", depth_filler = 2,
|
||||
vertical_blend = 2})
|
||||
|
||||
-- grove
|
||||
|
||||
register_biome(ethereal.grove, {
|
||||
name = "grove",
|
||||
heat_point = old and 45 or 40, humidity_point = old and 35 or 25,
|
||||
y_min = 3, y_max = 23,
|
||||
node_top = "ethereal:grove_dirt", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3})
|
||||
|
||||
register_biome(ethereal.grove, {
|
||||
name = "grove_ocean",
|
||||
heat_point = old and 45 or 40, humidity_point = old and 35 or 25,
|
||||
y_min = -192, y_max = 2,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 2})
|
||||
|
||||
-- meditteranean
|
||||
|
||||
register_biome(ethereal.mediterranean, {
|
||||
name = "mediterranean",
|
||||
heat_point = old and 20 or 30, humidity_point = 45,
|
||||
y_min = 3, y_max = 50,
|
||||
node_top = "ethereal:grove_dirt", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3})
|
||||
|
||||
-- mushroom
|
||||
|
||||
register_biome(ethereal.mushroom, {
|
||||
name = "mushroom",
|
||||
heat_point = 45, humidity_point = old and 55 or 82,
|
||||
y_min = 4, y_max = 50,
|
||||
node_top = "ethereal:mushroom_dirt", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3})
|
||||
|
||||
register_biome(ethereal.mushroom, {
|
||||
name = "mushroom_ocean",
|
||||
heat_point = 45, humidity_point = old and 55 or 82,
|
||||
y_min = -255, y_max = 5,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 2,
|
||||
vertical_blend = 1})
|
||||
|
||||
-- sandstone desert
|
||||
|
||||
register_biome(ethereal.sandstone, {
|
||||
name = "sandstone_desert",
|
||||
heat_point = old and 50 or 60, humidity_point = old and 20 or 0,
|
||||
y_min = 3, y_max = 23,
|
||||
node_top = "default:sandstone", depth_top = 1,
|
||||
node_filler = "default:sandstone", depth_filler = 1,
|
||||
node_stone = "default:sandstone",
|
||||
node_dungeon_alt = "",
|
||||
node_dungeon = "default:sandstone",
|
||||
node_dungeon_stair = "stairs:stair_sandstone"})
|
||||
|
||||
register_biome(ethereal.sandstone, {
|
||||
name = "sandstone_desert_ocean",
|
||||
heat_point = old and 50 or 60, humidity_point = old and 20 or 0,
|
||||
y_min = -192, y_max = 2,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 2,
|
||||
node_stone = "default:sandstone",
|
||||
node_dungeon_alt = "",
|
||||
node_dungeon = "default:sandstone",
|
||||
node_dungeon_stair = "stairs:stair_sandstone"})
|
||||
|
||||
register_biome(ethereal.sandstone, {
|
||||
name = "sandstone_desert_under",
|
||||
heat_point = old and 50 or 60, humidity_point = old and 20 or 0,
|
||||
y_min = -31000, y_max = -256,
|
||||
node_cave_liquid = {"default:water_source", "default:lava_source"}})
|
||||
|
||||
-- plains
|
||||
|
||||
register_biome(ethereal.plains, {
|
||||
name = "plains",
|
||||
heat_point = old and 65 or 74, humidity_point = old and 25 or 23,
|
||||
y_min = 3, y_max = 25,
|
||||
node_top = "ethereal:dry_dirt", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3,
|
||||
node_dungeon_alt = "",
|
||||
node_dungeon = "ethereal:dry_dirt",
|
||||
node_dungeon_stair = "stairs:stair_dry_dirt"})
|
||||
|
||||
register_biome(ethereal.plains, {
|
||||
name = "plains_ocean",
|
||||
heat_point = old and 65 or 74, humidity_point = old and 25 or 23,
|
||||
y_min = -192, y_max = 2,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 2})
|
||||
|
||||
-- savanna
|
||||
|
||||
register_biome(ethereal.savanna, {
|
||||
name = "savanna",
|
||||
heat_point = old and 55 or 89, humidity_point = old and 25 or 42,
|
||||
y_min = 3, y_max = 50,
|
||||
node_top = "default:dry_dirt_with_dry_grass", depth_top = 1,
|
||||
node_filler = "default:dry_dirt", depth_filler = 3})
|
||||
|
||||
register_biome(ethereal.savanna, {
|
||||
name = "savanna_ocean",
|
||||
heat_point = old and 55 or 89, humidity_point = old and 25 or 42,
|
||||
y_min = -192, y_max = 2,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 2})
|
||||
|
||||
register_biome(ethereal.savanna, {
|
||||
name = "savanna_under",
|
||||
heat_point = old and 55 or 89, humidity_point = old and 25 or 42,
|
||||
y_min = -31000, y_max = -256,
|
||||
node_cave_liquid = {"default:water_source", "default:lava_source"}})
|
||||
|
||||
-- fiery
|
||||
|
||||
register_biome(ethereal.fiery, {
|
||||
name = "fiery",
|
||||
heat_point = old and 75 or 80, humidity_point = 10,
|
||||
y_min = 5, y_max = 20,
|
||||
node_top = "ethereal:fiery_dirt", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3})
|
||||
|
||||
register_biome(ethereal.fiery, {
|
||||
name = "fiery_beach",
|
||||
heat_point = old and 75 or 80, humidity_point = 10,
|
||||
y_min = 1, y_max = 4,
|
||||
node_top = "default:desert_sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 2})
|
||||
|
||||
register_biome(ethereal.fiery, {
|
||||
name = "fiery_ocean",
|
||||
heat_point = old and 75 or 80, humidity_point = 10,
|
||||
y_min = -192, y_max = 2,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 2})
|
||||
|
||||
register_biome(ethereal.fiery, {
|
||||
name = "fiery_under",
|
||||
heat_point = old and 75 or 80, humidity_point = 10,
|
||||
y_min = -31000, y_max = -256,
|
||||
node_cave_liquid = {"default:lava_source"}})
|
||||
|
||||
-- glacier
|
||||
|
||||
register_biome(ethereal.glacier, {
|
||||
name = "glacier",
|
||||
heat_point = 0, humidity_point = old and 50 or 73,
|
||||
y_min = -8, y_max = 31000,
|
||||
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_alt = "default:ice",
|
||||
node_dungeon_stair = "stairs:stair_ice"})
|
||||
|
||||
register_biome(ethereal.glacier, {
|
||||
name = "glacier_ocean",
|
||||
heat_point = 0, humidity_point = old and 50 or 73,
|
||||
y_min = -112, y_max = -9,
|
||||
node_dust = "default:snowblock",
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 3})
|
||||
|
||||
register_biome(ethereal.glacier, {
|
||||
name = "glacier_under",
|
||||
heat_point = 0, humidity_point = old and 50 or 73,
|
||||
y_max = -256, y_min = -31000,
|
||||
node_cave_liquid = {"default:water_source", "default:lava_source"},
|
||||
node_dungeon = "default:cobble",
|
||||
node_dungeon_alt = "default:mossycobble",
|
||||
node_dungeon_stair = "stairs:stair_cobble"})
|
||||
|
||||
-- tundra
|
||||
|
||||
register_biome(ethereal.tundra, {
|
||||
name = "tundra_highland",
|
||||
heat_point = 0, humidity_point = 40, y_max = 180, y_min = 47,
|
||||
node_dust = "default:snow",
|
||||
node_riverbed = "default:gravel", depth_riverbed = 2})
|
||||
|
||||
register_biome(ethereal.tundra, {
|
||||
name = "tundra",
|
||||
heat_point = 0, humidity_point = 40, y_max = 46, y_min = 2,
|
||||
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})
|
||||
|
||||
register_biome(ethereal.tundra, {
|
||||
name = "tundra_beach",
|
||||
heat_point = 0, humidity_point = 40, y_max = 1, y_min = -3,
|
||||
node_top = "default:gravel", depth_top = 1,
|
||||
node_filler = "default:gravel", depth_filler = 2,
|
||||
node_riverbed = "default:gravel", depth_riverbed = 2,
|
||||
vertical_blend = 1})
|
||||
|
||||
register_biome(ethereal.tundra, {
|
||||
name = "tundra_ocean",
|
||||
heat_point = 0, humidity_point = 40, y_max = -4, y_min = -112,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 3,
|
||||
node_riverbed = "default:gravel", depth_riverbed = 2,
|
||||
vertical_blend = 1})
|
||||
|
||||
register_biome(ethereal.tundra, {
|
||||
name = "tundra_under",
|
||||
heat_point = 0, humidity_point = 40, y_max = -256, y_min = -31000,
|
||||
node_cave_liquid = {"default:water_source", "default:lava_source"}})
|
||||
|
||||
-- only register when using new mapgen
|
||||
|
||||
if not old then
|
||||
|
||||
-- cold desert
|
||||
|
||||
register_biome(ethereal.cold_desert, {
|
||||
name = "cold_desert",
|
||||
heat_point = 20, humidity_point = 85, y_min = 4, y_max = 100,
|
||||
node_top = "default:silver_sand", depth_top = 1,
|
||||
node_filler = "default:silver_sand", depth_filler = 1,
|
||||
node_riverbed = "default:silver_sand", depth_riverbed = 2})
|
||||
|
||||
register_biome(ethereal.cold_desert, {
|
||||
name = "cold_desert_ocean",
|
||||
heat_point = 20, humidity_point = 85, y_min = -255, y_max = 3,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 3,
|
||||
node_cave_liquid = "default:water_source",
|
||||
vertical_blend = 1})
|
||||
|
||||
register_biome(ethereal.cold_desert, {
|
||||
name = "cold_desert_under",
|
||||
node_cave_liquid = {"default:water_source", "default:lava_source"},
|
||||
heat_point = 20, humidity_point = 85, y_min = -31000, y_max = -256})
|
||||
|
||||
-- snowy grassland (inbetween frost and taiga/jumble)
|
||||
|
||||
register_biome(ethereal.snowy_grassland, {
|
||||
name = "snowy_grassland",
|
||||
heat_point = 15, humidity_point = 58, y_min = 3, y_max = 30,
|
||||
node_top = "ethereal:cold_dirt", depth_top = 1,
|
||||
node_filler = "default:dirt", depth_filler = 3})
|
||||
|
||||
register_biome(ethereal.snowy_grassland, {
|
||||
name = "snowy_grassland_ocean",
|
||||
node_dust = "default:snow",
|
||||
heat_point = 15, humidity_point = 58, y_min = -192, y_max = 2,
|
||||
node_top = "default:sand", depth_top = 1,
|
||||
node_filler = "default:sand", depth_filler = 3,
|
||||
vertical_blend = 1})
|
||||
end
|
113
mods/ethereal/biomes_init.lua
Normal file
|
@ -0,0 +1,113 @@
|
|||
|
||||
-- storage tables
|
||||
|
||||
local old_biomes, old_decor = {}, {}
|
||||
|
||||
-- backup registered biomes
|
||||
|
||||
for key, def in pairs(minetest.registered_biomes) do
|
||||
old_biomes[key] = def
|
||||
end
|
||||
|
||||
-- backup registered decorations
|
||||
|
||||
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"] = 1,
|
||||
["rainforest_swamp"] = 1,
|
||||
["rainforest_ocean"] = 1,
|
||||
["rainforest_under"] = 1,
|
||||
["grassland"] = 1,
|
||||
["grassland_dunes"] = 1,
|
||||
["grassland_ocean"] = 1,
|
||||
["grassland_under"] = 1,
|
||||
["taiga"] = 1,
|
||||
["taiga_ocean"] = 1,
|
||||
["taiga_under"] = 1,
|
||||
["icesheet"] = 1,
|
||||
["icesheet_ocean"] = 1,
|
||||
["icesheet_under"] = 1,
|
||||
["snowy_grassland"] = 1,
|
||||
["snowy_grassland_ocean"] = 1,
|
||||
["snowy_grassland_under"] = 1,
|
||||
["desert"] = 1,
|
||||
["desert_ocean"] = 1,
|
||||
["desert_under"] = 1,
|
||||
["tundra"] = 1,
|
||||
["tundra_highland"] = 1,
|
||||
["tundra_beach"] = 1,
|
||||
["tundra_ocean"] = 1,
|
||||
["tundra_under"] = 1,
|
||||
["sandstone_desert"] = 1,
|
||||
["sandstone_desert_ocean"] = 1,
|
||||
["sandstone_desert_under"] = 1,
|
||||
["savanna"] = 1,
|
||||
["savanna_shore"] = 1,
|
||||
["savanna_ocean"] = 1,
|
||||
["savanna_under"] = 1,
|
||||
["cold_desert"] = 1,
|
||||
["cold_desert_ocean"] = 1,
|
||||
["cold_desert_under"] = 1,
|
||||
["coniferous_forest"] = 1,
|
||||
["coniferous_forest_dunes"] = 1,
|
||||
["coniferous_forest_ocean"] = 1,
|
||||
["coniferous_forest_under"] = 1,
|
||||
["deciduous_forest"] = 1,
|
||||
["deciduous_forest_shore"] = 1,
|
||||
["deciduous_forest_ocean"] = 1,
|
||||
["deciduous_forest_under"] = 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 end -- keep it nil for re-adding
|
||||
|
||||
if can_add == true then
|
||||
|
||||
def.biomes = new_biomes
|
||||
|
||||
minetest.register_decoration(def)
|
||||
end
|
||||
end
|
47
mods/ethereal/compatibility.lua
Normal file
|
@ -0,0 +1,47 @@
|
|||
|
||||
-- add compatibility for ethereal nodes already added to 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")
|
300
mods/ethereal/crystal.lua
Normal file
|
@ -0,0 +1,300 @@
|
|||
|
||||
local S = minetest.get_translator("ethereal")
|
||||
|
||||
-- Crystal Ingot and recipe
|
||||
|
||||
minetest.register_craftitem("ethereal:crystal_ingot", {
|
||||
description = S("Crystal Ingot"),
|
||||
inventory_image = "ethereal_crystal_ingot.png",
|
||||
wield_image = "ethereal_crystal_ingot.png"
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
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 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}
|
||||
},
|
||||
|
||||
dropped_step = function(self, pos, dtime) -- custom function for builtin_item use
|
||||
|
||||
self.ctimer = (self.ctimer or 0) + dtime
|
||||
if self.ctimer < 5.0 then return end -- 5 second timer
|
||||
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
|
||||
})
|
||||
|
||||
-- Crystal Block and recipe
|
||||
|
||||
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", ""}
|
||||
}
|
||||
})
|
||||
|
||||
-- backup old function and replace with new silk touch ability for crystal shovel
|
||||
|
||||
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
|
||||
|
||||
-- Crystal Shovel
|
||||
|
||||
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 and 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 minetest.get_modpath("toolranks") then
|
||||
|
||||
local function add_tool(name, desc, afteruse) -- helper function
|
||||
|
||||
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
|
709
mods/ethereal/decor.lua
Normal file
|
@ -0,0 +1,709 @@
|
|||
-- register decoration helper
|
||||
|
||||
local function register_decoration(enabled, def)
|
||||
|
||||
if enabled ~= 1 then return end
|
||||
|
||||
def.sidelen = def.sidelen or 80 -- some handy defaults
|
||||
def.deco_type = "simple"
|
||||
def.y_min = def.y_min or 1
|
||||
def.y_max = def.y_max or 31000
|
||||
|
||||
minetest.register_decoration(def)
|
||||
end
|
||||
|
||||
-- thin ice
|
||||
|
||||
register_decoration(ethereal.frost, {
|
||||
place_on = {"default:silver_sand"},
|
||||
fill_ratio = 1.0, y_min = 0, y_max = 0,
|
||||
decoration = "ethereal:thin_ice", place_offset_y = 1,
|
||||
biomes = {"frost_ocean"} })
|
||||
|
||||
-- water pools in swamp areas
|
||||
|
||||
register_decoration(1, {
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
sidelen = 4, fill_ratio = 0.02, y_min = 1, y_max = 3,
|
||||
biomes = {"swamp","marsh"},
|
||||
flags = "force_placement",
|
||||
decoration = "default:water_source", place_offset_y = -1,
|
||||
spawn_by = "default:dirt_with_grass", num_spawn_by = 8})
|
||||
|
||||
register_decoration(1, {
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
sidelen = 4, fill_ratio = 0.33, y_min = 1, y_max = 32,
|
||||
biomes = {"marsh"},
|
||||
flags = "force_placement",
|
||||
decoration = "default:water_source", place_offset_y = -1,
|
||||
spawn_by = {"default:dirt_with_grass", "default:water_source"}, num_spawn_by = 8})
|
||||
|
||||
-- dry dirt patches
|
||||
|
||||
register_decoration(1, {
|
||||
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 = {"plains"},
|
||||
decoration = "default:dry_dirt", place_offset_y = -1,
|
||||
flags = "force_placement"
|
||||
})
|
||||
|
||||
-- rainforest litter in grove biome
|
||||
|
||||
register_decoration(1, {
|
||||
place_on = {"ethereal:grove_dirt"},
|
||||
sidelen = 4,
|
||||
noise_params = {offset = -0.0025, scale = 0.5, spread = {x = 100, y = 100, z = 100},
|
||||
seed = 329, octaves = 1, persist = 1.0},
|
||||
biomes = {"grove"},
|
||||
decoration = "default:dirt_with_rainforest_litter", place_offset_y = -1,
|
||||
flags = "force_placement"
|
||||
})
|
||||
|
||||
-- farming redo check, salt crystal if found, strawberry if not
|
||||
|
||||
if minetest.get_modpath("farming") and farming.mod and farming.mod == "redo" then
|
||||
|
||||
register_decoration(ethereal.grayness, {
|
||||
place_on = "default:silver_sand",
|
||||
fill_ratio = 0.001,
|
||||
decoration = "farming:salt_crystal"})
|
||||
else
|
||||
register_decoration(1, {
|
||||
place_on = {"default:dirt_with_grass", "ethereal:prairie_dirt"},
|
||||
sidelen = 16, y_min = 15, y_max = 55,
|
||||
noise_params = {offset = 0, scale = 0.002, spread = {x = 100, y = 100, z = 100},
|
||||
seed = 143, octaves = 3, persist = 0.6},
|
||||
decoration = "ethereal:strawberry_7"})
|
||||
end
|
||||
|
||||
-- firethorn shrub
|
||||
|
||||
register_decoration(ethereal.glacier, {
|
||||
place_on = "default:snowblock",
|
||||
fill_ratio = 0.001, y_min = 1, y_max = 30,
|
||||
biomes = {"glacier"},
|
||||
decoration = "ethereal:firethorn"})
|
||||
|
||||
-- dry grass
|
||||
|
||||
register_decoration(ethereal.savanna, {
|
||||
place_on = {"default:dry_dirt_with_dry_grass", "default:dirt_with_dry_grass"},
|
||||
fill_ratio = 0.25,
|
||||
biomes = {"savanna"},
|
||||
decoration = {"default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4",
|
||||
"default:dry_grass_5"}})
|
||||
|
||||
register_decoration(ethereal.plains, {
|
||||
place_on = {"default:dry_dirt_with_dry_grass"},
|
||||
fill_ratio = 0.875,
|
||||
biomes = {"mesa_redwood"},
|
||||
decoration = {"default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4",
|
||||
"default:dry_grass_5","default:grass_1"}})
|
||||
|
||||
register_decoration(ethereal.mesa, {
|
||||
place_on = {"default:dirt_with_dry_grass"},
|
||||
fill_ratio = 0.25,
|
||||
biomes = {"mesa"},
|
||||
decoration = {"default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4",
|
||||
"default:dry_grass_5"}})
|
||||
|
||||
-- scorched tree
|
||||
|
||||
register_decoration(ethereal.fiery, {
|
||||
place_on = {"ethereal:fiery_dirt"},
|
||||
fill_ratio = 0.000275,
|
||||
biomes = {"fiery"},
|
||||
decoration = "ethereal:scorched_tree",
|
||||
height_max = 6})
|
||||
|
||||
-- fiery lava pits
|
||||
|
||||
register_decoration(ethereal.fiery, {
|
||||
place_on = {"ethereal:fiery_dirt"},
|
||||
place_offset_y = -1,
|
||||
spawn_by = "ethereal:fiery_dirt",
|
||||
num_spawn_by = 7,
|
||||
sidelen = 8,
|
||||
noise_params = {
|
||||
offset = 0.0125,
|
||||
scale = 0.025,
|
||||
spread = {x = 50, y = 50, z = 50},
|
||||
seed = 909,
|
||||
octaves = 2,
|
||||
persist = 1.0
|
||||
},
|
||||
biomes = {"fiery"},
|
||||
decoration = "default:lava_source",
|
||||
flags = "force_placement"})
|
||||
|
||||
-- Special orange baked clay surface decor for mesa
|
||||
|
||||
register_decoration(ethereal.mesa,{
|
||||
deco_type = "simple",
|
||||
place_on = {"default:dirt_with_dry_grass"},
|
||||
sidelen = 2,
|
||||
noise_params = {
|
||||
offset = -1,
|
||||
scale = -1.25,
|
||||
spread = {x = 100, y = 100, z = 100},
|
||||
seed = 4,
|
||||
octaves = 4,
|
||||
persist = 1.0
|
||||
},
|
||||
biomes = {"mesa"},
|
||||
y_max = 31000,
|
||||
y_min = 1,
|
||||
decoration = "bakedclay:orange",
|
||||
place_offset_y = -1,
|
||||
flags = "force_placement"
|
||||
})
|
||||
|
||||
-- dry shrub
|
||||
register_decoration(ethereal.plains, {
|
||||
place_on = {"default:dry_dirt"},
|
||||
fill_ratio = 0.005,
|
||||
biomes = {"plains"},
|
||||
decoration = "default:dry_shrub"})
|
||||
|
||||
register_decoration(ethereal.jumble, {
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
fill_ratio = 0.00325,
|
||||
biomes = {"jumble"},
|
||||
decoration = "default:dry_shrub"})
|
||||
|
||||
register_decoration(ethereal.desert, {
|
||||
place_on = {"default:desert_sand"},
|
||||
fill_ratio = 0.0025,
|
||||
biomes = {"desert"},
|
||||
decoration = "default:dry_shrub"})
|
||||
|
||||
register_decoration(ethereal.sandstone, {
|
||||
place_on = {"default:sand"},
|
||||
fill_ratio = 0.0025,
|
||||
y_min = 5,
|
||||
biomes = {"sandstone_desert"},
|
||||
decoration = "default:dry_shrub"})
|
||||
|
||||
register_decoration(ethereal.mesa, {
|
||||
place_on = {"bakedclay:red","bakedclay:orange"},
|
||||
fill_ratio = 0.015,
|
||||
biomes = {"mesa"},
|
||||
decoration = "default:dry_shrub"})
|
||||
|
||||
register_decoration(ethereal.caves, {
|
||||
place_on = {"default:desert_stone"},
|
||||
fill_ratio = 0.005, y_min = 5, y_max = 42,
|
||||
biomes = {"caves"},
|
||||
decoration = {"default:dry_grass_2", "default:dry_grass_3", "default:dry_shrub"}})
|
||||
|
||||
-- crystal spike & grass
|
||||
|
||||
register_decoration(ethereal.frost, {
|
||||
place_on = {"ethereal:crystal_dirt"},
|
||||
fill_ratio = 0.02, y_min = 1, y_max = 1750,
|
||||
biomes = {"frost", "frost_floatland"},
|
||||
decoration = {"ethereal:crystal_spike", "ethereal:crystalgrass"}})
|
||||
|
||||
-- red shrub
|
||||
|
||||
register_decoration(ethereal.fiery, {
|
||||
place_on = {"ethereal:fiery_dirt"},
|
||||
fill_ratio = 0.10,
|
||||
biomes = {"fiery"},
|
||||
decoration = "ethereal:dry_shrub"})
|
||||
|
||||
-- snowy grass
|
||||
|
||||
register_decoration(ethereal.snowy, {
|
||||
place_on = {"ethereal:gray_dirt"},
|
||||
fill_ratio = 0.175,
|
||||
biomes = {"grayness"},
|
||||
decoration = "ethereal:snowygrass"})
|
||||
|
||||
-- cactus
|
||||
|
||||
register_decoration(1,{
|
||||
name = node,
|
||||
deco_type = "simple",
|
||||
sidelen = 8,
|
||||
place_on = {
|
||||
"default:desert_sand",
|
||||
"default:sand",
|
||||
},
|
||||
noise_params = {
|
||||
offset = -0.0069,
|
||||
scale = 0.0175,
|
||||
spread = {x = 8, y = 8, z = 8},
|
||||
seed = 60659,
|
||||
octaves = 2,
|
||||
persist = 0.7625,
|
||||
lacunarity = 0.6,
|
||||
},
|
||||
y_max = 31000,
|
||||
y_min = 1,
|
||||
biomes = {
|
||||
"desert",
|
||||
"sandstone_desert",
|
||||
},
|
||||
height_max = 4,
|
||||
decoration = "default:cactus",
|
||||
})
|
||||
|
||||
-- wild red mushroom
|
||||
|
||||
register_decoration(ethereal.mushroom, {
|
||||
place_on = {"ethereal:mushroom_dirt"},
|
||||
fill_ratio = 0.25,
|
||||
biomes = {"mushroom"},
|
||||
decoration = "flowers:mushroom_red"})
|
||||
|
||||
-- spore grass
|
||||
|
||||
register_decoration(ethereal.mushroom, {
|
||||
place_on = {"ethereal:mushroom_dirt"},
|
||||
fill_ratio = 0.175,
|
||||
biomes = {"mushroom"},
|
||||
decoration = "ethereal:spore_grass"})
|
||||
|
||||
-- slime mold
|
||||
|
||||
register_decoration(ethereal.mushroom, {
|
||||
place_on = {"default:clay"},
|
||||
fill_ratio = 0.1, y_min = 1, y_max = 5,
|
||||
biomes = {"mushroom_shore"},
|
||||
decoration = "ethereal:slime_mold"})
|
||||
|
||||
-- red & brown mushroom
|
||||
|
||||
register_decoration(1,{
|
||||
deco_type = "simple",
|
||||
place_on = {
|
||||
"default:dirt_with_grass",
|
||||
"default:dirt_with_rainforest_litter",
|
||||
"ethereal:prairie_dirt",
|
||||
"ethereal:mushroom_dirt",
|
||||
},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 0.009,
|
||||
spread = {x = 200, y = 200, z = 200},
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
biomes = {
|
||||
"rainforest",
|
||||
"deciduous_forest",
|
||||
"grassytwo",
|
||||
"prairie",
|
||||
"swamp",
|
||||
"marsh",
|
||||
"mushroom",
|
||||
},
|
||||
decoration = {"flowers:mushroom_brown", "flowers:mushroom_red"}
|
||||
})
|
||||
|
||||
-- stumps
|
||||
|
||||
register_decoration(ethereal.jumble, {
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
fill_ratio = 0.00175,
|
||||
biomes = {"jumble"},
|
||||
y_min = 4,
|
||||
decoration = "default:tree",
|
||||
height_max = 4})
|
||||
|
||||
-- jungle grass
|
||||
|
||||
register_decoration(ethereal.junglee, {
|
||||
place_on = {"default:dirt_with_rainforest_litter"},
|
||||
fill_ratio = 0.1,
|
||||
biomes = {"rainforest"},
|
||||
decoration = "default:junglegrass"})
|
||||
|
||||
register_decoration(ethereal.jumble, {
|
||||
place_on = {"default:dirt_with_rainforest_litter"},
|
||||
fill_ratio = 0.1,
|
||||
biomes = {"jumble", "grove"},
|
||||
decoration = "default:junglegrass"})
|
||||
|
||||
register_decoration(ethereal.swamp, {
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
fill_ratio = 0.25,
|
||||
biomes = {"swamp","marsh"},
|
||||
decoration = "default:junglegrass"})
|
||||
|
||||
-- grass
|
||||
|
||||
register_decoration(ethereal.grassy, {
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
fill_ratio = 0.35,
|
||||
biomes = {"deciduous_forest"},
|
||||
decoration = {"default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5"}})
|
||||
|
||||
register_decoration(ethereal.grassytwo, {
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
fill_ratio = 0.35,
|
||||
biomes = {"grassytwo"},
|
||||
decoration = {"default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5"}})
|
||||
|
||||
register_decoration(ethereal.jumble, {
|
||||
place_on = {"default:dirt_with_grass","default:dirt_with_rainforest_litter"},
|
||||
fill_ratio = 0.35,
|
||||
biomes = {"jumble"},
|
||||
decoration = {"default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5"}})
|
||||
|
||||
register_decoration(ethereal.junglee, {
|
||||
place_on = {"default:dirt_with_rainforest_litter"},
|
||||
fill_ratio = 0.35,
|
||||
biomes = {"rainforest"},
|
||||
decoration = {"default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5"}})
|
||||
|
||||
register_decoration(ethereal.grove, {
|
||||
place_on = {"ethereal:grove_dirt","default:dirt_with_rainforest_litter"},
|
||||
fill_ratio = 0.375,
|
||||
biomes = {"grove"},
|
||||
decoration = {"default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5"}})
|
||||
|
||||
register_decoration(ethereal.mediterranean, {
|
||||
place_on = {"ethereal:grove_dirt"},
|
||||
fill_ratio = 0.35,
|
||||
biomes = {"mediterranean"},
|
||||
decoration = {"default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5"}})
|
||||
|
||||
register_decoration(ethereal.bamboo, {
|
||||
place_on = {"ethereal:bamboo_dirt"},
|
||||
fill_ratio = 0.35,
|
||||
biomes = {"bamboo"},
|
||||
decoration = {"default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5"}})
|
||||
|
||||
register_decoration(1, {
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
fill_ratio = 0.35,
|
||||
biomes = {"grassland","swamp","marsh"},
|
||||
decoration = {"default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5"}})
|
||||
|
||||
-- ferns
|
||||
|
||||
register_decoration(ethereal.grove, {
|
||||
place_on = {"default:dirt_with_rainforest_litter", "ethereal:grove_dirt"},
|
||||
fill_ratio = 0.2,
|
||||
biomes = {"grove"},
|
||||
decoration = "ethereal:fern"})
|
||||
|
||||
-- snow
|
||||
|
||||
register_decoration(1,{
|
||||
deco_type = "simple",
|
||||
place_on = "default:dirt_with_coniferous_litter",
|
||||
sidelen = 40,
|
||||
noise_params = {
|
||||
offset = 0.2,
|
||||
scale = 0.2,
|
||||
spread = {x = 100, y = 100, z = 100},
|
||||
seed = 2,
|
||||
octaves = 2,
|
||||
persist = 1.0
|
||||
},
|
||||
biomes = {"coniferous_forest"},
|
||||
decoration = "default:snow",
|
||||
})
|
||||
|
||||
register_decoration(ethereal.alpine, {
|
||||
place_on = {"default:dirt_with_snow"},
|
||||
fill_ratio = 0.8, y_min = 40, y_max = 140,
|
||||
biomes = {"taiga"},
|
||||
decoration = "default:snow"})
|
||||
|
||||
-- wild onion and setting
|
||||
|
||||
local abundant = minetest.settings:get_bool("ethereal.abundant_onions") ~= false
|
||||
|
||||
-- wild onion
|
||||
|
||||
register_decoration(1,asuna.features.crops.onion.inject_decoration({
|
||||
deco_type = "simple",
|
||||
sidelen = 8,
|
||||
place_on = {"group:soil"},
|
||||
noise_params = {
|
||||
offset = -0.4125,
|
||||
scale = 0.3575,
|
||||
spread = {x = 14, y = 14, z = 14},
|
||||
seed = seed,
|
||||
octaves = 2,
|
||||
persist = 0.62,
|
||||
lacunarity = 0.675,
|
||||
},
|
||||
y_max = 31000,
|
||||
y_min = 1,
|
||||
decoration = {
|
||||
"ethereal:onion_3",
|
||||
"ethereal:onion_4",
|
||||
"ethereal:onion_5",
|
||||
},
|
||||
}))
|
||||
|
||||
-- papyrus
|
||||
|
||||
register_decoration(1, {
|
||||
place_on = {"default:dirt_with_grass", "default:dirt_with_rainforest_litter"},
|
||||
fill_ratio = 0.125, y_min = 1, y_max = 32,
|
||||
biomes = {"rainforest", "swamp", "marsh"},
|
||||
decoration = "default:papyrus", height_max = 4,
|
||||
spawn_by = "default:water_source", num_spawn_by = 1})
|
||||
|
||||
-- blue agave from wine mod
|
||||
|
||||
if minetest.get_modpath("wine") then
|
||||
|
||||
register_decoration(ethereal.desert, {
|
||||
place_on = {"default:desert_sand"},
|
||||
sidelen = 16, fill_ratio = 0.001,
|
||||
biomes = {"desert"},
|
||||
decoration = {"wine:blue_agave"}})
|
||||
end
|
||||
|
||||
-- default ferns
|
||||
|
||||
register_decoration(1, {
|
||||
place_on = {"ethereal:cold_dirt", "default:dirt_with_coniferous_litter"},
|
||||
sidelen = 16, fill_ratio = 0.2,
|
||||
decoration = {"default:fern_1", "default:fern_2", "default:fern_3"} })
|
||||
|
||||
-- Tundra moss
|
||||
|
||||
register_decoration(ethereal.tundra, {
|
||||
place_on = {"default:permafrost_with_stones"},
|
||||
sidelen = 4, y_min = 2, y_max = 50,
|
||||
noise_params = {offset = -0.8, scale = 2.0, spread = {x = 100, y = 100, z = 100},
|
||||
seed = 53995, octaves = 3, persist = 1.0},
|
||||
biomes = {"tundra"},
|
||||
decoration = "default:permafrost_with_moss", place_offset_y = -1,
|
||||
flags = "force_placement"})
|
||||
|
||||
-- Tundra patchy snow
|
||||
|
||||
register_decoration(ethereal.tundra, {
|
||||
place_on = {"default:permafrost_with_moss", "default:permafrost_with_stones",
|
||||
"default:stone", "default:gravel"},
|
||||
sidelen = 4, y_min = 1, y_max = 50,
|
||||
noise_params = {offset = 0, scale = 1.0, spread = {x = 100, y = 100, z = 100},
|
||||
seed = 172555, octaves = 3, persist = 1.0},
|
||||
biomes = {"tundra", "tundra_shore"},
|
||||
decoration = "default:snow"})
|
||||
|
||||
-- Tundra very sparse grass and dry shrubs
|
||||
|
||||
register_decoration(1,{
|
||||
deco_type = "simple",
|
||||
place_on = {
|
||||
"default:permafrost_with_moss",
|
||||
},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.01,
|
||||
biomes = {"tundra"},
|
||||
y_max = 50,
|
||||
y_min = 1,
|
||||
decoration = {
|
||||
"default:grass_1",
|
||||
"default:dry_shrub",
|
||||
},
|
||||
})
|
||||
|
||||
-- Coral Reef
|
||||
|
||||
register_decoration(1,{
|
||||
name = "default:corals",
|
||||
deco_type = "simple",
|
||||
place_on = {
|
||||
"default:sand",
|
||||
"everness:mineral_sand",
|
||||
},
|
||||
place_offset_y = -1,
|
||||
sidelen = 4,
|
||||
noise_params = {
|
||||
offset = -3,
|
||||
scale = 4,
|
||||
spread = {x = 50, y = 50, z = 50},
|
||||
seed = 7013,
|
||||
octaves = 3,
|
||||
persist = 0.7,
|
||||
},
|
||||
biomes = asuna.features.ocean.tropical,
|
||||
y_max = -2,
|
||||
y_min = -36,
|
||||
flags = "force_placement",
|
||||
decoration = {
|
||||
"default:coral_green", "default:coral_pink",
|
||||
"default:coral_cyan", "default:coral_brown",
|
||||
"default:coral_orange", "default:coral_skeleton"
|
||||
}
|
||||
})
|
||||
|
||||
-- Kelp
|
||||
|
||||
register_decoration(1,{
|
||||
deco_type = "simple",
|
||||
place_on = {
|
||||
"default:sand",
|
||||
"everness:mineral_sand",
|
||||
},
|
||||
place_offset_y = -1,
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.04,
|
||||
scale = 0.2,
|
||||
spread = {x = 200, y = 200, z = 200},
|
||||
seed = 87112,
|
||||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
biomes = asuna.biome_groups.below,
|
||||
y_max = -5,
|
||||
y_min = -36,
|
||||
flags = "force_placement",
|
||||
decoration = "default:sand_with_kelp",
|
||||
param2 = 48,
|
||||
param2_max = 96
|
||||
})
|
||||
|
||||
-- illumishrooms using underground decoration placement
|
||||
|
||||
local function add_illumishroom(low, high, nodename)
|
||||
|
||||
register_decoration(1, {
|
||||
place_on = {"default:stone_with_coal"},
|
||||
sidelen = 16, fill_ratio = 0.5, y_min = low, y_max = high,
|
||||
flags = "force_placement, all_floors",
|
||||
decoration = nodename})
|
||||
end
|
||||
|
||||
add_illumishroom(-1000, -50, "ethereal:illumishroom")
|
||||
add_illumishroom(-2000, -1000, "ethereal:illumishroom2")
|
||||
add_illumishroom(-3000, -2000, "ethereal:illumishroom3")
|
||||
|
||||
--= Register Biome Decoration Using Plants Mega Pack Lite if Xanadu found
|
||||
|
||||
if minetest.get_modpath("xanadu") then
|
||||
|
||||
--= Desert Biome
|
||||
|
||||
-- Cactus
|
||||
register_decoration(1, {
|
||||
place_on = {"default:desert_sand", "default:sandstone"},
|
||||
sidelen = 16, fill_ratio = 0.005,
|
||||
biomes = {"desert", "sandstone_desert"},
|
||||
decoration = {"xanadu:cactus_echinocereus", "xanadu:cactus_matucana",
|
||||
"xanadu:cactus_baseball", "xanadu:cactus_golden"}})
|
||||
|
||||
-- Desert Plants
|
||||
register_decoration(1, {
|
||||
place_on = {"default:desert_sand", "default:sandstone", "default:sand"},
|
||||
sidelen = 16, fill_ratio = 0.004,
|
||||
biomes = {"desert", "sandstone_desert"},
|
||||
decoration = {"xanadu:desert_kangaroo", "xanadu:desert_brittle",
|
||||
"xanadu:desert_ocotillo", "xanadu:desert_whitesage"}})
|
||||
|
||||
--= Prairie Biome
|
||||
|
||||
-- Grass
|
||||
register_decoration(1, {
|
||||
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
|
||||
register_decoration(1, {
|
||||
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"}})
|
||||
|
||||
register_decoration(1, {
|
||||
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
|
||||
register_decoration(1, {
|
||||
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", "rainforest",
|
||||
"grayness", "jumble"},
|
||||
decoration = {"xanadu:shrub_kerria", "xanadu:shrub_spicebush"}})
|
||||
|
||||
--= Jungle Biome
|
||||
|
||||
register_decoration(1, {
|
||||
place_on = {"default:dirt_with_grass", "default:dirt_with_rainforest_litter"},
|
||||
sidelen = 16, fill_ratio = 0.007,
|
||||
biomes = {"rainforest", "jumble"},
|
||||
decoration = {"xanadu:rainforest_guzmania", "xanadu:rainforest_devil",
|
||||
"xanadu:rainforest_lazarus", "xanadu:rainforest_lollipop",
|
||||
"xanadu:mushroom_woolly"}})
|
||||
|
||||
--= Cold Biomes
|
||||
|
||||
register_decoration(1, {
|
||||
place_on = {"default:dirt_with_snow", "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
|
||||
|
||||
register_decoration(1, {
|
||||
place_on = {"ethereal:mushroom_dirt"},
|
||||
sidelen = 16, fill_ratio = 0.005,
|
||||
biomes = {"mushroom"},
|
||||
decoration = {"xanadu:mushroom_powderpuff", "xanadu:mushroom_chanterelle",
|
||||
"xanadu:mushroom_parasol"}})
|
||||
|
||||
--= Lakeside
|
||||
|
||||
register_decoration(1, {
|
||||
place_on = {"default:sand", "default:dirt_with_grass"},
|
||||
sidelen = 16, fill_ratio = 0.015,
|
||||
biomes = {"deciduous_forest_ocean", "grassland", "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
|
||||
|
||||
register_decoration(1, {
|
||||
place_on = {"ethereal:mushroom_dirt", "default:dirt_with_grass",
|
||||
"ethereal:gray_dirt", "ethereal:dirt_with_snow", "ethereal:prairie_dirt",
|
||||
"ethereal:grove_dirt", "ethereal:dry_dirt", "ethereal:fiery_dirt",
|
||||
"default:sand", "default:desert_sand", "ethereal:bamboo_dirt",
|
||||
"default:dirt_with_rainforest_litter", "default:permafrost_with_stones"},
|
||||
sidelen = 16, fill_ratio = 0.004,
|
||||
biomes = {"mushroom", "prairie", "grayness", "plains", "desert", "rainforest",
|
||||
"deciduous_forest", "grassytwo", "jumble", "coniferous_forest", "taiga",
|
||||
"fiery", "mesa", "bamboo", "tundra"},
|
||||
decoration = {"xanadu:spooky_thornbush", "xanadu:spooky_baneberry"}})
|
||||
|
||||
--= Poppy's growing in Clearing Biome in memory of RealBadAngel
|
||||
|
||||
register_decoration(1, {
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
sidelen = 16, fill_ratio = 0.004,
|
||||
biomes = {"grassland"},
|
||||
decoration = {"xanadu:poppy"}})
|
||||
end
|
377
mods/ethereal/dirt.lua
Normal file
|
@ -0,0 +1,377 @@
|
|||
|
||||
local S = minetest.get_translator("ethereal")
|
||||
|
||||
local math_random = math.random
|
||||
|
||||
-- override default dirt (to stop caves cutting away dirt)
|
||||
|
||||
minetest.override_item("default:dirt", {is_ground_content = ethereal.cavedirt})
|
||||
|
||||
-- replace old green_dirt with default grass
|
||||
|
||||
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
|
||||
})
|
||||
|
||||
-- ethereal dirt types
|
||||
|
||||
local dirts = {
|
||||
"Bamboo", "Jungle", "Grove", "Prairie", "Cold", "Crystal", "Mushroom", "Fiery", "Gray"
|
||||
}
|
||||
|
||||
-- loop through and register dirts
|
||||
|
||||
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 function flower_spread(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 function grow_papyrus(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
|
||||
|
||||
-- override abm function
|
||||
|
||||
local function override_abm(name, redef)
|
||||
|
||||
if not name or not redef then return end
|
||||
|
||||
for _, ab in pairs(minetest.registered_abms) do
|
||||
|
||||
if name == ab.label then
|
||||
|
||||
for k, v in pairs(redef) do
|
||||
ab[k] = v
|
||||
end
|
||||
|
||||
return ab
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
override_abm("Flower spread", {
|
||||
--interval = 1, chance = 1, -- testing only
|
||||
chance = 96, -- moved back to original chance from 300
|
||||
nodenames = {"group:flora"},
|
||||
neighbors = {"group:soil"},
|
||||
action = flower_spread
|
||||
})
|
||||
|
||||
override_abm("Grow papyrus", {
|
||||
--interval = 2, chance = 1, -- testing only
|
||||
nodenames = {"default:papyrus", "ethereal:bamboo"},
|
||||
neighbors = {"group:soil"},
|
||||
action = grow_papyrus
|
||||
})
|
||||
|
||||
override_abm("Mushroom spread", {
|
||||
--interval = 1, chance = 1, -- testing only
|
||||
chance = 50, -- moved back to original chance from 150
|
||||
nodenames = {"group:mushroom"}
|
||||
})
|
||||
|
||||
-- Add Red, Orange and Grey baked clay if mod isn't active
|
||||
|
||||
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, bakedclay = 1},
|
||||
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, bakedclay = 1},
|
||||
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, bakedclay = 1},
|
||||
is_ground_content = ethereal.cavedirt,
|
||||
sounds = default.node_sound_stone_defaults()
|
||||
})
|
||||
|
||||
minetest.register_node(":bakedclay:brown", {
|
||||
description = S("Brown Baked Clay"),
|
||||
tiles = {"baked_clay_brown.png"},
|
||||
groups = {cracky = 3, bakedclay = 1},
|
||||
is_ground_content = ethereal.cavedirt,
|
||||
sounds = default.node_sound_stone_defaults()
|
||||
})
|
||||
end
|
||||
|
||||
-- Quicksand (new style, sinking inside shows yellow effect
|
||||
|
||||
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()
|
||||
})
|
||||
|
||||
-- alias old quicksand to new
|
||||
|
||||
minetest.register_alias("ethereal:quicksand", "ethereal:quicksand2")
|
||||
|
||||
-- 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"}}
|
||||
})
|
||||
|
||||
-- slime mold
|
||||
|
||||
minetest.register_node("ethereal:slime_mold", {
|
||||
description = S("Slime Mold"),
|
||||
drawtype = "raillike",
|
||||
paramtype = "light",
|
||||
tiles = {"ethereal_slime_mold.png"},
|
||||
inventory_image = "ethereal_slime_mold.png",
|
||||
wield_image = "ethereal_slime_mold.png",
|
||||
use_texture_alpha = "clip",
|
||||
walkable = false,
|
||||
buildable_to = true,
|
||||
floodable = true,
|
||||
drop = {},
|
||||
groups = {crumbly = 3, attached_node = 1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
type = "fixed", fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
}
|
||||
})
|
||||
|
||||
-- how slime molds spread
|
||||
|
||||
minetest.register_abm({
|
||||
label = "Slime mold spread",
|
||||
nodenames = {"ethereal:slime_mold"},
|
||||
neighbors = {"ethereal:spore_grass", "ethereal:fire_flower"},
|
||||
interval = 15,
|
||||
chance = 4,
|
||||
catch_up = false,
|
||||
|
||||
action = function(pos, node)
|
||||
|
||||
if minetest.find_node_near(pos, 1, {"ethereal:fire_flower"}) then
|
||||
|
||||
minetest.sound_play("fire_extinguish_flame",
|
||||
{pos = pos, gain = 0.05, max_hear_distance = 3}, true)
|
||||
|
||||
minetest.remove_node(pos) ; return
|
||||
end
|
||||
|
||||
local near = minetest.find_node_near(pos, 1, {"ethereal:spore_grass"})
|
||||
|
||||
if near then
|
||||
|
||||
minetest.sound_play("default_gravel_dug",
|
||||
{pos = near, gain = 0.3, max_hear_distance = 3}, true)
|
||||
|
||||
minetest.set_node(near, {name = "ethereal:slime_mold"})
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- slime block
|
||||
|
||||
minetest.register_node("ethereal:slime_block", {
|
||||
description = S("Slime Block"),
|
||||
tiles = {"ethereal_slime_block.png"},
|
||||
inventory_image = minetest.inventorycube("ethereal_slime_block.png"),
|
||||
groups = {crumbly = 3, bouncy = 100, fall_damage_add_percent = -100, disable_jump = 1},
|
||||
sounds = default.node_sound_leaves_defaults()
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "ethereal:slime_block",
|
||||
recipe = {
|
||||
{"ethereal:slime_mold", "ethereal:slime_mold", "ethereal:slime_mold"},
|
||||
{"ethereal:slime_mold", "ethereal:fire_dust", "ethereal:slime_mold"},
|
||||
{"ethereal:slime_mold", "ethereal:slime_mold", "ethereal:slime_mold"}
|
||||
}
|
||||
})
|
477
mods/ethereal/extra.lua
Normal file
|
@ -0,0 +1,477 @@
|
|||
|
||||
local S = minetest.get_translator("ethereal")
|
||||
|
||||
-- Blue Marble Nodes and recipe
|
||||
|
||||
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"}
|
||||
}
|
||||
})
|
||||
|
||||
-- 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"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "ethereal:mushroom_brown",
|
||||
recipe = {
|
||||
{"flowers:mushroom_brown", "flowers:mushroom_brown"},
|
||||
{"flowers:mushroom_brown", "flowers:mushroom_brown"}
|
||||
}
|
||||
})
|
||||
|
||||
-- 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"
|
||||
})
|
||||
|
||||
-- candle helper function
|
||||
|
||||
local candle_colors = {
|
||||
[""] = "F7F2CD",
|
||||
["black"] = "40403F",
|
||||
["blue"] = "5587B4",
|
||||
["brown"] = "6D4728",
|
||||
["cyan"] = "78F1B1",
|
||||
["dark_green"] = "23AF23",
|
||||
["dark_grey"] = "868178",
|
||||
["green"] = "96CA32",
|
||||
["grey"] = "C0BAAF",
|
||||
["magenta"] = "C22E7D",
|
||||
["orange"] = "E88817",
|
||||
["pink"] = "FA8B91",
|
||||
["red"] = "CF4727",
|
||||
["violet"] = "975EC0",
|
||||
["yellow"] = "FFF74D"
|
||||
}
|
||||
|
||||
local function add_candle(col, dcol)
|
||||
|
||||
local under = "" ; if dcol ~= "" then under = "_" end
|
||||
|
||||
minetest.register_node("ethereal:candle" .. under .. col, {
|
||||
description = S(dcol .. "Candle"),
|
||||
drawtype = "plantlike",
|
||||
|
||||
inventory_image = "ethereal_candle_base_inv.png^[multiply:#"
|
||||
.. candle_colors[col] .. "70^ethereal_candle_flame_inv.png",
|
||||
wield_image = "ethereal_candle_base_inv.png^[multiply:#"
|
||||
.. candle_colors[col] .. "70^ethereal_candle_flame_inv.png",
|
||||
tiles = {
|
||||
{
|
||||
name = "ethereal_candle_base.png^[multiply:#"
|
||||
.. candle_colors[col] .. "70^ethereal_candle_flame.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, candle_ethereal = 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 dcol ~= "" then
|
||||
minetest.register_craft({
|
||||
output = "ethereal:candle" .. under .. col,
|
||||
recipe = { {"group:candle_ethereal", "dye:" .. col} }
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
add_candle("", "")
|
||||
add_candle("black", "Black ")
|
||||
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_ethereal", "dye:white"}
|
||||
}
|
||||
})
|
||||
|
||||
-- base candle recipe
|
||||
|
||||
minetest.register_craft({
|
||||
output = "ethereal:candle 2",
|
||||
recipe = {
|
||||
{"farming:string"},
|
||||
{"ethereal:palm_wax"},
|
||||
{"ethereal:palm_wax"}
|
||||
}
|
||||
})
|
||||
|
||||
-- wooden bowl, dont add bowl if farming redo already has one
|
||||
|
||||
if not minetest.registered_items["farming:bowl"] then
|
||||
|
||||
minetest.register_craftitem("ethereal:bowl", {
|
||||
description = S("Bowl"),
|
||||
inventory_image = "ethereal_bowl.png",
|
||||
groups = {food_bowl = 1, flammable = 2}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "ethereal:bowl 4",
|
||||
recipe = {
|
||||
{"group:wood", "", "group:wood"},
|
||||
{"", "group:wood", ""}
|
||||
}
|
||||
})
|
||||
else
|
||||
minetest.register_alias("ethereal:bowl", "farming:bowl")
|
||||
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"}
|
||||
}
|
||||
})
|
104
mods/ethereal/fences.lua
Normal file
|
@ -0,0 +1,104 @@
|
|||
|
||||
-- translation and mod check
|
||||
|
||||
local S = minetest.get_translator("ethereal")
|
||||
local door_mod = minetest.get_modpath("doors")
|
||||
|
||||
-- fence registration helper (fence, rail, gate, mese post)
|
||||
|
||||
local function add_fence(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 wooden fences, gates and mese posts
|
||||
|
||||
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 previous ethereal 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
|
598
mods/ethereal/fishing.lua
Normal file
|
@ -0,0 +1,598 @@
|
|||
--[[
|
||||
|
||||
This fishing routine is inspired by the great work Rootyjr did for MineClone2
|
||||
|
||||
]]--
|
||||
|
||||
-- fish and where they can be caught
|
||||
|
||||
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", "grassland_ocean"},
|
||||
{"ethereal:fish_flathead", "rainforest"},
|
||||
{"ethereal:fish_pufferfish", "desert_ocean"},
|
||||
{"ethereal:fish_cichlid", "rainforest_ocean"},
|
||||
{"ethereal:fish_coy", "bamboo"},
|
||||
{"ethereal:fish_tilapia", "bamboo"},
|
||||
{"ethereal:fish_trevally", "bamboo"},
|
||||
{"ethereal:fish_angler", "ocean"},
|
||||
{"ethereal:fish_jellyfish", "ocean"},
|
||||
{"ethereal:fish_seahorse", "ocean"},
|
||||
{"ethereal:fish_seahorse_green", "rainforest_ocean"},
|
||||
{"ethereal:fish_seahorse_pink", "mushroom_ocean"},
|
||||
{"ethereal:fish_seahorse_blue", "coniferous_forest_ocean"},
|
||||
{"ethereal:fish_seahorse_yellow", "desert_ocean"},
|
||||
{"ethereal:fish_parrot", "desert"},
|
||||
{"ethereal:fish_piranha", "rainforest"},
|
||||
{"ethereal:fish_tuna", "rainforest"},
|
||||
{"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"},
|
||||
{"ethereal:fish_tetra", "grayness_ocean"},
|
||||
{"ethereal:fish_mackerel", "glacier"}
|
||||
}
|
||||
-- grassland_ocean, desert_ocean, bamboo_ocean, mesa_ocean, coniferous_forest_ocean,
|
||||
-- taiga_ocean, frost_ocean, deciduous_forest_ocean, grayness_ocean, grassytwo_ocean,
|
||||
-- prairie_ocean, jumble_ocean, rainforest_ocean, grove_ocean, mushroom_ocean,
|
||||
-- sandstone_desert_ocean, plains_ocean, savanna_ocean, fiery_ocean, swamp_ocean,
|
||||
-- glacier_ocean, tundra_ocean
|
||||
|
||||
-- translation and mod checks
|
||||
|
||||
local S = minetest.get_translator("ethereal")
|
||||
local mod_bonemeal = minetest.get_modpath("bonemeal")
|
||||
local mod_armor = minetest.get_modpath("3d_armor")
|
||||
local mod_mobs = minetest.get_modpath("mobs")
|
||||
|
||||
-- junk items to be found
|
||||
|
||||
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"
|
||||
}
|
||||
|
||||
-- bonus items to be found
|
||||
|
||||
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"
|
||||
}
|
||||
|
||||
-- helpers
|
||||
|
||||
local default_item = "default:dirt"
|
||||
local random = math.random -- yup we use this a lot
|
||||
|
||||
-- global 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
|
||||
|
||||
-- bubble particle effect
|
||||
|
||||
local function effect(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", {
|
||||
|
||||
initial_properties = {
|
||||
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.4 -- 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
|
||||
|
||||
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 ""
|
||||
|
||||
--print("--biome", biome)
|
||||
|
||||
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)
|
||||
local rodpos = ent.object:get_pos() or pos
|
||||
|
||||
-- lower position to be in water
|
||||
rodpos.y = rodpos.y - 1
|
||||
|
||||
-- chance between catching fish, bonuns item or junk
|
||||
if r < 86 then
|
||||
|
||||
item = find_item(fish_items, rodpos)
|
||||
|
||||
elseif r > 85 and r < 96 then
|
||||
|
||||
item = find_item(junk_items, rodpos)
|
||||
|
||||
else
|
||||
|
||||
item = find_item(bonus_items, rodpos)
|
||||
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)
|
||||
itemstack:add_wear(65535 / 65)
|
||||
|
||||
return itemstack
|
||||
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
|
||||
})
|
||||
|
||||
-- table of fish and edibility
|
||||
|
||||
local fish = {
|
||||
{"Blue Fin", "bluefin", 2},
|
||||
{"Blue Ram Cichlid", "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", -16},
|
||||
{"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}
|
||||
}
|
||||
|
||||
-- register above fish
|
||||
|
||||
for n = 1, #fish do
|
||||
|
||||
local usage
|
||||
local groups = nil
|
||||
|
||||
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
|
||||
})
|
||||
|
||||
if groups then
|
||||
ethereal.add_eatable("ethereal:fish_" .. fish[n][2], fish[n][3])
|
||||
end
|
||||
end
|
||||
|
||||
-- Make Neon Tetra glow slightly
|
||||
|
||||
minetest.override_item("ethereal:fish_tetra", {light_source = 3})
|
||||
|
||||
-- Pufferfish changes so it cannot be used in generic recipes
|
||||
|
||||
minetest.override_item("ethereal:fish_pufferfish", {groups = {flammable = 2}})
|
||||
|
||||
-- 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")
|
197
mods/ethereal/flight.lua
Normal file
|
@ -0,0 +1,197 @@
|
|||
|
||||
-- translation and settings
|
||||
|
||||
local S = minetest.get_translator("ethereal")
|
||||
local flight_secs = minetest.settings:get("ethereal.flightpotion_duration") or (5 * 60)
|
||||
local timer_check = 5 -- seconds per check
|
||||
|
||||
-- get player timer
|
||||
|
||||
local function get_timer(user)
|
||||
|
||||
if not user then return end
|
||||
|
||||
local meta = user:get_meta() ; if not meta then return "" end
|
||||
|
||||
return meta:get_string("ethereal:fly_timer") or ""
|
||||
end
|
||||
|
||||
-- do we have fly privs
|
||||
|
||||
local function has_fly(name)
|
||||
return minetest.get_player_privs(name).fly
|
||||
end
|
||||
|
||||
-- set player timer
|
||||
|
||||
local function set_timer(user, timer)
|
||||
|
||||
local meta = user:get_meta() ; if not meta then return end
|
||||
|
||||
meta:set_string("ethereal:fly_timer", timer)
|
||||
end
|
||||
|
||||
-- give or revoke fly priv
|
||||
|
||||
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_timer(user, timer) -- set update 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, vessel = 1},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
|
||||
if user.is_fake_player then return end
|
||||
|
||||
-- get info
|
||||
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_timer(user, flight_secs) -- set flight timer
|
||||
|
||||
-- show time remaining
|
||||
minetest.chat_send_player(name,
|
||||
minetest.get_color_escape_sequence("#1eff00")
|
||||
.. S("Flight granted, you have @1 seconds!", flight_secs))
|
||||
|
||||
ethereal_set_flight(user) -- start check
|
||||
|
||||
itemstack:take_item() -- 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"}
|
||||
}
|
||||
})
|
751
mods/ethereal/food.lua
Normal file
|
@ -0,0 +1,751 @@
|
|||
|
||||
-- translator and mod check
|
||||
|
||||
local S = minetest.get_translator("ethereal")
|
||||
local mod_fredo = minetest.get_modpath("farming")
|
||||
and farming and farming.mod and farming.mod == "redo"
|
||||
|
||||
-- replacement bowl
|
||||
|
||||
local bowl = mod_fredo and "farming:bowl" or "ethereal:bowl"
|
||||
|
||||
-- Banana
|
||||
|
||||
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, leafdecay = 1, leafdecay_drop = 1
|
||||
},
|
||||
drop = "ethereal:banana",
|
||||
on_use = minetest.item_eat(2),
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
place_param2 = 1
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:banana", 2)
|
||||
|
||||
-- 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, leafdecay = 1, leafdecay_drop = 1
|
||||
},
|
||||
drop = "ethereal:banana_bunch",
|
||||
on_use = minetest.item_eat(6),
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
place_param2 = 1
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:banana_bunch", 6)
|
||||
|
||||
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
|
||||
|
||||
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,
|
||||
leafdecay = 3, leafdecay_drop = 1
|
||||
},
|
||||
drop = "ethereal:orange",
|
||||
on_use = minetest.item_eat(4),
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
place_param2 = 1
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:orange", 4)
|
||||
|
||||
-- Pine Nuts
|
||||
|
||||
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},
|
||||
on_use = minetest.item_eat(1)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:pine_nuts", 1)
|
||||
|
||||
-- Banana Loaf
|
||||
|
||||
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},
|
||||
on_use = minetest.item_eat(6)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:banana_bread", 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(),
|
||||
place_param2 = 1
|
||||
})
|
||||
|
||||
-- Coconut Slice
|
||||
|
||||
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},
|
||||
on_use = minetest.item_eat(1)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:coconut_slice", 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
|
||||
|
||||
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, eatable = 2
|
||||
},
|
||||
drop = "ethereal:golden_apple",
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
place_param2 = 1,
|
||||
|
||||
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
|
||||
})
|
||||
|
||||
-- Hearty Stew
|
||||
|
||||
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, bowl)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:hearty_stew", 10)
|
||||
|
||||
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"),
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:bucket_cactus", 2)
|
||||
|
||||
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}
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:firethorn_jelly", 2)
|
||||
|
||||
if fredo 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, leafdecay = 3, leafdecay_drop = 1
|
||||
},
|
||||
drop = "ethereal:lemon",
|
||||
on_use = minetest.item_eat(3),
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
place_param2 = 1
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:lemon", 3)
|
||||
|
||||
-- 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)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:candied_lemon", 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",
|
||||
visual_scale = 0.5,
|
||||
tiles = {"ethereal_lemonade.png"},
|
||||
inventory_image = "ethereal_lemonade.png",
|
||||
wield_image = "ethereal_lemonade.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed", fixed = {-0.15, -0.5, -0.15, 0.15, 0, 0.15}
|
||||
},
|
||||
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()
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:lemonade", 5)
|
||||
|
||||
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, leafdecay = 3, leafdecay_drop = 1},
|
||||
on_use = minetest.item_eat(1),
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
place_param2 = 1
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:olive", 1)
|
||||
|
||||
-- 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)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:sushi_kappamaki", 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)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:sushi_nigiri", 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)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:sushi_tamago", 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
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:fugu", 4)
|
||||
|
||||
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)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:teriyaki_chicken", 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, bowl)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:teriyaki_beef", 12)
|
||||
|
||||
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
|
||||
|
||||
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, bowl)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:mushroom_soup", 5)
|
||||
|
||||
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)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:fish_shrimp_cooked", 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)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:garlic_shrimp", 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)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:jellyfish_salad", 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)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:calamari_raw", -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)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:calamari_cooked", 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)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:fish_n_chips", 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"}}
|
||||
})
|
||||
|
||||
-- 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},
|
||||
on_use = minetest.item_eat(5)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:fish_cooked", 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)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:sashimi", 4)
|
||||
|
||||
minetest.register_craft({
|
||||
output = "ethereal:sashimi 2",
|
||||
recipe = {
|
||||
{"group:food_seaweed", "group:food_fish_raw", "group:food_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"}}
|
||||
})
|
175
mods/ethereal/init.lua
Normal file
|
@ -0,0 +1,175 @@
|
|||
--[[
|
||||
Minetest Ethereal Mod
|
||||
|
||||
Created by ChinChow
|
||||
|
||||
Updated by TenPlus1
|
||||
]]
|
||||
|
||||
-- global
|
||||
|
||||
ethereal = {version = "20241014"}
|
||||
|
||||
-- setting helper
|
||||
|
||||
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", 1)
|
||||
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)--taiga
|
||||
setting("number", "snowy", 1)--coniferous_forest
|
||||
setting("number", "frost", 1)
|
||||
setting("number", "grassy", 1)--deciduous_forest
|
||||
setting("number", "caves", 0)
|
||||
setting("number", "grayness", 1)
|
||||
setting("number", "grassytwo", 1)
|
||||
setting("number", "prairie", 0)
|
||||
setting("number", "jumble", 1)
|
||||
setting("number", "junglee", 1)--rainforest
|
||||
setting("number", "desert", 1)
|
||||
setting("number", "grove", 1)
|
||||
setting("number", "mushroom", 1)
|
||||
setting("number", "sandstone", 1)--sandstone_desert
|
||||
setting("number", "plains", 1)
|
||||
setting("number", "savanna", 0)
|
||||
setting("number", "fiery", 1)
|
||||
setting("number", "swamp", 1)
|
||||
setting("number", "quicksand", 1)--swamp quicksand
|
||||
setting("number", "tundra", 1)
|
||||
setting("number", "mediterranean", 0)
|
||||
setting("number", "cold_desert", 1)
|
||||
setting("number", "snowy_grassland", 1)
|
||||
setting("number", "sealife", 1)
|
||||
setting("number", "reefs", 1)
|
||||
setting("number", "logs", 0)
|
||||
setting("bool", "wood_rotate", false)
|
||||
|
||||
|
||||
local path = minetest.get_modpath("ethereal")
|
||||
|
||||
-- Load settings.conf file if found [DEPRECATED]
|
||||
|
||||
local input = io.open(path.."/settings.conf", "r")
|
||||
|
||||
if input then
|
||||
dofile(path .. "/settings.conf") ; input:close() ; input = nil
|
||||
end
|
||||
|
||||
-- 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
|
||||
|
||||
-- helper function to add {eatable} group to food items
|
||||
|
||||
function ethereal.add_eatable(item, hp)
|
||||
|
||||
local def = minetest.registered_items[item]
|
||||
|
||||
if def then
|
||||
|
||||
local groups = table.copy(def.groups) or {}
|
||||
|
||||
groups.eatable = hp ; groups.flammable = 2
|
||||
|
||||
minetest.override_item(item, {groups = groups})
|
||||
end
|
||||
end
|
||||
|
||||
-- strawberry check and load
|
||||
|
||||
if minetest.get_modpath("farming") and farming.mod and farming.mod == "redo" then
|
||||
-- farming redo already has strawberry included
|
||||
else
|
||||
dofile(path .. "/strawberry.lua")
|
||||
end
|
||||
|
||||
-- load mod sections
|
||||
|
||||
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 .. "/fishing.lua")
|
||||
dofile(path .. "/extra.lua")
|
||||
dofile(path .. "/sealife.lua")
|
||||
dofile(path .. "/fences.lua")
|
||||
|
||||
if minetest.settings:get_bool("ethereal.clear_default_biomes", false) 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
|
||||
|
||||
-- ambience lite
|
||||
|
||||
if minetest.get_modpath("ambience") then
|
||||
dofile(path .. "/ambience.lua")
|
||||
end
|
||||
|
||||
print ("[MOD] Ethereal loaded")
|
734
mods/ethereal/leaves.lua
Normal file
|
@ -0,0 +1,734 @@
|
|||
|
||||
local S = minetest.get_translator("ethereal")
|
||||
|
||||
-- set leaftype (0 for plantlike, 1 for block)
|
||||
|
||||
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, eatable = 1},
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {"ethereal:yellow_tree_sapling"}, rarity = 50},
|
||||
{items = {"ethereal:yellowleaves"}}
|
||||
}
|
||||
},
|
||||
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
|
||||
})
|
||||
|
||||
-- red mushroom top
|
||||
|
||||
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
|
||||
})
|
||||
|
||||
-- brown mushroom top
|
||||
|
||||
minetest.register_node("ethereal:mushroom_brown", {
|
||||
description = S("Brown Mushroom Cap"),
|
||||
tiles = {"ethereal_mushroom_block_brown.png"},
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, leafdecay = 3},
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {"ethereal:mushroom_brown_sapling"}, rarity = 15},
|
||||
{items = {"ethereal:mushroom_brown"}}
|
||||
}
|
||||
},
|
||||
sounds = default.node_sound_wood_defaults()
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "ethereal:mushroom_brown",
|
||||
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
|
||||
})
|
||||
|
||||
-- pine needles bush (replaces bush 3)
|
||||
|
||||
minetest.register_alias("ethereal:bush3", "default:pine_bush_needles")
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:pine_bush_needles",
|
||||
recipe = {
|
||||
{"group:leaves", "group:leaves", "group:leaves"},
|
||||
{"group:leaves", "default:pine_needles", "group:leaves"},
|
||||
{"group:leaves", "group:leaves", "group:leaves"}
|
||||
}
|
||||
})
|
||||
|
||||
-- basandra bush stem, leaves
|
||||
|
||||
minetest.register_node("ethereal:basandra_bush_stem", {
|
||||
description = S("Basandra Bush Stem"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 1.41,
|
||||
walkable = false,
|
||||
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},
|
||||
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, 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()
|
||||
})
|
||||
|
||||
-- leafdecay helper function
|
||||
|
||||
local function decay(tru, lea, rad)
|
||||
default.register_leafdecay({trunks = tru, leaves = lea, radius = rad})
|
||||
end
|
||||
|
||||
-- add leafdecay registrations
|
||||
|
||||
decay({"default:tree"}, {"default:apple", "default:leaves", "ethereal:orange",
|
||||
"ethereal:orange_leaves", "ethereal:lemon", "ethereal:lemon_leaves"}, 3)
|
||||
|
||||
decay({"ethereal:willow_trunk"}, {"ethereal:willow_twig"}, 3)
|
||||
|
||||
decay({"ethereal:redwood_trunk"}, {"ethereal:redwood_leaves"}, 3)
|
||||
|
||||
decay({"ethereal:frost_tree"}, {"ethereal:frost_leaves"}, 3)
|
||||
|
||||
decay({"ethereal:yellow_trunk"}, {"ethereal:yellowleaves", "ethereal:golden_apple"}, 3)
|
||||
|
||||
decay({"ethereal:palm_trunk"}, {"ethereal:palmleaves", "ethereal:coconut"}, 3)
|
||||
|
||||
decay({"ethereal:banana_trunk"}, {"ethereal:bananaleaves", "ethereal:banana",
|
||||
"ethereal:banana_bunch"}, 3)
|
||||
|
||||
decay({"ethereal:birch_trunk"}, {"ethereal:birch_leaves"}, 3)
|
||||
|
||||
decay({"ethereal:bamboo"}, {"ethereal:bamboo_leaves"}, 3)
|
||||
|
||||
decay({"ethereal:sakura_trunk"}, {"ethereal:sakura_leaves", "ethereal:sakura_leaves2"}, 3)
|
||||
|
||||
decay({"ethereal:olive_trunk"}, {"ethereal:olive_leaves", "ethereal:olive"}, 3)
|
||||
|
||||
decay({"ethereal:mushroom_trunk"}, {"ethereal:mushroom", "ethereal:mushroom_brown",
|
||||
"ethereal:mushroom_pore", "ethereal:lightstring"}, 4)
|
||||
|
||||
-- falling leaf particles
|
||||
|
||||
if minetest.settings:get_bool("ethereal.leaf_particles",false) ~= false then
|
||||
|
||||
local leaf_list = {
|
||||
{"ethereal:frost_leaves", "331b37", 9},
|
||||
{"ethereal:bananaleaves", "28581e"},
|
||||
{"ethereal:lemon_leaves", "507c1e"},
|
||||
{"ethereal:olive_leaves", "416531"},
|
||||
{"ethereal:orange_leaves", "1a3b1b"},
|
||||
{"ethereal:redwood_leaves", "15342a"},
|
||||
{"ethereal:sakura_leaves", "c281a9"},
|
||||
{"ethereal:sakura_leaves2", "d4cbac"},
|
||||
{"ethereal:willow_twig", "0b9445"},
|
||||
{"ethereal:yellowleaves", "8b5f00", 9},
|
||||
{"ethereal:birch_leaves", "274527"},
|
||||
{"ethereal:palmleaves", "2b6000"},
|
||||
{"ethereal:bamboo_leaves", "445811"},
|
||||
{"default:acacia_leaves", "296600"},
|
||||
{"default:aspen_leaves", "395d16"},
|
||||
{"default:jungleleaves", "141e10"},
|
||||
{"default:pine_needles", "00280e"},
|
||||
{"default:leaves", "223a20"}
|
||||
}
|
||||
|
||||
minetest.register_abm({
|
||||
label = "Ethereal falling leaves",
|
||||
nodenames = {"group:leaves"},
|
||||
neighbors = {"air"},
|
||||
interval = 7,
|
||||
chance = 50,
|
||||
catch_up = false,
|
||||
|
||||
action = function(pos, node)
|
||||
|
||||
local text, glow
|
||||
|
||||
for n = 1, #leaf_list do
|
||||
|
||||
if node.name == leaf_list[n][1] then
|
||||
|
||||
text = "ethereal_falling_leaf.png^[multiply:#"
|
||||
.. leaf_list[n][2] .. "70"
|
||||
|
||||
glow = leaf_list[n][3] ; break
|
||||
end
|
||||
end
|
||||
|
||||
if text then
|
||||
|
||||
minetest.add_particlespawner({
|
||||
amount = 1,
|
||||
time = 2,
|
||||
minpos = {x = pos.x - 1, y = pos.y - 1, z = pos.z - 1},
|
||||
maxpos = {x = pos.x + 1, y = pos.y, z = pos.z + 1},
|
||||
minvel = {x = -0.8, y = -1, z = -0.8},
|
||||
maxvel = {x = 0.8, y = -3, z = 0.8},
|
||||
minacc = {x = -0.1, y = -1, z = -0.1},
|
||||
maxacc = {x = 0.2, y = -3, z = 0.2},
|
||||
minexptime = 5,
|
||||
maxexptime = 10,
|
||||
minsize = 3,
|
||||
maxsize = 4,
|
||||
collisiondetection = true, collision_removal = true,
|
||||
texture = text,
|
||||
vertical = true,
|
||||
glow = glow
|
||||
})
|
||||
end
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
-- Special vine decay
|
||||
local vo = vector.offset
|
||||
local vinedir = {
|
||||
[2] = function(v)
|
||||
return vo(v,1,0,0)
|
||||
end,
|
||||
[3] = function(v)
|
||||
return vo(v,-1,0,0)
|
||||
end,
|
||||
[4] = function(v)
|
||||
return vo(v,0,0,1)
|
||||
end,
|
||||
[5] = function(v)
|
||||
return vo(v,0,0,-1)
|
||||
end,
|
||||
}
|
||||
|
||||
minetest.register_abm({
|
||||
label = "Ethereal vine decay",
|
||||
nodenames = "ethereal:vine",
|
||||
interval = 3,
|
||||
chance = 2,
|
||||
catch_up = false,
|
||||
action = function(pos,node)
|
||||
-- Only process if the vine is under a node that isn't another vine; vines
|
||||
-- below vines are allowed to hang in the air
|
||||
pos = vo(pos,0,1,0)
|
||||
if minetest.get_node(pos).name ~= "ethereal:vine" then
|
||||
local param2 = node.param2
|
||||
local behindpos = vinedir[param2]
|
||||
|
||||
-- Do nothing if the vine is on the floor or ceiling
|
||||
if not behindpos then
|
||||
return
|
||||
end
|
||||
|
||||
-- Process entire length of vine
|
||||
behindpos = behindpos(pos)
|
||||
local behind = nil
|
||||
while true do
|
||||
pos = vo(pos,0,-1,0)
|
||||
behindpos = vo(behindpos,0,-1,0)
|
||||
node = minetest.get_node(pos)
|
||||
|
||||
-- Remove the vine if it's part of a vine that's suspended in the air
|
||||
if node.name == "ethereal:vine" and node.param2 == param2 and minetest.get_node(behindpos).name == "air" then
|
||||
minetest.remove_node(pos)
|
||||
minetest.check_for_falling(pos)
|
||||
minetest.add_particlespawner({
|
||||
amount = 8,
|
||||
time = 0.001,
|
||||
minpos = vector.subtract(pos, {x=0.5, y=0.5, z=0.5}),
|
||||
maxpos = vector.add(pos, {x=0.5, y=0.5, z=0.5}),
|
||||
minvel = vector.new(-0.5, -1, -0.5),
|
||||
maxvel = vector.new(0.5, 0, 0.5),
|
||||
minacc = vector.new(0, -9.81, 0),
|
||||
maxacc = vector.new(0, -9.81, 0),
|
||||
minsize = 0,
|
||||
maxsize = 0,
|
||||
node = { name = "ethereal:vine" },
|
||||
})
|
||||
else
|
||||
-- We've reached something that isn't a vine, a vine facing in a
|
||||
-- different direction, or a vine that is actually attached to
|
||||
-- something, so stop processing
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
223
mods/ethereal/license.txt
Normal file
|
@ -0,0 +1,223 @@
|
|||
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...
|
||||
|
||||
Textures by Hugues Ross (CC BY-SA 4.0):
|
||||
ethereal_strawberry*.png
|
||||
ethereal_wild_onion*.png
|
||||
|
||||
Textures by NameNotQuality (CC0):
|
||||
ethereal_olive_leaves.png
|
||||
ethereal_lemon_leaves.png
|
||||
ethereal_frost_wood.png
|
||||
ethereal_frost_tree.png
|
||||
ethereal_frost_tree_top.png
|
||||
ethereal_yellow_tree.png
|
||||
ethereal_yellow_tree_top.png
|
||||
ethereal_yellow_wood.png
|
||||
|
||||
Textures by Jeterel from OpenGameArt.org (CC0):
|
||||
ethereal_banana_bread.png
|
||||
|
||||
Textures by SickleMoon and edited by TenPlus1 (CC0):
|
||||
ethereal_illumishroom_red.png
|
||||
ethereal_illumishroom_green.png
|
||||
ethereal_illumishroom_cyan.png
|
||||
|
||||
Textures by TenPlus1 and resized/edited by NameNotQuality (CC0):
|
||||
ethereal_banana_leaf.png
|
||||
ethereal_basandra_bush_wood.png
|
||||
ethereal_blue_marble.png
|
||||
ethereal_blue_marble_tile.png
|
||||
ethereal_redwood_wood.png
|
||||
ethereal_redwood_trunk.png
|
||||
ethereal_redwood_trunk_top.png
|
||||
ethereal_sakura_trunk.png
|
||||
ethereal_sakura_trunk_top.png
|
||||
ethereal_sakura_wood.png
|
||||
ethereal_willow_trunk.png
|
||||
ethereal_willow_trunk_top.png
|
||||
ethereal_willow_wood.png
|
||||
|
||||
Textures by Felfa and resized/edited by NameNotQuality (CC0):
|
||||
ethereal_olive_trunk.png
|
||||
ethereal_olive_trunk_top.png
|
||||
ethereal_orange_leaves.png
|
||||
|
||||
Textures based on default minetest wood by alerikaisattera (CC BY-SA 3.0):
|
||||
ethereal_birch_wood_alt.png
|
||||
ethereal_redwood_wood_alt.png
|
||||
ethereal_banana_wood_alt.png
|
||||
ethereal_olive_wood_alt.png
|
||||
ethereal_palm_wood_alt.png
|
||||
ethereal_sakura_wood_alt.png
|
||||
ethereal_willow_wood_alt.png
|
||||
|
||||
Based on pilzmod_giant_mushroom_brown_side.png (CC BY-SA 3.0) by Phseiff
|
||||
ethereal_mushroom_block_brown.png
|
||||
|
||||
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_scorched_tree.png
|
||||
ethereal_scorched_tree_top.png
|
||||
|
||||
Based on wood texture by BlockMen (CC BY-SA 3.0):
|
||||
ethereal_yellow_wood_alt.png [edited by alerikaisattera]
|
||||
ethereal_frost_wood_alt.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_bowl.png_32px
|
||||
ethereal_crystal_spike_32px.png [edited by TenPlus1]
|
||||
ethereal_teriyaki_beef_32px.png [edited by TenPlus1]
|
||||
ethereal_hearty_stew_32px.png
|
||||
|
||||
Textures by VanessaE (CC-BY-SA 4.0)
|
||||
moretrees_acacia_leaves.png
|
||||
moretrees_birch_wood.png
|
||||
moretrees_palm_trunk.png
|
||||
moretrees_birch_leaves.png
|
||||
moretrees_coconut.png
|
||||
moretrees_palm_trunk_top.png
|
||||
moretrees_birch_sapling.png
|
||||
moretrees_coconut_slice.png
|
||||
moretrees_palm_wood.png
|
||||
moretrees_birch_trunk.png
|
||||
moretrees_palm_leaves.png
|
||||
moretrees_birch_trunk_top.png
|
||||
moretrees_palm_sapling.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)
|
||||
ethereal_olive_trunk_32px.png
|
||||
ethereal_olive_trunk_top_32px.png
|
||||
ethereal_olive_leaves_32px.png
|
||||
ethereal_olive_fruit.png
|
||||
ethereal_lemon.png
|
||||
ethereal_lemon_leaves.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
|
||||
|
||||
Sounds by eZZin (CC0) https://freesound.org/people/eZZin/sounds/667122/
|
||||
ethereal_mushroom.ogg
|
||||
|
||||
Sound by Kostrava (CC0) https://freesound.org/people/Kostrava/sounds/333988/
|
||||
ethereal_crystal.ogg
|
151
mods/ethereal/locale/ethereal.de.tr
Normal file
|
@ -0,0 +1,151 @@
|
|||
# textdomain: ethereal
|
||||
Blue Marble=
|
||||
Blue Marble Tile=
|
||||
Crystal Spike=Kristallnadel
|
||||
Crystal Ingot=Kristallbarren
|
||||
Crystal Block=Kristallblock
|
||||
Crystal Sword=Kristallschwert
|
||||
Crystal Axe=Kristallaxt
|
||||
Crystal Pickaxe=Kristallspitzhacke
|
||||
Crystal Shovel=
|
||||
Crystal Gilly Staff=Kristallener Gilly-Stab
|
||||
Dried Dirt=Vertrocknete Erde
|
||||
Red Baked Clay=Roter gebrannter Ton
|
||||
Orange Baked Clay=Orange gebrannter Ton
|
||||
Grey Baked Clay=Grauer gebrannter Ton
|
||||
Quicksand=Treibsand
|
||||
Etherium Dust=Etheriumstaub
|
||||
Etherium Ore=Etheriumerz
|
||||
Bamboo Floor=Bambusboden
|
||||
Bamboo Block=Bambusblock
|
||||
Palm Wax=Palmwachs
|
||||
Bowl=Schale
|
||||
Stone Ladder=Steinleiter
|
||||
Paper Wall=Papierwand
|
||||
Glo Stone=Leuchtstein
|
||||
Lump of Charcoal=Holzkohleklumpen
|
||||
Staff of Light=Stab des Lichts
|
||||
Sakura Wood Door=Sakuraholztür
|
||||
Fishing Rod (USE to cast and again when the time is right)=
|
||||
Cooked Fish=Gekochter Fisch
|
||||
Sashimi=Sashimi
|
||||
Worm=Wurm
|
||||
Flight timer about to expire!=
|
||||
Flight Potion=
|
||||
unlimited=
|
||||
Flight already granted, @1 seconds left!=
|
||||
Flight granted, you have @1 seconds!=
|
||||
Banana=Banane
|
||||
Banana Bunch=Bananenbündel
|
||||
Banana Dough=Bananenteig
|
||||
Orange=Orange
|
||||
Pine Nuts=Kiefernkerne
|
||||
Banana Loaf=Bananenbrot
|
||||
Coconut=Kokosnuss
|
||||
Coconut Slice=Kokosscheibe
|
||||
Golden Apple=Goldener Apfel
|
||||
Hearty Stew=Deftiger Eintopf
|
||||
Bucket of Cactus Pulp=Eimer Kaktusmark
|
||||
Firethorn Jelly=Feuerdorngelee
|
||||
Lemon=
|
||||
Candied Lemon=
|
||||
Lemonade=
|
||||
Olive=
|
||||
Olive Oil=
|
||||
Kappa Maki Sushi=
|
||||
Nigiri Sushi=
|
||||
Tamago Sushi=
|
||||
Fugusashi=
|
||||
Teriyaki Chicken=
|
||||
Teriyaki Beef=
|
||||
Mushroom Soup=Pilzsuppe
|
||||
Boiled Shrimp=
|
||||
Garlic Butter Shrimp=
|
||||
Jellyfish Salad=
|
||||
Raw Calamari=
|
||||
Calamari=
|
||||
Fish & Chips=
|
||||
Willow Twig=Weidenrute
|
||||
Redwood Leaves=Mammutbaumblätter
|
||||
Orange Leaves=Orangenblätter
|
||||
Banana Leaves=Bananenblätter
|
||||
Healing Tree Leaves=Lebensbaumblätter
|
||||
Palm Leaves=Palmenblätter
|
||||
Birch Leaves=Birkenblätter
|
||||
Frost Leaves=Frostblätter
|
||||
Bamboo Leaves=Bambusblätter
|
||||
Sakura Leaves=Sakurablätter
|
||||
Lemon Tree Leaves=
|
||||
Olive Tree Leaves=
|
||||
Mushroom Cap=Pilzkappe
|
||||
Mushroom Pore=Pilzpore
|
||||
Bush=Busch
|
||||
Bush #2=Busch #2
|
||||
Bush #3=Busch #3
|
||||
Basandra Bush Stem=
|
||||
Basandra Bush Leaves=
|
||||
Wild Onion=Wildzwiebel
|
||||
Spore Grass=
|
||||
Firethorn Shrub=Feuerdornbusch
|
||||
Fire Flower=Feuerblume
|
||||
Fire Dust=Feuerstaub
|
||||
Vine=Liane
|
||||
Light String Vine=Leuchtschnurrebe
|
||||
Fern=Farn
|
||||
Fern Tubers=Farnsporenkapseln
|
||||
Fiery Dry Shrub=Feuerroter vertrockneter Strauch
|
||||
Snowy Grass=Verschneites Gras
|
||||
Crystal Grass=Kristallgras
|
||||
Lilac=
|
||||
Basandra Bush Sapling=
|
||||
Bamboo Sprout=Bambussprosse
|
||||
Schematic not found=Schematic nicht gefunden
|
||||
Seaweed=Seetang
|
||||
Agar Powder=Agarpulver
|
||||
Blue Glow Coral=Blaue Leuchtende Koralle
|
||||
Orange Glow Coral=Orange Leuchtende Koralle
|
||||
Pink Glow Coral=Rosa Leuchtende Koralle
|
||||
Green Glow Coral=Grüne Leuchtende Koralle
|
||||
Sandy=Sandy
|
||||
Wet sponge=Nasser Schwamm
|
||||
Sponge=Schwamm
|
||||
Strawberry=Erdbeere
|
||||
Ice Brick=Eisziegel
|
||||
Snow Brick=Schneeziegel
|
||||
Basandra Wood=
|
||||
Sakura Trunk=Sakurastamm
|
||||
Sakura Wood=Sakuraholz
|
||||
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
|
||||
Olive Trunk=
|
||||
Olive Wood=
|
||||
Candle=Kerze
|
||||
Black Candle=Schwarze Kerze
|
||||
Blue Candle=Blaue Kerze
|
||||
Brown Candle=Braune Kerze
|
||||
Cyan Candle=Türkise Kerze
|
||||
Dark Green Candle=Dunkelgrüne Kerze
|
||||
Dark Grey Candle=Dunkelgraue Kerze
|
||||
Green Candle=Grüne Kerze
|
||||
Grey Candle=Graue Kerze
|
||||
Magenta Candle=Magenta Kerze
|
||||
Orange Candle=Orange Kerze
|
||||
Pink Candle=Rosa Kerze
|
||||
Red Candle=Rote Kerze
|
||||
Violet Candle=Violette Kerze
|
||||
Yellow Candle=Gelbe Kerze
|
136
mods/ethereal/locale/ethereal.en.tr
Normal file
|
@ -0,0 +1,136 @@
|
|||
# textdomain: ethereal
|
||||
Blue Marble=
|
||||
Blue Marble Tile=
|
||||
Crystal Spike=
|
||||
Crystal Ingot=
|
||||
Crystal Block=
|
||||
Crystal Sword=
|
||||
Crystal Axe=
|
||||
Crystal Pickaxe=
|
||||
Crystal Shovel=
|
||||
Crystal Gilly Staff=
|
||||
Dried Dirt=
|
||||
Red Baked Clay=
|
||||
Orange Baked Clay=
|
||||
Grey Baked Clay=
|
||||
Quicksand=
|
||||
Etherium Dust=
|
||||
Etherium Ore=
|
||||
Bamboo Floor=
|
||||
Bamboo Block=
|
||||
Palm Wax=
|
||||
Bowl=
|
||||
Stone Ladder=
|
||||
Paper Wall=
|
||||
Glo Stone=
|
||||
Lump of Charcoal=
|
||||
Staff of Light=
|
||||
Sakura Wood Door=
|
||||
Fishing Rod (USE to cast and again when the time is right)=
|
||||
Cooked Fish=
|
||||
Sashimi=
|
||||
Worm=
|
||||
Flight timer about to expire!=
|
||||
Flight Potion=
|
||||
unlimited=
|
||||
Flight already granted, @1 seconds left!=
|
||||
Flight granted, you have @1 seconds!=
|
||||
Banana=
|
||||
Banana Bunch=
|
||||
Banana Dough=
|
||||
Orange=
|
||||
Pine Nuts=
|
||||
Banana Loaf=
|
||||
Coconut=
|
||||
Coconut Slice=
|
||||
Golden Apple=
|
||||
Hearty Stew=
|
||||
Bucket of Cactus Pulp=
|
||||
Firethorn Jelly=
|
||||
Lemon=
|
||||
Candied Lemon=
|
||||
Lemonade=
|
||||
Olive=
|
||||
Olive Oil=
|
||||
Kappa Maki Sushi=
|
||||
Nigiri Sushi=
|
||||
Tamago Sushi=
|
||||
Fugusashi=
|
||||
Teriyaki Chicken=
|
||||
Teriyaki Beef=
|
||||
Mushroom Soup=
|
||||
Boiled Shrimp=
|
||||
Garlic Butter Shrimp=
|
||||
Jellyfish Salad=
|
||||
Raw Calamari=
|
||||
Calamari=
|
||||
Fish & Chips=
|
||||
Willow Twig=
|
||||
Redwood Leaves=
|
||||
Orange Leaves=
|
||||
Banana Leaves=
|
||||
Healing Tree Leaves=
|
||||
Palm Leaves=
|
||||
Birch Leaves=
|
||||
Frost Leaves=
|
||||
Bamboo Leaves=
|
||||
Sakura Leaves=
|
||||
Lemon Tree Leaves=
|
||||
Olive Tree Leaves=
|
||||
Mushroom Cap=
|
||||
Mushroom Pore=
|
||||
Bush=
|
||||
Bush #2=
|
||||
Bush #3=
|
||||
Basandra Bush Stem=
|
||||
Basandra Bush Leaves=
|
||||
Wild Onion=
|
||||
Spore Grass=
|
||||
Firethorn Shrub=
|
||||
Fire Flower=
|
||||
Fire Dust=
|
||||
Vine=
|
||||
Light String Vine=
|
||||
Fern=
|
||||
Fern Tubers=
|
||||
Fiery Dry Shrub=
|
||||
Snowy Grass=
|
||||
Crystal Grass=
|
||||
Lilac=
|
||||
Basandra Bush Sapling=
|
||||
Bamboo Sprout=
|
||||
Schematic not found=
|
||||
Seaweed=
|
||||
Agar Powder=
|
||||
Blue Glow Coral=
|
||||
Orange Glow Coral=
|
||||
Pink Glow Coral=
|
||||
Green Glow Coral=
|
||||
Sandy=
|
||||
Wet sponge=
|
||||
Sponge=
|
||||
Strawberry=
|
||||
Ice Brick=
|
||||
Snow Brick=
|
||||
Basandra Wood=
|
||||
Sakura Trunk=
|
||||
Sakura 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=
|
||||
Olive Trunk=
|
||||
Olive Wood=
|
136
mods/ethereal/locale/ethereal.es.tr
Normal file
|
@ -0,0 +1,136 @@
|
|||
# textdomain: ethereal
|
||||
Blue Marble=Mármol azul
|
||||
Blue Marble Tile=Baldosa de marmol azul
|
||||
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
|
||||
Dried Dirt=Tierra seca
|
||||
Red Baked Clay=Arcilla roja cocida
|
||||
Orange Baked Clay=Arcilla naranja cocida
|
||||
Grey Baked Clay=Arcilla gris cocida
|
||||
Quicksand=Arena movediza
|
||||
Etherium Dust=Polvo de Etherium
|
||||
Etherium Ore=Mineral de Etherium
|
||||
Bamboo Floor=Piso de bamboo
|
||||
Bamboo Block=Bloque de bamboo
|
||||
Palm Wax=Cera de palma
|
||||
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
|
||||
Sakura Wood Door=Puerta de madera de sakura
|
||||
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)
|
||||
Cooked Fish=Pescado cocido
|
||||
Sashimi=Sashimi
|
||||
Worm=Gusano
|
||||
Flight timer about to expire!=¡El tiempo de vuelo está apunto de acabarse!
|
||||
Flight Potion=Poción de vuelo
|
||||
unlimited=
|
||||
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!
|
||||
Banana=Banana
|
||||
Banana Bunch=Racimo de bananas
|
||||
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
|
||||
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
|
||||
Mushroom Soup=Sopa de champiñón
|
||||
Boiled Shrimp=
|
||||
Garlic Butter Shrimp=
|
||||
Jellyfish Salad=
|
||||
Raw Calamari=
|
||||
Calamari=
|
||||
Fish & Chips=
|
||||
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
|
||||
Sakura Leaves=Hojas de sakura
|
||||
Lemon Tree Leaves=Hojas de limonero
|
||||
Olive Tree Leaves=Hojas de olivo
|
||||
Mushroom Cap=Sombrero de champiñón
|
||||
Mushroom Pore=Esporas de champiñón
|
||||
Bush=Arbusto
|
||||
Bush #2=Arbusto #2
|
||||
Bush #3=Arbusto #3
|
||||
Basandra Bush Stem=
|
||||
Basandra Bush Leaves=
|
||||
Wild Onion=Cebolla silvestre
|
||||
Spore Grass=
|
||||
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
|
||||
Lilac=
|
||||
Basandra Bush Sapling=
|
||||
Bamboo Sprout=Brote de bamboo
|
||||
Schematic not found=Schematica no encontrada
|
||||
Seaweed=Alga marina
|
||||
Agar Powder=Polvo de Agar
|
||||
Blue Glow Coral=Coral azul brillante
|
||||
Orange Glow Coral=Coral naranjo brillante
|
||||
Pink Glow Coral=Coral rosado brillante
|
||||
Green Glow Coral=Coral verde brillante
|
||||
Sandy=
|
||||
Wet sponge=Esponja de mar con agua
|
||||
Sponge=Esponja de mar
|
||||
Strawberry=Fresa
|
||||
Ice Brick=Ladrillo de hielo
|
||||
Snow Brick=Ladrillo de nieve
|
||||
Basandra Wood=
|
||||
Sakura Trunk=Tronco de sakura
|
||||
Sakura Wood=Madera de sakura
|
||||
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
|
||||
Olive Trunk=Tronco de olivo
|
||||
Olive Wood=Madera de olivo
|
137
mods/ethereal/locale/ethereal.fr.tr
Normal file
|
@ -0,0 +1,137 @@
|
|||
# textdomain: ethereal
|
||||
Blue Marble=Marbre bleu
|
||||
Blue Marble Tile=Dalle de marbre bleu
|
||||
Crystal Spike=Pic de cristal
|
||||
Crystal Ingot=Lingot de cristal
|
||||
Crystal Block=Bloc de cristal
|
||||
Crystal Sword=Épée de cristal
|
||||
Crystal Axe=Hâche de cristal
|
||||
Crystal Pickaxe=Pioche de cristal
|
||||
Crystal Shovel=Pelle de cristal
|
||||
Crystal Gilly Staff=Baton de cristal
|
||||
Dried Dirt=Terre désséché
|
||||
Red Baked Clay=Terre cuite rouge
|
||||
Orange Baked Clay=Terre cuite orange
|
||||
Grey Baked Clay=Terre cuite grise
|
||||
Quicksand=Sables mouvants
|
||||
Etherium Dust=Poudre céleste
|
||||
Etherium Ore=Minerai céleste
|
||||
Bamboo Floor=Plancher de bambou
|
||||
Bamboo Block=Bloc de bambou
|
||||
Paper Wall=Mur en papiers
|
||||
Palm Wax=Cire de palmier
|
||||
Bowl=Bol
|
||||
Stone Ladder=Échelle en pierre
|
||||
Paper Wall=Mur en papier
|
||||
Glo Stone=Pierre luminescente
|
||||
Lump of Charcoal=Morceau de charbon de bois
|
||||
Staff of Light=Bâton de lumière
|
||||
Sakura Wood Door=Porte en bois de cerisier Japonais
|
||||
Fishing Rod (USE to cast and again when the time is right)=Canne à pêche (Action pour lancer, puis action pour mouliner au bon moment)
|
||||
Cooked Fish=Poisson cuisiné
|
||||
Sashimi=Sashimi
|
||||
Worm=Ver
|
||||
Flight timer about to expire!=La potion de vol se discipe!
|
||||
Flight Potion=Potion de vol
|
||||
unlimited=illimité
|
||||
Flight already granted, @1 seconds left!=Vous pouvez déjà voler pendant @1 secondes!
|
||||
Flight granted, you have @1 seconds!=Vous pouvez maintenant voler pendant @1 secondes!
|
||||
Banana=Banane
|
||||
Banana Bunch=Régime de banane
|
||||
Banana Dough=Pâton de pain de banane
|
||||
Orange=Orange
|
||||
Pine Nuts=Pignon de pin
|
||||
Banana Loaf=Pain de banane
|
||||
Coconut=Noix de coco
|
||||
Coconut Slice=Morceau de noix de coco
|
||||
Golden Apple=Pomme dorée
|
||||
Hearty Stew=Ragoût copieux
|
||||
Bucket of Cactus Pulp=Seau de pulpe de cactus
|
||||
Firethorn Jelly=Gelée de Pyracantha
|
||||
Lemon=Citron
|
||||
Candied Lemon=Citron confit
|
||||
Lemonade=Limonade
|
||||
Olive=Olive
|
||||
Olive Oil=Huile d'olive
|
||||
Kappa Maki Sushi=Maki au concombre
|
||||
Nigiri Sushi=Nigiri au saumon
|
||||
Tamago Sushi=Yaki à l'omelette
|
||||
Fugusashi=Sashimi au fugu
|
||||
Teriyaki Chicken=Poulet teriyaki
|
||||
Teriyaki Beef=Boeuf teriyaki
|
||||
Mushroom Soup=Soupe aux champignons
|
||||
Boiled Shrimp=Crevettes vapeur
|
||||
Garlic Butter Shrimp=Crevettes au beurre d'ail
|
||||
Jellyfish Salad=Salade de calamar
|
||||
Raw Calamari=Calamar cru
|
||||
Calamari=Beignet de calamar
|
||||
Fish & Chips=Fish & chips
|
||||
Willow Twig=Brindille de saule
|
||||
Redwood Leaves=Feuilles de séquoia
|
||||
Orange Leaves=Feuilles d'oranger
|
||||
Banana Leaves=Feuilles de bananier
|
||||
Healing Tree Leaves=Feuilles de l'arbre à soins
|
||||
Palm Leaves=Feuilles de palmier
|
||||
Birch Leaves=Feuilles de bouleau
|
||||
Frost Leaves=Feuilles de givrier
|
||||
Bamboo Leaves=Feuilles de bambou
|
||||
Sakura Leaves=Feuilles de cerisier du Japon
|
||||
Lemon Tree Leaves=Feuilles de citronier
|
||||
Olive Tree Leaves=Feuilles d'olivier
|
||||
Mushroom Cap=Chapeau de champignon
|
||||
Mushroom Pore=spore de champignon
|
||||
Bush=Arbuste
|
||||
Bush #2=Arbuste #2
|
||||
Bush #3=Arbuste #3
|
||||
Basandra Bush Stem=Tige de buisson de bassandre
|
||||
Basandra Bush Leaves=Feuilles de buisson de bassandre
|
||||
Wild Onion=Oignon sauvage
|
||||
Spore Grass=Spore d'herbe
|
||||
Firethorn Shrub=Arbuste Pyracantha
|
||||
Fire Flower=Fleur de feu
|
||||
Fire Dust=Poudre de feu
|
||||
Vine=Vigne
|
||||
Light String Vine=File de lumière de vigne
|
||||
Fern=Fougère
|
||||
Fern Tubers=Tubercules de fougère
|
||||
Fiery Dry Shrub=Arbuste ardent sec
|
||||
Snowy Grass=Herbe des neiges
|
||||
Crystal Grass=Herbe de cristal
|
||||
Lilac=Lilas
|
||||
Basandra Bush Sapling=Buisson de bassandre
|
||||
Bamboo Sprout=Germe de bambou
|
||||
Schematic not found=Schéma introuvable
|
||||
Seaweed=Algues
|
||||
Agar Powder=Poudre d'agar
|
||||
Blue Glow Coral=Corail lueur bleu
|
||||
Orange Glow Coral=Corail lueur orange
|
||||
Pink Glow Coral=Corail lueur rose
|
||||
Green Glow Coral=Corail lueur vert
|
||||
Sandy=Sable de mer
|
||||
Wet sponge=Éponge mouillée
|
||||
Sponge=Éponge
|
||||
Strawberry=Fraise
|
||||
Ice Brick=Brique de glace
|
||||
Snow Brick=Brique de neige
|
||||
Basandra Wood=Bois de bassandre
|
||||
Sakura Trunk=Tronc de cerisier du Japon
|
||||
Sakura Wood=Bois de cerisier du Japon
|
||||
Willow Trunk=Tronc de saule
|
||||
Willow Wood=Bois de saule
|
||||
Redwood Trunk=Tronc de séquoia
|
||||
Redwood Wood=Bois de séquoia
|
||||
Frost Tree=Abre de gîvre
|
||||
Frost Wood=Bois de l'arbre à givre
|
||||
Healing Tree Trunk=Tronc de l'arbre à soins
|
||||
Healing Tree Wood=Bois de l'arbre à soins
|
||||
Palm Trunk=Tronc de palmier
|
||||
Palm Wood=Bois de palmier
|
||||
Banana Trunk=Tronc de bananier
|
||||
Banana Wood=Bois de bananier
|
||||
Scorched Tree=Arbre brûlé
|
||||
Mushroom=Champignon
|
||||
Birch Trunk=Tronc de bouleau
|
||||
Birch Wood=Bois de bouleau
|
||||
Bamboo=Bambou
|
||||
Olive Trunk=Tronc d'olivier
|
||||
Olive Wood=Bois d'olivier
|
140
mods/ethereal/locale/ethereal.ru.tr
Normal file
|
@ -0,0 +1,140 @@
|
|||
# textdomain: ethereal
|
||||
|
||||
## Items, nodes and other in-game stuff
|
||||
Blue Marble=Голубой Мрамор
|
||||
Blue Marble Tile=Плитка Голубого Мрамора
|
||||
Crystal Spike=Кристальный Шип
|
||||
Crystal Ingot=Кристальный Слиток
|
||||
Crystal Block=Кристальный Блок
|
||||
Crystal Sword=Кристальный Меч
|
||||
Crystal Axe=Кристальный Топор
|
||||
Crystal Pickaxe=Кристальная Кирка
|
||||
Crystal Shovel=Кристальная Лопата
|
||||
Crystal Gilly Staff=Кристальный Джилли Посох
|
||||
Dried Dirt=Сухая Земля
|
||||
Red Baked Clay=Красная Приготовленная Глина
|
||||
Orange Baked Clay=Оранжевая Приготовленная Глина
|
||||
Grey Baked Clay=Серая Приготовленная Глина
|
||||
Quicksand=Зыбучий песок
|
||||
Etherium Dust=Эфирная Пыль
|
||||
Etherium Ore=Эфирная Руда
|
||||
Bamboo Floor=Бамбуковый Пол
|
||||
Bamboo Block=Бамбуковый Блок
|
||||
Paper Wall=Бумажная Стена
|
||||
Palm Wax=Пальмовый Воск
|
||||
Bowl=Миска
|
||||
Stone Ladder=Каменная Лестница
|
||||
Glo Stone=Гло Камень
|
||||
Lump of Charcoal=Кусочек Древесного угля
|
||||
Staff of Light=Посох Света
|
||||
Sakura Wood Door=Деревянная Дверь из Сакуры
|
||||
Fishing Rod (USE to cast and again when the time is right)=Удочка (ИСПОЛЬЗУЙТЕ для заброса и повторите, когда придет время)
|
||||
Cooked Fish=Приготовленная Рыба
|
||||
Sashimi=Сашими
|
||||
Worm=Червяк
|
||||
Flight Potion=Зелье Полёта
|
||||
Banana=Банан
|
||||
Banana Bunch=Кучка Бананов
|
||||
Banana Dough=Банановое Тесто
|
||||
Orange=Апельсин
|
||||
Pine Nuts=Кедровые Орехи
|
||||
Banana Loaf=Банановый Рулет
|
||||
Coconut=Кокос
|
||||
Coconut Slice=Кокосовый Кусочек
|
||||
Golden Apple=Золотое Яблоко
|
||||
Hearty Stew=Сытное Рагу
|
||||
Bucket of Cactus Pulp=Ведро с Кактусовой Мякотью
|
||||
Firethorn Jelly=Желе из Терновника
|
||||
Lemon=Лимон
|
||||
Candied Lemon=Засахаренный Лимон
|
||||
Lemonade=Лимонад
|
||||
Olive=Оливка
|
||||
Olive Oil=Оливковое Масло
|
||||
Kappa Maki Sushi=Суши "Каппа Маки"
|
||||
Nigiri Sushi=Суши "Нигири"
|
||||
Tamago Sushi=Суши "Тамаго"
|
||||
Fugusashi=Фугусаши
|
||||
Teriyaki Chicken=Курица Терияки
|
||||
Teriyaki Beef=Говядина Терияки
|
||||
Mushroom Soup=Суп из Грибов
|
||||
Boiled Shrimp=Вареные Креветки
|
||||
Garlic Butter Shrimp=Креветки в чесночном масле
|
||||
Jellyfish Salad=Салат из Медуз
|
||||
Raw Calamari=Сырой Кальмар
|
||||
Calamari=Кальмар
|
||||
Fish & Chips=Рыба и Чипсы
|
||||
Willow Twig=Ивовый Прутик
|
||||
Redwood Leaves=Листья Красного дерева
|
||||
Orange Leaves=Апельсиновые Листья
|
||||
Banana Leaves=Банановые Листья
|
||||
Healing Tree Leaves=Листья Целебного Дерева
|
||||
Palm Leaves=Пальмовые Листья
|
||||
Birch Leaves=Берёзовые Листья
|
||||
Frost Leaves=Морозные Листья
|
||||
Bamboo Leaves=Бамбуковые Листья
|
||||
Sakura Leaves=Листья Сакуры
|
||||
Lemon Tree Leaves=Листья Лимонного Дерева
|
||||
Olive Tree Leaves=Листья Оливкого Дерева
|
||||
Mushroom Cap=Шапка Гриба
|
||||
Mushroom Pore=Скважина Гриба
|
||||
Bush=Куст
|
||||
Bush #2=Куст #2
|
||||
Bush #3=Куст #3
|
||||
Basandra Bush Stem=Стебель Куста Басандры
|
||||
Basandra Bush Leaves=Листья Куста Басандры
|
||||
Wild Onion=Дикий Лук
|
||||
Spore Grass=Споровая Трава
|
||||
Firethorn Shrub=Куст Терновника
|
||||
Fire Flower=Огненный Цветок
|
||||
Fire Dust=Огненная Пыль
|
||||
Vine=Лианы
|
||||
Light String Vine=Легко-Струнная Виноградная Лоза
|
||||
Fern=Папоротник
|
||||
Fern Tubers=Клубни Папоротника
|
||||
Fiery Dry Shrub=Огненный Сухой кустарник
|
||||
Snowy Grass=Заснеженная Трава
|
||||
Crystal Grass=Кристальная Трава
|
||||
Lilac=Сирень
|
||||
Basandra Bush Sapling=Росток Куста Басандры
|
||||
Bamboo Sprout=Росток Бамбука
|
||||
Seaweed=Морские водоросли
|
||||
Agar Powder=Агаровый Порошок
|
||||
Blue Glow Coral=Голубой Cветящийся Коралл
|
||||
Orange Glow Coral=Оранжевый Cветящийся Коралл
|
||||
Pink Glow Coral=Розовый Cветящийся Коралл
|
||||
Green Glow Coral=Зелёный Cветящийся Коралл
|
||||
Sandy=Песчаный
|
||||
Wet sponge=Мокрая губка
|
||||
Sponge=Губка
|
||||
Strawberry=Клубника
|
||||
Ice Brick=Ледяной Кирпич
|
||||
Snow Brick=Снежный Кирпич
|
||||
Basandra Wood=Древесина Басандры
|
||||
Sakura Trunk=Ствол Сакуры
|
||||
Sakura 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=Бамбук
|
||||
Olive Trunk=Оливковый Ствол
|
||||
Olive Wood=Оливковая Древесина
|
||||
|
||||
## Messages
|
||||
unlimited=неограниченно
|
||||
Flight timer about to expire!=Таймер полёта скоро истечёт!
|
||||
Flight already granted, @1 seconds left!=Полёт уже выдан, @1 секунд осталось!
|
||||
Flight granted, you have @1 seconds!=Полёт выдан, у вас @1 секунд!
|
||||
Schematic not found=
|
136
mods/ethereal/locale/ethereal.zh_CN.tr
Normal file
|
@ -0,0 +1,136 @@
|
|||
# textdomain: ethereal
|
||||
Blue Marble=
|
||||
Blue Marble Tile=
|
||||
Crystal Spike=水晶尖
|
||||
Crystal Ingot=水晶锭
|
||||
Crystal Block=水晶块
|
||||
Crystal Sword=水晶剑
|
||||
Crystal Axe=水晶斧
|
||||
Crystal Pickaxe=水晶锄
|
||||
Crystal Shovel=
|
||||
Crystal Gilly Staff=水晶网络人员
|
||||
Dried Dirt=干土
|
||||
Red Baked Clay=红色烤粘土
|
||||
Orange Baked Clay=橙色烤粘土
|
||||
Grey Baked Clay=灰色烤粘土
|
||||
Quicksand=流沙
|
||||
Etherium Dust=
|
||||
Etherium Ore=
|
||||
Bamboo Floor=竹地板
|
||||
Bamboo Block=
|
||||
Palm Wax=棕榈蜡
|
||||
Bowl=碗
|
||||
Stone Ladder=石梯
|
||||
Paper Wall=纸墙
|
||||
Glo Stone=荧光石
|
||||
Lump of Charcoal=块木炭
|
||||
Staff of Light=灯柱
|
||||
Sakura Wood Door=
|
||||
Fishing Rod (USE to cast and again when the time is right)=
|
||||
Cooked Fish=煮熟的鱼
|
||||
Sashimi=生鱼片
|
||||
Worm=蠕虫
|
||||
Flight timer about to expire!=
|
||||
Flight Potion=
|
||||
unlimited=
|
||||
Flight already granted, @1 seconds left!=
|
||||
Flight granted, you have @1 seconds!=
|
||||
Banana=香蕉
|
||||
Banana Bunch=
|
||||
Banana Dough=香蕉皮
|
||||
Orange=橙子
|
||||
Pine Nuts=松子
|
||||
Banana Loaf=香蕉面包
|
||||
Coconut=椰子
|
||||
Coconut Slice=椰子片
|
||||
Golden Apple=金苹果
|
||||
Hearty Stew=丰盛的炖肉
|
||||
Bucket of Cactus Pulp=仙人掌果肉桶
|
||||
Firethorn Jelly=
|
||||
Lemon=
|
||||
Candied Lemon=
|
||||
Lemonade=
|
||||
Olive=
|
||||
Olive Oil=
|
||||
Kappa Maki Sushi=
|
||||
Nigiri Sushi=
|
||||
Tamago Sushi=
|
||||
Fugusashi=
|
||||
Teriyaki Chicken=
|
||||
Teriyaki Beef=
|
||||
Mushroom Soup=蘑菇汤
|
||||
Boiled Shrimp=
|
||||
Garlic Butter Shrimp=
|
||||
Jellyfish Salad=
|
||||
Raw Calamari=
|
||||
Calamari=
|
||||
Fish & Chips=
|
||||
Willow Twig=柳树枝
|
||||
Redwood Leaves=红杉树叶
|
||||
Orange Leaves=橙子树叶
|
||||
Banana Leaves=香蕉树叶
|
||||
Healing Tree Leaves=治疗树叶
|
||||
Palm Leaves=棕榈叶
|
||||
Birch Leaves=白桦树叶
|
||||
Frost Leaves=霜叶子
|
||||
Bamboo Leaves=竹叶
|
||||
Sakura Leaves=
|
||||
Lemon Tree Leaves=
|
||||
Olive Tree Leaves=
|
||||
Mushroom Cap=蘑菇帽
|
||||
Mushroom Pore=蘑菇孔隙
|
||||
Bush=灌木
|
||||
Bush #2=灌木 #2
|
||||
Bush #3=灌木 #3
|
||||
Basandra Bush Stem=
|
||||
Basandra Bush Leaves=
|
||||
Wild Onion=野生洋葱
|
||||
Spore Grass=
|
||||
Firethorn Shrub=
|
||||
Fire Flower=火焰花
|
||||
Fire Dust=火土
|
||||
Vine=藤蔓
|
||||
Light String Vine=荧光藤蔓
|
||||
Fern=蕨类植物
|
||||
Fern Tubers=蕨类植物的茎
|
||||
Fiery Dry Shrub=干枯灌木
|
||||
Snowy Grass=雪草
|
||||
Crystal Grass=水晶草
|
||||
Lilac=
|
||||
Basandra Bush Sapling=
|
||||
Bamboo Sprout=竹笋
|
||||
Schematic not found=没有找到示意图
|
||||
Seaweed=海藻
|
||||
Agar Powder=
|
||||
Blue Glow Coral=蓝色珊瑚
|
||||
Orange Glow Coral=橙色珊瑚
|
||||
Pink Glow Coral=粉色珊瑚
|
||||
Green Glow Coral=绿色珊瑚
|
||||
Sandy=沙子
|
||||
Wet sponge=
|
||||
Sponge=
|
||||
Strawberry=草莓
|
||||
Ice Brick=冰砖
|
||||
Snow Brick=雪砖
|
||||
Basandra Wood=
|
||||
Sakura Trunk=
|
||||
Sakura 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=竹子
|
||||
Olive Trunk=
|
||||
Olive Wood=
|
152
mods/ethereal/locale/template.txt
Normal file
|
@ -0,0 +1,152 @@
|
|||
# textdomain: ethereal
|
||||
Blue Marble=
|
||||
Blue Marble Tile=
|
||||
Crystal Spike=
|
||||
Crystal Ingot=
|
||||
Crystal Block=
|
||||
Crystal Sword=
|
||||
Crystal Axe=
|
||||
Crystal Pickaxe=
|
||||
Crystal Shovel=
|
||||
Crystal Gilly Staff=
|
||||
Dried Dirt=
|
||||
Red Baked Clay=
|
||||
Orange Baked Clay=
|
||||
Grey Baked Clay=
|
||||
Quicksand=
|
||||
Etherium Dust=
|
||||
Etherium Ore=
|
||||
Bamboo Floor=
|
||||
Bamboo Block=
|
||||
Paper Wall=
|
||||
Palm Wax=
|
||||
Bowl=
|
||||
Stone Ladder=
|
||||
Paper Wall=
|
||||
Glo Stone=
|
||||
Lump of Charcoal=
|
||||
Staff of Light=
|
||||
Sakura Wood Door=
|
||||
Fishing Rod (USE to cast and again when the time is right)=
|
||||
Cooked Fish=
|
||||
Sashimi=
|
||||
Worm=
|
||||
Flight timer about to expire!=
|
||||
Flight Potion=
|
||||
unlimited=
|
||||
Flight already granted, @1 seconds left!=
|
||||
Flight granted, you have @1 seconds!=
|
||||
Banana=
|
||||
Banana Bunch=
|
||||
Banana Dough=
|
||||
Orange=
|
||||
Pine Nuts=
|
||||
Banana Loaf=
|
||||
Coconut=
|
||||
Coconut Slice=
|
||||
Golden Apple=
|
||||
Hearty Stew=
|
||||
Bucket of Cactus Pulp=
|
||||
Firethorn Jelly=
|
||||
Lemon=
|
||||
Candied Lemon=
|
||||
Lemonade=
|
||||
Olive=
|
||||
Olive Oil=
|
||||
Kappa Maki Sushi=
|
||||
Nigiri Sushi=
|
||||
Tamago Sushi=
|
||||
Fugusashi=
|
||||
Teriyaki Chicken=
|
||||
Teriyaki Beef=
|
||||
Mushroom Soup=
|
||||
Boiled Shrimp=
|
||||
Garlic Butter Shrimp=
|
||||
Jellyfish Salad=
|
||||
Raw Calamari=
|
||||
Calamari=
|
||||
Fish & Chips=
|
||||
Willow Twig=
|
||||
Redwood Leaves=
|
||||
Orange Leaves=
|
||||
Banana Leaves=
|
||||
Healing Tree Leaves=
|
||||
Palm Leaves=
|
||||
Birch Leaves=
|
||||
Frost Leaves=
|
||||
Bamboo Leaves=
|
||||
Sakura Leaves=
|
||||
Lemon Tree Leaves=
|
||||
Olive Tree Leaves=
|
||||
Mushroom Cap=
|
||||
Mushroom Pore=
|
||||
Bush=
|
||||
Bush #2=
|
||||
Bush #3=
|
||||
Basandra Bush Stem=
|
||||
Basandra Bush Leaves=
|
||||
Wild Onion=
|
||||
Spore Grass=
|
||||
Firethorn Shrub=
|
||||
Fire Flower=
|
||||
Fire Dust=
|
||||
Vine=
|
||||
Light String Vine=
|
||||
Fern=
|
||||
Fern Tubers=
|
||||
Fiery Dry Shrub=
|
||||
Snowy Grass=
|
||||
Crystal Grass=
|
||||
Lilac=
|
||||
Basandra Bush Sapling=
|
||||
Bamboo Sprout=
|
||||
Schematic not found=
|
||||
Seaweed=
|
||||
Agar Powder=
|
||||
Blue Glow Coral=
|
||||
Orange Glow Coral=
|
||||
Pink Glow Coral=
|
||||
Green Glow Coral=
|
||||
Sandy=
|
||||
Wet sponge=
|
||||
Sponge=
|
||||
Strawberry=
|
||||
Ice Brick=
|
||||
Snow Brick=
|
||||
Basandra Wood=
|
||||
Sakura Trunk=
|
||||
Sakura 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=
|
||||
Olive Trunk=
|
||||
Olive Wood=
|
||||
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=
|
231
mods/ethereal/lucky_block.lua
Normal file
|
@ -0,0 +1,231 @@
|
|||
|
||||
-- ethereal schematic path
|
||||
|
||||
local epath = minetest.get_modpath("ethereal") .. "/schematics/"
|
||||
|
||||
-- add 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}},
|
||||
{"mushroomone", ethereal.mushroomone, {x = 4, y = 0, z = 4}},
|
||||
{"mushroomtwo", ethereal.mushroomtwo, {x = 1, y = 0, z = 1}},
|
||||
{"underspike", ethereal.desertstone_under_spike, {x = 1, y = 0, z = 1}},
|
||||
{"ethereal_pond", ethereal.pond, {x = 6, y = 2, z = 7}}
|
||||
})
|
||||
|
||||
-- add lucky blocks
|
||||
|
||||
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},
|
||||
{"sch", "mushroomone", 0, false},
|
||||
{"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},
|
||||
{"sch", "mushroomtwo", 0, false},
|
||||
{"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"},
|
||||
{"sch", "underspike", 0, false},
|
||||
{"sch", "underspike", 0, false, {
|
||||
{"default:cobble", "default:desert_cobble"},
|
||||
{"default:stone", "default:desert_stone"}
|
||||
}},
|
||||
{"sch", "underspike", 0, false, {
|
||||
{"default:cobble", "default:sandstone"},
|
||||
{"default:stone", "default:sandstonebrick"}
|
||||
}},
|
||||
{"sch", "underspike", 0, false, {
|
||||
{"default:cobble", "default:desert_sandstone"},
|
||||
{"default:stone", "default:desert_sandstone_brick"}
|
||||
}},
|
||||
{"sch", "underspike", 0, false, {
|
||||
{"default:cobble", "default:silver_sandstone"},
|
||||
{"default:stone", "default:silver_sandstone_brick"}
|
||||
}},
|
||||
{"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:mushroom_brown_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 = 4},
|
||||
{name = "ethereal:fish_blueram", max = 4},
|
||||
{name = "ethereal:fish_catfish", max = 4},
|
||||
{name = "ethereal:fish_clownfish", max = 4},
|
||||
{name = "ethereal:fish_pike", max = 4},
|
||||
{name = "ethereal:fish_flathead", max = 4},
|
||||
{name = "ethereal:fish_plaice", max = 4},
|
||||
{name = "ethereal:fish_pufferfish", max = 4},
|
||||
{name = "ethereal:fish_salmon", max = 4},
|
||||
{name = "ethereal:fish_cichlid", max = 4},
|
||||
{name = "ethereal:fish_trout", max = 4},
|
||||
{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},
|
||||
}},
|
||||
{"sch", "ethereal_pond", 0, false},
|
||||
{"sch", "ethereal_pond", 0, false, {
|
||||
{"default:river_water_source", "default:lava_source"},
|
||||
{"default:clay", "default:stone"},
|
||||
{"default:dirt", "ethereal:fiery_dirt"},
|
||||
{"default:mossycobble", "default:obsidian"},
|
||||
{"ethereal:bush2", "ethereal:basandra_bush_leaves"},
|
||||
{"default:fern_1", "ethereal:dry_shrub"},
|
||||
{"default:fern_2", "ethereal:dry_shrub"},
|
||||
{"default:fern_3", "ethereal:fire_flower"},
|
||||
{"default:grass_4", "ethereal:dry_shrub"}
|
||||
}},
|
||||
{"sch", "ethereal_pond", 0, false, {
|
||||
{"default:clay", "default:dirt"},
|
||||
{"default:dirt", "default:dry_dirt_with_dry_grass"},
|
||||
{"default:mossycobble", "default:dry_dirt"},
|
||||
{"ethereal:bush2", "default:acacia_bush_leaves"},
|
||||
{"default:fern_1", "default:dry_grass_1"},
|
||||
{"default:fern_2", "default:dry_grass_2"},
|
||||
{"default:fern_3", "default:dry_grass_3"},
|
||||
{"default:grass_4", "default:dry_grass_4"}
|
||||
}},
|
||||
{"sch", "ethereal_pond", 0, false, {
|
||||
{"default:river_water_source", "default:water_source"},
|
||||
{"default:dirt", "default:sand"},
|
||||
{"default:mossycobble", "default:dirt"},
|
||||
{"ethereal:bush2", "default:pine_bush_needles"},
|
||||
{"default:fern_1", "default:marram_grass_1"},
|
||||
{"default:fern_2", "default:marram_grass_2"},
|
||||
{"default:fern_3", "default:marram_grass_3"},
|
||||
{"default:grass_4", "default:dry_shrub"}
|
||||
}},
|
||||
{"sch", "ethereal_pond", 0, false, {
|
||||
{"default:river_water_source", "default:water_source"},
|
||||
{"default:dirt", "default:coral_brown"},
|
||||
{"default:mossycobble", "default:coral_orange"},
|
||||
{"ethereal:bush2", "default:coral_skeleton"},
|
||||
{"default:fern_1", "ethereal:coral2"},
|
||||
{"default:fern_2", "ethereal:coral3"},
|
||||
{"default:fern_3", "ethereal:coral4"},
|
||||
{"default:grass_4", "ethereal:seaweed"}
|
||||
}}
|
||||
})
|
||||
|
||||
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
|
5
mods/ethereal/mod.conf
Normal file
|
@ -0,0 +1,5 @@
|
|||
name = ethereal
|
||||
description = Adds many new biomes, items and features into your world.
|
||||
depends = default, flowers
|
||||
optional_depends = stairs, doors, farming, bakedclay, moreblocks, lucky_block, toolranks, ambience
|
||||
min_minetest_version = 5.2
|
127
mods/ethereal/onion.lua
Normal file
|
@ -0,0 +1,127 @@
|
|||
|
||||
local S = minetest.get_translator("ethereal")
|
||||
|
||||
-- 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},
|
||||
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
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:wild_onion_plant", 2)
|
||||
|
||||
-- Onion definition
|
||||
|
||||
local def = {
|
||||
description = S("Wild Onion") .. S(" Crop"),
|
||||
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))
|
||||
|
||||
-- register for use with farming redo growth routines
|
||||
|
||||
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) or 0 ; if 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
|
119
mods/ethereal/ores.lua
Normal file
|
@ -0,0 +1,119 @@
|
|||
|
||||
-- stratum ore helper
|
||||
|
||||
local function add_stratum(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 baked clay layers (mesa biome is between 20 and 71)
|
||||
|
||||
for n = 0, 5 do
|
||||
|
||||
add_stratum(20 + (n * 9), 21 + (n * 9), "bakedclay:brown")
|
||||
add_stratum(22 + (n * 9), 23 + (n * 9), "bakedclay:grey")
|
||||
add_stratum(25 + (n * 9), 26 + (n * 9), "bakedclay:red")
|
||||
end
|
||||
|
||||
-- scatter ore helper
|
||||
|
||||
local function add_ore(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, -45, -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
|
||||
})
|
||||
|
||||
-- Clay in silver and desert sand beaches
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "blob",
|
||||
ore = "default:clay",
|
||||
wherein = {"default:silver_sand", "default:desert_sand"},
|
||||
clust_scarcity = 16 * 16 * 16,
|
||||
clust_size = 5,
|
||||
y_max = 0,
|
||||
y_min = -15,
|
||||
noise_threshold = 0.0,
|
||||
noise_params = {
|
||||
offset = 0.5,
|
||||
scale = 0.2,
|
||||
spread = {x = 5, y = 5, z = 5},
|
||||
seed = -316,
|
||||
octaves = 1,
|
||||
persist = 0.0
|
||||
}
|
||||
})
|
376
mods/ethereal/plantlife.lua
Normal file
|
@ -0,0 +1,376 @@
|
|||
|
||||
local S = minetest.get_translator("ethereal")
|
||||
|
||||
-- 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 with 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) -- hurts when punched
|
||||
|
||||
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"}
|
||||
}
|
||||
})
|
||||
|
||||
-- Boston Fern
|
||||
|
||||
-- Fern (boston)
|
||||
if minetest.get_modpath("default") then
|
||||
minetest.register_alias("ethereal:fern","default:fern_3")
|
||||
minetest.override_item("default:fern_3",{
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {"ethereal:fern_tubers"}, rarity = 6},
|
||||
{items = {"default:fern_1"}},
|
||||
},
|
||||
},
|
||||
})
|
||||
else
|
||||
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}
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
-- Boston Ferns sometimes drop edible Tubers
|
||||
|
||||
minetest.register_craftitem("ethereal:fern_tubers", {
|
||||
description = S("Fern Tubers"),
|
||||
inventory_image = "ethereal_fern_tubers.png",
|
||||
groups = {food_tuber = 1},
|
||||
on_use = minetest.item_eat(1)
|
||||
})
|
||||
|
||||
ethereal.add_eatable("ethereal:fern_tubers", 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}
|
||||
}
|
||||
})
|
||||
|
||||
-- tall 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"}}
|
||||
})
|
||||
|
||||
-- moss helper function
|
||||
|
||||
local function add_moss(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 types (has grass texture on all sides)
|
||||
|
||||
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")
|
||||
add_moss("bamboo", "Bamboo", "ethereal_grass_bamboo_top.png", "ethereal:bamboo_leaves")
|
||||
|
||||
-- shroom helper function
|
||||
|
||||
local function add_shroom(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 illuminated cave shrooms
|
||||
|
||||
add_shroom("red", "Red", "")
|
||||
add_shroom("green", "Green", "2")
|
||||
add_shroom("cyan", "Cyan", "3")
|
||||
|
||||
-- poppy
|
||||
|
||||
if not minetest.get_modpath("xanadu") then
|
||||
|
||||
minetest.register_node(":xanadu:poppy", {
|
||||
description = S("Poppy"),
|
||||
tiles = {"ethereal_poppy.png"},
|
||||
inventory_image = "ethereal_poppy.png",
|
||||
wield_image = "ethereal_poppy.png",
|
||||
sunlight_propagates = true,
|
||||
buildable_to = true,
|
||||
waving = 1,
|
||||
drawtype = "plantlike",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
groups = {flower = 1, flora = 1, snappy = 3, attached_node = 1, flammable = 3},
|
||||
selection_box = {
|
||||
type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
-- craft dye from plant
|
||||
minetest.register_craft({
|
||||
output = "dye:red 4",
|
||||
recipe = {{"xanadu:poppy"}}
|
||||
})
|
||||
end
|
328
mods/ethereal/sapling.lua
Normal file
|
@ -0,0 +1,328 @@
|
|||
|
||||
-- translator and protection check setting
|
||||
|
||||
local S = minetest.get_translator("ethereal")
|
||||
local sapling_protection_check = minetest.settings:get_bool(
|
||||
"ethereal.sapling_protection_check", false)
|
||||
|
||||
-- sapling placement helper
|
||||
|
||||
local function prepare_on_place(itemstack, placer, pointed_thing, name, w, h)
|
||||
|
||||
if sapling_protection_check then
|
||||
|
||||
-- check if grown tree area intersects any players protected area
|
||||
return default.sapling_on_place(itemstack, placer, pointed_thing,
|
||||
name, {x = -w, y = 1, z = -w}, {x = w, y = h, z = w}, 4)
|
||||
end
|
||||
|
||||
-- Position of sapling
|
||||
local pos = pointed_thing.under
|
||||
local node = minetest.get_node_or_nil(pos)
|
||||
local pdef = node and minetest.registered_nodes[node.name]
|
||||
|
||||
-- Check if node clicked on has it's own on_rightclick function
|
||||
if pdef and pdef.on_rightclick
|
||||
and not (placer and placer:is_player() and placer:get_player_control().sneak) then
|
||||
return pdef.on_rightclick(pos, node, placer, itemstack, pointed_thing)
|
||||
end
|
||||
|
||||
-- place normally
|
||||
return minetest.item_place_node(itemstack, placer, pointed_thing)
|
||||
end
|
||||
|
||||
-- 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,
|
||||
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
return prepare_on_place(itemstack, placer, pointed_thing,
|
||||
"ethereal:basandra_bush_sapling", 1, 2)
|
||||
end
|
||||
})
|
||||
|
||||
-- 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 = {-3 / 16, -0.5, -3 / 16, 3 / 16, -0.1, 3 / 16}
|
||||
},
|
||||
on_use = minetest.item_eat(2),
|
||||
grown_height = 11,
|
||||
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
return prepare_on_place(itemstack, placer, pointed_thing,
|
||||
"ethereal:bamboo_sprout", 1, 18)
|
||||
end
|
||||
})
|
||||
|
||||
-- register Sapling helper
|
||||
|
||||
local function register_sapling(name, desc, texture, width, 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,
|
||||
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
return prepare_on_place(itemstack, placer, pointed_thing,
|
||||
name .. "_sapling", width, height)
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
-- add saplings
|
||||
|
||||
register_sapling("ethereal:willow", "Willow", "ethereal_willow_sapling", 5, 14)
|
||||
register_sapling("ethereal:yellow_tree", "Healing", "ethereal_yellow_tree_sapling", 4, 19)
|
||||
register_sapling("ethereal:big_tree", "Big", "ethereal_big_tree_sapling", 4, 7)
|
||||
register_sapling("ethereal:banana_tree", "Banana", "ethereal_banana_tree_sapling", 3, 8)
|
||||
register_sapling("ethereal:frost_tree", "Frost", "ethereal_frost_tree_sapling", 4, 19)
|
||||
register_sapling("ethereal:mushroom", "Mushroom", "ethereal_mushroom_sapling", 4, 11)
|
||||
register_sapling("ethereal:mushroom_brown", "Brown Mushroom",
|
||||
"ethereal_mushroom_brown_sapling", 1, 11)
|
||||
register_sapling("ethereal:palm", "Palm", "moretrees_palm_sapling", 4, 9)
|
||||
register_sapling("ethereal:giant_redwood", "Giant Redwood",
|
||||
"ethereal_giant_redwood_sapling", 7, 33)
|
||||
register_sapling("ethereal:redwood", "Redwood", "ethereal_redwood_sapling", 4, 21)
|
||||
register_sapling("ethereal:orange_tree", "Orange", "ethereal_orange_tree_sapling", 2, 6)
|
||||
register_sapling("ethereal:birch", "Birch", "moretrees_birch_sapling", 2, 7)
|
||||
register_sapling("ethereal:sakura", "Sakura", "ethereal_sakura_sapling", 4, 10)
|
||||
register_sapling("ethereal:lemon_tree", "Lemon", "ethereal_lemon_tree_sapling", 2, 7)
|
||||
register_sapling("ethereal:olive_tree", "Olive", "ethereal_olive_tree_sapling", 3, 10)
|
||||
|
||||
-- add tree schematic
|
||||
|
||||
local function add_tree(pos, schem, replace)
|
||||
|
||||
minetest.swap_node(pos, {name = "air"})
|
||||
|
||||
minetest.place_schematic(pos, schem, "random", replace, false,
|
||||
"place_center_x, place_center_z")
|
||||
end
|
||||
|
||||
-- get mod path and schematic folder
|
||||
|
||||
local path = minetest.get_modpath("ethereal") .. "/schematics/"
|
||||
|
||||
-- global tree grow functions
|
||||
|
||||
function ethereal.grow_basandra_bush(pos)
|
||||
add_tree(pos, ethereal.basandrabush)
|
||||
end
|
||||
|
||||
function ethereal.grow_yellow_tree(pos)
|
||||
add_tree(pos, ethereal.yellowtree)
|
||||
end
|
||||
|
||||
function ethereal.grow_big_tree(pos)
|
||||
add_tree(pos, ethereal.bigtree)
|
||||
end
|
||||
|
||||
function ethereal.grow_banana_tree(pos)
|
||||
|
||||
if math.random(2) == 1 and minetest.find_node_near(pos, 1, {"farming:soil_wet"}) then
|
||||
|
||||
add_tree(pos, ethereal.bananatree,
|
||||
{{"ethereal:banana", "ethereal:banana_bunch"}})
|
||||
else
|
||||
add_tree(pos, ethereal.bananatree)
|
||||
end
|
||||
end
|
||||
|
||||
function ethereal.grow_frost_tree(pos)
|
||||
add_tree(pos, ethereal.frosttrees)
|
||||
end
|
||||
|
||||
function ethereal.grow_mushroom_tree(pos)
|
||||
add_tree(pos, ethereal.mushroomone)
|
||||
end
|
||||
|
||||
function ethereal.grow_mushroom_brown_tree(pos)
|
||||
add_tree(pos, ethereal.mushroomtwo)
|
||||
end
|
||||
|
||||
function ethereal.grow_palm_tree(pos)
|
||||
add_tree(pos, ethereal.palmtree)
|
||||
end
|
||||
|
||||
function ethereal.grow_willow_tree(pos)
|
||||
add_tree(pos, ethereal.willow)
|
||||
end
|
||||
|
||||
function ethereal.grow_redwood_tree(pos)
|
||||
add_tree(pos, ethereal.redwood_small_tree)
|
||||
end
|
||||
|
||||
function ethereal.grow_giant_redwood_tree(pos)
|
||||
add_tree(pos, ethereal.redwood_tree)
|
||||
end
|
||||
|
||||
function ethereal.grow_orange_tree(pos)
|
||||
add_tree(pos, ethereal.orangetree)
|
||||
end
|
||||
|
||||
function ethereal.grow_bamboo_tree(pos)
|
||||
add_tree(pos, ethereal.bambootree)
|
||||
end
|
||||
|
||||
function ethereal.grow_birch_tree(pos)
|
||||
add_tree(pos, ethereal.birchtree)
|
||||
end
|
||||
|
||||
function ethereal.grow_sakura_tree(pos)
|
||||
|
||||
if math.random(10) == 1 then
|
||||
|
||||
add_tree(pos, ethereal.sakura_tree,
|
||||
{{"ethereal:sakura_leaves", "ethereal:sakura_leaves2"}})
|
||||
else
|
||||
add_tree(pos, ethereal.sakura_tree)
|
||||
end
|
||||
end
|
||||
|
||||
function ethereal.grow_lemon_tree(pos)
|
||||
add_tree(pos, ethereal.lemontree)
|
||||
end
|
||||
|
||||
function ethereal.grow_olive_tree(pos)
|
||||
add_tree(pos, ethereal.olivetree)
|
||||
end
|
||||
|
||||
-- return True if sapling has enough height room to grow
|
||||
|
||||
local function enough_height(pos, height)
|
||||
|
||||
return minetest.line_of_sight(
|
||||
{x = pos.x, y = pos.y + 1, z = pos.z},
|
||||
{x = pos.x, y = pos.y + height, z = pos.z})
|
||||
end
|
||||
|
||||
-- global function run by Abm
|
||||
|
||||
function ethereal.grow_sapling(pos, node)
|
||||
|
||||
if (minetest.get_node_light(pos) or 0) < 13 then return end
|
||||
|
||||
-- get node below sapling
|
||||
local under = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}).name
|
||||
local def = minetest.registered_nodes[node.name] ; if not def then return end
|
||||
local height = def.grown_height or 33
|
||||
|
||||
-- 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:mushroom_brown_sapling"
|
||||
and under == "ethereal:mushroom_dirt" then ethereal.grow_mushroom_brown_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 Abm
|
||||
|
||||
minetest.register_abm({
|
||||
label = "Ethereal grow sapling",
|
||||
nodenames = {"group:ethereal_sapling"},
|
||||
interval = 10,
|
||||
chance = 50,
|
||||
catch_up = false,
|
||||
action = ethereal.grow_sapling -- (pos, node)
|
||||
})
|
||||
|
||||
-- 2x redwood saplings make 1x giant redwood sapling
|
||||
|
||||
minetest.register_craft({
|
||||
output = "ethereal:giant_redwood_sapling",
|
||||
recipe = {{"ethereal:redwood_sapling", "ethereal:redwood_sapling"}}
|
||||
})
|
87
mods/ethereal/schematics/bamboo_tree.lua
Normal file
|
@ -0,0 +1,87 @@
|
|||
|
||||
local _ = {name = "air", param1 = 000}
|
||||
local b = {name = "ethereal:bamboo", param1 = 255}
|
||||
local B = {name = "ethereal:bamboo", param1 = 255, force_place = true}
|
||||
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 = 2, prob = 127},
|
||||
{ypos = 3, prob = 127},
|
||||
{ypos = 4, prob = 127},
|
||||
{ypos = 5, 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
|
85
mods/ethereal/schematics/banana_tree.lua
Normal file
|
@ -0,0 +1,85 @@
|
|||
|
||||
local _ = {name = "air", param1 = 0}
|
||||
local t = {name = "ethereal:banana_trunk", param1 = 255}
|
||||
local T = {name = "ethereal:banana_trunk", param1 = 255, force_place = true}
|
||||
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 = 2, prob = 127},
|
||||
{ypos = 3, 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,_,_,_,
|
||||
|
||||
}
|
||||
}
|
23
mods/ethereal/schematics/basandra_bush.lua
Normal 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,
|
||||
|
||||
}
|
||||
}
|
101
mods/ethereal/schematics/bigtree.lua
Normal file
|
@ -0,0 +1,101 @@
|
|||
|
||||
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}
|
||||
local M = {name = "default:tree", prob = 255, force_place = true}
|
||||
|
||||
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,M,T,t,_,_,
|
||||
_,_,_,T,M,T,_,_,_,
|
||||
_,_,_,T,M,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,_,_,_,_,
|
||||
_,_,_,_,_,_,_,_,_,
|
||||
_,_,_,_,_,_,_,_,_,
|
||||
_,_,_,_,_,_,_,_,_,
|
||||
|
||||
}
|
||||
}
|
65
mods/ethereal/schematics/birch_tree.lua
Normal file
|
@ -0,0 +1,65 @@
|
|||
|
||||
local _ = {name = "air", param1 = 0}
|
||||
local t = {name = "ethereal:birch_trunk", param1 = 255}
|
||||
local T = {name = "ethereal:birch_trunk", param1 = 255, force_place = true}
|
||||
local L = {name = "ethereal:birch_leaves", param1 = 255}
|
||||
local l = {name = "ethereal:birch_leaves", param1 = 150}
|
||||
|
||||
ethereal.birchtree = {
|
||||
|
||||
size = {x = 5, y = 8, z = 5},
|
||||
|
||||
yslice_prob = {
|
||||
{ypos = 2, 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,_,_,
|
||||
_,_,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,
|
||||
_,_,_,_,_,
|
||||
_,_,_,_,_,
|
||||
|
||||
}
|
||||
}
|
38
mods/ethereal/schematics/bush.lua
Normal 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,
|
||||
_,_,_,_,_,
|
||||
_,_,_,_,_,
|
||||
|
||||
}
|
||||
}
|
BIN
mods/ethereal/schematics/cherry_tree_1.mts
Normal file
BIN
mods/ethereal/schematics/cherry_tree_2.mts
Normal file
BIN
mods/ethereal/schematics/corals.mts
Normal file
33
mods/ethereal/schematics/desertstone_spike.lua
Normal file
|
@ -0,0 +1,33 @@
|
|||
|
||||
-- simple fix for Flux's stairsplus mod as it breaks compatibility
|
||||
local nodname = minetest.get_modpath("stairsplus")
|
||||
and "default:stair_desert_cobble_outer" or "stairs:stair_outer_desert_cobble"
|
||||
|
||||
local _ = {name = "air", param1 = 0}
|
||||
local ds = {name = "default:desert_stone", param1 = 255, param2 = 0}
|
||||
local dc = {name = "default:desert_cobble", param1 = 255, param2 = 0}
|
||||
local s0 = {name = nodname, param1 = 255, param2 = 0}
|
||||
local s2 = {name = nodname, param1 = 255, param2 = 2}
|
||||
local s3 = {name = nodname, param1 = 255, param2 = 3}
|
||||
local et = {name = "ethereal:etherium_ore", param1 = 128}
|
||||
|
||||
ethereal.desertstone_spike = {
|
||||
|
||||
size = {x = 2, y = 3, z = 2},
|
||||
|
||||
yslice_prob = {
|
||||
{ypos = 2, prob = 127}
|
||||
},
|
||||
|
||||
data = {
|
||||
|
||||
et, ds,
|
||||
dc, s0,
|
||||
s3, _,
|
||||
|
||||
ds, ds,
|
||||
s2,s3,
|
||||
_,_,
|
||||
|
||||
}
|
||||
}
|
48
mods/ethereal/schematics/desertstone_under_spike.lua
Normal file
|
@ -0,0 +1,48 @@
|
|||
|
||||
local _ = {name = "air", param1 = 000}
|
||||
local S = {name = "default:stone", param1 = 255}
|
||||
local s = {name = "default:stone", param1 = 127}
|
||||
local C = {name = "default:cobble", param1 = 255}
|
||||
local c = {name = "default:cobble", param1 = 127}
|
||||
|
||||
ethereal.desertstone_under_spike = {
|
||||
|
||||
size = {x = 3, y = 8, z = 3},
|
||||
|
||||
yslice_prob = {
|
||||
{ypos = 3, prob = 127},
|
||||
{ypos = 5, prob = 127},
|
||||
{ypos = 6, prob = 127},
|
||||
},
|
||||
|
||||
data = {
|
||||
|
||||
C,S,C,
|
||||
C,S,C,
|
||||
_,S,_,
|
||||
_,S,_,
|
||||
_,C,_,
|
||||
_,_,_,
|
||||
_,_,_,
|
||||
_,_,_,
|
||||
|
||||
S,S,S,
|
||||
S,S,S,
|
||||
S,S,S,
|
||||
_,S,_,
|
||||
_,S,_,
|
||||
_,S,_,
|
||||
_,S,_,
|
||||
_,C,_,
|
||||
|
||||
C,S,C,
|
||||
C,S,C,
|
||||
_,S,_,
|
||||
_,S,_,
|
||||
_,C,_,
|
||||
_,_,_,
|
||||
_,_,_,
|
||||
_,_,_,
|
||||
|
||||
}
|
||||
}
|
185
mods/ethereal/schematics/frosttrees.lua
Normal file
|
@ -0,0 +1,185 @@
|
|||
|
||||
local _ = {name = "air", prob = 0}
|
||||
local l = {name = "ethereal:frost_leaves", prob = 255}
|
||||
local t = {name = "ethereal:frost_tree", prob = 255}
|
||||
local T = {name = "ethereal:frost_tree", prob = 255, force_place = true}
|
||||
|
||||
ethereal.frosttrees = {
|
||||
|
||||
size = {x = 8, y = 19, z = 8},
|
||||
|
||||
yslice_prob = {
|
||||
{ypos = 2, prob = 127}, -- trunk
|
||||
{ypos = 3, prob = 127},
|
||||
{ypos = 4, prob = 127},
|
||||
{ypos = 5, prob = 127},
|
||||
{ypos = 6, prob = 127},
|
||||
{ypos = 7, 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,_,_,_,
|
||||
_,_,_,_,_,_,_,_,
|
||||
_,_,_,_,_,_,_,_,
|
||||
_,_,_,_,_,_,_,_,
|
||||
_,_,_,_,_,_,_,_,
|
||||
_,_,_,_,_,_,_,_,
|
||||
|
||||
}
|
||||
}
|
BIN
mods/ethereal/schematics/gaunt_tree_1.mts
Normal file
BIN
mods/ethereal/schematics/gaunt_tree_2.mts
Normal file
BIN
mods/ethereal/schematics/gaunt_tree_3.mts
Normal file
62
mods/ethereal/schematics/igloo.lua
Normal file
|
@ -0,0 +1,62 @@
|
|||
|
||||
local _ = {name = "air", prob = 255, force_place = true}
|
||||
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,_,_,
|
||||
_,_,_,_,_,_,_,
|
||||
_,_,_,_,_,_,_,
|
||||
|
||||
}
|
||||
}
|
71
mods/ethereal/schematics/lemon_tree.lua
Normal file
|
@ -0,0 +1,71 @@
|
|||
|
||||
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 T = {name = "default:tree", param1 = 255, force_place = true}
|
||||
local e = {name = "ethereal:lemon", param1 = 100}
|
||||
|
||||
ethereal.lemontree = {
|
||||
|
||||
size = {x = 5, y = 9, z = 5},
|
||||
|
||||
yslice_prob = {
|
||||
{ypos = 1, 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,_,_,
|
||||
_,_,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,_,_,
|
||||
|
||||
}
|
||||
}
|