Add mineral waters

This commit is contained in:
Juraj Vajda 2024-01-19 13:03:26 -05:00
parent 24dc28fc4e
commit 086b7e19d3
70 changed files with 2390 additions and 169 deletions

View File

@ -89,4 +89,7 @@ read_globals = {
"mcl_util",
"mcl_doors",
"mcl_vars",
"mcl_buckets",
"mcl_worlds",
"bucket"
}

View File

@ -1377,6 +1377,43 @@ https://freesound.org/people/Rudmer_Rotteveel/sounds/590950/
- everness_extinguish_flame.1.ogg
**CC-BY-4.0, by nuFF3**, https://freesound.org
- everness_footstep.1.ogg
- everness_footstep.2.ogg
- everness_footstep.3.ogg
- everness_footstep.4.ogg
- everness_footstep.5.ogg
- everness_footstep.6.ogg
**CC-BY-4.0, by Anikadl**, https://freesound.org
- everness_hit.1.ogg
- everness_hit.2.ogg
- everness_hit.3.ogg
- everness_hit.4.ogg
- everness_hit.5.ogg
- everness_hit.6.ogg
**CC0-1.0, by kyles**, https://freesound.org, mixed with default_place_node_hard.1.ogg by Mito551 (CC-BY-SA 3.0)
- everness_place.1.ogg
- everness_place.2.ogg
- everness_place.3.ogg
**CC0-1.0, by Kinoton**, https://freesound.org, mixed with default_hard_footstep.1.ogg by Erdie (CC-BY-SA 3.0)
- everness_dug.1.ogg
- everness_dug.2.ogg
- everness_dug.3.ogg
**CC0-1.0, by Nox_Sound**, https://freesound.org/people/Nox_Sound/sounds/576593/
- everness_water_footstep.1.ogg
- everness_water_footstep.2.ogg
- everness_water_footstep.3.ogg
- everness_water_footstep.4.ogg
### Models
**CC-BY-SA-4.0, by SaKeL**
@ -1449,8 +1486,8 @@ https://freesound.org/people/Rudmer_Rotteveel/sounds/590950/
- everness_coral_tree_from_sapling.mts
- everness_coral_tree.lua
- everness_coral_tree.mts
- everness_coral_volcano_x_clay.lua
- everness_coral_volcano_x_clay.mts
- everness_coral_volcano_everness.lua
- everness_coral_volcano_everness.mts
- everness_coral_volcano.lua
- everness_coral_volcano.mts
- everness_crystal_bush.lua

61
api.lua
View File

@ -368,6 +368,14 @@ end
-- Sounds
--
function Everness.node_sound_defaults(table)
table = table or {}
table.footstep = table.footstep or { name = '', gain = 1.0 }
table.dug = table.dug or { name = 'everness_stone_hit', gain = 1.0 }
table.place = table.place or { name = 'everness_stone_dug', gain = 0.6 }
return table
end
function Everness.node_sound_frosted_snow_defaults(table)
table = table or {}
table.footstep = table.footstep or { name = 'everness_frosted_snow_footstep', gain = 0.2 }
@ -512,6 +520,22 @@ function Everness.node_sound_gravel_defaults(table)
return table
end
function Everness.node_sound_ceramic_defaults(table)
table = table or {}
table.footstep = table.footstep or { name = 'everness_ceramic_footstep', gain = 0.2 }
table.dig = table.dig or { name = 'everness_ceramic_hit', gain = 1.0 }
table.dug = table.dug or { name = 'everness_ceramic_dug', gain = 1.0 }
table.place = table.place or { name = 'everness_ceramic_place', gain = 1.0 }
return table
end
function Everness.node_sound_water_defaults(table)
table = table or {}
table.footstep = table.footstep or { name = 'everness_water_footstep', gain = 0.05 }
Everness.node_sound_defaults(table)
return table
end
--
-- Forsted Cave Icicles
--
@ -1422,3 +1446,40 @@ function Everness.cool_lava(pos, node, dtime_s, prev_cool_lava_action)
prev_cool_lava_action(pos, node, dtime_s)
end
end
function Everness.get_pot_formspec(pos, label, model_texture)
local spos = pos.x .. ',' .. pos.y .. ',' .. pos.z
local hotbar_bg = ''
local list_bg = ''
for i = 0, 7, 1 do
hotbar_bg = hotbar_bg .. 'image[' .. 0 + i .. ', ' .. 4.85 .. ';1,1;everness_chest_ui_bg_hb_slot.png]'
end
for row = 0, 2, 1 do
for i = 0, 7, 1 do
list_bg = list_bg .. 'image[' .. 0 + i .. ',' .. 6.08 + row .. ';1,1;everness_chest_ui_bg_slot.png]'
end
end
local model = 'model[0,0.5;2.5,2.5;everness_ceramic_pot;everness_ceramic_pot.obj;' .. model_texture .. ';0,0;true;false;]'
local formspec = {
'size[8,9]',
'listcolors[#FFFFFF00;#FFFFFF1A;#5E5957]',
'background[5,5;1,1;everness_chest_ui_bg.png;true]',
'list[nodemeta:' .. spos .. ';main;0.5,3;1,1;]',
'list[current_player;main;0,4.85;8,1;]',
'list[current_player;main;0,6.08;8,3;8]',
'listring[nodemeta:' .. spos .. ';main]',
'listring[current_player;main]',
list_bg,
hotbar_bg,
'image[0.5,3;1,1;everness_chest_ui_bg_hb_slot.png]',
'label[2.5,0.5;' .. minetest.formspec_escape(label) .. ']',
model
}
formspec = table.concat(formspec, '')
return formspec
end

Binary file not shown.

Binary file not shown.

View File

