Merged in feature/15-add-mineral-waters-under (pull request #27)

15 Add mineral waters under
This commit is contained in:
Juraj Vajda 2024-03-17 19:33:31 +00:00
commit bf2b62f8fc
60 changed files with 3075 additions and 51 deletions

View File

@ -985,8 +985,42 @@ GNU Lesser General Public License v2.1 or later
- everness_ceramic_sherds_ore.png
- everness_pick_archeological.png
- everness_logo.png
- textures/everness_fence_coral_wood.png
- textures/everness_fence_rail_coral_wood.png
- everness_fence_coral_wood.png
- everness_fence_rail_coral_wood.png
- everness_bucket_lava.png
- everness_door_lava_tree_wood.png
- everness_door_lava_tree_wood_item.png
- everness_door_trapdoor_lava_tree_wood.png
- everness_door_trapdoor_lava_tree_wood_side.png
- everness_fence_lava_tree_wood.png
- everness_fence_rail_lava_tree_wood.png
- everness_lava_flowing_animated.png
- everness_lava_source_animated.png
- everness_lava_tree.png
- everness_lava_tree_animated.png
- everness_lava_tree_leaves.png
- everness_lava_tree_sapling.png
- everness_lava_tree_top.png
- everness_lava_tree_wood.png
- everness_mcl_bucket_lava.png
- everness_mineral_cave_moss.png
- everness_mineral_cave_moss_grass.png
- everness_mineral_cave_moss_side.png
- everness_mineral_cobblestone_under.png
- everness_mineral_lava_stone_animated.png
- everness_mineral_lava_stone_bottom.png
- everness_mineral_lava_stone_side.png
- everness_mineral_stone_under.png
- everness_mineral_stone_under_top.png
- everness_mtg_bucket_lava.png
- everness_wall_vine_cave_blue.png
- everness_wall_vine_cave_blue_item.png
- everness_wall_vine_cave_cyan.png
- everness_wall_vine_cave_cyan_item.png
- everness_wall_vine_cave_green.png
- everness_wall_vine_cave_green_item.png
- everness_wall_vine_cave_violet.png
- everness_wall_vine_cave_violet_item.png
**CC-BY-SA-4.0, Pixel Perfection by XSSheep**, https://minecraft.curseforge.com/projects/pixel-perfection-freshly-updated
@ -1498,6 +1532,14 @@ https://freesound.org/people/Rudmer_Rotteveel/sounds/590950/
- everness_water_geyser.1.ogg
**CC0-1.0, by Fission9**, https://freesound.org/people/Fission9/sounds/474850/
- everness_lava_1.ogg
**CC0-1.0, by morganpurkis**, https://freesound.org/people/morganpurkis/sounds/385098/
- everness_lava_2.ogg
### Models
**CC-BY-SA-4.0, by SaKeL**

32
api.lua
View File

@ -969,6 +969,8 @@ end
function Everness.register_ore(self, def)
local _def = table.copy(def)
-- @TOTO using `ore` as name here will override the entry when there are multiple ore registrations for the same ore (different noise)
-- using indexed table would be more appropriate here
local _name = _def.ore
self.registered_ores[_name] = _def
@ -1503,7 +1505,12 @@ end
-- `dtime_s` is the in-game time (in seconds) elapsed since the block
-- was last active
function Everness.cool_lava(pos, node, dtime_s, prev_cool_lava_action)
if node.name == 'default:lava_source' or node.name == 'mcl_core:lava_source' then
-- Variant Obsidian
if
node.name == 'default:lava_source'
or node.name == 'mcl_core:lava_source'
or node.name == 'everness:lava_source'
then
if math.random(1, 10) == 1 then
local obi_nodes = {
{ name = 'everness:blue_crying_obsidian', color = '#2978A6'},
@ -1559,6 +1566,12 @@ function Everness.cool_lava(pos, node, dtime_s, prev_cool_lava_action)
}
})
end
elseif node.name == 'everness:lava_source' then
-- Lava flowing
minetest.set_node(pos, {name = 'default:obsidian'})
elseif node.name == 'everness:lava_flowing' then
-- Lava flowing
minetest.set_node(pos, {name = 'default:stone'})
else
prev_cool_lava_action(pos, node, dtime_s)
end
@ -2155,23 +2168,6 @@ function Everness.add_to_queue_on_generated(self, def)
table.insert(self.on_generated_queue, def)
end
function Everness.find_irecursive(table, c_id)
local found = false
for i, v in ipairs(table) do
if type(v) == 'table' then
Everness.find_irecursive(v, c_id)
end
if c_id == v then
found = true
break
end
end
return found
end
---Merge two tables with key/value pair
---@param t1 table
---@param t2 table

View File

