Add mineral waters and bamboo biome fixes

This commit is contained in:
Juraj Vajda 2024-01-10 23:16:52 -05:00
parent 74c8e1ee6b
commit 76e5fc37b7
103 changed files with 13844 additions and 248 deletions

32
api.lua
View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
local S = minetest.get_translator(minetest.get_current_modname()) local S = minetest.get_translator(minetest.get_current_modname())
@ -212,6 +210,16 @@ Everness = {
y_max = tonumber(minetest.settings:get('everness_forsaken_tundra_under_y_max')) or -256, y_max = tonumber(minetest.settings:get('everness_forsaken_tundra_under_y_max')) or -256,
y_min = tonumber(minetest.settings:get('everness_forsaken_tundra_under_y_min')) or -31000, y_min = tonumber(minetest.settings:get('everness_forsaken_tundra_under_y_min')) or -31000,
}, },
everness_mineral_waters = {
enabled = minetest.settings:get_bool('everness_mineral_waters', true),
y_max = tonumber(minetest.settings:get('everness_mineral_waters_y_max')) or 31000,
y_min = tonumber(minetest.settings:get('everness_mineral_waters_y_min')) or 1,
},
everness_mineral_waters_under = {
enabled = minetest.settings:get_bool('everness_mineral_waters_under', true),
y_max = tonumber(minetest.settings:get('everness_mineral_waters_under_y_max')) or -256,
y_min = tonumber(minetest.settings:get('everness_mineral_waters_under_y_min')) or -31000,
},
}, },
features = { features = {
everness_feature_sneak_pickup = minetest.settings:get_bool('everness_feature_sneak_pickup', true), everness_feature_sneak_pickup = minetest.settings:get_bool('everness_feature_sneak_pickup', true),
@ -922,14 +930,30 @@ end
-- 'can grow' function - copy from MTG -- 'can grow' function - copy from MTG
function Everness.can_grow(pos) function Everness.can_grow(pos, groups_under)
local node_under = minetest.get_node_or_nil({ x = pos.x, y = pos.y - 1, z = pos.z }) local node_under = minetest.get_node_or_nil({ x = pos.x, y = pos.y - 1, z = pos.z })
if not node_under then if not node_under then
return false return false
end end
if minetest.get_item_group(node_under.name, 'soil') == 0 then local _groups_under = groups_under
if not groups_under then
_groups_under = { 'soil' }
end
local has_fertile_under = false
-- Check is one of the `groups_under` are under the sapling
for i, v in ipairs(_groups_under) do
if minetest.get_item_group(node_under.name, v) > 0 then
has_fertile_under = true
break
end
end
if not has_fertile_under then
return false return false
end end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- how often node timers for plants will tick, +/- some random value -- how often node timers for plants will tick, +/- some random value

222
buckets.lua Normal file
View File

@ -0,0 +1,222 @@
--[[
Authors of original source code
----------------------
Kahrl <kahrl@gmx.net> (LGPLv2.1+)
celeron55, Perttu Ahola <celeron55@gmail.com> (LGPLv2.1+)
Various Minetest developers and contributors (LGPLv2.1+)
Everness. Never ending discovery in Everness mapgen.
Modified by:
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.
--]]
-- Load support for MT game translation.
local S = minetest.get_translator(minetest.get_current_modname())
minetest.register_craft({
output = 'everness:bucket_empty 1',
recipe = {
{ 'everness:pyrite_ingot', '', 'everness:pyrite_ingot' },
{ '', 'everness:pyrite_ingot', '' },
}
})
local bucket = {
liquids = {}
}
local function check_protection(pos, name, text)
if minetest.is_protected(pos, name) then
minetest.log('action', (name ~= '' and name or 'A mod')
.. ' tried to ' .. text
.. ' at protected position '
.. minetest.pos_to_string(pos)
.. ' with a bucket')
minetest.record_protection_violation(pos, name)
return true
end
return false
end
-- Register a new liquid
-- source = name of the source node
-- flowing = name of the flowing node
-- itemname = name of the new bucket item (or nil if liquid is not takeable)
-- inventory_image = texture of the new bucket item (ignored if itemname == nil)
-- name = text description of the bucket item
-- groups = (optional) groups of the bucket item, for example {water_bucket = 1}
-- force_renew = (optional) bool. Force the liquid source to renew if it has a
-- source neighbour, even if defined as 'liquid_renewable = false'.
-- Needed to avoid creating holes in sloping rivers.
-- This function can be called from any mod (that depends on bucket).
function bucket.register_liquid(source, flowing, itemname, inventory_image, name,
groups, force_renew)
bucket.liquids[source] = {
source = source,
flowing = flowing,
itemname = itemname,
force_renew = force_renew,
}
bucket.liquids[flowing] = bucket.liquids[source]
if itemname ~= nil then
minetest.register_craftitem(itemname, {
description = name,
inventory_image = inventory_image,
stack_max = 1,
liquids_pointable = true,
groups = groups,
wield_scale = { x = 2, y = 2, z = 1 },
on_place = function(itemstack, user, pointed_thing)
-- Must be pointing to node
if pointed_thing.type ~= 'node' then
return
end
local node = minetest.get_node_or_nil(pointed_thing.under)
local ndef = node and minetest.registered_nodes[node.name]
-- Call on_rightclick if the pointed node defines it
if ndef and ndef.on_rightclick and
not (user and user:is_player() and
user:get_player_control().sneak) then
return ndef.on_rightclick(
pointed_thing.under,
node, user,
itemstack)
end
local lpos
-- Check if pointing to a buildable node
if ndef and ndef.buildable_to then
-- buildable; replace the node
lpos = pointed_thing.under
else
-- not buildable to; place the liquid above
-- check if the node above can be replaced
lpos = pointed_thing.above
node = minetest.get_node_or_nil(lpos)
local above_ndef = node and minetest.registered_nodes[node.name]
if not above_ndef or not above_ndef.buildable_to then
-- do not remove the bucket with the liquid
return itemstack
end
end
if check_protection(lpos, user
and user:get_player_name()
or '', 'place '..source) then
return
end
minetest.set_node(lpos, {name = source})
return ItemStack('everness:bucket_empty')
end
})
end
end
minetest.register_craftitem('everness:bucket_empty', {
description = S('Empty Bucket'),
inventory_image = 'everness_bucket_empty.png',
groups = { tool = 1 },
liquids_pointable = true,
wield_scale = { x = 2, y = 2, z = 1 },
on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type == 'object' then
pointed_thing.ref:punch(user, 1.0, { full_punch_interval=1.0 }, nil)
return user:get_wielded_item()
elseif pointed_thing.type ~= 'node' then
-- do nothing if it's neither object nor node
return
end
-- Check if pointing to a liquid source
local node = minetest.get_node(pointed_thing.under)
local liquiddef = bucket.liquids[node.name]
local item_count = user:get_wielded_item():get_count()
if liquiddef ~= nil
and liquiddef.itemname ~= nil
and node.name == liquiddef.source
then
if check_protection(pointed_thing.under,
user:get_player_name(),
'take '.. node.name) then
return
end
-- default set to return filled bucket
local giving_back = liquiddef.itemname
-- check if holding more than 1 empty bucket
if item_count > 1 then
-- if space in inventory add filled bucked, otherwise drop as item
local inv = user:get_inventory()
if inv:room_for_item('main', { name = liquiddef.itemname }) then
inv:add_item('main', liquiddef.itemname)
else
local pos = user:get_pos()
pos.y = math.floor(pos.y + 0.5)
minetest.add_item(pos, liquiddef.itemname)
end
-- set to return empty buckets minus 1
giving_back = 'everness:bucket_empty '.. tostring(item_count - 1)
end
-- force_renew requires a source neighbour
local source_neighbor = false
if liquiddef.force_renew then
source_neighbor = minetest.find_node_near(pointed_thing.under, 1, liquiddef.source)
end
if not (source_neighbor and liquiddef.force_renew) then
minetest.add_node(pointed_thing.under, { name = 'air' })
end
return ItemStack(giving_back)
else
-- non-liquid nodes will have their on_punch triggered
local node_def = minetest.registered_nodes[node.name]
if node_def then
node_def.on_punch(pointed_thing.under, node, user, pointed_thing)
end
return user:get_wielded_item()
end
end,
})
-- Mineral water source is 'liquid_renewable = false' to avoid horizontal spread
-- of water sources in sloping rivers that can cause water to overflow
-- riverbanks and cause floods.
-- River water source is instead made renewable by the 'force renew' option
-- used here.
bucket.register_liquid(
'everness:mineral_water_source',
'everness:mineral_water_flowing',
'everness:bucket_mineral_water',
'everness_bucket_mineral_water.png',
S('Mineral') .. ' ' .. S('Water') .. ' ' .. S('Bucket'),
{ tool = 1, water_bucket = 1 }
)

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -885,6 +883,71 @@ minetest.register_craft({
recipe = 'everness:crystal_mossy_cobble', recipe = 'everness:crystal_mossy_cobble',
}) })
minetest.register_craft({
type = 'cooking',
output = 'everness:mineral_stone',
recipe = 'everness:mineral_stone_cobble',
})
minetest.register_craft({
output = 'everness:mineral_stone_block 9',
recipe = {
{ 'everness:mineral_stone', 'everness:mineral_stone', 'everness:mineral_stone' },
{ 'everness:mineral_stone', 'everness:mineral_stone', 'everness:mineral_stone' },
{ 'everness:mineral_stone', 'everness:mineral_stone', 'everness:mineral_stone' },
}
})
minetest.register_craft({
output = 'everness:mineral_stone_brick 4',
recipe = {
{ 'everness:mineral_stone', 'everness:mineral_stone' },
{ 'everness:mineral_stone', 'everness:mineral_stone' },
}
})
minetest.register_craft({
output = 'everness:mineral_sandstone',
recipe = {
{ 'everness:mineral_sand', 'everness:mineral_sand' },
{ 'everness:mineral_sand', 'everness:mineral_sand' },
}
})
minetest.register_craft({
output = 'everness:mineral_sand 4',
recipe = {
{ 'everness:mineral_sandstone' },
}
})
minetest.register_craft({
output = 'everness:mineral_sandstone_block 9',
recipe = {
{ 'everness:mineral_sandstone', 'everness:mineral_sandstone', 'everness:mineral_sandstone' },
{ 'everness:mineral_sandstone', 'everness:mineral_sandstone', 'everness:mineral_sandstone' },
{ 'everness:mineral_sandstone', 'everness:mineral_sandstone', 'everness:mineral_sandstone' },
}
})
minetest.register_craft({
output = 'everness:mineral_stone_brick_with_growth 3',
recipe = {
{ 'group:flora', 'group:flora', 'group:flora'},
{ 'everness:mineral_stone_brick', 'everness:mineral_stone_brick', 'everness:mineral_stone_brick'},
{ 'group:flora', 'group:flora', 'group:flora'},
}
})
minetest.register_craft({
output = 'everness:mineral_stone_brick_with_flower_growth 6',
recipe = {
{ 'everness:mineral_stone_brick', 'everness:mineral_stone_brick', 'everness:mineral_stone_brick'},
{ 'group:flower', 'group:flower', 'group:flower'},
{ 'everness:mineral_stone_brick', 'everness:mineral_stone_brick', 'everness:mineral_stone_brick'}
}
})
-- --
-- Saplings -- Saplings
-- --

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
local S = minetest.get_translator(minetest.get_current_modname()) local S = minetest.get_translator(minetest.get_current_modname())
@ -49,6 +47,13 @@ minetest.register_craftitem('everness:pyrite_lump', {
inventory_image = 'everness_pyrite_lump.png' inventory_image = 'everness_pyrite_lump.png'
}) })
minetest.register_craftitem('everness:coconut_fruit', {
description = S('Coconut'),
inventory_image = 'everness_coconut_item.png',
wield_scale = { x = 2, y = 2, z = 1 },
on_use = minetest.item_eat(4),
})
-- --
-- Crafting recipes -- Crafting recipes
-- --

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
local S = minetest.get_translator(minetest.get_current_modname()) local S = minetest.get_translator(minetest.get_current_modname())

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
local SOUND_DEFS = { local SOUND_DEFS = {

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
local S = minetest.get_translator(minetest.get_current_modname()) local S = minetest.get_translator(minetest.get_current_modname())

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -238,6 +236,7 @@ Everness:register_leafdecay({
'everness:willow_tree', 'everness:willow_tree',
'everness:sequoia_tree', 'everness:sequoia_tree',
'everness:mese_tree', 'everness:mese_tree',
'everness:palm_tree'
}, },
leaves = { leaves = {
'everness:coral_leaves', 'everness:coral_leaves',
@ -245,7 +244,9 @@ Everness:register_leafdecay({
'everness:willow_leaves', 'everness:willow_leaves',
'everness:sequoia_leaves', 'everness:sequoia_leaves',
'everness:mese_leaves', 'everness:mese_leaves',
'everness:mese_tree_fruit' 'everness:mese_tree_fruit',
'everness:palm_leaves',
'everness:coconut'
}, },
radius = 3 radius = 3
}) })
@ -272,10 +273,12 @@ Everness:register_leafdecay({
local moss_correspondences = { local moss_correspondences = {
['everness:coral_desert_cobble'] = 'everness:coral_desert_mossy_cobble', ['everness:coral_desert_cobble'] = 'everness:coral_desert_mossy_cobble',
['everness:crystal_cobble'] = 'everness:crystal_mossy_cobble',
} }
local moss_nodenames_correspondences = { local moss_nodenames_correspondences = {
'everness:coral_desert_cobble', 'everness:coral_desert_cobble',
'everness:crystal_cobble',
} }
if minetest.get_modpath('default') then if minetest.get_modpath('default') then

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
minetest = minetest.global_exists('minetest') and minetest --[[@as Minetest]] minetest = minetest.global_exists('minetest') and minetest --[[@as Minetest]]
@ -38,6 +36,7 @@ dofile(path .. '/functions.lua')
dofile(path .. '/trees.lua') dofile(path .. '/trees.lua')
dofile(path .. '/vines.lua') dofile(path .. '/vines.lua')
dofile(path .. '/chests.lua') dofile(path .. '/chests.lua')
dofile(path .. '/torches.lua')
dofile(path .. '/mapgen.lua') dofile(path .. '/mapgen.lua')
@ -161,6 +160,14 @@ if Everness.settings.biomes.everness_frosted_icesheet.enabled then
dofile(path .. '/mapgen_frosted_icesheet.lua') dofile(path .. '/mapgen_frosted_icesheet.lua')
end end
if Everness.settings.biomes.everness_mineral_waters.enabled then
dofile(path .. '/mapgen_mineral_waters.lua')
end
if Everness.settings.biomes.everness_mineral_waters_under.enabled then
dofile(path .. '/mapgen_mineral_waters_under.lua')
end
dofile(path .. '/mapgen_after.lua') dofile(path .. '/mapgen_after.lua')
if minetest.get_modpath('xpanes') and minetest.global_exists('xpanes') then if minetest.get_modpath('xpanes') and minetest.global_exists('xpanes') then
@ -188,6 +195,7 @@ if minetest.get_modpath('doors') and minetest.global_exists('doors') then
dofile(path .. '/doors.lua') dofile(path .. '/doors.lua')
end end
dofile(path .. '/buckets.lua')
dofile(path .. '/tools.lua') dofile(path .. '/tools.lua')
dofile(path .. '/craftitems.lua') dofile(path .. '/craftitems.lua')
dofile(path .. '/crafting.lua') dofile(path .. '/crafting.lua')

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
minetest.register_lbm({ minetest.register_lbm({
@ -30,6 +28,7 @@ minetest.register_lbm({
'everness:cursed_lands_deep_ocean_skull_marker', 'everness:cursed_lands_deep_ocean_skull_marker',
'everness:frosted_icesheet_igloo_marker', 'everness:frosted_icesheet_igloo_marker',
'everness:crystal_forest_deep_ocean_ruins_marker', 'everness:crystal_forest_deep_ocean_ruins_marker',
'everness:mineral_waters_marker'
}, },
run_at_every_load = true, run_at_every_load = true,
action = function(pos, node) action = function(pos, node)
@ -238,6 +237,27 @@ minetest.register_lbm({
return return
end end
if rand:next(0, 100) <= item_def.chance then
local stack = ItemStack(item_def.name)
if minetest.registered_tools[item_def.name] then
stack:set_wear(rand:next(1, 65535))
else
stack:set_count(rand:next(1, item_def.max_count))
end
inv:set_stack('main', index, stack)
end
elseif node.name == 'everness:mineral_waters_marker' then
--
-- Mineral Waters
--
local item_def = Everness.loot_chest.default[rand:next(1, #Everness.loot_chest.default)]
if not minetest.registered_items[item_def.name] then
return
end
if rand:next(0, 100) <= item_def.chance then if rand:next(0, 100) <= item_def.chance then
local stack = ItemStack(item_def.name) local stack = ItemStack(item_def.name)

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -99,7 +97,8 @@ local all_biomes_mese_tree_place_on = {
'everness:frosted_ice_translucent', 'everness:frosted_ice_translucent',
'everness:frosted_snowblock', 'everness:frosted_snowblock',
'everness:sulfur_stone', 'everness:sulfur_stone',
'everness:volcanic_sulfur' 'everness:volcanic_sulfur',
'everness:mineral_waters'
} }
if minetest.get_modpath('default') then if minetest.get_modpath('default') then

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- Get the content IDs for the nodes used. -- Get the content IDs for the nodes used.
@ -38,21 +36,27 @@ local c_frosted_ice = minetest.get_content_id('everness:frosted_ice')
local data = {} local data = {}
local chance = 15 local chance = 15
local disp = 16 local disp = 16
local water_level = tonumber(minetest.settings:get('water_level'))
minetest.register_on_generated(function(minp, maxp, blockseed) minetest.register_on_generated(function(minp, maxp, blockseed)
local rand = PcgRandom(blockseed) local rand = PcgRandom(blockseed)
-- Load the voxelmanip with the result of engine mapgen
local vm, emin, emax = minetest.get_mapgen_object('voxelmanip') local vm, emin, emax = minetest.get_mapgen_object('voxelmanip')
-- 'area' is used later to get the voxelmanip indexes for positions
local area = VoxelArea:new({ MinEdge = emin, MaxEdge = emax }) local area = VoxelArea:new({ MinEdge = emin, MaxEdge = emax })
-- Get the content ID data from the voxelmanip in the form of a flat array. -- Get the content ID data from the voxelmanip in the form of a flat array.
-- Set the buffer parameter to use and reuse 'data' for this. -- Set the buffer parameter to use and reuse 'data' for this.
vm:get_data(data) vm:get_data(data)
-- Side length of mapchunk
local sidelength = maxp.x - minp.x + 1 local sidelength = maxp.x - minp.x + 1
local x_disp = rand:next(0, disp) local x_disp = rand:next(0, disp)
local z_disp = rand:next(0, disp) local z_disp = rand:next(0, disp)
if maxp.y > 0 then if maxp.y >= water_level then
-- Above sea level
for y = minp.y, maxp.y do for y = minp.y, maxp.y do
local vi = area:index(minp.x + sidelength / 2 + x_disp, y, minp.z + sidelength / 2 + z_disp) local vi = area:index(minp.x + sidelength / 2 + x_disp, y, minp.z + sidelength / 2 + z_disp)
@ -265,9 +269,13 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
end end
vm:write_to_map(true) vm:write_to_map(true)
-- @TODO
-- Try below approach
-- After modifying the Mapgen VoxelManip object's internal buffer, it may be necessary to update lighting information using either: `VoxelManip:calc_lighting()` or `VoxelManip:set_lighting()`
minetest.fix_light(minp, maxp) minetest.fix_light(minp, maxp)
else else
-- Under -- Under sea level
for y = minp.y, maxp.y do for y = minp.y, maxp.y do
local vi = area:index(minp.x + sidelength / 2 + x_disp, y, minp.z + sidelength / 2 + z_disp) local vi = area:index(minp.x + sidelength / 2 + x_disp, y, minp.z + sidelength / 2 + z_disp)

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -56,7 +54,7 @@ minetest.register_decoration({
y_max = y_max, y_max = y_max,
y_min = y_min, y_min = y_min,
schematic = minetest.get_modpath('everness') .. '/schematics/everness_small_bamboo.mts', schematic = minetest.get_modpath('everness') .. '/schematics/everness_small_bamboo.mts',
flags = 'place_center_x, place_center_z', flags = 'place_center_x, place_center_z, force_placement',
rotation = 'random', rotation = 'random',
}) })
@ -70,7 +68,7 @@ minetest.register_decoration({
y_max = y_max, y_max = y_max,
y_min = y_min, y_min = y_min,
schematic = minetest.get_modpath('everness') .. '/schematics/everness_large_bamboo.mts', schematic = minetest.get_modpath('everness') .. '/schematics/everness_large_bamboo.mts',
flags = 'place_center_x, place_center_z', flags = 'place_center_x, place_center_z, force_placement',
rotation = 'random', rotation = 'random',
}) })
@ -253,48 +251,77 @@ register_flower_magenta_decoration(0.015, 0.045, 1)
-- On Generated -- On Generated
-- --
local data = {}
local p2data = {}
local c_everness_bamboo_3 = minetest.get_content_id('everness:bamboo_3')
local c_everness_bamboo_4 = minetest.get_content_id('everness:bamboo_4')
local c_everness_bamboo_5 = minetest.get_content_id('everness:bamboo_5')
local d_everness_bamboo_forest_large_bamboo = minetest.get_decoration_id('everness:bamboo_forest_large_bamboo')
minetest.set_gen_notify('decoration', { d_everness_bamboo_forest_large_bamboo })
minetest.register_on_generated(function(minp, maxp, blockseed) minetest.register_on_generated(function(minp, maxp, blockseed)
if maxp.y > 0 then -- Load the voxelmanip with the result of engine mapgen
local vm, emin, emax = minetest.get_mapgen_object('voxelmanip')
-- 'area' is used later to get the voxelmanip indexes for positions
local area = VoxelArea:new({ MinEdge = emin, MaxEdge = emax })
-- Get the content ID data from the voxelmanip in the form of a flat array.
-- Set the buffer parameter to use and reuse 'data' for this.
vm:get_data(data)
vm:get_param2_data(p2data)
local gennotify = minetest.get_mapgen_object('gennotify')
-- --
-- Bamboo -- Bamboo
-- --
local bamboos_pos = minetest.find_nodes_in_area_under_air(minp, maxp, 'everness:bamboo_3') for _, pos in ipairs(gennotify['decoration#' .. d_everness_bamboo_forest_large_bamboo] or {}) do
-- For bamboo large this is position of the 'place_on' node, e.g. 'everness:dirt_with_grass_extras_2'
for _, pos in ipairs(bamboos_pos) do local vi = area:indexp(pos)
local node_below = minetest.get_node(vector.new(pos.x, pos.y - 1, pos.z)) local while_counter = 1
-- get height of the generated bamboo
local bamboo_height = 0 local bamboo_height = 0
local height_offset = 1 local last_vi = vi + area.ystride * while_counter
local bamboo_below = node_below
while minetest.get_item_group(bamboo_below.name, 'bamboo') > 0 do -- Get bamboo height
if bamboo_height > 1 then while data[last_vi] == c_everness_bamboo_3 do
bamboo_below = minetest.get_node(vector.new(pos.x, pos.y - height_offset, pos.z)) last_vi = vi + area.ystride * while_counter
end
height_offset = height_offset + 1
bamboo_height = bamboo_height + 1 bamboo_height = bamboo_height + 1
while_counter = while_counter + 1
end end
-- add top bamboo nodes with leaves based on their generated heigth -- Back up the last from `while_counter`
last_vi = last_vi - area.ystride
-- Add top bamboo nodes with leaves based on their generated height
if bamboo_height > 4 then
for i = 1, 3 do for i = 1, 3 do
local node_name = 'everness:bamboo_4' if i == 1 then
data[last_vi + area.ystride * i] = c_everness_bamboo_4
if i == 2 and bamboo_height > 4 then else
node_name = 'everness:bamboo_5' data[last_vi + area.ystride * i] = c_everness_bamboo_5
elseif i == 3 then
node_name = 'everness:bamboo_5'
end end
minetest.swap_node( p2data[last_vi + area.ystride * i] = p2data[vi + area.ystride]
vector.new(pos.x, pos.y + (i - 1), pos.z), end
{ else
name = node_name, for i = 1, 2 do
param2 = node_below.param2 if i == 1 then
} data[last_vi + area.ystride * i] = c_everness_bamboo_4
) else
data[last_vi + area.ystride * i] = c_everness_bamboo_5
end
p2data[last_vi + area.ystride * i] = p2data[vi + area.ystride]
end end
end end
end end
vm:set_data(data)
vm:set_param2_data(p2data)
-- Calculate lighting for what has been created.
vm:calc_lighting()
-- Write what has been created to the world.
vm:write_to_map()
end) end)

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -27,7 +25,7 @@ local y_min = Everness.settings.biomes.everness_bamboo_forest_under.y_min
minetest.register_biome({ minetest.register_biome({
name = 'everness_bamboo_forest_under', name = 'everness_bamboo_forest_under',
node_cave_liquid = { 'default:water_source', 'default:lava_source' }, node_cave_liquid = { 'mapgen_water_source', 'mapgen_lava_source' },
node_dungeon = 'everness:bamboo_wood', node_dungeon = 'everness:bamboo_wood',
node_dungeon_alt = 'everness:bamboo_mosaic_wood', node_dungeon_alt = 'everness:bamboo_mosaic_wood',
node_dungeon_stair = 'stairs:stair_bamboo_wood', node_dungeon_stair = 'stairs:stair_bamboo_wood',

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -33,7 +31,7 @@ minetest.register_biome({
depth_filler = 3, depth_filler = 3,
node_riverbed = 'everness:coral_forest_deep_ocean_sand', node_riverbed = 'everness:coral_forest_deep_ocean_sand',
depth_riverbed = 2, depth_riverbed = 2,
node_cave_liquid = 'default:water_source', node_cave_liquid = 'mapgen_water_source',
node_dungeon = 'everness:coral_deep_ocean_sandstone_block', node_dungeon = 'everness:coral_deep_ocean_sandstone_block',
node_dungeon_alt = 'everness:coral_deep_ocean_sandstone_brick', node_dungeon_alt = 'everness:coral_deep_ocean_sandstone_brick',
node_dungeon_stair = 'stairs:stair_coral_deep_ocean_sandstone_block', node_dungeon_stair = 'stairs:stair_coral_deep_ocean_sandstone_block',
@ -78,7 +76,7 @@ minetest.register_decoration({
name = 'everness:coral_forest_deep_ocean_coral_reef_pink', name = 'everness:coral_forest_deep_ocean_coral_reef_pink',
deco_type = 'schematic', deco_type = 'schematic',
place_on = { 'everness:coral_forest_deep_ocean_sand' }, place_on = { 'everness:coral_forest_deep_ocean_sand' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
sidelen = 16, sidelen = 16,
noise_params = { noise_params = {
@ -100,7 +98,7 @@ minetest.register_decoration({
name = 'everness:coral_forest_deep_ocean_coral_reef_cyan', name = 'everness:coral_forest_deep_ocean_coral_reef_cyan',
deco_type = 'schematic', deco_type = 'schematic',
place_on = { 'everness:coral_forest_deep_ocean_sand' }, place_on = { 'everness:coral_forest_deep_ocean_sand' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
sidelen = 16, sidelen = 16,
noise_params = { noise_params = {
@ -122,7 +120,7 @@ minetest.register_decoration({
name = 'everness:coral_forest_deep_ocean_coral_reef_green', name = 'everness:coral_forest_deep_ocean_coral_reef_green',
deco_type = 'schematic', deco_type = 'schematic',
place_on = { 'everness:coral_forest_deep_ocean_sand' }, place_on = { 'everness:coral_forest_deep_ocean_sand' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
sidelen = 16, sidelen = 16,
noise_params = { noise_params = {
@ -144,7 +142,7 @@ minetest.register_decoration({
name = 'everness:coral_forest_deep_ocean_coral_reef_red', name = 'everness:coral_forest_deep_ocean_coral_reef_red',
deco_type = 'schematic', deco_type = 'schematic',
place_on = { 'everness:coral_forest_deep_ocean_sand' }, place_on = { 'everness:coral_forest_deep_ocean_sand' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
sidelen = 16, sidelen = 16,
noise_params = { noise_params = {
@ -166,7 +164,7 @@ minetest.register_decoration({
name = 'everness:everness_coral_forest_deep_ocean_pink', name = 'everness:everness_coral_forest_deep_ocean_pink',
deco_type = 'schematic', deco_type = 'schematic',
place_on = { 'everness:coral_forest_deep_ocean_sand' }, place_on = { 'everness:coral_forest_deep_ocean_sand' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
sidelen = 16, sidelen = 16,
fill_ratio = 0.002, fill_ratio = 0.002,
@ -181,7 +179,7 @@ minetest.register_decoration({
name = 'everness:everness_coral_forest_deep_ocean_cyan', name = 'everness:everness_coral_forest_deep_ocean_cyan',
deco_type = 'schematic', deco_type = 'schematic',
place_on = { 'everness:coral_forest_deep_ocean_sand' }, place_on = { 'everness:coral_forest_deep_ocean_sand' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
sidelen = 16, sidelen = 16,
fill_ratio = 0.002, fill_ratio = 0.002,
@ -196,7 +194,7 @@ minetest.register_decoration({
name = 'everness:everness_coral_forest_deep_ocean_green', name = 'everness:everness_coral_forest_deep_ocean_green',
deco_type = 'schematic', deco_type = 'schematic',
place_on = { 'everness:coral_forest_deep_ocean_sand' }, place_on = { 'everness:coral_forest_deep_ocean_sand' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
sidelen = 16, sidelen = 16,
fill_ratio = 0.002, fill_ratio = 0.002,
@ -211,7 +209,7 @@ minetest.register_decoration({
name = 'everness:everness_coral_forest_deep_ocean_red', name = 'everness:everness_coral_forest_deep_ocean_red',
deco_type = 'schematic', deco_type = 'schematic',
place_on = { 'everness:coral_forest_deep_ocean_sand' }, place_on = { 'everness:coral_forest_deep_ocean_sand' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
sidelen = 16, sidelen = 16,
fill_ratio = 0.002, fill_ratio = 0.002,
@ -234,7 +232,7 @@ minetest.register_decoration({
y_min = y_min, y_min = y_min,
flags = 'force_placement', flags = 'force_placement',
decoration = { 'everness:coral_deep_ocean_mud' }, decoration = { 'everness:coral_deep_ocean_mud' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
}) })
@ -257,7 +255,7 @@ minetest.register_decoration({
y_min = y_min, y_min = y_min,
flags = 'force_placement', flags = 'force_placement',
decoration = { 'everness:coral_forest_deep_ocean_coral_plant_1' }, decoration = { 'everness:coral_forest_deep_ocean_coral_plant_1' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
}) })
@ -280,7 +278,7 @@ minetest.register_decoration({
y_min = y_min, y_min = y_min,
flags = 'force_placement', flags = 'force_placement',
decoration = { 'everness:coral_forest_deep_ocean_coral_plant_2' }, decoration = { 'everness:coral_forest_deep_ocean_coral_plant_2' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
}) })
@ -303,7 +301,7 @@ minetest.register_decoration({
y_min = y_min, y_min = y_min,
flags = 'force_placement', flags = 'force_placement',
decoration = { 'everness:coral_forest_deep_ocean_coral_plant_3' }, decoration = { 'everness:coral_forest_deep_ocean_coral_plant_3' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
}) })

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -34,7 +32,7 @@ minetest.register_biome({
node_riverbed = 'everness:coral_white_sand', node_riverbed = 'everness:coral_white_sand',
depth_riverbed = 2, depth_riverbed = 2,
node_stone = 'everness:coral_desert_stone', node_stone = 'everness:coral_desert_stone',
node_cave_liquid = 'default:water_source', node_cave_liquid = 'mapgen_water_source',
node_dungeon = 'everness:coral_desert_cobble', node_dungeon = 'everness:coral_desert_cobble',
node_dungeon_alt = 'everness:coral_desert_mossy_cobble', node_dungeon_alt = 'everness:coral_desert_mossy_cobble',
node_dungeon_stair = 'stairs:stair_coral_desert_cobble', node_dungeon_stair = 'stairs:stair_coral_desert_cobble',

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -27,7 +25,7 @@ local y_min = Everness.settings.biomes.everness_coral_forest_under.y_min
minetest.register_biome({ minetest.register_biome({
name = 'everness_coral_forest_under', name = 'everness_coral_forest_under',
node_cave_liquid = { 'default:water_source', 'default:lava_source' }, node_cave_liquid = { 'mapgen_water_source', 'mapgen_lava_source' },
node_dungeon = 'everness:coral_desert_cobble', node_dungeon = 'everness:coral_desert_cobble',
node_dungeon_alt = 'everness:coral_desert_mossy_cobble', node_dungeon_alt = 'everness:coral_desert_mossy_cobble',
node_dungeon_stair = 'stairs:stair_coral_desert_cobble', node_dungeon_stair = 'stairs:stair_coral_desert_cobble',

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -33,7 +31,7 @@ minetest.register_biome({
depth_filler = 3, depth_filler = 3,
node_riverbed = 'everness:crystal_forest_deep_ocean_sand', node_riverbed = 'everness:crystal_forest_deep_ocean_sand',
depth_riverbed = 2, depth_riverbed = 2,
node_cave_liquid = 'default:water_source', node_cave_liquid = 'mapgen_water_source',
node_dungeon = 'everness:crystal_forest_deep_ocean_sandstone_block', node_dungeon = 'everness:crystal_forest_deep_ocean_sandstone_block',
node_dungeon_alt = 'everness:crystal_forest_deep_ocean_sandstone_brick', node_dungeon_alt = 'everness:crystal_forest_deep_ocean_sandstone_brick',
node_dungeon_stair = 'stairs:stair_crystal_forest_deep_ocean_sandstone_block', node_dungeon_stair = 'stairs:stair_crystal_forest_deep_ocean_sandstone_block',
@ -51,7 +49,7 @@ minetest.register_decoration({
name = 'everness:crystal_forest_deep_ocean_coral_1', name = 'everness:crystal_forest_deep_ocean_coral_1',
deco_type = 'schematic', deco_type = 'schematic',
place_on = { 'everness:crystal_forest_deep_ocean_sand' }, place_on = { 'everness:crystal_forest_deep_ocean_sand' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
sidelen = 16, sidelen = 16,
fill_ratio = 0.003, fill_ratio = 0.003,
@ -66,7 +64,7 @@ minetest.register_decoration({
name = 'everness:crystal_forest_deep_ocean_coral_2', name = 'everness:crystal_forest_deep_ocean_coral_2',
deco_type = 'schematic', deco_type = 'schematic',
place_on = { 'everness:crystal_forest_deep_ocean_sand' }, place_on = { 'everness:crystal_forest_deep_ocean_sand' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
sidelen = 16, sidelen = 16,
fill_ratio = 0.003, fill_ratio = 0.003,
@ -81,7 +79,7 @@ minetest.register_decoration({
name = 'everness:crystal_forest_deep_ocean_coral_3', name = 'everness:crystal_forest_deep_ocean_coral_3',
deco_type = 'schematic', deco_type = 'schematic',
place_on = { 'everness:crystal_forest_deep_ocean_sand' }, place_on = { 'everness:crystal_forest_deep_ocean_sand' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
sidelen = 16, sidelen = 16,
fill_ratio = 0.003, fill_ratio = 0.003,
@ -104,7 +102,7 @@ minetest.register_decoration({
y_min = y_min, y_min = y_min,
flags = 'force_placement', flags = 'force_placement',
decoration = { 'everness:crystal_forest_deep_ocean_sand_with_crack' }, decoration = { 'everness:crystal_forest_deep_ocean_sand_with_crack' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
}) })
@ -127,7 +125,7 @@ minetest.register_decoration({
y_min = y_min, y_min = y_min,
flags = 'force_placement', flags = 'force_placement',
decoration = { 'everness:crystal_forest_deep_ocean_coral_plant_1' }, decoration = { 'everness:crystal_forest_deep_ocean_coral_plant_1' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
}) })
@ -150,7 +148,7 @@ minetest.register_decoration({
y_min = y_min, y_min = y_min,
flags = 'force_placement', flags = 'force_placement',
decoration = { 'everness:crystal_forest_deep_ocean_coral_plant_2' }, decoration = { 'everness:crystal_forest_deep_ocean_coral_plant_2' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
}) })
@ -173,7 +171,7 @@ minetest.register_decoration({
y_min = y_min, y_min = y_min,
flags = 'force_placement', flags = 'force_placement',
decoration = { 'everness:crystal_forest_deep_ocean_coral_plant_3' }, decoration = { 'everness:crystal_forest_deep_ocean_coral_plant_3' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
}) })

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -34,7 +32,7 @@ minetest.register_biome({
node_riverbed = 'everness:crystal_sand', node_riverbed = 'everness:crystal_sand',
depth_riverbed = 2, depth_riverbed = 2,
node_stone = 'everness:crystal_stone', node_stone = 'everness:crystal_stone',
node_cave_liquid = 'default:water_source', node_cave_liquid = 'mapgen_water_source',
node_dungeon = 'everness:crystal_cobble', node_dungeon = 'everness:crystal_cobble',
node_dungeon_alt = 'everness:crystal_mossy_cobble', node_dungeon_alt = 'everness:crystal_mossy_cobble',
node_dungeon_stair = 'stairs:stair_crystal_cobble', node_dungeon_stair = 'stairs:stair_crystal_cobble',

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -34,7 +32,7 @@ minetest.register_biome({
node_riverbed = 'everness:crystal_sand', node_riverbed = 'everness:crystal_sand',
depth_riverbed = 2, depth_riverbed = 2,
node_stone = 'everness:crystal_stone', node_stone = 'everness:crystal_stone',
node_cave_liquid = 'default:water_source', node_cave_liquid = 'mapgen_water_source',
node_dungeon = 'everness:crystal_cobble', node_dungeon = 'everness:crystal_cobble',
node_dungeon_alt = 'everness:crystal_mossy_cobble', node_dungeon_alt = 'everness:crystal_mossy_cobble',
node_dungeon_stair = 'stairs:stair_crystal_cobble', node_dungeon_stair = 'stairs:stair_crystal_cobble',

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -27,7 +25,7 @@ local y_min = Everness.settings.biomes.everness_crystal_forest_under.y_min
minetest.register_biome({ minetest.register_biome({
name = 'everness_crystal_forest_under', name = 'everness_crystal_forest_under',
node_cave_liquid = { 'default:water_source', 'default:lava_source' }, node_cave_liquid = { 'mapgen_water_source', 'mapgen_lava_source' },
node_dungeon = 'everness:crystal_cobble', node_dungeon = 'everness:crystal_cobble',
node_dungeon_alt = 'everness:crystal_mossy_cobble', node_dungeon_alt = 'everness:crystal_mossy_cobble',
node_dungeon_stair = 'stairs:stair_crystal_cobble', node_dungeon_stair = 'stairs:stair_crystal_cobble',

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -33,7 +31,7 @@ minetest.register_biome({
depth_filler = 3, depth_filler = 3,
node_riverbed = 'everness:cursed_lands_deep_ocean_sand', node_riverbed = 'everness:cursed_lands_deep_ocean_sand',
depth_riverbed = 2, depth_riverbed = 2,
node_cave_liquid = 'default:water_source', node_cave_liquid = 'mapgen_water_source',
node_dungeon = 'everness:cursed_lands_deep_ocean_sandstone_block', node_dungeon = 'everness:cursed_lands_deep_ocean_sandstone_block',
node_dungeon_alt = 'everness:cursed_lands_deep_ocean_sandstone_brick', node_dungeon_alt = 'everness:cursed_lands_deep_ocean_sandstone_brick',
node_dungeon_stair = 'stairs:stair_cursed_lands_deep_ocean_sandstone_block', node_dungeon_stair = 'stairs:stair_cursed_lands_deep_ocean_sandstone_block',
@ -51,7 +49,7 @@ minetest.register_decoration({
name = 'everness:forsaken_lands_deep_ocean_coral_alcyonacea', name = 'everness:forsaken_lands_deep_ocean_coral_alcyonacea',
deco_type = 'schematic', deco_type = 'schematic',
place_on = { 'everness:cursed_lands_deep_ocean_sand' }, place_on = { 'everness:cursed_lands_deep_ocean_sand' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
sidelen = 16, sidelen = 16,
fill_ratio = 0.002, fill_ratio = 0.002,
@ -66,7 +64,7 @@ minetest.register_decoration({
name = 'everness:forsaken_lands_deep_ocean_coral_ostracod', name = 'everness:forsaken_lands_deep_ocean_coral_ostracod',
deco_type = 'schematic', deco_type = 'schematic',
place_on = { 'everness:cursed_lands_deep_ocean_sand' }, place_on = { 'everness:cursed_lands_deep_ocean_sand' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
sidelen = 16, sidelen = 16,
fill_ratio = 0.002, fill_ratio = 0.002,
@ -81,7 +79,7 @@ minetest.register_decoration({
name = 'everness:forsaken_lands_deep_ocean_coral_octocurse', name = 'everness:forsaken_lands_deep_ocean_coral_octocurse',
deco_type = 'schematic', deco_type = 'schematic',
place_on = { 'everness:cursed_lands_deep_ocean_sand' }, place_on = { 'everness:cursed_lands_deep_ocean_sand' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
sidelen = 16, sidelen = 16,
fill_ratio = 0.002, fill_ratio = 0.002,
@ -104,7 +102,7 @@ minetest.register_decoration({
y_min = y_min, y_min = y_min,
flags = 'force_placement', flags = 'force_placement',
decoration = { 'everness:cursed_lands_deep_ocean_sand_with_crack' }, decoration = { 'everness:cursed_lands_deep_ocean_sand_with_crack' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
}) })
@ -127,7 +125,7 @@ minetest.register_decoration({
y_min = y_min, y_min = y_min,
flags = 'force_placement', flags = 'force_placement',
decoration = { 'everness:cursed_lands_deep_ocean_coral_plant_anemone' }, decoration = { 'everness:cursed_lands_deep_ocean_coral_plant_anemone' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
}) })
@ -150,7 +148,7 @@ minetest.register_decoration({
y_min = y_min, y_min = y_min,
flags = 'force_placement', flags = 'force_placement',
decoration = { 'everness:cursed_lands_deep_ocean_coral_plant_darkilluma' }, decoration = { 'everness:cursed_lands_deep_ocean_coral_plant_darkilluma' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
}) })
@ -173,7 +171,7 @@ minetest.register_decoration({
y_min = y_min, y_min = y_min,
flags = 'force_placement', flags = 'force_placement',
decoration = { 'everness:cursed_lands_deep_ocean_coral_plant_demon' }, decoration = { 'everness:cursed_lands_deep_ocean_coral_plant_demon' },
spawn_by = 'default:water_source', spawn_by = 'mapgen_water_source',
num_spawn_by = 8, num_spawn_by = 8,
}) })

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -34,7 +32,7 @@ minetest.register_biome({
node_riverbed = 'everness:cursed_stone', node_riverbed = 'everness:cursed_stone',
depth_riverbed = 2, depth_riverbed = 2,
node_stone = 'everness:cursed_stone_carved', node_stone = 'everness:cursed_stone_carved',
node_cave_liquid = 'default:water_source', node_cave_liquid = 'mapgen_water_source',
node_dungeon = 'everness:cursed_lands_deep_ocean_sandstone_block', node_dungeon = 'everness:cursed_lands_deep_ocean_sandstone_block',
node_dungeon_alt = 'everness:cursed_lands_deep_ocean_sandstone_brick', node_dungeon_alt = 'everness:cursed_lands_deep_ocean_sandstone_brick',
node_dungeon_stair = 'stairs:stair_cursed_lands_deep_ocean_sandstone_block', node_dungeon_stair = 'stairs:stair_cursed_lands_deep_ocean_sandstone_block',

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -27,7 +25,7 @@ local y_min = Everness.settings.biomes.everness_cursed_lands_under.y_min
minetest.register_biome({ minetest.register_biome({
name = 'everness_cursed_lands_under', name = 'everness_cursed_lands_under',
node_cave_liquid = { 'default:water_source', 'default:lava_source' }, node_cave_liquid = { 'mapgen_water_source', 'mapgen_lava_source' },
node_dungeon = 'everness:cursed_brick', node_dungeon = 'everness:cursed_brick',
node_dungeon_alt = 'everness:cursed_brick_with_growth', node_dungeon_alt = 'everness:cursed_brick_with_growth',
node_dungeon_stair = 'stairs:stair_cursed_brick', node_dungeon_stair = 'stairs:stair_cursed_brick',

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -27,7 +25,7 @@ local y_min = Everness.settings.biomes.everness_forsaken_desert_under.y_min
minetest.register_biome({ minetest.register_biome({
name = 'everness_forsaken_desert_under', name = 'everness_forsaken_desert_under',
node_cave_liquid = { 'default:water_source', 'default:lava_source' }, node_cave_liquid = { 'mapgen_water_source', 'mapgen_lava_source' },
node_dungeon = 'default:cobble', node_dungeon = 'default:cobble',
node_dungeon_alt = 'default:mossycobble', node_dungeon_alt = 'default:mossycobble',
node_dungeon_stair = 'stairs:stair_cobble', node_dungeon_stair = 'stairs:stair_cobble',

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -34,7 +32,7 @@ minetest.register_biome({
depth_filler = 3, depth_filler = 3,
node_riverbed = 'everness:forsaken_tundra_beach_sand', node_riverbed = 'everness:forsaken_tundra_beach_sand',
depth_riverbed = 2, depth_riverbed = 2,
node_cave_liquid = 'default:water_source', node_cave_liquid = 'mapgen_water_source',
node_dungeon = 'everness:forsaken_tundra_cobble', node_dungeon = 'everness:forsaken_tundra_cobble',
node_dungeon_alt = 'everness:forsaken_tundra_brick', node_dungeon_alt = 'everness:forsaken_tundra_brick',
node_dungeon_stair = 'stairs:stair_forsaken_tundra_cobble', node_dungeon_stair = 'stairs:stair_forsaken_tundra_cobble',

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -27,7 +25,7 @@ local y_min = Everness.settings.biomes.everness_forsaken_tundra_under.y_min
minetest.register_biome({ minetest.register_biome({
name = 'everness_forsaken_tundra_under', name = 'everness_forsaken_tundra_under',
node_cave_liquid = { 'default:water_source', 'default:lava_source' }, node_cave_liquid = { 'mapgen_water_source', 'mapgen_lava_source' },
node_dungeon = 'everness:forsaken_tundra_cobble', node_dungeon = 'everness:forsaken_tundra_cobble',
node_dungeon_alt = 'everness:forsaken_tundra_brick', node_dungeon_alt = 'everness:forsaken_tundra_brick',
node_dungeon_stair = 'stairs:stair_forsaken_tundra_cobble', node_dungeon_stair = 'stairs:stair_forsaken_tundra_cobble',

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -33,7 +31,7 @@ minetest.register_biome({
depth_filler = 3, depth_filler = 3,
node_water_top = 'everness:frosted_ice', node_water_top = 'everness:frosted_ice',
depth_water_top = 2, depth_water_top = 2,
node_cave_liquid = 'default:water_source', node_cave_liquid = 'mapgen_water_source',
node_dungeon = 'everness:icecobble', node_dungeon = 'everness:icecobble',
node_dungeon_alt = 'everness:snowcobble', node_dungeon_alt = 'everness:snowcobble',
node_dungeon_stair = 'stairs:stair_ice', node_dungeon_stair = 'stairs:stair_ice',

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -27,7 +25,7 @@ local y_min = Everness.settings.biomes.everness_frosted_icesheet_under.y_min
minetest.register_biome({ minetest.register_biome({
name = 'everness_frosted_icesheet_under', name = 'everness_frosted_icesheet_under',
node_cave_liquid = { 'default:water_source', 'default:lava_source' }, node_cave_liquid = { 'mapgen_water_source', 'mapgen_lava_source' },
node_dungeon = 'everness:icecobble', node_dungeon = 'everness:icecobble',
node_dungeon_alt = 'everness:snowcobble', node_dungeon_alt = 'everness:snowcobble',
node_dungeon_stair = 'stairs:stair_ice', node_dungeon_stair = 'stairs:stair_ice',

465
mapgen_mineral_waters.lua Normal file
View File

@ -0,0 +1,465 @@
--[[
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.
--]]
--
-- Register biomes
--
local y_max = Everness.settings.biomes.everness_mineral_waters.y_max
local y_min = Everness.settings.biomes.everness_mineral_waters.y_min
-- Mineral Waters
minetest.register_biome({
name = 'everness_mineral_waters',
node_top = 'everness:mineral_sand',
depth_top = 1,
node_filler = 'everness:mineral_stone',
depth_filler = 1,
node_stone = 'everness:mineral_stone',
node_riverbed = 'everness:mineral_sand',
depth_riverbed = 2,
node_dungeon = 'everness:mineral_stone_brick',
node_dungeon_alt = 'everness:mineral_stone_brick_with_growth',
node_dungeon_stair = 'stairs:stair_bamboo_wood',
y_max = y_max,
y_min = y_min,
vertical_blend = 4,
heat_point = 78,
humidity_point = 58,
})
--
-- Register decorations
--
minetest.register_decoration({
name = 'everness:palm_tree_1',
deco_type = 'schematic',
place_on = { 'everness:mineral_sand' },
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.02,
spread = { x = 200, y = 200, z = 200 },
seed = 329,
octaves = 3,
persist = 0.6
},
biomes = { 'everness_mineral_waters' },
y_max = y_max,
y_min = y_min,
schematic = minetest.get_modpath('everness') .. '/schematics/everness_palm_tree.mts',
flags = 'place_center_x, place_center_z',
spawn_by = {
'everness:mineral_water_source',
'everness:mineral_stone_brick',
'everness:mineral_stone_brick_with_growth',
'everness:mineral_stone_brick_with_flower_growth',
'everness:mineral_sandstone',
'everness:mineral_sandstone_block'
},
num_spawn_by = 1,
check_offset = -1,
})
minetest.register_decoration({
name = 'everness:palm_tree_2',
deco_type = 'schematic',
place_on = { 'everness:mineral_sand' },
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.02,
spread = { x = 200, y = 200, z = 200 },
seed = 329,
octaves = 3,
persist = 0.6
},
biomes = { 'everness_mineral_waters' },
y_max = y_max,
y_min = y_min,
schematic = minetest.get_modpath('everness') .. '/schematics/everness_palm_tree.mts',
flags = 'place_center_x, place_center_z',
spawn_by = {
'everness:mineral_water_source',
'everness:mineral_stone_brick',
'everness:mineral_stone_brick_with_growth',
'everness:mineral_stone_brick_with_flower_growth',
'everness:mineral_sandstone',
'everness:mineral_sandstone_block'
},
num_spawn_by = 1,
check_offset = 1,
})
minetest.register_decoration({
name = 'everness:water_geyser',
deco_type = 'simple',
place_on = { 'everness:mineral_sand' },
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.02,
spread = { x = 200, y = 200, z = 200 },
seed = 329,
octaves = 3,
persist = 0.6
},
biomes = { 'everness_mineral_waters' },
y_max = y_max,
y_min = y_min,
decoration = { 'everness:water_geyser' },
spawn_by = {
'everness:mineral_water_source',
'everness:mineral_stone_brick',
'everness:mineral_stone_brick_with_growth',
'everness:mineral_stone_brick_with_flower_growth',
'everness:mineral_sandstone',
'everness:mineral_sandstone_block'
},
num_spawn_by = 1,
check_offset = -1,
})
--
-- ABM
--
minetest.register_abm({
label = 'everness:water_geyser',
nodenames = { 'everness:water_geyser' },
interval = 16,
chance = 16,
catch_up = false,
action = function(pos, node)
minetest.swap_node(pos, { name = 'everness:water_geyser_active' })
minetest.get_node_timer(pos):start(1)
end
})
--
-- On Generated
--
-- 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')
local c_everness_mineral_stone_brick = minetest.get_content_id('everness:mineral_stone_brick')
local c_everness_mineral_stone_brick_with_growth = minetest.get_content_id('everness:mineral_stone_brick_with_growth')
local c_everness_mineral_stone_brick_with_flower_growth = minetest.get_content_id('everness:mineral_stone_brick_with_flower_growth')
local c_everness_mineral_sand = minetest.get_content_id('everness:mineral_sand')
local c_everness_mineral_sandstone = minetest.get_content_id('everness:mineral_sandstone')
local c_everness_mineral_sandstone_block = minetest.get_content_id('everness:mineral_sandstone_block')
local c_everness_mineral_waters_marker = minetest.get_content_id('everness:mineral_waters_marker')
local pool_build_nodes = {
{
c_everness_mineral_stone,
c_everness_mineral_stone_brick,
c_everness_mineral_stone_brick_with_growth,
c_everness_mineral_stone_brick_with_flower_growth
},
{
c_everness_mineral_sandstone,
c_everness_mineral_sandstone_block
}
}
-- Localize data buffer table outside the loop, to be re-used for all
-- mapchunks, therefore minimising memory use
local data = {}
local water_level = tonumber(minetest.settings:get('water_level'))
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
-- Called after generating a piece of world. Modifying nodes inside the area is a bit faster than usual.
minetest.register_on_generated(function(minp, maxp, blockseed)
-- Start time of mapchunk generation.
-- local t0 = os.clock()
local rand = PcgRandom(blockseed)
-- Load the voxelmanip with the result of engine mapgen
local vm, emin, emax = minetest.get_mapgen_object('voxelmanip')
-- 'area' is used later to get the voxelmanip indexes for positions
local area = VoxelArea:new({ MinEdge = emin, MaxEdge = emax })
-- Get the content ID data from the voxelmanip in the form of a flat array.
-- Set the buffer parameter to use and reuse 'data' for this.
vm:get_data(data)
if maxp.y >= water_level then
-- Above sea level
local rand_version = rand:next(1, 2)
if rand_version == 1 then
for y = minp.y, maxp.y do
local precision_perc = 75
for z = minp.z, maxp.z do
for x = minp.x, maxp.x do
local ai = area:index(x, y, z)
local node_name = minetest.get_name_from_content_id(data[ai])
local node_def = minetest.registered_nodes[node_name]
local position = area:position(ai)
local biome_data = minetest.get_biome_data(position)
if not biome_data then
return
end
local biome_name = minetest.get_biome_name(biome_data.biome)
if not biome_name then
return
end
if
data[ai + area.ystride] == minetest.CONTENT_AIR
and node_def
and node_def.walkable
and biome_name == 'everness_mineral_waters'
then
local length = 5 + rand:next(0, 10)
local width = 5 + rand:next(0, 10)
local height = 3 + rand:next(0, 4)
local walkable_nodes = {}
-- find space for lake (walkable rectangle)
-- for hi = 1, height do
for li = 1, length do
for wi = 1, width do
local p = vector.new(position.x + li, position.y, position.z + wi)
-- local p_above = vector.new(position.x + li, position.y + 1, position.z + wi)
local n_name = minetest.get_name_from_content_id(data[area:indexp(p)])
-- local n_name_above = minetest.get_name_from_content_id(data[area:indexp(p_above)])
local n_def = minetest.registered_nodes[n_name]
local b_data = minetest.get_biome_data(p)
if not b_data then
return
end
local b_name = minetest.get_biome_name(b_data.biome)
if not b_name then
return
end
if b_name ~= 'everness_mineral_waters'
or minetest.get_item_group(n_name, 'tree') > 0
or minetest.get_item_group(n_name, 'leaves') > 0
then
-- bordering with anohter biome, be more precise in placing
precision_perc = 100
end
if n_def
and n_def.walkable
and b_name == 'everness_mineral_waters'
-- and n_name_above == 'air'
and minetest.get_item_group(n_name, 'tree') == 0
and minetest.get_item_group(n_name, 'leaves') == 0
then
table.insert(walkable_nodes, p)
end
end
end
-- end
-- build pool (cuboid)
local pool_build_nodes_group = pool_build_nodes[rand:next(1, #pool_build_nodes)]
if #walkable_nodes >= (width * length / 100) * precision_perc then
-- offset y so the pools are sticking out / sinking in from the ground
local pos_offset = vector.new(position)
pos_offset.y = (position.y - height) + rand:next(0, math.ceil(height / 2))
for hi = 1, height do
for li = 1, length do
for wi = 1, width do
local mineral_stone = pool_build_nodes_group[rand:next(1, #pool_build_nodes_group)]
local p_offset = vector.new(position.x + li, pos_offset.y + hi, position.z + wi)
local current_c_id = data[area:indexp(p_offset)]
-- 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 find_irecursive(pool_build_nodes, current_c_id)
then
-- build pool floor
data[area:indexp(p_offset)] = mineral_stone
elseif hi ~= 1
and (wi == 1 or wi == width)
and current_c_id ~= c_everness_mineral_water_source
and not find_irecursive(pool_build_nodes, current_c_id)
then
-- build pool wall
data[area:indexp(p_offset)] = mineral_stone
elseif hi ~= 1
and (li == 1 or li == length)
and (wi ~= 1 or wi ~= width)
and current_c_id ~= c_everness_mineral_water_source
and not find_irecursive(pool_build_nodes, current_c_id)
then
-- build pool wall
data[area:indexp(p_offset)] = mineral_stone
else
-- fill in the pool with water
data[area:indexp(p_offset)] = c_everness_mineral_water_source
end
-- place loot chest marker in the middle of the pool floor
if hi == 2
and height > 4
and math.ceil(length / 2) == li
and math.ceil(width / 2) == wi
and data[area:indexp(p_offset) - area.ystride] ~= c_everness_mineral_water_source
and rand:next(0, 100) < 3
then
data[area:indexp(p_offset)] = c_everness_mineral_waters_marker
end
end
end
end
end
end
end
end
end
elseif rand_version == 2 then
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
-- above
-- local c_above = data[ai + area.ystride]
-- below
-- local c_below = data[ai - area.ystride]
-- right
local c_right = data[ai + 1]
-- left
local c_left = data[ai - 1]
-- front
local c_front = data[ai + (area.zstride * 2)]
-- back
local c_back = data[ai - (area.zstride * 2)]
local keep_going = true
local while_count = 1
local max_dig_depth = 11
if
c_current == c_everness_mineral_sand
and (
c_right == c_everness_mineral_sand
or c_right == c_everness_mineral_water_source
or c_right == c_everness_mineral_stone
)
and (
c_left == c_everness_mineral_sand
or c_left == c_everness_mineral_water_source
or c_left == c_everness_mineral_stone
)
and (
c_front == c_everness_mineral_sand
or c_front == c_everness_mineral_water_source
or c_front == c_everness_mineral_stone
)
and (
c_back == c_everness_mineral_sand
or c_back == c_everness_mineral_water_source
or c_back == c_everness_mineral_stone
)
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_stone
and (
-- right
data[while_index + 1 + area.ystride] == c_everness_mineral_sand
or data[while_index + 1 + area.ystride] == c_everness_mineral_water_source
or data[while_index + 1 + area.ystride] == c_everness_mineral_stone
)
and (
-- left
data[while_index - 1 + area.ystride] == c_everness_mineral_sand
or data[while_index - 1 + area.ystride] == c_everness_mineral_water_source
or data[while_index - 1 + area.ystride] == c_everness_mineral_stone
)
and (
-- front
data[while_index + area.zstride + area.ystride] == c_everness_mineral_sand
or data[while_index + area.zstride + area.ystride] == c_everness_mineral_water_source
or data[while_index + area.zstride + area.ystride] == c_everness_mineral_stone
)
and (
-- back
data[while_index - area.zstride + area.ystride] == c_everness_mineral_sand
or data[while_index - area.zstride + area.ystride] == c_everness_mineral_water_source
or data[while_index - area.zstride + area.ystride] == c_everness_mineral_stone
)
then
data[while_index + area.ystride] = c_everness_mineral_water_source
else
keep_going = false
end
while_count = while_count + 1
end
end
end
end
end
end
vm:set_data(data)
-- Generate all registered decorations within the VoxelManip `vm` and in the area from `pos1` to `pos2`
minetest.generate_decorations(vm)
-- Calculate lighting for what has been created.
vm:calc_lighting()
-- Liquid nodes were placed so set them flowing.
vm:update_liquids()
-- Write what has been created to the world.
vm:write_to_map()
end
-- Print generation time of this mapchunk.
-- local chugent = math.ceil((os.clock() - t0) * 1000)
-- print('[lvm_example] Mapchunk generation time ' .. chugent .. ' ms')
end)

View File

@ -0,0 +1,72 @@
--[[
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.
--]]
--
-- Register biomes
--
local y_max = Everness.settings.biomes.everness_mineral_waters_under.y_max
local y_min = Everness.settings.biomes.everness_mineral_waters_under.y_min
-- Mineral Waters
minetest.register_biome({
name = 'everness_mineral_waters_under',
node_cave_liquid = { 'mapgen_water_source', 'mapgen_lava_source' },
node_dungeon = 'everness:mineral_stone_brick',
node_dungeon_alt = 'everness:mineral_stone_brick_with_growth',
node_dungeon_stair = 'stairs:stair_bamboo_wood',
y_max = y_max,
y_min = y_min,
heat_point = 78,
humidity_point = 58,
})
--
-- Ores
--
-- Blob ore.
-- These before scatter ores to avoid other ores in blobs.
minetest.register_ore({
ore_type = 'blob',
ore = 'everness:mineral_stone',
wherein = {'default:stone'},
clust_scarcity = 16 * 16 * 16,
clust_size = 5,
y_max = y_max,
y_min = y_min,
noise_threshold = 0.0,
noise_params = {
offset = 0.5,
scale = 0.2,
spread = { x = 5, y = 5, z = 5 },
seed = 766,
octaves = 1,
persist = 0.0
}
})
--
-- Register decorations
--
--
-- On Generated
--

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
local S = minetest.get_translator(minetest.get_current_modname()) local S = minetest.get_translator(minetest.get_current_modname())

View File

@ -12,11 +12,9 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
minetest.register_alias('default:water_source', 'mcl_core:water_source') minetest.register_alias('mapgen_water_source', 'mcl_core:water_source')
minetest.register_alias('default:dirt_with_rainforest_litter', 'mcl_core:dirt_with_grass') minetest.register_alias('default:dirt_with_rainforest_litter', 'mcl_core:dirt_with_grass')
minetest.register_alias('default:dirt_with_snow', 'mcl_core:dirt_with_grass_snow') minetest.register_alias('default:dirt_with_snow', 'mcl_core:dirt_with_grass_snow')
minetest.register_alias('default:dirt_with_coniferous_litter', 'mcl_core:podzol') minetest.register_alias('default:dirt_with_coniferous_litter', 'mcl_core:podzol')
@ -105,7 +103,7 @@ minetest.register_alias('default:stone_with_tin', 'mcl_core:stone_with_copper')
minetest.register_alias('default:stone_with_gold', 'mcl_core:stone_with_gold') minetest.register_alias('default:stone_with_gold', 'mcl_core:stone_with_gold')
minetest.register_alias('default:stone_with_mese', 'mcl_core:stone_with_redstone') minetest.register_alias('default:stone_with_mese', 'mcl_core:stone_with_redstone')
minetest.register_alias('default:stone_with_diamond', 'mcl_core:stone_with_diamond') minetest.register_alias('default:stone_with_diamond', 'mcl_core:stone_with_diamond')
minetest.register_alias('default:lava_source', 'mcl_core:lava_source') minetest.register_alias('mapgen_lava_source', 'mcl_core:lava_source')
minetest.register_alias('default:mossycobble', 'mcl_core:mossycobble') minetest.register_alias('default:mossycobble', 'mcl_core:mossycobble')
minetest.register_alias('default:clay', 'mcl_colorblocks:hardened_clay') minetest.register_alias('default:clay', 'mcl_colorblocks:hardened_clay')
minetest.register_alias('default:dry_dirt_with_dry_grass', 'mcl_core:dirt_with_grass') minetest.register_alias('default:dry_dirt_with_dry_grass', 'mcl_core:dirt_with_grass')

View File

@ -12,11 +12,9 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
minetest.register_alias('default:water_source', 'rp_default:water_source') minetest.register_alias('mapgen_water_source', 'rp_mapgen_water_source')
minetest.register_alias('default:dirt_with_rainforest_litter', 'rp_default:dirt_with_grass') minetest.register_alias('default:dirt_with_rainforest_litter', 'rp_default:dirt_with_grass')
minetest.register_alias('default:dirt_with_snow', 'rp_default:dirt_with_grass') minetest.register_alias('default:dirt_with_snow', 'rp_default:dirt_with_grass')
minetest.register_alias('default:dirt_with_coniferous_litter', 'rp_default:dirt_with_grass') minetest.register_alias('default:dirt_with_coniferous_litter', 'rp_default:dirt_with_grass')
@ -105,7 +103,7 @@ minetest.register_alias('default:stone_with_tin', 'rp_default:stone_with_tin')
minetest.register_alias('default:stone_with_gold', 'rp_default:stone_with_gold') minetest.register_alias('default:stone_with_gold', 'rp_default:stone_with_gold')
minetest.register_alias('default:stone_with_mese', 'rp_default:stone_with_mese') minetest.register_alias('default:stone_with_mese', 'rp_default:stone_with_mese')
minetest.register_alias('default:stone_with_diamond', 'rp_default:stone_with_diamond') minetest.register_alias('default:stone_with_diamond', 'rp_default:stone_with_diamond')
minetest.register_alias('default:lava_source', 'rp_default:water_source') minetest.register_alias('mapgen_lava_source', 'rp_mapgen_water_source')
minetest.register_alias('default:mossycobble', 'rp_default:mossycobble') minetest.register_alias('default:mossycobble', 'rp_default:mossycobble')
minetest.register_alias('default:clay', 'rp_default:clay') minetest.register_alias('default:clay', 'rp_default:clay')
minetest.register_alias('default:dry_dirt_with_dry_grass', 'rp_default:dry_dirt_with_dry_grass') minetest.register_alias('default:dry_dirt_with_dry_grass', 'rp_default:dry_dirt_with_dry_grass')

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
-- --
@ -210,6 +208,22 @@ x_farming.x_bonemeal:register_tree_defs({
Everness.grow_mese_tree(pos) Everness.grow_mese_tree(pos)
return true
end
},
{
-- sapling name
name = 'everness:palm_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_sand(pos) then
return false
end
Everness.grow_palm_tree(pos)
return true return true
end end
}, },

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
local mod_start_time = minetest.get_us_time() local mod_start_time = minetest.get_us_time()

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
local mod_start_time = minetest.get_us_time() local mod_start_time = minetest.get_us_time()

View File

@ -0,0 +1,243 @@
# Blender v2.83.20 OBJ File: 'everness_mineral_torch.blend'
# www.blender.org
mtllib everness_mineral_torch.mtl
o everness_mineral_torch.vox
v -0.062500 -0.490000 0.062500
v -0.062500 0.135000 0.062500
v -0.125000 0.135000 -0.125000
v -0.125000 0.385000 0.125000
v -0.000000 0.510000 0.062500
v -0.000000 0.447500 0.062500
v 0.000000 0.447500 0.250000
v 0.125000 0.385000 -0.125000
v -0.000000 -0.052500 0.062500
v 0.062500 -0.490000 0.062500
v 0.000000 0.447500 0.187500
v -0.000000 0.010000 0.062500
v 0.000000 0.135000 0.187500
v 0.125000 0.385000 0.125000
v 0.000000 0.385000 -0.187500
v -0.000000 0.072500 0.125000
v 0.000000 0.447500 -0.062500
v 0.000000 0.385000 0.250000
v -0.000000 0.010000 0.125000
v 0.000000 -0.052500 -0.125000
v 0.000000 0.010000 -0.125000
v -0.000000 -0.052500 0.125000
v 0.000000 0.010000 -0.187500
v 0.000000 0.072500 -0.187500
v 0.000000 0.072500 -0.250000
v 0.000000 0.135000 -0.250000
v 0.000000 0.510000 0.187500
v 0.062500 0.135000 -0.125000
v 0.000000 0.135000 -0.312500
v -0.125000 0.385000 -0.125000
v 0.000000 0.385000 -0.312500
v 0.000000 0.385000 0.312500
v 0.000000 0.510000 -0.187500
v 0.000000 0.135000 0.312500
v -0.062500 -0.490000 -0.062500
v 0.000000 0.385000 0.187500
v 0.062500 -0.490000 -0.062500
v 0.000000 0.135000 0.250000
v 0.000000 0.072500 0.250000
v 0.000000 0.072500 0.187500
v -0.125000 0.135000 0.125000
v 0.062500 0.135000 0.062500
v 0.125000 0.135000 0.125000
v -0.125000 0.135000 -0.062500
v -0.062500 0.135000 -0.062500
v 0.062500 0.135000 -0.062500
v 0.125000 0.135000 -0.125000
v 0.000000 0.385000 -0.250000
v 0.000000 0.072500 -0.125000
v 0.000000 0.135000 -0.187500
v 0.000000 0.010000 0.187500
v 0.000000 0.010000 -0.062500
v 0.000000 0.447500 -0.187500
v 0.000000 -0.052500 -0.062500
v 0.000000 0.447500 -0.250000
v 0.000000 0.510000 -0.062500
v 0.196875 0.072500 0.187500
v -0.178125 0.072500 0.187500
v -0.178125 0.447500 -0.187500
v 0.196875 0.447500 0.187500
v 0.196875 0.447500 -0.187500
v -0.178125 0.447500 0.187500
v -0.178125 0.072500 -0.187500
v 0.196875 0.072500 -0.187500
vt 0.250000 0.500000
vt 0.187500 0.437500
vt 0.250000 0.437500
vt 0.187500 0.562500
vt 0.125000 0.500000
vt 0.187500 0.500000
vt 0.250000 0.625000
vt 0.437500 0.875000
vt 0.187500 0.875000
vt 0.125000 0.625000
vt 0.062500 0.562500
vt 0.125000 0.562500
vt 0.125000 0.937500
vt 0.062500 0.875000
vt 0.125000 0.875000
vt 0.375000 0.000000
vt 0.250000 0.625000
vt 0.250000 0.000000
vt 0.375000 0.000000
vt 0.250000 0.625000
vt 0.250000 0.000000
vt 0.125000 1.000000
vt 0.250000 0.937500
vt 0.250000 1.000000
vt 0.187500 0.875000
vt 0.437500 0.625000
vt 0.437500 0.875000
vt 0.187500 0.625000
vt 0.187500 0.875000
vt 0.375000 0.625000
vt 0.500000 0.625000
vt 0.562500 0.562500
vt 0.500000 0.562500
vt 0.250000 0.625000
vt 0.437500 0.875000
vt 0.000000 0.625000
vt 0.062500 0.625000
vt 0.187500 0.875000
vt 0.437500 0.625000
vt 0.437500 0.875000
vt 0.562500 0.875000
vt 0.625000 0.625000
vt 0.562500 0.625000
vt 0.500000 0.937500
vt 0.500000 0.875000
vt 0.437500 0.562500
vt 0.500000 0.500000
vt 0.437500 0.500000
vt 0.250000 -0.000000
vt 0.125000 0.125000
vt 0.125000 -0.000000
vt 0.187500 0.625000
vt 0.437500 0.625000
vt 0.250000 0.687500
vt 0.375000 0.812500
vt 0.437500 0.812500
vt 0.437500 0.875000
vt 0.375000 0.500000
vt 0.437500 0.437500
vt 0.375000 0.437500
vt 0.500000 1.000000
vt 0.375000 0.937500
vt 0.375000 1.000000
vt 0.187500 0.625000
vt 0.062500 0.937500
vt 0.375000 0.625000
vt 0.187500 0.625000
vt 0.437500 0.625000
vt 0.187500 0.625000
vt 0.437500 0.625000
vt 0.000000 0.875000
vt 0.625000 0.875000
vt 0.562500 0.937500
vt 0.250000 0.125000
vt 0.250000 0.812500
vt 0.250000 0.875000
vt 0.187500 0.875000
vt 0.375000 0.687500
vt 0.333333 1.000000
vt 0.500000 -0.000000
vt 0.500000 1.000000
vt 0.666667 -0.000000
vt 0.166667 -0.000000
vt 0.166667 1.000000
vt 0.833333 -0.000000
vt 0.666667 1.000000
vt 0.666667 -0.000000
vt 0.000000 1.000000
vt 0.000000 -0.000000
vt 1.000000 -0.000000
vt 0.833333 1.000000
vt 0.833333 -0.000000
vt 0.333333 -0.000000
vt 0.666667 1.000000
vt 0.833333 1.000000
vt 1.000000 1.000000
vn -1.0000 0.0000 0.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 1.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 -1.0000 0.0000
g everness_mineral_torch.vox_everness_mineral_torch.vox_torch
usemtl torch
s off
f 52/1/1 20/2/1 54/3/1
f 49/4/1 23/5/1 21/6/1
f 44/7/1 4/8/1 30/9/1
f 50/10/1 25/11/1 24/12/1
f 53/13/1 48/14/1 15/15/1
f 1/16/1 45/17/1 35/18/1
f 37/19/2 42/20/2 10/21/2
f 33/22/1 17/23/1 56/24/1
f 8/25/3 4/26/3 14/27/3
f 42/20/4 1/16/4 10/21/4
f 41/28/4 14/27/4 4/29/4
f 46/30/5 35/18/5 45/17/5
f 13/31/2 39/32/2 40/33/2
f 28/34/5 30/35/5 8/25/5
f 48/14/1 29/36/1 26/37/1
f 14/38/2 47/39/2 8/40/2
f 18/41/2 34/42/2 38/43/2
f 11/44/2 18/41/2 36/45/2
f 16/46/2 51/47/2 19/48/2
f 1/49/6 37/50/6 10/51/6
f 43/52/6 41/53/6 42/54/6
f 45/55/6 44/56/6 3/57/6
f 12/58/2 22/59/2 9/60/2
f 27/61/2 6/62/2 5/63/2
f 52/1/1 21/6/1 20/2/1
f 49/4/1 24/12/1 23/5/1
f 30/9/1 3/64/1 44/7/1
f 44/7/1 41/53/1 4/8/1
f 50/10/1 26/37/1 25/11/1
f 53/13/1 55/65/1 48/14/1
f 1/16/1 2/66/1 45/17/1
f 37/19/2 46/30/2 42/20/2
f 33/22/1 53/13/1 17/23/1
f 8/25/3 30/67/3 4/26/3
f 42/20/4 2/66/4 1/16/4
f 41/28/4 43/68/4 14/27/4
f 46/30/5 37/19/5 35/18/5
f 13/31/2 38/43/2 39/32/2
f 8/25/5 47/69/5 28/34/5
f 28/34/5 3/70/5 30/35/5
f 48/14/1 31/71/1 29/36/1
f 14/38/2 43/52/2 47/39/2
f 18/41/2 32/72/2 34/42/2
f 11/44/2 7/73/2 18/41/2
f 16/46/2 40/33/2 51/47/2
f 1/49/6 35/74/6 37/50/6
f 42/54/6 46/75/6 43/52/6
f 46/75/6 28/76/6 47/77/6
f 43/52/6 46/75/6 47/77/6
f 41/53/6 44/56/6 2/78/6
f 44/56/6 45/55/6 2/78/6
f 41/53/6 2/78/6 42/54/6
f 3/57/6 28/76/6 45/55/6
f 28/76/6 46/75/6 45/55/6
f 12/58/2 19/48/2 22/59/2
f 27/61/2 11/44/2 6/62/2
g everness_mineral_torch.vox_everness_mineral_torch.vox_particle_cube
usemtl particle_cube
f 60/79/2 64/80/2 61/81/2
f 63/82/5 61/81/5 64/80/5
f 58/83/4 60/79/4 62/84/4
f 61/85/3 62/86/3 60/87/3
f 58/83/1 59/88/1 63/89/1
f 58/90/6 64/91/6 57/92/6
f 60/79/2 57/93/2 64/80/2
f 63/82/5 59/94/5 61/81/5
f 58/83/4 57/93/4 60/79/4
f 61/85/3 59/95/3 62/86/3
f 58/83/1 62/84/1 59/88/1
f 58/90/6 63/96/6 64/91/6

View File

@ -0,0 +1,243 @@
# Blender v2.83.20 OBJ File: 'everness_mineral_torch_wall.blend'
# www.blender.org
mtllib everness_mineral_torch_ceiling.mtl
o everness_mineral_torch.vox
v 0.062500 -0.561250 -0.170873
v 0.062500 -0.019984 0.141627
v -0.125000 -0.051234 0.195753
v 0.125000 0.165272 0.320753
v 0.062500 0.336025 0.275000
v 0.062500 0.281899 0.243750
v 0.250000 0.281899 0.243750
v -0.125000 0.290272 0.104247
v 0.062500 -0.151114 -0.006250
v 0.062500 -0.498750 -0.279127
v 0.187500 0.281899 0.243750
v 0.062500 -0.096987 0.025000
v 0.187500 0.011266 0.087500
v 0.125000 0.290272 0.104247
v -0.187500 0.227772 0.212500
v 0.125000 -0.042861 0.056250
v -0.062500 0.281899 0.243750
v 0.250000 0.227772 0.212500
v 0.125000 -0.096987 0.025000
v -0.125000 -0.151114 -0.006250
v -0.125000 -0.096987 0.025000
v 0.125000 -0.151114 -0.006250
v -0.187500 -0.096987 0.025000
v -0.187500 -0.042861 0.056250
v -0.250000 -0.042861 0.056250
v -0.250000 0.011266 0.087500
v 0.187500 0.336025 0.275000
v -0.125000 0.042516 0.033373
v -0.312500 0.011266 0.087500
v -0.125000 0.165272 0.320753
v -0.312500 0.227772 0.212500
v 0.312500 0.227772 0.212500
v -0.187500 0.336025 0.275000
v 0.312500 0.011266 0.087500
v -0.062500 -0.561250 -0.170873
v 0.187500 0.227772 0.212500
v -0.062500 -0.498750 -0.279127
v 0.250000 0.011266 0.087500
v 0.250000 -0.042861 0.056250
v 0.187500 -0.042861 0.056250
v 0.125000 -0.051234 0.195753
v 0.062500 0.042516 0.033373
v 0.125000 0.073766 -0.020753
v -0.062500 -0.051234 0.195753
v -0.062500 -0.019984 0.141627
v -0.062500 0.042516 0.033373
v -0.125000 0.073766 -0.020753
v -0.250000 0.227772 0.212500
v -0.125000 -0.042861 0.056250
v -0.187500 0.011266 0.087500
v 0.187500 -0.096987 0.025000
v -0.062500 -0.096987 0.025000
v -0.187500 0.281899 0.243750
v -0.062500 -0.151114 -0.006250
v -0.250000 0.281899 0.243750
v -0.062500 0.336025 0.275000
v 0.187500 0.055577 -0.114249
v 0.187500 -0.131923 0.210511
v -0.187500 0.192836 0.398011
v 0.187500 0.380336 0.073251
v -0.187500 0.380336 0.073251
v 0.187500 0.192836 0.398011
v -0.187500 -0.131923 0.210511
v -0.187500 0.055577 -0.114249
vt 0.250000 0.500000
vt 0.187500 0.437500
vt 0.250000 0.437500
vt 0.187500 0.562500
vt 0.125000 0.500000
vt 0.187500 0.500000
vt 0.250000 0.625000
vt 0.437500 0.875000
vt 0.187500 0.875000
vt 0.125000 0.625000
vt 0.062500 0.562500
vt 0.125000 0.562500
vt 0.125000 0.937500
vt 0.062500 0.875000
vt 0.125000 0.875000
vt 0.375000 0.000000
vt 0.250000 0.625000
vt 0.250000 0.000000
vt 0.375000 0.000000
vt 0.250000 0.625000
vt 0.250000 0.000000
vt 0.125000 1.000000
vt 0.250000 0.937500
vt 0.250000 1.000000
vt 0.187500 0.875000
vt 0.437500 0.625000
vt 0.437500 0.875000
vt 0.187500 0.625000
vt 0.187500 0.875000
vt 0.375000 0.625000
vt 0.500000 0.625000
vt 0.562500 0.562500
vt 0.500000 0.562500
vt 0.250000 0.625000
vt 0.437500 0.875000
vt 0.000000 0.625000
vt 0.062500 0.625000
vt 0.187500 0.875000
vt 0.437500 0.625000
vt 0.437500 0.875000
vt 0.562500 0.875000
vt 0.625000 0.625000
vt 0.562500 0.625000
vt 0.500000 0.937500
vt 0.500000 0.875000
vt 0.437500 0.562500
vt 0.500000 0.500000
vt 0.437500 0.500000
vt 0.250000 -0.000000
vt 0.125000 0.125000
vt 0.125000 -0.000000
vt 0.187500 0.625000
vt 0.437500 0.625000
vt 0.250000 0.687500
vt 0.375000 0.812500
vt 0.437500 0.812500
vt 0.437500 0.875000
vt 0.375000 0.500000
vt 0.437500 0.437500
vt 0.375000 0.437500
vt 0.500000 1.000000
vt 0.375000 0.937500
vt 0.375000 1.000000
vt 0.187500 0.625000
vt 0.062500 0.937500
vt 0.375000 0.625000
vt 0.187500 0.625000
vt 0.437500 0.625000
vt 0.187500 0.625000
vt 0.437500 0.625000
vt 0.000000 0.875000
vt 0.625000 0.875000
vt 0.562500 0.937500
vt 0.250000 0.125000
vt 0.250000 0.812500
vt 0.250000 0.875000
vt 0.187500 0.875000
vt 0.375000 0.687500
vt 0.333333 1.000000
vt 0.500000 -0.000000
vt 0.500000 1.000000
vt 0.666667 -0.000000
vt 0.166667 -0.000000
vt 0.166667 1.000000
vt 0.833333 -0.000000
vt 0.666667 1.000000
vt 0.666667 -0.000000
vt 0.000000 1.000000
vt 0.000000 -0.000000
vt 1.000000 -0.000000
vt 0.833333 1.000000
vt 0.833333 -0.000000
vt 0.333333 -0.000000
vt 0.666667 1.000000
vt 0.833333 1.000000
vt 1.000000 1.000000
vn 0.0000 -0.5000 0.8660
vn 0.0000 0.5000 -0.8660
vn 0.0000 0.8660 0.5000
vn 1.0000 0.0000 -0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 -0.8660 -0.5000
g everness_mineral_torch.vox_everness_mineral_torch.vox_torch
usemtl torch
s off
f 52/1/1 20/2/1 54/3/1
f 49/4/1 23/5/1 21/6/1
f 44/7/1 4/8/1 30/9/1
f 50/10/1 25/11/1 24/12/1
f 53/13/1 48/14/1 15/15/1
f 1/16/1 45/17/1 35/18/1
f 37/19/2 42/20/2 10/21/2
f 33/22/1 17/23/1 56/24/1
f 8/25/3 4/26/3 14/27/3
f 42/20/4 1/16/4 10/21/4
f 41/28/4 14/27/4 4/29/4
f 46/30/5 35/18/5 45/17/5
f 13/31/2 39/32/2 40/33/2
f 28/34/5 30/35/5 8/25/5
f 48/14/1 29/36/1 26/37/1
f 14/38/2 47/39/2 8/40/2
f 18/41/2 34/42/2 38/43/2
f 11/44/2 18/41/2 36/45/2
f 16/46/2 51/47/2 19/48/2
f 1/49/6 37/50/6 10/51/6
f 43/52/6 41/53/6 42/54/6
f 45/55/6 44/56/6 3/57/6
f 12/58/2 22/59/2 9/60/2
f 27/61/2 6/62/2 5/63/2
f 52/1/1 21/6/1 20/2/1
f 49/4/1 24/12/1 23/5/1
f 30/9/1 3/64/1 44/7/1
f 44/7/1 41/53/1 4/8/1
f 50/10/1 26/37/1 25/11/1
f 53/13/1 55/65/1 48/14/1
f 1/16/1 2/66/1 45/17/1
f 37/19/2 46/30/2 42/20/2
f 33/22/1 53/13/1 17/23/1
f 8/25/3 30/67/3 4/26/3
f 42/20/4 2/66/4 1/16/4
f 41/28/4 43/68/4 14/27/4
f 46/30/5 37/19/5 35/18/5
f 13/31/2 38/43/2 39/32/2
f 8/25/5 47/69/5 28/34/5
f 28/34/5 3/70/5 30/35/5
f 48/14/1 31/71/1 29/36/1
f 14/38/2 43/52/2 47/39/2
f 18/41/2 32/72/2 34/42/2
f 11/44/2 7/73/2 18/41/2
f 16/46/2 40/33/2 51/47/2
f 1/49/6 35/74/6 37/50/6
f 42/54/6 46/75/6 43/52/6
f 46/75/6 28/76/6 47/77/6
f 43/52/6 46/75/6 47/77/6
f 41/53/6 44/56/6 2/78/6
f 44/56/6 45/55/6 2/78/6
f 41/53/6 2/78/6 42/54/6
f 3/57/6 28/76/6 45/55/6
f 28/76/6 46/75/6 45/55/6
f 12/58/2 19/48/2 22/59/2
f 27/61/2 11/44/2 6/62/2
g everness_mineral_torch.vox_everness_mineral_torch.vox_particle_cube
usemtl particle_cube
f 60/79/2 64/80/2 61/81/2
f 63/82/5 61/81/5 64/80/5
f 58/83/4 60/79/4 62/84/4
f 61/85/3 62/86/3 60/87/3
f 58/83/1 59/88/1 63/89/1
f 58/90/6 64/91/6 57/92/6
f 60/79/2 57/93/2 64/80/2
f 63/82/5 59/94/5 61/81/5
f 58/83/4 57/93/4 60/79/4
f 61/85/3 59/95/3 62/86/3
f 58/83/1 62/84/1 59/88/1
f 58/90/6 63/96/6 64/91/6

View File

@ -0,0 +1,243 @@
# Blender v2.83.20 OBJ File: 'everness_mineral_torch.blend'
# www.blender.org
mtllib everness_mineral_torch_wall.mtl
o everness_mineral_torch.vox
v 0.062500 -0.594127 -0.408750
v 0.062500 -0.281627 0.132516
v -0.125000 -0.335753 0.163766
v 0.125000 -0.210753 0.380272
v 0.062500 -0.040000 0.426025
v 0.062500 -0.071250 0.371899
v 0.250000 -0.071250 0.371899
v -0.125000 0.005753 0.255272
v 0.062500 -0.321250 -0.061114
v 0.062500 -0.485873 -0.471250
v 0.187500 -0.071250 0.371899
v 0.062500 -0.290000 -0.006987
v 0.187500 -0.227500 0.101266
v 0.125000 0.005753 0.255272
v -0.187500 -0.102500 0.317772
v 0.125000 -0.258750 0.047139
v -0.062500 -0.071250 0.371899
v 0.250000 -0.102500 0.317772
v 0.125000 -0.290000 -0.006987
v -0.125000 -0.321250 -0.061114
v -0.125000 -0.290000 -0.006987
v 0.125000 -0.321250 -0.061114
v -0.187500 -0.290000 -0.006987
v -0.187500 -0.258750 0.047139
v -0.250000 -0.258750 0.047139
v -0.250000 -0.227500 0.101266
v 0.187500 -0.040000 0.426025
v -0.125000 -0.173373 0.070016
v -0.312500 -0.227500 0.101266
v -0.125000 -0.210753 0.380272
v -0.312500 -0.102500 0.317772
v 0.312500 -0.102500 0.317772
v -0.187500 -0.040000 0.426025
v 0.312500 -0.227500 0.101266
v -0.062500 -0.594127 -0.408750
v 0.187500 -0.102500 0.317772
v -0.062500 -0.485873 -0.471250
v 0.250000 -0.227500 0.101266
v 0.250000 -0.258750 0.047139
v 0.187500 -0.258750 0.047139
v 0.125000 -0.335753 0.163766
v 0.062500 -0.173373 0.070016
v 0.125000 -0.119247 0.038766
v -0.062500 -0.335753 0.163766
v -0.062500 -0.281627 0.132516
v -0.062500 -0.173373 0.070016
v -0.125000 -0.119247 0.038766
v -0.250000 -0.102500 0.317772
v -0.125000 -0.258750 0.047139
v -0.187500 -0.227500 0.101266
v 0.187500 -0.290000 -0.006987
v -0.062500 -0.290000 -0.006987
v -0.187500 -0.071250 0.371899
v -0.062500 -0.321250 -0.061114
v -0.250000 -0.071250 0.371899
v -0.062500 -0.040000 0.426025
v 0.187500 -0.088251 -0.051298
v 0.187500 -0.413011 0.136202
v -0.187500 -0.225511 0.460961
v 0.187500 0.099249 0.273461
v -0.187500 0.099249 0.273461
v 0.187500 -0.225511 0.460961
v -0.187500 -0.413011 0.136202
v -0.187500 -0.088251 -0.051298
vt 0.250000 0.500000
vt 0.187500 0.437500
vt 0.250000 0.437500
vt 0.187500 0.562500
vt 0.125000 0.500000
vt 0.187500 0.500000
vt 0.250000 0.625000
vt 0.437500 0.875000
vt 0.187500 0.875000
vt 0.125000 0.625000
vt 0.062500 0.562500
vt 0.125000 0.562500
vt 0.125000 0.937500
vt 0.062500 0.875000
vt 0.125000 0.875000
vt 0.375000 0.000000
vt 0.250000 0.625000
vt 0.250000 0.000000
vt 0.375000 0.000000
vt 0.250000 0.625000
vt 0.250000 0.000000
vt 0.125000 1.000000
vt 0.250000 0.937500
vt 0.250000 1.000000
vt 0.187500 0.875000
vt 0.437500 0.625000
vt 0.437500 0.875000
vt 0.187500 0.625000
vt 0.187500 0.875000
vt 0.375000 0.625000
vt 0.500000 0.625000
vt 0.562500 0.562500
vt 0.500000 0.562500
vt 0.250000 0.625000
vt 0.437500 0.875000
vt 0.000000 0.625000
vt 0.062500 0.625000
vt 0.187500 0.875000
vt 0.437500 0.625000
vt 0.437500 0.875000
vt 0.562500 0.875000
vt 0.625000 0.625000
vt 0.562500 0.625000
vt 0.500000 0.937500
vt 0.500000 0.875000
vt 0.437500 0.562500
vt 0.500000 0.500000
vt 0.437500 0.500000
vt 0.250000 -0.000000
vt 0.125000 0.125000
vt 0.125000 -0.000000
vt 0.187500 0.625000
vt 0.437500 0.625000
vt 0.250000 0.687500
vt 0.375000 0.812500
vt 0.437500 0.812500
vt 0.437500 0.875000
vt 0.375000 0.500000
vt 0.437500 0.437500
vt 0.375000 0.437500
vt 0.500000 1.000000
vt 0.375000 0.937500
vt 0.375000 1.000000
vt 0.187500 0.625000
vt 0.062500 0.937500
vt 0.375000 0.625000
vt 0.187500 0.625000
vt 0.437500 0.625000
vt 0.187500 0.625000
vt 0.437500 0.625000
vt 0.000000 0.875000
vt 0.625000 0.875000
vt 0.562500 0.937500
vt 0.250000 0.125000
vt 0.250000 0.812500
vt 0.250000 0.875000
vt 0.187500 0.875000
vt 0.375000 0.687500
vt 0.333333 1.000000
vt 0.500000 -0.000000
vt 0.500000 1.000000
vt 0.666667 -0.000000
vt 0.166667 -0.000000
vt 0.166667 1.000000
vt 0.833333 -0.000000
vt 0.666667 1.000000
vt 0.666667 -0.000000
vt 0.000000 1.000000
vt 0.000000 -0.000000
vt 1.000000 -0.000000
vt 0.833333 1.000000
vt 0.833333 -0.000000
vt 0.333333 -0.000000
vt 0.666667 1.000000
vt 0.833333 1.000000
vt 1.000000 1.000000
vn 0.0000 -0.8660 0.5000
vn 0.0000 0.8660 -0.5000
vn 0.0000 0.5000 0.8660
vn 1.0000 0.0000 -0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 -0.5000 -0.8660
g everness_mineral_torch.vox_everness_mineral_torch.vox_torch
usemtl torch
s off
f 52/1/1 20/2/1 54/3/1
f 49/4/1 23/5/1 21/6/1
f 44/7/1 4/8/1 30/9/1
f 50/10/1 25/11/1 24/12/1
f 53/13/1 48/14/1 15/15/1
f 1/16/1 45/17/1 35/18/1
f 37/19/2 42/20/2 10/21/2
f 33/22/1 17/23/1 56/24/1
f 8/25/3 4/26/3 14/27/3
f 42/20/4 1/16/4 10/21/4
f 41/28/4 14/27/4 4/29/4
f 46/30/5 35/18/5 45/17/5
f 13/31/2 39/32/2 40/33/2
f 28/34/5 30/35/5 8/25/5
f 48/14/1 29/36/1 26/37/1
f 14/38/2 47/39/2 8/40/2
f 18/41/2 34/42/2 38/43/2
f 11/44/2 18/41/2 36/45/2
f 16/46/2 51/47/2 19/48/2
f 1/49/6 37/50/6 10/51/6
f 43/52/6 41/53/6 42/54/6
f 45/55/6 44/56/6 3/57/6
f 12/58/2 22/59/2 9/60/2
f 27/61/2 6/62/2 5/63/2
f 52/1/1 21/6/1 20/2/1
f 49/4/1 24/12/1 23/5/1
f 30/9/1 3/64/1 44/7/1
f 44/7/1 41/53/1 4/8/1
f 50/10/1 26/37/1 25/11/1
f 53/13/1 55/65/1 48/14/1
f 1/16/1 2/66/1 45/17/1
f 37/19/2 46/30/2 42/20/2
f 33/22/1 53/13/1 17/23/1
f 8/25/3 30/67/3 4/26/3
f 42/20/4 2/66/4 1/16/4
f 41/28/4 43/68/4 14/27/4
f 46/30/5 37/19/5 35/18/5
f 13/31/2 38/43/2 39/32/2
f 8/25/5 47/69/5 28/34/5
f 28/34/5 3/70/5 30/35/5
f 48/14/1 31/71/1 29/36/1
f 14/38/2 43/52/2 47/39/2
f 18/41/2 32/72/2 34/42/2
f 11/44/2 7/73/2 18/41/2
f 16/46/2 40/33/2 51/47/2
f 1/49/6 35/74/6 37/50/6
f 42/54/6 46/75/6 43/52/6
f 46/75/6 28/76/6 47/77/6
f 43/52/6 46/75/6 47/77/6
f 41/53/6 44/56/6 2/78/6
f 44/56/6 45/55/6 2/78/6
f 41/53/6 2/78/6 42/54/6
f 3/57/6 28/76/6 45/55/6
f 28/76/6 46/75/6 45/55/6
f 12/58/2 19/48/2 22/59/2
f 27/61/2 11/44/2 6/62/2
g everness_mineral_torch.vox_everness_mineral_torch.vox_particle_cube
usemtl particle_cube
f 60/79/2 64/80/2 61/81/2
f 63/82/5 61/81/5 64/80/5
f 58/83/4 60/79/4 62/84/4
f 61/85/3 62/86/3 60/87/3
f 58/83/1 59/88/1 63/89/1
f 58/90/6 64/91/6 57/92/6
f 60/79/2 57/93/2 64/80/2
f 63/82/5 59/94/5 61/81/5
f 58/83/4 57/93/4 60/79/4
f 61/85/3 59/95/3 62/86/3
f 58/83/1 62/84/1 59/88/1
f 58/90/6 63/96/6 64/91/6

File diff suppressed because it is too large Load Diff

783
nodes.lua

File diff suppressed because it is too large Load Diff

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
local S = minetest.get_translator(minetest.get_current_modname()) local S = minetest.get_translator(minetest.get_current_modname())

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
local S = minetest.get_translator(minetest.get_current_modname()) local S = minetest.get_translator(minetest.get_current_modname())

Binary file not shown.

Binary file not shown.

View File

@ -360,6 +360,30 @@ everness_forsaken_tundra_under_y_max (y max) int -256
# Lower limit for biome. # Lower limit for biome.
everness_forsaken_tundra_under_y_min (y min) int -31000 everness_forsaken_tundra_under_y_min (y min) int -31000
[*Mineral Waters]
# Enable/ Disable Mineral Waters Biome
# Disabling this biome might result in missing recipes.
everness_mineral_waters (Mineral Waters) bool true
# Upper limit for biome.
everness_mineral_waters_y_max (y max) int 31000
# Lower limit for biome.
everness_mineral_waters_y_min (y min) int 1
[*Mineral Waters Under]
# Enable/ Disable Mineral Waters Under Biome
# Disabling this biome might result in missing recipes.
everness_mineral_waters_under (Mineral Waters) bool true
# Upper limit for biome.
everness_mineral_waters_under_y_max (y max) int -256
# Lower limit for biome.
everness_mineral_waters_under_y_min (y min) int -31000
[Features] [Features]
# Enable/ Disable Item pick up with sneak key # Enable/ Disable Item pick up with sneak key

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
local skybox_defs = { local skybox_defs = {
@ -678,7 +676,28 @@ local skybox_defs = {
fog_moon_tint = '#BE972D' fog_moon_tint = '#BE972D'
} }
} }
},
everness_mineral_waters = {
sky_parameters = {
type = 'regular',
sky_color = {
day_sky = '#264890',
day_horizon = '#3884CF',
dawn_sky = '#B4BAFA',
dawn_horizon = '#FDA47E',
night_sky = '#A3609E',
night_horizon = '#C7A8D9',
fog_sun_tint = '#FDA47E',
fog_moon_tint = '#FAE0EB'
} }
},
-- sun_parameters = {
-- texture = 'everness_bamboo_forest_sun.png',
-- scale = 1.57,
-- tonemap = 'everness_bamboo_forest_sun_tonemap.png',
-- sunrise = 'everness_bamboo_forest_sunrisebg.png',
-- },
},
} }
local function should_flip(player) local function should_flip(player)

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
local DELAY = 0 local DELAY = 0

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
local S = minetest.get_translator(minetest.get_current_modname()) local S = minetest.get_translator(minetest.get_current_modname())

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 418 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 790 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 808 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

View File

@ -12,8 +12,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to juraj.vajda@gmail.com
--]] --]]
local S = minetest.get_translator(minetest.get_current_modname()) local S = minetest.get_translator(minetest.get_current_modname())

226
torches.lua Normal file
View File

@ -0,0 +1,226 @@
--[[
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.
Authors of source code
----------------------
Originally by celeron55, Perttu Ahola <celeron55@gmail.com> (LGPLv2.1+)
Various Minetest developers and contributors (LGPLv2.1+)
The torch code was derived by sofar from the 'torches' mod by
BlockMen (LGPLv2.1+)
--]]
local S = minetest.get_translator(minetest.get_current_modname())
local function on_flood(pos, oldnode, newnode)
minetest.add_item(pos, ItemStack('everness:mineral_torch 1'))
-- Play flame-extinguish sound if liquid is not an 'igniter'
local nodedef = minetest.registered_items[newnode.name]
if not (
nodedef
and nodedef.groups
and nodedef.groups.igniter
and nodedef.groups.igniter > 0
) then
minetest.sound_play('default_cool_lava',
{
pos = pos,
max_hear_distance = 16,
gain = 0.07
},
true
)
end
-- Remove the torch node
return false
end
minetest.register_node('everness:mineral_torch', {
description = S('Mineral') .. ' ' .. S('Torch'),
drawtype = 'mesh',
mesh = 'everness_mineral_torch.obj',
inventory_image = 'everness_mineral_torch_item.png',
wield_image = 'everness_mineral_torch_item.png',
wield_scale = { x = 2, y = 2, z = 1 },
tiles = {
{ name = 'everness_mineral_torch_mesh.png' },
{
name = 'everness_mineral_torch_animated.png',
animation = {
type = 'vertical_frames',
aspect_w = 36,
aspect_h = 6,
length = 1
},
backface_culling = false
}
},
use_texture_alpha = 'blend',
paramtype = 'light',
paramtype2 = 'wallmounted',
sunlight_propagates = true,
walkable = false,
liquids_pointable = false,
light_source = 12,
groups = {
choppy = 2,
dig_immediate = 3,
flammable = 1,
attached_node = 1,
torch = 1
},
drop = 'everness:mineral_torch',
selection_box = {
type = 'wallmounted',
wall_bottom = { -1 / 8, -1 / 2, -1 / 8, 1 / 8, 2 / 16, 1 / 8 },
},
sounds = Everness.node_sound_wood_defaults(),
on_place = function(itemstack, placer, pointed_thing)
local under = pointed_thing.under
local node = minetest.get_node(under)
local def = minetest.registered_nodes[node.name]
if def
and def.on_rightclick
and not (
placer
and placer:is_player()
and placer:get_player_control().sneak
)
then
return def.on_rightclick(under, node, placer, itemstack,
pointed_thing) or itemstack
end
local above = pointed_thing.above
local wdir = minetest.dir_to_wallmounted(vector.subtract(under, above))
local fakestack = itemstack
if wdir == 0 then
fakestack:set_name('everness:mineral_torch_ceiling')
elseif wdir == 1 then
fakestack:set_name('everness:mineral_torch')
else
fakestack:set_name('everness:mineral_torch_wall')
end
itemstack = minetest.item_place(fakestack, placer, pointed_thing, wdir)
itemstack:set_name('everness:mineral_torch')
return itemstack
end,
floodable = true,
on_flood = on_flood,
on_rotate = false
})
minetest.register_node('everness:mineral_torch_wall', {
drawtype = 'mesh',
mesh = 'everness_mineral_torch_wall.obj',
tiles = {
{ name = 'everness_mineral_torch_mesh.png' },
{
name = 'everness_mineral_torch_animated.png',
animation = {
type = 'vertical_frames',
aspect_w = 36,
aspect_h = 6,
length = 1
},
backface_culling = false
}
},
use_texture_alpha = 'blend',
paramtype = 'light',
paramtype2 = 'wallmounted',
sunlight_propagates = true,
walkable = false,
light_source = 12,
groups = {
choppy = 2,
dig_immediate = 3,
flammable = 1,
not_in_creative_inventory = 1,
attached_node = 1,
torch = 1
},
drop = 'everness:mineral_torch',
selection_box = {
type = 'wallmounted',
wall_side = { -1 / 2, -1 / 2, -1 / 8, -1 / 8, 1 / 8, 1 / 8 },
},
sounds = Everness.node_sound_wood_defaults(),
floodable = true,
on_flood = on_flood,
on_rotate = false
})
minetest.register_node('everness:mineral_torch_ceiling', {
drawtype = 'mesh',
mesh = 'everness_mineral_torch_ceiling.obj',
tiles = {
{ name = 'everness_mineral_torch_mesh.png' },
{
name = 'everness_mineral_torch_animated.png',
animation = {
type = 'vertical_frames',
aspect_w = 36,
aspect_h = 6,
length = 1
},
backface_culling = false
}
},
use_texture_alpha = 'blend',
paramtype = 'light',
paramtype2 = 'wallmounted',
sunlight_propagates = true,
walkable = false,
light_source = 12,
groups = {
choppy = 2,
dig_immediate = 3,
flammable = 1,
not_in_creative_inventory = 1,
attached_node = 1,
torch = 1
},
drop = 'everness:mineral_torch',
selection_box = {
type = 'wallmounted',
wall_top = { -1 / 8, -1 / 16, -5 / 16, 1 / 8, 1 / 2, 1 / 8 },
},
sounds = Everness.node_sound_wood_defaults(),
floodable = true,
on_flood = on_flood,
on_rotate = false
})
-- minetest.register_craft({
-- output = 'everness:mineral_torch 4',
-- recipe = {
-- { 'everness:coal_lump' },
-- { 'group:stick' },
-- }
-- })
minetest.register_craft({
type = 'fuel',
recipe = 'everness:mineral_torch',
burntime = 4,
})

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