diff --git a/README.md b/README.md index 5749336..8c64cb6 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ It also adds structures, dungeons with loot chests, and custom skyboxes based on ## Features +* granual biome settings * custom sounds for some blocks, biomes * custom textures * custom biomes and cavern biomes diff --git a/api.lua b/api.lua index 55fc79e..3e690d7 100644 --- a/api.lua +++ b/api.lua @@ -933,7 +933,146 @@ Everness = { } }, } - } + }, + settings = { + biomes = { + everness_coral_forest = { + enabled = minetest.settings:get_bool('everness_coral_forest', true), + y_max = tonumber(minetest.settings:get('everness_coral_forest_y_max')) or 31000, + y_min = tonumber(minetest.settings:get('everness_coral_forest_y_min')) or 6, + }, + everness_coral_forest_dunes = { + enabled = minetest.settings:get_bool('everness_coral_forest_dunes', true), + y_max = tonumber(minetest.settings:get('everness_coral_forest_dunes_y_max')) or 5, + y_min = tonumber(minetest.settings:get('everness_coral_forest_dunes_y_min')) or 4, + }, + everness_coral_forest_ocean = { + enabled = minetest.settings:get_bool('everness_coral_forest_ocean', true), + y_max = tonumber(minetest.settings:get('everness_coral_forest_ocean_y_max')) or 3, + y_min = tonumber(minetest.settings:get('everness_coral_forest_ocean_y_min')) or -255, + }, + everness_coral_forest_under = { + enabled = minetest.settings:get_bool('everness_coral_forest_under', true), + y_max = tonumber(minetest.settings:get('everness_coral_forest_under_y_max')) or -256, + y_min = tonumber(minetest.settings:get('everness_coral_forest_under_y_min')) or -31000, + }, + everness_frosted_icesheet = { + enabled = minetest.settings:get_bool('everness_frosted_icesheet', true), + y_max = tonumber(minetest.settings:get('everness_frosted_icesheet_y_max')) or 31000, + y_min = tonumber(minetest.settings:get('everness_frosted_icesheet_y_min')) or -8, + }, + everness_frosted_icesheet_ocean = { + enabled = minetest.settings:get_bool('everness_frosted_icesheet_ocean', true), + y_max = tonumber(minetest.settings:get('everness_frosted_icesheet_ocean_y_max')) or -9, + y_min = tonumber(minetest.settings:get('everness_frosted_icesheet_ocean_y_min')) or -255, + }, + everness_frosted_icesheet_under = { + enabled = minetest.settings:get_bool('everness_frosted_icesheet_under', true), + y_max = tonumber(minetest.settings:get('everness_frosted_icesheet_under_y_max')) or -256, + y_min = tonumber(minetest.settings:get('everness_frosted_icesheet_under_y_min')) or -31000, + }, + everness_cursed_lands = { + enabled = minetest.settings:get_bool('everness_cursed_lands', true), + y_max = tonumber(minetest.settings:get('everness_cursed_lands_y_max')) or 31000, + y_min = tonumber(minetest.settings:get('everness_cursed_lands_y_min')) or 6, + }, + everness_cursed_lands_dunes = { + enabled = minetest.settings:get_bool('everness_cursed_lands_dunes', true), + y_max = tonumber(minetest.settings:get('everness_cursed_lands_dunes_y_max')) or 5, + y_min = tonumber(minetest.settings:get('everness_cursed_lands_dunes_y_min')) or 1, + }, + everness_cursed_lands_swamp = { + enabled = minetest.settings:get_bool('everness_cursed_lands_swamp', true), + y_max = tonumber(minetest.settings:get('everness_cursed_lands_swamp_y_max')) or 0, + y_min = tonumber(minetest.settings:get('everness_cursed_lands_swamp_y_min')) or -1, + }, + everness_cursed_lands_ocean = { + enabled = minetest.settings:get_bool('everness_cursed_lands_ocean', true), + y_max = tonumber(minetest.settings:get('everness_cursed_lands_ocean_y_max')) or -2, + y_min = tonumber(minetest.settings:get('everness_cursed_lands_ocean_y_min')) or -255, + }, + everness_cursed_lands_under = { + enabled = minetest.settings:get_bool('everness_cursed_lands_under', true), + y_max = tonumber(minetest.settings:get('everness_cursed_lands_under_y_max')) or -256, + y_min = tonumber(minetest.settings:get('everness_cursed_lands_under_y_min')) or -31000, + }, + everness_crystal_forest = { + enabled = minetest.settings:get_bool('everness_crystal_forest', true), + y_max = tonumber(minetest.settings:get('everness_crystal_forest_y_max')) or 31000, + y_min = tonumber(minetest.settings:get('everness_crystal_forest_y_min')) or 6, + }, + everness_crystal_forest_dunes = { + enabled = minetest.settings:get_bool('everness_crystal_forest_dunes', true), + y_max = tonumber(minetest.settings:get('everness_crystal_forest_dunes_y_max')) or 5, + y_min = tonumber(minetest.settings:get('everness_crystal_forest_dunes_y_min')) or 1, + }, + everness_crystal_forest_shore = { + enabled = minetest.settings:get_bool('everness_crystal_forest_shore', true), + y_max = tonumber(minetest.settings:get('everness_crystal_forest_shore_y_max')) or 0, + y_min = tonumber(minetest.settings:get('everness_crystal_forest_shore_y_min')) or -1, + }, + everness_crystal_forest_ocean = { + enabled = minetest.settings:get_bool('everness_crystal_forest_ocean', true), + y_max = tonumber(minetest.settings:get('everness_crystal_forest_ocean_y_max')) or -2, + y_min = tonumber(minetest.settings:get('everness_crystal_forest_ocean_y_min')) or -255, + }, + everness_crystal_forest_under = { + enabled = minetest.settings:get_bool('everness_crystal_forest_under', true), + y_max = tonumber(minetest.settings:get('everness_crystal_forest_under_y_max')) or -256, + y_min = tonumber(minetest.settings:get('everness_crystal_forest_under_y_min')) or -31000, + }, + everness_bamboo_forest = { + enabled = minetest.settings:get_bool('everness_bamboo_forest', true), + y_max = tonumber(minetest.settings:get('everness_bamboo_forest_y_max')) or 31000, + y_min = tonumber(minetest.settings:get('everness_bamboo_forest_y_min')) or 1, + }, + everness_bamboo_forest_under = { + enabled = minetest.settings:get_bool('everness_bamboo_forest_under', true), + y_max = tonumber(minetest.settings:get('everness_bamboo_forest_under_y_max')) or -256, + y_min = tonumber(minetest.settings:get('everness_bamboo_forest_under_y_min')) or -31000, + }, + everness_forsaken_desert = { + enabled = minetest.settings:get_bool('everness_forsaken_desert', true), + y_max = tonumber(minetest.settings:get('everness_forsaken_desert_y_max')) or 31000, + y_min = tonumber(minetest.settings:get('everness_forsaken_desert_y_min')) or 4, + }, + everness_forsaken_desert_ocean = { + enabled = minetest.settings:get_bool('everness_forsaken_desert_ocean', true), + y_max = tonumber(minetest.settings:get('everness_forsaken_desert_ocean_y_max')) or 3, + y_min = tonumber(minetest.settings:get('everness_forsaken_desert_ocean_y_min')) or -8, + }, + everness_forsaken_desert_under = { + enabled = minetest.settings:get_bool('everness_forsaken_desert_under', true), + y_max = tonumber(minetest.settings:get('everness_forsaken_desert_under_y_max')) or -256, + y_min = tonumber(minetest.settings:get('everness_forsaken_desert_under_y_min')) or -31000, + }, + everness_baobab_savanna = { + enabled = minetest.settings:get_bool('everness_baobab_savanna', true), + y_max = tonumber(minetest.settings:get('everness_baobab_savanna_y_max')) or 31000, + y_min = tonumber(minetest.settings:get('everness_baobab_savanna_y_min')) or 1, + }, + everness_forsaken_tundra = { + enabled = minetest.settings:get_bool('everness_forsaken_tundra', true), + y_max = tonumber(minetest.settings:get('everness_forsaken_tundra_y_max')) or 31000, + y_min = tonumber(minetest.settings:get('everness_forsaken_tundra_y_min')) or 2, + }, + everness_forsaken_tundra_beach = { + enabled = minetest.settings:get_bool('everness_forsaken_tundra_beach', true), + y_max = tonumber(minetest.settings:get('everness_forsaken_tundra_beach_y_max')) or 1, + y_min = tonumber(minetest.settings:get('everness_forsaken_tundra_beach_y_min')) or -3, + }, + everness_forsaken_tundra_ocean = { + enabled = minetest.settings:get_bool('everness_forsaken_tundra_ocean', true), + y_max = tonumber(minetest.settings:get('everness_forsaken_tundra_ocean_y_max')) or -4, + y_min = tonumber(minetest.settings:get('everness_forsaken_tundra_ocean_y_min')) or -255, + }, + everness_forsaken_tundra_under = { + enabled = minetest.settings:get_bool('everness_forsaken_tundra_under', true), + y_max = tonumber(minetest.settings:get('everness_forsaken_tundra_under_y_max')) or -256, + y_min = tonumber(minetest.settings:get('everness_forsaken_tundra_under_y_min')) or -31000, + }, + } + }, } function Everness.grow_cactus(self, pos, node, params) diff --git a/init.lua b/init.lua index d8da875..e9e2b3f 100644 --- a/init.lua +++ b/init.lua @@ -23,17 +23,127 @@ local mod_start_time = minetest.get_us_time() dofile(path .. '/api.lua') dofile(path .. '/nodes.lua') -dofile(path .. '/nodes.lua') +dofile(path .. '/bamboo.lua') +dofile(path .. '/functions.lua') +dofile(path .. '/trees.lua') +dofile(path .. '/vines.lua') + +dofile(path .. '/mapgen.lua') + +if Everness.settings.biomes.everness_bamboo_forest_under.enabled then + dofile(path .. '/mapgen_bamboo_forest_under.lua') +end + +if Everness.settings.biomes.everness_bamboo_forest.enabled then + dofile(path .. '/mapgen_bamboo_forest.lua') +end + +if Everness.settings.biomes.everness_baobab_savanna.enabled then + dofile(path .. '/mapgen_baobab_savanna.lua') +end + +if Everness.settings.biomes.everness_coral_forest_dunes.enabled then + dofile(path .. '/mapgen_coral_forest_dunes.lua') +end + +if Everness.settings.biomes.everness_coral_forest_ocean.enabled then + dofile(path .. '/mapgen_coral_forest_ocean.lua') +end + +if Everness.settings.biomes.everness_coral_forest_under.enabled then + dofile(path .. '/mapgen_coral_forest_under.lua') +end + +if Everness.settings.biomes.everness_coral_forest.enabled then + dofile(path .. '/mapgen_coral_forest.lua') +end + +if Everness.settings.biomes.everness_crystal_forest_dunes.enabled then + dofile(path .. '/mapgen_crystal_forest_dunes.lua') +end + +if Everness.settings.biomes.everness_crystal_forest_ocean.enabled then + dofile(path .. '/mapgen_crystal_forest_ocean.lua') +end + +if Everness.settings.biomes.everness_crystal_forest_shore.enabled then + dofile(path .. '/mapgen_crystal_forest_shore.lua') +end + +if Everness.settings.biomes.everness_crystal_forest_under.enabled then + dofile(path .. '/mapgen_crystal_forest_under.lua') +end + +if Everness.settings.biomes.everness_crystal_forest.enabled then + dofile(path .. '/mapgen_crystal_forest.lua') +end + +if Everness.settings.biomes.everness_cursed_lands_dunes.enabled then + dofile(path .. '/mapgen_cursed_lands_dunes.lua') +end + +if Everness.settings.biomes.everness_cursed_lands_ocean.enabled then + dofile(path .. '/mapgen_cursed_lands_ocean.lua') +end + +if Everness.settings.biomes.everness_cursed_lands_swamp.enabled then + dofile(path .. '/mapgen_cursed_lands_swamp.lua') +end + +if Everness.settings.biomes.everness_cursed_lands_under.enabled then + dofile(path .. '/mapgen_cursed_lands_under.lua') +end + +if Everness.settings.biomes.everness_cursed_lands.enabled then + dofile(path .. '/mapgen_cursed_lands.lua') +end + +if Everness.settings.biomes.everness_forsaken_desert_ocean.enabled then + dofile(path .. '/mapgen_forsaken_desert_ocean.lua') +end + +if Everness.settings.biomes.everness_forsaken_desert_under.enabled then + dofile(path .. '/mapgen_forsaken_desert_under.lua') +end + +if Everness.settings.biomes.everness_forsaken_desert.enabled then + dofile(path .. '/mapgen_forsaken_desert.lua') +end + +if Everness.settings.biomes.everness_forsaken_tundra_beach.enabled then + dofile(path .. '/mapgen_forsaken_tundra_beach.lua') +end + +if Everness.settings.biomes.everness_forsaken_tundra_ocean.enabled then + dofile(path .. '/mapgen_forsaken_tundra_ocean.lua') +end + +if Everness.settings.biomes.everness_forsaken_tundra_under.enabled then + dofile(path .. '/mapgen_forsaken_tundra_under.lua') +end + +if Everness.settings.biomes.everness_forsaken_tundra.enabled then + dofile(path .. '/mapgen_forsaken_tundra.lua') +end + +if Everness.settings.biomes.everness_frosted_icesheet_ocean.enabled then + dofile(path .. '/mapgen_frosted_icesheet_ocean.lua') +end + +if Everness.settings.biomes.everness_frosted_icesheet_under.enabled then + dofile(path .. '/mapgen_frosted_icesheet_under.lua') +end + +if Everness.settings.biomes.everness_frosted_icesheet.enabled then + dofile(path .. '/mapgen_frosted_icesheet.lua') +end + +dofile(path .. '/mapgen_after.lua') if minetest.get_modpath('xpanes') and minetest.global_exists('xpanes') then dofile(path .. '/panes.lua') end -dofile(path .. '/bamboo.lua') -dofile(path .. '/functions.lua') -dofile(path .. '/trees.lua') -dofile(path .. '/mapgen.lua') - if minetest.get_modpath('stairs') and minetest.global_exists('stairs') then dofile(path .. '/stairs.lua') end @@ -48,7 +158,6 @@ if minetest.get_modpath('doors') and minetest.global_exists('doors') then dofile(path .. '/doors.lua') end -dofile(path .. '/vines.lua') dofile(path .. '/tools.lua') dofile(path .. '/craftitems.lua') dofile(path .. '/crafting.lua') diff --git a/mapgen.lua b/mapgen.lua index cc1d48d..303fc60 100644 --- a/mapgen.lua +++ b/mapgen.lua @@ -16,588 +16,10 @@ License along with this library; if not, write to juraj.vajda@gmail.com --]] --- --- Register biomes --- - --- Coral Forest - -minetest.register_biome({ - name = 'everness_coral_forest', - node_top = 'everness:dirt_with_coral_grass', - depth_top = 1, - node_filler = 'everness:coral_dirt', - depth_filler = 1, - node_riverbed = 'everness:coral_dirt', - depth_riverbed = 2, - node_dungeon = 'everness:coral_desert_cobble', - node_dungeon_alt = 'everness:coral_desert_mossy_cobble', - node_dungeon_stair = 'stairs:stair_coral_desert_cobble', - y_max = 31000, - y_min = 6, - heat_point = 60, - humidity_point = 50, -}) - -minetest.register_biome({ - name = 'everness_coral_forest_dunes', - node_top = 'everness:coral_sand', - depth_top = 1, - node_filler = 'everness:coral_sand', - depth_filler = 3, - node_riverbed = 'everness:coral_sand', - depth_riverbed = 2, - node_dungeon = 'everness:coral_desert_cobble', - node_dungeon_alt = 'everness:coral_desert_mossy_cobble', - node_dungeon_stair = 'stairs:stair_coral_desert_cobble', - vertical_blend = 1, - y_max = 5, - y_min = 4, - heat_point = 60, - humidity_point = 50, -}) - -minetest.register_biome({ - name = 'everness_coral_forest_ocean', - node_top = 'everness:coral_white_sand', - depth_top = 1, - node_filler = 'everness:coral_white_sand', - depth_filler = 3, - node_riverbed = 'everness:coral_white_sand', - depth_riverbed = 2, - node_cave_liquid = 'default:water_source', - node_dungeon = 'everness:coral_desert_cobble', - node_dungeon_alt = 'everness:coral_desert_mossy_cobble', - node_dungeon_stair = 'stairs:stair_coral_desert_cobble', - y_max = 3, - y_min = -255, - heat_point = 60, - humidity_point = 50, -}) - -minetest.register_biome({ - name = 'everness_coral_forest_under', - node_cave_liquid = { 'default:water_source', 'default:lava_source' }, - node_dungeon = 'everness:coral_desert_cobble', - node_dungeon_alt = 'everness:coral_desert_mossy_cobble', - node_dungeon_stair = 'stairs:stair_coral_desert_cobble', - y_max = -256, - y_min = -31000, - heat_point = 60, - humidity_point = 50, -}) - --- Frosted Lands - -minetest.register_biome({ - name = 'everness_frosted_icesheet', - node_dust = 'everness:frosted_snowblock', - node_top = 'everness:frosted_snowblock', - depth_top = 1, - node_filler = 'everness:frosted_snowblock', - depth_filler = 3, - node_stone = 'everness:frosted_cave_ice', - node_water_top = 'everness:frosted_ice', - depth_water_top = 2, - node_river_water = 'everness:frosted_ice', - node_riverbed = 'default:gravel', - depth_riverbed = 2, - node_dungeon = 'everness:icecobble', - node_dungeon_alt = 'everness:snowcobble', - node_dungeon_stair = 'stairs:stair_ice', - y_max = 31000, - y_min = -8, - heat_point = 0, - humidity_point = 93, -}) - -minetest.register_biome({ - name = 'everness_frosted_icesheet_ocean', - node_top = 'default:sand', - depth_top = 1, - node_filler = 'default:sand', - depth_filler = 3, - node_water_top = 'everness:frosted_ice', - depth_water_top = 2, - node_cave_liquid = 'default:water_source', - node_dungeon = 'everness:icecobble', - node_dungeon_alt = 'everness:snowcobble', - node_dungeon_stair = 'stairs:stair_ice', - y_max = -9, - y_min = -255, - heat_point = 0, - humidity_point = 93, -}) - -minetest.register_biome({ - name = 'everness_frosted_icesheet_under', - node_cave_liquid = { 'default:water_source', 'default:lava_source' }, - node_dungeon = 'everness:icecobble', - node_dungeon_alt = 'everness:snowcobble', - node_dungeon_stair = 'stairs:stair_ice', - y_max = -256, - y_min = -31000, - heat_point = 0, - humidity_point = 93, -}) - --- Cursed Lands - -minetest.register_biome({ - name = 'everness_cursed_lands', - node_top = 'everness:dirt_with_cursed_grass', - depth_top = 1, - node_filler = 'everness:cursed_dirt', - depth_filler = 1, - node_riverbed = 'everness:cursed_dirt', - depth_riverbed = 2, - node_dungeon = 'default:cobble', - node_dungeon_alt = 'default:mossycobble', - node_dungeon_stair = 'stairs:stair_cobble', - y_max = 31000, - y_min = 6, - heat_point = 45, - humidity_point = 85, -}) - -minetest.register_biome({ - name = 'everness_cursed_lands_dunes', - node_top = 'everness:cursed_sand', - depth_top = 1, - node_filler = 'everness:cursed_sand', - depth_filler = 3, - node_riverbed = 'everness:cursed_sand', - depth_riverbed = 2, - node_dungeon = 'default:cobble', - node_dungeon_alt = 'default:mossycobble', - node_dungeon_stair = 'stairs:stair_cobble', - vertical_blend = 1, - y_max = 5, - y_min = 1, - heat_point = 45, - humidity_point = 85, -}) - -minetest.register_biome({ - name = 'everness_cursed_lands_swamp', - node_top = 'everness:cursed_stone', - depth_top = 1, - node_filler = 'everness:cursed_stone', - depth_filler = 3, - node_riverbed = 'everness:cursed_stone', - depth_riverbed = 2, - node_dungeon = 'default:cobble', - node_dungeon_alt = 'default:mossycobble', - node_dungeon_stair = 'stairs:stair_cobble', - y_max = 0, - y_min = -1, - heat_point = 45, - humidity_point = 85, -}) - -minetest.register_biome({ - name = 'everness_cursed_lands_ocean', - node_top = 'everness:cursed_stone', - depth_top = 1, - node_filler = 'everness:cursed_stone', - depth_filler = 3, - node_riverbed = 'everness:cursed_stone', - depth_riverbed = 2, - node_cave_liquid = 'default:water_source', - node_dungeon = 'default:cobble', - node_dungeon_alt = 'default:mossycobble', - node_dungeon_stair = 'stairs:stair_cobble', - y_max = -2, - y_min = -255, - heat_point = 45, - humidity_point = 85, -}) - -minetest.register_biome({ - name = 'everness_cursed_lands_under', - node_cave_liquid = { 'default:water_source', 'default:lava_source' }, - node_dungeon = 'default:cobble', - node_dungeon_alt = 'default:mossycobble', - node_dungeon_stair = 'stairs:stair_cobble', - y_max = -256, - y_min = -31000, - heat_point = 45, - humidity_point = 85, -}) - --- Crystal Forest - -minetest.register_biome({ - name = 'everness_crystal_forest', - node_top = 'everness:dirt_with_crystal_grass', - depth_top = 1, - node_filler = 'everness:crystal_dirt', - depth_filler = 1, - node_riverbed = 'everness:crystal_dirt', - depth_riverbed = 2, - node_dungeon = 'default:cobble', - node_dungeon_alt = 'default:mossycobble', - node_dungeon_stair = 'stairs:stair_cobble', - y_max = 31000, - y_min = 6, - heat_point = 35, - humidity_point = 50, -}) - -minetest.register_biome({ - name = 'everness_crystal_forest_dunes', - node_top = 'everness:crystal_sand', - depth_top = 1, - node_filler = 'everness:crystal_sand', - depth_filler = 3, - node_riverbed = 'everness:crystal_sand', - depth_riverbed = 2, - node_dungeon = 'default:cobble', - node_dungeon_alt = 'default:mossycobble', - node_dungeon_stair = 'stairs:stair_cobble', - vertical_blend = 1, - y_max = 5, - y_min = 1, - heat_point = 35, - humidity_point = 50, -}) - -minetest.register_biome({ - name = 'everness_crystal_forest_shore', - node_top = 'everness:crystal_sand', - depth_top = 1, - node_filler = 'everness:crystal_sand', - depth_filler = 3, - node_riverbed = 'everness:crystal_sand', - depth_riverbed = 2, - node_cave_liquid = 'default:water_source', - node_dungeon = 'default:cobble', - node_dungeon_alt = 'default:mossycobble', - node_dungeon_stair = 'stairs:stair_cobble', - y_max = 0, - y_min = -1, - heat_point = 35, - humidity_point = 50, -}) - -minetest.register_biome({ - name = 'everness_crystal_forest_ocean', - node_top = 'everness:crystal_sand', - depth_top = 1, - node_filler = 'everness:crystal_sand', - depth_filler = 3, - node_riverbed = 'everness:crystal_sand', - depth_riverbed = 2, - node_cave_liquid = 'default:water_source', - node_dungeon = 'default:cobble', - node_dungeon_alt = 'default:mossycobble', - node_dungeon_stair = 'stairs:stair_cobble', - y_max = -2, - y_min = -255, - heat_point = 35, - humidity_point = 50, -}) - -minetest.register_biome({ - name = 'everness_crystal_forest_under', - node_cave_liquid = { 'default:water_source', 'default:lava_source' }, - node_dungeon = 'default:cobble', - node_dungeon_alt = 'default:mossycobble', - node_dungeon_stair = 'stairs:stair_cobble', - y_max = -256, - y_min = -31000, - heat_point = 35, - humidity_point = 50, -}) - --- Bamboo Forest - -minetest.register_biome({ - name = 'everness_bamboo_forest', - node_top = 'everness:dirt_with_grass_1', - depth_top = 1, - node_filler = 'everness:dirt_1', - depth_filler = 1, - node_riverbed = 'default:sand', - depth_riverbed = 2, - node_dungeon = 'default:cobble', - node_dungeon_alt = 'default:mossycobble', - node_dungeon_stair = 'stairs:stair_cobble', - y_max = 31000, - y_min = 1, - heat_point = 80, - humidity_point = 60, -}) - -minetest.register_biome({ - name = 'everness_bamboo_forest_under', - node_cave_liquid = { 'default:water_source', 'default:lava_source' }, - node_dungeon = 'default:cobble', - node_dungeon_alt = 'default:mossycobble', - node_dungeon_stair = 'stairs:stair_cobble', - y_max = -256, - y_min = -31000, - heat_point = 80, - humidity_point = 60, -}) - --- Forsaken Desert - -minetest.register_biome({ - name = 'everness_forsaken_desert', - node_top = 'everness:forsaken_desert_sand', - depth_top = 1, - node_stone = 'everness:forsaken_desert_stone', - node_filler = 'everness:forsaken_desert_sand', - depth_filler = 1, - node_riverbed = 'everness:forsaken_desert_sand', - depth_riverbed = 2, - node_dungeon = 'everness:forsaken_desert_brick', - node_dungeon_alt = 'everness:forsaken_desert_brick_red', - node_dungeon_stair = 'stairs:stair_forsaken_desert_brick', - y_max = 31000, - y_min = 4, - heat_point = 100, - humidity_point = 30, -}) - -minetest.register_biome({ - name = 'everness_forsaken_desert_ocean', - node_top = 'everness:dry_ocean_dirt', - depth_top = 1, - node_stone = 'everness:forsaken_desert_stone', - node_filler = 'everness:dry_ocean_dirt', - depth_filler = 3, - node_water_top = 'everness:dry_ocean_dirt', - depth_water_top = 10, - node_river_water = 'everness:dry_ocean_dirt', - node_riverbed = 'everness:dry_ocean_dirt', - depth_riverbed = 2, - node_dungeon = 'everness:forsaken_desert_brick', - node_dungeon_alt = 'everness:forsaken_desert_brick_red', - node_dungeon_stair = 'stairs:stair_forsaken_desert_brick', - y_max = 3, - y_min = -8, - heat_point = 100, - humidity_point = 30, -}) - -minetest.register_biome({ - name = 'everness_forsaken_desert_under', - node_cave_liquid = { 'default:water_source', 'default:lava_source' }, - node_dungeon = 'default:cobble', - node_dungeon_alt = 'default:mossycobble', - node_dungeon_stair = 'stairs:stair_cobble', - y_max = -256, - y_min = -31000, - heat_point = 100, - humidity_point = 30, -}) - --- Baobab Savanna - -minetest.register_biome({ - name = 'everness_baobab_savanna', - node_top = 'default:dry_dirt_with_dry_grass', - depth_top = 1, - node_filler = 'default:dry_dirt', - depth_filler = 1, - node_riverbed = 'default:sand', - depth_riverbed = 2, - node_dungeon = 'default:cobble', - node_dungeon_alt = 'default:mossycobble', - node_dungeon_stair = 'stairs:stair_cobble', - y_max = 31000, - y_min = 1, - heat_point = 80, - humidity_point = 30, -}) - --- Forsaken Tundra - -minetest.register_biome({ - name = 'everness_forsaken_tundra', - node_top = 'everness:forsaken_tundra_dirt', - depth_top = 1, - node_stone = 'everness:forsaken_tundra_stone', - node_filler = 'everness:forsaken_tundra_dirt', - depth_filler = 1, - node_riverbed = 'everness:forsaken_tundra_beach_sand', - depth_riverbed = 2, - node_dungeon = 'everness:forsaken_tundra_cobble', - node_dungeon_alt = 'everness:forsaken_tundra_brick', - node_dungeon_stair = 'stairs:stair_forsaken_tundra_cobble', - y_max = 31000, - y_min = 2, - heat_point = 10, - humidity_point = 10, -}) - -minetest.register_biome({ - name = 'everness_forsaken_tundra_beach', - node_top = 'everness:forsaken_tundra_beach_sand', - depth_top = 1, - node_filler = 'everness:forsaken_tundra_beach_sand', - depth_filler = 2, - node_riverbed = 'everness:forsaken_tundra_beach_sand', - depth_riverbed = 2, - node_dungeon = 'everness:forsaken_tundra_cobble', - node_dungeon_alt = 'everness:forsaken_tundra_brick', - node_dungeon_stair = 'stairs:stair_forsaken_tundra_cobble', - vertical_blend = 1, - y_max = 1, - y_min = -3, - heat_point = 10, - humidity_point = 10, -}) - -minetest.register_biome({ - name = 'everness_forsaken_tundra_ocean', - node_top = 'everness:forsaken_tundra_beach_sand', - depth_top = 1, - node_stone = 'everness:forsaken_tundra_stone', - node_filler = 'everness:forsaken_tundra_beach_sand', - depth_filler = 3, - node_riverbed = 'everness:forsaken_tundra_beach_sand', - depth_riverbed = 2, - node_cave_liquid = 'default:water_source', - node_dungeon = 'everness:forsaken_tundra_cobble', - node_dungeon_alt = 'everness:forsaken_tundra_brick', - node_dungeon_stair = 'stairs:stair_forsaken_tundra_cobble', - vertical_blend = 1, - y_max = -4, - y_min = -255, - heat_point = 10, - humidity_point = 10, -}) - -minetest.register_biome({ - name = 'everness_forsaken_tundra_under', - node_cave_liquid = { 'default:water_source', 'default:lava_source' }, - node_dungeon = 'everness:forsaken_tundra_cobble', - node_dungeon_alt = 'everness:forsaken_tundra_brick', - node_dungeon_stair = 'stairs:stair_forsaken_tundra_cobble', - y_max = -256, - y_min = -31000, - heat_point = 10, - humidity_point = 10, -}) - -- -- Register ores -- --- Stratum ores. --- These obviously first. - --- Forsaken Desert sandstone - -minetest.register_ore({ - ore_type = 'stratum', - ore = 'everness:forsaken_desert_cobble', - wherein = { 'everness:forsaken_desert_stone' }, - clust_scarcity = 1, - y_max = 46, - y_min = 10, - noise_params = { - offset = 28, - scale = 16, - spread = { x = 128, y = 128, z = 128 }, - seed = 90122, - octaves = 1, - }, - stratum_thickness = 4, - biomes = { 'everness_forsaken_desert' }, -}) - -minetest.register_ore({ - ore_type = 'stratum', - ore = 'everness:forsaken_desert_cobble', - wherein = { 'everness:forsaken_desert_stone' }, - clust_scarcity = 1, - y_max = 42, - y_min = 6, - noise_params = { - offset = 24, - scale = 16, - spread = { x = 128, y = 128, z = 128 }, - seed = 90122, - octaves = 1, - }, - stratum_thickness = 2, - biomes = { 'everness_forsaken_desert' }, -}) - --- 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 = 31000, - y_min = -31000, - 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' } -}) - -minetest.register_ore({ - ore_type = 'blob', - ore = 'everness:bone', - wherein = { 'default:stone' }, - clust_scarcity = 16 * 16 * 16, - clust_size = 5, - y_max = -250, - y_min = -31000, - 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_frosted_icesheet_under' } -}) - -minetest.register_ore({ - ore_type = 'blob', - ore = 'everness:sulfur_stone', - wherein = { 'default:stone', 'everness:forsaken_tundra_stone' }, - clust_scarcity = 16 * 16 * 16, - clust_size = 5, - y_max = 31000, - y_min = -31000, - 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_forsaken_tundra', - 'everness_forsaken_tundra_beach', - 'everness_forsaken_tundra_ocean', - 'everness_forsaken_tundra_under', - } -}) - -- Scatter ores -- Pyrite @@ -647,2885 +69,3 @@ minetest.register_ore({ y_max = -5, y_min = -31000, }) - --- --- Register decorations --- - --- Coral Forest - -local chunksize = tonumber(minetest.get_mapgen_setting('chunksize')) - -if chunksize >= 5 then - minetest.register_decoration({ - name = 'everness:coral_tree', - deco_type = 'schematic', - place_on = { 'everness:dirt_with_coral_grass' }, - place_offset_y = 0, - sidelen = 16, - noise_params = { - offset = 0.0015, - scale = 0.0021, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_coral_forest' }, - y_max = 31000, - y_min = 0, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_coral_tree.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', - spawn_by = 'everness:dirt_with_coral_grass', - num_spawn_by = 8, - }) -end - -minetest.register_decoration({ - name = 'everness:coral_bones_tree', - deco_type = 'schematic', - place_on = { 'everness:dirt_with_coral_grass' }, - sidelen = 16, - place_offset_y = -1, - 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' }, - y_max = 31000, - y_min = 2, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_coral_bones_tree.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'everness:coral_volcano', - deco_type = 'schematic', - place_on = { 'everness:coral_sand' }, - place_offset_y = -1, - sidelen = 16, - noise_params = { - offset = -0.012, - scale = 0.024, - spread = { x = 100, y = 100, z = 100 }, - seed = 230, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_coral_forest_dunes' }, - y_max = 30, - y_min = 0, - schematic = minetest.get_modpath('x_clay') - and minetest.get_modpath('everness') .. '/schematics/everness_coral_volcano_x_clay.mts' - or minetest.get_modpath('everness') .. '/schematics/everness_coral_volcano.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', - spawn_by = 'everness:coral_sand', - num_spawn_by = 8, -}) - -minetest.register_decoration({ - name = 'everness:coral_burdock', - deco_type = 'simple', - place_on = { 'everness:dirt_with_coral_grass' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.006, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_coral_forest' }, - y_max = 31000, - y_min = 0, - decoration = { 'everness:coral_burdock_1', 'everness:coral_burdock_2' }, - spawn_by = 'everness:coral_tree' -}) - -minetest.register_decoration({ - name = 'everness:coral_bush', - deco_type = 'simple', - place_on = { 'everness:dirt_with_coral_grass', 'everness:coral_sand', 'everness:coral_white_sand' }, - sidelen = 16, - 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', 'everness_coral_forest_dunes' }, - y_max = 31000, - y_min = 0, - decoration = 'everness:coral_bush' -}) - -minetest.register_decoration({ - name = 'everness:coral_shrub', - deco_type = 'simple', - place_on = { 'everness:dirt_with_coral_grass', 'everness:coral_sand', 'everness:coral_white_sand' }, - sidelen = 16, - noise_params = { - offset = -0.02, - scale = 0.04, - spread = { x = 200, y = 200, z = 200 }, - seed = 1220999, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_coral_forest', 'everness_coral_forest_dunes' }, - y_max = 31000, - y_min = 0, - decoration = 'everness:coral_shrub' -}) - -local function register_coral_grass_decoration(offset, scale, length) - minetest.register_decoration({ - name = 'everness:coral_grass_' .. length, - deco_type = 'simple', - place_on = { 'everness:dirt_with_coral_grass' }, - sidelen = 16, - noise_params = { - offset = offset, - scale = scale, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_coral_forest' }, - y_max = 31000, - y_min = 0, - decoration = 'everness:coral_grass_' .. length, - }) -end - --- Grasses - -register_coral_grass_decoration(-0.03, 0.09, 5) -register_coral_grass_decoration(-0.015, 0.075, 4) -register_coral_grass_decoration(0, 0.06, 3) -register_coral_grass_decoration(0.015, 0.045, 2) -register_coral_grass_decoration(0.03, 0.03, 1) - --- Coral reef - -minetest.register_decoration({ - name = 'everness:coral_forest_corals', - deco_type = 'simple', - place_on = { 'everness:coral_white_sand' }, - place_offset_y = -1, - sidelen = 4, - noise_params = { - offset = -4, - scale = 4, - spread = { x = 50, y = 50, z = 50 }, - seed = 7013, - octaves = 3, - persist = 0.7, - }, - biomes = { 'everness_coral_forest_ocean' }, - y_max = -2, - y_min = -8, - flags = 'force_placement', - decoration = { 'everness:coral_corals', 'everness:coral_jellyfish' }, -}) - -minetest.register_decoration({ - name = 'everness:coral_forest_under_desert_stone_with_moss_floors', - deco_type = 'simple', - place_on = { 'default:stone' }, - place_offset_y = -1, - sidelen = 16, - fill_ratio = 10, - biomes = { 'everness_coral_forest_under' }, - y_max = -256, - y_min = -31000, - flags = 'all_floors, force_placement', - decoration = { - 'everness:coral_desert_stone_with_moss' - }, -}) - -minetest.register_decoration({ - name = 'everness:coral_forest_under_mold_stone_ceilings', - deco_type = 'simple', - place_on = { 'default:stone' }, - sidelen = 16, - fill_ratio = 0.4, - biomes = { 'everness_coral_forest_under' }, - y_max = -256, - y_min = -31000, - flags = 'all_ceilings', - decoration = { - 'everness:moss_block' - }, -}) - -minetest.register_decoration({ - name = 'everness:coral_tree_bioluminescent', - deco_type = 'schematic', - place_on = { 'everness:coral_desert_stone_with_moss' }, - place_offset_y = 1, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.002, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_coral_forest_under' }, - y_max = -2025, - y_min = -31000, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_coral_tree_bioluminescent.mts', - flags = 'place_center_x, place_center_z, all_floors, force_placement', - rotation = 'random', - spawn_by = 'everness:coral_desert_stone_with_moss', - num_spawn_by = 8, -}) - -minetest.register_decoration({ - name = 'everness:coral_plant_bioluminescent', - deco_type = 'simple', - place_on = { 'everness:coral_desert_stone_with_moss' }, - param2 = 8, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.02, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_coral_forest_under' }, - y_max = -1025, - y_min = -31000, - decoration = 'everness:coral_plant_bioluminescent', - flags = 'all_floors' -}) - -minetest.register_decoration({ - name = 'everness:coral_forest_under_lumecorn', - deco_type = 'simple', - place_on = { 'everness:coral_desert_stone_with_moss' }, - 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_under' }, - y_max = -1025, - y_min = -31000, - decoration = 'everness:lumecorn', - flags = 'all_floors', -}) - -minetest.register_decoration({ - name = 'everness:coral_forest_under_vines', - deco_type = 'simple', - place_on = { 'everness:moss_block' }, - sidelen = 16, - fill_ratio = 0.05, - biomes = { 'everness_coral_forest_under' }, - param2 = 8, - decoration = { - 'everness:lumabus_vine_1', - 'everness:lumabus_vine_2', - 'everness:flowered_vine_1', - 'everness:flowered_vine_2' - }, - y_max = -256, - y_min = -31000, - flags = 'all_ceilings', - spawn_by = 'air', - num_spawn_by = 8 -}) - -minetest.register_decoration({ - name = 'everness:coral_forest_under_plants', - deco_type = 'simple', - place_on = { 'everness:coral_desert_stone_with_moss' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.02, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_coral_forest_under' }, - y_max = -1025, - y_min = -31000, - decoration = { - 'everness:coral_grass_orange', - 'everness:globulagus', - 'everness:coral_grass_tall', - }, - flags = 'all_floors', -}) - --- Frosted Lands - -minetest.register_decoration({ - name = 'everness:frosted_lands_stalagmite', - deco_type = 'schematic', - schematic = minetest.get_modpath('everness') .. '/schematics/everness_frosted_lands_stalagmite.mts', - place_on = { 'everness:frosted_snowblock' }, - place_offset_y = 1, - sidelen = 16, - noise_params = { - offset = 0.0008, - scale = 0.0007, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_frosted_icesheet' }, - y_max = 31000, - y_min = 4, - flags = 'place_center_x, place_center_z', - spawn_by = 'everness:frosted_snowblock', - num_spawn_by = 8, -}) - -minetest.register_decoration({ - name = 'everness:frosted_lands_volcanic_rock', - deco_type = 'schematic', - schematic = minetest.get_modpath('everness') .. '/schematics/everness_frosted_lands_volcanic_rock.mts', - place_on = { 'everness:frosted_snowblock' }, - sidelen = 16, - noise_params = { - offset = 0.0008, - scale = 0.0007, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_frosted_icesheet' }, - y_max = 31000, - y_min = 2, - flags = 'place_center_x, place_center_z', - rotation = 'random', - spawn_by = 'everness:frosted_snowblock', - num_spawn_by = 8, -}) - -minetest.register_decoration({ - name = 'everness:frosted_lands_fossils', - deco_type = 'schematic', - schematic = minetest.get_modpath('everness') .. '/schematics/everness_frosted_lands_fossils.mts', - place_on = { 'everness:frosted_snowblock' }, - sidelen = 16, - place_offset_y = 1, - noise_params = { - offset = 0.0008, - scale = 0.0007, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_frosted_icesheet' }, - y_max = 31000, - y_min = 1, - flags = 'place_center_x, place_center_z', - rotation = 'random', - spawn_by = 'everness:frosted_snowblock', - num_spawn_by = 8, -}) - -minetest.register_decoration({ - name = 'everness:frosted_icesheet_ocean_corals', - deco_type = 'simple', - place_on = { 'default:sand' }, - place_offset_y = -1, - sidelen = 4, - noise_params = { - offset = -4, - scale = 4, - spread = { x = 50, y = 50, z = 50 }, - seed = 7013, - octaves = 3, - persist = 0.7, - }, - biomes = { 'everness_frosted_icesheet_ocean' }, - y_max = -2, - y_min = -50, - flags = 'force_placement', - decoration = { 'everness:coral_starfish', 'everness:coral_frosted' }, -}) - -minetest.register_decoration({ - name = 'everness:frosted_floors', - deco_type = 'simple', - place_on = { 'default:stone' }, - place_offset_y = -1, - sidelen = 16, - fill_ratio = 10, - biomes = { 'everness_frosted_icesheet_under' }, - y_max = -256, - y_min = -31000, - flags = 'all_floors, force_placement', - decoration = { - 'everness:ancient_emerald_ice', - 'everness:dense_emerald_ice', - 'everness:emerald_ice', - 'everness:frosted_cave_ice_illuminating', - 'everness:frosted_ice', - 'everness:frosted_ice_translucent', - }, -}) - -minetest.register_decoration({ - name = 'everness:frosted_ceilings', - deco_type = 'simple', - place_on = { 'default:stone' }, - sidelen = 16, - fill_ratio = 0.4, - biomes = { 'everness_frosted_icesheet_under' }, - y_max = -256, - y_min = -31000, - flags = 'all_ceilings', - decoration = { - 'everness:ancient_emerald_ice', - 'everness:dense_emerald_ice', - 'everness:emerald_ice', - 'everness:frosted_cave_ice_illuminating', - 'everness:frosted_ice', - 'everness:frosted_ice_translucent', - }, -}) - -minetest.register_decoration({ - name = 'everness:amaranita_lantern', - deco_type = 'simple', - place_on = { - 'everness:ancient_emerald_ice', - 'everness:dense_emerald_ice', - 'everness:emerald_ice', - 'everness:frosted_cave_ice_illuminating', - 'everness:frosted_ice', - 'everness:frosted_ice_translucent', - }, - 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_frosted_icesheet_under' }, - y_max = -256, - y_min = -31000, - decoration = { 'everness:amaranita_lantern' }, - flags = 'all_floors', -}) - -minetest.register_decoration({ - name = 'everness:frosted_under_vines', - deco_type = 'simple', - place_on = { - 'everness:ancient_emerald_ice', - 'everness:dense_emerald_ice', - 'everness:emerald_ice', - 'everness:frosted_cave_ice_illuminating', - 'everness:frosted_ice', - 'everness:frosted_ice_translucent', - }, - sidelen = 16, - fill_ratio = 0.05, - biomes = { 'everness_frosted_icesheet_under' }, - param2 = 8, - decoration = { - 'everness:tenanea_flowers_vine_1', - 'everness:tenanea_flowers_vine_2', - 'everness:reeds_vine_1', - 'everness:reeds_vine_2' - }, - y_max = -256, - y_min = -31000, - flags = 'all_ceilings', - spawn_by = 'air', - num_spawn_by = 8 -}) - -minetest.register_decoration({ - name = 'everness:frosted_under_plants', - deco_type = 'simple', - place_on = { - 'everness:ancient_emerald_ice', - 'everness:dense_emerald_ice', - 'everness:emerald_ice', - 'everness:frosted_cave_ice_illuminating', - 'everness:frosted_ice', - 'everness:frosted_ice_translucent', - }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.02, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - param2 = 11, - biomes = { 'everness_frosted_icesheet_under' }, - y_max = -1025, - y_min = -31000, - decoration = { - 'everness:blooming_cooksonia', - 'everness:creeping_moss_spores', - 'everness:frosted_icicle_floor', - }, - flags = 'all_floors', -}) - -minetest.register_decoration({ - name = 'everness:frosted_crystal', - deco_type = 'schematic', - place_on = { - 'everness:ancient_emerald_ice', - 'everness:dense_emerald_ice', - 'everness:emerald_ice', - 'everness:frosted_cave_ice_illuminating', - 'everness:frosted_ice', - 'everness:frosted_ice_translucent', - }, - place_offset_y = 1, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.002, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_frosted_icesheet_under' }, - y_max = -3025, - y_min = -31000, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_frosted_crystal.mts', - flags = 'place_center_x, place_center_z, all_floors, force_placement', - rotation = 'random', - spawn_by = { - 'everness:ancient_emerald_ice', - 'everness:dense_emerald_ice', - 'everness:emerald_ice', - 'everness:frosted_cave_ice_illuminating', - 'everness:frosted_ice', - 'everness:frosted_ice_translucent', - }, - num_spawn_by = 8, -}) - --- Cursed Lands - -minetest.register_decoration({ - name = 'everness:cemetery', - deco_type = 'schematic', - place_on = { 'everness:dirt_with_cursed_grass' }, - sidelen = 8, - noise_params = { - offset = -0.0003, - scale = 0.0009, - spread = { x = 200, y = 200, z = 200 }, - seed = 230, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_cursed_lands' }, - y_max = 31000, - y_min = 4, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_cemetery.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'everness:ruins_1', - deco_type = 'schematic', - place_on = { 'everness:dirt_with_cursed_grass' }, - sidelen = 8, - noise_params = { - offset = -0.0003, - scale = 0.0009, - spread = { x = 200, y = 200, z = 200 }, - seed = 230, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_cursed_lands' }, - y_max = 31000, - y_min = 4, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_ruins_1.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -local function register_red_castor_decoration(offset, scale, length) - minetest.register_decoration({ - name = 'everness:red_castor_' .. length, - deco_type = 'simple', - place_on = { 'everness:dirt_with_cursed_grass' }, - sidelen = 16, - noise_params = { - offset = offset, - scale = scale, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_cursed_lands' }, - y_max = 31000, - y_min = 1, - decoration = 'everness:red_castor_' .. length, - }) -end - --- Red Castor Grasses - -register_red_castor_decoration(-0.03, 0.09, 4) -register_red_castor_decoration(-0.015, 0.075, 3) -register_red_castor_decoration(0, 0.06, 2) -register_red_castor_decoration(0.015, 0.045, 1) - -minetest.register_decoration({ - name = 'everness:cursed_mud', - deco_type = 'simple', - place_on = { 'everness:dirt_with_cursed_grass', 'everness:cursed_dirt', 'everness:cursed_sand' }, - place_offset_y = -1, - sidelen = 4, - noise_params = { - offset = -4, - scale = 4, - spread = { x = 50, y = 50, z = 50 }, - seed = 7013, - octaves = 3, - persist = 0.7, - }, - biomes = { 'everness_cursed_lands' }, - y_max = 31000, - y_min = 1, - flags = 'force_placement', - decoration = { 'everness:cursed_mud' }, -}) - -minetest.register_decoration({ - name = 'everness:dry_tree', - deco_type = 'schematic', - place_on = { - 'everness:dirt_with_cursed_grass', - 'everness:cursed_dirt', - 'everness:cursed_sand', - 'everness:cursed_stone' - }, - place_offset_y = 0, - sidelen = 16, - noise_params = { - offset = 0.0015, - scale = 0.0021, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_cursed_lands', 'everness_cursed_lands_dunes', 'everness_cursed_lands_ocean' }, - y_max = 31000, - y_min = 1, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_dry_tree.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'everness:dry_tree_swamp', - deco_type = 'schematic', - place_on = { 'everness:cursed_stone' }, - place_offset_y = 0, - sidelen = 16, - -- Noise tuned to place swamp trees where papyrus is absent - noise_params = { - offset = 0.0, - scale = -0.1, - spread = { x = 200, y = 200, z = 200 }, - seed = 354, - octaves = 1, - persist = 0.5 - }, - biomes = { 'everness_cursed_lands_swamp' }, - y_max = -1, - y_min = -1, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_dry_tree.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'everness:marsh_grass_swamp', - deco_type = 'schematic', - place_on = { 'everness:cursed_stone' }, - place_offset_y = 1, - sidelen = 16, - -- Noise tuned to place where papyrus is absent - noise_params = { - offset = 0.0, - scale = -0.1, - spread = { x = 200, y = 200, z = 200 }, - seed = 354, - octaves = 1, - persist = 0.5 - }, - biomes = { 'everness_cursed_lands_swamp' }, - y_max = 0, - y_min = 0, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_marsh_grass.mts', -}) - -minetest.register_decoration({ - name = 'everness:cursed_bush', - deco_type = 'schematic', - place_on = { 'everness:dirt_with_cursed_grass' }, - sidelen = 16, - place_offset_y = 1, - noise_params = { - offset = -0.004, - scale = 0.01, - spread = { x = 100, y = 100, z = 100 }, - seed = 137, - octaves = 3, - persist = 0.7, - }, - biomes = { 'everness_cursed_lands' }, - y_max = 31000, - y_min = 2, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_cursed_bush.mts', - flags = 'place_center_x, place_center_z', -}) - -minetest.register_decoration({ - name = 'everness:cursed_lands_under_soul_sandstone_floors', - deco_type = 'simple', - place_on = { 'default:stone' }, - place_offset_y = -1, - sidelen = 16, - fill_ratio = 10, - biomes = { 'everness_cursed_lands_under' }, - y_max = -256, - y_min = -31000, - flags = 'all_floors, force_placement', - decoration = { - 'everness:soul_sandstone_veined' - }, -}) - -minetest.register_decoration({ - name = 'everness:cursed_lands_under_mold_stone_ceilings', - deco_type = 'simple', - place_on = { 'default:stone' }, - sidelen = 16, - fill_ratio = 0.4, - biomes = { 'everness_cursed_lands_under' }, - y_max = -256, - y_min = -31000, - flags = 'all_ceilings', - decoration = { - 'everness:moss_block' - }, -}) - -minetest.register_decoration({ - name = 'everness:skull_with_candle', - deco_type = 'simple', - place_on = { 'everness:soul_sandstone_veined' }, - 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_cursed_lands_under' }, - y_max = -1025, - y_min = -31000, - decoration = 'everness:skull_with_candle', - flags = 'all_floors', - param2_max = 3 -}) - -minetest.register_decoration({ - name = 'everness:cursed_lands_under_vines', - deco_type = 'simple', - place_on = { 'everness:moss_block' }, - sidelen = 16, - fill_ratio = 0.05, - biomes = { 'everness_cursed_lands_under' }, - param2 = 8, - decoration = { - 'everness:eye_vine_1', - 'everness:eye_vine_2', - 'everness:ivis_vine_1', - 'everness:ivis_vine_2' - }, - y_max = -256, - y_min = -31000, - flags = 'all_ceilings', - spawn_by = 'air', - num_spawn_by = 8 -}) - -minetest.register_decoration({ - name = 'everness:cursed_pumpkin_lantern', - deco_type = 'simple', - place_on = { 'everness:soul_sandstone_veined' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.002, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_cursed_lands_under' }, - y_max = -256, - y_min = -31000, - decoration = { 'everness:cursed_pumpkin_lantern' }, - flags = 'all_floors', - param2_max = 3 -}) - -minetest.register_decoration({ - name = 'everness:everness_cursed_dream_tree', - deco_type = 'schematic', - place_on = { 'everness:soul_sandstone_veined' }, - place_offset_y = 1, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.002, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_cursed_lands_under' }, - y_max = -2025, - y_min = -31000, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_cursed_dream_tree.mts', - flags = 'place_center_x, place_center_z, all_floors, force_placement', - rotation = 'random', - spawn_by = 'everness:soul_sandstone_veined', - num_spawn_by = 8, -}) - -minetest.register_decoration({ - name = 'everness:cursed_lands_under_plants', - deco_type = 'simple', - place_on = { 'everness:soul_sandstone_veined' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.02, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_cursed_lands_under' }, - y_max = -1025, - y_min = -31000, - decoration = { - 'everness:egg_plant', - 'everness:ngrass_2', - }, - flags = 'all_floors', -}) - -minetest.register_decoration({ - name = 'everness:cursed_lands_under_ivis_moss', - deco_type = 'simple', - place_on = { 'everness:soul_sandstone_veined' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.02, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_cursed_lands_under' }, - y_max = -1025, - y_min = -31000, - decoration = { - 'everness:ivis_moss', - }, - flags = 'all_floors', - param2 = 3 -}) - -minetest.register_decoration({ - name = 'everness:cursed_lands_under_ngrass_1', - deco_type = 'simple', - place_on = { 'everness:soul_sandstone_veined' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.02, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_cursed_lands_under' }, - y_max = -1025, - y_min = -31000, - decoration = { - 'everness:ngrass_1', - }, - flags = 'all_floors', - param2 = 2 -}) - -minetest.register_decoration({ - name = 'everness:cursed_lands_under_cobweb_floors', - deco_type = 'simple', - place_on = { 'everness:soul_sandstone_veined' }, - sidelen = 16, - fill_ratio = 0.02, - biomes = { 'everness_cursed_lands_under' }, - y_max = -256, - y_min = -31000, - decoration = { 'everness:cobweb' }, - flags = 'all_floors' -}) - --- Spine Kelp - -minetest.register_decoration({ - name = 'everness:sand_with_spine_kelp', - deco_type = 'simple', - place_on = { 'everness:cursed_stone' }, - place_offset_y = -1, - sidelen = 16, - noise_params = { - offset = -0.04, - scale = 0.1, - spread = { x = 200, y = 200, z = 200 }, - seed = 87112, - octaves = 3, - persist = 0.7 - }, - biomes = { 'everness_cursed_lands_ocean' }, - y_max = -5, - y_min = -10, - flags = 'force_placement', - decoration = 'everness:sand_with_spine_kelp', - param2 = 48, - param2_max = 96, -}) - --- Crystal Forest - -minetest.register_decoration({ - name = 'everness:crystal_mushrooms', - deco_type = 'simple', - place_on = { 'everness:dirt_with_crystal_grass' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.006, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_crystal_forest' }, - y_max = 31000, - y_min = 1, - decoration = 'everness:crystal_mushrooms', -}) - -minetest.register_decoration({ - name = 'everness:crystal_tree', - deco_type = 'schematic', - place_on = { 'everness:dirt_with_crystal_grass' }, - place_offset_y = 0, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.002, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_crystal_forest' }, - y_max = 31000, - y_min = 1, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_tree.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'everness:crystal_tree_large', - deco_type = 'schematic', - place_on = { 'everness:dirt_with_crystal_grass' }, - place_offset_y = 0, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.001, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_crystal_forest' }, - y_max = 31000, - y_min = 1, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_tree_large.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'everness:crystal_forest_ruins_1', - deco_type = 'schematic', - place_on = { 'everness:crystal_sand' }, - sidelen = 16, - noise_params = { - offset = -0.0003, - scale = 0.0009, - spread = { x = 200, y = 200, z = 200 }, - seed = 230, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_crystal_forest_dunes' }, - y_max = 31000, - y_min = 1, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_forest_ruins_1.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'everness:crystal_forest_under_floors', - deco_type = 'simple', - place_on = { 'default:stone' }, - sidelen = 16, - place_offset_y = -1, - fill_ratio = 10, - biomes = { 'everness_crystal_forest_under' }, - y_max = -256, - y_min = -31000, - decoration = { - 'everness:crystal_cave_dirt_with_moss', - 'everness:crystal_moss_block' - }, - flags = 'all_floors, force_placement' -}) - -minetest.register_decoration({ - name = 'everness:crystal_forest_under_ceilings', - deco_type = 'simple', - place_on = { 'default:stone' }, - sidelen = 16, - fill_ratio = 0.4, - biomes = { 'everness_crystal_forest_under' }, - y_max = -256, - y_min = -31000, - flags = 'all_ceilings', - decoration = { - 'everness:crystal_moss_block' - }, -}) - -minetest.register_decoration({ - name = 'everness:crystal_forest_under_vines', - deco_type = 'simple', - place_on = { 'everness:crystal_moss_block' }, - sidelen = 16, - fill_ratio = 0.05, - biomes = { 'everness_crystal_forest_under' }, - param2 = 8, - decoration = { - 'everness:twisted_vine_1', - 'everness:twisted_vine_2', - 'everness:golden_vine_1', - 'everness:golden_vine_2' - }, - y_max = -256, - y_min = -31000, - flags = 'all_ceilings', - spawn_by = 'air', - num_spawn_by = 8 -}) - -minetest.register_decoration({ - name = 'everness:crystal_purple_cluster', - deco_type = 'schematic', - place_on = { - 'everness:crystal_cave_dirt_with_moss', - 'everness:crystal_moss_block' - }, - place_offset_y = -7, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.002, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_crystal_forest_under' }, - y_max = -3025, - y_min = -31000, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_purple_cluster.mts', - flags = 'place_center_x, place_center_z, all_floors, force_placement', - rotation = 'random', - spawn_by = { - 'everness:crystal_cave_dirt_with_moss', - 'everness:crystal_moss_block' - }, - num_spawn_by = 8, -}) - -minetest.register_decoration({ - name = 'everness:crystal_orange_cluster', - deco_type = 'schematic', - place_on = { - 'everness:crystal_cave_dirt_with_moss', - 'everness:crystal_moss_block' - }, - sidelen = 16, - place_offset_y = 1, - noise_params = { - offset = 0, - scale = 0.002, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_crystal_forest_under' }, - y_max = -2025, - y_min = -31000, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_orange_cluster.mts', - flags = 'place_center_x, place_center_z, all_floors', - rotation = 'random', - spawn_by = { - 'everness:crystal_cave_dirt_with_moss', - 'everness:crystal_moss_block' - }, - num_spawn_by = 8, -}) - -minetest.register_decoration({ - name = 'everness:crystal_cyan', - deco_type = 'simple', - place_on = { - 'everness:crystal_cave_dirt_with_moss', - 'everness:crystal_moss_block' - }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.02, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_crystal_forest_under' }, - y_max = -1025, - y_min = -31000, - decoration = 'everness:crystal_cyan', - flags = 'all_floors', - param2 = 1 -}) - -minetest.register_decoration({ - name = 'everness:twisted_crystal_grass', - deco_type = 'simple', - place_on = { - 'everness:crystal_cave_dirt_with_moss', - 'everness:crystal_moss_block' - }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.2, - spread = { x = 100, y = 100, z = 100 }, - seed = 801, - octaves = 3, - persist = 0.7 - }, - biomes = { 'everness_crystal_forest_under' }, - y_max = -1025, - y_min = -31000, - decoration = 'everness:twisted_crystal_grass', - flags = 'all_floors' -}) - -minetest.register_decoration({ - name = 'everness:crystal_cyan_ceiling', - deco_type = 'simple', - place_on = { 'default:stone' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.02, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_crystal_forest_under' }, - y_max = -1025, - y_min = -31000, - decoration = 'everness:crystal_cyan', - flags = 'all_ceilings', -}) - -minetest.register_decoration({ - name = 'everness:crystal_forest_ruins_2', - deco_type = 'schematic', - place_on = { 'everness:crystal_sand' }, - place_offset_y = 0, - sidelen = 16, - noise_params = { - offset = -0.0003, - scale = 0.0009, - spread = { x = 200, y = 200, z = 200 }, - seed = 230, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_crystal_forest_dunes' }, - y_max = 31000, - y_min = 1, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_forest_ruins_2.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'everness:crystal_waterlily', - deco_type = 'simple', - place_on = { 'everness:crystal_sand' }, - sidelen = 16, - noise_params = { - offset = -0.12, - scale = 0.3, - spread = { x = 200, y = 200, z = 200 }, - seed = 33, - octaves = 3, - persist = 0.7 - }, - biomes = { 'everness_crystal_forest_shore' }, - y_max = 0, - y_min = 0, - decoration = 'everness:crystal_waterlily', - param2 = 0, - param2_max = 3, - place_offset_y = 1, -}) - -local function register_crystal_grass_decoration(offset, scale, length) - minetest.register_decoration({ - name = 'everness:crystal_grass_' .. length, - deco_type = 'simple', - place_on = { 'everness:dirt_with_crystal_grass' }, - sidelen = 16, - noise_params = { - offset = offset, - scale = scale, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_crystal_forest' }, - y_max = 31000, - y_min = 1, - decoration = 'everness:crystal_grass_' .. length, - }) -end - --- Crystal Grasses - -register_crystal_grass_decoration(-0.03, 0.09, 3) -register_crystal_grass_decoration(-0.015, 0.075, 2) -register_crystal_grass_decoration(0, 0.06, 1) - -minetest.register_decoration({ - name = 'everness:crystal_bush', - deco_type = 'schematic', - place_on = { 'everness:dirt_with_crystal_grass' }, - sidelen = 16, - place_offset_y = 1, - noise_params = { - offset = -0.004, - scale = 0.01, - spread = { x = 100, y = 100, z = 100 }, - seed = 137, - octaves = 3, - persist = 0.7, - }, - biomes = { 'everness_crystal_forest' }, - y_max = 31000, - y_min = 2, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_bush.mts', - flags = 'place_center_x, place_center_z', -}) - --- Coral reef - -minetest.register_decoration({ - name = 'everness:crystal_corals', - deco_type = 'simple', - place_on = { 'everness:crystal_sand' }, - place_offset_y = -1, - sidelen = 4, - noise_params = { - offset = -4, - scale = 4, - spread = { x = 50, y = 50, z = 50 }, - seed = 7013, - octaves = 3, - persist = 0.7, - }, - biomes = { 'everness_crystal_forest_ocean' }, - y_max = -2, - y_min = -8, - flags = 'force_placement', - decoration = { - 'everness:crystal_coral_dark', - 'everness:crystal_coral_light' - }, -}) - --- Bamboo forest - -minetest.register_decoration({ - name = 'everness:small_bamboo_forest', - deco_type = 'schematic', - place_on = { 'everness:dirt_with_grass_1' }, - sidelen = 80, - fill_ratio = 0.1, - biomes = { 'everness_bamboo_forest' }, - y_max = 31000, - y_min = 1, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_small_bamboo.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'everness:large_bamboo_forest', - deco_type = 'schematic', - place_on = { 'everness:dirt_with_grass_1' }, - sidelen = 80, - fill_ratio = 0.1, - biomes = { 'everness_bamboo_forest' }, - y_max = 31000, - y_min = 1, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_large_bamboo.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'everness:everness_bamboo_forest_under_floors', - deco_type = 'simple', - place_on = { 'default:stone' }, - sidelen = 16, - fill_ratio = 10, - biomes = { 'everness_bamboo_forest_under' }, - y_max = -256, - y_min = -31000, - flags = 'all_floors', - decoration = { - 'everness:moss_block', - 'default:clay' - }, -}) - -minetest.register_decoration({ - name = 'everness:forsythia_bush_under', - deco_type = 'simple', - place_on = { 'everness:moss_block' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.002, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_bamboo_forest_under' }, - y_max = -1025, - y_min = -31000, - flags = 'all_floors', - decoration = { 'everness:forsythia_bush' }, -}) - -minetest.register_decoration({ - name = 'everness:everness_bamboo_forest_under_ceiling', - deco_type = 'simple', - place_on = { 'default:stone' }, - sidelen = 16, - fill_ratio = 0.4, - biomes = { 'everness_bamboo_forest_under' }, - y_max = -256, - y_min = -31000, - flags = 'all_ceilings', - decoration = { 'everness:moss_block' }, -}) - -minetest.register_decoration({ - name = 'everness:everness_cave_vine_ceiling', - deco_type = 'simple', - place_on = { 'everness:moss_block' }, - sidelen = 16, - fill_ratio = 0.05, - decoration = { - 'everness:vine_cave', - 'everness:vine_cave_with_mese_leaves' - }, - biomes = { 'everness_bamboo_forest_under' }, - y_max = -525, - y_min = -31000, - flags = 'all_ceilings', - spawn_by = 'air', - num_spawn_by = 8 -}) - -minetest.register_decoration({ - name = 'everness:bamboo_flowers_under', - deco_type = 'simple', - place_on = { 'everness:moss_block' }, - param2 = 8, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.02, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_bamboo_forest_under' }, - y_max = -1025, - y_min = -31000, - decoration = { 'everness:cave_flower' }, - flags = 'all_floors' -}) - -minetest.register_decoration({ - name = 'everness:bamboo_flowers_with_particles_under', - deco_type = 'simple', - place_on = { 'everness:moss_block' }, - param2 = 8, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.02, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_bamboo_forest_under' }, - y_max = -2025, - y_min = -31000, - decoration = { 'everness:cave_flower_with_particles' }, - flags = 'all_floors' -}) - -minetest.register_decoration({ - name = 'everness:blue_vine_lantern', - deco_type = 'simple', - place_on = { - 'everness:moss_block', - 'default:clay' - }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.002, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_bamboo_forest_under' }, - y_max = -2025, - y_min = -31000, - decoration = { 'everness:blue_vine_lantern' }, - flags = 'all_floors', -}) - --- Jungle tree and log - -minetest.register_decoration({ - name = 'everness:jungle_tree', - deco_type = 'schematic', - place_on = { 'everness:dirt_with_grass_1' }, - sidelen = 16, - noise_params = { - offset = 0.0015, - scale = 0.0021, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_bamboo_forest' }, - y_max = 31000, - y_min = 1, - schematic = minetest.get_modpath('default') .. '/schematics/jungle_tree.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'everness:jungle_log', - deco_type = 'schematic', - place_on = { 'everness:dirt_with_grass_1' }, - place_offset_y = 1, - sidelen = 16, - noise_params = { - offset = 0.0015, - scale = 0.0021, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_bamboo_forest' }, - y_max = 31000, - y_min = 1, - schematic = minetest.get_modpath('default') .. '/schematics/jungle_log.mts', - flags = 'place_center_x', - rotation = 'random', - spawn_by = 'everness:dirt_with_grass_1', - num_spawn_by = 8, -}) - -local function register_grass_decoration(offset, scale, length) - minetest.register_decoration({ - name = 'everness:grass_' .. length, - deco_type = 'simple', - place_on = { 'everness:dirt_with_grass_1' }, - sidelen = 16, - noise_params = { - offset = offset, - scale = scale, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_bamboo_forest' }, - y_max = 31000, - y_min = 1, - decoration = 'default:grass_' .. length, - }) -end - -local function register_flower(seed, flower_name) - minetest.register_decoration({ - name = 'everness:' .. flower_name, - deco_type = 'simple', - place_on = { 'everness:dirt_with_grass_1' }, - sidelen = 16, - noise_params = { - offset = -0.02, - scale = 0.04, - spread = { x = 200, y = 200, z = 200 }, - seed = seed, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_bamboo_forest' }, - y_max = 31000, - y_min = 1, - decoration = 'flowers:' .. flower_name, - }) -end - --- Bush - -minetest.register_decoration({ - name = 'everness:bush', - deco_type = 'schematic', - place_on = { 'everness:dirt_with_grass_1' }, - 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_bamboo_forest' }, - y_max = 31000, - y_min = 1, - schematic = minetest.get_modpath('default') .. '/schematics/bush.mts', - flags = 'place_center_x, place_center_z', -}) - --- Blueberry bush - -minetest.register_decoration({ - name = 'everness:blueberry_bush', - deco_type = 'schematic', - place_on = { 'everness:dirt_with_grass_1' }, - sidelen = 16, - noise_params = { - offset = -0.004, - scale = 0.01, - spread = { x = 100, y = 100, z = 100 }, - seed = 697, - octaves = 3, - persist = 0.7, - }, - biomes = { 'everness_bamboo_forest' }, - y_max = 31000, - y_min = 1, - place_offset_y = 1, - schematic = minetest.get_modpath('default') .. '/schematics/blueberry_bush.mts', - flags = 'place_center_x, place_center_z', -}) - --- Grasses - -register_grass_decoration(-0.03, 0.09, 5) -register_grass_decoration(-0.015, 0.075, 4) -register_grass_decoration(0, 0.06, 3) -register_grass_decoration(0.015, 0.045, 2) -register_grass_decoration(0.03, 0.03, 1) - --- Flowers - -register_flower(436, 'rose') -register_flower(19822, 'tulip') -register_flower(1220999, 'dandelion_yellow') -register_flower(800081, 'chrysanthemum_green') -register_flower(36662, 'geranium') -register_flower(1133, 'viola') -register_flower(73133, 'dandelion_white') -register_flower(42, 'tulip_black') - --- Forsaken Desert - -minetest.register_decoration({ - name = 'everness:forsaken_desert_under_floors', - deco_type = 'simple', - place_on = { 'default:stone' }, - sidelen = 16, - place_offset_y = -1, - fill_ratio = 10, - biomes = { 'everness_forsaken_desert_under' }, - y_max = -256, - y_min = -31000, - flags = 'all_floors, force_placement', - decoration = { - 'everness:forsaken_desert_sand' - }, -}) - -minetest.register_decoration({ - name = 'everness:forsaken_desert_under_floors_chiseled', - deco_type = 'simple', - place_on = { 'everness:forsaken_desert_sand' }, - sidelen = 16, - place_offset_y = -1, - fill_ratio = 0.2, - biomes = { 'everness_forsaken_desert_under' }, - y_max = -256, - y_min = -31000, - decoration = { - 'everness:forsaken_desert_chiseled_stone', - 'everness:forsaken_desert_brick', - 'everness:forsaken_desert_brick_red', - 'everness:forsaken_desert_engraved_stone', - 'everness:forsaken_desert_cobble_red', - 'everness:forsaken_desert_cobble', - }, - flags = 'all_floors, force_placement' -}) - -minetest.register_decoration({ - name = 'everness:forsaken_desert_under_ceilings', - deco_type = 'simple', - place_on = { 'everness:forsaken_desert_sand' }, - sidelen = 16, - fill_ratio = 0.4, - biomes = { 'everness_forsaken_desert_under' }, - y_max = -256, - y_min = -31000, - flags = 'all_ceilings', - decoration = { - 'everness:moss_block' - }, -}) - -minetest.register_decoration({ - name = 'everness:cactus_blue', - deco_type = 'simple', - place_on = { 'everness:forsaken_desert_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, - }, - biomes = { 'everness_forsaken_desert_under' }, - y_max = -256, - y_min = -31000, - decoration = 'everness:cactus_blue', - height = 2, - height_max = 6, - flags = 'all_floors' -}) - -minetest.register_decoration({ - name = 'everness:forsaken_desert_under_cave_barrel_cactus', - deco_type = 'simple', - place_on = { - 'everness:forsaken_desert_sand', - 'everness:forsaken_desert_chiseled_stone', - 'everness:forsaken_desert_brick', - 'everness:forsaken_desert_engraved_stone' - }, - sidelen = 16, - fill_ratio = 0.005, - biomes = { 'everness_forsaken_desert_under' }, - y_max = -1025, - y_min = -31000, - decoration = { - 'everness:cave_barrel_cactus', - 'everness:venus_trap' - }, - flags = 'all_floors', - param2_max = 3 -}) - -minetest.register_decoration({ - name = 'everness:forsaken_desert_under_cave_illumi_root', - deco_type = 'simple', - place_on = { - 'everness:forsaken_desert_sand', - 'everness:forsaken_desert_chiseled_stone', - 'everness:forsaken_desert_brick', - 'everness:forsaken_desert_engraved_stone' - }, - sidelen = 16, - fill_ratio = 0.005, - biomes = { 'everness_forsaken_desert_under' }, - y_max = -1025, - y_min = -31000, - decoration = { 'everness:illumi_root' }, - flags = 'all_floors' -}) - -minetest.register_decoration({ - name = 'everness:forsaken_desert_under_vines', - deco_type = 'simple', - place_on = { 'everness:moss_block' }, - sidelen = 16, - fill_ratio = 0.05, - biomes = { 'everness_forsaken_desert_under' }, - param2 = 8, - decoration = { - 'everness:dense_vine_1', - 'everness:dense_vine_2' - }, - y_max = -256, - y_min = -31000, - flags = 'all_ceilings', - spawn_by = 'air', - num_spawn_by = 8 -}) - -minetest.register_decoration({ - name = 'everness:forsaken_desert_under_hollow_tree', - deco_type = 'simple', - place_on = { 'everness:forsaken_desert_sand' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.006, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_forsaken_desert_under' }, - y_max = -256, - y_min = -31000, - decoration = 'everness:hollow_tree', - height = 3, - height_max = 7, - flags = 'all_floors' -}) - -minetest.register_decoration({ - name = 'everness:forsaken_desert_sand_plants_1', - deco_type = 'simple', - place_on = { 'everness:forsaken_desert_sand' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.02, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_forsaken_desert' }, - y_max = 31000, - y_min = 2, - decoration = { 'everness:forsaken_desert_plant_1' }, - param2 = 11, -}) - -minetest.register_decoration({ - name = 'everness:forsaken_desert_sand_plants_2', - deco_type = 'simple', - place_on = { 'everness:forsaken_desert_sand' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.02, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_forsaken_desert' }, - y_max = 31000, - y_min = 2, - decoration = { - 'everness:forsaken_desert_plant_2', - 'everness:forsaken_desert_plant_3' - }, - param2 = 8, -}) - -minetest.register_decoration({ - name = 'everness:termite_nest', - deco_type = 'schematic', - place_on = { 'everness:forsaken_desert_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, - }, - biomes = { 'everness_forsaken_desert' }, - y_max = 31000, - y_min = 4, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_termite_nest.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'everness:hollow_tree', - deco_type = 'schematic', - place_on = { 'everness:forsaken_desert_sand' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.002, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_forsaken_desert' }, - y_max = 31000, - y_min = 4, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_hollow_tree.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'everness:hollow_tree_large', - deco_type = 'schematic', - place_on = { 'everness:forsaken_desert_sand' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.001, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_forsaken_desert' }, - y_max = 31000, - y_min = 4, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_hollow_tree_large.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - --- Baobab Savanna - --- Savanna bare dirt patches. --- Must come before all savanna decorations that are placed on dry grass. --- Noise is similar to long dry grass noise, but scale inverted, to appear --- where long dry grass is least dense and shortest. - -minetest.register_decoration({ - deco_type = 'simple', - place_on = { 'default:dry_dirt_with_dry_grass' }, - sidelen = 4, - noise_params = { - offset = -1.5, - scale = -1.5, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 4, - persist = 1.0 - }, - biomes = { 'everness_baobab_savanna' }, - y_max = 31000, - y_min = 1, - decoration = 'default:dry_dirt', - place_offset_y = -1, - flags = 'force_placement', -}) - -minetest.register_decoration({ - name = 'everness:baobab_tree_1', - deco_type = 'schematic', - place_on = { 'default:dry_dirt_with_dry_grass', 'default:dry_dirt' }, - spawn_by = { 'default:dry_dirt_with_dry_grass', 'default:dry_dirt' }, - num_spawn_by = 8, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.002, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_baobab_savanna' }, - y_max = 31000, - y_min = 1, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_baobab_tree.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'everness:baobab_tree_2', - deco_type = 'schematic', - place_on = { 'default:dry_dirt_with_dry_grass', 'default:dry_dirt' }, - spawn_by = { 'default:dry_dirt_with_dry_grass', 'default:dry_dirt' }, - num_spawn_by = 8, - sidelen = 16, - noise_params = { - offset = -0.004, - scale = 0.01, - spread = { x = 100, y = 100, z = 100 }, - seed = 90155, - octaves = 3, - persist = 0.7, - }, - biomes = { 'everness_baobab_savanna' }, - y_max = 31000, - y_min = 1, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_baobab_tree.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'default:everness_acacia_log', - deco_type = 'schematic', - place_on = { 'default:dry_dirt_with_dry_grass' }, - place_offset_y = 1, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.001, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_baobab_savanna' }, - y_max = 31000, - y_min = 1, - schematic = minetest.get_modpath('default') .. '/schematics/acacia_log.mts', - flags = 'place_center_x', - rotation = 'random', - spawn_by = 'default:dry_dirt_with_dry_grass', - num_spawn_by = 8, -}) - -local function register_dry_grass_decoration(offset, scale, length) - minetest.register_decoration({ - name = 'default:everness_dry_grass_' .. length, - deco_type = 'simple', - place_on = { 'default:dry_dirt_with_dry_grass' }, - sidelen = 16, - noise_params = { - offset = offset, - scale = scale, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_baobab_savanna' }, - y_max = 31000, - y_min = 1, - decoration = 'default:dry_grass_' .. length, - }) -end - --- Dry grasses - -register_dry_grass_decoration(0.01, 0.05, 5) -register_dry_grass_decoration(0.03, 0.03, 4) -register_dry_grass_decoration(0.05, 0.01, 3) -register_dry_grass_decoration(0.07, -0.01, 2) -register_dry_grass_decoration(0.09, -0.03, 1) - --- Forsaken Tundra - -minetest.register_decoration({ - name = 'everness:forsaken_tundra_volcanic_sulfur', - deco_type = 'simple', - place_on = { 'everness:forsaken_tundra_dirt' }, - sidelen = 4, - noise_params = { - offset = -0.7, - scale = 4.0, - spread = { x = 16, y = 16, z = 16 }, - seed = 513337, - octaves = 1, - persist = 0.0, - flags = 'absvalue, eased' - }, - biomes = { 'everness_forsaken_tundra' }, - y_max = 31000, - y_min = 2, - decoration = { 'everness:volcanic_sulfur' }, - place_offset_y = -1, - flags = 'force_placement', -}) - -minetest.register_decoration({ - name = 'everness:forsaken_tundra_sulfur_stone', - deco_type = 'simple', - place_on = { - 'everness:forsaken_tundra_dirt', - 'everness:volcanic_sulfur' - }, - sidelen = 4, - noise_params = { - offset = -4, - scale = 4, - spread = { x = 50, y = 50, z = 50 }, - seed = 7013, - octaves = 3, - persist = 0.7, - }, - biomes = { 'everness_forsaken_tundra' }, - y_max = 31000, - y_min = 2, - place_offset_y = -1, - flags = 'force_placement', - decoration = { 'everness:sulfur_stone' }, -}) - -minetest.register_decoration({ - name = 'everness:forsaken_tundra_volcanic_sulfur_on_top_of_sulfur_stone', - deco_type = 'simple', - place_on = { 'everness:sulfur_stone' }, - sidelen = 4, - noise_params = { - offset = -4, - scale = 4, - spread = { x = 50, y = 50, z = 50 }, - seed = 7013, - octaves = 3, - persist = 0.7, - }, - biomes = { 'everness_forsaken_tundra' }, - y_max = 31000, - y_min = 2, - decoration = { 'everness:volcanic_sulfur' }, -}) - -minetest.register_decoration({ - name = 'everness:forsaken_tundra_dirt_with_grass', - deco_type = 'simple', - place_on = { - 'everness:forsaken_tundra_dirt', - 'everness:volcanic_sulfur' - }, - sidelen = 4, - noise_params = { - offset = -0.8, - scale = 2.0, - spread = { x = 100, y = 100, z = 100 }, - seed = 53995, - octaves = 3, - persist = 1.0 - }, - biomes = { 'everness_forsaken_tundra' }, - y_max = 31000, - y_min = 2, - decoration = 'everness:forsaken_tundra_dirt_with_grass', - place_offset_y = -1, - flags = 'force_placement', -}) - -minetest.register_decoration({ - name = 'everness:forsaken_tundra_bloodpore_plant', - deco_type = 'simple', - place_on = { 'everness:forsaken_tundra_dirt_with_grass' }, - sidelen = 16, - noise_params = { - offset = -0.03, - scale = 0.09, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_forsaken_tundra' }, - y_max = 31000, - y_min = 2, - decoration = 'everness:bloodspore_plant', - param2 = 8, -}) - -minetest.register_decoration({ - name = 'everness:forsaken_tundra_bloodspore_plant_on_dirt', - deco_type = 'simple', - place_on = { 'everness:forsaken_tundra_dirt' }, - spawn_by = 'everness:forsaken_tundra_dirt_with_grass', - num_spawn_by = 1, - sidelen = 16, - noise_params = { - offset = -0.03, - scale = 0.09, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_forsaken_tundra' }, - y_max = 31000, - y_min = 2, - decoration = 'everness:bloodspore_plant', - param2 = 8, -}) - -minetest.register_decoration({ - name = 'everness:forsaken_tundra_beach_sand_with_shells', - deco_type = 'simple', - place_on = { 'everness:forsaken_tundra_beach_sand' }, - sidelen = 4, - noise_params = { - offset = -4, - scale = 4, - spread = { x = 50, y = 50, z = 50 }, - seed = 7013, - octaves = 3, - persist = 0.7, - }, - biomes = { - 'everness_forsaken_tundra_beach', - 'everness_forsaken_tundra_ocean', - }, - y_max = 31000, - y_min = -10, - place_offset_y = -1, - flags = 'force_placement', - decoration = { 'everness:forsaken_tundra_beach_sand_with_shells' }, -}) - -minetest.register_decoration({ - name = 'everness:forsaken_tundra_rocks', - deco_type = 'schematic', - place_on = { 'everness:forsaken_tundra_dirt', 'everness:forsaken_tundra_dirt_with_grass' }, - 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_forsaken_tundra' }, - y_max = 31000, - y_min = 1, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_forsaken_tundra_rocks.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', -}) - -minetest.register_decoration({ - name = 'everness:sulfur_volcano', - deco_type = 'schematic', - place_on = { 'everness:forsaken_tundra_dirt', 'everness:volcanic_sulfur' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.002, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_forsaken_tundra' }, - y_max = 31000, - y_min = 1, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_sulfur_volcano.mts', - flags = 'place_center_x, place_center_z', - rotation = 'random', - spawn_by = { 'everness:forsaken_tundra_dirt', 'everness:volcanic_sulfur' }, - num_spawn_by = 8, -}) - -minetest.register_decoration({ - name = 'everness:forsaken_tundra_under_mold_stone_floors', - deco_type = 'simple', - place_on = { 'default:stone' }, - sidelen = 16, - place_offset_y = -1, - fill_ratio = 10, - biomes = { 'everness_forsaken_tundra_under' }, - y_max = -256, - y_min = -31000, - flags = 'all_floors, force_placement', - decoration = { - 'everness:mold_stone_with_moss' - }, -}) - -minetest.register_decoration({ - name = 'everness:forsaken_tundra_under_mold_stone_ceilings', - deco_type = 'simple', - place_on = { 'default:stone' }, - sidelen = 16, - fill_ratio = 0.4, - biomes = { 'everness_forsaken_tundra_under' }, - y_max = -256, - y_min = -31000, - flags = 'all_ceilings', - decoration = { - 'everness:moss_block' - }, -}) - -minetest.register_decoration({ - name = 'everness:forsaken_tundra_under_obsidian_floors', - deco_type = 'simple', - place_on = { 'default:stone', 'everness:mold_stone_with_moss' }, - sidelen = 16, - place_offset_y = -1, - fill_ratio = 0.02, - biomes = { 'everness_forsaken_tundra_under' }, - y_max = -256, - y_min = -31000, - decoration = { - 'everness:blue_crying_obsidian', - 'everness:blue_weeping_obsidian', - 'everness:weeping_obsidian' - }, - flags = 'all_floors, force_placement' -}) - -minetest.register_decoration({ - name = 'everness:forsaken_tundra_under_obsidian_ceilings', - deco_type = 'simple', - place_on = { 'default:stone', 'everness:moss_block' }, - sidelen = 16, - place_offset_y = -1, - fill_ratio = 0.02, - biomes = { 'everness_forsaken_tundra_under' }, - y_max = -256, - y_min = -31000, - decoration = { - 'everness:blue_crying_obsidian', - 'everness:blue_weeping_obsidian', - 'everness:weeping_obsidian' - }, - flags = 'all_ceilings, force_placement' -}) - -minetest.register_decoration({ - name = 'everness:cactus_orange', - deco_type = 'simple', - place_on = { 'everness:mold_stone_with_moss' }, - 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_forsaken_tundra_under' }, - y_max = -256, - y_min = -31000, - decoration = 'everness:cactus_orange', - height = 2, - height_max = 6, - flags = 'all_floors' -}) - -minetest.register_decoration({ - name = 'everness:bloodspore_plant_small', - deco_type = 'simple', - place_on = { 'everness:mold_stone_with_moss' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.02, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = { 'everness_forsaken_tundra_under' }, - y_max = -256, - y_min = -31000, - decoration = 'everness:bloodspore_plant_small', - param2 = 8, - flags = 'all_floors' -}) - -minetest.register_decoration({ - name = 'everness:whispering_gourd_vine', - deco_type = 'simple', - place_on = { 'everness:moss_block' }, - sidelen = 16, - fill_ratio = 0.05, - biomes = { 'everness_forsaken_tundra_under' }, - param2 = 8, - decoration = { - 'everness:whispering_gourd_vine_1', - 'everness:whispering_gourd_vine_2', - 'everness:bulb_vine_1', - 'everness:bulb_vine_2' - }, - y_max = -256, - y_min = -31000, - flags = 'all_ceilings', - spawn_by = 'air', - num_spawn_by = 8 -}) - -minetest.register_decoration({ - name = 'everness:glowing_pillar', - deco_type = 'simple', - place_on = { 'everness:mold_stone_with_moss' }, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.002, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_forsaken_tundra_under' }, - y_max = -256, - y_min = -31000, - decoration = { 'everness:glowing_pillar' }, - flags = 'all_floors', -}) - -minetest.register_decoration({ - name = 'everness:everness_willow_tree', - deco_type = 'schematic', - place_on = { 'everness:mold_stone_with_moss' }, - place_offset_y = -1, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.002, - spread = { x = 250, y = 250, z = 250 }, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = { 'everness_forsaken_tundra_under' }, - y_max = -256, - y_min = -31000, - schematic = minetest.get_modpath('everness') .. '/schematics/everness_willow_tree.mts', - flags = 'place_center_x, place_center_z, all_floors, force_placement', - rotation = 'random', -}) - -local function register_agave_leaf_decoration(offset, scale, length) - minetest.register_decoration({ - name = 'everness:agave_leaf_' .. length, - deco_type = 'simple', - place_on = { 'everness:mold_stone_with_moss' }, - sidelen = 16, - noise_params = { - offset = offset, - scale = scale, - spread = { x = 200, y = 200, z = 200 }, - seed = 329, - octaves = 3, - persist = 0.6 - }, - param2 = 8, - biomes = { 'everness_forsaken_tundra_under' }, - y_max = -256, - y_min = -31000, - decoration = 'everness:agave_leaf_' .. length, - flags = 'all_floors' - }) -end - --- Crystal Grasses - -register_agave_leaf_decoration(-0.03, 0.09, 3) -register_agave_leaf_decoration(-0.015, 0.075, 2) -register_agave_leaf_decoration(0, 0.06, 1) - --- Get the content IDs for the nodes used. -local c_air = minetest.get_content_id('air') -local c_dirt_with_grass_1 = minetest.get_content_id('everness:dirt_with_grass_1') -local c_dirt_with_rainforest_litter = minetest.get_content_id('default:dirt_with_rainforest_litter') -local c_dirt_with_cursed_grass = minetest.get_content_id('everness:dirt_with_cursed_grass') -local c_dirt_with_crystal_grass = minetest.get_content_id('everness:dirt_with_crystal_grass') -local c_crystal_sand = minetest.get_content_id('everness:crystal_sand') -local c_dry_ocean_dirt = minetest.get_content_id('everness:dry_ocean_dirt') -local c_dirt_with_snow = minetest.get_content_id('default:dirt_with_snow') -local c_dirt_with_coniferous_litter = minetest.get_content_id('default:dirt_with_coniferous_litter') -local c_forsaken_desert_sand = minetest.get_content_id('everness:forsaken_desert_sand') -local c_forsaken_desert_chiseled_stone = minetest.get_content_id('everness:forsaken_desert_chiseled_stone') -local c_forsaken_desert_brick = minetest.get_content_id('everness:forsaken_desert_brick') -local c_forsaken_desert_engraved_stone = minetest.get_content_id('everness:forsaken_desert_engraved_stone') - -local deco_ids_baobab = { - minetest.get_decoration_id('everness:baobab_tree_1'), - minetest.get_decoration_id('everness:baobab_tree_2') -} - -local deco_id_coral_bones_tree = minetest.get_decoration_id('everness:coral_bones_tree') - -minetest.set_gen_notify('decoration', deco_ids_baobab) -minetest.set_gen_notify('decoration', { deco_id_coral_bones_tree }) - --- Localise data buffer table outside the loop, to be re-used for all --- mapchunks, therefore minimising memory use. -local data = {} - -minetest.register_on_generated(function(minp, maxp, blockseed) - local gennotify = minetest.get_mapgen_object('gennotify') - - local chance = 15 - local disp = 16 - local rotations = { '0', '90', '180', '270' } - 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) - local sidelength = maxp.x - minp.x + 1 - - local x_disp = rand:next(0, disp) - local z_disp = rand:next(0, disp) - - if maxp.y > 0 then - -- - -- Baobab Tree - fix light - -- - for _, deco_id in ipairs(deco_ids_baobab) do - for _, pos in ipairs(gennotify['decoration#' .. deco_id] or {}) do - minetest.fix_light(vector.offset(pos, -1, -1, -1), vector.offset(pos, 24, 39, 24)) - end - end - - -- - -- Coral bone tree - fix light - -- - for _, pos in ipairs(gennotify['decoration#' .. deco_id_coral_bones_tree] or {}) do - minetest.fix_light(vector.offset(pos, -1, -1, -1), vector.offset(pos, 14, 35, 14)) - end - - -- - -- Bamboo - -- - local bamboos_pos = minetest.find_nodes_in_area_under_air(minp, maxp, 'everness:bamboo_3') - - for _, pos in ipairs(bamboos_pos) do - local node_below = minetest.get_node(vector.new(pos.x, pos.y - 1, pos.z)) - - -- get height of the generated bamboo - local bamboo_height = 0 - local height_offset = 1 - local bamboo_below = node_below - - while minetest.get_item_group(bamboo_below.name, 'bamboo') > 0 do - if bamboo_height > 1 then - bamboo_below = minetest.get_node(vector.new(pos.x, pos.y - height_offset, pos.z)) - end - - height_offset = height_offset + 1 - bamboo_height = bamboo_height + 1 - end - - -- add top bamboo nodes with leaves based on their generated heigth - for i = 1, 3 do - local node_name = 'everness:bamboo_4' - - if i == 2 and bamboo_height > 4 then - node_name = 'everness:bamboo_5' - elseif i == 3 then - node_name = 'everness:bamboo_5' - end - - minetest.swap_node( - vector.new(pos.x, pos.y + (i - 1), pos.z), - { - name = node_name, - param2 = node_below.param2 - } - ) - end - end - - for y = minp.y, maxp.y do - local vi = area:index(minp.x + sidelength / 2 + x_disp, y, minp.z + sidelength / 2 + z_disp) - - if data[vi + area.ystride] == c_air - and ( - data[vi] == c_dirt_with_grass_1 - or data[vi] == c_dirt_with_rainforest_litter - or data[vi] == c_dirt_with_cursed_grass - or data[vi] == c_dirt_with_crystal_grass - or data[vi] == c_crystal_sand - or data[vi] == c_forsaken_desert_sand - or data[vi] == c_dry_ocean_dirt - or data[vi] == c_dirt_with_snow - or data[vi] == c_dirt_with_coniferous_litter - ) - 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_bamboo_forest' and rand:next(0, 100) < chance then - local schem = minetest.get_modpath('everness') .. '/schematics/everness_japanese_shrine.mts' - - -- - -- Japanese Shrine - -- - - local schem_pos = vector.new(s_pos.x, s_pos.y, s_pos.z) - - minetest.place_schematic_on_vmanip( - vm, - schem_pos, - schem, - rotation, - nil, - true, - 'place_center_x, place_center_z' - ) - - minetest.log('action', '[Everness] Japanese Shrine was placed at ' .. schem_pos:to_string()) - elseif biome_name == 'rainforest' and rand:next(0, 100) < chance then - local schem = minetest.get_modpath('everness') .. '/schematics/everness_jungle_temple.mts' - - -- - -- Jungle Temple - -- - - -- add Y displacement - local schem_pos = vector.new(s_pos.x, s_pos.y - 3, s_pos.z) - - minetest.place_schematic_on_vmanip( - vm, - schem_pos, - schem, - rotation, - nil, - true, - 'place_center_x, place_center_z' - ) - - minetest.log('action', '[Everness] Jungle Temple was placed at ' .. schem_pos:to_string()) - elseif biome_name == 'everness_cursed_lands' and rand:next(0, 100) < chance then - local schem = minetest.get_modpath('everness') .. '/schematics/everness_haunted_house.mts' - - -- - -- Haunted House - -- - - -- add Y displacement - local schem_pos = vector.new(s_pos.x, s_pos.y - 1, s_pos.z) - - minetest.place_schematic_on_vmanip( - vm, - schem_pos, - schem, - rotation, - nil, - true, - 'place_center_x, place_center_z' - ) - - minetest.log('action', '[Everness] Haunted House was placed at ' .. schem_pos:to_string()) - elseif biome_name == 'everness_crystal_forest' and rand:next(0, 100) < chance then - local schem = minetest.get_modpath('everness') .. '/schematics/everness_quartz_temple.mts' - - -- - -- Quartz Temple - -- - - -- add Y displacement - local schem_pos = vector.new(s_pos.x, s_pos.y, s_pos.z) - - minetest.place_schematic_on_vmanip( - vm, - schem_pos, - schem, - rotation, - nil, - true, - 'place_center_x, place_center_z' - ) - - minetest.log('action', '[Everness] Quartz Temple was placed at ' .. schem_pos:to_string()) - elseif (biome_name == 'everness_forsaken_desert' or biome_name == 'everness_forsaken_desert_ocean') - and rand:next(0, 100) < chance - then - local schem = minetest.get_modpath('everness') .. '/schematics/everness_forsaken_desert_temple.mts' - - -- - -- Forsaken Desert Temple - -- - - -- add Y displacement - local schem_pos = vector.new(s_pos.x, s_pos.y, s_pos.z) - - minetest.place_schematic_on_vmanip( - vm, - schem_pos, - schem, - rotation, - nil, - true, - 'place_center_x, place_center_z' - ) - - minetest.log('action', '[Everness] Forsaken Desert Temple was placed at ' .. schem_pos:to_string()) - elseif (biome_name == 'coniferous_forest' or biome_name == 'taiga') - and rand:next(0, 100) < 100 - then - local schem = minetest.get_modpath('everness') .. '/schematics/everness_giant_sequoia_tree.mts' - - -- - -- Giant Sequoia - -- - - -- add Y displacement - local schem_pos = vector.new(s_pos.x, s_pos.y, s_pos.z) - - minetest.emerge_area( - vector.new(s_pos.x - 12, s_pos.y, s_pos.z - 12), - vector.new(s_pos.x + 12, s_pos.y + 75, s_pos.z + 12), - function(blockpos, action, calls_remaining, param) - Everness:emerge_area(blockpos, action, calls_remaining, param) - end, - { - callback = function() - local positions = minetest.find_nodes_in_area_under_air( - vector.new(s_pos.x - 6, s_pos.y - 1, s_pos.z - 6), - vector.new(s_pos.x + 6, s_pos.y + 1, s_pos.z + 6), - { - 'default:dirt_with_snow', - 'default:dirt_with_coniferous_litter', - 'default:snow' - }) - - if #positions < 137 then - -- not enough space - return - end - - minetest.place_schematic( - schem_pos, - schem, - rotation, - nil, - true, - 'place_center_x, place_center_z' - ) - - minetest.log('action', '[Everness] Giant Sequoia was placed at ' .. schem_pos:to_string()) - end - } - ) - end - end - end - - vm:write_to_map(true) - minetest.fix_light(minp, maxp) - else - -- Under - for y = minp.y, maxp.y do - local vi = area:index(minp.x + sidelength / 2 + x_disp, y, minp.z + sidelength / 2 + z_disp) - - if data[vi + area.ystride] == c_air - and ( - data[vi] == c_dirt_with_grass_1 - or data[vi] == c_forsaken_desert_sand - or data[vi] == c_forsaken_desert_chiseled_stone - or data[vi] == c_forsaken_desert_brick - or data[vi] == c_forsaken_desert_engraved_stone - ) - 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_forsaken_desert_under' and rand:next(0, 100) < chance then - local schem = minetest.get_modpath('everness') .. '/schematics/everness_forsaken_desert_temple_2.mts' - - -- - -- Forsaken Desert Temple 2 - -- - - -- add Y displacement - local schem_pos = vector.new(s_pos.x, s_pos.y, s_pos.z) - - -- find floor big enough - local positions = minetest.find_nodes_in_area_under_air( - vector.new(s_pos.x - 7, s_pos.y - 1, s_pos.z - 7), - vector.new(s_pos.x + 7, s_pos.y + 1, s_pos.z + 7), - { - 'everness:forsaken_desert_sand', - 'everness:forsaken_desert_chiseled_stone', - 'everness:forsaken_desert_brick', - 'everness:forsaken_desert_engraved_stone', - 'default:stone', - 'default:sand', - 'default:gravel', - 'default:stone_with_coal', - 'default:stone_with_iron', - 'default:stone_with_tin', - 'default:stone_with_gold', - 'default:stone_with_mese', - 'default:stone_with_diamond', - 'everness:cave_barrel_cactus', - 'everness:venus_trap', - 'everness:illumi_root', - }) - - if #positions < 49 then - -- not enough space - return - end - - -- enough air to place structure ? - local air_positions = minetest.find_nodes_in_area( - vector.new(s_pos.x - 7, s_pos.y, s_pos.z - 7), - vector.new(s_pos.x + 7, s_pos.y + 17, s_pos.z + 7), - 'air', true) - - if air_positions.air and #air_positions.air > (16 * 15 * 16) / 2 then - minetest.place_schematic_on_vmanip( - vm, - schem_pos, - schem, - rotation, - nil, - true, - 'place_center_x, place_center_z' - ) - - minetest.log('action', '[Everness] Forsaken Desert Temple 2 was placed at ' .. schem_pos:to_string()) - end - end - end - end - - vm:write_to_map(true) - minetest.fix_light(minp, maxp) - end -end) diff --git a/mapgen_after.lua b/mapgen_after.lua new file mode 100644 index 0000000..6eb5586 --- /dev/null +++ b/mapgen_after.lua @@ -0,0 +1,406 @@ +--[[ + 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 +--]] + +-- Get the content IDs for the nodes used. +local c_air = minetest.get_content_id('air') +local c_dirt_with_grass_1 = minetest.get_content_id('everness:dirt_with_grass_1') +local c_dirt_with_rainforest_litter = minetest.get_content_id('default:dirt_with_rainforest_litter') +local c_dirt_with_cursed_grass = minetest.get_content_id('everness:dirt_with_cursed_grass') +local c_dirt_with_crystal_grass = minetest.get_content_id('everness:dirt_with_crystal_grass') +local c_crystal_sand = minetest.get_content_id('everness:crystal_sand') +local c_dry_ocean_dirt = minetest.get_content_id('everness:dry_ocean_dirt') +local c_dirt_with_snow = minetest.get_content_id('default:dirt_with_snow') +local c_dirt_with_coniferous_litter = minetest.get_content_id('default:dirt_with_coniferous_litter') +local c_forsaken_desert_sand = minetest.get_content_id('everness:forsaken_desert_sand') +local c_forsaken_desert_chiseled_stone = minetest.get_content_id('everness:forsaken_desert_chiseled_stone') +local c_forsaken_desert_brick = minetest.get_content_id('everness:forsaken_desert_brick') +local c_forsaken_desert_engraved_stone = minetest.get_content_id('everness:forsaken_desert_engraved_stone') + +local deco_ids_baobab = { + minetest.get_decoration_id('everness:baobab_savanna_baobab_tree_1'), + minetest.get_decoration_id('everness:baobab_savanna_baobab_tree_2') +} + +local deco_id_coral_bones_tree = minetest.get_decoration_id('everness:coral_forest_coral_bones_tree') + +minetest.set_gen_notify('decoration', deco_ids_baobab) +minetest.set_gen_notify('decoration', { deco_id_coral_bones_tree }) + +-- Localise data buffer table outside the loop, to be re-used for all +-- mapchunks, therefore minimising memory use. +local data = {} + +minetest.register_on_generated(function(minp, maxp, blockseed) + local gennotify = minetest.get_mapgen_object('gennotify') + + local chance = 15 + local disp = 16 + local rotations = { '0', '90', '180', '270' } + 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) + local sidelength = maxp.x - minp.x + 1 + + local x_disp = rand:next(0, disp) + local z_disp = rand:next(0, disp) + + if maxp.y > 0 then + -- + -- Baobab Tree - fix light + -- + for _, deco_id in ipairs(deco_ids_baobab) do + for _, pos in ipairs(gennotify['decoration#' .. deco_id] or {}) do + minetest.fix_light(vector.offset(pos, -1, -1, -1), vector.offset(pos, 24, 39, 24)) + end + end + + -- + -- Coral bone tree - fix light + -- + for _, pos in ipairs(gennotify['decoration#' .. deco_id_coral_bones_tree] or {}) do + minetest.fix_light(vector.offset(pos, -1, -1, -1), vector.offset(pos, 14, 35, 14)) + end + + -- + -- Bamboo + -- + local bamboos_pos = minetest.find_nodes_in_area_under_air(minp, maxp, 'everness:bamboo_3') + + for _, pos in ipairs(bamboos_pos) do + local node_below = minetest.get_node(vector.new(pos.x, pos.y - 1, pos.z)) + + -- get height of the generated bamboo + local bamboo_height = 0 + local height_offset = 1 + local bamboo_below = node_below + + while minetest.get_item_group(bamboo_below.name, 'bamboo') > 0 do + if bamboo_height > 1 then + bamboo_below = minetest.get_node(vector.new(pos.x, pos.y - height_offset, pos.z)) + end + + height_offset = height_offset + 1 + bamboo_height = bamboo_height + 1 + end + + -- add top bamboo nodes with leaves based on their generated heigth + for i = 1, 3 do + local node_name = 'everness:bamboo_4' + + if i == 2 and bamboo_height > 4 then + node_name = 'everness:bamboo_5' + elseif i == 3 then + node_name = 'everness:bamboo_5' + end + + minetest.swap_node( + vector.new(pos.x, pos.y + (i - 1), pos.z), + { + name = node_name, + param2 = node_below.param2 + } + ) + end + end + + for y = minp.y, maxp.y do + local vi = area:index(minp.x + sidelength / 2 + x_disp, y, minp.z + sidelength / 2 + z_disp) + + if data[vi + area.ystride] == c_air + and ( + data[vi] == c_dirt_with_grass_1 + or data[vi] == c_dirt_with_rainforest_litter + or data[vi] == c_dirt_with_cursed_grass + or data[vi] == c_dirt_with_crystal_grass + or data[vi] == c_crystal_sand + or data[vi] == c_forsaken_desert_sand + or data[vi] == c_dry_ocean_dirt + or data[vi] == c_dirt_with_snow + or data[vi] == c_dirt_with_coniferous_litter + ) + 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_bamboo_forest' and rand:next(0, 100) < chance then + local schem = minetest.get_modpath('everness') .. '/schematics/everness_japanese_shrine.mts' + + -- + -- Japanese Shrine + -- + + local schem_pos = vector.new(s_pos.x, s_pos.y, s_pos.z) + + minetest.place_schematic_on_vmanip( + vm, + schem_pos, + schem, + rotation, + nil, + true, + 'place_center_x, place_center_z' + ) + + minetest.log('action', '[Everness] Japanese Shrine was placed at ' .. schem_pos:to_string()) + elseif biome_name == 'rainforest' and rand:next(0, 100) < chance then + local schem = minetest.get_modpath('everness') .. '/schematics/everness_jungle_temple.mts' + + -- + -- Jungle Temple + -- + + -- add Y displacement + local schem_pos = vector.new(s_pos.x, s_pos.y - 3, s_pos.z) + + minetest.place_schematic_on_vmanip( + vm, + schem_pos, + schem, + rotation, + nil, + true, + 'place_center_x, place_center_z' + ) + + minetest.log('action', '[Everness] Jungle Temple was placed at ' .. schem_pos:to_string()) + elseif biome_name == 'everness_cursed_lands' and rand:next(0, 100) < chance then + local schem = minetest.get_modpath('everness') .. '/schematics/everness_haunted_house.mts' + + -- + -- Haunted House + -- + + -- add Y displacement + local schem_pos = vector.new(s_pos.x, s_pos.y - 1, s_pos.z) + + minetest.place_schematic_on_vmanip( + vm, + schem_pos, + schem, + rotation, + nil, + true, + 'place_center_x, place_center_z' + ) + + minetest.log('action', '[Everness] Haunted House was placed at ' .. schem_pos:to_string()) + elseif biome_name == 'everness_crystal_forest' and rand:next(0, 100) < chance then + local schem = minetest.get_modpath('everness') .. '/schematics/everness_quartz_temple.mts' + + -- + -- Quartz Temple + -- + + -- add Y displacement + local schem_pos = vector.new(s_pos.x, s_pos.y, s_pos.z) + + minetest.place_schematic_on_vmanip( + vm, + schem_pos, + schem, + rotation, + nil, + true, + 'place_center_x, place_center_z' + ) + + minetest.log('action', '[Everness] Quartz Temple was placed at ' .. schem_pos:to_string()) + elseif (biome_name == 'everness_forsaken_desert' or biome_name == 'everness_forsaken_desert_ocean') + and rand:next(0, 100) < chance + then + local schem = minetest.get_modpath('everness') .. '/schematics/everness_forsaken_desert_temple.mts' + + -- + -- Forsaken Desert Temple + -- + + -- add Y displacement + local schem_pos = vector.new(s_pos.x, s_pos.y, s_pos.z) + + minetest.place_schematic_on_vmanip( + vm, + schem_pos, + schem, + rotation, + nil, + true, + 'place_center_x, place_center_z' + ) + + minetest.log('action', '[Everness] Forsaken Desert Temple was placed at ' .. schem_pos:to_string()) + elseif (biome_name == 'coniferous_forest' or biome_name == 'taiga') + and rand:next(0, 100) < 100 + then + local schem = minetest.get_modpath('everness') .. '/schematics/everness_giant_sequoia_tree.mts' + + -- + -- Giant Sequoia + -- + + -- add Y displacement + local schem_pos = vector.new(s_pos.x, s_pos.y, s_pos.z) + + minetest.emerge_area( + vector.new(s_pos.x - 12, s_pos.y, s_pos.z - 12), + vector.new(s_pos.x + 12, s_pos.y + 75, s_pos.z + 12), + function(blockpos, action, calls_remaining, param) + Everness:emerge_area(blockpos, action, calls_remaining, param) + end, + { + callback = function() + local positions = minetest.find_nodes_in_area_under_air( + vector.new(s_pos.x - 6, s_pos.y - 1, s_pos.z - 6), + vector.new(s_pos.x + 6, s_pos.y + 1, s_pos.z + 6), + { + 'default:dirt_with_snow', + 'default:dirt_with_coniferous_litter', + 'default:snow' + }) + + if #positions < 137 then + -- not enough space + return + end + + minetest.place_schematic( + schem_pos, + schem, + rotation, + nil, + true, + 'place_center_x, place_center_z' + ) + + minetest.log('action', '[Everness] Giant Sequoia was placed at ' .. schem_pos:to_string()) + end + } + ) + end + end + end + + vm:write_to_map(true) + minetest.fix_light(minp, maxp) + else + -- Under + for y = minp.y, maxp.y do + local vi = area:index(minp.x + sidelength / 2 + x_disp, y, minp.z + sidelength / 2 + z_disp) + + if data[vi + area.ystride] == c_air + and ( + data[vi] == c_dirt_with_grass_1 + or data[vi] == c_forsaken_desert_sand + or data[vi] == c_forsaken_desert_chiseled_stone + or data[vi] == c_forsaken_desert_brick + or data[vi] == c_forsaken_desert_engraved_stone + ) + 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_forsaken_desert_under' and rand:next(0, 100) < chance then + local schem = minetest.get_modpath('everness') .. '/schematics/everness_forsaken_desert_temple_2.mts' + + -- + -- Forsaken Desert Temple 2 + -- + + -- add Y displacement + local schem_pos = vector.new(s_pos.x, s_pos.y, s_pos.z) + + -- find floor big enough + local positions = minetest.find_nodes_in_area_under_air( + vector.new(s_pos.x - 7, s_pos.y - 1, s_pos.z - 7), + vector.new(s_pos.x + 7, s_pos.y + 1, s_pos.z + 7), + { + 'everness:forsaken_desert_sand', + 'everness:forsaken_desert_chiseled_stone', + 'everness:forsaken_desert_brick', + 'everness:forsaken_desert_engraved_stone', + 'default:stone', + 'default:sand', + 'default:gravel', + 'default:stone_with_coal', + 'default:stone_with_iron', + 'default:stone_with_tin', + 'default:stone_with_gold', + 'default:stone_with_mese', + 'default:stone_with_diamond', + 'everness:cave_barrel_cactus', + 'everness:venus_trap', + 'everness:illumi_root', + }) + + if #positions < 49 then + -- not enough space + return + end + + -- enough air to place structure ? + local air_positions = minetest.find_nodes_in_area( + vector.new(s_pos.x - 7, s_pos.y, s_pos.z - 7), + vector.new(s_pos.x + 7, s_pos.y + 17, s_pos.z + 7), + 'air', true) + + if air_positions.air and #air_positions.air > (16 * 15 * 16) / 2 then + minetest.place_schematic_on_vmanip( + vm, + schem_pos, + schem, + rotation, + nil, + true, + 'place_center_x, place_center_z' + ) + + minetest.log('action', '[Everness] Forsaken Desert Temple 2 was placed at ' .. schem_pos:to_string()) + end + end + end + end + + vm:write_to_map(true) + minetest.fix_light(minp, maxp) + end +end) diff --git a/mapgen_bamboo_forest.lua b/mapgen_bamboo_forest.lua new file mode 100644 index 0000000..743fd04 --- /dev/null +++ b/mapgen_bamboo_forest.lua @@ -0,0 +1,228 @@ +--[[ + 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_bamboo_forest.y_max +local y_min = Everness.settings.biomes.everness_bamboo_forest.y_min + +-- Bamboo Forest + +minetest.register_biome({ + name = 'everness_bamboo_forest', + node_top = 'everness:dirt_with_grass_1', + depth_top = 1, + node_filler = 'everness:dirt_1', + depth_filler = 1, + node_riverbed = 'default:sand', + depth_riverbed = 2, + node_dungeon = 'default:cobble', + node_dungeon_alt = 'default:mossycobble', + node_dungeon_stair = 'stairs:stair_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 80, + humidity_point = 60, +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:bamboo_forest_small_bamboo', + deco_type = 'schematic', + place_on = { 'everness:dirt_with_grass_1' }, + sidelen = 80, + fill_ratio = 0.1, + biomes = { 'everness_bamboo_forest' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_small_bamboo.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +minetest.register_decoration({ + name = 'everness:bamboo_forest_large_bamboo', + deco_type = 'schematic', + place_on = { 'everness:dirt_with_grass_1' }, + sidelen = 80, + fill_ratio = 0.1, + biomes = { 'everness_bamboo_forest' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_large_bamboo.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +-- Jungle tree and log + +minetest.register_decoration({ + name = 'everness:bamboo_forest_jungle_tree', + deco_type = 'schematic', + place_on = { 'everness:dirt_with_grass_1' }, + sidelen = 16, + noise_params = { + offset = 0.0015, + scale = 0.0021, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_bamboo_forest' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('default') .. '/schematics/jungle_tree.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +minetest.register_decoration({ + name = 'everness:bamboo_forest_jungle_log', + deco_type = 'schematic', + place_on = { 'everness:dirt_with_grass_1' }, + place_offset_y = 1, + sidelen = 16, + noise_params = { + offset = 0.0015, + scale = 0.0021, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_bamboo_forest' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('default') .. '/schematics/jungle_log.mts', + flags = 'place_center_x', + rotation = 'random', + spawn_by = 'everness:dirt_with_grass_1', + num_spawn_by = 8, +}) + +local function register_grass_decoration(offset, scale, length) + minetest.register_decoration({ + name = 'everness:bamboo_forest_grass_' .. length, + deco_type = 'simple', + place_on = { 'everness:dirt_with_grass_1' }, + sidelen = 16, + noise_params = { + offset = offset, + scale = scale, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_bamboo_forest' }, + y_max = y_max, + y_min = y_min, + decoration = 'default:grass_' .. length, + }) +end + +local function register_flower(seed, flower_name) + minetest.register_decoration({ + name = 'everness:bamboo_forest_' .. flower_name, + deco_type = 'simple', + place_on = { 'everness:dirt_with_grass_1' }, + sidelen = 16, + noise_params = { + offset = -0.02, + scale = 0.04, + spread = { x = 200, y = 200, z = 200 }, + seed = seed, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_bamboo_forest' }, + y_max = y_max, + y_min = y_min, + decoration = 'flowers:' .. flower_name, + }) +end + +-- Bush + +minetest.register_decoration({ + name = 'everness:bamboo_forest_bush', + deco_type = 'schematic', + place_on = { 'everness:dirt_with_grass_1' }, + 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_bamboo_forest' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('default') .. '/schematics/bush.mts', + flags = 'place_center_x, place_center_z', +}) + +-- Blueberry bush + +minetest.register_decoration({ + name = 'everness:bamboo_forest_blueberry_bush', + deco_type = 'schematic', + place_on = { 'everness:dirt_with_grass_1' }, + sidelen = 16, + noise_params = { + offset = -0.004, + scale = 0.01, + spread = { x = 100, y = 100, z = 100 }, + seed = 697, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_bamboo_forest' }, + y_max = y_max, + y_min = y_min, + place_offset_y = 1, + schematic = minetest.get_modpath('default') .. '/schematics/blueberry_bush.mts', + flags = 'place_center_x, place_center_z', +}) + +-- Grasses + +register_grass_decoration(-0.03, 0.09, 5) +register_grass_decoration(-0.015, 0.075, 4) +register_grass_decoration(0, 0.06, 3) +register_grass_decoration(0.015, 0.045, 2) +register_grass_decoration(0.03, 0.03, 1) + +-- Flowers + +register_flower(436, 'rose') +register_flower(19822, 'tulip') +register_flower(1220999, 'dandelion_yellow') +register_flower(800081, 'chrysanthemum_green') +register_flower(36662, 'geranium') +register_flower(1133, 'viola') +register_flower(73133, 'dandelion_white') +register_flower(42, 'tulip_black') diff --git a/mapgen_bamboo_forest_under.lua b/mapgen_bamboo_forest_under.lua new file mode 100644 index 0000000..e759274 --- /dev/null +++ b/mapgen_bamboo_forest_under.lua @@ -0,0 +1,174 @@ +--[[ + 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_bamboo_forest_under.y_max +local y_min = Everness.settings.biomes.everness_bamboo_forest_under.y_min + +-- Bamboo Forest Under + +minetest.register_biome({ + name = 'everness_bamboo_forest_under', + node_cave_liquid = { 'default:water_source', 'default:lava_source' }, + node_dungeon = 'default:cobble', + node_dungeon_alt = 'default:mossycobble', + node_dungeon_stair = 'stairs:stair_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 80, + humidity_point = 60, +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:bamboo_forest_under_floors', + deco_type = 'simple', + place_on = { 'default:stone' }, + sidelen = 16, + fill_ratio = 10, + biomes = { 'everness_bamboo_forest_under' }, + y_max = y_max, + y_min = y_min, + flags = 'all_floors', + decoration = { + 'everness:moss_block', + 'default:clay' + }, +}) + +minetest.register_decoration({ + name = 'everness:bamboo_forest_under_ceiling', + deco_type = 'simple', + place_on = { 'default:stone' }, + sidelen = 16, + fill_ratio = 0.4, + biomes = { 'everness_bamboo_forest_under' }, + y_max = y_max, + y_min = y_min, + flags = 'all_ceilings', + decoration = { 'everness:moss_block' }, +}) + +minetest.register_decoration({ + name = 'everness:bamboo_forest_under_forsythia_bush', + deco_type = 'simple', + place_on = { 'everness:moss_block' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.002, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_bamboo_forest_under' }, + y_max = y_max - 500 > y_min and y_max - 500 or y_max, + y_min = y_min, + flags = 'all_floors', + decoration = { 'everness:forsythia_bush' }, +}) + +minetest.register_decoration({ + name = 'everness:bamboo_forest_under_vines', + deco_type = 'simple', + place_on = { 'everness:moss_block' }, + sidelen = 16, + fill_ratio = 0.05, + decoration = { + 'everness:vine_cave', + 'everness:vine_cave_with_mese_leaves' + }, + biomes = { 'everness_bamboo_forest_under' }, + y_max = y_max, + y_min = y_min, + flags = 'all_ceilings', + spawn_by = 'air', + num_spawn_by = 8 +}) + +minetest.register_decoration({ + name = 'everness:bamboo_forest_under_plants', + deco_type = 'simple', + place_on = { 'everness:moss_block' }, + param2 = 8, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_bamboo_forest_under' }, + y_max = y_max, + y_min = y_min, + decoration = { 'everness:cave_flower' }, + flags = 'all_floors' +}) + +minetest.register_decoration({ + name = 'everness:bamboo_forest_under_plants_2', + deco_type = 'simple', + place_on = { 'everness:moss_block' }, + param2 = 8, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_bamboo_forest_under' }, + y_max = y_max - 1000 > y_min and y_max - 1000 or y_max, + y_min = y_min, + decoration = { 'everness:cave_flower_with_particles' }, + flags = 'all_floors' +}) + +minetest.register_decoration({ + name = 'everness:bamboo_forest_under_blue_vine_lantern', + deco_type = 'simple', + place_on = { + 'everness:moss_block', + 'default:clay' + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.002, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_bamboo_forest_under' }, + y_max = y_max - 1500 > y_min and y_max - 1500 or y_max, + y_min = y_min, + decoration = { 'everness:blue_vine_lantern' }, + flags = 'all_floors', +}) diff --git a/mapgen_baobab_savanna.lua b/mapgen_baobab_savanna.lua new file mode 100644 index 0000000..1abc0fe --- /dev/null +++ b/mapgen_baobab_savanna.lua @@ -0,0 +1,143 @@ +--[[ + 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_baobab_savanna.y_max +local y_min = Everness.settings.biomes.everness_baobab_savanna.y_min + +-- Baobab Savanna + +minetest.register_biome({ + name = 'everness_baobab_savanna', + node_top = 'default:dry_dirt_with_dry_grass', + depth_top = 1, + node_filler = 'default:dry_dirt', + depth_filler = 1, + node_riverbed = 'default:sand', + depth_riverbed = 2, + node_dungeon = 'default:cobble', + node_dungeon_alt = 'default:mossycobble', + node_dungeon_stair = 'stairs:stair_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 80, + humidity_point = 30, +}) + +-- +-- Register decorations +-- + +-- Savanna bare dirt patches. +-- Must come before all savanna decorations that are placed on dry grass. +-- Noise is similar to long dry grass noise, but scale inverted, to appear +-- where long dry grass is least dense and shortest. + +minetest.register_decoration({ + name = 'everness:baobab_savanna_dry_dirt_with_dry_grass', + deco_type = 'simple', + place_on = { 'default:dry_dirt_with_dry_grass' }, + sidelen = 4, + noise_params = { + offset = -1.5, + scale = -1.5, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 4, + persist = 1.0 + }, + biomes = { 'everness_baobab_savanna' }, + y_max = y_max, + y_min = y_min, + decoration = 'default:dry_dirt', + place_offset_y = -1, + flags = 'force_placement', +}) + +minetest.register_decoration({ + name = 'everness:baobab_savanna_baobab_tree_1', + deco_type = 'schematic', + place_on = { 'default:dry_dirt_with_dry_grass', 'default:dry_dirt' }, + spawn_by = { 'default:dry_dirt_with_dry_grass', 'default:dry_dirt' }, + num_spawn_by = 8, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.002, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_baobab_savanna' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_baobab_tree.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +minetest.register_decoration({ + name = 'everness:baobab_savanna_baobab_tree_2', + deco_type = 'schematic', + place_on = { 'default:dry_dirt_with_dry_grass', 'default:dry_dirt' }, + spawn_by = { 'default:dry_dirt_with_dry_grass', 'default:dry_dirt' }, + num_spawn_by = 8, + sidelen = 16, + noise_params = { + offset = -0.004, + scale = 0.01, + spread = { x = 100, y = 100, z = 100 }, + seed = 90155, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_baobab_savanna' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_baobab_tree.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +minetest.register_decoration({ + name = 'everness:baobab_savanna_acacia_log', + deco_type = 'schematic', + place_on = { 'default:dry_dirt_with_dry_grass' }, + place_offset_y = 1, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.001, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_baobab_savanna' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('default') .. '/schematics/acacia_log.mts', + flags = 'place_center_x', + rotation = 'random', + spawn_by = 'default:dry_dirt_with_dry_grass', + num_spawn_by = 8, +}) diff --git a/mapgen_coral_forest.lua b/mapgen_coral_forest.lua new file mode 100644 index 0000000..11e80f4 --- /dev/null +++ b/mapgen_coral_forest.lua @@ -0,0 +1,215 @@ +--[[ + 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.y_max +local y_min = Everness.settings.biomes.everness_coral_forest.y_min + +-- Coral Forest + +minetest.register_biome({ + name = 'everness_coral_forest', + node_top = 'everness:dirt_with_coral_grass', + depth_top = 1, + node_filler = 'everness:coral_dirt', + depth_filler = 1, + node_riverbed = 'everness:coral_dirt', + depth_riverbed = 2, + node_dungeon = 'everness:coral_desert_cobble', + node_dungeon_alt = 'everness:coral_desert_mossy_cobble', + node_dungeon_stair = 'stairs:stair_coral_desert_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 60, + humidity_point = 50, +}) + +-- +-- Register ores +-- + +-- 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' } +}) + +-- +-- Register decorations +-- + +-- Coral Forest + +local chunksize = tonumber(minetest.get_mapgen_setting('chunksize')) + +if chunksize >= 5 then + minetest.register_decoration({ + name = 'everness:coral_forest_coral_tree', + deco_type = 'schematic', + place_on = { 'everness:dirt_with_coral_grass' }, + place_offset_y = 0, + sidelen = 16, + noise_params = { + offset = 0.0015, + scale = 0.0021, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_coral_forest' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_coral_tree.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', + spawn_by = 'everness:dirt_with_coral_grass', + num_spawn_by = 8, + }) +end + +minetest.register_decoration({ + name = 'everness:coral_forest_coral_bones_tree', + deco_type = 'schematic', + place_on = { 'everness:dirt_with_coral_grass' }, + sidelen = 16, + place_offset_y = -1, + 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' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_coral_bones_tree.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_coral_burdock', + deco_type = 'simple', + place_on = { 'everness:dirt_with_coral_grass' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.006, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_coral_forest' }, + y_max = y_max, + y_min = y_min, + decoration = { 'everness:coral_burdock_1', 'everness:coral_burdock_2' }, + spawn_by = 'everness:coral_tree' +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_coral_bush', + deco_type = 'simple', + place_on = { 'everness:dirt_with_coral_grass', 'everness:coral_sand', 'everness:coral_white_sand' }, + sidelen = 16, + 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' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:coral_bush' +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_coral_shrub', + deco_type = 'simple', + place_on = { 'everness:dirt_with_coral_grass', 'everness:coral_sand', 'everness:coral_white_sand' }, + sidelen = 16, + noise_params = { + offset = -0.02, + scale = 0.04, + spread = { x = 200, y = 200, z = 200 }, + seed = 1220999, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_coral_forest' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:coral_shrub' +}) + +local function register_coral_grass_decoration(offset, scale, length) + minetest.register_decoration({ + name = 'everness:coral_forest_coral_grass_' .. length, + deco_type = 'simple', + place_on = { 'everness:dirt_with_coral_grass' }, + sidelen = 16, + noise_params = { + offset = offset, + scale = scale, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_coral_forest' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:coral_grass_' .. length, + }) +end + +-- Grasses + +register_coral_grass_decoration(-0.03, 0.09, 5) +register_coral_grass_decoration(-0.015, 0.075, 4) +register_coral_grass_decoration(0, 0.06, 3) +register_coral_grass_decoration(0.015, 0.045, 2) +register_coral_grass_decoration(0.03, 0.03, 1) diff --git a/mapgen_coral_forest_dunes.lua b/mapgen_coral_forest_dunes.lua new file mode 100644 index 0000000..9b113f9 --- /dev/null +++ b/mapgen_coral_forest_dunes.lua @@ -0,0 +1,143 @@ +--[[ + 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_dunes.y_max +local y_min = Everness.settings.biomes.everness_coral_forest_dunes.y_min + +-- Coral Forest Dunes + +minetest.register_biome({ + name = 'everness_coral_forest_dunes', + node_top = 'everness:coral_sand', + depth_top = 1, + node_filler = 'everness:coral_sand', + depth_filler = 3, + node_riverbed = 'everness:coral_sand', + depth_riverbed = 2, + node_dungeon = 'everness:coral_desert_cobble', + node_dungeon_alt = 'everness:coral_desert_mossy_cobble', + node_dungeon_stair = 'stairs:stair_coral_desert_cobble', + vertical_blend = 1, + y_max = y_max, + y_min = y_min, + heat_point = 60, + humidity_point = 50, +}) + +-- +-- Register ores +-- + +-- 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_dunes' } +}) + +-- +-- Register decorations +-- + +-- Coral Forest Dunes + +minetest.register_decoration({ + name = 'everness:coral_forest_dunes_coral_volcano', + deco_type = 'schematic', + place_on = { 'everness:coral_sand' }, + place_offset_y = -1, + sidelen = 16, + noise_params = { + offset = -0.012, + scale = 0.024, + spread = { x = 100, y = 100, z = 100 }, + seed = 230, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_coral_forest_dunes' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('x_clay') + and minetest.get_modpath('everness') .. '/schematics/everness_coral_volcano_x_clay.mts' + or minetest.get_modpath('everness') .. '/schematics/everness_coral_volcano.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', + spawn_by = 'everness:coral_sand', + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_dunes_coral_bush', + deco_type = 'simple', + place_on = { 'everness:dirt_with_coral_grass', 'everness:coral_sand', 'everness:coral_white_sand' }, + sidelen = 16, + 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_dunes' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:coral_bush' +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_dunes_coral_shrub', + deco_type = 'simple', + place_on = { 'everness:dirt_with_coral_grass', 'everness:coral_sand', 'everness:coral_white_sand' }, + sidelen = 16, + noise_params = { + offset = -0.02, + scale = 0.04, + spread = { x = 200, y = 200, z = 200 }, + seed = 1220999, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_coral_forest_dunes' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:coral_shrub' +}) diff --git a/mapgen_coral_forest_ocean.lua b/mapgen_coral_forest_ocean.lua new file mode 100644 index 0000000..1fad09f --- /dev/null +++ b/mapgen_coral_forest_ocean.lua @@ -0,0 +1,98 @@ +--[[ + 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_ocean.y_max +local y_min = Everness.settings.biomes.everness_coral_forest_ocean.y_min + +-- Coral Forest Ocean + +minetest.register_biome({ + name = 'everness_coral_forest_ocean', + node_top = 'everness:coral_white_sand', + depth_top = 1, + node_filler = 'everness:coral_white_sand', + depth_filler = 3, + node_riverbed = 'everness:coral_white_sand', + depth_riverbed = 2, + node_cave_liquid = 'default:water_source', + node_dungeon = 'everness:coral_desert_cobble', + node_dungeon_alt = 'everness:coral_desert_mossy_cobble', + node_dungeon_stair = 'stairs:stair_coral_desert_cobble', + 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 Forest Under + +-- Coral reef + +minetest.register_decoration({ + name = 'everness:coral_forest_ocean_corals', + deco_type = 'simple', + place_on = { 'everness:coral_white_sand' }, + place_offset_y = -1, + sidelen = 4, + noise_params = { + offset = -4, + scale = 4, + spread = { x = 50, y = 50, z = 50 }, + seed = 7013, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_coral_forest_ocean' }, + y_max = y_max - 5 > y_min and y_max - 5 or y_max, + y_min = y_max - 11 > y_min and y_max - 11 or y_min, + flags = 'force_placement', + decoration = { 'everness:coral_corals', 'everness:coral_jellyfish' }, +}) diff --git a/mapgen_coral_forest_under.lua b/mapgen_coral_forest_under.lua new file mode 100644 index 0000000..0c3e284 --- /dev/null +++ b/mapgen_coral_forest_under.lua @@ -0,0 +1,214 @@ +--[[ + 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_under.y_max +local y_min = Everness.settings.biomes.everness_coral_forest_under.y_min + +-- Coral Forest Under + +minetest.register_biome({ + name = 'everness_coral_forest_under', + node_cave_liquid = { 'default:water_source', 'default:lava_source' }, + node_dungeon = 'everness:coral_desert_cobble', + node_dungeon_alt = 'everness:coral_desert_mossy_cobble', + node_dungeon_stair = 'stairs:stair_coral_desert_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 60, + humidity_point = 50, +}) + +-- +-- Register ores +-- + +-- 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_under' } +}) + +-- +-- Register decorations +-- + +-- Coral Forest Under + +minetest.register_decoration({ + name = 'everness:coral_forest_under_desert_stone_with_moss_floors', + deco_type = 'simple', + place_on = { 'default:stone' }, + place_offset_y = -1, + sidelen = 16, + fill_ratio = 10, + biomes = { 'everness_coral_forest_under' }, + y_max = y_max, + y_min = y_min, + flags = 'all_floors, force_placement', + decoration = { + 'everness:coral_desert_stone_with_moss' + }, +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_under_mold_stone_ceilings', + deco_type = 'simple', + place_on = { 'default:stone' }, + sidelen = 16, + fill_ratio = 0.4, + biomes = { 'everness_coral_forest_under' }, + y_max = y_max, + y_min = y_min, + flags = 'all_ceilings', + decoration = { + 'everness:moss_block' + }, +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_under_coral_tree_bioluminescent', + deco_type = 'schematic', + place_on = { 'everness:coral_desert_stone_with_moss' }, + place_offset_y = 1, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.002, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_coral_forest_under' }, + y_max = y_max - 1500 > y_min and y_max - 1500 or y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_coral_tree_bioluminescent.mts', + flags = 'place_center_x, place_center_z, all_floors, force_placement', + rotation = 'random', + spawn_by = 'everness:coral_desert_stone_with_moss', + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_under_coral_plant_bioluminescent', + deco_type = 'simple', + place_on = { 'everness:coral_desert_stone_with_moss' }, + param2 = 8, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_coral_forest_under' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:coral_plant_bioluminescent', + flags = 'all_floors' +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_under_lumecorn', + deco_type = 'simple', + place_on = { 'everness:coral_desert_stone_with_moss' }, + 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_under' }, + y_max = y_max - 1000 > y_min and y_max - 1000 or y_max, + y_min = y_min, + decoration = 'everness:lumecorn', + flags = 'all_floors', +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_under_vines', + deco_type = 'simple', + place_on = { 'everness:moss_block' }, + sidelen = 16, + fill_ratio = 0.05, + biomes = { 'everness_coral_forest_under' }, + param2 = 8, + decoration = { + 'everness:lumabus_vine_1', + 'everness:lumabus_vine_2', + 'everness:flowered_vine_1', + 'everness:flowered_vine_2' + }, + y_max = y_max, + y_min = y_min, + flags = 'all_ceilings', + spawn_by = 'air', + num_spawn_by = 8 +}) + +minetest.register_decoration({ + name = 'everness:coral_forest_under_plants', + deco_type = 'simple', + place_on = { 'everness:coral_desert_stone_with_moss' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_coral_forest_under' }, + y_max = y_max - 500 > y_min and y_max - 500 or y_max, + y_min = y_min, + decoration = { + 'everness:coral_grass_orange', + 'everness:globulagus', + 'everness:coral_grass_tall', + }, + flags = 'all_floors', +}) diff --git a/mapgen_crystal_forest.lua b/mapgen_crystal_forest.lua new file mode 100644 index 0000000..ecae77f --- /dev/null +++ b/mapgen_crystal_forest.lua @@ -0,0 +1,158 @@ +--[[ + 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.y_max +local y_min = Everness.settings.biomes.everness_crystal_forest.y_min + +-- Crystal Forest + +minetest.register_biome({ + name = 'everness_crystal_forest', + node_top = 'everness:dirt_with_crystal_grass', + depth_top = 1, + node_filler = 'everness:crystal_dirt', + depth_filler = 1, + node_riverbed = 'everness:crystal_dirt', + depth_riverbed = 2, + node_dungeon = 'default:cobble', + node_dungeon_alt = 'default:mossycobble', + node_dungeon_stair = 'stairs:stair_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 35, + humidity_point = 50, +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:crystal_forest_crystal_mushrooms', + deco_type = 'simple', + place_on = { 'everness:dirt_with_crystal_grass' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.006, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_crystal_forest' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:crystal_mushrooms', +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_crystal_tree', + deco_type = 'schematic', + place_on = { 'everness:dirt_with_crystal_grass' }, + place_offset_y = 0, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.002, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_crystal_forest' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_tree.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_crystal_tree_large', + deco_type = 'schematic', + place_on = { 'everness:dirt_with_crystal_grass' }, + place_offset_y = 0, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.001, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_crystal_forest' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_tree_large.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +local function register_crystal_grass_decoration(offset, scale, length) + minetest.register_decoration({ + name = 'everness:crystal_forest_crystal_grass_' .. length, + deco_type = 'simple', + place_on = { 'everness:dirt_with_crystal_grass' }, + sidelen = 16, + noise_params = { + offset = offset, + scale = scale, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_crystal_forest' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:crystal_grass_' .. length, + }) +end + +-- Crystal Grasses + +register_crystal_grass_decoration(-0.03, 0.09, 3) +register_crystal_grass_decoration(-0.015, 0.075, 2) +register_crystal_grass_decoration(0, 0.06, 1) + +minetest.register_decoration({ + name = 'everness:crystal_forest_crystal_bush', + deco_type = 'schematic', + place_on = { 'everness:dirt_with_crystal_grass' }, + sidelen = 16, + place_offset_y = 1, + noise_params = { + offset = -0.004, + scale = 0.01, + spread = { x = 100, y = 100, z = 100 }, + seed = 137, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_crystal_forest' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_bush.mts', + flags = 'place_center_x, place_center_z', +}) diff --git a/mapgen_crystal_forest_dunes.lua b/mapgen_crystal_forest_dunes.lua new file mode 100644 index 0000000..df2bcf8 --- /dev/null +++ b/mapgen_crystal_forest_dunes.lua @@ -0,0 +1,91 @@ +--[[ + 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_dunes.y_max +local y_min = Everness.settings.biomes.everness_crystal_forest_dunes.y_min + +-- Crystal Forest Dunes + +minetest.register_biome({ + name = 'everness_crystal_forest_dunes', + node_top = 'everness:crystal_sand', + depth_top = 1, + node_filler = 'everness:crystal_sand', + depth_filler = 3, + node_riverbed = 'everness:crystal_sand', + depth_riverbed = 2, + node_dungeon = 'default:cobble', + node_dungeon_alt = 'default:mossycobble', + node_dungeon_stair = 'stairs:stair_cobble', + vertical_blend = 1, + y_max = y_max, + y_min = y_min, + heat_point = 35, + humidity_point = 50, +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:crystal_forest_dunes_ruins_1', + deco_type = 'schematic', + place_on = { 'everness:crystal_sand' }, + sidelen = 16, + noise_params = { + offset = -0.0003, + scale = 0.0009, + spread = { x = 200, y = 200, z = 200 }, + seed = 230, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_crystal_forest_dunes' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_forest_ruins_1.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_dunes_ruins_2', + deco_type = 'schematic', + place_on = { 'everness:crystal_sand' }, + place_offset_y = 0, + sidelen = 16, + noise_params = { + offset = -0.0003, + scale = 0.0009, + spread = { x = 200, y = 200, z = 200 }, + seed = 230, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_crystal_forest_dunes' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_forest_ruins_2.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) diff --git a/mapgen_crystal_forest_ocean.lua b/mapgen_crystal_forest_ocean.lua new file mode 100644 index 0000000..6cbf8f9 --- /dev/null +++ b/mapgen_crystal_forest_ocean.lua @@ -0,0 +1,74 @@ +--[[ + 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_ocean.y_max +local y_min = Everness.settings.biomes.everness_crystal_forest_ocean.y_min + +-- Crystal Forest Ocean + +minetest.register_biome({ + name = 'everness_crystal_forest_ocean', + node_top = 'everness:crystal_sand', + depth_top = 1, + node_filler = 'everness:crystal_sand', + depth_filler = 3, + node_riverbed = 'everness:crystal_sand', + depth_riverbed = 2, + node_cave_liquid = 'default:water_source', + node_dungeon = 'default:cobble', + node_dungeon_alt = 'default:mossycobble', + node_dungeon_stair = 'stairs:stair_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 35, + humidity_point = 50, +}) + +-- +-- Register decorations +-- + +-- Coral reef + +minetest.register_decoration({ + name = 'everness:crystal_forest_ocean_corals', + deco_type = 'simple', + place_on = { 'everness:crystal_sand' }, + place_offset_y = -1, + sidelen = 4, + noise_params = { + offset = -4, + scale = 4, + spread = { x = 50, y = 50, z = 50 }, + seed = 7013, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_crystal_forest_ocean' }, + y_max = y_max, + y_min = y_max - 10 > y_min and y_max - 10 or y_min, + flags = 'force_placement', + decoration = { + 'everness:crystal_coral_dark', + 'everness:crystal_coral_light' + }, +}) diff --git a/mapgen_crystal_forest_shore.lua b/mapgen_crystal_forest_shore.lua new file mode 100644 index 0000000..2beb6e9 --- /dev/null +++ b/mapgen_crystal_forest_shore.lua @@ -0,0 +1,70 @@ +--[[ + 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_shore.y_max +local y_min = Everness.settings.biomes.everness_crystal_forest_shore.y_min + +-- Crystal Forest Shore + +minetest.register_biome({ + name = 'everness_crystal_forest_shore', + node_top = 'everness:crystal_sand', + depth_top = 1, + node_filler = 'everness:crystal_sand', + depth_filler = 3, + node_riverbed = 'everness:crystal_sand', + depth_riverbed = 2, + node_cave_liquid = 'default:water_source', + node_dungeon = 'default:cobble', + node_dungeon_alt = 'default:mossycobble', + node_dungeon_stair = 'stairs:stair_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 35, + humidity_point = 50, +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:crystal_forest_shore_crystal_waterlily', + deco_type = 'simple', + place_on = { 'everness:crystal_sand' }, + sidelen = 16, + noise_params = { + offset = -0.12, + scale = 0.3, + spread = { x = 200, y = 200, z = 200 }, + seed = 33, + octaves = 3, + persist = 0.7 + }, + biomes = { 'everness_crystal_forest_shore' }, + y_max = y_max, + y_min = y_max, + decoration = 'everness:crystal_waterlily', + param2 = 0, + param2_max = 3, + place_offset_y = 1, +}) diff --git a/mapgen_crystal_forest_under.lua b/mapgen_crystal_forest_under.lua new file mode 100644 index 0000000..d9ec365 --- /dev/null +++ b/mapgen_crystal_forest_under.lua @@ -0,0 +1,222 @@ +--[[ + 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_under.y_max +local y_min = Everness.settings.biomes.everness_crystal_forest_under.y_min + +-- Crystal Forest Under + +minetest.register_biome({ + name = 'everness_crystal_forest_under', + node_cave_liquid = { 'default:water_source', 'default:lava_source' }, + node_dungeon = 'default:cobble', + node_dungeon_alt = 'default:mossycobble', + node_dungeon_stair = 'stairs:stair_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 35, + humidity_point = 50, +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:crystal_forest_under_floors', + deco_type = 'simple', + place_on = { 'default:stone' }, + sidelen = 16, + place_offset_y = -1, + fill_ratio = 10, + biomes = { 'everness_crystal_forest_under' }, + y_max = y_max, + y_min = y_min, + decoration = { + 'everness:crystal_cave_dirt_with_moss', + 'everness:crystal_moss_block' + }, + flags = 'all_floors, force_placement' +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_under_ceilings', + deco_type = 'simple', + place_on = { 'default:stone' }, + sidelen = 16, + fill_ratio = 0.4, + biomes = { 'everness_crystal_forest_under' }, + y_max = y_max, + y_min = y_min, + flags = 'all_ceilings', + decoration = { + 'everness:crystal_moss_block' + }, +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_under_vines', + deco_type = 'simple', + place_on = { 'everness:crystal_moss_block' }, + sidelen = 16, + fill_ratio = 0.05, + biomes = { 'everness_crystal_forest_under' }, + param2 = 8, + decoration = { + 'everness:twisted_vine_1', + 'everness:twisted_vine_2', + 'everness:golden_vine_1', + 'everness:golden_vine_2' + }, + y_max = y_max, + y_min = y_min, + flags = 'all_ceilings', + spawn_by = 'air', + num_spawn_by = 8 +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_under_crystal_purple_cluster', + deco_type = 'schematic', + place_on = { + 'everness:crystal_cave_dirt_with_moss', + 'everness:crystal_moss_block' + }, + place_offset_y = -7, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.002, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_crystal_forest_under' }, + y_max = y_max - 1500 > y_min and y_max - 1500 or y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_purple_cluster.mts', + flags = 'place_center_x, place_center_z, all_floors, force_placement', + rotation = 'random', + spawn_by = { + 'everness:crystal_cave_dirt_with_moss', + 'everness:crystal_moss_block' + }, + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_under_crystal_orange_cluster', + deco_type = 'schematic', + place_on = { + 'everness:crystal_cave_dirt_with_moss', + 'everness:crystal_moss_block' + }, + sidelen = 16, + place_offset_y = 1, + noise_params = { + offset = 0, + scale = 0.002, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_crystal_forest_under' }, + y_max = y_max - 1000 > y_min and y_max - 1000 or y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_crystal_orange_cluster.mts', + flags = 'place_center_x, place_center_z, all_floors', + rotation = 'random', + spawn_by = { + 'everness:crystal_cave_dirt_with_moss', + 'everness:crystal_moss_block' + }, + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_under_crystal_cyan', + deco_type = 'simple', + place_on = { + 'everness:crystal_cave_dirt_with_moss', + 'everness:crystal_moss_block' + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_crystal_forest_under' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:crystal_cyan', + flags = 'all_floors', + param2 = 1 +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_under_twisted_crystal_grass', + deco_type = 'simple', + place_on = { + 'everness:crystal_cave_dirt_with_moss', + 'everness:crystal_moss_block' + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.2, + spread = { x = 100, y = 100, z = 100 }, + seed = 801, + octaves = 3, + persist = 0.7 + }, + biomes = { 'everness_crystal_forest_under' }, + y_max = y_max - 500 > y_min and y_max - 500 or y_max, + y_min = y_min, + decoration = 'everness:twisted_crystal_grass', + flags = 'all_floors' +}) + +minetest.register_decoration({ + name = 'everness:crystal_forest_under_crystal_cyan_ceiling', + deco_type = 'simple', + place_on = { 'default:stone' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_crystal_forest_under' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:crystal_cyan', + flags = 'all_ceilings', +}) diff --git a/mapgen_cursed_lands.lua b/mapgen_cursed_lands.lua new file mode 100644 index 0000000..acfaaa6 --- /dev/null +++ b/mapgen_cursed_lands.lua @@ -0,0 +1,186 @@ +--[[ + 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.y_max +local y_min = Everness.settings.biomes.everness_cursed_lands.y_min + +-- Cursed Lands + +minetest.register_biome({ + name = 'everness_cursed_lands', + node_top = 'everness:dirt_with_cursed_grass', + depth_top = 1, + node_filler = 'everness:cursed_dirt', + depth_filler = 1, + node_riverbed = 'everness:cursed_dirt', + depth_riverbed = 2, + node_dungeon = 'default:cobble', + node_dungeon_alt = 'default:mossycobble', + node_dungeon_stair = 'stairs:stair_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 45, + humidity_point = 85, +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:cursed_lands_cemetery', + deco_type = 'schematic', + place_on = { 'everness:dirt_with_cursed_grass' }, + sidelen = 8, + noise_params = { + offset = -0.0003, + scale = 0.0009, + spread = { x = 200, y = 200, z = 200 }, + seed = 230, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_cursed_lands' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_cemetery.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_ruins_1', + deco_type = 'schematic', + place_on = { 'everness:dirt_with_cursed_grass' }, + sidelen = 8, + noise_params = { + offset = -0.0003, + scale = 0.0009, + spread = { x = 200, y = 200, z = 200 }, + seed = 230, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_cursed_lands' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_ruins_1.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +local function register_red_castor_decoration(offset, scale, length) + minetest.register_decoration({ + name = 'everness:cursed_lands_red_castor_' .. length, + deco_type = 'simple', + place_on = { 'everness:dirt_with_cursed_grass' }, + sidelen = 16, + noise_params = { + offset = offset, + scale = scale, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_cursed_lands' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:red_castor_' .. length, + }) +end + +-- Red Castor Grasses + +register_red_castor_decoration(-0.03, 0.09, 4) +register_red_castor_decoration(-0.015, 0.075, 3) +register_red_castor_decoration(0, 0.06, 2) +register_red_castor_decoration(0.015, 0.045, 1) + +minetest.register_decoration({ + name = 'everness:cursed_lands_cursed_mud', + deco_type = 'simple', + place_on = { 'everness:dirt_with_cursed_grass', 'everness:cursed_dirt', 'everness:cursed_sand' }, + place_offset_y = -1, + sidelen = 4, + noise_params = { + offset = -4, + scale = 4, + spread = { x = 50, y = 50, z = 50 }, + seed = 7013, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_cursed_lands' }, + y_max = y_max, + y_min = y_min, + flags = 'force_placement', + decoration = { 'everness:cursed_mud' }, +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_dry_tree', + deco_type = 'schematic', + place_on = { + 'everness:dirt_with_cursed_grass', + 'everness:cursed_dirt', + 'everness:cursed_sand', + 'everness:cursed_stone' + }, + place_offset_y = 0, + sidelen = 16, + noise_params = { + offset = 0.0015, + scale = 0.0021, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_cursed_lands' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_dry_tree.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_cursed_bush', + deco_type = 'schematic', + place_on = { 'everness:dirt_with_cursed_grass' }, + sidelen = 16, + place_offset_y = 1, + noise_params = { + offset = -0.004, + scale = 0.01, + spread = { x = 100, y = 100, z = 100 }, + seed = 137, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_cursed_lands' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_cursed_bush.mts', + flags = 'place_center_x, place_center_z', +}) diff --git a/mapgen_cursed_lands_dunes.lua b/mapgen_cursed_lands_dunes.lua new file mode 100644 index 0000000..83abc04 --- /dev/null +++ b/mapgen_cursed_lands_dunes.lua @@ -0,0 +1,75 @@ +--[[ + 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_dunes.y_max +local y_min = Everness.settings.biomes.everness_cursed_lands_dunes.y_min + +-- Cursed Lands Dunes + +minetest.register_biome({ + name = 'everness_cursed_lands_dunes', + node_top = 'everness:cursed_sand', + depth_top = 1, + node_filler = 'everness:cursed_sand', + depth_filler = 3, + node_riverbed = 'everness:cursed_sand', + depth_riverbed = 2, + node_dungeon = 'default:cobble', + node_dungeon_alt = 'default:mossycobble', + node_dungeon_stair = 'stairs:stair_cobble', + vertical_blend = 1, + y_max = y_max, + y_min = y_min, + heat_point = 45, + humidity_point = 85, +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:cursed_lands_dunes_dry_tree', + deco_type = 'schematic', + place_on = { + 'everness:dirt_with_cursed_grass', + 'everness:cursed_dirt', + 'everness:cursed_sand', + 'everness:cursed_stone' + }, + place_offset_y = 0, + sidelen = 16, + noise_params = { + offset = 0.0015, + scale = 0.0021, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_cursed_lands_dunes' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_dry_tree.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) diff --git a/mapgen_cursed_lands_ocean.lua b/mapgen_cursed_lands_ocean.lua new file mode 100644 index 0000000..be46ee9 --- /dev/null +++ b/mapgen_cursed_lands_ocean.lua @@ -0,0 +1,100 @@ +--[[ + 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_ocean.y_max +local y_min = Everness.settings.biomes.everness_cursed_lands_ocean.y_min + +-- Cursed Lands Ocean + +minetest.register_biome({ + name = 'everness_cursed_lands_ocean', + node_top = 'everness:cursed_stone', + depth_top = 1, + node_filler = 'everness:cursed_stone', + depth_filler = 3, + node_riverbed = 'everness:cursed_stone', + depth_riverbed = 2, + node_cave_liquid = 'default:water_source', + node_dungeon = 'default:cobble', + node_dungeon_alt = 'default:mossycobble', + node_dungeon_stair = 'stairs:stair_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 45, + humidity_point = 85, +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:cursed_lands_ocean_dry_tree', + deco_type = 'schematic', + place_on = { + 'everness:dirt_with_cursed_grass', + 'everness:cursed_dirt', + 'everness:cursed_sand', + 'everness:cursed_stone' + }, + place_offset_y = 0, + sidelen = 16, + noise_params = { + offset = 0.0015, + scale = 0.0021, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_cursed_lands_ocean' }, + y_max = y_max, + y_min = y_max - (y_max + 1), + schematic = minetest.get_modpath('everness') .. '/schematics/everness_dry_tree.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +-- Spine Kelp + +minetest.register_decoration({ + name = 'everness:sand_with_spine_kelp', + deco_type = 'simple', + place_on = { 'everness:cursed_stone' }, + place_offset_y = -1, + sidelen = 16, + noise_params = { + offset = -0.04, + scale = 0.1, + spread = { x = 200, y = 200, z = 200 }, + seed = 87112, + octaves = 3, + persist = 0.7 + }, + biomes = { 'everness_cursed_lands_ocean' }, + y_max = y_max - (y_max + 5), + y_min = y_max - (y_max + 10), + flags = 'force_placement', + decoration = 'everness:sand_with_spine_kelp', + param2 = 48, + param2_max = 96, +}) diff --git a/mapgen_cursed_lands_swamp.lua b/mapgen_cursed_lands_swamp.lua new file mode 100644 index 0000000..cf38be9 --- /dev/null +++ b/mapgen_cursed_lands_swamp.lua @@ -0,0 +1,91 @@ +--[[ + 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_swamp.y_max +local y_min = Everness.settings.biomes.everness_cursed_lands_swamp.y_min + +-- Cursed Lands Swamp + +minetest.register_biome({ + name = 'everness_cursed_lands_swamp', + node_top = 'everness:cursed_stone', + depth_top = 1, + node_filler = 'everness:cursed_stone', + depth_filler = 3, + node_riverbed = 'everness:cursed_stone', + depth_riverbed = 2, + node_dungeon = 'default:cobble', + node_dungeon_alt = 'default:mossycobble', + node_dungeon_stair = 'stairs:stair_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 45, + humidity_point = 85, +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:cursed_lands_swamp_dry_tree', + deco_type = 'schematic', + place_on = { 'everness:cursed_stone' }, + place_offset_y = 0, + sidelen = 16, + -- Noise tuned to place swamp trees where papyrus is absent + noise_params = { + offset = 0.0, + scale = -0.1, + spread = { x = 200, y = 200, z = 200 }, + seed = 354, + octaves = 1, + persist = 0.5 + }, + biomes = { 'everness_cursed_lands_swamp' }, + y_max = y_min, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_dry_tree.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_swamp_marsh_grass', + deco_type = 'schematic', + place_on = { 'everness:cursed_stone' }, + place_offset_y = 1, + sidelen = 16, + -- Noise tuned to place where papyrus is absent + noise_params = { + offset = 0.0, + scale = -0.1, + spread = { x = 200, y = 200, z = 200 }, + seed = 354, + octaves = 1, + persist = 0.5 + }, + biomes = { 'everness_cursed_lands_swamp' }, + y_max = y_max, + y_min = y_max, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_marsh_grass.mts', +}) diff --git a/mapgen_cursed_lands_under.lua b/mapgen_cursed_lands_under.lua new file mode 100644 index 0000000..5238d53 --- /dev/null +++ b/mapgen_cursed_lands_under.lua @@ -0,0 +1,242 @@ +--[[ + 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_under.y_max +local y_min = Everness.settings.biomes.everness_cursed_lands_under.y_min + +-- Cursed Lands Under + +minetest.register_biome({ + name = 'everness_cursed_lands_under', + node_cave_liquid = { 'default:water_source', 'default:lava_source' }, + node_dungeon = 'default:cobble', + node_dungeon_alt = 'default:mossycobble', + node_dungeon_stair = 'stairs:stair_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 45, + humidity_point = 85, +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:cursed_lands_under_soul_sandstone_floors', + deco_type = 'simple', + place_on = { 'default:stone' }, + place_offset_y = -1, + sidelen = 16, + fill_ratio = 10, + biomes = { 'everness_cursed_lands_under' }, + y_max = y_max, + y_min = y_min, + flags = 'all_floors, force_placement', + decoration = { + 'everness:soul_sandstone_veined' + }, +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_under_mold_stone_ceilings', + deco_type = 'simple', + place_on = { 'default:stone' }, + sidelen = 16, + fill_ratio = 0.4, + biomes = { 'everness_cursed_lands_under' }, + y_max = y_max, + y_min = y_min, + flags = 'all_ceilings', + decoration = { + 'everness:moss_block' + }, +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_under_skull_with_candle', + deco_type = 'simple', + place_on = { 'everness:soul_sandstone_veined' }, + 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_cursed_lands_under' }, + y_max = y_max - 1000 > y_min and y_max - 1000 or y_max, + y_min = y_min, + decoration = 'everness:skull_with_candle', + flags = 'all_floors', + param2_max = 3 +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_under_vines', + deco_type = 'simple', + place_on = { 'everness:moss_block' }, + sidelen = 16, + fill_ratio = 0.05, + biomes = { 'everness_cursed_lands_under' }, + param2 = 8, + decoration = { + 'everness:eye_vine_1', + 'everness:eye_vine_2', + 'everness:ivis_vine_1', + 'everness:ivis_vine_2' + }, + y_max = y_max, + y_min = y_min, + flags = 'all_ceilings', + spawn_by = 'air', + num_spawn_by = 8 +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_under_pumpkin_lantern', + deco_type = 'simple', + place_on = { 'everness:soul_sandstone_veined' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.002, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_cursed_lands_under' }, + y_max = y_max - 500 > y_min and y_max - 500 or y_max, + y_min = y_min, + decoration = { 'everness:cursed_pumpkin_lantern' }, + flags = 'all_floors', + param2_max = 3 +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_under_cursed_dream_tree', + deco_type = 'schematic', + place_on = { 'everness:soul_sandstone_veined' }, + place_offset_y = 1, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.002, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_cursed_lands_under' }, + y_max = y_max - 1500 > y_min and y_max - 1500 or y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_cursed_dream_tree.mts', + flags = 'place_center_x, place_center_z, all_floors, force_placement', + rotation = 'random', + spawn_by = 'everness:soul_sandstone_veined', + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_under_plants', + deco_type = 'simple', + place_on = { 'everness:soul_sandstone_veined' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_cursed_lands_under' }, + y_max = y_max, + y_min = y_min, + decoration = { + 'everness:egg_plant', + 'everness:ngrass_2', + }, + flags = 'all_floors', +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_under_ivis_moss', + deco_type = 'simple', + place_on = { 'everness:soul_sandstone_veined' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_cursed_lands_under' }, + y_max = y_max, + y_min = y_min, + decoration = { + 'everness:ivis_moss', + }, + flags = 'all_floors', + param2 = 3 +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_under_ngrass_1', + deco_type = 'simple', + place_on = { 'everness:soul_sandstone_veined' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_cursed_lands_under' }, + y_max = y_max, + y_min = y_min, + decoration = { + 'everness:ngrass_1', + }, + flags = 'all_floors', + param2 = 2 +}) + +minetest.register_decoration({ + name = 'everness:cursed_lands_under_cobweb_floors', + deco_type = 'simple', + place_on = { 'everness:soul_sandstone_veined' }, + sidelen = 16, + fill_ratio = 0.02, + biomes = { 'everness_cursed_lands_under' }, + y_max = y_max, + y_min = y_min, + decoration = { 'everness:cobweb' }, + flags = 'all_floors' +}) diff --git a/mapgen_forsaken_desert.lua b/mapgen_forsaken_desert.lua new file mode 100644 index 0000000..19055fa --- /dev/null +++ b/mapgen_forsaken_desert.lua @@ -0,0 +1,197 @@ +--[[ + 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_forsaken_desert.y_max +local y_min = Everness.settings.biomes.everness_forsaken_desert.y_min + +-- Forsaken Desert + +minetest.register_biome({ + name = 'everness_forsaken_desert', + node_top = 'everness:forsaken_desert_sand', + depth_top = 1, + node_stone = 'everness:forsaken_desert_stone', + node_filler = 'everness:forsaken_desert_sand', + depth_filler = 1, + node_riverbed = 'everness:forsaken_desert_sand', + depth_riverbed = 2, + node_dungeon = 'everness:forsaken_desert_brick', + node_dungeon_alt = 'everness:forsaken_desert_brick_red', + node_dungeon_stair = 'stairs:stair_forsaken_desert_brick', + y_max = y_max, + y_min = y_min, + heat_point = 100, + humidity_point = 30, +}) + +-- +-- Register ores +-- + +-- Stratum ores. +-- These obviously first. + +minetest.register_ore({ + ore_type = 'stratum', + ore = 'everness:forsaken_desert_cobble', + wherein = { 'everness:forsaken_desert_stone' }, + clust_scarcity = 1, + y_max = (y_max - y_max) + 46, + y_min = (y_max - y_max) + 4, + noise_params = { + offset = 28, + scale = 16, + spread = { x = 128, y = 128, z = 128 }, + seed = 90122, + octaves = 1, + }, + stratum_thickness = 4, + biomes = { 'everness_forsaken_desert' }, +}) + +minetest.register_ore({ + ore_type = 'stratum', + ore = 'everness:forsaken_desert_cobble', + wherein = { 'everness:forsaken_desert_stone' }, + clust_scarcity = 1, + y_max = (y_max - y_max) + 42, + y_min = (y_max - y_max) + 6, + noise_params = { + offset = 24, + scale = 16, + spread = { x = 128, y = 128, z = 128 }, + seed = 90122, + octaves = 1, + }, + stratum_thickness = 2, + biomes = { 'everness_forsaken_desert' }, +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:forsaken_desert_sand_plants_1', + deco_type = 'simple', + place_on = { 'everness:forsaken_desert_sand' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_forsaken_desert' }, + y_max = y_max, + y_min = y_min, + decoration = { 'everness:forsaken_desert_plant_1' }, + param2 = 11, +}) + +minetest.register_decoration({ + name = 'everness:forsaken_desert_sand_plants_2', + deco_type = 'simple', + place_on = { 'everness:forsaken_desert_sand' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_forsaken_desert' }, + y_max = y_max, + y_min = y_min, + decoration = { + 'everness:forsaken_desert_plant_2', + 'everness:forsaken_desert_plant_3' + }, + param2 = 8, +}) + +minetest.register_decoration({ + name = 'everness:forsaken_desert_termite_nest', + deco_type = 'schematic', + place_on = { 'everness:forsaken_desert_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, + }, + biomes = { 'everness_forsaken_desert' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_termite_nest.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +minetest.register_decoration({ + name = 'everness:forsaken_desert_hollow_tree', + deco_type = 'schematic', + place_on = { 'everness:forsaken_desert_sand' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.002, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_forsaken_desert' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_hollow_tree.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +minetest.register_decoration({ + name = 'everness:forsaken_desert_hollow_tree_large', + deco_type = 'schematic', + place_on = { 'everness:forsaken_desert_sand' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.001, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_forsaken_desert' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_hollow_tree_large.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) diff --git a/mapgen_forsaken_desert_ocean.lua b/mapgen_forsaken_desert_ocean.lua new file mode 100644 index 0000000..d8ddc68 --- /dev/null +++ b/mapgen_forsaken_desert_ocean.lua @@ -0,0 +1,51 @@ +--[[ + 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_forsaken_desert_ocean.y_max +local y_min = Everness.settings.biomes.everness_forsaken_desert_ocean.y_min + +-- Forsaken Desert Ocean + +minetest.register_biome({ + name = 'everness_forsaken_desert_ocean', + node_top = 'everness:dry_ocean_dirt', + depth_top = 1, + node_stone = 'everness:forsaken_desert_stone', + node_filler = 'everness:dry_ocean_dirt', + depth_filler = 3, + node_water_top = 'everness:dry_ocean_dirt', + depth_water_top = 10, + node_river_water = 'everness:dry_ocean_dirt', + node_riverbed = 'everness:dry_ocean_dirt', + depth_riverbed = 2, + node_dungeon = 'everness:forsaken_desert_brick', + node_dungeon_alt = 'everness:forsaken_desert_brick_red', + node_dungeon_stair = 'stairs:stair_forsaken_desert_brick', + y_max = y_max, + y_min = y_min, + heat_point = 100, + humidity_point = 30, +}) + +-- +-- Register decorations +-- diff --git a/mapgen_forsaken_desert_under.lua b/mapgen_forsaken_desert_under.lua new file mode 100644 index 0000000..51262f5 --- /dev/null +++ b/mapgen_forsaken_desert_under.lua @@ -0,0 +1,197 @@ +--[[ + 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_forsaken_desert_under.y_max +local y_min = Everness.settings.biomes.everness_forsaken_desert_under.y_min + +-- Forsaken Desert Under + +minetest.register_biome({ + name = 'everness_forsaken_desert_under', + node_cave_liquid = { 'default:water_source', 'default:lava_source' }, + node_dungeon = 'default:cobble', + node_dungeon_alt = 'default:mossycobble', + node_dungeon_stair = 'stairs:stair_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 100, + humidity_point = 30, +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:forsaken_desert_under_floors', + deco_type = 'simple', + place_on = { 'default:stone' }, + sidelen = 16, + place_offset_y = -1, + fill_ratio = 10, + biomes = { 'everness_forsaken_desert_under' }, + y_max = y_max, + y_min = y_min, + flags = 'all_floors, force_placement', + decoration = { + 'everness:forsaken_desert_sand' + }, +}) + +minetest.register_decoration({ + name = 'everness:forsaken_desert_under_floors_chiseled', + deco_type = 'simple', + place_on = { 'everness:forsaken_desert_sand' }, + sidelen = 16, + place_offset_y = -1, + fill_ratio = 0.2, + biomes = { 'everness_forsaken_desert_under' }, + y_max = y_max - 500 > y_min and y_max - 500 or y_max, + y_min = y_min, + decoration = { + 'everness:forsaken_desert_chiseled_stone', + 'everness:forsaken_desert_brick', + 'everness:forsaken_desert_brick_red', + 'everness:forsaken_desert_engraved_stone', + 'everness:forsaken_desert_cobble_red', + 'everness:forsaken_desert_cobble', + }, + flags = 'all_floors, force_placement' +}) + +minetest.register_decoration({ + name = 'everness:forsaken_desert_under_ceilings', + deco_type = 'simple', + place_on = { 'everness:forsaken_desert_sand' }, + sidelen = 16, + fill_ratio = 0.4, + biomes = { 'everness_forsaken_desert_under' }, + y_max = y_max, + y_min = y_min, + flags = 'all_ceilings', + decoration = { + 'everness:moss_block' + }, +}) + +minetest.register_decoration({ + name = 'everness:forsaken_desert_under_cactus_blue', + deco_type = 'simple', + place_on = { 'everness:forsaken_desert_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, + }, + biomes = { 'everness_forsaken_desert_under' }, + y_max = y_max - 500 > y_min and y_max - 500 or y_max, + y_min = y_min, + decoration = 'everness:cactus_blue', + height = 2, + height_max = 6, + flags = 'all_floors' +}) + +minetest.register_decoration({ + name = 'everness:forsaken_desert_under_cave_barrel_cactus', + deco_type = 'simple', + place_on = { + 'everness:forsaken_desert_sand', + 'everness:forsaken_desert_chiseled_stone', + 'everness:forsaken_desert_brick', + 'everness:forsaken_desert_engraved_stone' + }, + sidelen = 16, + fill_ratio = 0.005, + biomes = { 'everness_forsaken_desert_under' }, + y_max = y_max - 250 > y_min and y_max - 250 or y_max, + y_min = y_min, + decoration = { + 'everness:cave_barrel_cactus', + 'everness:venus_trap' + }, + flags = 'all_floors', + param2_max = 3 +}) + +minetest.register_decoration({ + name = 'everness:forsaken_desert_under_cave_illumi_root', + deco_type = 'simple', + place_on = { + 'everness:forsaken_desert_sand', + 'everness:forsaken_desert_chiseled_stone', + 'everness:forsaken_desert_brick', + 'everness:forsaken_desert_engraved_stone' + }, + sidelen = 16, + fill_ratio = 0.005, + biomes = { 'everness_forsaken_desert_under' }, + y_max = y_max, + y_min = y_min, + decoration = { 'everness:illumi_root' }, + flags = 'all_floors' +}) + +minetest.register_decoration({ + name = 'everness:forsaken_desert_under_vines', + deco_type = 'simple', + place_on = { 'everness:moss_block' }, + sidelen = 16, + fill_ratio = 0.05, + biomes = { 'everness_forsaken_desert_under' }, + param2 = 8, + decoration = { + 'everness:dense_vine_1', + 'everness:dense_vine_2' + }, + y_max = y_max, + y_min = y_min, + flags = 'all_ceilings', + spawn_by = 'air', + num_spawn_by = 8 +}) + +minetest.register_decoration({ + name = 'everness:forsaken_desert_under_hollow_tree', + deco_type = 'simple', + place_on = { 'everness:forsaken_desert_sand' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.006, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_forsaken_desert_under' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:hollow_tree', + height = 3, + height_max = 7, + flags = 'all_floors' +}) diff --git a/mapgen_forsaken_tundra.lua b/mapgen_forsaken_tundra.lua new file mode 100644 index 0000000..2b19039 --- /dev/null +++ b/mapgen_forsaken_tundra.lua @@ -0,0 +1,250 @@ +--[[ + 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_forsaken_tundra.y_max +local y_min = Everness.settings.biomes.everness_forsaken_tundra.y_min + +-- Forsaken Tundra + +minetest.register_biome({ + name = 'everness_forsaken_tundra', + node_top = 'everness:forsaken_tundra_dirt', + depth_top = 1, + node_stone = 'everness:forsaken_tundra_stone', + node_filler = 'everness:forsaken_tundra_dirt', + depth_filler = 1, + node_riverbed = 'everness:forsaken_tundra_beach_sand', + depth_riverbed = 2, + node_dungeon = 'everness:forsaken_tundra_cobble', + node_dungeon_alt = 'everness:forsaken_tundra_brick', + node_dungeon_stair = 'stairs:stair_forsaken_tundra_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 10, + humidity_point = 10, +}) + +-- +-- Register ores +-- + +-- Blob ore. +-- These before scatter ores to avoid other ores in blobs. + +minetest.register_ore({ + ore_type = 'blob', + ore = 'everness:sulfur_stone', + wherein = { 'default:stone', 'everness:forsaken_tundra_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_forsaken_tundra' } +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_volcanic_sulfur', + deco_type = 'simple', + place_on = { 'everness:forsaken_tundra_dirt' }, + sidelen = 4, + noise_params = { + offset = -0.7, + scale = 4.0, + spread = { x = 16, y = 16, z = 16 }, + seed = 513337, + octaves = 1, + persist = 0.0, + flags = 'absvalue, eased' + }, + biomes = { 'everness_forsaken_tundra' }, + y_max = y_max, + y_min = y_min, + decoration = { 'everness:volcanic_sulfur' }, + place_offset_y = -1, + flags = 'force_placement', +}) + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_sulfur_stone', + deco_type = 'simple', + place_on = { + 'everness:forsaken_tundra_dirt', + 'everness:volcanic_sulfur' + }, + sidelen = 4, + noise_params = { + offset = -4, + scale = 4, + spread = { x = 50, y = 50, z = 50 }, + seed = 7013, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_forsaken_tundra' }, + y_max = y_max, + y_min = y_min, + place_offset_y = -1, + flags = 'force_placement', + decoration = { 'everness:sulfur_stone' }, +}) + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_volcanic_sulfur_on_top_of_sulfur_stone', + deco_type = 'simple', + place_on = { 'everness:sulfur_stone' }, + sidelen = 4, + noise_params = { + offset = -4, + scale = 4, + spread = { x = 50, y = 50, z = 50 }, + seed = 7013, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_forsaken_tundra' }, + y_max = y_max, + y_min = y_min, + decoration = { 'everness:volcanic_sulfur' }, +}) + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_dirt_with_grass', + deco_type = 'simple', + place_on = { + 'everness:forsaken_tundra_dirt', + 'everness:volcanic_sulfur' + }, + sidelen = 4, + noise_params = { + offset = -0.8, + scale = 2.0, + spread = { x = 100, y = 100, z = 100 }, + seed = 53995, + octaves = 3, + persist = 1.0 + }, + biomes = { 'everness_forsaken_tundra' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:forsaken_tundra_dirt_with_grass', + place_offset_y = -1, + flags = 'force_placement', +}) + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_bloodpore_plant', + deco_type = 'simple', + place_on = { 'everness:forsaken_tundra_dirt_with_grass' }, + sidelen = 16, + noise_params = { + offset = -0.03, + scale = 0.09, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_forsaken_tundra' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:bloodspore_plant', + param2 = 8, +}) + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_bloodspore_plant_on_dirt', + deco_type = 'simple', + place_on = { 'everness:forsaken_tundra_dirt' }, + spawn_by = 'everness:forsaken_tundra_dirt_with_grass', + num_spawn_by = 1, + sidelen = 16, + noise_params = { + offset = -0.03, + scale = 0.09, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_forsaken_tundra' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:bloodspore_plant', + param2 = 8, +}) + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_rocks', + deco_type = 'schematic', + place_on = { 'everness:forsaken_tundra_dirt', 'everness:forsaken_tundra_dirt_with_grass' }, + 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_forsaken_tundra' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_forsaken_tundra_rocks.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', +}) + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_sulfur_volcano', + deco_type = 'schematic', + place_on = { 'everness:forsaken_tundra_dirt', 'everness:volcanic_sulfur' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.002, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_forsaken_tundra' }, + y_max = y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_sulfur_volcano.mts', + flags = 'place_center_x, place_center_z', + rotation = 'random', + spawn_by = { 'everness:forsaken_tundra_dirt', 'everness:volcanic_sulfur' }, + num_spawn_by = 8, +}) diff --git a/mapgen_forsaken_tundra_beach.lua b/mapgen_forsaken_tundra_beach.lua new file mode 100644 index 0000000..9a91e8b --- /dev/null +++ b/mapgen_forsaken_tundra_beach.lua @@ -0,0 +1,96 @@ +--[[ + 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_forsaken_tundra_beach.y_max +local y_min = Everness.settings.biomes.everness_forsaken_tundra_beach.y_min + +-- Forsaken Tundra Beach + +minetest.register_biome({ + name = 'everness_forsaken_tundra_beach', + node_top = 'everness:forsaken_tundra_beach_sand', + depth_top = 1, + node_filler = 'everness:forsaken_tundra_beach_sand', + depth_filler = 2, + node_riverbed = 'everness:forsaken_tundra_beach_sand', + depth_riverbed = 2, + node_dungeon = 'everness:forsaken_tundra_cobble', + node_dungeon_alt = 'everness:forsaken_tundra_brick', + node_dungeon_stair = 'stairs:stair_forsaken_tundra_cobble', + vertical_blend = 1, + y_max = y_max, + y_min = y_min, + heat_point = 10, + humidity_point = 10, +}) + +-- +-- Register ores +-- + +-- Blob ore. +-- These before scatter ores to avoid other ores in blobs. + +minetest.register_ore({ + ore_type = 'blob', + ore = 'everness:sulfur_stone', + wherein = { 'default:stone', 'everness:forsaken_tundra_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_forsaken_tundra_beach' } +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_beach_sand_with_shells', + deco_type = 'simple', + place_on = { 'everness:forsaken_tundra_beach_sand' }, + sidelen = 4, + noise_params = { + offset = -4, + scale = 4, + spread = { x = 50, y = 50, z = 50 }, + seed = 7013, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_forsaken_tundra_beach' }, + y_max = y_max, + y_min = y_min, + place_offset_y = -1, + flags = 'force_placement', + decoration = { 'everness:forsaken_tundra_beach_sand_with_shells' }, +}) diff --git a/mapgen_forsaken_tundra_ocean.lua b/mapgen_forsaken_tundra_ocean.lua new file mode 100644 index 0000000..e45ad86 --- /dev/null +++ b/mapgen_forsaken_tundra_ocean.lua @@ -0,0 +1,98 @@ +--[[ + 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_forsaken_tundra_ocean.y_max +local y_min = Everness.settings.biomes.everness_forsaken_tundra_ocean.y_min + +-- Forsaken Tundra Ocean + +minetest.register_biome({ + name = 'everness_forsaken_tundra_ocean', + node_top = 'everness:forsaken_tundra_beach_sand', + depth_top = 1, + node_stone = 'everness:forsaken_tundra_stone', + node_filler = 'everness:forsaken_tundra_beach_sand', + depth_filler = 3, + node_riverbed = 'everness:forsaken_tundra_beach_sand', + depth_riverbed = 2, + node_cave_liquid = 'default:water_source', + node_dungeon = 'everness:forsaken_tundra_cobble', + node_dungeon_alt = 'everness:forsaken_tundra_brick', + node_dungeon_stair = 'stairs:stair_forsaken_tundra_cobble', + vertical_blend = 1, + y_max = y_max, + y_min = y_min, + heat_point = 10, + humidity_point = 10, +}) + +-- +-- Register ores +-- + +-- Blob ore. +-- These before scatter ores to avoid other ores in blobs. + +minetest.register_ore({ + ore_type = 'blob', + ore = 'everness:sulfur_stone', + wherein = { 'default:stone', 'everness:forsaken_tundra_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_forsaken_tundra_ocean' } +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_beach_sand_with_shells', + deco_type = 'simple', + place_on = { 'everness:forsaken_tundra_beach_sand' }, + sidelen = 4, + noise_params = { + offset = -4, + scale = 4, + spread = { x = 50, y = 50, z = 50 }, + seed = 7013, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_forsaken_tundra_ocean' }, + y_max = y_max, + y_min = y_min, + place_offset_y = -1, + flags = 'force_placement', + decoration = { 'everness:forsaken_tundra_beach_sand_with_shells' }, +}) diff --git a/mapgen_forsaken_tundra_under.lua b/mapgen_forsaken_tundra_under.lua new file mode 100644 index 0000000..35bd799 --- /dev/null +++ b/mapgen_forsaken_tundra_under.lua @@ -0,0 +1,271 @@ +--[[ + 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_forsaken_tundra_under.y_max +local y_min = Everness.settings.biomes.everness_forsaken_tundra_under.y_min + +-- Forsaken Tundra Under + +minetest.register_biome({ + name = 'everness_forsaken_tundra_under', + node_cave_liquid = { 'default:water_source', 'default:lava_source' }, + node_dungeon = 'everness:forsaken_tundra_cobble', + node_dungeon_alt = 'everness:forsaken_tundra_brick', + node_dungeon_stair = 'stairs:stair_forsaken_tundra_cobble', + y_max = y_max, + y_min = y_min, + heat_point = 10, + humidity_point = 10, +}) + +-- +-- Register ores +-- + +-- Blob ore. +-- These before scatter ores to avoid other ores in blobs. + +minetest.register_ore({ + ore_type = 'blob', + ore = 'everness:sulfur_stone', + wherein = { 'default:stone', 'everness:forsaken_tundra_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_forsaken_tundra_under' } +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_under_mold_stone_floors', + deco_type = 'simple', + place_on = { 'default:stone' }, + sidelen = 16, + place_offset_y = -1, + fill_ratio = 10, + biomes = { 'everness_forsaken_tundra_under' }, + y_max = y_max, + y_min = y_min, + flags = 'all_floors, force_placement', + decoration = { + 'everness:mold_stone_with_moss' + }, +}) + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_under_mold_stone_ceilings', + deco_type = 'simple', + place_on = { 'default:stone' }, + sidelen = 16, + fill_ratio = 0.4, + biomes = { 'everness_forsaken_tundra_under' }, + y_max = y_max, + y_min = y_min, + flags = 'all_ceilings', + decoration = { + 'everness:moss_block' + }, +}) + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_under_obsidian_floors', + deco_type = 'simple', + place_on = { 'default:stone', 'everness:mold_stone_with_moss' }, + sidelen = 16, + place_offset_y = -1, + fill_ratio = 0.02, + biomes = { 'everness_forsaken_tundra_under' }, + y_max = y_max - 500 > y_min and y_max - 500 or y_max, + y_min = y_min, + decoration = { + 'everness:blue_crying_obsidian', + 'everness:blue_weeping_obsidian', + 'everness:weeping_obsidian' + }, + flags = 'all_floors, force_placement' +}) + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_under_obsidian_ceilings', + deco_type = 'simple', + place_on = { 'default:stone', 'everness:moss_block' }, + sidelen = 16, + place_offset_y = -1, + fill_ratio = 0.02, + biomes = { 'everness_forsaken_tundra_under' }, + y_max = y_max - 500 > y_min and y_max - 500 or y_max, + y_min = y_min, + decoration = { + 'everness:blue_crying_obsidian', + 'everness:blue_weeping_obsidian', + 'everness:weeping_obsidian' + }, + flags = 'all_ceilings, force_placement' +}) + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_under_cactus_orange', + deco_type = 'simple', + place_on = { 'everness:mold_stone_with_moss' }, + 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_forsaken_tundra_under' }, + y_max = y_max - 500 > y_min and y_max - 500 or y_max, + y_min = y_min, + decoration = 'everness:cactus_orange', + height = 2, + height_max = 6, + flags = 'all_floors' +}) + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_under_bloodspore_plant_small', + deco_type = 'simple', + place_on = { 'everness:mold_stone_with_moss' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { 'everness_forsaken_tundra_under' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:bloodspore_plant_small', + param2 = 8, + flags = 'all_floors' +}) + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_under_vines', + deco_type = 'simple', + place_on = { 'everness:moss_block' }, + sidelen = 16, + fill_ratio = 0.05, + biomes = { 'everness_forsaken_tundra_under' }, + param2 = 8, + decoration = { + 'everness:whispering_gourd_vine_1', + 'everness:whispering_gourd_vine_2', + 'everness:bulb_vine_1', + 'everness:bulb_vine_2' + }, + y_max = y_max, + y_min = y_min, + flags = 'all_ceilings', + spawn_by = 'air', + num_spawn_by = 8 +}) + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_under_glowing_pillar', + deco_type = 'simple', + place_on = { 'everness:mold_stone_with_moss' }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.002, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_forsaken_tundra_under' }, + y_max = y_max - 1000 > y_min and y_max - 1000 or y_max, + y_min = y_min, + decoration = { 'everness:glowing_pillar' }, + flags = 'all_floors', +}) + +minetest.register_decoration({ + name = 'everness:forsaken_tundra_under_willow_tree', + deco_type = 'schematic', + place_on = { 'everness:mold_stone_with_moss' }, + place_offset_y = -1, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.002, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_forsaken_tundra_under' }, + y_max = y_max - 1500 > y_min and y_max - 1500 or y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_willow_tree.mts', + flags = 'place_center_x, place_center_z, all_floors, force_placement', + rotation = 'random', +}) + +local function register_agave_leaf_decoration(offset, scale, length) + minetest.register_decoration({ + name = 'everness:forsaken_tundra_under_agave_leaf_' .. length, + deco_type = 'simple', + place_on = { 'everness:mold_stone_with_moss' }, + sidelen = 16, + noise_params = { + offset = offset, + scale = scale, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + param2 = 8, + biomes = { 'everness_forsaken_tundra_under' }, + y_max = y_max, + y_min = y_min, + decoration = 'everness:agave_leaf_' .. length, + flags = 'all_floors' + }) +end + +-- Grasses + +register_agave_leaf_decoration(-0.03, 0.09, 3) +register_agave_leaf_decoration(-0.015, 0.075, 2) +register_agave_leaf_decoration(0, 0.06, 1) diff --git a/mapgen_frosted_icesheet.lua b/mapgen_frosted_icesheet.lua new file mode 100644 index 0000000..9cd8904 --- /dev/null +++ b/mapgen_frosted_icesheet.lua @@ -0,0 +1,124 @@ +--[[ + 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_frosted_icesheet.y_max +local y_min = Everness.settings.biomes.everness_frosted_icesheet.y_min + +-- Frosted Icesheet + +minetest.register_biome({ + name = 'everness_frosted_icesheet', + node_dust = 'everness:frosted_snowblock', + node_top = 'everness:frosted_snowblock', + depth_top = 1, + node_filler = 'everness:frosted_snowblock', + depth_filler = 3, + node_stone = 'everness:frosted_cave_ice', + node_water_top = 'everness:frosted_ice', + depth_water_top = 2, + node_river_water = 'everness:frosted_ice', + node_riverbed = 'default:gravel', + depth_riverbed = 2, + node_dungeon = 'everness:icecobble', + node_dungeon_alt = 'everness:snowcobble', + node_dungeon_stair = 'stairs:stair_ice', + y_max = y_max, + y_min = y_min, + heat_point = 0, + humidity_point = 93, +}) + +-- +-- Register decorations +-- + +-- Frosted Icesheet + +minetest.register_decoration({ + name = 'everness:frosted_icesheet_stalagmite', + deco_type = 'schematic', + schematic = minetest.get_modpath('everness') .. '/schematics/everness_frosted_lands_stalagmite.mts', + place_on = { 'everness:frosted_snowblock' }, + place_offset_y = 1, + sidelen = 16, + noise_params = { + offset = 0.0008, + scale = 0.0007, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_frosted_icesheet' }, + y_max = y_max, + y_min = (y_max - y_max) + 4, + flags = 'place_center_x, place_center_z', + spawn_by = 'everness:frosted_snowblock', + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:frosted_icesheet_volcanic_rock', + deco_type = 'schematic', + schematic = minetest.get_modpath('everness') .. '/schematics/everness_frosted_lands_volcanic_rock.mts', + place_on = { 'everness:frosted_snowblock' }, + sidelen = 16, + noise_params = { + offset = 0.0008, + scale = 0.0007, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_frosted_icesheet' }, + y_max = y_max, + y_min = (y_max - y_max) + 2, + flags = 'place_center_x, place_center_z', + rotation = 'random', + spawn_by = 'everness:frosted_snowblock', + num_spawn_by = 8, +}) + +minetest.register_decoration({ + name = 'everness:frosted_icesheet_fossils', + deco_type = 'schematic', + schematic = minetest.get_modpath('everness') .. '/schematics/everness_frosted_lands_fossils.mts', + place_on = { 'everness:frosted_snowblock' }, + sidelen = 16, + place_offset_y = 1, + noise_params = { + offset = 0.0008, + scale = 0.0007, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_frosted_icesheet' }, + y_max = y_max, + y_min = (y_max - y_max) + 1, + flags = 'place_center_x, place_center_z', + rotation = 'random', + spawn_by = 'everness:frosted_snowblock', + num_spawn_by = 8, +}) diff --git a/mapgen_frosted_icesheet_ocean.lua b/mapgen_frosted_icesheet_ocean.lua new file mode 100644 index 0000000..a3f007b --- /dev/null +++ b/mapgen_frosted_icesheet_ocean.lua @@ -0,0 +1,71 @@ +--[[ + 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_frosted_icesheet_ocean.y_max +local y_min = Everness.settings.biomes.everness_frosted_icesheet_ocean.y_min + +-- Frosted Icesheet Ocean + +minetest.register_biome({ + name = 'everness_frosted_icesheet_ocean', + node_top = 'default:sand', + depth_top = 1, + node_filler = 'default:sand', + depth_filler = 3, + node_water_top = 'everness:frosted_ice', + depth_water_top = 2, + node_cave_liquid = 'default:water_source', + node_dungeon = 'everness:icecobble', + node_dungeon_alt = 'everness:snowcobble', + node_dungeon_stair = 'stairs:stair_ice', + y_max = y_max, + y_min = y_min, + heat_point = 0, + humidity_point = 93, +}) + +-- +-- Register decorations +-- + +-- Frosted Icesheet Ocean + +minetest.register_decoration({ + name = 'everness:frosted_icesheet_ocean_corals', + deco_type = 'simple', + place_on = { 'default:sand' }, + place_offset_y = -1, + sidelen = 4, + noise_params = { + offset = -4, + scale = 4, + spread = { x = 50, y = 50, z = 50 }, + seed = 7013, + octaves = 3, + persist = 0.7, + }, + biomes = { 'everness_frosted_icesheet_ocean' }, + y_max = y_max - (y_max + 2), -- -2 + y_min = y_max - (y_max + 50), -- -50 + flags = 'force_placement', + decoration = { 'everness:coral_starfish', 'everness:coral_frosted' }, +}) diff --git a/mapgen_frosted_icesheet_under.lua b/mapgen_frosted_icesheet_under.lua new file mode 100644 index 0000000..a2e4b36 --- /dev/null +++ b/mapgen_frosted_icesheet_under.lua @@ -0,0 +1,235 @@ +--[[ + 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_frosted_icesheet_under.y_max +local y_min = Everness.settings.biomes.everness_frosted_icesheet_under.y_min + +-- Frosted Icesheet Under + +minetest.register_biome({ + name = 'everness_frosted_icesheet_under', + node_cave_liquid = { 'default:water_source', 'default:lava_source' }, + node_dungeon = 'everness:icecobble', + node_dungeon_alt = 'everness:snowcobble', + node_dungeon_stair = 'stairs:stair_ice', + y_max = y_max, + y_min = y_min, + heat_point = 0, + humidity_point = 93, +}) + +-- +-- Register ores +-- + +-- Blob ore. +-- These before scatter ores to avoid other ores in blobs. + +minetest.register_ore({ + ore_type = 'blob', + ore = 'everness:bone', + 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_frosted_icesheet_under' } +}) + +-- +-- Register decorations +-- + +minetest.register_decoration({ + name = 'everness:frosted_icesheet_under_floors', + deco_type = 'simple', + place_on = { 'default:stone' }, + place_offset_y = -1, + sidelen = 16, + fill_ratio = 10, + biomes = { 'everness_frosted_icesheet_under' }, + y_max = y_max, + y_min = y_min, + flags = 'all_floors, force_placement', + decoration = { + 'everness:ancient_emerald_ice', + 'everness:dense_emerald_ice', + 'everness:emerald_ice', + 'everness:frosted_cave_ice_illuminating', + 'everness:frosted_ice', + 'everness:frosted_ice_translucent', + }, +}) + +minetest.register_decoration({ + name = 'everness:frosted_icesheet_under_ceilings', + deco_type = 'simple', + place_on = { 'default:stone' }, + sidelen = 16, + fill_ratio = 0.4, + biomes = { 'everness_frosted_icesheet_under' }, + y_max = y_max, + y_min = y_min, + flags = 'all_ceilings', + decoration = { + 'everness:ancient_emerald_ice', + 'everness:dense_emerald_ice', + 'everness:emerald_ice', + 'everness:frosted_cave_ice_illuminating', + 'everness:frosted_ice', + 'everness:frosted_ice_translucent', + }, +}) + +minetest.register_decoration({ + name = 'everness:frosted_icesheet_under_amaranita_lantern', + deco_type = 'simple', + place_on = { + 'everness:ancient_emerald_ice', + 'everness:dense_emerald_ice', + 'everness:emerald_ice', + 'everness:frosted_cave_ice_illuminating', + 'everness:frosted_ice', + 'everness:frosted_ice_translucent', + }, + 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_frosted_icesheet_under' }, + y_max = y_max - 500 > y_min and y_max - 500 or y_max, + y_min = y_min, + decoration = { 'everness:amaranita_lantern' }, + flags = 'all_floors', +}) + +minetest.register_decoration({ + name = 'everness:frosted_icesheet_under_vines', + deco_type = 'simple', + place_on = { + 'everness:ancient_emerald_ice', + 'everness:dense_emerald_ice', + 'everness:emerald_ice', + 'everness:frosted_cave_ice_illuminating', + 'everness:frosted_ice', + 'everness:frosted_ice_translucent', + }, + sidelen = 16, + fill_ratio = 0.05, + biomes = { 'everness_frosted_icesheet_under' }, + param2 = 8, + decoration = { + 'everness:tenanea_flowers_vine_1', + 'everness:tenanea_flowers_vine_2', + 'everness:reeds_vine_1', + 'everness:reeds_vine_2' + }, + y_max = y_max, + y_min = y_min, + flags = 'all_ceilings', + spawn_by = 'air', + num_spawn_by = 8 +}) + +minetest.register_decoration({ + name = 'everness:frosted_icesheet_under_plants', + deco_type = 'simple', + place_on = { + 'everness:ancient_emerald_ice', + 'everness:dense_emerald_ice', + 'everness:emerald_ice', + 'everness:frosted_cave_ice_illuminating', + 'everness:frosted_ice', + 'everness:frosted_ice_translucent', + }, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.02, + spread = { x = 200, y = 200, z = 200 }, + seed = 329, + octaves = 3, + persist = 0.6 + }, + param2 = 11, + biomes = { 'everness_frosted_icesheet_under' }, + y_max = y_max, + y_min = y_min, + decoration = { + 'everness:blooming_cooksonia', + 'everness:creeping_moss_spores', + 'everness:frosted_icicle_floor', + }, + flags = 'all_floors', +}) + +minetest.register_decoration({ + name = 'everness:frosted_icesheet_under_crystal', + deco_type = 'schematic', + place_on = { + 'everness:ancient_emerald_ice', + 'everness:dense_emerald_ice', + 'everness:emerald_ice', + 'everness:frosted_cave_ice_illuminating', + 'everness:frosted_ice', + 'everness:frosted_ice_translucent', + }, + place_offset_y = 1, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.002, + spread = { x = 250, y = 250, z = 250 }, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = { 'everness_frosted_icesheet_under' }, + y_max = y_max - 250 > y_min and y_max - 250 or y_max, + y_min = y_min, + schematic = minetest.get_modpath('everness') .. '/schematics/everness_frosted_crystal.mts', + flags = 'place_center_x, place_center_z, all_floors, force_placement', + rotation = 'random', + spawn_by = { + 'everness:ancient_emerald_ice', + 'everness:dense_emerald_ice', + 'everness:emerald_ice', + 'everness:frosted_cave_ice_illuminating', + 'everness:frosted_ice', + 'everness:frosted_ice_translucent', + }, + num_spawn_by = 8, +}) diff --git a/settingtypes.txt b/settingtypes.txt new file mode 100644 index 0000000..c96e4a8 --- /dev/null +++ b/settingtypes.txt @@ -0,0 +1,326 @@ +[Biomes] + +[*Coral Forest] + +# Enable/ Disable Coral Forest Biome +# Disabling this biome might result in missing recipes. +everness_coral_forest (Coral Forest) bool true + +# Upper limit for biome. +everness_coral_forest_y_max (y max) int 31000 + +# Lower limit for biome. +everness_coral_forest_y_min (y min) int 6 + +[*Coral Forest Dunes] + +# Enable/ Disable Coral Forest Dunes Biome +# Disabling this biome might result in missing recipes. +everness_coral_forest_dunes (Coral Forest Dunes) bool true + +# Upper limit for biome. +everness_coral_forest_dunes_y_max (y max) int 5 + +# Lower limit for biome. +everness_coral_forest_dunes_y_min (y min) int 4 + +[*Coral Forest Ocean] + +# Enable/ Disable Coral Forest Ocean Biome +# Disabling this biome might result in missing recipes. +everness_coral_forest_ocean (Coral Forest Ocean) bool true + +# Upper limit for biome. +everness_coral_forest_ocean_y_max (y max) int 3 + +# Lower limit for biome. +everness_coral_forest_ocean_y_min (y min) int -255 + +[*Coral Forest Under] + +# Enable/ Disable Coral Forest Under Biome +# Disabling this biome might result in missing recipes. +everness_coral_forest_under (Coral Forest Under) bool true + +# Upper limit for biome. +everness_coral_forest_under_y_max (y max) int -256 + +# Lower limit for biome. +everness_coral_forest_under_y_min (y min) int -31000 + +[*Frosted Icesheet] + +# Enable/ Disable Frosted Icesheet Biome +# Disabling this biome might result in missing recipes. +everness_frosted_icesheet (Frosted Icesheet) bool true + +# Upper limit for biome. +everness_frosted_icesheet_y_max (y max) int 31000 + +# Lower limit for biome. +everness_frosted_icesheet_y_min (y min) int -8 + +[*Frosted Icesheet Ocean] + +# Enable/ Disable Frosted Icesheet Ocean Biome +# Disabling this biome might result in missing recipes. +everness_frosted_icesheet_ocean (Frosted Icesheet Ocean) bool true + +# Upper limit for biome. +everness_frosted_icesheet_ocean_y_max (y max) int -9 + +# Lower limit for biome. +everness_frosted_icesheet_ocean_y_min (y min) int -255 + +[*Frosted Icesheet Under] + +# Enable/ Disable Frosted Icesheet Under Biome +# Disabling this biome might result in missing recipes. +everness_frosted_icesheet_under (Frosted Icesheet Under) bool true + +# Upper limit for biome. +everness_frosted_icesheet_under_y_max (y max) int -256 + +# Lower limit for biome. +everness_frosted_icesheet_under_y_min (y min) int -31000 + +[*Cursed Lands] + +# Enable/ Disable Cursed Lands Biome +# Disabling this biome might result in missing recipes. +everness_cursed_lands (Cursed Lands) bool true + +# Upper limit for biome. +everness_cursed_lands_y_max (y max) int 31000 + +# Lower limit for biome. +everness_cursed_lands_y_min (y min) int 6 + +[*Cursed Lands Dunes] + +# Enable/ Disable Cursed Lands Dunes Biome +# Disabling this biome might result in missing recipes. +everness_cursed_lands_dunes (Cursed Lands Dunes) bool true + +# Upper limit for biome. +everness_cursed_lands_dunes_y_max (y max) int 5 + +# Lower limit for biome. +everness_cursed_lands_dunes_y_min (y min) int 1 + +[*Cursed Lands Swamp] + +# Enable/ Disable Cursed Lands Swamp Biome +# Disabling this biome might result in missing recipes. +everness_cursed_lands_swamp (Cursed Lands Swamp) bool true + +# Upper limit for biome. +everness_cursed_lands_swamp_y_max (y max) int 0 + +# Lower limit for biome. +everness_cursed_lands_swamp_y_min (y min) int -1 + +[*Cursed Lands Ocean] + +# Enable/ Disable Cursed Lands Ocean Biome +# Disabling this biome might result in missing recipes. +everness_cursed_lands_ocean (Cursed Lands Ocean) bool true + +# Upper limit for biome. +everness_cursed_lands_ocean_y_max (y max) int -2 + +# Lower limit for biome. +everness_cursed_lands_ocean_y_min (y min) int -255 + +[*Cursed Lands Under] + +# Enable/ Disable Cursed Lands Under Biome +# Disabling this biome might result in missing recipes. +everness_cursed_lands_under (Cursed Lands Under) bool true + +# Upper limit for biome. +everness_cursed_lands_under_y_max (y max) int -256 + +# Lower limit for biome. +everness_cursed_lands_under_y_min (y min) int -31000 + +[*Crystal Forest] + +# Enable/ Disable Crystal Forest Biome +# Disabling this biome might result in missing recipes. +everness_crystal_forest (Crystal Forest) bool true + +# Upper limit for biome. +everness_crystal_forest_y_max (y max) int 31000 + +# Lower limit for biome. +everness_crystal_forest_y_min (y min) int 6 + +[*Crystal Forest Dunes] + +# Enable/ Disable Crystal Forest Dunes Biome +# Disabling this biome might result in missing recipes. +everness_crystal_forest_dunes (Crystal Forest Dunes) bool true + +# Upper limit for biome. +everness_crystal_forest_dunes_y_max (y max) int 5 + +# Lower limit for biome. +everness_crystal_forest_dunes_y_min (y min) int 1 + +[*Crystal Forest Shore] + +# Enable/ Disable Crystal Forest Shore Biome +# Disabling this biome might result in missing recipes. +everness_crystal_forest_shore (Crystal Forest Shore) bool true + +# Upper limit for biome. +everness_crystal_forest_shore_y_max (y max) int 0 + +# Lower limit for biome. +everness_crystal_forest_shore_y_min (y min) int -1 + +[*Crystal Forest Ocean] + +# Enable/ Disable Crystal Forest Ocean Biome +# Disabling this biome might result in missing recipes. +everness_crystal_forest_ocean (Crystal Forest Ocean) bool true + +# Upper limit for biome. +everness_crystal_forest_ocean_y_max (y max) int -2 + +# Lower limit for biome. +everness_crystal_forest_ocean_y_min (y min) int -255 + +[*Crystal Forest Under] + +# Enable/ Disable Crystal Forest Under Biome +# Disabling this biome might result in missing recipes. +everness_crystal_forest_under (Crystal Forest Under) bool true + +# Upper limit for biome. +everness_crystal_forest_under_y_max (y max) int -256 + +# Lower limit for biome. +everness_crystal_forest_under_y_min (y min) int -31000 + +[*Bamboo Forest] + +# Enable/ Disable Bamboo Forest Biome +# Disabling this biome might result in missing recipes. +everness_bamboo_forest (Bamboo Forest) bool true + +# Upper limit for biome. +everness_bamboo_forest_y_max (y max) int 31000 + +# Lower limit for biome. +everness_bamboo_forest_y_min (y min) int 1 + +[*Bamboo Forest Under] + +# Enable/ Disable Bamboo Forest Under Biome +# Disabling this biome might result in missing recipes. +everness_bamboo_forest_under (Bamboo Forest Under) bool true + +# Upper limit for biome. +everness_bamboo_forest_under_y_max (y max) int -256 + +# Lower limit for biome. +everness_bamboo_forest_under_y_min (y min) int -31000 + +[*Forsaken Desert] + +# Enable/ Disable Forsaken Desert Biome +# Disabling this biome might result in missing recipes. +everness_forsaken_desert (Forsaken Desert) bool true + +# Upper limit for biome. +everness_forsaken_desert_y_max (y max) int 31000 + +# Lower limit for biome. +everness_forsaken_desert_y_min (y min) int 4 + +[*Forsaken Desert Ocean] + +# Enable/ Disable Forsaken Desert Ocean Biome +# Disabling this biome might result in missing recipes. +everness_forsaken_desert_ocean (Forsaken Desert Ocean) bool true + +# Upper limit for biome. +everness_forsaken_desert_ocean_y_max (y max) int 3 + +# Lower limit for biome. +everness_forsaken_desert_ocean_y_min (y min) int -8 + +[*Forsaken Desert Under] + +# Enable/ Disable Forsaken Desert Under Biome +# Disabling this biome might result in missing recipes. +everness_forsaken_desert_under (Forsaken Desert Under) bool true + +# Upper limit for biome. +everness_forsaken_desert_under_y_max (y max) int -256 + +# Lower limit for biome. +everness_forsaken_desert_under_y_min (y min) int -31000 + +[*Baobab Savanna] + +# Enable/ Disable Baobab Savanna Biome +# Disabling this biome might result in missing recipes. +everness_baobab_savanna (Baobab Savanna) bool true + +# Upper limit for biome. +everness_baobab_savanna_y_max (y max) int 31000 + +# Lower limit for biome. +everness_baobab_savanna_y_min (y min) int 1 + +[*Forsaken Tundra] + +# Enable/ Disable Forsaken Tundra Biome +# Disabling this biome might result in missing recipes. +everness_forsaken_tundra (Forsaken Tundra) bool true + +# Upper limit for biome. +everness_forsaken_tundra_y_max (y max) int 31000 + +# Lower limit for biome. +everness_forsaken_tundra_y_min (y min) int 2 + +[*Forsaken Tundra Beach] + +# Enable/ Disable Forsaken Tundra Beach Biome +# Disabling this biome might result in missing recipes. +everness_forsaken_tundra_beach (Forsaken Tundra Beach) bool true + +# Upper limit for biome. +everness_forsaken_tundra_beach_y_max (y max) int 1 + +# Lower limit for biome. +everness_forsaken_tundra_beach_y_min (y min) int -3 + +[*Forsaken Tundra Ocean] + +# Enable/ Disable Forsaken Tundra Ocean Biome +# Disabling this biome might result in missing recipes. +everness_forsaken_tundra_ocean (Forsaken Tundra Ocean) bool true + +# Upper limit for biome. +everness_forsaken_tundra_ocean_y_max (y max) int -4 + +# Lower limit for biome. +everness_forsaken_tundra_ocean_y_min (y min) int -255 + +[*Forsaken Tundra Under] + +# Enable/ Disable Forsaken Tundra Under Biome +# Disabling this biome might result in missing recipes. +everness_forsaken_tundra_under (Forsaken Tundra Under) bool true + +# Upper limit for biome. +everness_forsaken_tundra_under_y_max (y max) int -256 + +# Lower limit for biome. +everness_forsaken_tundra_under_y_min (y min) int -31000 +