diff --git a/mapgen_coral_forest_deep_ocean.lua b/mapgen_coral_forest_deep_ocean.lua new file mode 100644 index 0000000..b2b530a --- /dev/null +++ b/mapgen_coral_forest_deep_ocean.lua @@ -0,0 +1,412 @@ +--[[ + Everness. Never ending discovery in Everness mapgen. + Copyright (C) 2023 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. + + 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 +--]] + +-- +-- Register biomes +-- + +local y_max = Everness.settings.biomes.everness_coral_forest_deep_ocean.y_max +local y_min = Everness.settings.biomes.everness_coral_forest_deep_ocean.y_min + +-- Coral Forest Ocean + +minetest.register_biome({ + name = 'everness_coral_forest_deep_ocean', + node_top = 'everness:coral_forest_deep_ocean_sand', + depth_top = 1, + node_filler = 'everness:coral_forest_deep_ocean_sand', + depth_filler = 3, + node_riverbed = 'everness:coral_forest_deep_ocean_sand', + depth_riverbed = 2, + node_cave_liquid = 'default:water_source', + node_dungeon = 'everness:coral_deep_ocean_sandstone_block', + node_dungeon_alt = 'everness:coral_deep_ocean_sandstone_brick', + node_dungeon_stair = 'stairs:stair_coral_deep_ocean_sandstone_block', + y_max = y_max, + y_min = y_min, + heat_point = 60, + humidity_point = 50, +}) + +-- Blob ore. +-- These before scatter ores to avoid other ores in blobs. + +-- Coral Desert Stone + +minetest.register_ore({ + ore_type = 'blob', + ore = 'everness:coral_desert_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 = -316, + octaves = 1, + persist = 0.0 + }, + biomes = { 'everness_coral_forest_ocean' } +}) + +-- +-- Register decorations +-- + +-- Coral reef + +minetest.register_decoration({ + name = 'everness:coral_forest_deep_ocean_coral_reef_pink', + deco_type = 'schematic', + place_on = { 'everness:coral_forest_deep_ocean_sand' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, + sidelen = 16, + noise_params = { + offset = -0.004, + scale = 0.01, + spread = { x = 100, y = 100, z = 100 }, + seed = 137, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_coral_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_coral_forest_deep_ocean_coral_reef_pink.mts', + flags = 'place_center_x, place_center_z, force_placement', +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_deep_ocean_coral_reef_cyan', + deco_type = 'schematic', + place_on = { 'everness:coral_forest_deep_ocean_sand' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, + sidelen = 16, + noise_params = { + offset = -0.004, + scale = 0.01, + spread = { x = 100, y = 100, z = 100 }, + seed = 137, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_coral_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_coral_forest_deep_ocean_coral_reef_cyan.mts', + flags = 'place_center_x, place_center_z, force_placement', +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_deep_ocean_coral_reef_green', + deco_type = 'schematic', + place_on = { 'everness:coral_forest_deep_ocean_sand' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, + sidelen = 16, + noise_params = { + offset = -0.004, + scale = 0.01, + spread = { x = 100, y = 100, z = 100 }, + seed = 137, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_coral_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_coral_forest_deep_ocean_coral_reef_green.mts', + flags = 'place_center_x, place_center_z, force_placement', +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_deep_ocean_coral_reef_red', + deco_type = 'schematic', + place_on = { 'everness:coral_forest_deep_ocean_sand' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, + sidelen = 16, + noise_params = { + offset = -0.004, + scale = 0.01, + spread = { x = 100, y = 100, z = 100 }, + seed = 137, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_coral_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_coral_forest_deep_ocean_coral_reef_red.mts', + flags = 'place_center_x, place_center_z, force_placement', +}) + +minetest.register_decoration({ + name = 'everness:everness_coral_forest_deep_ocean_pink', + deco_type = 'schematic', + place_on = { 'everness:coral_forest_deep_ocean_sand' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, + sidelen = 16, + fill_ratio = 0.002, + biomes = { 'everness_coral_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_coral_forest_deep_ocean_coral_pink.mts', + flags = 'place_center_x, place_center_z, force_placement', +}) + +minetest.register_decoration({ + name = 'everness:everness_coral_forest_deep_ocean_cyan', + deco_type = 'schematic', + place_on = { 'everness:coral_forest_deep_ocean_sand' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, + sidelen = 16, + fill_ratio = 0.002, + biomes = { 'everness_coral_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_coral_forest_deep_ocean_coral_cyan.mts', + flags = 'place_center_x, place_center_z, force_placement', +}) + +minetest.register_decoration({ + name = 'everness:everness_coral_forest_deep_ocean_green', + deco_type = 'schematic', + place_on = { 'everness:coral_forest_deep_ocean_sand' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, + sidelen = 16, + fill_ratio = 0.002, + biomes = { 'everness_coral_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_coral_forest_deep_ocean_coral_green.mts', + flags = 'place_center_x, place_center_z, force_placement', +}) + +minetest.register_decoration({ + name = 'everness:everness_coral_forest_deep_ocean_red', + deco_type = 'schematic', + place_on = { 'everness:coral_forest_deep_ocean_sand' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, + sidelen = 16, + fill_ratio = 0.002, + biomes = { 'everness_coral_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_coral_forest_deep_ocean_coral_red.mts', + flags = 'place_center_x, place_center_z, force_placement', +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_deep_ocean_mud', + deco_type = 'simple', + place_on = { 'everness:coral_forest_deep_ocean_sand' }, + place_offset_y = -1, + sidelen = 4, + fill_ratio = 0.002, + biomes = { 'everness_coral_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + flags = 'force_placement', + decoration = { 'everness:coral_deep_ocean_mud' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_deep_ocean_plants_1', + deco_type = 'simple', + place_on = { 'everness:coral_forest_deep_ocean_sand' }, + place_offset_y = -1, + sidelen = 4, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_coral_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + flags = 'force_placement', + decoration = { 'everness:coral_forest_deep_ocean_coral_plant_1' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_deep_ocean_plants_2', + deco_type = 'simple', + place_on = { 'everness:coral_forest_deep_ocean_sand' }, + place_offset_y = -1, + sidelen = 4, + noise_params = { + offset = -0.02, + scale = 0.04, + spread = { x = 200, y = 200, z = 200 }, + seed = 436, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_coral_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + flags = 'force_placement', + decoration = { 'everness:coral_forest_deep_ocean_coral_plant_2' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_deep_ocean_plants_3', + deco_type = 'simple', + place_on = { 'everness:coral_forest_deep_ocean_sand' }, + place_offset_y = -1, + sidelen = 4, + noise_params = { + offset = -0.02, + scale = 0.04, + spread = { x = 200, y = 200, z = 200 }, + seed = 19822, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_coral_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + flags = 'force_placement', + decoration = { 'everness:coral_forest_deep_ocean_coral_plant_3' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, +}) + +-- +-- On Generated +-- + +local c_water_source = minetest.get_content_id('default:water_source') +local c_coral_forest_deep_ocean_sand = minetest.get_content_id('everness:coral_forest_deep_ocean_sand') + +-- Localize data buffer table outside the loop, to be re-used for all +-- mapchunks, therefore minimising memory use. +local data = {} +local chance = 25 +local rotations = { '0', '90', '180', '270' } + +-- size = { x = 11, y = 17, z = 12 } +local house_volume = 11 * 17 * 12 +local house_schem = minetest.get_modpath('everness') .. '/schematics/everness_coral_forest_deep_ocean_house.mts' + +minetest.register_on_generated(function(minp, maxp, blockseed) + local rand = PcgRandom(blockseed) + local vm, emin, emax = minetest.get_mapgen_object('voxelmanip') + 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 y_min < maxp.y and maxp.y < y_max then + local already_placed = false + -- Process the content IDs in 'data'. + -- The most useful order is a ZYX loop because: + -- 1. This matches the order of the 3D noise flat array. + -- 2. This allows a simple +1 incrementing of the voxelmanip index along x + -- rows. + for z = minp.z, maxp.z do + if already_placed then + break + end + + for y = minp.y, maxp.y do + if already_placed then + break + end + + for x = minp.x, maxp.x do + if already_placed then + break + end + + -- Voxelmanip index for the flat array of content IDs. + -- Initialise to first node in this x row. + local vi = area:index(x, y, z) + + if data[vi + area.ystride] == c_water_source and data[vi] == c_coral_forest_deep_ocean_sand then + local rotation = rotations[rand:next(1, #rotations)] + local s_pos = area:position(vi) + local biome_data = minetest.get_biome_data(s_pos) + + 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 biome_name == 'everness_coral_forest_deep_ocean' and rand:next(0, 100) < chance then + -- + -- Coral Forest Deep Ocean House + -- + + local schem_pos = vector.new(s_pos.x, s_pos.y, s_pos.z) + local water_source_positions = minetest.find_nodes_in_area( + vector.new(s_pos.x - 5, s_pos.y, s_pos.z - 6), + vector.new(s_pos.x + 5, s_pos.y + 17, s_pos.z + 6), + { 'default:water_source' } + ) + + if #water_source_positions > (house_volume - house_volume / 3) then + minetest.place_schematic_on_vmanip( + vm, + schem_pos, + house_schem, + rotation, + nil, + true, + 'place_center_x, place_center_z' + ) + + minetest.log('action', '[Everness] Coral Forest Deep Ocean House was placed at ' .. schem_pos:to_string()) + + already_placed = true + end + end + end + end + end + end + + vm:write_to_map(true) + minetest.fix_light(minp, maxp) + end +end) diff --git a/mapgen_crystal_forest_deep_ocean.lua b/mapgen_crystal_forest_deep_ocean.lua new file mode 100644 index 0000000..0d60369 --- /dev/null +++ b/mapgen_crystal_forest_deep_ocean.lua @@ -0,0 +1,279 @@ +--[[ + Everness. Never ending discovery in Everness mapgen. + Copyright (C) 2023 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. + + 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 +--]] + +-- +-- Register biomes +-- + +local y_max = Everness.settings.biomes.everness_crystal_forest_deep_ocean.y_max +local y_min = Everness.settings.biomes.everness_crystal_forest_deep_ocean.y_min + +-- Coral Forest Ocean + +minetest.register_biome({ + name = 'everness_crystal_forest_deep_ocean', + node_top = 'everness:crystal_forest_deep_ocean_sand', + depth_top = 1, + node_filler = 'everness:crystal_forest_deep_ocean_sand', + depth_filler = 3, + node_riverbed = 'everness:crystal_forest_deep_ocean_sand', + depth_riverbed = 2, + node_cave_liquid = 'default:water_source', + node_dungeon = 'everness:crystal_forest_deep_ocean_sandstone_block', + node_dungeon_alt = 'everness:crystal_forest_deep_ocean_sandstone_brick', + node_dungeon_stair = 'stairs:stair_crystal_forest_deep_ocean_sandstone_block', + y_max = y_max, + y_min = y_min, + heat_point = 35, + humidity_point = 50, +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:crystal_forest_deep_ocean_coral_1', + deco_type = 'schematic', + place_on = { 'everness:crystal_forest_deep_ocean_sand' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, + sidelen = 16, + fill_ratio = 0.003, + biomes = { 'everness_crystal_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_forest_deep_ocean_coral_1.mts', + flags = 'place_center_x, place_center_z, force_placement', +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_deep_ocean_coral_2', + deco_type = 'schematic', + place_on = { 'everness:crystal_forest_deep_ocean_sand' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, + sidelen = 16, + fill_ratio = 0.003, + biomes = { 'everness_crystal_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_forest_deep_ocean_coral_2.mts', + flags = 'place_center_x, place_center_z, force_placement', +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_deep_ocean_coral_3', + deco_type = 'schematic', + place_on = { 'everness:crystal_forest_deep_ocean_sand' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, + sidelen = 16, + fill_ratio = 0.003, + biomes = { 'everness_crystal_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_forest_deep_ocean_coral_3.mts', + flags = 'place_center_x, place_center_z, force_placement', +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_deep_ocean_sand_with_crack', + deco_type = 'simple', + place_on = { 'everness:crystal_forest_deep_ocean_sand' }, + place_offset_y = -1, + sidelen = 4, + fill_ratio = 0.002, + biomes = { 'everness_crystal_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + flags = 'force_placement', + decoration = { 'everness:crystal_forest_deep_ocean_sand_with_crack' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_deep_ocean_coral_plant_1', + deco_type = 'simple', + place_on = { 'everness:crystal_forest_deep_ocean_sand' }, + place_offset_y = -1, + sidelen = 4, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_crystal_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + flags = 'force_placement', + decoration = { 'everness:crystal_forest_deep_ocean_coral_plant_1' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_deep_ocean_coral_plant_2', + deco_type = 'simple', + place_on = { 'everness:crystal_forest_deep_ocean_sand' }, + place_offset_y = -1, + sidelen = 4, + noise_params = { + offset = -0.02, + scale = 0.04, + spread = { x = 200, y = 200, z = 200 }, + seed = 436, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_crystal_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + flags = 'force_placement', + decoration = { 'everness:crystal_forest_deep_ocean_coral_plant_2' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_deep_ocean_coral_plant_3', + deco_type = 'simple', + place_on = { 'everness:crystal_forest_deep_ocean_sand' }, + place_offset_y = -1, + sidelen = 4, + noise_params = { + offset = -0.02, + scale = 0.04, + spread = { x = 200, y = 200, z = 200 }, + seed = 19822, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_crystal_forest_deep_ocean' }, + y_max = y_max, + y_min = y_min, + flags = 'force_placement', + decoration = { 'everness:crystal_forest_deep_ocean_coral_plant_3' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, +}) + +-- +-- On Generated +-- + +local c_water_source = minetest.get_content_id('default:water_source') +local c_crystal_forest_deep_ocean_sand = minetest.get_content_id('everness:crystal_forest_deep_ocean_sand') + +-- Localize data buffer table outside the loop, to be re-used for all +-- mapchunks, therefore minimising memory use. +local data = {} +local chance = 25 +local ruins_size = { x = 14, y = 12, z = 9 } +local ruins_volume = ruins_size.x * ruins_size.z * ruins_size.y +local ruins_schem = minetest.get_modpath('everness') .. '/schematics/everness_crystal_forest_deep_ocean_ruins.mts' + +minetest.register_on_generated(function(minp, maxp, blockseed) + local rand = PcgRandom(blockseed) + local vm, emin, emax = minetest.get_mapgen_object('voxelmanip') + 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 y_min < maxp.y and maxp.y < y_max then + local already_placed = false + -- Process the content IDs in 'data'. + -- The most useful order is a ZYX loop because: + -- 1. This matches the order of the 3D noise flat array. + -- 2. This allows a simple +1 incrementing of the voxelmanip index along x + -- rows. + for z = minp.z, maxp.z do + if already_placed then + break + end + + for y = minp.y, maxp.y do + if already_placed then + break + end + + for x = minp.x, maxp.x do + if already_placed then + break + end + + -- Voxelmanip index for the flat array of content IDs. + -- Initialise to first node in this x row. + local vi = area:index(x, y, z) + + if data[vi + area.ystride] == c_water_source and data[vi] == c_crystal_forest_deep_ocean_sand then + local s_pos = area:position(vi) + local biome_data = minetest.get_biome_data(s_pos) + + 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 biome_name == 'everness_crystal_forest_deep_ocean' and rand:next(0, 100) < chance then + -- + -- Crystal Forest Deep Ocean Ruins + -- + + local schem_pos = vector.new(s_pos.x, s_pos.y, s_pos.z) + local water_source_positions = minetest.find_nodes_in_area( + vector.new(s_pos.x - (ruins_size.x / 2), s_pos.y, s_pos.z - (ruins_size.z / 2)), + vector.new(s_pos.x + (ruins_size.x / 2), s_pos.y + ruins_size.y, s_pos.z + (ruins_size.z / 2)), + { 'default:water_source' } + ) + + if #water_source_positions > (ruins_volume - ruins_volume / 3) then + minetest.place_schematic_on_vmanip( + vm, + schem_pos, + ruins_schem, + 'random', + nil, + true, + 'place_center_x, place_center_z' + ) + + minetest.log('action', '[Everness] Crystal Forest Deep Ocean Ruins were placed at ' .. schem_pos:to_string()) + + already_placed = true + end + end + end + end + end + end + + vm:write_to_map(true) + minetest.fix_light(minp, maxp) + end +end) diff --git a/mapgen_cursed_lands_deep_ocean.lua b/mapgen_cursed_lands_deep_ocean.lua new file mode 100644 index 0000000..858e8d6 --- /dev/null +++ b/mapgen_cursed_lands_deep_ocean.lua @@ -0,0 +1,280 @@ +--[[ + Everness. Never ending discovery in Everness mapgen. + Copyright (C) 2023 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. + + 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 +--]] + +-- +-- Register biomes +-- + +local y_max = Everness.settings.biomes.everness_cursed_lands_deep_ocean.y_max +local y_min = Everness.settings.biomes.everness_cursed_lands_deep_ocean.y_min + +-- Cursed Lands Deep Ocean + +minetest.register_biome({ + name = 'everness_cursed_lands_deep_ocean', + node_top = 'everness:cursed_lands_deep_ocean_sand', + depth_top = 1, + node_filler = 'everness:cursed_lands_deep_ocean_sand', + depth_filler = 3, + node_riverbed = 'everness:cursed_lands_deep_ocean_sand', + depth_riverbed = 2, + node_cave_liquid = 'default:water_source', + node_dungeon = 'everness:cursed_lands_deep_ocean_sandstone_block', + node_dungeon_alt = 'everness:cursed_lands_deep_ocean_sandstone_brick', + node_dungeon_stair = 'stairs:stair_cursed_lands_deep_ocean_sandstone_block', + y_max = y_max, + y_min = y_min, + heat_point = 45, + humidity_point = 85, +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:forsaken_lands_deep_ocean_coral_alcyonacea', + deco_type = 'schematic', + place_on = { 'everness:cursed_lands_deep_ocean_sand' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, + sidelen = 16, + fill_ratio = 0.002, + biomes = { 'everness_cursed_lands_deep_ocean' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_forsaken_lands_deep_ocean_coral_alcyonacea.mts', + flags = 'place_center_x, place_center_z, force_placement', +}) + +minetest.register_decoration({ + name = 'everness:forsaken_lands_deep_ocean_coral_ostracod', + deco_type = 'schematic', + place_on = { 'everness:cursed_lands_deep_ocean_sand' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, + sidelen = 16, + fill_ratio = 0.002, + biomes = { 'everness_cursed_lands_deep_ocean' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_forsaken_lands_deep_ocean_coral_ostracod.mts', + flags = 'place_center_x, place_center_z, force_placement', +}) + +minetest.register_decoration({ + name = 'everness:forsaken_lands_deep_ocean_coral_octocurse', + deco_type = 'schematic', + place_on = { 'everness:cursed_lands_deep_ocean_sand' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, + sidelen = 16, + fill_ratio = 0.002, + biomes = { 'everness_cursed_lands_deep_ocean' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_forsaken_lands_deep_ocean_coral_octocurse.mts', + flags = 'place_center_x, place_center_z, force_placement', +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_deep_ocean_mud', + deco_type = 'simple', + place_on = { 'everness:cursed_lands_deep_ocean_sand' }, + place_offset_y = -1, + sidelen = 4, + fill_ratio = 0.002, + biomes = { 'everness_cursed_lands_deep_ocean' }, + y_max = y_max, + y_min = y_min, + flags = 'force_placement', + decoration = { 'everness:cursed_lands_deep_ocean_sand_with_crack' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_deep_ocean_plants_1', + deco_type = 'simple', + place_on = { 'everness:cursed_lands_deep_ocean_sand' }, + place_offset_y = -1, + sidelen = 4, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_cursed_lands_deep_ocean' }, + y_max = y_max, + y_min = y_min, + flags = 'force_placement', + decoration = { 'everness:cursed_lands_deep_ocean_coral_plant_anemone' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_deep_ocean_plants_2', + deco_type = 'simple', + place_on = { 'everness:cursed_lands_deep_ocean_sand' }, + place_offset_y = -1, + sidelen = 4, + noise_params = { + offset = -0.02, + scale = 0.04, + spread = { x = 200, y = 200, z = 200 }, + seed = 436, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_cursed_lands_deep_ocean' }, + y_max = y_max, + y_min = y_min, + flags = 'force_placement', + decoration = { 'everness:cursed_lands_deep_ocean_coral_plant_darkilluma' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_deep_ocean_plants_3', + deco_type = 'simple', + place_on = { 'everness:cursed_lands_deep_ocean_sand' }, + place_offset_y = -1, + sidelen = 4, + noise_params = { + offset = -0.02, + scale = 0.04, + spread = { x = 200, y = 200, z = 200 }, + seed = 19822, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_cursed_lands_deep_ocean' }, + y_max = y_max, + y_min = y_min, + flags = 'force_placement', + decoration = { 'everness:cursed_lands_deep_ocean_coral_plant_demon' }, + spawn_by = 'default:water_source', + num_spawn_by = 8, +}) + +-- +-- On Generated +-- + +local c_water_source = minetest.get_content_id('default:water_source') +local c_cursed_lands_deep_ocean_sand = minetest.get_content_id('everness:cursed_lands_deep_ocean_sand') + +-- Localize data buffer table outside the loop, to be re-used for all +-- mapchunks, therefore minimising memory use. +local data = {} +local chance = 25 + +local skull_size = { x = 10, y = 11, z = 11 } +local skull_volume = skull_size.x * skull_size.z * skull_size.y +local skull_schem = minetest.get_modpath('everness') .. '/schematics/everness_cursed_lands_deep_ocean_skull.mts' + +minetest.register_on_generated(function(minp, maxp, blockseed) + local rand = PcgRandom(blockseed) + local vm, emin, emax = minetest.get_mapgen_object('voxelmanip') + 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 y_min < maxp.y and maxp.y < y_max then + local already_placed = false + -- Process the content IDs in 'data'. + -- The most useful order is a ZYX loop because: + -- 1. This matches the order of the 3D noise flat array. + -- 2. This allows a simple +1 incrementing of the voxelmanip index along x + -- rows. + for z = minp.z, maxp.z do + if already_placed then + break + end + + for y = minp.y, maxp.y do + if already_placed then + break + end + + for x = minp.x, maxp.x do + if already_placed then + break + end + + -- Voxelmanip index for the flat array of content IDs. + -- Initialise to first node in this x row. + local vi = area:index(x, y, z) + + if data[vi + area.ystride] == c_water_source and data[vi] == c_cursed_lands_deep_ocean_sand then + local s_pos = area:position(vi) + local biome_data = minetest.get_biome_data(s_pos) + + 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 biome_name == 'everness_cursed_lands_deep_ocean' and rand:next(0, 100) < chance then + -- + -- Skull + -- + + local schem_pos = vector.new(s_pos.x, s_pos.y, s_pos.z) + local water_source_positions = minetest.find_nodes_in_area( + vector.new(s_pos.x - 5, s_pos.y, s_pos.z - 5), + vector.new(s_pos.x + 5, s_pos.y + 11, s_pos.z + 5), + { 'default:water_source' } + ) + + if #water_source_positions > skull_volume / 3 then + minetest.place_schematic_on_vmanip( + vm, + schem_pos, + skull_schem, + 'random', + nil, + true, + 'place_center_x, place_center_z' + ) + + minetest.log('action', '[Everness] Cursed Lands Deep Ocean Skull was placed at ' .. schem_pos:to_string()) + + already_placed = true + end + end + end + end + end + end + + vm:write_to_map(true) + minetest.fix_light(minp, maxp) + end +end) diff --git a/schematics/everness_coral_forest_deep_ocean_coral_cyan.mts b/schematics/everness_coral_forest_deep_ocean_coral_cyan.mts new file mode 100644 index 0000000..a51d9fc Binary files /dev/null and b/schematics/everness_coral_forest_deep_ocean_coral_cyan.mts differ diff --git a/schematics/everness_coral_forest_deep_ocean_coral_green.mts b/schematics/everness_coral_forest_deep_ocean_coral_green.mts new file mode 100644 index 0000000..1fa53e9 Binary files /dev/null and b/schematics/everness_coral_forest_deep_ocean_coral_green.mts differ diff --git a/schematics/everness_coral_forest_deep_ocean_coral_pink.mts b/schematics/everness_coral_forest_deep_ocean_coral_pink.mts new file mode 100644 index 0000000..833635a Binary files /dev/null and b/schematics/everness_coral_forest_deep_ocean_coral_pink.mts differ diff --git a/schematics/everness_coral_forest_deep_ocean_coral_red.mts b/schematics/everness_coral_forest_deep_ocean_coral_red.mts new file mode 100644 index 0000000..967b949 Binary files /dev/null and b/schematics/everness_coral_forest_deep_ocean_coral_red.mts differ diff --git a/schematics/everness_coral_forest_deep_ocean_coral_reef_cyan.mts b/schematics/everness_coral_forest_deep_ocean_coral_reef_cyan.mts new file mode 100644 index 0000000..041d208 Binary files /dev/null and b/schematics/everness_coral_forest_deep_ocean_coral_reef_cyan.mts differ diff --git a/schematics/everness_coral_forest_deep_ocean_coral_reef_green.mts b/schematics/everness_coral_forest_deep_ocean_coral_reef_green.mts new file mode 100644 index 0000000..b4b20f8 Binary files /dev/null and b/schematics/everness_coral_forest_deep_ocean_coral_reef_green.mts differ diff --git a/schematics/everness_coral_forest_deep_ocean_coral_reef_pink.mts b/schematics/everness_coral_forest_deep_ocean_coral_reef_pink.mts new file mode 100644 index 0000000..513439f Binary files /dev/null and b/schematics/everness_coral_forest_deep_ocean_coral_reef_pink.mts differ diff --git a/schematics/everness_coral_forest_deep_ocean_coral_reef_red.mts b/schematics/everness_coral_forest_deep_ocean_coral_reef_red.mts new file mode 100644 index 0000000..af1a145 Binary files /dev/null and b/schematics/everness_coral_forest_deep_ocean_coral_reef_red.mts differ diff --git a/schematics/everness_coral_forest_deep_ocean_house.mts b/schematics/everness_coral_forest_deep_ocean_house.mts new file mode 100644 index 0000000..9364f64 Binary files /dev/null and b/schematics/everness_coral_forest_deep_ocean_house.mts differ diff --git a/schematics/everness_crystal_forest_deep_ocean_coral_1.mts b/schematics/everness_crystal_forest_deep_ocean_coral_1.mts new file mode 100644 index 0000000..67ae3cc Binary files /dev/null and b/schematics/everness_crystal_forest_deep_ocean_coral_1.mts differ diff --git a/schematics/everness_crystal_forest_deep_ocean_coral_2.mts b/schematics/everness_crystal_forest_deep_ocean_coral_2.mts new file mode 100644 index 0000000..a8491f6 Binary files /dev/null and b/schematics/everness_crystal_forest_deep_ocean_coral_2.mts differ diff --git a/schematics/everness_crystal_forest_deep_ocean_coral_3.mts b/schematics/everness_crystal_forest_deep_ocean_coral_3.mts new file mode 100644 index 0000000..5b23469 Binary files /dev/null and b/schematics/everness_crystal_forest_deep_ocean_coral_3.mts differ diff --git a/schematics/everness_crystal_forest_deep_ocean_ruins.mts b/schematics/everness_crystal_forest_deep_ocean_ruins.mts new file mode 100644 index 0000000..32b8e44 Binary files /dev/null and b/schematics/everness_crystal_forest_deep_ocean_ruins.mts differ diff --git a/schematics/everness_cursed_lands_deep_ocean_skull.mts b/schematics/everness_cursed_lands_deep_ocean_skull.mts new file mode 100644 index 0000000..f8e4201 Binary files /dev/null and b/schematics/everness_cursed_lands_deep_ocean_skull.mts differ diff --git a/schematics/everness_forsaken_lands_deep_ocean_coral_alcyonacea.mts b/schematics/everness_forsaken_lands_deep_ocean_coral_alcyonacea.mts new file mode 100644 index 0000000..ef300fb Binary files /dev/null and b/schematics/everness_forsaken_lands_deep_ocean_coral_alcyonacea.mts differ diff --git a/schematics/everness_forsaken_lands_deep_ocean_coral_octocurse.mts b/schematics/everness_forsaken_lands_deep_ocean_coral_octocurse.mts new file mode 100644 index 0000000..5188a62 Binary files /dev/null and b/schematics/everness_forsaken_lands_deep_ocean_coral_octocurse.mts differ diff --git a/schematics/everness_forsaken_lands_deep_ocean_coral_ostracod.mts b/schematics/everness_forsaken_lands_deep_ocean_coral_ostracod.mts new file mode 100644 index 0000000..37d36ee Binary files /dev/null and b/schematics/everness_forsaken_lands_deep_ocean_coral_ostracod.mts differ diff --git a/schematics/everness_frosted_icesheet_igloo.mts b/schematics/everness_frosted_icesheet_igloo.mts new file mode 100644 index 0000000..2f906fd Binary files /dev/null and b/schematics/everness_frosted_icesheet_igloo.mts differ diff --git a/sounds/everness_dirt_footstep.1.ogg b/sounds/everness_dirt_footstep.1.ogg new file mode 100644 index 0000000..86c0822 Binary files /dev/null and b/sounds/everness_dirt_footstep.1.ogg differ diff --git a/sounds/everness_dirt_footstep.2.ogg b/sounds/everness_dirt_footstep.2.ogg new file mode 100644 index 0000000..d505aa7 Binary files /dev/null and b/sounds/everness_dirt_footstep.2.ogg differ diff --git a/sounds/everness_dirt_footstep.3.ogg b/sounds/everness_dirt_footstep.3.ogg new file mode 100644 index 0000000..98d60c1 Binary files /dev/null and b/sounds/everness_dirt_footstep.3.ogg differ diff --git a/sounds/everness_dirt_footstep.4.ogg b/sounds/everness_dirt_footstep.4.ogg new file mode 100644 index 0000000..ec507f4 Binary files /dev/null and b/sounds/everness_dirt_footstep.4.ogg differ diff --git a/sounds/everness_dirt_hit.1.ogg b/sounds/everness_dirt_hit.1.ogg new file mode 100644 index 0000000..4ef4f29 Binary files /dev/null and b/sounds/everness_dirt_hit.1.ogg differ diff --git a/sounds/everness_dirt_hit.2.ogg b/sounds/everness_dirt_hit.2.ogg new file mode 100644 index 0000000..2ee8f6b Binary files /dev/null and b/sounds/everness_dirt_hit.2.ogg differ diff --git a/sounds/everness_dirt_hit.3.ogg b/sounds/everness_dirt_hit.3.ogg new file mode 100644 index 0000000..34fff6b Binary files /dev/null and b/sounds/everness_dirt_hit.3.ogg differ diff --git a/sounds/everness_grass_footstep.1.ogg b/sounds/everness_grass_footstep.1.ogg new file mode 100644 index 0000000..e38cbd3 Binary files /dev/null and b/sounds/everness_grass_footstep.1.ogg differ diff --git a/sounds/everness_grass_footstep.2.ogg b/sounds/everness_grass_footstep.2.ogg new file mode 100644 index 0000000..4a5f299 Binary files /dev/null and b/sounds/everness_grass_footstep.2.ogg differ diff --git a/sounds/everness_grass_footstep.3.ogg b/sounds/everness_grass_footstep.3.ogg new file mode 100644 index 0000000..d4ff286 Binary files /dev/null and b/sounds/everness_grass_footstep.3.ogg differ diff --git a/sounds/everness_grass_hit.1.ogg b/sounds/everness_grass_hit.1.ogg new file mode 100644 index 0000000..b26df59 Binary files /dev/null and b/sounds/everness_grass_hit.1.ogg differ diff --git a/sounds/everness_grass_hit.2.ogg b/sounds/everness_grass_hit.2.ogg new file mode 100644 index 0000000..31ffa28 Binary files /dev/null and b/sounds/everness_grass_hit.2.ogg differ diff --git a/sounds/everness_grass_hit.3.ogg b/sounds/everness_grass_hit.3.ogg new file mode 100644 index 0000000..d52bca1 Binary files /dev/null and b/sounds/everness_grass_hit.3.ogg differ diff --git a/sounds/everness_ice_footstep.1.ogg b/sounds/everness_ice_footstep.1.ogg new file mode 100644 index 0000000..5445c0b Binary files /dev/null and b/sounds/everness_ice_footstep.1.ogg differ diff --git a/sounds/everness_ice_footstep.2.ogg b/sounds/everness_ice_footstep.2.ogg new file mode 100644 index 0000000..d49fa7b Binary files /dev/null and b/sounds/everness_ice_footstep.2.ogg differ diff --git a/sounds/everness_ice_footstep.3.ogg b/sounds/everness_ice_footstep.3.ogg new file mode 100644 index 0000000..5c1feb9 Binary files /dev/null and b/sounds/everness_ice_footstep.3.ogg differ diff --git a/sounds/everness_ice_footstep.4.ogg b/sounds/everness_ice_footstep.4.ogg new file mode 100644 index 0000000..78994f5 Binary files /dev/null and b/sounds/everness_ice_footstep.4.ogg differ diff --git a/sounds/everness_ice_hit.1.ogg b/sounds/everness_ice_hit.1.ogg new file mode 100644 index 0000000..448328a Binary files /dev/null and b/sounds/everness_ice_hit.1.ogg differ diff --git a/sounds/everness_ice_hit.2.ogg b/sounds/everness_ice_hit.2.ogg new file mode 100644 index 0000000..97e6ad6 Binary files /dev/null and b/sounds/everness_ice_hit.2.ogg differ diff --git a/sounds/everness_ice_hit.3.ogg b/sounds/everness_ice_hit.3.ogg new file mode 100644 index 0000000..5416bd0 Binary files /dev/null and b/sounds/everness_ice_hit.3.ogg differ diff --git a/sounds/everness_ice_hit.4.ogg b/sounds/everness_ice_hit.4.ogg new file mode 100644 index 0000000..a57fdc6 Binary files /dev/null and b/sounds/everness_ice_hit.4.ogg differ diff --git a/sounds/everness_underwater_bubbles.1.ogg b/sounds/everness_underwater_bubbles.1.ogg new file mode 100644 index 0000000..dcb8abf Binary files /dev/null and b/sounds/everness_underwater_bubbles.1.ogg differ diff --git a/sounds/everness_underwater_bubbles.2.ogg b/sounds/everness_underwater_bubbles.2.ogg new file mode 100644 index 0000000..2801af9 Binary files /dev/null and b/sounds/everness_underwater_bubbles.2.ogg differ diff --git a/sounds/everness_underwater_bubbles.3.ogg b/sounds/everness_underwater_bubbles.3.ogg new file mode 100644 index 0000000..df494c3 Binary files /dev/null and b/sounds/everness_underwater_bubbles.3.ogg differ diff --git a/textures/everness_bubble.png b/textures/everness_bubble.png new file mode 100644 index 0000000..e937bd9 Binary files /dev/null and b/textures/everness_bubble.png differ diff --git a/textures/everness_coral_forest_deep_ocean_lantern_animated.png b/textures/everness_coral_forest_deep_ocean_lantern_animated.png new file mode 100644 index 0000000..f103b30 Binary files /dev/null and b/textures/everness_coral_forest_deep_ocean_lantern_animated.png differ diff --git a/textures/everness_crystal_forest_deep_ocean_coral_1.png b/textures/everness_crystal_forest_deep_ocean_coral_1.png new file mode 100644 index 0000000..00aae1d Binary files /dev/null and b/textures/everness_crystal_forest_deep_ocean_coral_1.png differ diff --git a/textures/everness_crystal_forest_deep_ocean_coral_2.png b/textures/everness_crystal_forest_deep_ocean_coral_2.png new file mode 100644 index 0000000..16fcba8 Binary files /dev/null and b/textures/everness_crystal_forest_deep_ocean_coral_2.png differ diff --git a/textures/everness_crystal_forest_deep_ocean_coral_3.png b/textures/everness_crystal_forest_deep_ocean_coral_3.png new file mode 100644 index 0000000..b3524fc Binary files /dev/null and b/textures/everness_crystal_forest_deep_ocean_coral_3.png differ diff --git a/textures/everness_crystal_forest_deep_ocean_coral_plant_1.png b/textures/everness_crystal_forest_deep_ocean_coral_plant_1.png new file mode 100644 index 0000000..de66c80 Binary files /dev/null and b/textures/everness_crystal_forest_deep_ocean_coral_plant_1.png differ diff --git a/textures/everness_crystal_forest_deep_ocean_coral_plant_2.png b/textures/everness_crystal_forest_deep_ocean_coral_plant_2.png new file mode 100644 index 0000000..dd3683f Binary files /dev/null and b/textures/everness_crystal_forest_deep_ocean_coral_plant_2.png differ diff --git a/textures/everness_crystal_forest_deep_ocean_coral_plant_3.png b/textures/everness_crystal_forest_deep_ocean_coral_plant_3.png new file mode 100644 index 0000000..79ac442 Binary files /dev/null and b/textures/everness_crystal_forest_deep_ocean_coral_plant_3.png differ diff --git a/textures/everness_crystal_forest_deep_ocean_sand.png b/textures/everness_crystal_forest_deep_ocean_sand.png new file mode 100644 index 0000000..d4fa164 Binary files /dev/null and b/textures/everness_crystal_forest_deep_ocean_sand.png differ diff --git a/textures/everness_crystal_forest_deep_ocean_sand_bubbles.png b/textures/everness_crystal_forest_deep_ocean_sand_bubbles.png new file mode 100644 index 0000000..8fa03d7 Binary files /dev/null and b/textures/everness_crystal_forest_deep_ocean_sand_bubbles.png differ diff --git a/textures/everness_crystal_forest_deep_ocean_sand_with_crack.png b/textures/everness_crystal_forest_deep_ocean_sand_with_crack.png new file mode 100644 index 0000000..20930c5 Binary files /dev/null and b/textures/everness_crystal_forest_deep_ocean_sand_with_crack.png differ diff --git a/textures/everness_crystal_forest_deep_ocean_sandstone_block.png b/textures/everness_crystal_forest_deep_ocean_sandstone_block.png new file mode 100644 index 0000000..f0e5cde Binary files /dev/null and b/textures/everness_crystal_forest_deep_ocean_sandstone_block.png differ diff --git a/textures/everness_crystal_forest_deep_ocean_sandstone_brick.png b/textures/everness_crystal_forest_deep_ocean_sandstone_brick.png new file mode 100644 index 0000000..8126b45 Binary files /dev/null and b/textures/everness_crystal_forest_deep_ocean_sandstone_brick.png differ diff --git a/textures/everness_cursed_lands_deep_ocean_coral_alcyonacea.png b/textures/everness_cursed_lands_deep_ocean_coral_alcyonacea.png new file mode 100644 index 0000000..b8bf9da Binary files /dev/null and b/textures/everness_cursed_lands_deep_ocean_coral_alcyonacea.png differ diff --git a/textures/everness_cursed_lands_deep_ocean_coral_anemone.png b/textures/everness_cursed_lands_deep_ocean_coral_anemone.png new file mode 100644 index 0000000..571775d Binary files /dev/null and b/textures/everness_cursed_lands_deep_ocean_coral_anemone.png differ diff --git a/textures/everness_cursed_lands_deep_ocean_coral_darkilluma.png b/textures/everness_cursed_lands_deep_ocean_coral_darkilluma.png new file mode 100644 index 0000000..c0ec4f4 Binary files /dev/null and b/textures/everness_cursed_lands_deep_ocean_coral_darkilluma.png differ diff --git a/textures/everness_cursed_lands_deep_ocean_coral_demon.png b/textures/everness_cursed_lands_deep_ocean_coral_demon.png new file mode 100644 index 0000000..41a0a88 Binary files /dev/null and b/textures/everness_cursed_lands_deep_ocean_coral_demon.png differ diff --git a/textures/everness_cursed_lands_deep_ocean_coral_octocurse.png b/textures/everness_cursed_lands_deep_ocean_coral_octocurse.png new file mode 100644 index 0000000..a3cac62 Binary files /dev/null and b/textures/everness_cursed_lands_deep_ocean_coral_octocurse.png differ diff --git a/textures/everness_cursed_lands_deep_ocean_coral_ostracod.png b/textures/everness_cursed_lands_deep_ocean_coral_ostracod.png new file mode 100644 index 0000000..b04681e Binary files /dev/null and b/textures/everness_cursed_lands_deep_ocean_coral_ostracod.png differ diff --git a/textures/everness_cursed_lands_deep_ocean_sand.png b/textures/everness_cursed_lands_deep_ocean_sand.png new file mode 100644 index 0000000..59c6bd7 Binary files /dev/null and b/textures/everness_cursed_lands_deep_ocean_sand.png differ diff --git a/textures/everness_cursed_lands_deep_ocean_sand_brick.png b/textures/everness_cursed_lands_deep_ocean_sand_brick.png new file mode 100644 index 0000000..3a685b2 Binary files /dev/null and b/textures/everness_cursed_lands_deep_ocean_sand_brick.png differ diff --git a/textures/everness_cursed_lands_deep_ocean_sand_with_crack.png b/textures/everness_cursed_lands_deep_ocean_sand_with_crack.png new file mode 100644 index 0000000..6c43743 Binary files /dev/null and b/textures/everness_cursed_lands_deep_ocean_sand_with_crack.png differ diff --git a/textures/everness_cursed_lands_deep_ocean_sandblock.png b/textures/everness_cursed_lands_deep_ocean_sandblock.png new file mode 100644 index 0000000..16a236f Binary files /dev/null and b/textures/everness_cursed_lands_deep_ocean_sandblock.png differ diff --git a/textures/everness_deep_ocean_coral_1.png b/textures/everness_deep_ocean_coral_1.png new file mode 100644 index 0000000..3a2859c Binary files /dev/null and b/textures/everness_deep_ocean_coral_1.png differ diff --git a/textures/everness_deep_ocean_coral_2.png b/textures/everness_deep_ocean_coral_2.png new file mode 100644 index 0000000..b027e96 Binary files /dev/null and b/textures/everness_deep_ocean_coral_2.png differ diff --git a/textures/everness_deep_ocean_coral_3.png b/textures/everness_deep_ocean_coral_3.png new file mode 100644 index 0000000..e8a3ba1 Binary files /dev/null and b/textures/everness_deep_ocean_coral_3.png differ diff --git a/textures/everness_deep_ocean_coral_4.png b/textures/everness_deep_ocean_coral_4.png new file mode 100644 index 0000000..7c5ca47 Binary files /dev/null and b/textures/everness_deep_ocean_coral_4.png differ diff --git a/textures/everness_deep_ocean_coral_plant_1.png b/textures/everness_deep_ocean_coral_plant_1.png new file mode 100644 index 0000000..5d6ab4f Binary files /dev/null and b/textures/everness_deep_ocean_coral_plant_1.png differ diff --git a/textures/everness_deep_ocean_coral_plant_2.png b/textures/everness_deep_ocean_coral_plant_2.png new file mode 100644 index 0000000..c49c9a4 Binary files /dev/null and b/textures/everness_deep_ocean_coral_plant_2.png differ diff --git a/textures/everness_deep_ocean_coral_plant_3.png b/textures/everness_deep_ocean_coral_plant_3.png new file mode 100644 index 0000000..f4bf2a7 Binary files /dev/null and b/textures/everness_deep_ocean_coral_plant_3.png differ diff --git a/textures/everness_deep_ocean_sand.png b/textures/everness_deep_ocean_sand.png new file mode 100644 index 0000000..2e83075 Binary files /dev/null and b/textures/everness_deep_ocean_sand.png differ diff --git a/textures/everness_deep_ocean_sandstone_block.png b/textures/everness_deep_ocean_sandstone_block.png new file mode 100644 index 0000000..57e9eab Binary files /dev/null and b/textures/everness_deep_ocean_sandstone_block.png differ diff --git a/textures/everness_deep_ocean_sandstone_brick.png b/textures/everness_deep_ocean_sandstone_brick.png new file mode 100644 index 0000000..2db2db2 Binary files /dev/null and b/textures/everness_deep_ocean_sandstone_brick.png differ diff --git a/textures/everness_mud_2.png b/textures/everness_mud_2.png new file mode 100644 index 0000000..b199c37 Binary files /dev/null and b/textures/everness_mud_2.png differ diff --git a/textures/everness_rising_soul_particle.png b/textures/everness_rising_soul_particle.png new file mode 100644 index 0000000..dd1b8b5 Binary files /dev/null and b/textures/everness_rising_soul_particle.png differ diff --git a/textures/everness_shell_of_underwarer_breathing.png b/textures/everness_shell_of_underwarer_breathing.png new file mode 100644 index 0000000..ba74cf4 Binary files /dev/null and b/textures/everness_shell_of_underwarer_breathing.png differ