@ -0,0 +1,657 @@
schematic = {
size = {x=7, y=13, z=7},
yslice_prob = {
{ypos=0, prob=254},
{ypos=1, prob=254},
{ypos=2, prob=254},
{ypos=3, prob=254},
{ypos=4, prob=254},
{ypos=5, prob=254},
{ypos=6, prob=254},
{ypos=7, prob=254},
{ypos=8, prob=254},
{ypos=9, prob=254},
{ypos=10, prob=254},
{ypos=11, prob=254},
{ypos=12, prob=254},
},
data = {
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree", prob=254, param2=0, force_place=true},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree", prob=126, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree", prob=126, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="everness:lava_tree_leaves", prob=254, param2=0},
{name="everness:lava_tree_leaves", prob=126, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
{name="air", prob=0, param2=0},
},
}

View File

@ -220,3 +220,19 @@ bucket.register_liquid(
S('Mineral') .. ' ' .. S('Water') .. ' ' .. S('Bucket'),
{ tool = 1, water_bucket = 1 }
)
bucket.register_liquid(
'everness:lava_source',
'everness:lava_flowing',
'everness:bucket_lava',
'everness_bucket_lava.png',
S('Lava Bucket'),
{ tool = 1 }
)
minetest.register_craft({
type = 'fuel',
recipe = 'everness:bucket_lava',
burntime = 370,
replacements = {{ 'everness:bucket_lava', 'everness:bucket_empty' }},
})

View File

@ -122,6 +122,15 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = 'everness:trapdoor_lava_tree 2',
recipe = {
{ 'everness:lava_tree_wood', 'everness:lava_tree_wood', 'everness:lava_tree_wood' },
{ 'everness:lava_tree_wood', 'everness:lava_tree_wood', 'everness:lava_tree_wood' },
{ '', '', '' },
}
})
minetest.register_craft({
output = 'everness:bamboo_mosaic_wood',
recipe = {
@ -310,6 +319,20 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = 'everness:lava_tree_wood 4',
recipe = {
{ 'everness:lava_tree' },
}
})
minetest.register_craft({
output = 'everness:lava_tree_wood 4',
recipe = {
{ 'everness:lava_tree_with_lava' },
}
})
minetest.register_craft({
output = 'everness:coral_sandstone 4',
recipe = {
@ -895,6 +918,12 @@ minetest.register_craft({
burntime = 15,
})
minetest.register_craft({
type = 'fuel',
recipe = 'everness:lava_tree_wood',
burntime = 30,
})
minetest.register_craft({
type = 'fuel',
recipe = 'everness:bamboo_item',
@ -971,6 +1000,18 @@ minetest.register_craft({
recipe = 'everness:forsaken_tundra_cobble',
})
minetest.register_craft({
type = 'cooking',
output = 'everness:mineral_cave_stone',
recipe = 'everness:mineral_cave_cobblestone',
})
minetest.register_craft({
type = 'cooking',
output = 'everness:mineral_lava_stone',
recipe = 'everness:mineral_lava_stone_dry',
})
minetest.register_craft({
type = 'cooking',
output = 'everness:bamboo_dry_block',

View File

@ -89,7 +89,7 @@ doors.register('everness:door_crystal_wood', {
tiles = { 'everness_door_crystal_wood.png' },
inventory_image = 'everness_door_crystal_wood_item.png',
use_texture_alpha = 'blend',
groups = { node = 1, cracky = 3, oddly_breakable_by_hand = 3, door = 1 },
groups = { node = 1, choppy = 3, oddly_breakable_by_hand = 3, door = 1 },
sounds = Everness.node_sound_glass_defaults(),
sound_open = 'everness_door_glass_open',
sound_close = 'everness_door_glass_close',
@ -114,7 +114,7 @@ doors.register_trapdoor('everness:trapdoor_crystal_wood', {
sound_close = 'everness_door_glass_close',
gain_open = 0.2,
gain_close = 0.15,
groups = { node = 1, cracky = 3, oddly_breakable_by_hand = 3, door = 1 },
groups = { node = 1, choppy = 3, oddly_breakable_by_hand = 3, door = 1 },
})
doors.register_fencegate('everness:gate_crystal_wood', {
@ -129,7 +129,7 @@ doors.register('everness:door_cursed_wood', {
tiles = { 'everness_door_cursed_wood.png' },
inventory_image = 'everness_door_cursed_wood_item.png',
use_texture_alpha = 'blend',
groups = { node = 1, cracky = 3, oddly_breakable_by_hand = 3, door = 1 },
groups = { node = 1, choppy = 3, oddly_breakable_by_hand = 3, door = 1 },
sounds = Everness.node_sound_wood_defaults(),
sound_open = 'everness_creaky_door_open',
sound_close = 'everness_creaky_door_close',
@ -153,7 +153,7 @@ doors.register_trapdoor('everness:trapdoor_cursed_wood', {
sound_close = 'everness_creaky_door_close',
gain_open = 0.15,
gain_close = 0.15,
groups = { node = 1, cracky = 3, oddly_breakable_by_hand = 3, door = 1 },
groups = { node = 1, choppy = 3, oddly_breakable_by_hand = 3, door = 1 },
})
-- Palm Wood
@ -163,7 +163,7 @@ doors.register('everness:door_palm_wood', {
tiles = { 'everness_door_palm_wood.png' },
inventory_image = 'everness_door_palm_wood_item.png',
use_texture_alpha = 'blend',
groups = { node = 1, cracky = 3, oddly_breakable_by_hand = 3, door = 1 },
groups = { node = 1, choppy = 3, oddly_breakable_by_hand = 3, door = 1 },
sounds = Everness.node_sound_wood_defaults(),
recipe = {
{ 'everness:palm_tree_wood', 'everness:palm_tree_wood' },
@ -179,7 +179,7 @@ doors.register_trapdoor('everness:trapdoor_palm_wood', {
tile_front = 'everness_door_trapdoor_palm_wood.png',
tile_side = 'everness_door_trapdoor_palm_wood_side.png',
sounds = Everness.node_sound_wood_defaults(),
groups = { node = 1, cracky = 3, oddly_breakable_by_hand = 3, door = 1 },
groups = { node = 1, choppy = 3, oddly_breakable_by_hand = 3, door = 1 },
})
doors.register_fencegate('everness:gate_palm_wood', {
@ -197,3 +197,36 @@ doors.register_fencegate('everness:gate_coral_wood', {
material = 'everness:coral_wood',
groups = { choppy = 2, oddly_breakable_by_hand = 2, flammable = 2 }
})
-- Lava Tree Wood
doors.register('everness:door_lava_tree', {
description = S('Lava Tree Wood Door'),
tiles = { 'everness_door_lava_tree_wood.png' },
inventory_image = 'everness_door_lava_tree_wood_item.png',
use_texture_alpha = 'blend',
groups = { node = 1, choppy = 3, oddly_breakable_by_hand = 3, door = 1 },
sounds = Everness.node_sound_wood_defaults(),
recipe = {
{ 'everness:lava_tree_wood', 'everness:lava_tree_wood' },
{ 'everness:lava_tree_wood', 'everness:lava_tree_wood' },
{ 'everness:lava_tree_wood', 'everness:lava_tree_wood' },
}
})
doors.register_trapdoor('everness:trapdoor_lava_tree', {
description = S('Lava Tree Wood Trapdoor'),
inventory_image = 'everness_door_trapdoor_lava_tree_wood.png',
wield_image = 'everness_door_trapdoor_lava_tree_wood.png',
tile_front = 'everness_door_trapdoor_lava_tree_wood.png',
tile_side = 'everness_door_trapdoor_lava_tree_wood_side.png',
sounds = Everness.node_sound_wood_defaults(),
groups = { node = 1, choppy = 3, oddly_breakable_by_hand = 3, door = 1 },
})
doors.register_fencegate('everness:gate_lava_tree_wood', {
description = S('Lava Tree Wood Fence Gate'),
texture = 'everness_lava_tree.png^[sheet:2x2:1,1',
material = 'everness:lava_tree',
groups = { choppy = 2, oddly_breakable_by_hand = 2, flammable = 2 }
})

View File

@ -980,6 +980,110 @@ local SOUND_DEFS = {
},
}
},
['everness:mineral_waters_under'] = {
day = {
{
name = 'everness_ambience_monster_sigh_cave',
length = 2,
gain = 0.6,
},
{
name = 'everness_ambience_rocks_falling_cave',
length = 12,
gain = 0.6,
},
{
name = 'everness_ambience_water_drips_cave_1',
length = 11,
gain = 0.6,
},
{
name = 'everness_ambience_water_drips_cave_2',
length = 13,
gain = 0.6,
},
{
name = 'everness_ambience_wind_cave_1',
length = 15,
gain = 0.6,
},
{
name = 'everness_ambience_wind_cave_2',
length = 8,
gain = 0.6,
},
{
name = 'everness_ambience_wind_cave_3',
length = 8,
gain = 0.6,
},
{
name = 'everness_ambience_wind_cave_4',
length = 8,
gain = 0.6,
},
{
name = 'everness_ambience_wind_cave_5',
length = 7.5,
gain = 0.6,
},
{
name = 'everness_ambience_cave_1',
length = 9,
gain = 0.6,
},
{
name = 'everness_ambience_cave_2',
length = 9,
gain = 0.6,
},
{
name = 'everness_ambience_cave_3',
length = 5,
gain = 0.6,
},
{
name = 'everness_ambience_cave_4',
length = 8,
gain = 0.6,
},
{
name = 'everness_ambience_cave_5',
length = 8.5,
gain = 0.6,
},
{
name = 'everness_ambience_cave_6',
length = 9,
gain = 0.6,
},
{
name = 'everness_ambience_cave_7',
length = 9,
gain = 0.6,
},
{
name = 'everness_ambience_cave_8',
length = 9,
gain = 0.6,
},
{
name = 'everness_ambience_cave_9',
length = 10,
gain = 0.6,
},
{
name = 'everness_lava_1',
length = 10,
gain = 1.0,
},
{
name = 'everness_lava_2',
length = 10,
gain = 2.0,
},
}
},
}
local PLAYER_SOUNDS = {}

View File

@ -106,7 +106,7 @@ default.register_fence_rail('everness:fence_rail_crystal_wood', {
sounds = Everness.node_sound_wood_defaults()
})
default.register_mesepost('everness:mese_post_light_bamboo_wood', {
default.register_mesepost('everness:mese_post_light_crystal_wood', {
description = S('Crystal Wood Mese Post Light'),
texture = 'everness_fence_crystal_wood.png^[transformFY',
material = 'everness:crystal_wood',
@ -138,7 +138,7 @@ default.register_fence_rail('everness:fence_rail_palm_wood', {
sounds = Everness.node_sound_wood_defaults()
})
default.register_mesepost('everness:mese_post_light_bamboo_wood', {
default.register_mesepost('everness:mese_post_light_palm_wood', {
description = S('Palm Wood Mese Post Light'),
texture = 'everness_fence_palm_wood.png^[transformFY',
material = 'everness:palm_tree_wood',
@ -170,8 +170,40 @@ default.register_fence_rail('everness:fence_rail_coral_wood', {
sounds = Everness.node_sound_wood_defaults()
})
default.register_mesepost('everness:mese_post_light_bamboo_wood', {
default.register_mesepost('everness:mese_post_light_coral_wood', {
description = S('Coral Wood Mese Post Light'),
texture = 'everness_fence_coral_wood.png^[transformFY',
material = 'everness:coral_wood',
})
-- Lava Tree Wood
default.register_fence('everness:fence_lava_tree_wood', {
description = S('Lava Tree Wood Fence'),
texture = 'everness_fence_lava_tree_wood.png',
inventory_image = 'default_fence_overlay.png^everness_lava_tree_wood.png^' ..
'default_fence_overlay.png^[makealpha:255,126,126',
wield_image = 'default_fence_overlay.png^everness_lava_tree_wood.png^' ..
'default_fence_overlay.png^[makealpha:255,126,126',
material = 'everness:lava_tree_wood',
groups = { choppy = 2, oddly_breakable_by_hand = 2, flammable = 2 },
sounds = Everness.node_sound_wood_defaults()
})
default.register_fence_rail('everness:fence_rail_lava_tree_wood', {
description = S('Lava Tree Wood Fence Rail'),
texture = 'everness_fence_rail_lava_tree_wood.png^[transformR90',
inventory_image = 'default_fence_rail_overlay.png^everness_lava_tree_wood.png^' ..
'default_fence_rail_overlay.png^[makealpha:255,126,126',
wield_image = 'default_fence_rail_overlay.png^everness_lava_tree_wood.png^' ..
'default_fence_rail_overlay.png^[makealpha:255,126,126',
material = 'everness:lava_tree_wood',
groups = { choppy = 2, oddly_breakable_by_hand = 2, flammable = 2 },
sounds = Everness.node_sound_wood_defaults()
})
default.register_mesepost('everness:mese_post_light_lava_tree_wood', {
description = S('Lava Tree Wood Mese Post Light'),
texture = 'everness_fence_lava_tree_wood.png^[transformFY',
material = 'everness:lava_tree_wood',
})

View File

@ -35,6 +35,7 @@ local grass_covered_mapping_under = {
['everness:soul_sandstone'] = { 'everness:soul_sandstone_veined' },
['everness:crystal_cave_dirt'] = { 'everness:crystal_cave_dirt_with_moss' },
['everness:mold_cobble'] = { 'everness:mold_stone_with_moss' },
['everness:mineral_lava_stone_dry'] = { 'everness:mineral_lava_stone_with_moss' },
}
-- Spread grass on dirt
@ -121,6 +122,7 @@ Everness:register_abm({
'everness:soul_sandstone',
'everness:crystal_cave_dirt',
'everness:mold_cobble',
'everness:mineral_lava_stone_dry',
},
neighbors = {
'air',
@ -128,6 +130,7 @@ Everness:register_abm({
'group:cursed_grass_under',
'group:crystal_grass_under',
'group:forsaken_tundra_grass_under',
'group:mineral_waters_grass_under',
},
interval = 6,
chance = 50,
@ -171,6 +174,8 @@ Everness:register_abm({
minetest.set_node(pos, { name = 'everness:crystal_cave_dirt_with_moss' })
elseif minetest.get_item_group(name, 'forsaken_tundra_grass_under') ~= 0 and node.name == 'everness:mold_cobble' then
minetest.set_node(pos, { name = 'everness:mold_stone_with_moss' })
elseif minetest.get_item_group(name, 'mineral_waters_grass_under') ~= 0 and node.name == 'everness:mineral_lava_stone_dry' then
minetest.set_node(pos, { name = 'everness:mineral_lava_stone_with_moss' })
end
end
})
@ -222,6 +227,8 @@ Everness:register_abm({
minetest.set_node(pos, { name = 'everness:crystal_cave_dirt' })
elseif node.name == 'everness:mold_stone_with_moss' then
minetest.set_node(pos, { name = 'everness:mold_cobble' })
elseif node.name == 'everness:mineral_lava_stone_with_moss' then
minetest.set_node(pos, { name = 'everness:mineral_lava_stone_dry' })
end
end
end
@ -239,7 +246,9 @@ Everness:register_leafdecay({
'everness:willow_tree',
'everness:sequoia_tree',
'everness:mese_tree',
'everness:palm_tree'
'everness:palm_tree',
'everness:lava_tree',
'everness:lava_tree_with_lava'
},
leaves = {
'everness:coral_leaves',
@ -249,7 +258,8 @@ Everness:register_leafdecay({
'everness:mese_leaves',
'everness:mese_tree_fruit',
'everness:palm_leaves',
'everness:coconut'
'everness:coconut',
'everness:lava_tree_leaves'
},
radius = 3
})
@ -922,6 +932,136 @@ Everness:register_abm({
end
})
-- Lava spitting
Everness:register_abm({
label = 'everness:lava_spitting',
description = 'Lava bursts in to air.',
nodenames = { 'everness:lava_source' },
neighbors = { 'air' },
interval = 10,
chance = 200,
catch_up = false,
action = function(pos, node)
local burst_colors = {
'#FF5400',
'#DD2005'
}
local partcile_time = math.random(3, 5)
-- particles
local particlespawner_def = {
amount = 10,
time = partcile_time,
minpos = vector.new(pos.x - 0.1, pos.y + 0.5, pos.z - 0.1),
maxpos = vector.new(pos.x + 0.1, pos.y + 1, pos.z + 0.1),
minvel = vector.new(0, 1, 0),
maxvel = vector.new(0, 3, 0),
minacc = vector.new(0, -3, 0),
maxacc = vector.new(0, -6, 0),
minexptime = 3,
maxexptime = 5,
minsize = 3,
maxsize = 10,
texture = ('everness_water_geyser_particle.png^[multiply:%s'):format(burst_colors[math.random(1, #burst_colors)]),
vertical = true,
collisiondetection = true,
collision_removal = true
}
local particlespawner_def2 = {
amount = 40,
time = partcile_time,
minpos = vector.new(pos.x, pos.y + 0.5, pos.z),
maxpos = vector.new(pos.x, pos.y + 1, pos.z),
minvel = vector.new(0, 1, 0),
maxvel = vector.new(0, 3, 0),
minacc = vector.new(-1, -3, -1),
maxacc = vector.new(1, -6, 1),
minexptime = 3,
maxexptime = 5,
minsize = 3,
maxsize = 10,
node = node,
vertical = true,
collisiondetection = true,
collision_removal = true
}
if minetest.has_feature({ dynamic_add_media_table = true, particlespawner_tweenable = true }) then
-- new syntax, above v5.6.0
particlespawner_def = {
amount = 10,
time = partcile_time,
size = {
min = 1,
max = 2,
},
exptime = {
min = 3,
max = 5
},
pos = {
min = vector.new(pos.x - 0.1, pos.y + 0.5, pos.z - 0.1),
max = vector.new(pos.x + 0.1, pos.y + 1, pos.z + 0.1)
},
vel = {
min = vector.new(0, 1, 0),
max = vector.new(0, 3, 0)
},
acc = {
min = vector.new(0, -3, 0),
max = vector.new(0, -6, 0)
},
texture = {
name = ('everness_water_geyser_particle.png^[multiply:%s'):format(burst_colors[math.random(1, #burst_colors)]),
scale_tween = {
10, 3,
style = 'fwd',
reps = 1
}
},
vertical = true,
collisiondetection = true,
collision_removal = true
}
particlespawner_def2 = {
amount = 40,
time = partcile_time,
size = {
min = 1,
max = 2,
},
exptime = {
min = 3,
max = 5
},
pos = {
min = vector.new(pos.x, pos.y + 0.5, pos.z),
max = vector.new(pos.x, pos.y + 1, pos.z)
},
vel = {
min = vector.new(0, 1, 0),
max = vector.new(0, 3, 0)
},
acc = {
min = vector.new(-1, -3, -1),
max = vector.new(1, -6, 1)
},
node = node,
vertical = true,
collisiondetection = true,
collision_removal = true
}
end
if math.random(0, 100) <=50 then
minetest.add_particlespawner(particlespawner_def2)
else
minetest.add_particlespawner(particlespawner_def)
end
end
})
-- Generate bamboo tops after mineral waters biome generates decorations
Everness:register_lbm({
-- Descriptive label for profiling purposes (optional).
@ -1141,12 +1281,18 @@ Everness:register_abm({
end
})
--
-- Lavacooling
--
-- Override lava cooling to include some variations of obsidian
minetest.register_on_mods_loaded(function()
for _, abm in pairs(minetest.registered_abms) do
if abm.label == 'Lava cooling' and abm.action ~= nil then
local prev_cool_lava_action = abm.action
table.insert_all(abm.nodenames, { 'everness:lava_source', 'everness:lava_flowing' })
abm.action = function(pos, node, dtime_s)
Everness.cool_lava(pos, node, dtime_s, prev_cool_lava_action)
end

View File

@ -31,10 +31,14 @@ end
dofile(path .. '/api.lua')
dofile(path .. '/nodes.lua')
dofile(path .. '/nodes_farming.lua')
if Everness.settings.biomes.everness_mineral_waters_under.enabled then
dofile(path .. '/nodes_mineral_waters_under.lua')
end
dofile(path .. '/bamboo.lua')
dofile(path .. '/functions.lua')
dofile(path .. '/trees.lua')
dofile(path .. '/vines.lua')
dofile(path .. '/vines_wall.lua')
dofile(path .. '/chests.lua')
dofile(path .. '/torches.lua')

View File

@ -87,7 +87,7 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
for _, def in ipairs(Everness.on_generated_queue) do
if def.can_run(biomemap) and def.after_write_to_map then
shared_args[def.name] = shared_args[def.name] or {}
def.after_write_to_map(shared_args[def.name], gennotify)
def.after_write_to_map(shared_args[def.name], gennotify, rand)
end
end

View File

@ -172,6 +172,23 @@ Everness:register_decoration({
-- On Generated
--
local function find_irecursive(table, c_id)
local found = false
for i, v in ipairs(table) do
if type(v) == 'table' then
find_irecursive(v, c_id)
end
if c_id == v then
found = true
break
end
end
return found
end
-- Get the content IDs for the nodes used
local c_everness_mineral_water_source = minetest.get_content_id('everness:mineral_water_source')
local c_everness_mineral_stone = minetest.get_content_id('everness:mineral_stone')
@ -246,23 +263,6 @@ local size = { x = 7, y = 16, z = 9 }
local size_x = math.round(size.x / 2)
local size_z = math.round(size.z / 2)
local function find_irecursive(table, c_id)
local found = false
for i, v in ipairs(table) do
if type(v) == 'table' then
find_irecursive(v, c_id)
end
if c_id == v then
found = true
break
end
end
return found
end
local function place_decoration(pos, vm, area, data, deco_id, callback)
local deco_def = minetest.registered_decorations[deco_id]

View File

@ -25,7 +25,10 @@ local y_min = Everness.settings.biomes.everness_mineral_waters_under.y_min
Everness:register_biome({
name = 'everness:mineral_waters_under',
node_cave_liquid = 'air',
node_stone = 'everness:mineral_cave_stone',
node_filler = 'everness:mineral_cave_stone',
node_cave_liquid = 'everness:lava_source',
node_water = 'air',
node_dungeon = 'everness:mineral_stone_brick',
node_dungeon_alt = 'everness:mineral_stone_brick_with_growth',
node_dungeon_stair = 'stairs:stair_mineral_stone_brick',
@ -40,13 +43,40 @@ Everness:register_biome({
-- Ores
--
minetest.register_on_mods_loaded(function()
local c_mapgen_stone = minetest.get_content_id('mapgen_stone')
local mapgen_stone_itemstring = minetest.get_name_from_content_id(c_mapgen_stone)
for name, def in pairs(minetest.registered_ores) do
local wherein = def.wherein
local biomes = def.biomes
if type(def.wherein) == 'string' then
wherein = { wherein }
end
-- Register the same ores what are defined for `mapgen_stone`
if
table.indexof(wherein, mapgen_stone_itemstring) > -1
and not biomes
then
def.wherein = { 'everness:mineral_cave_stone' }
def.biomes = { 'everness:mineral_waters_under' }
def.y_max = y_max
def.y_min = y_min
Everness:register_ore(def)
end
end
end)
-- Blob ore.
-- These before scatter ores to avoid other ores in blobs.
Everness:register_ore({
ore_type = 'blob',
ore = 'everness:mineral_stone',
wherein = { 'mapgen_stone' },
wherein = { 'everness:mineral_cave_stone' },
clust_scarcity = 16 * 16 * 16,
clust_size = 5,
y_max = y_max,
@ -67,8 +97,653 @@ Everness:register_ore({
-- Register decorations
--
Everness:register_decoration({
name = 'everness:mineral_waters_under_floors',
deco_type = 'simple',
place_on = { 'everness:mineral_cave_stone' },
sidelen = 16,
place_offset_y = -1,
fill_ratio = 10,
biomes = { 'everness:mineral_waters_under' },
y_max = y_max,
y_min = y_min,
flags = 'all_floors, force_placement',
decoration = {
'everness:mineral_lava_stone'
},
})
--
-- Floors
--
Everness:register_decoration({
name = 'everness:mineral_waters_under_volcanic_spike',
deco_type = 'simple',
place_on = {
'everness:mineral_lava_stone',
'everness:mineral_cave_stone'
},
sidelen = 16,
noise_params = {
offset = -0.03,
scale = 0.09,
spread = { x = 200, y = 200, z = 200 },
seed = 329,
octaves = 3,
persist = 0.6
},
biomes = { 'everness:mineral_waters_under' },
spawn_by = 'air',
check_offset = 0,
num_spawn_by = 1,
decoration = {
'everness:marker'
},
y_max = y_max,
y_min = y_min,
flags = 'all_floors',
})
Everness:register_decoration({
name = 'everness:mineral_waters_under_lava_stone_spike',
deco_type = 'simple',
place_on = {
'everness:mineral_lava_stone',
'everness:mineral_cave_stone'
},
sidelen = 16,
noise_params = {
offset = -0.015,
scale = 0.075,
spread = { x = 200, y = 200, z = 200 },
seed = 329,
octaves = 3,
persist = 0.6
},
biomes = { 'everness:mineral_waters_under' },
decoration = {
'everness:marker'
},
y_max = y_max,
y_min = y_min,
flags = 'all_floors',
})
Everness:register_decoration({
name = 'everness:mineral_waters_under_lava_tree',
deco_type = 'simple',
place_on = {
'everness:mineral_lava_stone',
'everness:mineral_cave_stone',
'everness:mineral_lava_stone_with_moss'
},
sidelen = 16,
fill_ratio = 0.025,
biomes = { 'everness:mineral_waters_under' },
decoration = {
'everness:marker'
},
y_max = y_max,
y_min = y_min,
flags = 'all_floors',
})
--
-- Ceilings
--
Everness:register_decoration({
name = 'everness:mineral_waters_under_volcanic_spike_ceiling',
deco_type = 'simple',
place_on = {
'everness:mineral_lava_stone',
'everness:mineral_cave_stone'
},
sidelen = 16,
noise_params = {
offset = -0.03,
scale = 0.09,
spread = { x = 200, y = 200, z = 200 },
seed = 329,
octaves = 3,
persist = 0.6
},
biomes = { 'everness:mineral_waters_under' },
decoration = {
'everness:marker'
},
y_max = y_max,
y_min = y_min,
flags = 'all_ceilings',
})
--
-- On Generated
--
-- Get the content IDs for the nodes used
local c_everness_wall_vine_cave_cyan = minetest.get_content_id('everness:wall_vine_cave_cyan')
local c_everness_wall_vine_cave_violet = minetest.get_content_id('everness:wall_vine_cave_violet')
local c_everness_wall_vine_cave_blue = minetest.get_content_id('everness:wall_vine_cave_blue')
local c_everness_mineral_lava_stone = minetest.get_content_id('everness:mineral_lava_stone')
local c_everness_mineral_cave_stone = minetest.get_content_id('everness:mineral_cave_stone')
local c_everness_mineral_cave_cobblestone = minetest.get_content_id('everness:mineral_cave_cobblestone')
local c_everness_lava_source = minetest.get_content_id('everness:lava_source')
local c_everness_marker = minetest.get_content_id('everness:marker')
local c_everness_volcanic_rock = minetest.get_content_id('everness:volcanic_rock')
local c_everness_volcanic_spike_1 = minetest.get_content_id('everness:volcanic_spike_1')
local c_everness_volcanic_spike_2 = minetest.get_content_id('everness:volcanic_spike_2')
local c_everness_volcanic_spike_3 = minetest.get_content_id('everness:volcanic_spike_3')
local c_everness_volcanic_spike_4 = minetest.get_content_id('everness:volcanic_spike_4')
local c_everness_volcanic_spike_5 = minetest.get_content_id('everness:volcanic_spike_5')
local c_everness_volcanic_spike_6 = minetest.get_content_id('everness:volcanic_spike_6')
local c_everness_volcanic_spike_7 = minetest.get_content_id('everness:volcanic_spike_7')
local c_everness_mineral_cave_stone_spike_1 = minetest.get_content_id('everness:mineral_cave_stone_spike_1')
local c_everness_mineral_cave_stone_spike_2 = minetest.get_content_id('everness:mineral_cave_stone_spike_2')
local c_everness_mineral_cave_stone_spike_3 = minetest.get_content_id('everness:mineral_cave_stone_spike_3')
local c_everness_mineral_cave_stone_spike_4 = minetest.get_content_id('everness:mineral_cave_stone_spike_4')
local c_everness_mineral_cave_stone_spike_5 = minetest.get_content_id('everness:mineral_cave_stone_spike_5')
local c_everness_mineral_cave_stone_spike_6 = minetest.get_content_id('everness:mineral_cave_stone_spike_6')
local c_everness_mineral_cave_stone_spike_7 = minetest.get_content_id('everness:mineral_cave_stone_spike_7')
local c_everness_mineral_lava_stone_spike_1 = minetest.get_content_id('everness:mineral_lava_stone_spike_1')
local c_everness_mineral_lava_stone_spike_2 = minetest.get_content_id('everness:mineral_lava_stone_spike_2')
local c_everness_mineral_lava_stone_spike_3 = minetest.get_content_id('everness:mineral_lava_stone_spike_3')
local c_everness_mineral_lava_stone_spike_4 = minetest.get_content_id('everness:mineral_lava_stone_spike_4')
local c_everness_mineral_lava_stone_spike_5 = minetest.get_content_id('everness:mineral_lava_stone_spike_5')
local c_everness_mineral_lava_stone_spike_6 = minetest.get_content_id('everness:mineral_lava_stone_spike_6')
local c_everness_mineral_lava_stone_spike_7 = minetest.get_content_id('everness:mineral_lava_stone_spike_7')
local c_everness_mineral_lava_stone_with_moss = minetest.get_content_id('everness:mineral_lava_stone_with_moss')
-- Biome IDs
local biome_id_everness_mineral_waters_under = minetest.get_biome_id('everness:mineral_waters_under')
-- Decoration IDs
local d_everness_mineral_waters_under_volcanic_spike = minetest.get_decoration_id('everness:mineral_waters_under_volcanic_spike')
local d_everness_mineral_waters_under_volcanic_spike_ceiling = minetest.get_decoration_id('everness:mineral_waters_under_volcanic_spike_ceiling')
local d_everness_mineral_waters_under_lava_stone_spike = minetest.get_decoration_id('everness:mineral_waters_under_lava_stone_spike')
local d_everness_mineral_waters_under_lava_tree = minetest.get_decoration_id('everness:mineral_waters_under_lava_tree')
local volcanic_spike_place_on = minetest.registered_decorations['everness:mineral_waters_under_volcanic_spike'].place_on
volcanic_spike_place_on = type(volcanic_spike_place_on) == 'string' and { volcanic_spike_place_on } or volcanic_spike_place_on
local volcanic_spike_ceiling_place_on = minetest.registered_decorations['everness:mineral_waters_under_volcanic_spike_ceiling'].place_on
volcanic_spike_ceiling_place_on = type(volcanic_spike_ceiling_place_on) == 'string' and { volcanic_spike_ceiling_place_on } or volcanic_spike_ceiling_place_on
local lava_stone_spike_place_on = minetest.registered_decorations['everness:mineral_waters_under_lava_stone_spike'].place_on
lava_stone_spike_place_on = type(lava_stone_spike_place_on) == 'string' and { lava_stone_spike_place_on } or lava_stone_spike_place_on
local lava_tree_place_on = minetest.registered_decorations['everness:mineral_waters_under_lava_tree'].place_on
lava_tree_place_on = type(lava_tree_place_on) == 'string' and { lava_tree_place_on } or lava_tree_place_on
-- `minetest.read_schematic` here so we don't cache the schem file, otherwise `replacements` will not work
local schem_everness_lava_tree = minetest.read_schematic(minetest.get_modpath('everness') .. '/schematics/everness_lava_tree.mts', {})
local lava_tree_size = { x = 7, y = 13, z = 7 }
local lava_tree_size_x = math.round(lava_tree_size.x / 2)
local lava_tree_size_z = math.round(lava_tree_size.z / 2)
local lava_tree_safe_volume = lava_tree_size.x * lava_tree_size.y * lava_tree_size.z
local wall_vines = {
c_everness_wall_vine_cave_cyan,
c_everness_wall_vine_cave_violet,
c_everness_wall_vine_cave_blue
}
local volcanic_spike_map = {
c_everness_volcanic_rock,
c_everness_volcanic_spike_1,
c_everness_volcanic_spike_2,
c_everness_volcanic_spike_3,
c_everness_volcanic_spike_4,
c_everness_volcanic_spike_5,
c_everness_volcanic_spike_6,
c_everness_volcanic_spike_7
}
local cave_stone_spike_map = {
c_everness_mineral_cave_cobblestone,
c_everness_mineral_cave_stone_spike_1,
c_everness_mineral_cave_stone_spike_2,
c_everness_mineral_cave_stone_spike_3,
c_everness_mineral_cave_stone_spike_4,
c_everness_mineral_cave_stone_spike_5,
c_everness_mineral_cave_stone_spike_6,
c_everness_mineral_cave_stone_spike_7
}
local lava_stone_spike_map = {
c_everness_mineral_lava_stone,
c_everness_mineral_lava_stone_spike_1,
c_everness_mineral_lava_stone_spike_2,
c_everness_mineral_lava_stone_spike_3,
c_everness_mineral_lava_stone_spike_4,
c_everness_mineral_lava_stone_spike_5,
c_everness_mineral_lava_stone_spike_6,
c_everness_mineral_lava_stone_spike_7
}
minetest.set_gen_notify({ decoration = true }, {
d_everness_mineral_waters_under_volcanic_spike,
d_everness_mineral_waters_under_lava_stone_spike,
d_everness_mineral_waters_under_volcanic_spike_ceiling,
d_everness_mineral_waters_under_lava_tree
})
Everness:add_to_queue_on_generated({
name = 'everness:mineral_waters_under',
can_run = function(biomemap)
return table.indexof(biomemap, biome_id_everness_mineral_waters_under) ~= -1
end,
-- read/write to `data` what will be eventually saved (set_data)
-- used for voxelmanip `data` manipulation
on_data = function(minp, maxp, area, data, p2data, gennotify, rand, shared_args)
local rand_version = rand:next(1, 2)
shared_args.rand_version = rand_version
if rand_version == 1 then
--
-- Lakes
--
for z = minp.z, maxp.z do
for y = minp.y, maxp.y do
for x = minp.x, maxp.x do
local ai = area:index(x, y, z)
local c_current = data[ai]
-- +Y, -Y, +X, -X, +Z, -Z
-- top, bottom, right, left, front, back
-- right
local c_right = data[ai + 1]
-- left
local c_left = data[ai - 1]
-- front
local c_front = data[ai + area.zstride]
-- back
local c_back = data[ai - area.zstride]
local keep_going = true
local while_count = 1
local max_dig_depth = 11
if
c_current == c_everness_mineral_lava_stone
and (
c_right == c_everness_mineral_lava_stone
or c_right == c_everness_mineral_cave_stone
or c_right == c_everness_lava_source
)
and (
c_left == c_everness_mineral_lava_stone
or c_left == c_everness_mineral_cave_stone
or c_left == c_everness_lava_source
)
and (
c_front == c_everness_mineral_lava_stone
or c_front == c_everness_mineral_cave_stone
or c_front == c_everness_lava_source
)
and (
c_back == c_everness_mineral_lava_stone
or c_back == c_everness_mineral_cave_stone
or c_back == c_everness_lava_source
)
then
-- dig below
while keep_going and while_count <= max_dig_depth do
local while_index = ai - area.ystride * while_count
if
-- below
data[while_index] == c_everness_mineral_cave_stone
and (
-- right
data[while_index + 1 + area.ystride] == c_everness_mineral_lava_stone
or data[while_index + 1 + area.ystride] == c_everness_lava_source
or data[while_index + 1 + area.ystride] == c_everness_mineral_cave_stone
)
and (
-- left
data[while_index - 1 + area.ystride] == c_everness_mineral_lava_stone
or data[while_index - 1 + area.ystride] == c_everness_lava_source
or data[while_index - 1 + area.ystride] == c_everness_mineral_cave_stone
)
and (
-- front
data[while_index + area.zstride + area.ystride] == c_everness_mineral_lava_stone
or data[while_index + area.zstride + area.ystride] == c_everness_lava_source
or data[while_index + area.zstride + area.ystride] == c_everness_mineral_cave_stone
)
and (
-- back
data[while_index - area.zstride + area.ystride] == c_everness_mineral_lava_stone
or data[while_index - area.zstride + area.ystride] == c_everness_lava_source
or data[while_index - area.zstride + area.ystride] == c_everness_mineral_cave_stone
)
then
data[while_index + area.ystride] = c_everness_lava_source
else
keep_going = false
end
while_count = while_count + 1
end
end
end
end
end
else
for y = minp.y, maxp.y do
for z = minp.z, maxp.z do
for x = minp.x, maxp.x do
local ai = area:index(x, y, z)
if
data[ai] == c_everness_mineral_lava_stone
and data[ai + area.ystride] == minetest.CONTENT_AIR
and rand:next(0, 100) <= 10
then
local radius = 7
local chance_max = 80
for h = -3, 3 do
for i = -radius, radius do
for j = -radius, radius do
local idx = ai + i + (area.zstride * j) + (area.ystride * h)
local distance = math.round(vector.distance(area:position(ai), area:position(idx)))
local chance_moss = math.round(chance_max / distance)
if chance_moss > chance_max then
chance_moss = chance_max
end
if
data[idx] == c_everness_mineral_lava_stone
and rand:next(0, 100) < chance_moss
then
data[idx] = c_everness_mineral_lava_stone_with_moss
end
end
end
end
end
end
end
end
end
--
-- Decorations
--
for y = minp.y, maxp.y do
for z = minp.z, maxp.z do
for x = minp.x, maxp.x do
local vi = area:index(x, y, z)
if
data[vi] == minetest.CONTENT_AIR
and (
data[vi + 1] == c_everness_mineral_cave_stone
or data[vi - 1] == c_everness_mineral_cave_stone
or data[vi + area.zstride] == c_everness_mineral_cave_stone
or data[vi - area.zstride] == c_everness_mineral_cave_stone
)
and rand:next(0, 100) <= 15
then
-- Decorate Walls
local dir = vector.zero()
if data[vi + 1] == c_everness_mineral_cave_stone then
dir.x = 1
end
if data[vi - 1] == c_everness_mineral_cave_stone then
dir.x = -1
end
if data[vi + area.zstride] == c_everness_mineral_cave_stone then
dir.z = 1
end
if data[vi - area.zstride] == c_everness_mineral_cave_stone then
dir.z = -1
end
local rand_wall_vine = wall_vines[rand:next(1, #wall_vines)]
data[vi] = rand_wall_vine
p2data[vi] = minetest.dir_to_wallmounted(dir)
end
end
end
end
--
-- Spikes Floor
--
for _, pos in ipairs(gennotify['decoration#' .. (d_everness_mineral_waters_under_volcanic_spike or '')] or {}) do
local idx = area:indexp(pos)
local idx_marker = idx + area.ystride
local place_on_node_name = minetest.get_name_from_content_id(data[idx])
if data[idx_marker] == c_everness_marker then
-- remove marker
data[idx_marker] = minetest.CONTENT_AIR
if table.indexof(volcanic_spike_place_on, place_on_node_name) ~= -1 then
local min_height = 3
local max_height = 8
local indexes = Everness.find_content_in_vm_area(
vector.new(pos.x, pos.y + 1, pos.z),
vector.new(pos.x, pos.y + max_height, pos.z),
{
minetest.CONTENT_AIR
},
data,
area
)
-- For smallest spike we need space above at least 3)
if #indexes > min_height then
local height = rand:next(min_height, #indexes)
local start_index = #volcanic_spike_map - height + 1
local count = 0
for i = start_index, #volcanic_spike_map do
data[idx_marker + area.ystride * count] = volcanic_spike_map[i]
count = count + 1
end
end
end
end
end
for _, pos in ipairs(gennotify['decoration#' .. (d_everness_mineral_waters_under_lava_stone_spike or '')] or {}) do
local idx = area:indexp(pos)
local idx_marker = idx + area.ystride
local place_on_node_name = minetest.get_name_from_content_id(data[idx])
if data[idx_marker] == c_everness_marker then
-- remove marker
data[idx_marker] = minetest.CONTENT_AIR
if table.indexof(lava_stone_spike_place_on, place_on_node_name) ~= -1 then
local min_height = 3
local max_height = 8
local indexes = Everness.find_content_in_vm_area(
vector.new(pos.x, pos.y + 1, pos.z),
vector.new(pos.x, pos.y + max_height, pos.z),
{
minetest.CONTENT_AIR
},
data,
area
)
-- For smallest spike we need space above at least 3)
if #indexes > min_height then
local height = rand:next(min_height, #indexes)
local start_index = #cave_stone_spike_map - height + 1
local count = 0
for i = start_index, #cave_stone_spike_map do
data[idx_marker + area.ystride * count] = cave_stone_spike_map[i]
count = count + 1
end
end
end
end
end
--
-- Spikes Ceiling
--
for _, pos in ipairs(gennotify['decoration#' .. (d_everness_mineral_waters_under_volcanic_spike_ceiling or '')] or {}) do
local idx = area:indexp(pos)
local idx_marker = idx - area.ystride
local place_on_node_name = minetest.get_name_from_content_id(data[idx])
if data[idx_marker] == c_everness_marker then
-- remove marker
data[idx_marker] = minetest.CONTENT_AIR
-- data[idx_marker] = minetest.get_content_id('everness:pyrite_lantern')
if table.indexof(volcanic_spike_ceiling_place_on, place_on_node_name) ~= -1 then
local min_height = 3
local max_height = 16
local indexes = Everness.find_content_in_vm_area(
vector.new(pos.x, pos.y - max_height, pos.z),
vector.new(pos.x, pos.y - 1, pos.z),
{
minetest.CONTENT_AIR
},
data,
area
)
-- For smallest spike we need space above at least 3)
if #indexes > min_height then
local remainder = 0
local height = rand:next(min_height, #indexes)
if height > #lava_stone_spike_map then
remainder = height - #lava_stone_spike_map
height = height - remainder
end
local start_index = #lava_stone_spike_map - height + 1
local count = 0
if remainder > 0 then
for i = 1, remainder do
data[idx_marker - area.ystride * count] = c_everness_mineral_cave_cobblestone
count = count + 1
end
end
for i = start_index, #lava_stone_spike_map do
data[idx_marker - area.ystride * count] = lava_stone_spike_map[i]
count = count + 1
end
end
end
end
end
end,
-- read-only (but cant and should not manipulate) voxelmanip `data`
-- used for `place_schematic_on_vmanip` which will invalidate `data`
-- therefore we are doing it after we set the data
after_set_data = function(minp, maxp, vm, area, data, p2data, gennotify, rand, shared_args)
--
-- Lava Trees
--
for _, pos in ipairs(gennotify['decoration#' .. (d_everness_mineral_waters_under_lava_tree or '')] or {}) do
-- `pos` is position of the 'place_on' node
local marker_pos = vector.new(pos.x, pos.y + 1, pos.z)
local marker_node = minetest.get_node(marker_pos)
local place_on_node = minetest.get_node(pos)
if marker_node and marker_node.name == 'everness:marker' then
-- remove marker
minetest.remove_node(marker_pos)
if shared_args.rand_version ~= 1
and table.indexof(lava_tree_place_on, place_on_node.name) ~= -1
then
-- enough air to place structure ?
local positions = minetest.find_nodes_in_area(
vector.new(
pos.x - lava_tree_size_x,
pos.y,
pos.z - lava_tree_size_z
),
vector.new(
pos.x + lava_tree_size_x,
pos.y + lava_tree_size.y,
pos.z + lava_tree_size_z
),
{
'air',
'everness:lava_tree',
'everness:lava_tree_with_lava'
},
true
)
local air = positions.air or {}
local tree1 = positions['everness:lava_tree'] or {}
local tree2 = positions['everness:lava_tree_with_lava'] or {}
-- do not overlap another tree
if
#tree1 == 0
and #tree2 == 0
and #air > lava_tree_safe_volume
then
local replacements
if rand:next(0, 100) <= 25 then
replacements = {
['everness:lava_tree'] = 'everness:lava_tree_with_lava',
}
end
shared_args.lava_tree_positions = shared_args.lava_tree_positions or {}
table.insert(shared_args.lava_tree_positions, marker_pos)
minetest.place_schematic_on_vmanip(
vm,
marker_pos,
schem_everness_lava_tree,
'random',
replacements,
false,
'place_center_x, place_center_z'
)
end
end
end
end
end,
-- Cannot read/write voxelmanip or its data
-- Used for direct manipulation of the world chunk nodes where the
-- definitions of nodes are available and node callback can be executed
-- or e.g. for `minetest.fix_light`
after_write_to_map = function(shared_args, gennotify, rand)
local lava_tree_positions = shared_args.lava_tree_positions or {}
for _, p in ipairs(lava_tree_positions) do
local grass_positions = minetest.find_nodes_in_area_under_air(
vector.subtract(p, { x = 3, y = 1, z = 3 }),
vector.add(p, { x = 3, y = 1, z = 3 }),
'everness:mineral_lava_stone_with_moss'
)
if #grass_positions > 1 then
for i = 1, rand:next(1, 3) do
local rand_p = grass_positions[rand:next(1, #grass_positions)]
if not vector.equals(p, rand_p) then
minetest.set_node(vector.new(rand_p.x, rand_p.y + 1, rand_p.z), { name = 'everness:mineral_cave_moss_grass' })
end
end
end
end
end
})

View File

@ -29,4 +29,20 @@ if minetest.get_modpath('bucket') then
S('Mineral') .. ' ' .. S('Water') .. ' ' .. S('Bucket'),
{ tool = 1, water_bucket = 1 }
)
bucket.register_liquid(
'everness:lava_source',
'everness:lava_flowing',
'everness:bucket_lava',
'everness_mtg_bucket_lava.png',
S('Lava Bucket'),
{ tool = 1 }
)
minetest.register_craft({
type = 'fuel',
recipe = 'everness:bucket_lava',
burntime = 370,
replacements = {{ 'everness:bucket_lava', 'bucket:bucket_empty' }},
})
end

View File

@ -224,6 +224,22 @@ x_farming.x_bonemeal:register_tree_defs({
Everness.grow_palm_tree(pos)
return true
end
},
{
-- sapling name
name = 'everness:lava_tree_sapling',
-- 1 out of `chance`, e.g. 2 = 50% chance
chance = 4,
-- grow tree from sapling
grow_tree = function(pos)
if not x_farming.x_bonemeal.is_on_soil(pos) then
return false
end
Everness.grow_lava_tree(pos)
return true
end
},

View File

@ -0,0 +1,109 @@
# Blender v2.83.20 OBJ File: 'everness_better_vine_1.blend'
# www.blender.org
mtllib everness_vine_wall.mtl
o Plane
v 0.470000 -0.490000 -0.470000
v -0.470000 -0.490000 -0.470000
v 0.470000 -0.490000 0.470000
v -0.470000 -0.490000 0.470000
v -0.752156 -0.490000 0.461451
v 0.751842 -0.492615 0.461221
v -0.751842 -0.272978 0.044555
v 0.752156 -0.275593 0.044326
v 0.752156 -0.275593 -0.073174
v -0.751842 -0.272978 -0.072945
v 0.751842 -0.492615 0.343721
v -0.752156 -0.490000 0.343951
v -0.752156 -0.490000 0.226451
v 0.751842 -0.492615 0.226221
v -0.751842 -0.272978 -0.190445
v 0.752156 -0.275593 -0.190674
v 0.752156 -0.275593 -0.308174
v -0.751842 -0.272978 -0.307945
v 0.751842 -0.492615 0.108721
v -0.752156 -0.490000 0.108951
v -0.752156 -0.490000 -0.008549
v 0.751842 -0.492615 -0.008779
v -0.751842 -0.272978 -0.425445
v 0.752156 -0.275593 -0.425674
v 0.752156 -0.275593 -0.543174
v -0.751842 -0.272978 -0.542945
v 0.751842 -0.492615 -0.126279
v -0.752156 -0.490000 -0.126049
v -0.752156 -0.490000 -0.243549
v 0.751842 -0.492615 -0.243779
v -0.751842 -0.272978 -0.660445
v 0.752156 -0.275593 -0.660674
v 0.752156 -0.275593 -0.778174
v -0.751842 -0.272978 -0.777945
v 0.751842 -0.492615 -0.361279
v -0.752156 -0.490000 -0.361050
v 0.752149 -0.315254 -0.905760
v -0.751849 -0.312629 -0.905760
v 0.751848 -0.487510 -0.468464
v -0.752149 -0.484885 -0.468463
vt -0.000000 0.727273
vt 1.000000 0.818182
vt -0.000000 0.818182
vt 1.000000 0.636364
vt 0.000000 0.727273
vt 0.000000 0.636364
vt 1.000000 0.545455
vt 0.000000 0.636364
vt 0.000000 0.545455
vt 1.000000 0.454546
vt 0.000000 0.545455
vt 0.000000 0.454546
vt 0.000000 0.363636
vt 1.000000 0.454546
vt 0.000000 0.454546
vt 0.000000 0.272727
vt 1.000000 0.363636
vt 0.000000 0.363636
vt 1.000000 0.181818
vt 0.000000 0.272727
vt 0.000000 0.181818
vt 1.000000 0.090909
vt 0.000000 0.181818
vt 0.000000 0.090909
vt 0.000000 -0.000000
vt 1.000000 0.090909
vt 0.000000 0.090909
vt 0.166667 0.818182
vt 0.833333 1.000000
vt 0.833333 0.818182
vt 1.000000 0.727273
vt 1.000000 0.727273
vt 1.000000 0.636364
vt 1.000000 0.545455
vt 1.000000 0.363636
vt 1.000000 0.272727
vt 1.000000 0.272727
vt 1.000000 0.181818
vt 1.000000 0.000000
vt 0.166667 1.000000
vn 0.0016 0.8870 0.4617
vn 0.0016 0.9304 0.3665
vn 0.0000 1.0000 -0.0000
usemtl leaves
s off
f 8/1/1 5/2/1 6/3/1
f 10/4/1 11/5/1 9/6/1
f 15/7/1 14/8/1 16/9/1
f 18/10/1 19/11/1 17/12/1
f 24/13/1 21/14/1 22/15/1
f 25/16/1 28/17/1 27/18/1
f 31/19/1 30/20/1 32/21/1
f 34/22/1 35/23/1 33/24/1
f 37/25/2 40/26/2 39/27/2
f 3/28/3 2/29/3 4/30/3
f 8/1/1 7/31/1 5/2/1
f 10/4/1 12/32/1 11/5/1
f 15/7/1 13/33/1 14/8/1
f 18/10/1 20/34/1 19/11/1
f 24/13/1 23/35/1 21/14/1
f 25/16/1 26/36/1 28/17/1
f 31/19/1 29/37/1 30/20/1
f 34/22/1 36/38/1 35/23/1
f 37/25/2 38/39/2 40/26/2
f 3/28/3 1/40/3 2/29/3

115
nodes.lua
View File

@ -11478,6 +11478,121 @@ Everness:register_node('everness:mineral_water_flowing', {
sounds = Everness.node_sound_water_defaults(),
})
minetest.register_node('everness:lava_source', {
description = S('Lava Source'),
drawtype = 'liquid',
tiles = {
{
name = 'everness_lava_source_animated.png',
backface_culling = false,
animation = {
type = 'vertical_frames',
aspect_w = 16,
aspect_h = 16,
length = 6,
},
align_style = 'world',
scale = 2
},
{
name = 'everness_lava_source_animated.png',
backface_culling = true,
animation = {
type = 'vertical_frames',
aspect_w = 16,
aspect_h = 16,
length = 6,
},
align_style = 'world',
scale = 2
},
},
paramtype = 'light',
light_source = 13,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
drop = '',
drowning = 1,
liquidtype = 'source',
liquid_alternative_flowing = 'everness:lava_flowing',
liquid_alternative_source = 'everness:lava_source',
liquid_viscosity = 7,
liquid_renewable = false,
damage_per_second = 4 * 2,
post_effect_color = { a = 191, r = 255, g = 64, b = 0 },
groups = {
lava = 3,
liquid = 2,
igniter = 1
},
liquid_range = 2,
})
minetest.register_node('everness:lava_flowing', {
description = S('Flowing Lava'),
drawtype = 'flowingliquid',
tiles = {
{
name = 'everness_lava_flowing_animated.png',
align_style = 'world',
scale = 2
}
},
special_tiles = {
{
name = 'everness_lava_flowing_animated.png',
backface_culling = false,
animation = {
type = 'vertical_frames',
aspect_w = 16,
aspect_h = 16,
length = 3.3,
},
align_style = 'world',
scale = 2
},
{
name = 'everness_lava_flowing_animated.png',
backface_culling = true,
animation = {
type = 'vertical_frames',
aspect_w = 16,
aspect_h = 16,
length = 3.3,
},
align_style = 'world',
scale = 2
},
},
paramtype = 'light',
paramtype2 = 'flowingliquid',
light_source = 13,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
drop = '',
drowning = 1,
liquidtype = 'flowing',
liquid_alternative_flowing = 'everness:lava_flowing',
liquid_alternative_source = 'everness:lava_source',
liquid_viscosity = 7,
liquid_renewable = false,
damage_per_second = 4 * 2,
post_effect_color = { a = 191, r = 255, g = 64, b = 0 },
groups = {
lava = 3,
liquid = 2,
igniter = 1,
not_in_creative_inventory = 1
},
liquid_range = 2,
})
Everness:register_node('everness:water_geyser', {
description = S('Water') .. ' ' .. S('Geyser'),
drawtype = 'mesh',

View File

@ -0,0 +1,685 @@
--[[
Everness. Never ending discovery in Everness mapgen.
Copyright (C) 2024 SaKeL
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
--]]
local S = minetest.get_translator(minetest.get_current_modname())
Everness:register_node('everness:mineral_cave_stone', {
description = S('Mineral Cave Stone'),
tiles = {
{
name = 'everness_mineral_stone_under_top.png',
align_style = 'world',
scale = 2
},
{
name = 'everness_mineral_stone_under_top.png',
align_style = 'world',
scale = 2
},
{
name = 'everness_mineral_stone_under.png',
align_style = 'world',
scale = 2
}
},
drop = 'everness:mineral_cave_cobblestone',
groups = {
-- MTG
cracky = 3,
-- MCL
pickaxey = 1,
building_block = 1,
material_stone = 1,
-- ALL
stone = 1,
},
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
_mcl_silk_touch_drop = true,
sounds = Everness.node_sound_stone_defaults(),
})
Everness:register_node('everness:mineral_cave_cobblestone', {
description = S('Mineral Cave Cobblestone'),
is_ground_content = false,
tiles = {
{
name = 'everness_mineral_cobblestone_under.png',
align_style = 'world',
scale = 2
}
},
groups = {
-- MTG
cracky = 3,
-- MCL
pickaxey = 1,
building_block = 1,
material_stone = 1,
-- ALL
stone = 2,
},
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
_mcl_silk_touch_drop = true,
sounds = Everness.node_sound_stone_defaults(),
})
Everness:register_node('everness:mineral_lava_stone', {
description = S('Mineral Lava Stone with lava'),
is_ground_content = false,
-- Textures of node; +Y, -Y, +X, -X, +Z, -Z
tiles = {
{
name = 'everness_mineral_lava_stone_animated.png',
align_style = 'world',
scale = 2,
animation = {
type = 'vertical_frames',
aspect_w = 16,
aspect_h = 16,
length = 6.4,
},
},
{
name = 'everness_mineral_lava_stone_bottom.png',
align_style = 'world',
scale = 2
},
{
name = 'everness_mineral_lava_stone_side.png',
align_style = 'world',
scale = 2
}
},
drop = 'everness:mineral_lava_stone_dry',
groups = {
-- MTG
cracky = 3,
-- MCL
pickaxey = 1,
building_block = 1,
material_stone = 1,
-- ALL
stone = 1,
},
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
_mcl_silk_touch_drop = true,
light_source = 3,
sounds = Everness.node_sound_stone_defaults(),
})
Everness:register_node('everness:mineral_lava_stone_dry', {
description = S('Mineral Lava Stone without lava'),
is_ground_content = false,
-- Textures of node; +Y, -Y, +X, -X, +Z, -Z
tiles = {
{
name = 'everness_mineral_lava_stone_bottom.png',
align_style = 'world',
scale = 2
}
},
groups = {
-- MTG
cracky = 3,
-- MCL
pickaxey = 1,
building_block = 1,
material_stone = 1,
-- ALL
stone = 1,
},
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
_mcl_silk_touch_drop = true,
sounds = Everness.node_sound_stone_defaults(),
})
Everness:register_node('everness:mineral_lava_stone_with_moss', {
description = S('Mineral Lava Stone with moss'),
is_ground_content = false,
-- Textures of node; +Y, -Y, +X, -X, +Z, -Z
tiles = {
{
name = 'everness_mineral_cave_moss.png',
align_style = 'world',
scale = 2
},
{
name = 'everness_mineral_cave_moss.png',
align_style = 'world',
scale = 2
},
{
name = 'everness_mineral_cave_moss_side.png',
align_style = 'world',
scale = 2
},
},
drop = 'everness:mineral_lava_stone_dry',
groups = {
-- MTG
cracky = 3,
-- Everness
everness_spreading_dirt_type_under = 1,
-- MCL
pickaxey = 1,
building_block = 1,
material_stone = 1,
-- ALL
stone = 1,
},
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
_mcl_silk_touch_drop = true,
light_source = 3,
sounds = Everness.node_sound_stone_defaults(),
})
for i = 1, 7 do
local last = i == 7
Everness:register_node('everness:volcanic_spike_' .. i, {
description = S('Volcanic Spike') .. ' ' .. i,
tiles = { 'everness_volcanic_rock.png' },
sounds = Everness.node_sound_stone_defaults(),
drawtype = 'nodebox',
groups = {
-- MTG
cracky = 1,
level = 2,
stone = 1,
-- MCL
pickaxey = 5,
building_block = 1,
material_stone = 1,
},
_mcl_blast_resistance = 1200,
_mcl_hardness = 50,
is_ground_content = false,
node_box = {
type = 'fixed',
fixed = {
{
(-8 + i) / 16,
-8 / 16,
(-8 + i) / 16,
(8 - i) / 16,
8 / 16,
(8 - i) / 16
}
}
},
selection_box = {
type = 'fixed',
fixed = {
(-8 + i - 1) / 16,
-8 / 16,
(-8 + i - 1) / 16,
(8 - i + 1) / 16,
8 / 16,
(8 - i + 1) / 16
}
},
collision_box = {
type = 'fixed',
fixed = {
(-8 + i) / 16,
-8 / 16,
(-8 + i) / 16,
(8 - i) / 16,
8 / 16,
(8 - i) / 16
},
},
move_resistance = last and 7 or 0,
damage_per_second = last and 4 or 0,
drowning = last and 1 or 0,
walkable = not last,
climbable = last,
})
Everness:register_node('everness:mineral_cave_stone_spike_' .. i, {
description = S('Mineral Lava Stone Spike') .. ' ' .. i,
-- Textures of node; +Y, -Y, +X, -X, +Z, -Z
tiles = {
{
name = 'everness_mineral_stone_under_top.png',
align_style = 'world',
scale = 2
},
{
name = 'everness_mineral_stone_under_top.png',
align_style = 'world',
scale = 2
},
{
name = 'everness_mineral_stone_under.png',
align_style = 'world',
scale = 2
}
},
groups = {
-- MTG
cracky = 3,
-- MCL
pickaxey = 1,
building_block = 1,
material_stone = 1,
-- ALL
stone = 1,
},
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
_mcl_silk_touch_drop = true,
sounds = Everness.node_sound_stone_defaults(),
drawtype = 'nodebox',
is_ground_content = false,
node_box = {
type = 'fixed',
fixed = {
{
(-8 + i) / 16,
-8 / 16,
(-8 + i) / 16,
(8 - i) / 16,
8 / 16,
(8 - i) / 16
}
}
},
selection_box = {
type = 'fixed',
fixed = {
(-8 + i - 1) / 16,
-8 / 16,
(-8 + i - 1) / 16,
(8 - i + 1) / 16,
8 / 16,
(8 - i + 1) / 16
}
},
collision_box = {
type = 'fixed',
fixed = {
(-8 + i) / 16,
-8 / 16,
(-8 + i) / 16,
(8 - i) / 16,
8 / 16,
(8 - i) / 16
},
},
move_resistance = last and 7 or 0,
damage_per_second = last and 4 or 0,
drowning = last and 1 or 0,
walkable = not last,
climbable = last,
})
Everness:register_node('everness:mineral_lava_stone_spike_' .. i, {
description = S('Mineral Lava Stone Spike') .. ' ' .. i,
-- Textures of node; +Y, -Y, +X, -X, +Z, -Z
tiles = {
{
name = 'everness_mineral_lava_stone_animated.png',
align_style = 'world',
scale = 2,
animation = {
type = 'vertical_frames',
aspect_w = 16,
aspect_h = 16,
length = 6.4,
},
},
},
groups = {
-- MTG
cracky = 3,
-- MCL
pickaxey = 1,
building_block = 1,
material_stone = 1,
-- ALL
stone = 1,
},
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
_mcl_silk_touch_drop = true,
sounds = Everness.node_sound_stone_defaults(),
drawtype = 'nodebox',
is_ground_content = false,
node_box = {
type = 'fixed',
fixed = {
{
(-8 + i) / 16,
-8 / 16,
(-8 + i) / 16,
(8 - i) / 16,
8 / 16,
(8 - i) / 16
}
}
},
selection_box = {
type = 'fixed',
fixed = {
(-8 + i - 1) / 16,
-8 / 16,
(-8 + i - 1) / 16,
(8 - i + 1) / 16,
8 / 16,
(8 - i + 1) / 16
}
},
collision_box = {
type = 'fixed',
fixed = {
(-8 + i) / 16,
-8 / 16,
(-8 + i) / 16,
(8 - i) / 16,
8 / 16,
(8 - i) / 16
},
},
light_source = 12,
move_resistance = last and 7 or 0,
damage_per_second = last and 4 or 0,
drowning = last and 1 or 0,
walkable = not last,
climbable = last,
})
end
Everness:register_node('everness:lava_tree', {
description = S('Lava Tree Trunk'),
short_description = S('Lava Tree Trunk'),
tiles = {
{ name = 'everness_lava_tree_top.png' },
{ name = 'everness_lava_tree_top.png' },
{
name = 'everness_lava_tree.png',
align_style = 'world',
scale = 2,
},
},
paramtype2 = 'facedir',
is_ground_content = false,
groups = {
-- MTG
choppy = 2,
oddly_breakable_by_hand = 1,
-- MCL
handy = 1,
axey = 1,
building_block = 1,
material_wood = 1,
fire_encouragement = 5,
fire_flammability = 5,
-- ALL
tree = 1,
flammable = 2,
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
sounds = Everness.node_sound_wood_defaults(),
on_place = minetest.rotate_node
})
Everness:register_node('everness:lava_tree_with_lava', {
description = S('Lava Tree Trunk with Lava Veins'),
short_description = S('Lava Tree Trunk with Lava Veins'),
tiles = {
{ name = 'everness_lava_tree_top.png' },
{ name = 'everness_lava_tree_top.png' },
{
name = 'everness_lava_tree_animated.png',
align_style = 'world',
scale = 8,
animation = {
type = 'vertical_frames',
aspect_w = 16,
aspect_h = 16,
length = 8,
},
},
},
paramtype2 = 'facedir',
is_ground_content = false,
groups = {
-- MTG
choppy = 2,
oddly_breakable_by_hand = 1,
-- MCL
handy = 1,
axey = 1,
building_block = 1,
material_wood = 1,
fire_encouragement = 5,
fire_flammability = 5,
-- ALL
tree = 1,
flammable = 2,
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
sounds = Everness.node_sound_wood_defaults(),
on_place = minetest.rotate_node,
light_source = 3,
})
Everness:register_node('everness:lava_tree_wood', {
description = S('Lava Tree Wood Planks'),
paramtype2 = 'facedir',
place_param2 = 0,
tiles = {
{
name = 'everness_lava_tree_wood.png',
align_style = 'world',
scale = 2
},
},
is_ground_content = false,
groups = {
-- MTG
choppy = 3,
oddly_breakable_by_hand = 2,
-- Everness
everness_wood = 1,
-- MCL
handy = 1,
axey = 1,
building_block = 1,
material_wood = 1,
fire_encouragement = 5,
fire_flammability = 20,
-- ALL
flammable = 3,
wood = 1,
},
_mcl_blast_resistance = 3,
_mcl_hardness = 2,
sounds = Everness.node_sound_wood_defaults(),
})
Everness:register_node('everness:lava_tree_sapling', {
description = S('Lava') .. ' ' .. S('Tree') .. ' ' .. S('Sapling'),
short_description = S('Lava') .. ' ' .. S('Tree') .. ' ' .. S('Sapling'),
drawtype = 'plantlike',
tiles = { 'everness_lava_tree_sapling.png' },
inventory_image = 'everness_lava_tree_sapling.png',
wield_image = 'everness_lava_tree_sapling.png',
paramtype = 'light',
sunlight_propagates = true,
walkable = false,
selection_box = {
type = 'fixed',
fixed = { -4 / 16, -0.5, -4 / 16, 4 / 16, 4 / 16, 4 / 16 }
},
groups = {
-- MTG
snappy = 2,
flammable = 2,
-- X Farming
compost = 30,
-- MCL
plant = 1,
non_mycelium_plant = 1,
deco_block = 1,
dig_by_water = 1,
dig_by_piston = 1,
destroy_by_lava_flow = 1,
compostability = 30,
-- ALL
dig_immediate = 3,
attached_node = 1,
sapling = 1,
},
_mcl_blast_resistance = 0,
_mcl_hardness = 0,
sounds = Everness.node_sound_leaves_defaults(),
on_timer = function(pos)
Everness.grow_sapling(pos)
end,
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
local on_place_props = {
sapling_name = 'everness:lava_tree_sapling',
minp_relative = { x = -7, y = 1, z = -7 },
maxp_relative = { x = 7, y = 13, z = 7 },
interval = 4,
}
return Everness:sapling_on_place(itemstack, placer, pointed_thing, on_place_props)
end,
})
Everness:register_node('everness:lava_tree_leaves', {
description = S('Lava') .. ' ' .. S('Tree') .. ' ' .. S('Leaves'),
short_description = S('Lava') .. ' ' .. S('Tree') .. ' ' .. S('Leaves'),
drawtype = 'allfaces_optional',
tiles = {
{
name = 'everness_lava_tree_leaves.png',
align_style = 'world',
scale = 2,
},
},
special_tiles = {
{
name = 'everness_lava_tree_leaves.png',
align_style = 'world',
scale = 2,
},
},
paramtype = 'light',
is_ground_content = false,
sunlight_propagates = true,
groups = {
-- MTG
snappy = 3,
leafdecay = 3,
-- X Farming
compost = 30,
-- MCL
handy = 1,
hoey = 1,
shearsy = 1,
swordy = 1,
dig_by_piston = 1,
fire_encouragement = 30,
fire_flammability = 60,
deco_block = 1,
compostability = 30,
-- ALL
flammable = 2,
leaves = 1,
},
_mcl_shears_drop = true,
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
_mcl_silk_touch_drop = true,
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/100 chance
items = { 'everness:lava_tree_sapling' },
rarity = 100,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = { 'everness:lava_tree_leaves' },
}
}
},
sounds = Everness.node_sound_leaves_defaults(),
after_place_node = function(pos, placer, itemstack, pointed_thing)
return Everness:after_place_leaves(pos, placer, itemstack, pointed_thing)
end
})
Everness:register_node('everness:mineral_cave_moss_grass', {
description = S('Mineral Cave Moss Grass'),
short_description = S('Mineral Cave Moss Grass'),
drawtype = 'plantlike',
waving = 1,
tiles = { 'everness_mineral_cave_moss_grass.png' },
inventory_image = 'everness_mineral_cave_moss_grass.png',
wield_image = 'everness_mineral_cave_moss_grass.png',
paramtype = 'light',
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {
-- MTG
snappy = 3,
flora = 1,
-- Everness
mineral_waters_grass_under = 1,
-- X Farming
compost = 30,
-- MCL
handy = 1,
shearsy = 1,
deco_block = 1,
plant = 1,
non_mycelium_plant = 1,
fire_encouragement = 60,
fire_flammability = 100,
dig_by_water = 1,
destroy_by_lava_flow = 1,
compostability = 30,
-- ALL
attached_node = 1,
flammable = 2,
},
_mcl_blast_resistance = 0,
_mcl_hardness = 0,
sounds = Everness.node_sound_leaves_defaults(),
selection_box = {
type = 'fixed',
fixed = { -6 / 16, -0.5, -6 / 16, 6 / 16, 4 / 16, 6 / 16 },
},
light_source = 7
})

Binary file not shown.

View File

@ -730,6 +730,50 @@ local skybox_defs = {
scale = 0.5
},
},
['everness:mineral_waters_under'] = {
sky_parameters = {
type = 'regular',
sky_color = {
day_sky = '#8B1408',
day_horizon = '#b2380a',
dawn_sky = '#8B1408',
dawn_horizon = '#b2380a',
night_sky = '#A3609E',
night_horizon = '#C7A8D9',
fog_sun_tint = '#8B1408',
fog_moon_tint = '#520E49'
}
},
particlespawner = {
amount = 100,
time = 0,
size = {
min = 1,
max = 2
},
node = { name = 'everness:mineral_lava_stone' },
node_tile = 1,
glow = 100,
pos = {
min = vector.new(-50, -50, -50),
max = vector.new(50, 50, 50)
},
jitter = {
min = vector.new(-1, -1, -1),
max = vector.new(1, 1, 1)
},
vel = {
min = vector.new(-1, -1, -1),
max = vector.new(1, 1, 1)
},
exptime = {
min = 5,
max = 10
},
collisiondetection = true,
collision_removal = true
}
},
}
local function should_flip(player)
@ -850,12 +894,36 @@ minetest.register_globalstep(function(dtime)
else
player:set_clouds()
end
if skybox_defs[biome_name].particlespawner then
local pdef = table.copy(skybox_defs[biome_name].particlespawner)
pdef.attached = player
pdef.playername = player:get_player_name()
local pid = minetest.add_particlespawner(pdef)
player_meta:set_int('everness_biome_particlespawner_id', pid)
else
local pid = player_meta:get_int('everness_biome_particlespawner_id')
if pid ~= 0 then
minetest.delete_particlespawner(pid)
player_meta:set_int('everness_biome_particlespawner_id', 0)
end
end
else
player:set_sun()
player:set_moon()
player:set_stars()
player:set_sky()
player:set_clouds()
local pid = player_meta:get_int('everness_biome_particlespawner_id')
if pid ~= 0 then
minetest.delete_particlespawner(pid)
player_meta:set_int('everness_biome_particlespawner_id', 0)
end
end
end
@ -932,3 +1000,9 @@ minetest.register_on_joinplayer(function(player, last_login)
player_meta:set_int('everness_timeofday', 0)
player_meta:set_int('everness_is_day', 1)
end)
minetest.register_on_leaveplayer(function(player, timed_out)
local player_meta = player:get_meta()
player_meta:set_int('everness_biome_particlespawner_id', 0)
end)

BIN
sounds/everness_lava_1.ogg Normal file

Binary file not shown.

BIN
sounds/everness_lava_2.ogg Normal file

Binary file not shown.

View File

@ -856,3 +856,70 @@ stairs.register_stair_and_slab(
Everness.node_sound_wood_defaults(),
true
)
-- Mineral Waters Under
stairs.register_stair_and_slab(
'mineral_cave_stone',
'everness:mineral_cave_stone',
{ cracky = 2, stone = 1 },
{{
name = 'everness_mineral_stone_under.png',
align_style = 'world',
scale = 2
}},
S('Mineral Cave Stone Stair'),
S('Mineral Cave Stone Slab'),
Everness.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
'mineral_cave_cobblestone',
'everness:mineral_cave_cobblestone',
{ cracky = 2, stone = 1 },
{{
name = 'everness_mineral_cobblestone_under.png',
align_style = 'world',
scale = 2
}},
S('Mineral Cave Cobblestone Stair'),
S('Mineral Cave Cobblestone Slab'),
Everness.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
'mineral_lava_stone',
'everness:mineral_lava_stone',
{ cracky = 2, stone = 1 },
{{
name = 'everness_mineral_lava_stone_animated.png',
align_style = 'world',
scale = 2,
animation = {
type = 'vertical_frames',
aspect_w = 16,
aspect_h = 16,
length = 6.4,
},
}},
S('Mineral Lava Stone with lava Stair'),
S('Mineral Lava Stone with lava Slab'),
Everness.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
'mineral_lava_stone_dry',
'everness:mineral_lava_stone_dry',
{ cracky = 2, stone = 1 },
{{
name = 'everness_mineral_lava_stone_bottom.png',
align_style = 'world',
scale = 2
}},
S('Mineral Lava Stone without lava Stair'),
S('Mineral Lava Stone without lava Slab'),
Everness.node_sound_stone_defaults(),
true
)

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 568 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B

View File

@ -104,6 +104,31 @@ function Everness.grow_palm_tree(pos)
path, '0', nil, false)
end
function Everness.grow_lava_tree(pos)
local schem_everness_lava_tree = minetest.read_schematic(minetest.get_modpath('everness') .. '/schematics/everness_lava_tree.mts', {})
local lava_nodes = minetest.find_nodes_in_area_under_air(
vector.subtract(pos, 1),
vector.add(pos, 1),
{ 'group:lava' }
)
local replacements
if #lava_nodes > 0 then
replacements = {
['everness:lava_tree'] = 'everness:lava_tree_with_lava',
}
end
minetest.place_schematic(
pos,
schem_everness_lava_tree,
'random',
replacements,
false,
'place_center_x, place_center_z'
)
end
function Everness.grow_sapling(pos, groups_under)
if not Everness.can_grow(pos, groups_under) then
-- try again 5 min later
@ -152,5 +177,8 @@ function Everness.grow_sapling(pos, groups_under)
elseif node.name == 'everness:palm_tree_sapling' then
minetest.log('action', 'A palm tree sapling grows into a tree at ' .. minetest.pos_to_string(pos))
Everness.grow_palm_tree(pos)
elseif node.name == 'everness:lava_tree_sapling' then
minetest.log('action', 'A lava tree sapling grows into a tree at ' .. minetest.pos_to_string(pos))
Everness.grow_lava_tree(pos)
end
end

113
vines_wall.lua Normal file
View File

@ -0,0 +1,113 @@
--[[
Everness. Never ending discovery in Everness mapgen.
Copyright (C) 2024 SaKeL
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
--]]
local S = minetest.get_translator(minetest.get_current_modname())
local function register_vine_wall(name, def, overrides)
local _def = table.copy(def)
local _name = name
_def.short_description = _def.short_description or _def.description
_def.drawtype = 'mesh'
_def.tiles = _def.tiles or {
{ name = 'everness_' .. _name .. '.png' }
}
_def.inventory_image = 'everness_' .. _name .. '_item.png'
_def.wield_image = 'everness_' .. _name .. '_item.png'
_def.mesh = 'everness_vine_wall.obj'
_def.use_texture_alpha = 'clip'
_def.paramtype = 'light'
_def.paramtype2 = 'wallmounted'
_def.sunlight_propagates = true
_def.walkable = false
_def.climbable = true
_def.buildable_to = false
_def.sounds = Everness.node_sound_leaves_defaults()
_def.groups = {
-- MTG
vine = 1,
snappy = 3,
-- Everness
-- falling_vines = 1,
no_silktouch = 1,
-- X Farming
compost = 30,
-- MCL
handy = 1,
axey = 1,
shearsy = 1,
swordy = 1,
deco_block = 1,
dig_by_piston = 1,
destroy_by_lava_flow = 1,
compostability = 30,
fire_encouragement = 15,
fire_flammability = 100,
-- ALL
flammable = 2,
attached_node = 1,
}
_def._mcl_blast_resistance = 0.2
_def._mcl_hardness = 0.2
_def.selection_box = {
type = 'fixed',
fixed = {
-8 / 16,
-8 / 16,
-8 / 16,
8 / 16,
-5 / 16,
8 / 16
}
}
_def.collision_box = {
type = 'fixed',
fixed = {
-8 / 16,
-8 / 16,
-8 / 16,
8 / 16,
-5 / 16,
8 / 16
}
}
_def.waving = 3
_def.light_source = _def.light_source or 4
_def.on_rotate = function()
return false
end
Everness:register_node('everness:' .. _name, _def)
end
-- Cave vine
-- register_vine_wall('wall_vine_cave_green', {
-- description = S('Wall Cave Vine Green'),
-- })
register_vine_wall('wall_vine_cave_blue', {
description = S('Wall Cave Vine Blue'),
})
register_vine_wall('wall_vine_cave_cyan', {
description = S('Wall Cave Vine Cyan'),
})
register_vine_wall('wall_vine_cave_violet', {
description = S('Wall Cave Vine Violet'),
})

View File

@ -245,3 +245,58 @@ walls.register(
'everness:forsaken_desert_engraved_stone',
Everness.node_sound_stone_defaults()
)
-- Mineral Waters Under
walls.register(
'everness:mineral_cave_stone_wall',
S('Mineral Cave Stone Wall'),
{{
name = 'everness_mineral_stone_under.png',
align_style = 'world',
scale = 2
}},
'everness:mineral_cave_stone',
Everness.node_sound_stone_defaults()
)
walls.register(
'everness:mineral_cave_cobblestone_wall',
S('Mineral Cave Cobblestone Wall'),
{{
name = 'everness_mineral_cobblestone_under.png',
align_style = 'world',
scale = 2
}},
'everness:mineral_cave_cobblestone',
Everness.node_sound_stone_defaults()
)
walls.register(
'everness:mineral_lava_stone_wall',
S('Mineral Lava Stone with lava Wall'),
{{
name = 'everness_mineral_lava_stone_animated.png',
align_style = 'world',
scale = 2,
animation = {
type = 'vertical_frames',
aspect_w = 16,
aspect_h = 16,
length = 6.4,
},
}},
'everness:mineral_lava_stone',
Everness.node_sound_stone_defaults()
)
walls.register(
'everness:mineral_lava_stone_dry_wall',
S('Mineral Lava Stone without lava Wall'),
{{
name = 'everness_mineral_lava_stone_bottom.png',
align_style = 'world',
scale = 2
}},
'everness:mineral_lava_stone_dry',
Everness.node_sound_stone_defaults()
)