diff --git a/LICENSE.txt b/LICENSE.txt index ffba6f0..f3775b2 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1500,8 +1500,11 @@ https://freesound.org/people/Rudmer_Rotteveel/sounds/590950/ **CC0-1.0, by Fission9**, https://freesound.org/people/Fission9/sounds/474850/ -- everness_lava.1.ogg -- everness_lava.2.ogg +- everness_lava_1.ogg + +**CC0-1.0, by morganpurkis**, https://freesound.org/people/morganpurkis/sounds/385098/ + +- everness_lava_2.ogg ### Models diff --git a/api.lua b/api.lua index 7acc5c1..140c3bb 100644 --- a/api.lua +++ b/api.lua @@ -1505,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'}, @@ -1561,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 @@ -2157,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 diff --git a/assets/schematics/everness_lava_tree.lua b/assets/schematics/everness_lava_tree.lua new file mode 100644 index 0000000..dfe24d7 --- /dev/null +++ b/assets/schematics/everness_lava_tree.lua @@ -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}, + }, +} diff --git a/buckets.lua b/buckets.lua index a594f96..a54ba74 100644 --- a/buckets.lua +++ b/buckets.lua @@ -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' }}, +}) diff --git a/crafting.lua b/crafting.lua index 08cdf21..324417a 100644 --- a/crafting.lua +++ b/crafting.lua @@ -310,6 +310,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 +909,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 +991,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', diff --git a/doors.lua b/doors.lua index cdccfe7..0afd513 100644 --- a/doors.lua +++ b/doors.lua @@ -197,3 +197,12 @@ 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_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 } +}) diff --git a/env_sounds.lua b/env_sounds.lua index dffce5e..fc83109 100644 --- a/env_sounds.lua +++ b/env_sounds.lua @@ -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 = {} diff --git a/fences.lua b/fences.lua index ccb8368..94bfadb 100644 --- a/fences.lua +++ b/fences.lua @@ -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', +}) diff --git a/functions.lua b/functions.lua index 08bcb2a..230ae3a 100644 --- a/functions.lua +++ b/functions.lua @@ -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 }) @@ -1049,14 +1059,6 @@ Everness:register_abm({ else minetest.add_particlespawner(particlespawner_def) end - - minetest.sound_play({ - name = 'everness_lava', - gain = 1.0 - }, { - pos = pos, - max_hear_distance = 32 - }) end }) @@ -1279,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 diff --git a/init.lua b/init.lua index 2db322c..e581ecd 100644 --- a/init.lua +++ b/init.lua @@ -31,6 +31,9 @@ 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') @@ -166,7 +169,6 @@ if Everness.settings.biomes.everness_mineral_waters.enabled then end if Everness.settings.biomes.everness_mineral_waters_under.enabled then - dofile(path .. '/nodes_mineral_waters_under.lua') dofile(path .. '/mapgen_mineral_waters_under.lua') end diff --git a/mapgen_mineral_waters.lua b/mapgen_mineral_waters.lua index bc6599c..bff987a 100644 --- a/mapgen_mineral_waters.lua +++ b/mapgen_mineral_waters.lua @@ -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') @@ -377,14 +394,14 @@ Everness:add_to_queue_on_generated({ -- Check for water and build nodes before replacing, this will make pools connected and will not replace already built walls from another pool near by if hi == 1 and current_c_id ~= c_everness_mineral_water_source - and not Everness.find_irecursive(pool_build_nodes, current_c_id) + and not find_irecursive(pool_build_nodes, current_c_id) then -- build pool floor data[ai_cub] = mineral_stone elseif hi ~= 1 and (wi == 1 or wi == width) and current_c_id ~= c_everness_mineral_water_source - and not Everness.find_irecursive(pool_build_nodes, current_c_id) + and not find_irecursive(pool_build_nodes, current_c_id) then -- build pool wall data[ai_cub] = mineral_stone @@ -392,7 +409,7 @@ Everness:add_to_queue_on_generated({ and (li == 1 or li == length) and (wi ~= 1 or wi ~= width) and current_c_id ~= c_everness_mineral_water_source - and not Everness.find_irecursive(pool_build_nodes, current_c_id) + and not find_irecursive(pool_build_nodes, current_c_id) then -- build pool wall data[ai_cub] = mineral_stone diff --git a/mapgen_mineral_waters_under.lua b/mapgen_mineral_waters_under.lua index e2358e0..113a8d9 100644 --- a/mapgen_mineral_waters_under.lua +++ b/mapgen_mineral_waters_under.lua @@ -113,6 +113,10 @@ Everness:register_decoration({ }, }) +-- +-- Floors +-- + Everness:register_decoration({ name = 'everness:mineral_waters_under_volcanic_spike', deco_type = 'simple', @@ -166,6 +170,54 @@ Everness:register_decoration({ 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 -- @@ -176,6 +228,7 @@ local c_everness_wall_vine_cave_violet = minetest.get_content_id('everness:wall_ 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') @@ -193,17 +246,40 @@ local c_everness_mineral_cave_stone_spike_4 = minetest.get_content_id('everness: 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, @@ -222,8 +298,8 @@ local volcanic_spike_map = { c_everness_volcanic_spike_7 } -local lava_stone_spike_map = { - c_everness_mineral_cave_stone, +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, @@ -233,9 +309,22 @@ local lava_stone_spike_map = { 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_lava_stone_spike, + d_everness_mineral_waters_under_volcanic_spike_ceiling, + d_everness_mineral_waters_under_lava_tree }) Everness:add_to_queue_on_generated({ @@ -246,91 +335,134 @@ Everness:add_to_queue_on_generated({ -- 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) - -- - -- 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] + local rand_version = rand:next(1, 2) + shared_args.rand_version = rand_version - -- +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] + 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] - local keep_going = true - local while_count = 1 - local max_dig_depth = 11 + -- +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] - 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 + local keep_going = true + local while_count = 1 + local max_dig_depth = 11 - 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 + 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) - while_count = while_count + 1 + 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 @@ -353,7 +485,7 @@ Everness:add_to_queue_on_generated({ 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) <= 25 + and rand:next(0, 100) <= 15 then -- Decorate Walls local dir = vector.zero() @@ -383,7 +515,7 @@ Everness:add_to_queue_on_generated({ end -- - -- Spikes + -- Spikes Floor -- for _, pos in ipairs(gennotify['decoration#' .. (d_everness_mineral_waters_under_volcanic_spike or '')] or {}) do local idx = area:indexp(pos) @@ -447,11 +579,66 @@ Everness:add_to_queue_on_generated({ -- 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] + data[idx_marker - area.ystride * count] = lava_stone_spike_map[i] count = count + 1 end end @@ -463,11 +650,100 @@ Everness:add_to_queue_on_generated({ -- 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 }) diff --git a/mod_support_mtg.lua b/mod_support_mtg.lua index 9e38f64..80cb6f7 100644 --- a/mod_support_mtg.lua +++ b/mod_support_mtg.lua @@ -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 diff --git a/nodes.lua b/nodes.lua index 97650e5..f58a0e2 100644 --- a/nodes.lua +++ b/nodes.lua @@ -11536,7 +11536,7 @@ minetest.register_node('everness:lava_flowing', { drawtype = 'flowingliquid', tiles = { { - name = 'everness_lava_source_animated.png', + name = 'everness_lava_flowing_animated.png', align_style = 'world', scale = 2 } diff --git a/nodes_mineral_waters_under.lua b/nodes_mineral_waters_under.lua index 2922f49..41c16ed 100644 --- a/nodes_mineral_waters_under.lua +++ b/nodes_mineral_waters_under.lua @@ -150,7 +150,50 @@ Everness:register_node('everness:mineral_lava_stone_dry', { 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' }, @@ -164,7 +207,7 @@ for i = 1, 7 do -- MCL pickaxey = 5, building_block = 1, - material_stone = 1 + material_stone = 1, }, _mcl_blast_resistance = 1200, _mcl_hardness = 50, @@ -204,10 +247,13 @@ for i = 1, 7 do (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, }) -end -for i = 1, 7 do 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 @@ -279,5 +325,361 @@ for i = 1, 7 do (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 +}) diff --git a/schematics/everness_lava_tree.mts b/schematics/everness_lava_tree.mts new file mode 100644 index 0000000..c0d1885 Binary files /dev/null and b/schematics/everness_lava_tree.mts differ diff --git a/skybox.lua b/skybox.lua index 6fa93c3..83c8cf6 100644 --- a/skybox.lua +++ b/skybox.lua @@ -742,6 +742,35 @@ local skybox_defs = { 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 } }, } @@ -864,6 +893,23 @@ 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() @@ -946,3 +992,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) diff --git a/sounds/everness_lava.1.ogg b/sounds/everness_lava.1.ogg deleted file mode 100644 index 6e8185e..0000000 Binary files a/sounds/everness_lava.1.ogg and /dev/null differ diff --git a/sounds/everness_lava.2.ogg b/sounds/everness_lava_1.ogg similarity index 100% rename from sounds/everness_lava.2.ogg rename to sounds/everness_lava_1.ogg diff --git a/sounds/everness_lava_2.ogg b/sounds/everness_lava_2.ogg new file mode 100644 index 0000000..3646372 Binary files /dev/null and b/sounds/everness_lava_2.ogg differ diff --git a/stairs.lua b/stairs.lua index 496e08e..5c40e51 100644 --- a/stairs.lua +++ b/stairs.lua @@ -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 +) diff --git a/textures/everness_bucket_lava.png b/textures/everness_bucket_lava.png new file mode 100644 index 0000000..06da103 Binary files /dev/null and b/textures/everness_bucket_lava.png differ diff --git a/textures/everness_fence_lava_tree_wood.png b/textures/everness_fence_lava_tree_wood.png new file mode 100644 index 0000000..27afd41 Binary files /dev/null and b/textures/everness_fence_lava_tree_wood.png differ diff --git a/textures/everness_fence_rail_lava_tree_wood.png b/textures/everness_fence_rail_lava_tree_wood.png new file mode 100644 index 0000000..c1a1cee Binary files /dev/null and b/textures/everness_fence_rail_lava_tree_wood.png differ diff --git a/textures/everness_lava_tree.png b/textures/everness_lava_tree.png new file mode 100644 index 0000000..455bc8f Binary files /dev/null and b/textures/everness_lava_tree.png differ diff --git a/textures/everness_lava_tree_animated.png b/textures/everness_lava_tree_animated.png new file mode 100644 index 0000000..afc5fb5 Binary files /dev/null and b/textures/everness_lava_tree_animated.png differ diff --git a/textures/everness_lava_tree_leaves.png b/textures/everness_lava_tree_leaves.png new file mode 100644 index 0000000..2f440af Binary files /dev/null and b/textures/everness_lava_tree_leaves.png differ diff --git a/textures/everness_lava_tree_sapling.png b/textures/everness_lava_tree_sapling.png new file mode 100644 index 0000000..a01889e Binary files /dev/null and b/textures/everness_lava_tree_sapling.png differ diff --git a/textures/everness_lava_tree_top.png b/textures/everness_lava_tree_top.png new file mode 100644 index 0000000..0f942f4 Binary files /dev/null and b/textures/everness_lava_tree_top.png differ diff --git a/textures/everness_lava_tree_wood.png b/textures/everness_lava_tree_wood.png new file mode 100644 index 0000000..d070eef Binary files /dev/null and b/textures/everness_lava_tree_wood.png differ diff --git a/textures/everness_mcl_bucket_lava.png b/textures/everness_mcl_bucket_lava.png new file mode 100644 index 0000000..0e87a0a Binary files /dev/null and b/textures/everness_mcl_bucket_lava.png differ diff --git a/textures/everness_mineral_cave_moss.png b/textures/everness_mineral_cave_moss.png new file mode 100644 index 0000000..592978d Binary files /dev/null and b/textures/everness_mineral_cave_moss.png differ diff --git a/textures/everness_mineral_cave_moss_grass.png b/textures/everness_mineral_cave_moss_grass.png new file mode 100644 index 0000000..abe5a67 Binary files /dev/null and b/textures/everness_mineral_cave_moss_grass.png differ diff --git a/textures/everness_mineral_cave_moss_side.png b/textures/everness_mineral_cave_moss_side.png new file mode 100644 index 0000000..2831a53 Binary files /dev/null and b/textures/everness_mineral_cave_moss_side.png differ diff --git a/textures/everness_mtg_bucket_lava.png b/textures/everness_mtg_bucket_lava.png new file mode 100644 index 0000000..17b2a60 Binary files /dev/null and b/textures/everness_mtg_bucket_lava.png differ diff --git a/textures/everness_wall_vine_cave_blue_item.png b/textures/everness_wall_vine_cave_blue_item.png new file mode 100644 index 0000000..b345b26 Binary files /dev/null and b/textures/everness_wall_vine_cave_blue_item.png differ diff --git a/textures/everness_wall_vine_cave_cyan_item.png b/textures/everness_wall_vine_cave_cyan_item.png new file mode 100644 index 0000000..6660801 Binary files /dev/null and b/textures/everness_wall_vine_cave_cyan_item.png differ diff --git a/textures/everness_wall_vine_cave_green_item.png b/textures/everness_wall_vine_cave_green_item.png new file mode 100644 index 0000000..e68e45c Binary files /dev/null and b/textures/everness_wall_vine_cave_green_item.png differ diff --git a/textures/everness_wall_vine_cave_violet.png b/textures/everness_wall_vine_cave_violet.png index 856ab75..741887e 100644 Binary files a/textures/everness_wall_vine_cave_violet.png and b/textures/everness_wall_vine_cave_violet.png differ diff --git a/textures/everness_wall_vine_cave_violet_item.png b/textures/everness_wall_vine_cave_violet_item.png new file mode 100644 index 0000000..80ca072 Binary files /dev/null and b/textures/everness_wall_vine_cave_violet_item.png differ diff --git a/trees.lua b/trees.lua index 5ad9a68..7c2e2a4 100644 --- a/trees.lua +++ b/trees.lua @@ -104,6 +104,15 @@ function Everness.grow_palm_tree(pos) path, '0', nil, false) end +function Everness.grow_lava_tree(pos) + local path = 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.floor(lava_tree_size.x / 2) + local lava_tree_size_z = math.floor(lava_tree_size.z / 2) + minetest.place_schematic({ x = pos.x - lava_tree_size_x, y = pos.y, z = pos.z - lava_tree_size_z }, + path, '0', nil, false) +end + function Everness.grow_sapling(pos, groups_under) if not Everness.can_grow(pos, groups_under) then -- try again 5 min later @@ -152,5 +161,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 diff --git a/vines_wall.lua b/vines_wall.lua index 73b42bb..d3b028e 100644 --- a/vines_wall.lua +++ b/vines_wall.lua @@ -25,6 +25,8 @@ local function register_vine_wall(name, def, overrides) _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' @@ -39,7 +41,7 @@ local function register_vine_wall(name, def, overrides) vine = 1, snappy = 3, -- Everness - falling_vines = 1, + -- falling_vines = 1, no_silktouch = 1, -- X Farming compost = 30, @@ -94,9 +96,9 @@ end -- Cave vine -register_vine_wall('wall_vine_cave_green', { - description = S('Wall Cave Vine Green'), -}) +-- 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'), diff --git a/walls.lua b/walls.lua index 6fcde39..f303c6a 100644 --- a/walls.lua +++ b/walls.lua @@ -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() +)