@ -623,6 +623,13 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = 'default:paper',
recipe = {
{ 'everness:lotus_leaf_3', 'everness:lotus_leaf_3', 'everness:lotus_leaf_3' },
}
})
-- Crystals
minetest.register_craft({
@ -813,6 +820,12 @@ minetest.register_craft({
burntime = 370,
})
minetest.register_craft({
type = 'fuel',
recipe = 'everness:lotus_leaf_3',
burntime = 1,
})
--
-- Cooking recipes
--
@ -942,12 +955,24 @@ minetest.register_craft({
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'},
{ 'everness:mineral_stone_brick_with_growth', 'everness:mineral_stone_brick_with_growth', 'everness:mineral_stone_brick_with_growth'},
{ 'group:flower', 'group:flower', 'group:flower'},
{ 'everness:mineral_stone_brick', 'everness:mineral_stone_brick', 'everness:mineral_stone_brick'}
{ 'everness:mineral_stone_brick_with_growth', 'everness:mineral_stone_brick_with_growth', 'everness:mineral_stone_brick_with_growth'}
}
})
minetest.register_craft({
type = 'cooking',
output = 'everness:lotus_leaf_3',
recipe = 'everness:lotus_leaf',
})
minetest.register_craft({
type = 'cooking',
output = 'everness:lotus_leaf_3',
recipe = 'everness:lotus_leaf_2',
})
--
-- Saplings
--

View File

@ -716,7 +716,7 @@ minetest.register_abm({
--
minetest.register_abm({
label = 'everness:rising_souls',
label = 'everness:rising_crystals',
nodenames = { 'group:rising_crystals' },
neighbors = { 'group:water' },
interval = 16,
@ -807,7 +807,96 @@ minetest.register_abm({
catch_up = false,
action = function(pos, node)
minetest.swap_node(pos, { name = 'everness:water_geyser_active' })
minetest.get_node_timer(pos):start(1)
local meta = minetest.get_meta(pos)
local partcile_time = math.random(5, 15)
-- player
for _, object in ipairs(minetest.get_objects_in_area(vector.new(pos.x - 0.5, pos.y - 0.5, pos.z - 0.5), vector.new(pos.x + 0.5, pos.y + 1, pos.z + 0.5))) do
if object:is_player()
and object:get_hp() > 0
then
object:add_velocity(vector.new(0, math.random(27, 32), 0))
end
end
-- particles
local particlespawner_def = {
amount = 80,
time = partcile_time,
minpos = vector.new(pos.x, pos.y + 1.5, pos.z),
maxpos = vector.new(pos.x, pos.y + 2, pos.z),
minvel = vector.new(0, 13, 0),
maxvel = vector.new(0, 15, 0),
minacc = vector.new(0, -1, 1),
maxacc = vector.new(0, -3, 2),
minexptime = 3,
maxexptime = 5,
minsize = 5,
maxsize = 7,
texture = 'water_geyser_particle.png',
vertical = true,
collisiondetection = true,
collision_removal = true
}
if minetest.has_feature({ dynamic_add_media_table = true, particlespawner_tweenable = true }) then
-- new syntax, above v5.6.0
particlespawner_def = {
amount = 80,
time = partcile_time,
size = {
min = 5,
max = 7,
},
exptime = {
min = 3,
max = 5
},
pos = {
min = vector.new(pos.x, pos.y + 1.5, pos.z),
max = vector.new(pos.x, pos.y + 2, pos.z)
},
vel = {
min = vector.new(0, 13, 0),
max = vector.new(0, 15, 0)
},
acc = {
min = vector.new(0, -1, 1),
max = vector.new(0, -3, 2)
},
texture = {
name = 'water_geyser_particle.png',
scale_tween = {
5, 10,
style = 'fwd',
reps = 1
},
alpha_tween = {
1, 0,
style = 'fwd',
reps = 1
},
blend = 'alpha',
},
vertical = true,
collisiondetection = true,
collision_removal = true
}
end
local particle_id = minetest.add_particlespawner(particlespawner_def)
meta:set_int('particle_id', particle_id)
minetest.sound_play({
name = 'everness_water_geyser',
gain = 1.5,
pitch = math.random(10, 30) / 10
}, {
pos = pos
})
minetest.get_node_timer(pos):start(partcile_time)
end
})
@ -892,6 +981,140 @@ minetest.register_lbm({
end
})
-- Activate timers on lotus flowers
minetest.register_lbm({
-- Descriptive label for profiling purposes (optional).
-- Definitions with identical labels will be listed as one.
label = 'everness_lotus_flower_timers',
-- Identifier of the LBM, should follow the modname:<whatever> convention
name = 'everness:everness_lotus_flower_timers',
-- List of node names to trigger the LBM on.
-- Names of non-registered nodes and groups (as group:groupname)
-- will work as well.
nodenames = {
'everness:lotus_flower_white',
'everness:lotus_flower_purple',
'everness:lotus_flower_pink'
},
-- Whether to run the LBM's action every time a block gets activated,
-- and not only the first time the block gets activated after the LBM
-- was introduced.
run_at_every_load = true,
-- Function triggered for each qualifying node.
-- `dtime_s` is the in-game time (in seconds) elapsed since the block
-- was last active
action = function(pos, node, dtime_s)
local timer = minetest.get_node_timer(pos)
if not timer:is_started() then
minetest.get_node_timer(pos):start(1)
end
end
})
-- Spread lotus flowers and leafs around them
minetest.register_abm({
label = 'Lotus Flowers and Leafs spread',
nodenames = {
'everness:lotus_flower_white',
'everness:lotus_flower_purple',
'everness:lotus_flower_pink',
'everness:lotus_leaf',
'everness:lotus_leaf_2'
},
neighbors = {
'everness:lotus_flower_white',
'everness:lotus_flower_purple',
'everness:lotus_flower_pink',
'everness:lotus_leaf',
'everness:lotus_leaf_2'
},
max_y = Everness.settings.biomes.everness_mineral_waters.y_max,
min_y = Everness.settings.biomes.everness_mineral_waters.y_min,
interval = 13,
chance = 300,
action = function(pos, node)
local under = minetest.get_node(vector.new(pos.x, pos.y - 1, pos.z))
local def = minetest.registered_nodes[under.name] or {}
if def.liquidtype ~= 'source' and minetest.get_item_group(under.name, 'water') == 0 then
return
end
local light = minetest.get_node_light(pos)
if not light or light < 13 then
return
end
local pos0 = vector.subtract(pos, 4)
local pos1 = vector.add(pos, 4)
local flower_node_names = {
'everness:lotus_flower_white',
'everness:lotus_flower_purple',
'everness:lotus_flower_pink'
}
local leaf_node_names = {
'everness:lotus_leaf',
'everness:lotus_leaf_2'
}
local node_name = flower_node_names[math.random(1, #flower_node_names)]
local found_flower_positions = minetest.find_nodes_in_area(pos0, pos1, flower_node_names)
-- Testing shows that a threshold of 1 result in an appropriate maximum
-- density of approximately 7 flowers per 9x9 area.
if #found_flower_positions > 1 then
-- Spread leafs
local rand_flower_pos = found_flower_positions[math.random(1, #found_flower_positions)]
pos0 = vector.subtract(rand_flower_pos, 4)
pos1 = vector.add(rand_flower_pos, 4)
local found_leaf_positions = minetest.find_nodes_in_area(pos0, pos1, leaf_node_names)
if #found_leaf_positions > 25 then
return
end
node_name = leaf_node_names[math.random(1, #leaf_node_names)]
end
local water_positions = minetest.find_nodes_in_area_under_air(pos0, pos1, 'group:water')
table.shuffle(water_positions)
-- Sort with the closest first
table.sort(water_positions, function(a, b)
return vector.distance(a, pos) < vector.distance(b, pos)
end)
local water_pos
-- find water source since we are looking only for `group:water`
for _, p in ipairs(water_positions) do
local n = minetest.get_node(p)
local d = minetest.registered_nodes[n.name] or {}
if d.liquidtype == 'source' then
water_pos = p
break
end
end
if not water_pos then
return
end
local water_above = vector.new(water_pos.x, water_pos.y + 1, water_pos.z)
light = minetest.get_node_light(water_above)
if light and light >= 13 then
minetest.set_node(water_above, { name = node_name })
end
end
})
-- Override lava cooling to include some variations of obsidian
minetest.register_on_mods_loaded(function()
for _, abm in pairs(minetest.registered_abms) do

View File

@ -195,7 +195,10 @@ if minetest.get_modpath('doors') and minetest.global_exists('doors') then
dofile(path .. '/doors.lua')
end
dofile(path .. '/buckets.lua')
if not minetest.get_modpath('bucket') and not minetest.get_modpath('mcl_buckets') then
dofile(path .. '/buckets.lua')
end
dofile(path .. '/tools.lua')
dofile(path .. '/craftitems.lua')
dofile(path .. '/crafting.lua')
@ -236,7 +239,13 @@ if minetest.get_modpath('mcl_core') and minetest.global_exists('mcl_core') then
dofile(path .. '/mod_support_mcl.lua')
end
Everness.set_loot_chest_items()
-- Minetest Game
dofile(path .. '/mod_support_mtg.lua')
minetest.register_on_mods_loaded(function()
Everness.set_loot_chest_items()
end)
local mod_end_time = (minetest.get_us_time() - mod_start_time) / 1000000

View File

@ -260,7 +260,7 @@ 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.set_gen_notify({ decoration = true }, { d_everness_bamboo_forest_large_bamboo })
minetest.register_on_generated(function(minp, maxp, blockseed)
-- Load the voxelmanip with the result of engine mapgen

View File

@ -178,7 +178,7 @@ local deco_ids_baobab = {
}
if #deco_ids_baobab > 1 then
minetest.set_gen_notify('decoration', deco_ids_baobab)
minetest.set_gen_notify({ decoration = true }, deco_ids_baobab)
end
minetest.register_on_generated(function(minp, maxp, blockseed)

View File

@ -259,7 +259,7 @@ register_coral_grass_decoration(0.03, 0.03, 1)
local deco_id_coral_bones_tree = minetest.get_decoration_id('everness:coral_forest_coral_bones_tree')
local coral_bones_tree_size = { x = 16, y = 35, z = 16 }
minetest.set_gen_notify('decoration', { deco_id_coral_bones_tree })
minetest.set_gen_notify({ decoration = true }, { deco_id_coral_bones_tree })
minetest.register_on_generated(function(minp, maxp, blockseed)
local gennotify = minetest.get_mapgen_object('gennotify')

View File

@ -316,7 +316,7 @@ minetest.register_decoration({
local deco_id_frosted_icicle_large_ceiling = minetest.get_decoration_id('everness:frosted_icicle_large_ceiling')
local deco_id_frosted_icicle_large_floor = minetest.get_decoration_id('everness:frosted_icicle_large_floor')
minetest.set_gen_notify('decoration', { deco_id_frosted_icicle_large_ceiling, deco_id_frosted_icicle_large_floor })
minetest.set_gen_notify({ decoration = true }, { deco_id_frosted_icicle_large_ceiling, deco_id_frosted_icicle_large_floor })
minetest.register_on_generated(function(minp, maxp, blockseed)
local gennotify = minetest.get_mapgen_object('gennotify')

View File

@ -64,17 +64,18 @@ minetest.register_ore({
--
-- Register decorations
-- placeholder node `everness:crystal_stone` will be replaced in VM
--
minetest.register_decoration({
name = 'everness:palm_tree_1',
deco_type = 'schematic',
name = 'everness:palm_trees',
deco_type = 'simple',
place_on = { 'everness:mineral_sand' },
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.02,
spread = { x = 200, y = 200, z = 200 },
scale = 0.005,
spread = { x = 250, y = 250, z = 250 },
seed = 329,
octaves = 3,
persist = 0.6
@ -82,48 +83,32 @@ minetest.register_decoration({
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,
decoration = { 'everness:crystal_stone' },
})
minetest.register_decoration({
name = 'everness:palm_tree_2',
deco_type = 'schematic',
name = 'everness:pots',
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,
scale = 0.002,
spread = { x = 250, y = 250, z = 250 },
seed = 2,
octaves = 3,
persist = 0.6
persist = 0.66
},
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,
decoration = { 'everness:crystal_stone' },
_decoration = {
'everness:ceramic_pot_1',
'everness:ceramic_pot_2',
'everness:ceramic_pot_3',
'everness:ceramic_pot_4'
}
})
minetest.register_decoration({
@ -142,17 +127,33 @@ minetest.register_decoration({
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'
decoration = { 'everness:crystal_stone' },
spawn_by = { 'air' },
num_spawn_by = 16,
check_offset = 1,
})
minetest.register_decoration({
name = 'everness:rose_bush',
deco_type = 'simple',
place_on = { 'everness:mineral_sand' },
sidelen = 16,
noise_params = {
offset = -0.004,
scale = 0.01,
spread = { x = 100, y = 100, z = 100 },
seed = 137,
octaves = 3,
persist = 0.7,
},
num_spawn_by = 1,
check_offset = -1,
biomes = { 'everness_mineral_waters' },
y_max = y_max,
y_min = y_min,
decoration = { 'everness:crystal_stone' },
_decoration = { 'everness:rose_bush' },
spawn_by = { 'air' },
num_spawn_by = 16,
check_offset = 1,
})
--
@ -170,9 +171,28 @@ local c_everness_mineral_sandstone = minetest.get_content_id('everness:mineral_s
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 c_everness_mineral_stone_with_coal = minetest.get_content_id('everness:mineral_stone_with_coal')
local c_everness_lotus_flower_white = minetest.get_content_id('everness:lotus_flower_white')
local c_everness_lotus_flower_purple = minetest.get_content_id('everness:lotus_flower_purple')
local c_everness_lotus_flower_pink = minetest.get_content_id('everness:lotus_flower_pink')
local c_everness_lotus_lotus_leaf = minetest.get_content_id('everness:lotus_leaf')
local c_everness_lotus_lotus_leaf_2 = minetest.get_content_id('everness:lotus_leaf_2')
local c_everness_lotus_lotus_leaf_3 = minetest.get_content_id('everness:lotus_leaf_3')
local c_everness_ceramic_pot_1 = minetest.get_content_id('everness:ceramic_pot_1')
local c_everness_ceramic_pot_2 = minetest.get_content_id('everness:ceramic_pot_2')
local c_everness_ceramic_pot_3 = minetest.get_content_id('everness:ceramic_pot_3')
local c_everness_ceramic_pot_4 = minetest.get_content_id('everness:ceramic_pot_4')
local c_everness_mineral_water_weed_1 = minetest.get_content_id('everness:mineral_water_weed_1')
local c_everness_mineral_water_weed_2 = minetest.get_content_id('everness:mineral_water_weed_2')
local c_everness_mineral_water_weed_3 = minetest.get_content_id('everness:mineral_water_weed_3')
-- Biome IDs
local biome_id_everness_mineral_waters = minetest.get_biome_id('everness_mineral_waters')
-- Decoration IDs
local d_everness_palm_trees = minetest.get_decoration_id('everness:palm_trees')
local d_everness_water_geyser = minetest.get_decoration_id('everness:water_geyser')
local d_everness_pots = minetest.get_decoration_id('everness:pots')
local d_rose_bush = minetest.get_decoration_id('everness:rose_bush')
-- Pool building blocks variations
local pool_build_nodes = {
{
c_everness_mineral_stone,
@ -185,6 +205,26 @@ local pool_build_nodes = {
c_everness_mineral_sandstone_block
}
}
local c_lotus_flowers = {
c_everness_lotus_flower_white,
c_everness_lotus_flower_purple,
c_everness_lotus_flower_pink
}
local c_lotus_leaves = {
c_everness_lotus_lotus_leaf,
c_everness_lotus_lotus_leaf_2,
c_everness_lotus_lotus_leaf_3
}
local c_pots = {
c_everness_ceramic_pot_1,
c_everness_ceramic_pot_2,
c_everness_ceramic_pot_3,
c_everness_ceramic_pot_4
}
local c_water_weeds = {
c_everness_mineral_water_weed_1,
c_everness_mineral_water_weed_2
}
local function find_irecursive(table, c_id)
local found = false
@ -203,28 +243,79 @@ local function find_irecursive(table, c_id)
return found
end
local function place_decoration(pos, vm, area, data, deco_id, callback)
local deco_def = minetest.registered_decorations[deco_id]
if not deco_def then
return
end
-- Position of the 'place_on' node
local vi = area:indexp(pos)
local place_on_valid = false
local data_node_name = minetest.get_name_from_content_id(data[vi])
local placeholder_node_name = type(deco_def.decoration) == 'string' and deco_def.decoration or deco_def.decoration[1]
if type(deco_def.place_on) == 'string' then
if deco_def.place_on == data_node_name and data[vi + area.ystride * 2] == minetest.CONTENT_AIR then
place_on_valid = true
end
else
for i, v in ipairs(deco_def.place_on) do
if v == data_node_name and data[vi + area.ystride * 2] == minetest.CONTENT_AIR then
place_on_valid = true
break
end
end
end
local pos_above = vector.new(pos.x, pos.y + 1, pos.z)
local node_above = vm:get_node_at(pos_above)
if node_above.name == placeholder_node_name then
if place_on_valid then
callback(pos_above, deco_def)
else
vm:set_node_at(pos_above, { name = 'air' })
end
end
end
-- Localize data buffer table outside the loop, to be re-used for all
-- mapchunks, therefore minimising memory use
local data = {}
local p2data = {}
minetest.set_gen_notify({ decoration = true }, {
d_everness_palm_trees,
d_everness_water_geyser,
d_everness_pots,
d_rose_bush
})
-- 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')
-- Returns an array containing the biome IDs of nodes in the most recently generated chunk by the current mapgen
local biomemap = minetest.get_mapgen_object('biomemap')
-- '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 >= y_min then
-- Above sea level
-- Above sea level
if maxp.y >= y_min and table.indexof(biomemap, biome_id_everness_mineral_waters) ~= -1 then
local rand = PcgRandom(blockseed)
local rand_version = rand:next(1, 2)
-- Load the voxelmanip with the result of engine mapgen
local vm, emin, emax = minetest.get_mapgen_object('voxelmanip')
-- Returns a table mapping requested generation notification types to arrays of positions at which the corresponding generated structures are located within the current chunk
local gennotify = minetest.get_mapgen_object('gennotify')
-- '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 pot_pos = {}
if rand_version == 1 then
--
@ -243,7 +334,6 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
data[ai + area.ystride] == minetest.CONTENT_AIR
and node_def
and node_def.walkable
and table.indexof(biomemap, biome_id_everness_mineral_waters) ~= -1
then
local length = 5 + rand:next(0, 10)
local width = 5 + rand:next(0, 10)
@ -449,11 +539,263 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
end
end
-- Place decorations after generating (2nd pass)
for y = minp.y, maxp.y do
for z = minp.z, maxp.z do
for x = minp.x, maxp.x do
local ai = area:index(x, y, z)
--
-- Place Lotus Flowers and Leaves
--
if
data[ai] == c_everness_mineral_water_source
-- spawn around water
and data[ai + 1 + area.zstride] == c_everness_mineral_water_source
and data[ai + 1 - area.zstride] == c_everness_mineral_water_source
and data[ai + 1] == c_everness_mineral_water_source
and data[ai - 1] == c_everness_mineral_water_source
and data[ai - 1 + area.zstride] == c_everness_mineral_water_source
and data[ai - 1 - area.zstride] == c_everness_mineral_water_source
and data[ai + area.zstride] == c_everness_mineral_water_source
and data[ai - area.zstride] == c_everness_mineral_water_source
-- make sure there is space above
and data[ai + area.ystride] == minetest.CONTENT_AIR
-- spawn around air above
and data[ai + area.ystride + 1] == minetest.CONTENT_AIR
and data[ai + area.ystride + 1 + area.zstride] == minetest.CONTENT_AIR
and data[ai + area.ystride + 1 - area.zstride] == minetest.CONTENT_AIR
and data[ai + area.ystride - 1] == minetest.CONTENT_AIR
and data[ai + area.ystride - 1 + area.zstride] == minetest.CONTENT_AIR
and data[ai + area.ystride - 1 - area.zstride] == minetest.CONTENT_AIR
and data[ai + area.ystride + area.zstride] == minetest.CONTENT_AIR
and data[ai + area.ystride - area.zstride] == minetest.CONTENT_AIR
then
if rand:next(0, 100) < 2 then
data[ai + area.ystride] = c_lotus_flowers[rand:next(1, #c_lotus_flowers)]
-- Place Lotus Leaves around Flowers
local radius = 3
local chance_max = 80
for i = -radius, radius do
for j = -radius, radius do
local idx = ai + i + (area.zstride * j) + area.ystride
local distance = math.round(vector.distance(area:position(ai), area:position(idx)))
local chance = math.round(chance_max / distance)
if chance > chance_max then
chance = chance_max
end
if
rand:next(0, 100) < chance
and data[idx] == minetest.CONTENT_AIR
and data[idx - area.ystride] == c_everness_mineral_water_source
then
data[idx] = c_lotus_leaves[rand:next(1, #c_lotus_leaves)]
end
end
end
elseif rand:next(0, 100) < 4 then
data[ai + area.ystride] = c_lotus_leaves[rand:next(1, #c_lotus_leaves)]
-- add some more leaves around the leaf
for i = -1, 1 do
for j = -1, 1 do
local idx = ai + i + (area.zstride * j) + area.ystride
if
rand:next(0, 100) < 25
and data[idx] == minetest.CONTENT_AIR
and data[idx - area.ystride] == c_everness_mineral_water_source
then
data[idx] = c_lotus_leaves[rand:next(1, #c_lotus_leaves)]
end
end
end
end
end
--
-- Place Seaweed
--
if
data[ai] == c_everness_mineral_water_source
and data[ai + area.ystride] == c_everness_mineral_water_source
and rand:next(0, 100) < 33
then
local c_weed = c_water_weeds[rand:next(1, #c_water_weeds)]
if rand:next(0, 100) < 5 then
-- Weed with light source with a bit less probability
c_weed = c_everness_mineral_water_weed_3
end
if data[ai + 1] == c_everness_mineral_stone then
data[ai + 1] = c_weed
data[ai + 1] = c_weed
data[ai + 1] = c_weed
p2data[ai + 1] = 2
elseif data[ai - 1] == c_everness_mineral_stone then
data[ai - 1] = c_weed
data[ai - 1] = c_weed
data[ai - 1] = c_weed
p2data[ai - 1] = 3
elseif data[ai + area.zstride] == c_everness_mineral_stone then
data[ai + area.zstride] = c_weed
data[ai + area.zstride] = c_weed
data[ai + area.zstride] = c_weed
p2data[ai + area.zstride] = 4
elseif data[ai - area.zstride] == c_everness_mineral_stone then
data[ai - area.zstride] = c_weed
data[ai - area.zstride] = c_weed
data[ai - area.zstride] = c_weed
p2data[ai - area.zstride] = 5
elseif data[ai - area.ystride] == c_everness_mineral_stone then
data[ai - area.ystride] = c_weed
data[ai - area.ystride] = c_weed
data[ai - area.ystride] = c_weed
p2data[ai - area.ystride] = 1
end
end
--
-- Place pots under water
--
if
data[ai] == c_everness_mineral_water_source
-- spawn around water
and data[ai + 1 + area.zstride] == c_everness_mineral_water_source
and data[ai + 1 - area.zstride] == c_everness_mineral_water_source
and data[ai + 1] == c_everness_mineral_water_source
and data[ai - 1] == c_everness_mineral_water_source
and data[ai - 1 + area.zstride] == c_everness_mineral_water_source
and data[ai - 1 - area.zstride] == c_everness_mineral_water_source
and data[ai + area.zstride] == c_everness_mineral_water_source
and data[ai - area.zstride] == c_everness_mineral_water_source
-- spawn around water above
and data[ai + area.ystride] == c_everness_mineral_water_source
and data[ai + area.ystride + 1] == c_everness_mineral_water_source
and data[ai + area.ystride + 1 + area.zstride] == c_everness_mineral_water_source
and data[ai + area.ystride + 1 - area.zstride] == c_everness_mineral_water_source
and data[ai + area.ystride - 1] == c_everness_mineral_water_source
and data[ai + area.ystride - 1 + area.zstride] == c_everness_mineral_water_source
and data[ai + area.ystride - 1 - area.zstride] == c_everness_mineral_water_source
and data[ai + area.ystride + area.zstride] == c_everness_mineral_water_source
and data[ai + area.ystride - area.zstride] == c_everness_mineral_water_source
-- spawn on solid node below
and data[ai - area.ystride] ~= c_everness_mineral_water_source
then
if rand:next(0, 100) < 1 then
table.insert(pot_pos, vector.new(area:position(ai)))
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)
vm:set_param2_data(p2data)
--
-- Place Decorations
--
--
-- Palm Trees
--
for _, pos in ipairs(gennotify['decoration#' .. (d_everness_palm_trees or '')] or {}) do
place_decoration(pos, vm, area, data, 'everness:palm_trees', function(p)
minetest.place_schematic_on_vmanip(
vm,
p,
minetest.get_modpath('everness') .. '/schematics/everness_palm_tree.mts',
nil,
nil,
true,
'place_center_x, place_center_z'
)
end)
end
--
-- Water Geyser
--
for _, pos in ipairs(gennotify['decoration#' .. (d_everness_water_geyser or '')] or {}) do
place_decoration(pos, vm, area, data, 'everness:water_geyser', function(p)
vm:set_node_at(p, { name = 'everness:water_geyser' })
end)
end
--
-- Rose Bush
--
for _, pos in ipairs(gennotify['decoration#' .. (d_rose_bush or '')] or {}) do
place_decoration(pos, vm, area, data, 'everness:rose_bush', function(p)
vm:set_node_at(p, { name = 'everness:rose_bush' })
end)
end
--
-- Pots (above water)
--
for _, pos in ipairs(gennotify['decoration#' .. (d_everness_pots or '')] or {}) do
place_decoration(pos, vm, area, data, 'everness:pots', function(p, deco_def)
if deco_def._decoration then
-- Use `minetest.set_node` so we can set inventory on node construct
minetest.set_node(p, { name = deco_def._decoration[rand:next(1, #deco_def._decoration)] })
local inv = minetest.get_inventory({ type = 'node', pos = p })
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
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', 1, stack)
end
end
end)
end
--
-- Pots (under water)
--
for _, v in ipairs(pot_pos) do
-- Use `minetest.set_node` so we can set inventory on node construct
minetest.set_node(v, { name = minetest.get_name_from_content_id(c_pots[rand:next(1, #c_pots)]) })
local inv = minetest.get_inventory({ type = 'node', pos = v })
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
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', 1, stack)
end
end
-- Set the lighting within the `VoxelManip` to a uniform value
vm:set_lighting({ day = 0, night = 0 })
vm:set_lighting({ day = 0, night = 0 }, minp, maxp)
-- Calculate lighting for what has been created.
vm:calc_lighting()
-- Liquid nodes were placed so set them flowing.

View File

@ -1079,3 +1079,19 @@ minetest.register_craft({
{ 'everness:dry_wood', 'everness:dry_wood' },
}
})
--
-- Buckets
--
mcl_buckets.register_liquid({
source_place = 'everness:mineral_water_source',
source_take = { 'everness:mineral_water_source' },
bucketname = 'everness:bucket_mineral_water',
inventory_image = 'everness_mcl_bucket_mineral_water.png',
name = S('Mineral') .. ' ' .. S('Water') .. ' ' .. S('Bucket'),
longdesc = S('A bucket can be used to collect and release liquids. This one is filled with mineral water.'),
usagehelp = S('Place it to empty the bucket and create a mineral water source.'),
tt_help = S('Places a mineral water source'),
groups = { water_bucket = 1 },
})

32
mod_support_mtg.lua Normal file
View File

@ -0,0 +1,32 @@
--[[
Everness. Never ending discovery in Everness mapgen.
Copyright (C) 2024 SaKeL
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
--]]
local S = minetest.get_translator(minetest.get_current_modname())
--
-- Buckets
--
if minetest.get_modpath('bucket') then
bucket.register_liquid(
'everness:mineral_water_source',
'everness:mineral_water_flowing',
'everness:bucket_mineral_water',
'everness_mtg_bucket_mineral_water.png',
S('Mineral') .. ' ' .. S('Water') .. ' ' .. S('Bucket'),
{ tool = 1, water_bucket = 1 }
)
end

View File

@ -0,0 +1,375 @@
# Blender v2.83.20 OBJ File: 'everness_ceramic_pot.blend'
# www.blender.org
mtllib everness_ceramic_pot.mtl
o everness_ceramic_pot.vox
v -0.375000 -0.499000 0.375000
v -0.437500 -0.436500 0.437500
v -0.437500 0.501000 0.125000
v -0.250000 0.501000 0.125000
v -0.250000 0.501000 -0.250000
v -0.312500 0.563500 0.312500
v -0.312500 0.751000 -0.312500
v 0.375000 -0.499000 0.375000
v 0.437500 -0.436500 0.437500
v 0.437500 0.501000 0.437500
v 0.312500 0.563500 0.312500
v -0.375000 -0.436500 0.375000
v 0.375000 -0.436500 0.375000
v -0.250000 0.501000 0.437500
v -0.250000 0.501000 0.250000
v -0.250000 0.563500 0.250000
v 0.250000 0.563500 0.250000
v -0.312500 0.751000 0.312500
v -0.187500 0.751000 0.312500
v 0.312500 0.751000 0.312500
v -0.187500 0.751000 -0.187500
v 0.187500 0.751000 -0.187500
v -0.375000 -0.436500 -0.375000
v -0.250000 -0.436500 -0.375000
v 0.375000 -0.499000 -0.375000
v -0.437500 -0.436500 -0.437500
v 0.437500 0.501000 -0.437500
v -0.312500 0.563500 -0.312500
v 0.062500 0.563500 -0.312500
v -0.062500 0.751000 0.187500
v 0.312500 0.751000 -0.312500
v -0.375000 -0.499000 -0.375000
v -0.437500 -0.436500 -0.375000
v -0.250000 -0.436500 -0.437500
v 0.375000 -0.436500 -0.375000
v 0.437500 -0.436500 -0.437500
v -0.312500 0.563500 -0.250000
v -0.250000 0.563500 -0.250000
v 0.062500 0.563500 -0.250000
v 0.250000 0.563500 -0.250000
v 0.312500 0.563500 -0.312500
v -0.437500 0.501000 0.437500
v 0.250000 0.501000 0.250000
v 0.250000 0.501000 -0.250000
v -0.437500 0.501000 -0.437500
v -0.062500 0.751000 0.312500
v -0.187500 0.751000 0.187500
v 0.187500 0.751000 0.187500
v 0.437500 -0.436500 0.437500
v 0.437500 -0.436500 -0.437500
v 0.437500 0.501000 0.437500
v 0.437500 0.501000 -0.437500
v -0.375000 -0.499000 0.375000
v -0.437500 -0.436500 0.437500
v -0.437500 0.501000 0.125000
v -0.250000 0.501000 0.125000
v -0.250000 0.501000 -0.250000
v -0.312500 0.563500 0.312500
v -0.312500 0.751000 -0.312500
v 0.375000 -0.499000 0.375000
v 0.437500 -0.436500 0.437500
v 0.437500 0.501000 0.437500
v 0.312500 0.563500 0.312500
v -0.187500 0.626000 -0.187500
v -0.375000 -0.436500 0.375000
v 0.375000 -0.436500 0.375000
v -0.250000 0.501000 0.437500
v -0.250000 0.501000 0.250000
v -0.250000 0.563500 0.250000
v 0.250000 0.563500 0.250000
v 0.187500 0.626000 -0.187500
v -0.312500 0.751000 0.312500
v -0.187500 0.751000 0.312500
v 0.312500 0.751000 0.312500
v -0.187500 0.751000 -0.187500
v 0.187500 0.751000 -0.187500
v -0.375000 -0.436500 -0.375000
v -0.250000 -0.436500 -0.375000
v 0.375000 -0.499000 -0.375000
v -0.437500 -0.436500 -0.437500
v 0.437500 0.501000 -0.437500
v -0.312500 0.563500 -0.312500
v 0.062500 0.563500 -0.312500
v -0.187500 0.626000 0.187500
v -0.062500 0.751000 0.187500
v 0.312500 0.751000 -0.312500
v -0.375000 -0.499000 -0.375000
v -0.437500 -0.436500 -0.375000
v -0.250000 -0.436500 -0.437500
v 0.375000 -0.436500 -0.375000
v 0.437500 -0.436500 -0.437500
v -0.312500 0.563500 -0.250000
v -0.250000 0.563500 -0.250000
v 0.062500 0.563500 -0.250000
v 0.250000 0.563500 -0.250000
v 0.312500 0.563500 -0.312500
v -0.437500 0.501000 0.437500
v 0.250000 0.501000 0.250000
v 0.250000 0.501000 -0.250000
v -0.437500 0.501000 -0.437500
v 0.187500 0.626000 0.187500
v -0.062500 0.751000 0.312500
v -0.187500 0.751000 0.187500
v 0.187500 0.751000 0.187500
v 0.437500 -0.436500 0.437500
v 0.437500 -0.436500 -0.437500
v 0.437500 0.501000 0.437500
v 0.437500 0.501000 -0.437500
vt 0.437500 0.250000
vt 0.375000 0.218750
vt 0.437500 0.218750
vt 0.000000 0.000000
vt 0.093750 0.000000
vt 0.093750 0.046875
vt 0.437500 0.000000
vt 0.437500 0.218750
vt 0.343750 0.171875
vt 0.000000 0.000000
vt 0.000000 0.000000
vt 0.000000 0.000000
vt 0.843750 0.218750
vt 0.843750 0.015625
vt 0.812500 0.031250
vt 0.625000 0.375000
vt 0.312500 0.375000
vt 0.562500 0.343750
vt 0.468750 0.203125
vt 0.812500 0.031250
vt 0.468750 0.031250
vt 0.531250 0.218750
vt 0.531250 0.203125
vt 0.468750 0.203125
vt 0.906250 0.234375
vt 0.937500 0.375000
vt 0.937500 0.218750
vt 0.812500 0.375000
vt 0.812500 0.359375
vt 0.656250 0.359375
vt 0.000000 0.000000
vt 0.000000 0.000000
vt 0.000000 0.000000
vt 0.000000 0.000000
vt 0.000000 0.000000
vt 0.031250 0.390625
vt 0.437500 0.390625
vt 0.281250 0.625000
vt 0.093750 0.640625
vt 0.093750 0.625000
vt 0.281250 0.625000
vt 0.062500 0.687500
vt 0.062500 0.640625
vt 0.093750 0.640625
vt 0.062500 0.218750
vt 0.250000 0.250000
vt 0.250000 0.218750
vt 0.843750 0.687500
vt 0.781250 0.703125
vt 0.468750 0.687500
vt 0.343750 0.937500
vt 0.093750 0.953125
vt 0.093750 0.937500
vt 0.062500 0.343750
vt 0.250000 0.375000
vt 0.062500 0.375000
vt 0.875000 0.390625
vt 0.531250 0.625000
vt 0.031250 0.375000
vt 0.406250 0.390625
vt 0.031250 0.390625
vt 0.781250 0.625000
vt 0.531250 0.640625
vt 0.531250 0.625000
vt 0.406250 0.687500
vt 0.031250 0.703125
vt 0.031250 0.687500
vt 0.312500 0.343750
vt 0.250000 0.250000
vt 0.312500 0.250000
vt 0.812500 0.640625
vt 0.812500 0.687500
vt 0.625000 0.687500
vt 0.437500 0.937500
vt 0.437500 0.703125
vt 0.781250 0.703125
vt 0.625000 0.953125
vt 0.531250 0.937500
vt 0.781250 0.937500
vt 0.500000 1.000000
vt 0.500000 0.953125
vt 0.625000 0.953125
vt 0.062500 0.250000
vt 0.000000 0.281250
vt 0.062500 0.343750
vt 0.375000 0.953125
vt 0.062500 1.000000
vt 0.062500 0.953125
vt 0.250000 0.343750
vt 0.062500 0.343750
vt 0.843750 0.375000
vt 0.468750 0.390625
vt 0.468750 0.375000
vt 0.437500 0.937500
vt 0.000000 0.703125
vt 0.437500 0.703125
vt 0.375000 0.250000
vt 0.093750 0.078125
vt 0.000000 0.078125
vt 0.343750 0.046875
vt 0.000000 0.218750
vt 0.093750 0.171875
vt 0.812500 0.203125
vt 0.437500 0.015625
vt 0.437500 0.203125
vt 0.468750 0.031250
vt 0.312500 0.218750
vt 0.375000 0.343750
vt 0.562500 0.250000
vt 0.625000 0.218750
vt 0.812500 0.203125
vt 0.437500 0.218750
vt 0.625000 0.218750
vt 0.625000 0.359375
vt 0.656250 0.234375
vt 0.906250 0.359375
vt 0.625000 0.375000
vt 0.437500 0.625000
vt 0.000000 0.625000
vt 0.000000 0.390625
vt 0.343750 0.625000
vt 0.343750 0.640625
vt 0.375000 0.640625
vt 0.375000 0.687500
vt 0.062500 0.250000
vt 0.843750 0.703125
vt 0.468750 0.703125
vt 0.343750 0.953125
vt 0.250000 0.343750
vt 0.875000 0.625000
vt 0.406250 0.375000
vt 0.781250 0.640625
vt 0.406250 0.703125
vt 0.562500 0.687500
vt 0.500000 0.640625
vt 0.500000 0.687500
vt 0.875000 0.703125
vt 0.875000 0.937500
vt 0.781250 0.953125
vt 0.531250 0.953125
vt 0.812500 0.953125
vt 0.812500 1.000000
vt -0.000000 0.250000
vt 0.000000 0.343750
vt 0.375000 1.000000
vt 0.843750 0.390625
vt 0.000000 0.937500
vn 0.0000 1.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
usemtl pot
s off
f 30/1/1 19/2/1 46/3/1
f 42/4/1 14/5/1 15/6/1
f 10/7/1 27/8/1 44/9/1
f 27/10/2 51/11/2 52/12/2
f 36/13/3 9/14/3 13/15/3
f 31/16/1 7/17/1 22/18/1
f 32/19/3 8/20/3 1/21/3
f 34/22/3 24/23/3 23/24/3
f 17/25/3 41/26/3 11/27/3
f 29/28/3 39/29/3 38/30/3
f 10/31/2 49/32/2 51/11/2
f 36/33/2 52/12/2 50/34/2
f 9/35/2 50/34/2 49/32/2
f 88/36/4 54/37/4 55/38/4
f 93/39/4 57/40/4 56/41/4
f 59/42/4 82/43/4 92/44/4
f 76/45/4 101/46/4 104/47/4
f 87/48/5 78/49/5 79/50/5
f 99/51/6 70/52/6 98/53/6
f 84/54/6 75/55/6 103/56/6
f 61/57/2 67/58/2 54/37/2
f 87/59/4 65/60/4 77/61/4
f 98/62/2 69/63/2 68/64/2
f 79/65/6 66/66/6 60/67/6
f 75/68/2 71/69/2 76/70/2
f 63/71/2 74/72/2 102/73/2
f 81/74/5 91/75/5 89/76/5
f 94/77/5 99/78/5 57/79/5
f 86/80/5 96/81/5 83/82/5
f 84/83/5 85/84/5 101/85/5
f 96/86/6 74/87/6 63/88/6
f 84/83/1 71/89/1 64/90/1
f 60/91/2 65/92/2 53/93/2
f 108/94/6 105/95/6 106/96/6
f 30/1/1 47/97/1 19/2/1
f 4/98/1 3/99/1 15/6/1
f 3/99/1 42/4/1 15/6/1
f 43/100/1 15/6/1 14/5/1
f 45/101/1 3/99/1 5/102/1
f 3/99/1 4/98/1 5/102/1
f 43/100/1 14/5/1 10/7/1
f 45/101/1 5/102/1 44/9/1
f 44/9/1 43/100/1 10/7/1
f 27/8/1 45/101/1 44/9/1
f 27/10/2 10/31/2 51/11/2
f 24/23/3 34/22/3 35/103/3
f 34/22/3 36/13/3 35/103/3
f 2/104/3 33/105/3 12/106/3
f 33/105/3 23/24/3 12/106/3
f 2/104/3 12/106/3 13/15/3
f 13/15/3 35/103/3 36/13/3
f 9/14/3 2/104/3 13/15/3
f 7/17/1 18/107/1 47/97/1
f 18/107/1 19/2/1 47/97/1
f 47/97/1 21/108/1 7/17/1
f 30/1/1 46/3/1 48/109/1
f 46/3/1 20/110/1 48/109/1
f 22/18/1 48/109/1 20/110/1
f 7/17/1 21/108/1 22/18/1
f 22/18/1 20/110/1 31/16/1
f 32/19/3 25/111/3 8/20/3
f 33/105/3 26/112/3 23/24/3
f 26/112/3 34/22/3 23/24/3
f 6/113/3 37/114/3 16/115/3
f 37/114/3 38/30/3 16/115/3
f 39/29/3 29/28/3 40/116/3
f 29/28/3 41/26/3 40/116/3
f 11/27/3 6/113/3 16/115/3
f 17/25/3 40/116/3 41/26/3
f 11/27/3 16/115/3 17/25/3
f 37/114/3 28/117/3 38/30/3
f 28/117/3 29/28/3 38/30/3
f 10/31/2 9/35/2 49/32/2
f 36/33/2 27/10/2 52/12/2
f 9/35/2 36/33/2 50/34/2
f 97/118/4 55/38/4 54/37/4
f 55/38/4 100/119/4 88/36/4
f 100/119/4 80/120/4 88/36/4
f 68/121/4 69/122/4 56/41/4
f 69/122/4 93/39/4 56/41/4
f 58/123/4 72/124/4 92/44/4
f 72/124/4 59/42/4 92/44/4
f 76/45/4 71/125/4 101/46/4
f 77/126/5 78/49/5 87/48/5
f 78/49/5 90/127/5 79/50/5
f 99/51/6 95/128/6 70/52/6
f 84/54/6 64/129/6 75/55/6
f 62/130/2 67/58/2 61/57/2
f 67/58/2 97/118/2 54/37/2
f 87/59/4 53/131/4 65/60/4
f 98/62/2 70/132/2 69/63/2
f 79/65/6 90/133/6 66/66/6
f 75/68/2 64/129/2 71/69/2
f 102/73/2 73/134/2 58/135/2
f 73/134/2 72/136/2 58/135/2
f 102/73/2 58/135/2 63/71/2
f 89/76/5 80/137/5 100/138/5
f 100/138/5 81/74/5 89/76/5
f 57/79/5 93/139/5 94/77/5
f 94/77/5 95/140/5 99/78/5
f 82/141/5 59/142/5 83/82/5
f 59/142/5 86/80/5 83/82/5
f 103/143/5 85/84/5 84/83/5
f 85/84/5 104/144/5 101/85/5
f 96/86/6 86/145/6 74/87/6
f 84/83/1 101/46/1 71/89/1
f 60/91/2 66/146/2 65/92/2
f 108/94/6 107/147/6 105/95/6

View File

@ -0,0 +1,235 @@
# Blender v2.83.20 OBJ File: 'everness_lotus_flower.blend'
# www.blender.org
mtllib everness_lotus_flower.mtl
o Cube
v -0.308107 -0.055472 -0.746216
v -0.009900 -0.499000 -0.342751
v 0.655918 0.011755 -0.265300
v -0.732371 -0.055472 -0.321952
v -0.328906 -0.499000 -0.023745
v -0.308107 -0.055472 0.698725
v 0.231654 0.011755 -0.689564
v 0.288417 -0.055942 0.698836
v 0.712681 -0.055942 0.274572
v -0.732371 -0.055472 0.274461
v -0.486053 -0.100909 -0.211530
v -0.160819 -0.498639 -0.160819
v 0.211530 -0.100909 -0.486054
v 0.160819 -0.498639 -0.160819
v -0.486053 -0.100909 0.211530
v -0.160819 -0.498639 0.160819
v 0.211530 -0.100909 0.486053
v 0.160819 -0.498639 0.160819
v -0.211530 -0.100909 -0.486054
v 0.486054 -0.100909 0.211530
v 0.486054 -0.100909 -0.211530
v -0.211530 -0.100909 0.486053
v 0.160592 -0.498186 0.160592
v 0.160592 -0.177003 0.160592
v -0.160592 -0.498186 0.160592
v -0.160592 -0.177003 0.160592
v 0.160592 -0.498186 -0.160592
v 0.160592 -0.177003 -0.160592
v -0.160592 -0.498186 -0.160592
v -0.160592 -0.177003 -0.160592
v 0.309302 -0.499453 -0.023720
v -0.009875 -0.499453 0.295457
v 0.000000 -0.330263 0.355694
v 0.000000 0.589835 0.355694
v -0.355694 -0.330263 -0.000000
v -0.355694 0.589835 -0.000000
v 0.355694 -0.330263 -0.000000
v 0.355694 0.589835 -0.000000
v 0.000000 -0.330263 -0.355694
v 0.000000 0.589835 -0.355694
v 0.500438 -0.055472 -0.534084
v 0.149602 -0.499000 -0.183248
v 0.548643 -0.154723 -0.000000
v 0.160819 -0.498639 -0.000000
v 0.000000 -0.154723 -0.548643
v 0.000000 -0.498639 -0.160819
v -0.160819 -0.498639 -0.000000
v -0.548642 -0.154723 -0.000000
v 0.000000 -0.498639 0.160819
v 0.000000 -0.154723 0.548642
v -0.169403 -0.499000 0.135758
v -0.567776 -0.135591 0.534130
v -0.169403 -0.499000 -0.183248
v -0.567776 -0.135591 -0.581621
v 0.548086 -0.136060 0.534241
v 0.150919 -0.498639 0.137074
vt 0.500000 0.750000
vt -0.000000 0.500000
vt 0.000000 0.750000
vt 0.500000 0.750000
vt -0.000000 0.500000
vt 0.000000 0.750000
vt 0.000000 0.250000
vt 0.500000 0.250000
vt 0.250000 0.000000
vt 0.500000 0.750000
vt 0.000000 0.500000
vt 0.000000 0.750000
vt 0.000000 1.000000
vt 0.875000 0.812500
vt 0.500000 0.625000
vt 0.500000 0.812500
vt 0.875000 0.812500
vt 0.500000 0.625000
vt 0.500000 0.812500
vt 0.875000 0.625000
vt 0.500000 0.250000
vt 0.875000 0.250000
vt 0.875000 0.625000
vt 0.500000 0.250000
vt 0.875000 0.250000
vt 0.875000 0.625000
vt 0.500000 0.250000
vt 0.875000 0.250000
vt 0.875000 0.625000
vt 0.500000 0.250000
vt 0.875000 0.250000
vt 0.500000 0.250000
vt 0.875000 0.250000
vt 0.000000 1.000000
vt 0.875000 0.812500
vt 0.500000 1.000000
vt 0.875000 1.000000
vt 0.500000 0.625000
vt 0.500000 0.812500
vt 0.500000 1.000000
vt 0.875000 1.000000
vt 0.875000 0.812500
vt 0.500000 0.625000
vt 0.500000 0.812500
vt 0.500000 1.000000
vt 0.875000 1.000000
vt 0.500000 1.000000
vt 0.875000 1.000000
vt -0.000000 1.000000
vt 0.500000 1.000000
vt 0.000000 1.000000
vt 0.500000 0.750000
vt 0.000000 0.750000
vt 0.000000 0.500000
vt 0.500000 0.500000
vt 0.500000 0.500000
vt -0.000000 0.000000
vt 0.500000 0.500000
vt 0.500000 0.000000
vt 0.500000 0.500000
vt 0.500000 1.000000
vt 0.875000 0.625000
vt 0.875000 0.625000
vt 0.500000 0.625000
vt 0.500000 0.625000
vt 0.500000 0.625000
vt 0.500000 0.625000
vt 0.500000 1.000000
vt 0.875000 0.625000
vt 0.875000 0.625000
vt 0.500000 1.000000
vt 0.500000 0.500000
vt 0.500000 0.000000
vt 0.500000 1.000000
vt 0.250000 1.000000
vt 0.250000 -0.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.750000 1.000000
vt 0.750000 0.000000
vn -0.3842 0.8402 -0.3827
vn 0.3847 0.8403 -0.3819
vn 0.0000 1.0000 0.0000
vn -0.4713 0.7455 0.4713
vn 0.3833 0.8403 -0.3833
vn 0.0000 0.7482 0.6635
vn 0.6635 0.7482 -0.0000
vn 0.0000 0.0000 1.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn -0.4699 0.7455 0.4726
vn -0.6979 0.6171 -0.3635
vn -0.6635 0.7482 -0.0000
vn 0.6979 0.6171 0.3635
vn -0.0000 0.7482 -0.6635
vn 0.3635 0.6171 -0.6979
vn -0.3635 0.6171 0.6979
vn -0.1925 0.7280 -0.6580
vn 0.3833 0.8403 0.3833
vn -0.6580 0.7280 -0.1925
vn 0.1928 0.7276 -0.6584
vn 0.0014 1.0000 0.0014
vn -0.2680 0.6247 0.7334
vn 0.6580 0.7280 -0.1925
vn 0.3635 0.6171 0.6979
vn 0.6979 0.6171 -0.3635
vn -0.7337 0.6243 0.2683
vn -0.6979 0.6171 0.3635
vn -0.3635 0.6171 -0.6979
vn -0.3827 0.8402 -0.3842
vn 0.1925 0.7280 0.6580
vn 0.6580 0.7280 0.1925
vn -0.7071 0.0000 0.7071
vn -0.7071 0.0000 -0.7071
vn 0.7071 0.0000 -0.7071
vn 0.7071 0.0000 0.7071
g Cube_Cube_lotus
usemtl lotus
s off
f 55/1/1 31/2/1 56/3/1
f 52/4/2 32/5/2 51/6/2
f 51/7/3 42/8/3 53/9/3
f 41/10/4 2/11/4 42/12/4
f 5/13/5 52/4/5 51/6/5
f 45/14/6 12/15/6 46/16/6
f 48/17/7 16/18/7 47/19/7
f 24/20/8 25/21/8 23/22/8
f 26/23/9 29/24/9 25/25/9
f 30/26/10 27/27/10 29/28/10
f 28/29/11 23/30/11 27/31/11
f 26/23/3 28/32/3 30/33/3
f 31/34/12 41/10/12 42/12/12
f 43/35/13 18/36/13 20/37/13
f 43/35/14 14/38/14 44/39/14
f 48/17/15 12/40/15 11/41/15
f 50/42/16 18/43/16 49/44/16
f 50/42/17 16/45/17 22/46/17
f 45/14/18 14/47/18 13/48/18
f 55/1/19 32/49/19 8/50/19
f 2/51/20 54/52/20 53/53/20
f 54/52/20 5/54/20 53/53/20
f 55/1/21 9/55/21 31/2/21
f 52/4/22 6/56/22 32/5/22
f 53/9/3 5/57/3 51/7/3
f 51/7/23 32/5/23 31/58/23
f 42/8/3 2/59/3 53/9/3
f 51/7/23 31/58/23 42/8/23
f 41/10/24 7/60/24 2/11/24
f 5/13/25 10/61/25 52/4/25
f 45/14/26 19/62/26 12/15/26
f 48/17/27 15/63/27 16/18/27
f 24/20/8 26/64/8 25/21/8
f 26/23/9 30/65/9 29/24/9
f 30/26/10 28/66/10 27/27/10
f 28/29/11 24/67/11 23/30/11
f 26/23/3 24/67/3 28/32/3
f 31/34/28 3/68/28 41/10/28
f 43/35/14 44/39/14 18/36/14
f 43/35/29 21/69/29 14/38/29
f 48/17/7 47/19/7 12/40/7
f 50/42/30 17/70/30 18/43/30
f 50/42/16 49/44/16 16/45/16
f 45/14/6 46/16/6 14/47/6
f 55/1/31 56/3/31 32/49/31
f 2/51/32 1/71/32 54/52/32
f 54/52/33 4/72/33 5/54/33
g Cube_Cube_flies
usemtl flies
f 33/73/34 34/74/34 36/75/34 35/76/34
f 35/76/35 36/75/35 40/77/35 39/78/35
f 39/79/36 40/80/36 38/81/36 37/82/36
f 37/82/37 38/81/37 34/74/37 33/73/37

1051
nodes.lua

File diff suppressed because it is too large Load Diff

View File

@ -690,13 +690,7 @@ local skybox_defs = {
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',
-- },
}
},
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 590 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB