diff --git a/mods/MAPGEN/mcl_biomes/README.md b/mods/MAPGEN/mcl_biomes/README.md deleted file mode 100644 index e4f3edc5e..000000000 --- a/mods/MAPGEN/mcl_biomes/README.md +++ /dev/null @@ -1 +0,0 @@ -Biomes mod. By Wuzzy and maikerumine. diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua deleted file mode 100644 index b2bb5fecd..000000000 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ /dev/null @@ -1,5968 +0,0 @@ -local overworld_fogcolor = "#C0D8FF" -local beach_skycolor = "#78A7FF" -- This is the case for all beach biomes except for the snowy ones! Those beaches will have their own colour instead of this one. -local ocean_skycolor = "#7BA4FF" -- This is the case for all ocean biomes except for non-deep frozen oceans! Those oceans will have their own colour instead of this one. - -local nether_skycolor = "#6EB1FF" -- The Nether biomes seemingly don't use the sky colour, despite having this value according to the wiki. The fog colour is used for both sky and fog. - -local end_skycolor = "#000000" -local end_fogcolor = "#A080A0" -- The End biomes seemingly don't use the fog colour, despite having this value according to the wiki. The sky colour is used for both sky and fog. - -local default_waterfogcolor = "#3F76E4" -local lukewarm_waterfogcolor = "#45ADF2" -local warm_waterfogcolor = "#43D5EE" -local cold_waterfogcolor = "#3D57D6" -local frozen_waterfogcolor = "#3938C9" - -local mg_name = minetest.get_mapgen_setting("mg_name") -local mg_seed = minetest.get_mapgen_setting("seed") - --- Some mapgen settings -local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true" - -local mod_mcl_structures = minetest.get_modpath("mcl_structures") -local mod_mcl_core = minetest.get_modpath("mcl_core") -local mod_mcl_mushrooms = minetest.get_modpath("mcl_mushrooms") -local mod_mcl_crimson = minetest.get_modpath("mcl_crimson") -local mod_mcl_blackstone = minetest.get_modpath("mcl_blackstone") -local mod_mcl_mangrove = minetest.get_modpath("mcl_mangrove") - --- --- Register biomes --- - -local OCEAN_MIN = -15 -local DEEP_OCEAN_MAX = OCEAN_MIN - 1 -local DEEP_OCEAN_MIN = -31 - ---[[ Special biome field: _mcl_biome_type: -Rough categorization of biomes: One of "snowy", "cold", "medium" and "hot" -Based off ]] - -local function register_classic_superflat_biome() - -- Classic Superflat: bedrock (not part of biome), 2 dirt, 1 grass block - minetest.register_biome({ - name = "flat", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_stone = "mcl_core:dirt", - y_min = mcl_vars.mg_overworld_min - 512, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 50, - heat_point = 50, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 0, - _mcl_foliage_palette_index = 1, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = "#78A7FF", - _mcl_fogcolor = overworld_fogcolor - }) -end - --- All mapgens except mgv6, flat and singlenode -local function register_biomes() - --[[ OVERWORLD ]] - - --[[ These biomes try to resemble MC as good as possible. This means especially the floor cover and - the type of plants and structures (shapes might differ). The terrain itself will be of course different - and depends on the mapgen. - Important: MC also takes the terrain into account while MT biomes don't care about the terrain at all - (except height). - MC has many “M” and “Hills” variants, most of which only differ in terrain compared to their original - counterpart. - In MT, any biome can occour in any terrain, so these variants are implied and are therefore - not explicitly implmented in MCL2. “M” variants are only included if they have another unique feature, - such as a different land cover. - In MCL2, the MC Overworld biomes are split in multiple more parts (stacked by height): - * The main part, this represents the land. It begins at around sea level and usually goes all the way up - * _ocean: For the area covered by ocean water. The y_max may vary for various beach effects. - Has sand or dirt as floor. - * _deep_ocean: Like _ocean, but deeper and has gravel as floor - * _underground: - * Other modifiers: Some complex biomes require more layers to improve the landscape. - - The following naming conventions apply: - * The land biome name is equal to the MC biome name, as of Minecraft 1.11 (in camel case) - * Height modifiers and sub-biomes are appended with underscores and in lowercase. Example: “_ocean” - * Non-MC biomes are written in lowercase - * MC dimension biomes are named after their MC dimension - - Intentionally missing biomes: - * River (generated by valleys and v7) - * Frozen River (generated by valleys and v7) - * Hills biomes (shape only) - * Plateau (shape only) - * Plateau M (shape only) - * Cold Taiga M (mountain only) - * Taiga M (mountain only) - * Roofed Forest M (mountain only) - * Swampland M (mountain only) - * Extreme Hills Edge (unused in MC) - - TODO: - * Better beaches - * Improve Extreme Hills M - * Desert M - - ]] - - -- List of Overworld biomes without modifiers. - -- IMPORTANT: Don't forget to add new Overworld biomes to this list! - local overworld_biomes = { - "IcePlains", - "IcePlainsSpikes", - "ColdTaiga", - "ExtremeHills", - "ExtremeHillsM", - "ExtremeHills+", - "Taiga", - "MegaTaiga", - "MegaSpruceTaiga", - "StoneBeach", - "Plains", - "SunflowerPlains", - "Forest", - "FlowerForest", - "BirchForest", - "BirchForestM", - "RoofedForest", - "Swampland", - "Jungle", - "JungleM", - "JungleEdge", - "JungleEdgeM", - "MushroomIsland", - "Desert", - "Savanna", - "SavannaM", - "Mesa", - "MesaBryce", - "MesaPlateauF", - "MesaPlateauFM", - "MangroveSwamp", - "BambooJungle", - "BambooJungleM", - "BambooJungleEdge", - "BambooJungleEdgeM", - } - - -- Ice Plains Spikes (rare) - minetest.register_biome({ - name = "IcePlainsSpikes", - node_top = "mcl_core:snowblock", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 2, - node_water_top = "mcl_core:ice", - depth_water_top = 1, - node_river_water = "mcl_core:ice", - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 24, - heat_point = -5, - _mcl_biome_type = "snowy", - _mcl_grass_palette_index = 2, - _mcl_foliage_palette_index = 2, - _mcl_water_palette_index = 5, - _mcl_waterfogcolor = frozen_waterfogcolor, - _mcl_skycolor = "#7FA1FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "IcePlainsSpikes_ocean", - node_top = "mcl_core:gravel", - depth_top = 2, - node_filler = "mcl_core:gravel", - depth_filler = 3, - node_river_water = "mcl_core:ice", - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 24, - heat_point = -5, - _mcl_biome_type = "snowy", - _mcl_grass_palette_index = 2, - _mcl_foliage_palette_index = 2, - _mcl_water_palette_index = 5, - _mcl_waterfogcolor = frozen_waterfogcolor, - _mcl_skycolor = "#7FA1FF", - _mcl_fogcolor = overworld_fogcolor - }) - - -- Cold Taiga - minetest.register_biome({ - name = "ColdTaiga", - node_dust = "mcl_core:snow", - node_top = "mcl_core:dirt_with_grass_snow", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 3, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 58, - heat_point = 8, - _mcl_biome_type = "snowy", - _mcl_grass_palette_index = 3, - _mcl_foliage_palette_index = 2, - _mcl_water_palette_index = 5, - _mcl_waterfogcolor = frozen_waterfogcolor, - _mcl_skycolor = "#839EFF", - _mcl_fogcolor = overworld_fogcolor - }) - - -- A cold beach-like biome, implemented as low part of Cold Taiga - minetest.register_biome({ - name = "ColdTaiga_beach", - node_dust = "mcl_core:snow", - node_top = "mcl_core:sand", - depth_top = 2, - node_water_top = "mcl_core:ice", - depth_water_top = 1, - node_filler = "mcl_core:sandstone", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = 2, - humidity_point = 58, - heat_point = 8, - _mcl_biome_type = "snowy", - _mcl_grass_palette_index = 3, - _mcl_foliage_palette_index = 16, - _mcl_water_palette_index = 5, - _mcl_waterfogcolor = frozen_waterfogcolor, - _mcl_skycolor = "#7FA1FF", - _mcl_fogcolor = overworld_fogcolor - }) - -- Water part of the beach. Added to prevent snow being on the ice. - minetest.register_biome({ - name = "ColdTaiga_beach_water", - node_top = "mcl_core:sand", - depth_top = 2, - node_water_top = "mcl_core:ice", - depth_water_top = 1, - node_filler = "mcl_core:sandstone", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = -4, - y_max = 0, - humidity_point = 58, - heat_point = 8, - _mcl_biome_type = "snowy", - _mcl_grass_palette_index = 3, - _mcl_foliage_palette_index = 16, - _mcl_water_palette_index = 5, - _mcl_waterfogcolor = frozen_waterfogcolor, - _mcl_skycolor = "#7FA1FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "ColdTaiga_ocean", - node_top = "mcl_core:gravel", - depth_top = 1, - node_filler = "mcl_core:gravel", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = -5, - humidity_point = 58, - heat_point = 8, - vertical_blend = 1, - _mcl_biome_type = "snowy", - _mcl_grass_palette_index = 3, - _mcl_foliage_palette_index = 2, - _mcl_water_palette_index = 5, - _mcl_waterfogcolor = frozen_waterfogcolor, - _mcl_skycolor = "#7FA1FF", - _mcl_fogcolor = overworld_fogcolor - }) - - -- Mega Pine Taiga - minetest.register_biome({ - name = "MegaTaiga", - node_top = "mcl_core:podzol", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 76, - heat_point = 10, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 4, - _mcl_foliage_palette_index = 9, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = "#7CA3FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "MegaTaiga_ocean", - node_top = "mcl_core:gravel", - depth_top = 1, - node_filler = "mcl_core:gravel", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 76, - heat_point = 10, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 4, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Mega Spruce Taiga - minetest.register_biome({ - name = "MegaSpruceTaiga", - node_top = "mcl_core:podzol", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 100, - heat_point = 8, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 5, - _mcl_foliage_palette_index = 10, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = "#7DA3FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "MegaSpruceTaiga_ocean", - node_top = "mcl_core:gravel", - depth_top = 1, - node_filler = "mcl_core:gravel", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 100, - heat_point = 8, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 5, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Extreme Hills - -- Sparsely populated grasslands with little tallgras and trees. - minetest.register_biome({ - name = "ExtremeHills", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 4, - node_riverbed = "mcl_core:sand", - depth_riverbed = 4, - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 10, - heat_point = 45, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 6, - _mcl_foliage_palette_index = 11, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = "#7DA2FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "ExtremeHills_beach", - node_top = "mcl_core:sand", - depth_top = 2, - depth_water_top = 1, - node_filler = "mcl_core:sandstone", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 4, - y_min = -4, - y_max = 3, - humidity_point = 10, - heat_point = 45, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 6, - _mcl_foliage_palette_index = 1, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = beach_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "ExtremeHills_ocean", - node_top = "mcl_core:gravel", - depth_top = 1, - node_filler = "mcl_core:gravel", - depth_filler = 4, - node_riverbed = "mcl_core:sand", - depth_riverbed = 4, - y_min = OCEAN_MIN, - y_max = -5, - vertical_blend = 1, - humidity_point = 10, - heat_point = 45, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 6, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Extreme Hills M - -- Just gravel. - minetest.register_biome({ - name = "ExtremeHillsM", - node_top = "mcl_core:gravel", - depth_top = 1, - node_filler = "mcl_core:gravel", - depth_filler = 3, - node_riverbed = "mcl_core:gravel", - depth_riverbed = 3, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 0, - heat_point = 25, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 7, - _mcl_foliage_palette_index = 11, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = "#7DA2FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "ExtremeHillsM_ocean", - node_top = "mcl_core:gravel", - depth_top = 1, - node_filler = "mcl_core:gravel", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 3, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 0, - heat_point = 25, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 7, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Extreme Hills+ - -- This biome is near-identical to Extreme Hills on the surface but has snow-covered mountains with spruce/oak - -- forests above a certain height. - minetest.register_biome({ - name = "ExtremeHills+", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 4, - node_riverbed = "mcl_core:sand", - depth_riverbed = 4, - y_min = 1, - y_max = 41, - humidity_point = 24, - heat_point = 25, - vertical_blend = 6, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 8, - _mcl_foliage_palette_index = 11, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = "#7DA2FF", - _mcl_fogcolor = overworld_fogcolor - }) - ---- Sub-biome for Extreme Hills+ for those snow forests - minetest.register_biome({ - name = "ExtremeHills+_snowtop", - node_dust = "mcl_core:snow", - node_top = "mcl_core:dirt_with_grass_snow", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 4, - node_river_water = "mcl_core:ice", - node_riverbed = "mcl_core:sand", - depth_riverbed = 4, - y_min = 42, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 24, - heat_point = 25, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 8, - _mcl_foliage_palette_index = 11, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = "#7DA2FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "ExtremeHills+_ocean", - node_top = "mcl_core:gravel", - depth_top = 1, - node_filler = "mcl_core:gravel", - depth_filler = 4, - node_riverbed = "mcl_core:sand", - depth_riverbed = 4, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 24, - heat_point = 25, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 8, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Stone beach - -- Just stone. - -- Not neccessarily a beach at all, only named so according to MC - minetest.register_biome({ - name = "StoneBeach", - node_riverbed = "mcl_core:sand", - depth_riverbed = 1, - y_min = -7, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 0, - heat_point = 8, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 9, - _mcl_foliage_palette_index = 11, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = "#7DA2FF", - _mcl_fogcolor = overworld_fogcolor - }) - - minetest.register_biome({ - name = "StoneBeach_ocean", - node_top = "mcl_core:gravel", - depth_top = 1, - node_riverbed = "mcl_core:sand", - depth_riverbed = 1, - y_min = OCEAN_MIN, - y_max = -8, - vertical_blend = 2, - humidity_point = 0, - heat_point = 8, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 9, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Ice Plains - minetest.register_biome({ - name = "IcePlains", - node_dust = "mcl_core:snow", - node_top = "mcl_core:dirt_with_grass_snow", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 2, - node_water_top = "mcl_core:ice", - depth_water_top = 2, - node_river_water = "mcl_core:ice", - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 24, - heat_point = 8, - _mcl_biome_type = "snowy", - _mcl_grass_palette_index = 10, - _mcl_foliage_palette_index = 2, - _mcl_water_palette_index = 5, - _mcl_waterfogcolor = frozen_waterfogcolor, - _mcl_skycolor = "#7FA1FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "IcePlains_ocean", - node_top = "mcl_core:gravel", - depth_top = 1, - node_filler = "mcl_core:gravel", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 24, - heat_point = 8, - _mcl_biome_type = "snowy", - _mcl_grass_palette_index = 10, - _mcl_foliage_palette_index = 2, - _mcl_water_palette_index = 5, - _mcl_waterfogcolor = frozen_waterfogcolor, - _mcl_skycolor = "#7FA1FF", - _mcl_fogcolor = overworld_fogcolor - }) - - -- Plains - minetest.register_biome({ - name = "Plains", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 3, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 39, - heat_point = 58, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 0, - _mcl_foliage_palette_index = 1, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = "#78A7FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "Plains_beach", - node_top = "mcl_core:sand", - depth_top = 2, - node_filler = "mcl_core:sandstone", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 0, - y_max = 2, - humidity_point = 39, - heat_point = 58, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 0, - _mcl_foliage_palette_index = 1, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = beach_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "Plains_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = -1, - humidity_point = 39, - heat_point = 58, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 0, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Sunflower Plains - minetest.register_biome({ - name = "SunflowerPlains", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 28, - heat_point = 45, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 11, - _mcl_foliage_palette_index = 1, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = "#78A7FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "SunflowerPlains_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 3, - node_riverbed = "mcl_core:dirt", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 28, - heat_point = 45, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 11, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Taiga - minetest.register_biome({ - name = "Taiga", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 58, - heat_point = 22, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 12, - _mcl_foliage_palette_index = 10, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = "#7DA3FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "Taiga_beach", - node_top = "mcl_core:sand", - depth_top = 2, - node_filler = "mcl_core:sandstone", - depth_filler = 1, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = 3, - humidity_point = 58, - heat_point = 22, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 12, - _mcl_foliage_palette_index = 1, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = beach_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "Taiga_ocean", - node_top = "mcl_core:gravel", - depth_top = 1, - node_filler = "mcl_core:gravel", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 58, - heat_point = 22, - _mcl_biome_type = "cold", - _mcl_grass_palette_index = 12, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 4, - _mcl_waterfogcolor = cold_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Forest - minetest.register_biome({ - name = "Forest", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 61, - heat_point = 45, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 13, - _mcl_foliage_palette_index = 7, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = "#79A6FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "Forest_beach", - node_top = "mcl_core:sand", - depth_top = 2, - node_filler = "mcl_core:sandstone", - depth_filler = 1, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = -1, - y_max = 0, - humidity_point = 61, - heat_point = 45, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 13, - _mcl_foliage_palette_index = 1, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = beach_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "Forest_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = -2, - humidity_point = 61, - heat_point = 45, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 13, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Flower Forest - minetest.register_biome({ - name = "FlowerForest", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 3, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 44, - heat_point = 32, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 14, - _mcl_foliage_palette_index = 7, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = "#79A6FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "FlowerForest_beach", - node_top = "mcl_core:sand", - depth_top = 2, - node_filler = "mcl_core:sandstone", - depth_filler = 1, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = -2, - y_max = 2, - humidity_point = 44, - heat_point = 32, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 14, - _mcl_foliage_palette_index = 1, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = beach_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "FlowerForest_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = -3, - humidity_point = 44, - heat_point = 32, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 14, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Birch Forest - minetest.register_biome({ - name = "BirchForest", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 78, - heat_point = 31, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 15, - _mcl_foliage_palette_index = 8, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = "#7AA5FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "BirchForest_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 78, - heat_point = 31, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 15, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Birch Forest M - minetest.register_biome({ - name = "BirchForestM", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 77, - heat_point = 27, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 16, - _mcl_foliage_palette_index = 8, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = "#7AA5FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "BirchForestM_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:gravel", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 77, - heat_point = 27, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 16, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Desert - minetest.register_biome({ - name = "Desert", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - node_stone = "mcl_core:sandstone", - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 26, - heat_point = 94, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 17, - _mcl_foliage_palette_index = 3, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = "#6EB1FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "Desert_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 26, - heat_point = 94, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 17, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Roofed Forest - minetest.register_biome({ - name = "RoofedForest", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 94, - heat_point = 27, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 18, - _mcl_foliage_palette_index = 7, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = "#79A6FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "RoofedForest_ocean", - node_top = "mcl_core:gravel", - depth_top = 1, - node_filler = "mcl_core:gravel", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 94, - heat_point = 27, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 18, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Mesa: Starts with a couple of sand-covered layers (the "sandlevel"), - -- followed by terracotta with colorful (but imperfect) strata - minetest.register_biome({ - name = "Mesa", - node_top = "mcl_colorblocks:hardened_clay", - depth_top = 1, - node_filler = "mcl_colorblocks:hardened_clay", - node_riverbed = "mcl_core:redsand", - depth_riverbed = 1, - node_stone = "mcl_colorblocks:hardened_clay", - y_min = 11, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 0, - heat_point = 100, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 19, - _mcl_foliage_palette_index = 4, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = "#6EB1FF", - _mcl_fogcolor = overworld_fogcolor - }) - -- Helper biome for the red sand at the bottom of Mesas. - minetest.register_biome({ - name = "Mesa_sandlevel", - node_top = "mcl_core:redsand", - depth_top = 1, - node_filler = "mcl_colorblocks:hardened_clay_orange", - depth_filler = 3, - node_riverbed = "mcl_core:redsand", - depth_riverbed = 1, - node_stone = "mcl_colorblocks:hardened_clay_orange", - y_min = -4, - y_max = 10, - humidity_point = 0, - heat_point = 100, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 19, - _mcl_foliage_palette_index = 4, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = "#6EB1FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "Mesa_ocean", - node_top = "mcl_core:sand", - depth_top = 3, - node_filler = "mcl_core:sand", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = -5, - vertical_blend = 1, - humidity_point = 0, - heat_point = 100, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 19, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Mesa Bryce: Variant of Mesa, but with perfect strata and a much smaller red sand desert - minetest.register_biome({ - name = "MesaBryce", - node_top = "mcl_colorblocks:hardened_clay", - depth_top = 1, - node_filler = "mcl_colorblocks:hardened_clay", - node_riverbed = "mcl_colorblocks:hardened_clay", - depth_riverbed = 1, - node_stone = "mcl_colorblocks:hardened_clay", - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - humidity_point = -5, - heat_point = 100, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 20, - _mcl_foliage_palette_index = 4, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = "#6EB1FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "MesaBryce_sandlevel", - node_top = "mcl_core:redsand", - depth_top = 1, - node_filler = "mcl_colorblocks:hardened_clay_orange", - depth_filler = 3, - node_riverbed = "mcl_colorblocks:hardened_clay", - depth_riverbed = 1, - node_stone = "mcl_colorblocks:hardened_clay_orange", - y_min = -4, - y_max = 3, - humidity_point = -5, - heat_point = 100, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 20, - _mcl_foliage_palette_index = 4, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = "#6EB1FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "MesaBryce_ocean", - node_top = "mcl_core:sand", - depth_top = 3, - node_filler = "mcl_core:sand", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = -5, - vertical_blend = 1, - humidity_point = -5, - heat_point = 100, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 20, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Mesa Plateau F - -- Identical to Mesa below Y=30. At Y=30 and above there is a "dry" oak forest - minetest.register_biome({ - name = "MesaPlateauF", - node_top = "mcl_colorblocks:hardened_clay", - depth_top = 1, - node_filler = "mcl_colorblocks:hardened_clay", - node_riverbed = "mcl_core:redsand", - depth_riverbed = 1, - node_stone = "mcl_colorblocks:hardened_clay", - y_min = 11, - y_max = 29, - humidity_point = 0, - heat_point = 60, - vertical_blend = 0, -- we want a sharp transition - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 21, - _mcl_foliage_palette_index = 4, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = "#6EB1FF", - _mcl_fogcolor = overworld_fogcolor - }) - -- The oak forest plateau of this biome. - -- This is a plateau for grass blocks, dry shrubs, tall grass, coarse dirt and oaks. - -- Strata don't generate here. - minetest.register_biome({ - name = "MesaPlateauF_grasstop", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 1, - node_riverbed = "mcl_core:redsand", - depth_riverbed = 1, - node_stone = "mcl_colorblocks:hardened_clay", - y_min = 30, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 0, - heat_point = 60, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 21, - _mcl_foliage_palette_index = 4, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = "#6EB1FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "MesaPlateauF_sandlevel", - node_top = "mcl_core:redsand", - depth_top = 2, - node_filler = "mcl_colorblocks:hardened_clay_orange", - depth_filler = 3, - node_riverbed = "mcl_core:redsand", - depth_riverbed = 1, - node_stone = "mcl_colorblocks:hardened_clay_orange", - y_min = -5, - y_max = 10, - humidity_point = 0, - heat_point = 60, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 21, - _mcl_foliage_palette_index = 4, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = "#6EB1FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "MesaPlateauF_ocean", - node_top = "mcl_core:sand", - depth_top = 3, - node_filler = "mcl_core:sand", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = -6, - vertical_blend = 1, - humidity_point = 0, - heat_point = 60, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 21, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Mesa Plateau FM - -- Dryer and more "chaotic"/"weathered down" variant of MesaPlateauF: - -- oak forest is less dense, more coarse dirt, more erratic terrain, vertical blend, more red sand layers, - -- red sand as ores, red sandstone at sandlevel - minetest.register_biome({ - name = "MesaPlateauFM", - node_top = "mcl_colorblocks:hardened_clay", - depth_top = 1, - node_filler = "mcl_colorblocks:hardened_clay", - node_riverbed = "mcl_core:redsand", - depth_riverbed = 2, - node_stone = "mcl_colorblocks:hardened_clay", - y_min = 12, - y_max = 29, - humidity_point = -5, - heat_point = 60, - vertical_blend = 5, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 22, - _mcl_foliage_palette_index = 4, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = "#6EB1FF", - _mcl_fogcolor = overworld_fogcolor - }) - -- Grass plateau - minetest.register_biome({ - name = "MesaPlateauFM_grasstop", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:coarse_dirt", - depth_filler = 2, - node_riverbed = "mcl_core:redsand", - depth_riverbed = 1, - node_stone = "mcl_colorblocks:hardened_clay", - y_min = 30, - y_max = mcl_vars.mg_overworld_max, - humidity_point = -5, - heat_point = 60, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 22, - _mcl_foliage_palette_index = 4, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = "#6EB1FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "MesaPlateauFM_sandlevel", - node_top = "mcl_core:redsand", - depth_top = 3, - node_filler = "mcl_colorblocks:hardened_clay_orange", - depth_filler = 3, - node_riverbed = "mcl_core:redsand", - depth_riverbed = 2, - node_stone = "mcl_colorblocks:hardened_clay", - -- red sand has wider reach than in other mesa biomes - y_min = -7, - y_max = 11, - humidity_point = -5, - heat_point = 60, - vertical_blend = 4, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 22, - _mcl_foliage_palette_index = 4, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = "#6EB1FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "MesaPlateauFM_ocean", - node_top = "mcl_core:sand", - depth_top = 3, - node_filler = "mcl_core:sand", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 3, - y_min = OCEAN_MIN, - y_max = -8, - vertical_blend = 2, - humidity_point = -5, - heat_point = 60, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 22, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 3, - _mcl_waterfogcolor = warm_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - - -- Savanna - minetest.register_biome({ - name = "Savanna", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 36, - heat_point = 79, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 1, - _mcl_foliage_palette_index = 3, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = "#6EB1FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "Savanna_beach", - node_top = "mcl_core:sand", - depth_top = 3, - node_filler = "mcl_core:sandstone", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = -1, - y_max = 0, - humidity_point = 36, - heat_point = 79, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 1, - _mcl_foliage_palette_index = 1, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = beach_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "Savanna_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = -2, - humidity_point = 36, - heat_point = 79, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 1, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Savanna M - -- Changes to Savanna: Coarse Dirt. No sand beach. No oaks. - -- Otherwise identical to Savanna - minetest.register_biome({ - name = "SavannaM", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:coarse_dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 48, - heat_point = 100, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 23, - _mcl_foliage_palette_index = 3, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = "#6EB1FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "SavannaM_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 48, - heat_point = 100, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 23, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Jungle - minetest.register_biome({ - name = "Jungle", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 88, - heat_point = 81, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 24, - _mcl_foliage_palette_index = 12, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = "#77A8FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "Jungle_shore", - node_top = "mcl_core:dirt", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = -2, - y_max = 0, - humidity_point = 88, - heat_point = 81, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 24, - _mcl_foliage_palette_index = 12, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = "#77A8FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "Jungle_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = -3, - vertical_blend = 1, - humidity_point = 88, - heat_point = 81, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 24, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Jungle M - -- Like Jungle but with even more dense vegetation - minetest.register_biome({ - name = "JungleM", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 92, - heat_point = 81, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 25, - _mcl_foliage_palette_index = 12, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = "#77A8FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "JungleM_shore", - node_top = "mcl_core:dirt", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = -2, - y_max = 0, - humidity_point = 92, - heat_point = 81, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 25, - _mcl_foliage_palette_index = 12, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = "#77A8FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "JungleM_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = -3, - vertical_blend = 1, - humidity_point = 92, - heat_point = 81, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 25, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Jungle Edge - minetest.register_biome({ - name = "JungleEdge", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 88, - heat_point = 76, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 26, - _mcl_foliage_palette_index = 13, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = "#77A8FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "JungleEdge_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 88, - heat_point = 76, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 26, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Jungle Edge M (very rare). - -- Almost identical to Jungle Edge. Has deeper dirt. Melons spawn here a lot. - -- This biome occours directly between Jungle M and Jungle Edge but also has a small border to Jungle. - -- This biome is very small in general. - minetest.register_biome({ - name = "JungleEdgeM", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 4, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 90, - heat_point = 79, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 27, - _mcl_foliage_palette_index = 13, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = "#77A8FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "JungleEdgeM_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 4, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 90, - heat_point = 79, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 27, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Mangrove swamp - minetest.register_biome({ - name = "MangroveSwamp", - node_top = "mcl_mud:mud", - depth_top = 1, - node_filler = "mcl_mud:mud", - depth_filler = 3, - node_riverbed = "mcl_core:dirt", - depth_riverbed = 2, - y_min = 1, - -- Note: Limited in height! - y_max = 27, - humidity_point = 95, - heat_point = 94, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 27, - _mcl_foliage_palette_index = 6, - _mcl_water_palette_index = 7, - _mcl_waterfogcolor = "#3A7A6A", - _mcl_skycolor = "#78A7FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "MangroveSwamp_shore", - node_top = "mcl_mud:mud", - depth_top = 1, - node_filler = "mcl_mud:mud", - depth_filler = 3, - node_riverbed = "mcl_core:dirt", - depth_riverbed = 2, - y_min = -5, - y_max = 0, - humidity_point = 95, - heat_point = 94, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 27, - _mcl_foliage_palette_index = 6, - _mcl_water_palette_index = 7, - _mcl_waterfogcolor = "#3A7A6A", - _mcl_skycolor = "#78A7FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "MangroveSwamp_ocean", - node_top = "mcl_core:dirt", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:gravel", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = -6, - vertical_blend = 1, - humidity_point = 95, - heat_point = 94, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 27, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 7, - _mcl_waterfogcolor = "#3A7A6A", - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - -- Swampland - minetest.register_biome({ - name = "Swampland", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - -- Note: Limited in height! - y_max = 23, - humidity_point = 90, - heat_point = 50, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 28, - _mcl_foliage_palette_index = 5, - _mcl_water_palette_index = 1, - _mcl_waterfogcolor = "#617B64", - _mcl_skycolor = "#78A7FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "Swampland_shore", - node_top = "mcl_core:dirt", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = -5, - y_max = 0, - humidity_point = 90, - heat_point = 50, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 28, - _mcl_foliage_palette_index = 5, - _mcl_water_palette_index = 1, - _mcl_waterfogcolor = "#617B64", - _mcl_skycolor = "#78A7FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "Swampland_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = -6, - vertical_blend = 1, - humidity_point = 90, - heat_point = 50, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 28, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 1, - _mcl_waterfogcolor = "#617B64", - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Mushroom Island / Mushroom Island Shore (rare) - -- Not neccessarily an island at all, only named after Minecraft's biome - minetest.register_biome({ - name = "MushroomIsland", - node_top = "mcl_core:mycelium", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 4, - -- Note: Limited in height! - y_max = 20, - vertical_blend = 1, - humidity_point = 106, - heat_point = 50, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 29, - _mcl_foliage_palette_index = 17, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = "#77A8FF", - _mcl_fogcolor = overworld_fogcolor - }) - - minetest.register_biome({ - name = "MushroomIslandShore", - node_top = "mcl_core:mycelium", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = 3, - humidity_point = 106, - heat_point = 50, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 29, - _mcl_foliage_palette_index = 17, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = "#77A8FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "MushroomIsland_ocean", - node_top = "mcl_core:gravel", - depth_top = 1, - node_filler = "mcl_core:gravel", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 106, - heat_point = 50, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 29, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Bamboo Jungle areas are like the Jungle areas, but warmer and more humid. - -- Bamboo Jungle - minetest.register_biome({ - name = "BambooJungle", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 90, - heat_point = 95, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 24, - _mcl_foliage_palette_index = 12, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = "#77A8FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "BambooJungle_shore", - node_top = "mcl_core:dirt", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = -2, - y_max = 0, - humidity_point = 90, - heat_point = 95, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 24, - _mcl_foliage_palette_index = 12, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = "#77A8FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "BambooJungle_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = -3, - vertical_blend = 1, - humidity_point = 95, - heat_point = 90, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 24, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Bamboo Jungle M - -- Like Bamboo Jungle but with even more dense vegetation - minetest.register_biome({ - name = "BambooJungleM", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 95, - heat_point = 95, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 25, - _mcl_foliage_palette_index = 12, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = "#77A8FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "BambooJungleM_shore", - node_top = "mcl_core:dirt", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = -2, - y_max = 0, - humidity_point = 95, - heat_point = 90, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 25, - _mcl_foliage_palette_index = 12, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = "#77A8FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "BambooJungleM_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 3, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = -3, - vertical_blend = 1, - humidity_point = 95, - heat_point = 95, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 25, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Bamboo Jungle Edge - minetest.register_biome({ - name = "BambooJungleEdge", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 92, - heat_point = 90, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 26, - _mcl_foliage_palette_index = 13, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = "#77A8FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "BambooJungleEdge_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 2, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 95, - heat_point = 88, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 26, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Jungle Edge M (very rare). - -- Almost identical to Jungle Edge. Has deeper dirt. Melons spawn here a lot. - -- This biome occours directly between Jungle M and Jungle Edge but also has a small border to Jungle. - -- This biome is very small in general. - minetest.register_biome({ - name = "BambooJungleEdgeM", - node_top = "mcl_core:dirt_with_grass", - depth_top = 1, - node_filler = "mcl_core:dirt", - depth_filler = 4, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - humidity_point = 95, - heat_point = 95, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 27, - _mcl_foliage_palette_index = 13, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = "#77A8FF", - _mcl_fogcolor = overworld_fogcolor - }) - minetest.register_biome({ - name = "BambooJungleEdgeM_ocean", - node_top = "mcl_core:sand", - depth_top = 1, - node_filler = "mcl_core:sand", - depth_filler = 4, - node_riverbed = "mcl_core:sand", - depth_riverbed = 2, - y_min = OCEAN_MIN, - y_max = 0, - humidity_point = 97, - heat_point = 90, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 27, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 2, - _mcl_waterfogcolor = lukewarm_waterfogcolor, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Add deep ocean and underground biomes automatically. - for i = 1, #overworld_biomes do - local biome = overworld_biomes[i] - - -- Deep Ocean - minetest.register_biome({ - name = biome .. "_deep_ocean", - heat_point = minetest.registered_biomes[biome].heat_point, - humidity_point = minetest.registered_biomes[biome].humidity_point, - y_min = DEEP_OCEAN_MIN, - y_max = DEEP_OCEAN_MAX, - node_top = minetest.registered_biomes[biome .. "_ocean"].node_top, - depth_top = 2, - node_filler = minetest.registered_biomes[biome .. "_ocean"].node_filler, - depth_filler = 3, - node_riverbed = minetest.registered_biomes[biome .. "_ocean"].node_riverbed, - depth_riverbed = 2, - vertical_blend = 5, - _mcl_biome_type = minetest.registered_biomes[biome]._mcl_biome_type, - _mcl_grass_palette_index = minetest.registered_biomes[biome]._mcl_grass_palette_index, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = minetest.registered_biomes[biome]._mcl_water_palette_index, - _mcl_skycolor = ocean_skycolor, - _mcl_fogcolor = overworld_fogcolor - }) - - -- Underground biomes are used to identify the underground and to prevent nodes from the surface - -- (sand, dirt) from leaking into the underground. - minetest.register_biome({ - name = biome .. "_underground", - heat_point = minetest.registered_biomes[biome].heat_point, - humidity_point = minetest.registered_biomes[biome].humidity_point, - y_min = mcl_vars.mg_overworld_min, - y_max = DEEP_OCEAN_MIN - 1, - _mcl_biome_type = minetest.registered_biomes[biome]._mcl_biome_type, - _mcl_grass_palette_index = minetest.registered_biomes[biome]._mcl_grass_palette_index, - _mcl_foliage_palette_index = minetest.registered_biomes[biome]._mcl_foliage_palette_index, - _mcl_water_palette_index = minetest.registered_biomes[biome]._mcl_water_palette_index, - _mcl_skycolor = minetest.registered_biomes[biome]._mcl_skycolor, - _mcl_fogcolor = minetest.registered_biomes[biome]._mcl_fogcolor, - }) - - end -end - --- Register biomes of non-Overworld biomes -local function register_dimension_biomes() - --[[ REALMS ]] - - --[[ THE NETHER ]] - -- the following decoration is a hack to cover exposed bedrock in netherrack - be careful not to put any ceiling decorations in a way that would apply to this (they would get generated regardless of biome) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_core:bedrock"}, - sidelen = 16, - fill_ratio = 10, - y_min = mcl_vars.mg_lava_nether_max, - y_max = mcl_vars.mg_nether_max + 15, - height = 6, - max_height = 10, - decoration = "mcl_nether:netherrack", - flags = "all_ceilings", - param2 = 0, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_core:bedrock"}, - sidelen = 16, - fill_ratio = 10, - y_min = mcl_vars.mg_nether_min - 10, - y_max = mcl_vars.mg_lava_nether_max, - height = 7, - max_height = 14, - decoration = "mcl_nether:netherrack", - flags = "all_floors,force_placement", - param2 = 0, - }) - - minetest.register_biome({ - name = "Nether", - node_filler = "mcl_nether:netherrack", - node_stone = "mcl_nether:netherrack", - node_top = "mcl_nether:netherrack", - node_water = "air", - node_river_water = "air", - node_cave_liquid = "air", - y_min = mcl_vars.mg_nether_min, - - y_max = mcl_vars.mg_nether_max + 80, - heat_point = 100, - humidity_point = 0, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 17, - _mcl_foliage_palette_index = 3, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = nether_skycolor, - _mcl_fogcolor = "#330808" - }) - - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_blackstone:nether_gold", "mcl_nether:quartz_ore", "mcl_core:gravel", "mcl_nether:soul_sand", "mcl_nether:glowstone", "mcl_nether:magma"}, - sidelen = 16, - fill_ratio = 10, - biomes = {"Nether"}, - y_min = mcl_vars.mg_lava_nether_max, - y_max = mcl_vars.mg_nether_deco_max, - decoration = "mcl_nether:netherrack", - flags = "all_floors", - param2 = 0, - }) - - minetest.register_biome({ - name = "SoulsandValley", - node_filler = "mcl_nether:netherrack", - node_stone = "mcl_nether:netherrack", - node_top = "mcl_blackstone:soul_soil", - node_water = "air", - node_river_water = "air", - node_cave_liquid = "air", - y_min = mcl_vars.mg_nether_min, - y_max = mcl_vars.mg_nether_max + 80, - heat_point = 77, - humidity_point = 33, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 17, - _mcl_foliage_palette_index = 3, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = nether_skycolor, - _mcl_fogcolor = "#1B4745" - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_nether:magma"}, - sidelen = 16, - fill_ratio = 10, - biomes = {"SoulsandValley"}, - y_min = mcl_vars.mg_lava_nether_max, - y_max = mcl_vars.mg_nether_deco_max, - decoration = "mcl_blackstone:soul_soil", - flags = "all_floors, all_ceilings", - param2 = 0, - }) - - minetest.register_ore({ - ore_type = "blob", - ore = "mcl_nether:soul_sand", - wherein = {"mcl_nether:netherrack", "mcl_blackstone:soul_soil"}, - clust_scarcity = 100, - clust_num_ores = 225, - clust_size = 15, - biomes = {"SoulsandValley"}, - y_min = mcl_vars.mg_lava_nether_max, - y_max = mcl_vars.mg_nether_deco_max, - noise_params = { - offset = 0, - scale = 1, - spread = vector.new(250, 250, 250), - seed = 12345, - octaves = 3, - persist = 0.6, - lacunarity = 2, - flags = "defaults", - } - }) - minetest.register_biome({ - name = "CrimsonForest", - node_filler = "mcl_nether:netherrack", - node_stone = "mcl_nether:netherrack", - node_top = "mcl_crimson:crimson_nylium", - node_water = "air", - node_river_water = "air", - node_cave_liquid = "air", - y_min = mcl_vars.mg_nether_min, - y_max = mcl_vars.mg_nether_max + 80, - heat_point = 60, - humidity_point = 47, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 17, - _mcl_foliage_palette_index = 3, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = nether_skycolor, - _mcl_fogcolor = "#330303" - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_blackstone:nether_gold", "mcl_nether:quartz_ore", "mcl_core:gravel", "mcl_nether:soul_sand", "mcl_nether:magma", "mcl_blackstone:blackstone"}, - sidelen = 16, - fill_ratio = 10, - biomes = {"CrimsonForest"}, - y_min = mcl_vars.mg_lava_nether_max, - y_max = mcl_vars.mg_nether_deco_max, - decoration = "mcl_crimson:crimson_nylium", - flags = "all_floors", - param2 = 0, - }) - minetest.register_biome({ - name = "WarpedForest", - node_filler = "mcl_nether:netherrack", - node_stone = "mcl_nether:netherrack", - node_top = "mcl_crimson:warped_nylium", - node_water = "air", - node_river_water = "air", - node_cave_liquid = "air", - y_min = mcl_vars.mg_nether_min, - y_max = mcl_vars.mg_nether_max + 80, - heat_point = 37, - humidity_point = 70, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 17, - _mcl_foliage_palette_index = 3, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = nether_skycolor, - _mcl_fogcolor = "#1A051A" - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_blackstone:nether_gold", "mcl_nether:quartz_ore", "mcl_core:gravel", "mcl_nether:soul_sand", "mcl_nether:magma", "mcl_blackstone:blackstone"}, - sidelen = 16, - fill_ratio = 10, - biomes = {"WarpedForest"}, - y_min = mcl_vars.mg_lava_nether_max, - y_max = mcl_vars.mg_nether_deco_max, - decoration = "mcl_crimson:warped_nylium", - flags = "all_floors", - param2 = 0, - }) - minetest.register_biome({ - name = "BasaltDelta", - node_filler = "mcl_nether:netherrack", - node_stone = "mcl_nether:netherrack", - node_top = "mcl_blackstone:basalt", - node_water = "air", - node_river_water = "air", - node_cave_liquid = "air", - y_min = mcl_vars.mg_nether_min, - y_max = mcl_vars.mg_nether_max + 80, - heat_point = 27, - humidity_point = 80, - _mcl_biome_type = "hot", - _mcl_grass_palette_index = 17, - _mcl_foliage_palette_index = 3, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = nether_skycolor, - _mcl_fogcolor = "#685F70" - }) - - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_blackstone:nether_gold", "mcl_nether:quartz_ore", "mcl_core:gravel", "mcl_nether:soul_sand", "mcl_blackstone:blackstone", "mcl_nether:magma"}, - sidelen = 16, - fill_ratio = 10, - biomes = {"BasaltDelta"}, - y_min = mcl_vars.mg_lava_nether_max, - y_max = mcl_vars.mg_nether_deco_max, - decoration = "mcl_blackstone:basalt", - flags = "all_floors", - param2 = 0, - }) - - minetest.register_ore({ - ore_type = "blob", - ore = "mcl_blackstone:blackstone", - wherein = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_core:gravel"}, - clust_scarcity = 100, - clust_num_ores = 400, - clust_size = 20, - biomes = {"BasaltDelta"}, - y_min = mcl_vars.mg_lava_nether_max, - y_max = mcl_vars.mg_nether_deco_max, - noise_params = { - offset = 0, - scale = 1, - spread = vector.new(250, 250, 250), - seed = 12345, - octaves = 3, - persist = 0.6, - lacunarity = 2, - flags = "defaults", - } - }) - - --[[ THE END ]] - minetest.register_biome({ - name = "End", - node_stone = "air", - node_filler = "air", - node_water = "air", - node_river_water = "air", - node_cave_liquid = "air", - y_min = mcl_vars.mg_end_min, - y_max = mcl_vars.mg_end_max + 80, - heat_point = 1000, --ridiculously high values so End Island always takes precedent - humidity_point = 1000, - vertical_blend = 16, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 0, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = end_skycolor, - _mcl_fogcolor = end_fogcolor - }) - minetest.register_biome({ - name = "EndBarrens", - node_stone = "air", - node_filler = "air", - node_water = "air", - node_river_water = "air", - node_cave_liquid = "air", - y_min = mcl_vars.mg_end_min, - y_max = mcl_vars.mg_end_max + 80, - heat_point = 1000, - humidity_point = 1000, - vertical_blend = 16, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 0, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = end_skycolor, - _mcl_fogcolor = end_fogcolor - }) - minetest.register_biome({ - name = "EndMidlands", - node_stone = "air", - node_filler = "air", - node_water = "air", - node_river_water = "air", - node_cave_liquid = "air", - y_min = mcl_vars.mg_end_min, - y_max = mcl_vars.mg_end_max + 80, - heat_point = 1000, - humidity_point = 1000, - vertical_blend = 16, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 0, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = end_skycolor, - _mcl_fogcolor = end_fogcolor - }) - minetest.register_biome({ - name = "EndHighlands", - node_stone = "air", - node_filler = "air", - node_water = "air", - node_river_water = "air", - node_cave_liquid = "air", - y_min = mcl_vars.mg_end_min, - y_max = mcl_vars.mg_end_max + 80, - heat_point = 1000, - humidity_point = 1000, - vertical_blend = 16, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 0, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = end_skycolor, - _mcl_fogcolor = end_fogcolor - }) - minetest.register_biome({ - name = "EndSmallIslands", - node_stone = "air", - node_filler = "air", - node_water = "air", - node_river_water = "air", - node_cave_liquid = "air", - y_min = mcl_vars.mg_end_min, - y_max = mcl_vars.mg_end_max + 80, - heat_point = 1000, - humidity_point = 1000, - vertical_blend = 16, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 0, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = end_skycolor, - _mcl_fogcolor = end_fogcolor - }) - - minetest.register_biome({ - name = "EndBorder", - node_stone = "air", - node_filler = "air", - node_water = "air", - node_river_water = "air", - node_cave_liquid = "air", - y_min = mcl_vars.mg_end_min, - y_max = mcl_vars.mg_end_max + 80, - heat_point = 500, - humidity_point = 500, - vertical_blend = 16, - max_pos = vector.new(1250, mcl_vars.mg_end_min + 512, 1250), - min_pos = vector.new(-1250, mcl_vars.mg_end_min, -1250), - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 0, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = end_skycolor, - _mcl_fogcolor = end_fogcolor - }) - - minetest.register_biome({ - name = "EndIsland", - node_stone = "air", - node_filler = "air", - node_water = "air", - node_river_water = "air", - node_cave_liquid = "air", - max_pos = vector.new(650, mcl_vars.mg_end_min + 512, 650), - min_pos = vector.new(-650, mcl_vars.mg_end_min, -650), - heat_point = 50, - humidity_point = 50, - vertical_blend = 16, - _mcl_biome_type = "medium", - _mcl_grass_palette_index = 0, - _mcl_foliage_palette_index = 0, - _mcl_water_palette_index = 0, - _mcl_waterfogcolor = default_waterfogcolor, - _mcl_skycolor = end_skycolor, - _mcl_fogcolor = end_fogcolor - }) - -end - --- Register ores which are limited by biomes. For all mapgens except flat and singlenode. -local function register_biome_ores() - local stonelike = {"mcl_core:stone", "mcl_core:diorite", "mcl_core:andesite", "mcl_core:granite"} - - -- Emeralds - minetest.register_ore({ - ore_type = "scatter", - ore = "mcl_core:stone_with_emerald", - wherein = stonelike, - clust_scarcity = 16384, - clust_num_ores = 1, - clust_size = 1, - y_min = mcl_worlds.layer_to_y(4), - y_max = mcl_worlds.layer_to_y(32), - biomes = { - "ExtremeHills", "ExtremeHills_beach", "ExtremeHills_ocean", "ExtremeHills_deep_ocean", "ExtremeHills_underground", - "ExtremeHills+", "ExtremeHills+_ocean", "ExtremeHills+_deep_ocean", "ExtremeHills+_underground", - "ExtremeHillsM", "ExtremeHillsM_ocean", "ExtremeHillsM_deep_ocean", "ExtremeHillsM_underground", - }, - }) - - -- Rarely replace stone with stone monster eggs. - -- In v6 this can happen anywhere, in other mapgens only in Extreme Hills. - local monster_egg_scarcity - if mg_name == "v6" then - monster_egg_scarcity = 28 * 28 * 28 - else - monster_egg_scarcity = 26 * 26 * 26 - end - minetest.register_ore({ - ore_type = "scatter", - ore = "mcl_monster_eggs:monster_egg_stone", - wherein = "mcl_core:stone", - clust_scarcity = monster_egg_scarcity, - clust_num_ores = 3, - clust_size = 2, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_worlds.layer_to_y(61), - biomes = { - "ExtremeHills", "ExtremeHills_beach", "ExtremeHills_ocean", "ExtremeHills_deep_ocean", "ExtremeHills_underground", - "ExtremeHills+", "ExtremeHills+_ocean", "ExtremeHills+_deep_ocean", "ExtremeHills+_underground", - "ExtremeHillsM", "ExtremeHillsM_ocean", "ExtremeHillsM_deep_ocean", "ExtremeHillsM_underground", - }, - }) - - -- Bonus gold spawn in Mesa - if mg_name ~= "v6" then - minetest.register_ore({ - ore_type = "scatter", - ore = "mcl_core:stone_with_gold", - wherein = stonelike, - clust_scarcity = 3333, - clust_num_ores = 5, - clust_size = 3, - y_min = mcl_worlds.layer_to_y(32), - y_max = mcl_worlds.layer_to_y(79), - biomes = {"Mesa", "Mesa_sandlevel", "Mesa_ocean", - "MesaBryce", "MesaBryce_sandlevel", "MesaBryce_ocean", - "MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlateauF_ocean", - "MesaPlateauFM", "MesaPlateauFM_sandlevel", "MesaPlateauFM_ocean", }, - }) - end - --nether gold - if mg_name ~= "v6" then - minetest.register_ore({ - ore_type = "scatter", - ore = "mcl_blackstone:blackstone_gilded", - wherein = "mcl_blackstone:blackstone", - clust_scarcity = 4775, - clust_num_ores = 2, - clust_size = 2, - y_min = mcl_vars.mg_nether_min, - y_max = mcl_vars.mg_nether_max, - }) - minetest.register_ore({ - ore_type = "scatter", - ore = "mcl_blackstone:nether_gold", - wherein = "mcl_nether:netherrack", - clust_scarcity = 830, - clust_num_ores = 5, - clust_size = 3, - y_min = mcl_vars.mg_nether_min, - y_max = mcl_vars.mg_nether_max, - }) - minetest.register_ore({ - ore_type = "scatter", - ore = "mcl_blackstone:nether_gold", - wherein = "mcl_nether:netherrack", - clust_scarcity = 1660, - clust_num_ores = 4, - clust_size = 2, - y_min = mcl_vars.mg_nether_min, - y_max = mcl_vars.mg_nether_max, - }) - end -end - --- Register “fake” ores directly related to the biomes. These are mostly low-level landscape alternations -local function register_biomelike_ores() - - -- Random coarse dirt floor in Mega Taiga and Mesa Plateau F - minetest.register_ore({ - ore_type = "sheet", - ore = "mcl_core:coarse_dirt", - wherein = {"mcl_core:podzol", "mcl_core:dirt"}, - clust_scarcity = 1, - clust_num_ores = 12, - clust_size = 10, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - noise_threshold = 0.2, - noise_params = {offset = 0, scale = 15, spread = vector.new(130, 130, 130), seed = 24, octaves = 3, persist = 0.70}, - biomes = {"MegaTaiga"}, - }) - - minetest.register_ore({ - ore_type = "sheet", - ore = "mcl_core:coarse_dirt", - wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, - column_height_max = 1, - column_midpoint_factor = 0.0, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - noise_threshold = 0.0, - noise_params = {offset = 0, scale = 15, spread = vector.new(250, 250, 250), seed = 24, octaves = 3, persist = 0.70}, - biomes = {"MesaPlateauF_grasstop"}, - }) - minetest.register_ore({ - ore_type = "blob", - ore = "mcl_core:coarse_dirt", - wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, - clust_scarcity = 1500, - clust_num_ores = 25, - clust_size = 7, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - noise_params = { - offset = 0, - scale = 1, - spread = vector.new(250, 250, 250), - seed = 12345, - octaves = 3, - persist = 0.6, - lacunarity = 2, - flags = "defaults", - }, - biomes = {"MesaPlateauF_grasstop"}, - }) - minetest.register_ore({ - ore_type = "sheet", - ore = "mcl_core:coarse_dirt", - wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, - column_height_max = 1, - column_midpoint_factor = 0.0, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - noise_threshold = -2.5, - noise_params = {offset = 1, scale = 15, spread = vector.new(250, 250, 250), seed = 24, octaves = 3, persist = 0.80}, - biomes = {"MesaPlateauFM_grasstop"}, - }) - minetest.register_ore({ - ore_type = "blob", - ore = "mcl_core:coarse_dirt", - wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, - clust_scarcity = 1800, - clust_num_ores = 65, - clust_size = 15, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - noise_params = { - offset = 0, - scale = 1, - spread = vector.new(250, 250, 250), - seed = 12345, - octaves = 3, - persist = 0.6, - lacunarity = 2, - flags = "defaults", - }, - biomes = {"MesaPlateauFM_grasstop"}, - }) - -- Occasionally dig out portions of MesaPlateauFM - minetest.register_ore({ - ore_type = "blob", - ore = "air", - wherein = {"group:hardened_clay", "group:sand", "mcl_core:coarse_dirt"}, - clust_scarcity = 4000, - clust_size = 5, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - noise_params = { - offset = 0, - scale = 1, - spread = vector.new(250, 250, 250), - seed = 12345, - octaves = 3, - persist = 0.6, - lacunarity = 2, - flags = "defaults", - }, - biomes = {"MesaPlateauFM", "MesaPlateauFM_grasstop"}, - }) - minetest.register_ore({ - ore_type = "blob", - ore = "mcl_core:redsandstone", - wherein = {"mcl_colorblocks:hardened_clay_orange"}, - clust_scarcity = 300, - clust_size = 8, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - noise_params = { - offset = 0, - scale = 1, - spread = vector.new(250, 250, 250), - seed = 12345, - octaves = 3, - persist = 0.6, - lacunarity = 2, - flags = "defaults", - }, - biomes = {"MesaPlateauFM_sandlevel"}, - }) - -- More red sand in MesaPlateauFM - minetest.register_ore({ - ore_type = "sheet", - ore = "mcl_core:redsand", - wherein = {"group:hardened_clay"}, - clust_scarcity = 1, - clust_num_ores = 12, - clust_size = 10, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - noise_threshold = 0.1, - noise_params = {offset = 0, scale = 15, spread = vector.new(130, 130, 130), seed = 95, octaves = 3, persist = 0.70}, - biomes = {"MesaPlateauFM"}, - }) - minetest.register_ore({ - ore_type = "blob", - ore = "mcl_core:redsand", - wherein = {"group:hardened_clay"}, - clust_scarcity = 1500, - clust_size = 4, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - noise_params = { - offset = 0, - scale = 1, - spread = vector.new(250, 250, 250), - seed = 12345, - octaves = 3, - persist = 0.6, - lacunarity = 2, - flags = "defaults", - }, - biomes = {"MesaPlateauFM", "MesaPlateauFM_grasstop", "MesaPlateauFM_sandlevel"}, - }) - - -- Small dirt patches in Extreme Hills M - minetest.register_ore({ - ore_type = "blob", - -- TODO: Should be grass block. But generating this as ore means gras blocks will spawn undeground. :-( - ore = "mcl_core:dirt", - wherein = {"mcl_core:gravel"}, - clust_scarcity = 5000, - clust_num_ores = 12, - clust_size = 4, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - noise_threshold = 0.2, - noise_params = {offset = 0, scale = 5, spread = vector.new(250, 250, 250), seed = 64, octaves = 3, persist = 0.60}, - biomes = {"ExtremeHillsM"}, - }) - -- For a transition from stone to hardened clay in mesa biomes that is not perfectly flat - minetest.register_ore({ - ore_type = "stratum", - ore = "mcl_core:stone", - wherein = {"group:hardened_clay"}, - noise_params = {offset = -6, scale = 2, spread = vector.new(25, 25, 25), octaves = 1, persist = 0.60}, - stratum_thickness = 8, - biomes = { - "Mesa_sandlevel", "Mesa_ocean", - "MesaBryce_sandlevel", "MesaBryce_ocean", - "MesaPlateauF_sandlevel", "MesaPlateauF_ocean", - "MesaPlateauFM_sandlevel", "MesaPlateauFM_ocean", - }, - y_min = -4, - y_max = 0, - - }) - - -- Mesa strata (registered as sheet ores) - - -- Helper function to create strata. - local function stratum(y_min, height, color, seed, is_perfect) - if not height then - height = 1 - end - if not seed then - seed = 39 - end - local y_max = y_min + height - 1 - local perfect_biomes - if is_perfect then - -- "perfect" means no erosion - perfect_biomes = {"MesaBryce", "Mesa", "MesaPlateauF", "MesaPlateauFM"} - else - perfect_biomes = {"MesaBryce"} - end - -- Full, perfect stratum - minetest.register_ore({ - ore_type = "stratum", - ore = "mcl_colorblocks:hardened_clay_" .. color, - -- Only paint uncolored so the biome can choose - -- a color in advance. - wherein = {"mcl_colorblocks:hardened_clay"}, - y_min = y_min, - y_max = y_max, - biomes = perfect_biomes, - }) - if not is_perfect then - -- Slightly eroded stratum, only minor imperfections - minetest.register_ore({ - ore_type = "stratum", - ore = "mcl_colorblocks:hardened_clay_" .. color, - wherein = {"mcl_colorblocks:hardened_clay"}, - y_min = y_min, - y_max = y_max, - biomes = {"Mesa", "MesaPlateauF"}, - noise_params = { - offset = y_min + (y_max - y_min) / 2, - scale = 0, - spread = vector.new(50, 50, 50), - seed = seed + 4, - octaves = 1, - persist = 1.0 - }, - np_stratum_thickness = { - offset = 1.28, - scale = 1, - spread = vector.new(18, 18, 18), - seed = seed + 4, - octaves = 3, - persist = 0.8, - }, - }) - -- Very eroded stratum, most of the color is gone - minetest.register_ore({ - ore_type = "stratum", - ore = "mcl_colorblocks:hardened_clay_" .. color, - wherein = {"mcl_colorblocks:hardened_clay"}, - y_min = y_min, - y_max = y_max, - biomes = {"MesaPlateauFM"}, - noise_params = { - offset = y_min + (y_max - y_min) / 2, - scale = 0, - spread = vector.new(50, 50, 50), - seed = seed + 4, - octaves = 1, - persist = 1.0 - }, - np_stratum_thickness = { - offset = 0.1, - scale = 1, - spread = vector.new(28, 28, 28), - seed = seed + 4, - octaves = 2, - persist = 0.6, - }, - }) - end - - end - - -- Hardcoded orange strata near sea level. - - -- For MesaBryce, since it has no sand at these heights - stratum(4, 1, "orange", nil, true) - stratum(7, 2, "orange", nil, true) - - -- 3-level stratum above the sandlevel (all mesa biomes) - stratum(11, 3, "orange", nil, true) - - -- Create random strata for up to Y = 256. - -- These strata are calculated based on the world seed and are global. - -- They are thus different per-world. - local mesapr = PcgRandom(mg_seed) - - --[[ - - ------ DANGER ZONE! ------ - - The following code is sensitive to changes; changing any number may break - mapgen consistency when the mapgen generates new mapchunks in existing - worlds because the random generator will yield different results and the strata - suddenly don't match up anymore. ]] - - -- Available Mesa colors: - local mesa_stratum_colors = {"silver", "brown", "orange", "red", "yellow", "white"} - - -- Start level - local y = 17 - - -- Generate stratas - repeat - -- Each stratum has a color (duh!) - local colorid = mesapr:next(1, #mesa_stratum_colors) - - -- … and a random thickness - local heightrandom = mesapr:next(1, 12) - local h - if heightrandom == 12 then - h = 4 - elseif heightrandom >= 10 then - h = 3 - elseif heightrandom >= 8 then - h = 2 - else - h = 1 - end - -- Small built-in bias: Only thin strata up to this Y level - if y < 45 then - h = math.min(h, 2) - end - - -- Register stratum - stratum(y, h, mesa_stratum_colors[colorid]) - - -- Skip a random amount of layers (which won't get painted) - local skiprandom = mesapr:next(1, 12) - local skip - if skiprandom == 12 then - skip = 4 - elseif skiprandom >= 10 then - skip = 3 - elseif skiprandom >= 5 then - skip = 2 - elseif skiprandom >= 2 then - skip = 1 - else - -- If this happens, the next stratum will touch the previous one without gap - skip = 0 - end - - -- Get height of next stratum or finish - y = y + h + skip - until y > 256 - - --[[ END OF DANGER ZONE ]] -end - --- Non-Overworld ores -local function register_dimension_ores() - - --[[ NETHER GENERATION ]] - - -- Soul sand - minetest.register_ore({ - ore_type = "sheet", - ore = "mcl_nether:soul_sand", - -- Note: Stone is included only for v6 mapgen support. Netherrack is not generated naturally - -- in v6, but instead set with the on_generated function in mcl_mapgen_core. - wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, - clust_scarcity = 13 * 13 * 13, - clust_size = 5, - y_min = mcl_vars.mg_nether_min, - y_max = mcl_worlds.layer_to_y(64, "nether"), - noise_threshold = 0.0, - noise_params = { - offset = 0.5, - scale = 0.1, - spread = vector.new(5, 5, 5), - seed = 2316, - octaves = 1, - persist = 0.0 - }, - }) - - -- Magma blocks - minetest.register_ore({ - ore_type = "blob", - ore = "mcl_nether:magma", - wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, - clust_scarcity = 8 * 8 * 8, - clust_num_ores = 45, - clust_size = 6, - y_min = mcl_worlds.layer_to_y(23, "nether"), - y_max = mcl_worlds.layer_to_y(37, "nether"), - noise_params = { - offset = 0, - scale = 1, - spread = vector.new(250, 250, 250), - seed = 12345, - octaves = 3, - persist = 0.6, - lacunarity = 2, - flags = "defaults", - }, - }) - minetest.register_ore({ - ore_type = "blob", - ore = "mcl_nether:magma", - wherein = {"mcl_nether:netherrack"}, - clust_scarcity = 10 * 10 * 10, - clust_num_ores = 65, - clust_size = 8, - y_min = mcl_worlds.layer_to_y(23, "nether"), - y_max = mcl_worlds.layer_to_y(37, "nether"), - noise_params = { - offset = 0, - scale = 1, - spread = vector.new(250, 250, 250), - seed = 12345, - octaves = 3, - persist = 0.6, - lacunarity = 2, - flags = "defaults", - }, - }) - - -- Glowstone - minetest.register_ore({ - ore_type = "blob", - ore = "mcl_nether:glowstone", - wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, - clust_scarcity = 26 * 26 * 26, - clust_size = 5, - y_min = mcl_vars.mg_lava_nether_max + 10, - y_max = mcl_vars.mg_nether_max - 13, - noise_threshold = 0.0, - noise_params = { - offset = 0.5, - scale = 0.1, - spread = vector.new(5, 5, 5), - seed = 17676, - octaves = 1, - persist = 0.0 - }, - }) - - -- Gravel (Nether) - minetest.register_ore({ - ore_type = "sheet", - ore = "mcl_core:gravel", - wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, - column_height_min = 1, - column_height_max = 1, - column_midpoint_factor = 0, - y_min = mcl_worlds.layer_to_y(63, "nether"), - -- This should be 65, but for some reason with this setting, the sheet ore really stops at 65. o_O - y_max = mcl_worlds.layer_to_y(65 + 2, "nether"), - noise_threshold = 0.2, - noise_params = { - offset = 0.0, - scale = 0.5, - spread = vector.new(20, 20, 20), - seed = 766, - octaves = 3, - persist = 0.6, - }, - }) - - -- Nether quartz - if minetest.settings:get_bool("mcl_generate_ores", true) then - minetest.register_ore({ - ore_type = "scatter", - ore = "mcl_nether:quartz_ore", - wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, - clust_scarcity = 850, - clust_num_ores = 4, -- MC cluster amount: 4-10 - clust_size = 3, - y_min = mcl_vars.mg_nether_min, - y_max = mcl_vars.mg_nether_max, - }) - minetest.register_ore({ - ore_type = "scatter", - ore = "mcl_nether:quartz_ore", - wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, - clust_scarcity = 1650, - clust_num_ores = 8, -- MC cluster amount: 4-10 - clust_size = 4, - y_min = mcl_vars.mg_nether_min, - y_max = mcl_vars.mg_nether_max, - }) - end - - -- Lava springs in the Nether - minetest.register_ore({ - ore_type = "scatter", - ore = "mcl_nether:nether_lava_source", - wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, - clust_scarcity = 13500, --rare - clust_num_ores = 1, - clust_size = 1, - y_min = mcl_vars.mg_lava_nether_max, - y_max = mcl_vars.mg_nether_max - 13, - }) - - local lava_biomes = {"BasaltDelta", "Nether"} - minetest.register_ore({ - ore_type = "scatter", - ore = "mcl_nether:nether_lava_source", - wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, - clust_scarcity = 500, - clust_num_ores = 1, - clust_size = 1, - biomes = lava_biomes, - y_min = mcl_vars.mg_nether_min, - y_max = mcl_vars.mg_lava_nether_max + 1, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "mcl_nether:nether_lava_source", - wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, - clust_scarcity = 1000, - clust_num_ores = 1, - clust_size = 1, - biomes = lava_biomes, - y_min = mcl_vars.mg_lava_nether_max + 2, - y_max = mcl_vars.mg_lava_nether_max + 12, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "mcl_nether:nether_lava_source", - wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, - clust_scarcity = 2000, - clust_num_ores = 1, - clust_size = 1, - biomes = lava_biomes, - y_min = mcl_vars.mg_lava_nether_max + 13, - y_max = mcl_vars.mg_lava_nether_max + 48, - }) - minetest.register_ore({ - ore_type = "scatter", - ore = "mcl_nether:nether_lava_source", - wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, - clust_scarcity = 3500, - clust_num_ores = 1, - clust_size = 1, - biomes = lava_biomes, - y_min = mcl_vars.mg_lava_nether_max + 49, - y_max = mcl_vars.mg_nether_max - 13, - }) - - --[[ THE END ]] - - -- Generate fake End - -- TODO: Remove the "ores" when there's a better End generator - -- FIXME: Broken lighting in v6 mapgen - - local end_wherein - if mg_name == "v6" then - end_wherein = {"air", "mcl_core:stone"} - else - end_wherein = {"air"} - end - - local mult = 1.0 - - minetest.register_ore({ - ore_type = "stratum", - ore = "mcl_end:end_stone", - wherein = end_wherein, - biomes = {"EndSmallIslands", "Endborder"}, - y_min = mcl_vars.mg_end_min + 64, - y_max = mcl_vars.mg_end_min + 80, - clust_num_ores = 3375, - clust_size = 15, - - noise_params = { - offset = mcl_vars.mg_end_min + 70, - scale = -1, - spread = vector.new(84, 84, 84), - seed = 145, - octaves = 3, - persist = 0.6, - lacunarity = 2, - --flags = "defaults", - }, - - np_stratum_thickness = { - offset = 0, - scale = 15, - spread = vector.new(84, 84, 84), - seed = 145, - octaves = 3, - persist = 0.6, - lacunarity = 2, - --flags = "defaults", - }, - clust_scarcity = 1, - }) - - minetest.register_ore({ - ore_type = "stratum", - ore = "mcl_end:end_stone", - wherein = end_wherein, - biomes = {"End", "EndMidlands", "EndHighlands", "EndBarrens"}, - y_min = mcl_vars.mg_end_min + 64, - y_max = mcl_vars.mg_end_min + 80, - - noise_params = { - offset = mcl_vars.mg_end_min + 70, - scale = -1, - spread = vector.new(126, 126, 126), - seed = mg_seed + 9999, - octaves = 3, - persist = 0.5, - }, - - np_stratum_thickness = { - offset = -2, - scale = 10, - spread = vector.new(126, 126, 126), - seed = mg_seed + 9999, - octaves = 3, - persist = 0.5, - }, - clust_scarcity = 1, - }) - - minetest.register_ore({ - ore_type = "stratum", - ore = "mcl_end:end_stone", - wherein = end_wherein, - biomes = {"End", "EndMidlands", "EndHighlands", "EndBarrens"}, - y_min = mcl_vars.mg_end_min + 64, - y_max = mcl_vars.mg_end_min + 80, - - noise_params = { - offset = mcl_vars.mg_end_min + 72, - scale = -3, - spread = vector.new(84, 84, 84), - seed = mg_seed + 999, - octaves = 4, - persist = 0.8, - }, - - np_stratum_thickness = { - offset = -4, - scale = 10, - spread = vector.new(84, 84, 84), - seed = mg_seed + 999, - octaves = 4, - persist = 0.8, - }, - clust_scarcity = 1, - }) - minetest.register_ore({ - ore_type = "stratum", - ore = "mcl_end:end_stone", - wherein = end_wherein, - biomes = {"End", "EndMidlands", "EndHighlands", "EndBarrens"}, - y_min = mcl_vars.mg_end_min + 64, - y_max = mcl_vars.mg_end_min + 80, - - noise_params = { - offset = mcl_vars.mg_end_min + 70, - scale = -2, - spread = vector.new(84, 84, 84), - seed = mg_seed + 99, - octaves = 4, - persist = 0.85, - }, - - np_stratum_thickness = { - offset = -3, - scale = 5, - spread = vector.new(63, 63, 63), - seed = mg_seed + 50, - octaves = 4, - persist = 0.85, - }, - clust_scarcity = 1, - }) - -end - - --- All mapgens except mgv6 - --- Template to register a grass or fern decoration -local function register_grass_decoration(grasstype, offset, scale, biomes) - local place_on, seed, node - if grasstype == "fern" then - node = "mcl_flowers:fern" - place_on = {"group:grass_block_no_snow", "mcl_core:podzol", "mcl_mud:mud"} - seed = 333 - elseif grasstype == "tallgrass" then - node = "mcl_flowers:tallgrass" - place_on = {"group:grass_block_no_snow", "mcl_mud:mud"} - seed = 420 - end - local noise = { - offset = offset, - scale = scale, - spread = vector.new(200, 200, 200), - seed = seed, - octaves = 3, - persist = 0.6 - } - for b = 1, #biomes do - local param2 = minetest.registered_biomes[biomes[b]]._mcl_grass_palette_index - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - priority = 1500, - place_on = place_on, - sidelen = 16, - noise_params = noise, - biomes = {biomes[b]}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - decoration = node, - param2 = param2, - }) - end -end - -local function register_seagrass_decoration(grasstype, offset, scale, biomes) - local seed, nodes, surfaces, param2, param2_max, y_max - if grasstype == "seagrass" then - seed = 16 - surfaces = {"mcl_core:dirt", "mcl_core:sand", "mcl_core:gravel", "mcl_core:redsand"} - nodes = {"mcl_ocean:seagrass_dirt", "mcl_ocean:seagrass_sand", "mcl_ocean:seagrass_gravel", "mcl_ocean:seagrass_redsand"} - y_max = 0 - elseif grasstype == "kelp" then - seed = 32 - param2 = 16 - param2_max = 96 - surfaces = {"mcl_core:dirt", "mcl_core:sand", "mcl_core:gravel"} - nodes = {"mcl_ocean:kelp_dirt", "mcl_ocean:kelp_sand", "mcl_ocean:kelp_gravel"} - y_max = -6 - end - local noise = { - offset = offset, - scale = scale, - spread = vector.new(100, 100, 100), - seed = seed, - octaves = 3, - persist = 0.6, - } - - for s = 1, #surfaces do - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - priority = 1500, - place_on = {surfaces[s]}, - sidelen = 16, - noise_params = noise, - biomes = biomes, - y_min = DEEP_OCEAN_MIN, - y_max = y_max, - decoration = nodes[s], - param2 = param2, - param2_max = param2_max, - place_offset_y = -1, - flags = "force_placement", - }) - end -end - -local coral_min = OCEAN_MIN -local coral_max = -10 -local warm_oceans = { - "JungleEdgeM_ocean", - "Jungle_deep_ocean", - "Savanna_ocean", - "MesaPlateauF_ocean", - "Swampland_ocean", - "Mesa_ocean", - "Plains_ocean", - "MesaPlateauFM_ocean", - "MushroomIsland_ocean", - "SavannaM_ocean", - "JungleEdge_ocean", - "MesaBryce_ocean", - "Jungle_ocean", - "Desert_ocean", - "JungleM_ocean", - "MangroveSwamp_ocean" -} -local corals = { - "brain", - "horn", - "bubble", - "tube", - "fire" -} - -local function register_coral_decos(ck) - local c = corals[ck] - local noise = { - offset = -0.0085, - scale = 0.002, - spread = vector.new(25, 120, 25), - seed = 235, - octaves = 5, - persist = 1.8, - lacunarity = 3.5, - flags = "absvalue" - } - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:sand", "mcl_core:gravel", "mcl_mud:mud"}, - sidelen = 80, - noise_params = noise, - biomes = warm_oceans, - y_min = coral_min, - y_max = coral_max, - schematic = mod_mcl_structures .. "/schematics/mcl_structures_coral_" .. c .. "_1.mts", - rotation = "random", - flags = "all_floors,force_placement", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:sand", "mcl_core:gravel", "mcl_mud:mud"}, - noise_params = noise, - sidelen = 80, - biomes = warm_oceans, - y_min = coral_min, - y_max = coral_max, - schematic = mod_mcl_structures .. "/schematics/mcl_structures_coral_" .. c .. "_2.mts", - rotation = "random", - flags = "all_floors,force_placement", - }) - - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_ocean:" .. c .. "_coral_block"}, - sidelen = 16, - fill_ratio = 3, - y_min = coral_min, - y_max = coral_max, - decoration = "mcl_ocean:" .. c .. "_coral", - biomes = warm_oceans, - flags = "force_placement, all_floors", - height = 1, - height_max = 1, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_ocean:horn_coral_block"}, - sidelen = 16, - fill_ratio = 7, - y_min = coral_min, - y_max = coral_max, - decoration = "mcl_ocean:" .. c .. "_coral_fan", - biomes = warm_oceans, - flags = "force_placement, all_floors", - height = 1, - height_max = 1, - }) -end - ---- Fix light for mushroom lights after generation -local function fix_light_8_gennotify(t, minp, maxp, blockseed) - for _, pos in ipairs(t) do - minetest.fix_light(vector.offset(pos, -8, -8, -8), vector.offset(pos, 8, 8, 8)) - end -end ---- Grow mangrove roots after generation -local swamp_biome_id, swamp_shore_id -local function mangrove_root_gennotify(t, minp, maxp, blockseed) - for _, pos in ipairs(t) do - local nn = minetest.find_nodes_in_area(vector.offset(pos, -8, -1, -8), vector.offset(pos, 8, 0, 8), {"mcl_mangrove:mangrove_roots"}) - if nn and #nn > 0 then - local pr = PcgRandom(blockseed + mg_seed + 38327) - for _, v in pairs(nn) do - local l = pr:next(2, 16) - local n = minetest.get_node(vector.offset(v, 0, -1, 0)).name - if minetest.get_item_group(n, "water") > 0 then - local wl = "mcl_mangrove:water_logged_roots" - if n:find("river") then wl = "mcl_mangrove:river_water_logged_roots" end - minetest.bulk_swap_node(minetest.find_nodes_in_area(v, vector.offset(v, 0, -l, 0), {"group:water"}), {name = wl}) - elseif n == "mcl_mud:mud" then - minetest.bulk_swap_node(minetest.find_nodes_in_area(v, vector.offset(v, 0, -l, 0), {"mcl_mud:mud"}), {name = "mcl_mangrove:mangrove_mud_roots"}) - elseif n == "air" then - minetest.bulk_swap_node(minetest.find_nodes_in_area(v, vector.offset(v, 0, -l, 0), {"air"}), {name = "mcl_mangrove:mangrove_roots"}) - end - end - end - end -end - -local function register_decorations() - -- Coral Reefs - for k, _ in pairs(corals) do - register_coral_decos(k) - end - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"group:sand", "mcl_core:gravel", "mcl_mud:mud"}, - sidelen = 16, - noise_params = { - offset = -0.0085, - scale = 0.002, - spread = vector.new(25, 120, 25), - seed = 235, - octaves = 5, - persist = 1.8, - lacunarity = 3.5, - flags = "absvalue" - }, - y_min = coral_min, - y_max = coral_max, - decoration = "mcl_ocean:dead_brain_coral_block", - biomes = warm_oceans, - flags = "force_placement", - height = 1, - height_max = 1, - place_offset_y = -1, - }) - - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_ocean:dead_brain_coral_block"}, - sidelen = 16, - fill_ratio = 3, - y_min = coral_min, - y_max = coral_max, - decoration = "mcl_ocean:sea_pickle_1_dead_brain_coral_block", - biomes = warm_oceans, - flags = "force_placement, all_floors", - height = 1, - height_max = 1, - place_offset_y = -1, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_ocean:dead_brain_coral_block"}, - sidelen = 16, - fill_ratio = 3, - y_min = coral_min, - y_max = coral_max, - decoration = "mcl_ocean:sea_pickle_2_dead_brain_coral_block", - biomes = warm_oceans, - flags = "force_placement, all_floors", - height = 1, - height_max = 1, - place_offset_y = -1, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_ocean:dead_brain_coral_block"}, - sidelen = 16, - fill_ratio = 2, - y_min = coral_min, - y_max = coral_max, - decoration = "mcl_ocean:sea_pickle_3_dead_brain_coral_block", - biomes = warm_oceans, - flags = "force_placement, all_floors", - height = 1, - height_max = 1, - place_offset_y = -1, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_ocean:dead_brain_coral_block"}, - sidelen = 16, - fill_ratio = 2, - y_min = coral_min, - y_max = coral_max, - decoration = "mcl_ocean:sea_pickle_4_dead_brain_coral_block", - biomes = warm_oceans, - flags = "force_placement, all_floors", - height = 1, - height_max = 1, - place_offset_y = -1, - }) - --rare CORAl - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:sand", "mcl_core:gravel"}, - fill_ratio = 0.0001, - sidelen = 80, - biomes = warm_oceans, - y_min = coral_min, - y_max = coral_max, - schematic = mod_mcl_structures .. "/schematics/coral_cora.mts", - rotation = "random", - flags = "place_center_x,place_center_z, force_placement", - }) - - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:podzol"}, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.012, - spread = vector.new(100, 100, 100), - seed = 354, - octaves = 1, - persist = 0.5, - lacunarity = 1.0, - flags = "absvalue" - }, - biomes = {"Taiga", "ColdTaiga", "MegaTaiga", "MegaSpruceTaiga", "Forest"}, - y_max = mcl_vars.mg_overworld_max, - y_min = 2, - decoration = "mcl_sweet_berry:sweet_berry_bush_3" - }) - - -- Large ice spike - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"mcl_core:snowblock", "mcl_core:snow", "group:grass_block_snow"}, - sidelen = 80, - noise_params = { - offset = 0.00040, - scale = 0.001, - spread = vector.new(250, 250, 250), - seed = 1133, - octaves = 4, - persist = 0.67, - }, - biomes = {"IcePlainsSpikes"}, - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_structures .. "/schematics/mcl_structures_ice_spike_large.mts", - rotation = "random", - flags = "place_center_x, place_center_z", - }) - - -- Small ice spike - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"mcl_core:snowblock", "mcl_core:snow", "group:grass_block_snow"}, - sidelen = 80, - noise_params = { - offset = 0.005, - scale = 0.001, - spread = vector.new(250, 250, 250), - seed = 1133, - octaves = 4, - persist = 0.67, - }, - biomes = {"IcePlainsSpikes"}, - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_structures .. "/schematics/mcl_structures_ice_spike_small.mts", - rotation = "random", - flags = "place_center_x, place_center_z", - }) - - -- Oak - -- Large oaks - for i = 1, 4 do - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - noise_params = { - offset = 0.000545, - scale = 0.0011, - spread = vector.new(250, 250, 250), - seed = 3 + 5 * i, - octaves = 3, - persist = 0.66 - }, - biomes = {"Forest"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_oak_large_" .. i .. ".mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block", "mcl_core:dirt", }, - sidelen = 80, - noise_params = { - offset = -0.0007, - scale = 0.001, - spread = vector.new(250, 250, 250), - seed = 3, - octaves = 3, - persist = 0.6 - }, - biomes = {"ExtremeHills", "ExtremeHillsM", "ExtremeHills+", "ExtremeHills+_snowtop"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_oak_large_" .. i .. ".mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - end - -- Small “classic” oak (many biomes) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 16, - noise_params = { - offset = 0.025, - scale = 0.0022, - spread = vector.new(250, 250, 250), - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = {"Forest"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 16, - noise_params = { - offset = 0.01, - scale = 0.0022, - spread = vector.new(250, 250, 250), - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = {"FlowerForest"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block", "mcl_core:dirt", }, - sidelen = 16, - noise_params = { - offset = 0.0, - scale = 0.002, - spread = vector.new(250, 250, 250), - seed = 2, - octaves = 3, - persist = 0.7 - }, - biomes = {"ExtremeHills", "ExtremeHillsM", "ExtremeHills+", "ExtremeHills+_snowtop"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block", "mcl_core:dirt"}, - sidelen = 16, - noise_params = { - offset = 0.006, - scale = 0.002, - spread = vector.new(250, 250, 250), - seed = 2, - octaves = 3, - persist = 0.7 - }, - biomes = {"ExtremeHills+", "ExtremeHills+_snowtop"}, - y_min = 50, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, - sidelen = 16, - noise_params = { - offset = 0.015, - scale = 0.002, - spread = vector.new(250, 250, 250), - seed = 2, - octaves = 3, - persist = 0.7 - }, - biomes = {"MesaPlateauF_grasstop"}, - y_min = 30, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, - sidelen = 16, - noise_params = { - offset = 0.008, - scale = 0.002, - spread = vector.new(250, 250, 250), - seed = 2, - octaves = 3, - persist = 0.7 - }, - biomes = {"MesaPlateauFM_grasstop"}, - y_min = 30, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block", "mcl_core:dirt", }, - sidelen = 16, - noise_params = { - offset = 0.0, - scale = 0.0002, - spread = vector.new(250, 250, 250), - seed = 2, - octaves = 3, - persist = 0.7 - }, - biomes = {"IcePlains"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - fill_ratio = 0.004, - biomes = {"Jungle", "JungleM"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - fill_ratio = 0.0004, - biomes = {"JungleEdge", "JungleEdgeM", "Savanna"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 16, - --[[noise_params = { - offset = 0.01, - scale = 0.00001, - spread = vector.new(250, 250, 250), - seed = 2, - octaves = 3, - persist = 0.33 - },]]-- - fill_ratio = 0.0002, - biomes = {"FlowerForest"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic_bee_nest.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - spawn_by = "group:flower", - priority = 1550, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 16, - --[[noise_params = { - offset = 0.01, - scale = 0.00001, - spread = vector.new(250, 250, 250), - seed = 2, - octaves = 3, - persist = 0.33 - },]]-- - fill_ratio = 0.00002, - biomes = {"Forest"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic_bee_nest.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - spawn_by = "group:flower", - priority = 1550, - }) - - -- Rare balloon oak - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 16, - noise_params = { - offset = 0.002083, - scale = 0.0022, - spread = vector.new(250, 250, 250), - seed = 3, - octaves = 3, - persist = 0.6, - }, - biomes = {"Forest"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_oak_balloon.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - - -- Swamp oak - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - noise_params = { - offset = 0.0055, - scale = 0.0011, - spread = vector.new(250, 250, 250), - seed = 5005, - octaves = 5, - persist = 0.6, - }, - biomes = {"Swampland", "Swampland_shore"}, - y_min = 0, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_oak_swamp.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - - mcl_mapgen_core.register_decoration({ - name = "mcl_biomes:mangrove_tree_1", - deco_type = "schematic", - place_on = {"mcl_mud:mud"}, - sidelen = 80, - fill_ratio = 0.0065, - biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_tree_1.mts", - flags = "place_center_x, place_center_z, force_placement", - rotation = "random", - gen_callback = mangrove_root_gennotify, - }) - mcl_mapgen_core.register_decoration({ - name = "mcl_biomes:mangrove_tree_2", - deco_type = "schematic", - place_on = {"mcl_mud:mud"}, - sidelen = 80, - fill_ratio = 0.0045, - biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, - y_min = -1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_tree_2.mts", - flags = "place_center_x, place_center_z, force_placement", - rotation = "random", - gen_callback = mangrove_root_gennotify, - }) - mcl_mapgen_core.register_decoration({ - name = "mcl_biomes:mangrove_tree_3", - deco_type = "schematic", - place_on = {"mcl_mud:mud"}, - sidelen = 80, - fill_ratio = 0.023, - biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, - y_min = -1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_tree_3.mts", - flags = "place_center_x, place_center_z, force_placement", - rotation = "random", - gen_callback = mangrove_root_gennotify, - }) - mcl_mapgen_core.register_decoration({ - name = "mcl_biomes:mangrove_tree_4", - deco_type = "schematic", - place_on = {"mcl_mud:mud"}, - sidelen = 80, - fill_ratio = 0.023, - biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, - y_min = -1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_tree_4.mts", - flags = "place_center_x, place_center_z, force_placement", - rotation = "random", - gen_callback = mangrove_root_gennotify, - }) - mcl_mapgen_core.register_decoration({ - name = "mcl_biomes:mangrove_tree_5", - deco_type = "schematic", - place_on = {"mcl_mud:mud"}, - sidelen = 80, - fill_ratio = 0.023, - biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, - y_min = -1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_tree_5.mts", - flags = "place_center_x, place_center_z, force_placement", - rotation = "random", - gen_callback = mangrove_root_gennotify, - }) - mcl_mapgen_core.register_decoration({ - name = "mcl_biomes:mangrove_bee_nest", - deco_type = "schematic", - place_on = {"mcl_mud:mud"}, - sidelen = 80, - --[[noise_params = { - offset = 0.01, - scale = 0.00001, - spread = vector.new(250, 250, 250), - seed = 2, - octaves = 3, - persist = 0.33 - },]]-- - fill_ratio = 0.0005, - biomes = {"MangroveSwamp"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_bee_nest.mts", - flags = "place_center_x, place_center_z, force_placement", - rotation = "random", - spawn_by = "group:flower", - priority = 1550, - gen_callback = mangrove_root_gennotify, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_mud:mud"}, - sidelen = 80, - fill_ratio = 0.045, - biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, - y_min = 0, - y_max = 0, - decoration = "mcl_mangrove:water_logged_roots", - flags = "place_center_x, place_center_z, force_placement", - }) - - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_mangrove:mangrove_roots"}, - spawn_by = {"group:water"}, - num_spawn_by = 2, - sidelen = 80, - fill_ratio = 10, - biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, - y_min = 0, - y_max = 0, - decoration = "mcl_mangrove:water_logged_roots", - flags = "place_center_x, place_center_z, force_placement, all_ceilings", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_mud:mud"}, - sidelen = 80, - fill_ratio = 0.045, - biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, - place_offset_y = -1, - decoration = "mcl_mangrove:mangrove_mud_roots", - flags = "place_center_x, place_center_z, force_placement", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_mud:mud"}, - sidelen = 80, - fill_ratio = 0.008, - biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, - decoration = "mcl_core:deadbush", - flags = "place_center_x, place_center_z", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_core:water_source"}, - sidelen = 80, - fill_ratio = 0.035, - biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, - decoration = "mcl_flowers:waterlily", - flags = "place_center_x, place_center_z, liquid_surface", - }) - - -- Jungle tree - - -- Huge jungle tree (4 variants) - for i = 1, 4 do - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - fill_ratio = 0.0008, - biomes = {"Jungle"}, - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_huge_" .. i .. ".mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - fill_ratio = 0.003, - biomes = {"JungleM"}, - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_huge_" .. i .. ".mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - end - - -- Common jungle tree - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - fill_ratio = 0.025, - biomes = {"Jungle"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - fill_ratio = 0.015, - biomes = {"Jungle"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_2.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - fill_ratio = 0.005, - biomes = {"Jungle"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_3.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - fill_ratio = 0.005, - biomes = {"Jungle"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_4.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - fill_ratio = 0.025, - biomes = {"Jungle","BambooJungle"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - fill_ratio = 0.0045, - biomes = {"JungleEdge", "JungleEdgeM", "BambooJungleEdge", "BambooJungleEdgeM"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - fill_ratio = 0.09, - biomes = {"JungleM", "BambooJungleM"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_2.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - -- Spruce - local function quick_spruce(seed, offset, sprucename, biomes, y) - if not y then - y = 1 - end - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block", "mcl_core:dirt", "mcl_core:podzol"}, - sidelen = 16, - noise_params = { - offset = offset, - scale = 0.0006, - spread = vector.new(250, 250, 250), - seed = seed, - octaves = 3, - persist = 0.66 - }, - biomes = biomes, - y_min = y, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/" .. sprucename, - flags = "place_center_x, place_center_z", - }) - end - - -- Huge spruce - quick_spruce(3000, 0.0030, "mcl_core_spruce_huge_1.mts", {"MegaSpruceTaiga"}) - quick_spruce(4000, 0.0036, "mcl_core_spruce_huge_2.mts", {"MegaSpruceTaiga"}) - quick_spruce(6000, 0.0036, "mcl_core_spruce_huge_3.mts", {"MegaSpruceTaiga"}) - quick_spruce(6600, 0.0036, "mcl_core_spruce_huge_4.mts", {"MegaSpruceTaiga"}) - - quick_spruce(3000, 0.0008, "mcl_core_spruce_huge_up_1.mts", {"MegaTaiga"}) - quick_spruce(4000, 0.0008, "mcl_core_spruce_huge_up_2.mts", {"MegaTaiga"}) - quick_spruce(6000, 0.0008, "mcl_core_spruce_huge_up_3.mts", {"MegaTaiga"}) - - - -- Common spruce - quick_spruce(11000, 0.00150, "mcl_core_spruce_5.mts", {"Taiga", "ColdTaiga"}) - - quick_spruce(2500, 0.00325, "mcl_core_spruce_1.mts", {"MegaSpruceTaiga", "MegaTaiga", "Taiga", "ColdTaiga"}) - quick_spruce(7000, 0.00425, "mcl_core_spruce_3.mts", {"MegaSpruceTaiga", "MegaTaiga", "Taiga", "ColdTaiga"}) - quick_spruce(9000, 0.00325, "mcl_core_spruce_4.mts", {"MegaTaiga", "Taiga", "ColdTaiga"}) - - quick_spruce(9500, 0.00500, "mcl_core_spruce_tall.mts", {"MegaTaiga"}) - - quick_spruce(5000, 0.00250, "mcl_core_spruce_2.mts", {"MegaSpruceTaiga", "MegaTaiga"}) - - quick_spruce(11000, 0.000025, "mcl_core_spruce_5.mts", {"ExtremeHills", "ExtremeHillsM"}) - quick_spruce(2500, 0.00005, "mcl_core_spruce_1.mts", {"ExtremeHills", "ExtremeHillsM"}) - quick_spruce(7000, 0.00005, "mcl_core_spruce_3.mts", {"ExtremeHills", "ExtremeHillsM"}) - quick_spruce(9000, 0.00005, "mcl_core_spruce_4.mts", {"ExtremeHills", "ExtremeHillsM"}) - - quick_spruce(11000, 0.001, "mcl_core_spruce_5.mts", {"ExtremeHills+", "ExtremeHills+_snowtop"}, 50) - quick_spruce(2500, 0.002, "mcl_core_spruce_1.mts", {"ExtremeHills+", "ExtremeHills+_snowtop"}, 50) - quick_spruce(7000, 0.003, "mcl_core_spruce_3.mts", {"ExtremeHills+", "ExtremeHills+_snowtop"}, 50) - quick_spruce(9000, 0.002, "mcl_core_spruce_4.mts", {"ExtremeHills+", "ExtremeHills+_snowtop"}, 50) - - - -- Small lollipop spruce - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block", "mcl_core:podzol"}, - sidelen = 16, - noise_params = { - offset = 0.004, - scale = 0.0022, - spread = vector.new(250, 250, 250), - seed = 2500, - octaves = 3, - persist = 0.66 - }, - biomes = {"Taiga", "ColdTaiga"}, - y_min = 2, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_spruce_lollipop.mts", - flags = "place_center_x, place_center_z", - }) - - -- Matchstick spruce: Very few leaves, tall trunk - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block", "mcl_core:podzol"}, - sidelen = 80, - noise_params = { - offset = -0.025, - scale = 0.025, - spread = vector.new(250, 250, 250), - seed = 2566, - octaves = 5, - persist = 0.60, - }, - biomes = {"Taiga", "ColdTaiga"}, - y_min = 3, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_spruce_matchstick.mts", - flags = "place_center_x, place_center_z", - }) - - -- Rare spruce in Ice Plains - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block"}, - sidelen = 16, - noise_params = { - offset = -0.00075, - scale = -0.0015, - spread = vector.new(250, 250, 250), - seed = 11, - octaves = 3, - persist = 0.7 - }, - biomes = {"IcePlains"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_spruce_5.mts", - flags = "place_center_x, place_center_z", - }) - - -- Acacia (many variants) - for a = 1, 7 do - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:coarse_dirt"}, - sidelen = 16, - fill_ratio = 0.0002, - biomes = {"Savanna", "SavannaM"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_acacia_" .. a .. ".mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - end - - -- Birch - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow"}, - sidelen = 16, - noise_params = { - offset = 0.03, - scale = 0.0025, - spread = vector.new(250, 250, 250), - seed = 11, - octaves = 3, - persist = 0.66 - }, - biomes = {"BirchForest"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_birch.mts", - flags = "place_center_x, place_center_z", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow"}, - sidelen = 16, - noise_params = { - offset = 0.03, - scale = 0.0025, - spread = vector.new(250, 250, 250), - seed = 11, - octaves = 3, - persist = 0.66 - }, - biomes = {"BirchForestM"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_birch_tall.mts", - flags = "place_center_x, place_center_z", - }) - - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 16, - noise_params = { - offset = 0.000333, - scale = -0.0015, - spread = vector.new(250, 250, 250), - seed = 11, - octaves = 3, - persist = 0.66 - }, - biomes = {"Forest", "FlowerForest"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_birch.mts", - flags = "place_center_x, place_center_z", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 16, - --[[noise_params = { - offset = 0.01, - scale = 0.00001, - spread = vector.new(250, 250, 250), - seed = 2, - octaves = 3, - persist = 0.33 - },]]-- - fill_ratio = 0.00002, - biomes = {"Forest", "BirchForest", "BirchForestM"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_birch_bee_nest.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - spawn_by = "group:flower", - priority = 1550, - }) - - -- Dark Oak - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow"}, - sidelen = 16, - noise_params = { - offset = 0.05, - scale = 0.0015, - spread = vector.new(125, 125, 125), - seed = 223, - octaves = 3, - persist = 0.66 - }, - biomes = {"RoofedForest"}, - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_dark_oak.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - - local ratio_mushroom = 0.0001 - local ratio_mushroom_huge = ratio_mushroom * (11 / 12) - local ratio_mushroom_giant = ratio_mushroom * (1 / 12) - local ratio_mushroom_mycelium = 0.002 - local ratio_mushroom_mycelium_huge = ratio_mushroom_mycelium * (11 / 12) - local ratio_mushroom_mycelium_giant = ratio_mushroom_mycelium * (1 / 12) - - -- Huge Brown Mushroom - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - fill_ratio = ratio_mushroom_huge, - biomes = {"RoofedForest"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_huge_brown.mts", - flags = "place_center_x, place_center_z", - rotation = "0", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - fill_ratio = ratio_mushroom_giant, - biomes = {"RoofedForest"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_giant_brown.mts", - flags = "place_center_x, place_center_z", - rotation = "0", - }) - - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"mcl_core:mycelium"}, - sidelen = 80, - fill_ratio = ratio_mushroom_mycelium_huge, - biomes = {"MushroomIsland", "MushroomIslandShore"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_huge_brown.mts", - flags = "place_center_x, place_center_z", - rotation = "0", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"mcl_core:mycelium"}, - sidelen = 80, - fill_ratio = ratio_mushroom_mycelium_giant, - biomes = {"MushroomIsland", "MushroomIslandShore"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_giant_brown.mts", - flags = "place_center_x, place_center_z", - rotation = "0", - }) - - -- Huge Red Mushroom - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - fill_ratio = ratio_mushroom_huge, - biomes = {"RoofedForest"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_huge_red.mts", - flags = "place_center_x, place_center_z", - rotation = "0", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - fill_ratio = ratio_mushroom_giant, - biomes = {"RoofedForest"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_giant_red.mts", - flags = "place_center_x, place_center_z", - rotation = "0", - }) - - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"mcl_core:mycelium"}, - sidelen = 80, - fill_ratio = ratio_mushroom_mycelium_huge, - biomes = {"MushroomIsland", "MushroomIslandShore"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_huge_red.mts", - flags = "place_center_x, place_center_z", - rotation = "0", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"mcl_core:mycelium"}, - sidelen = 80, - fill_ratio = ratio_mushroom_mycelium_giant, - biomes = {"MushroomIsland", "MushroomIslandShore"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_giant_red.mts", - flags = "place_center_x, place_center_z", - rotation = "0", - }) - - --Snow on snowy dirt - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass_snow"}, - sidelen = 80, - fill_ratio = 10, - flags = "all_floors", - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_core:snow", - }) - - --Mushrooms in caves - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"group:material_stone"}, - sidelen = 80, - fill_ratio = 0.009, - noise_threshold = 2.0, - flags = "all_floors", - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_mushrooms:mushroom_red", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"group:material_stone"}, - sidelen = 80, - fill_ratio = 0.009, - noise_threshold = 2.0, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_mushrooms:mushroom_brown", - }) - - -- Mossy cobblestone boulder (3×3) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:coarse_dirt"}, - sidelen = 80, - noise_params = { - offset = 0.00015, - scale = 0.001, - spread = vector.new(300, 300, 300), - seed = 775703, - octaves = 4, - persist = 0.63, - }, - biomes = {"MegaTaiga", "MegaSpruceTaiga"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_structures .. "/schematics/mcl_structures_boulder.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - - -- Small mossy cobblestone boulder (2×2) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:coarse_dirt"}, - sidelen = 80, - noise_params = { - offset = 0.001, - scale = 0.001, - spread = vector.new(300, 300, 300), - seed = 775703, - octaves = 4, - persist = 0.63, - }, - biomes = {"MegaTaiga", "MegaSpruceTaiga"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_structures .. "/schematics/mcl_structures_boulder_small.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - - -- Cacti - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"group:sand"}, - sidelen = 16, - noise_params = { - offset = -0.01, - scale = 0.024, - spread = vector.new(100, 100, 100), - seed = 257, - octaves = 3, - persist = 0.6 - }, - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_core:cactus", - biomes = {"Desert", - "Mesa", "Mesa_sandlevel", - "MesaPlateauF", "MesaPlateauF_sandlevel", - "MesaPlateauFM", "MesaPlateauFM_sandlevel"}, - height = 1, - height_max = 3, - spawn_by = "air", - check_offset = 1, - num_spawn_by = 16 - }) - - -- Sugar canes - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_core:dirt", "mcl_core:coarse_dirt", "group:grass_block_no_snow", "group:sand", "mcl_core:podzol", "mcl_core:reeds"}, - sidelen = 16, - noise_params = { - offset = -0.3, - scale = 0.7, - spread = vector.new(200, 200, 200), - seed = 2, - octaves = 3, - persist = 0.7 - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_core:reeds", - height = 1, - height_max = 3, - spawn_by = {"mcl_core:water_source", "group:frosted_ice"}, - num_spawn_by = 1, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_core:dirt", "mcl_core:coarse_dirt", "group:grass_block_no_snow", "group:sand", "mcl_core:podzol", "mcl_core:reeds"}, - sidelen = 16, - noise_params = { - offset = 0.0, - scale = 0.5, - spread = vector.new(200, 200, 200), - seed = 2, - octaves = 3, - persist = 0.7, - }, - biomes = {"Swampland", "Swampland_shore"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_core:reeds", - height = 1, - height_max = 3, - spawn_by = {"mcl_core:water_source", "group:frosted_ice"}, - num_spawn_by = 1, - }) - - -- Doubletall grass - local function register_doubletall_grass(offset, scale, biomes) - - for b = 1, #biomes do - local param2 = minetest.registered_biomes[biomes[b]]._mcl_grass_palette_index - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - priority = 1500, - schematic = { - size = vector.new(1, 3, 1), - data = { - {name = "air", prob = 0}, - {name = "mcl_flowers:double_grass", param1 = 255, param2 = param2}, - {name = "mcl_flowers:double_grass_top", param1 = 255, param2 = param2}, - }, - }, - place_on = {"group:grass_block_no_snow"}, - sidelen = 16, - noise_params = { - offset = offset, - scale = scale, - spread = vector.new(200, 200, 200), - seed = 420, - octaves = 3, - persist = 0.6, - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - biomes = {biomes[b]}, - }) - end - end - - register_doubletall_grass(-0.01, 0.03, {"Taiga", "Forest", "FlowerForest", "BirchForest", "BirchForestM", "RoofedForest"}) - register_doubletall_grass(-0.002, 0.03, {"Plains", "SunflowerPlains"}) - register_doubletall_grass(-0.0005, -0.03, {"Savanna", "SavannaM"}) - - -- Large ferns - local function register_double_fern(offset, scale, biomes) - for b = 1, #biomes do - local param2 = minetest.registered_biomes[biomes[b]]._mcl_grass_palette_index - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - priority = 1500, - schematic = { - size = vector.new(1, 3, 1), - data = { - {name = "air", prob = 0}, - {name = "mcl_flowers:double_fern", param1 = 255, param2 = param2}, - {name = "mcl_flowers:double_fern_top", param1 = 255, param2 = param2}, - }, - }, - place_on = {"group:grass_block_no_snow", "mcl_core:podzol"}, - sidelen = 16, - noise_params = { - offset = offset, - scale = scale, - spread = vector.new(250, 250, 250), - seed = 333, - octaves = 2, - persist = 0.66, - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - biomes = biomes[b], - }) - end - end - - register_double_fern(0.01, 0.03, {"Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "ColdTaiga", "MegaTaiga", "MegaSpruceTaiga", "BambooJungle", "BambooJungleM", "BambooJungleEdge", "BambooJungleEdgeM", }) - register_double_fern(0.15, 0.1, {"JungleM", "BambooJungleM", "BambooJungle"}) - - -- Large flowers - local function register_large_flower(name, biomes, seed, offset, flower_forest_offset) - local maxi - if flower_forest_offset then - maxi = 2 - else - maxi = 1 - end - for i = 1, maxi do - local o, b -- offset, biomes - if i == 1 then - o = offset - b = biomes - else - o = flower_forest_offset - b = {"FlowerForest"} - end - - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - schematic = { - size = vector.new(1, 3, 1), - data = { - {name = "air", prob = 0}, - {name = "mcl_flowers:" .. name, param1 = 255, }, - {name = "mcl_flowers:" .. name .. "_top", param1 = 255, }, - }, - }, - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - - sidelen = 16, - noise_params = { - offset = o, - scale = 0.01, - spread = vector.new(300, 300, 300), - seed = seed, - octaves = 5, - persist = 0.62, - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - flags = "", - biomes = b, - }) - end - end - - register_large_flower("rose_bush", {"Forest"}, 9350, -0.008, 0.003) - register_large_flower("peony", {"Forest"}, 10450, -0.008, 0.003) - register_large_flower("lilac", {"Forest"}, 10600, -0.007, 0.003) - register_large_flower("sunflower", {"SunflowerPlains"}, 2940, 0.01) - - -- Jungle bush - - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - noise_params = { - offset = 0.0196, - scale = 0.015, - spread = vector.new(250, 250, 250), - seed = 2930, - octaves = 4, - persist = 0.6, - }, - biomes = {"Jungle"}, - y_min = 3, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves.mts", - flags = "place_center_x, place_center_z", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - noise_params = { - offset = 0.0196, - scale = 0.005, - spread = vector.new(250, 250, 250), - seed = 2930, - octaves = 4, - persist = 0.6, - }, - biomes = {"Jungle" }, - y_min = 3, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves_2.mts", - flags = "place_center_x, place_center_z", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - noise_params = { - offset = 0.05, - scale = 0.025, - spread = vector.new(250, 250, 250), - seed = 2930, - octaves = 4, - persist = 0.6, - }, - biomes = {"JungleM","BambooJungleM"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves.mts", - flags = "place_center_x, place_center_z", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - noise_params = { - offset = 0.0085, - scale = 0.025, - spread = vector.new(250, 250, 250), - seed = 2930, - octaves = 4, - persist = 0.6, - }, - biomes = {"JungleEdge", "JungleEdgeM", "BambooJungleEdgeM"}, - y_min = 3, - y_max = mcl_vars.mg_overworld_max, - schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves.mts", - flags = "place_center_x, place_center_z", - }) - - -- Bamboo - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt", }, - sidelen = 80, - fill_ratio = 0.0043, - biomes = {"Jungle", "JungleM", "JungleEdge", "JungleEdgeM"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_bamboo:bamboo", - height = 9, - max_height = 11, - flags = "place_center_x, place_center_z", - rotation = "random", - }) - - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt", "mcl_core:podzol"}, - sidelen = 80, - fill_ratio = 0.095, - biomes = {"BambooJungle", "BambooJungleM", "BambooJungleEdge", "BambooJungleEdgeM"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_bamboo:bamboo", - height = 9, - max_height = 10, - flags = "place_center_x, place_center_z", - rotation = "random", - }) - - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - priority = 1500, - place_on = {"group:grass_block_no_snow"}, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.012, - spread = vector.new(100, 100, 100), - seed = 354, - octaves = 1, - persist = 0.5, - lacunarity = 1.0, - flags = "absvalue" - }, - biomes = {"BambooJungle", "BambooJungleEdge","BambooJungleM", "BambooJungleEdge"}, - y_max = mcl_vars.mg_overworld_max, - y_min = 1, - decoration = "mcl_flowers:tallgrass" - }) - - register_doubletall_grass(-0.0005, -0.3, {"BambooJungle", "BambooJungleM", "BambooJungleEdge"}) - register_grass_decoration("tallgrass", -0.03, 1, {"BambooJungle", "BambooJungleM", "BambooJungleEdge"}) - - -- Lily pad - - local lily_schem = { - {name = "mcl_core:water_source"}, - {name = "mcl_flowers:waterlily"}, - } - - -- Spawn them in shallow water at ocean level in Swampland. - -- Tweak lilydepth to change the maximum water depth - local lilydepth = 2 - - for d = 1, lilydepth do - local height = d + 2 - local y = 1 - d - table.insert(lily_schem, 1, {name = "air", prob = 0}) - - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - schematic = { - size = vector.new(1, height, 1), - data = lily_schem, - }, - place_on = "mcl_core:dirt", - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.3, - spread = vector.new(100, 100, 100), - seed = 503, - octaves = 6, - persist = 0.7, - }, - y_min = y, - y_max = y, - biomes = {"Swampland_shore"}, - rotation = "random", - }) - end - - -- Melon - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow"}, - sidelen = 16, - noise_params = { - offset = -0.01, - scale = 0.006, - spread = vector.new(250, 250, 250), - seed = 333, - octaves = 3, - persist = 0.6 - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_farming:melon", - biomes = {"Jungle", "BambooJungle"}, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow"}, - sidelen = 16, - noise_params = { - offset = 0.0, - scale = 0.006, - spread = vector.new(250, 250, 250), - seed = 333, - octaves = 3, - persist = 0.6 - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_farming:melon", - biomes = {"JungleM", "BambooJungleM"}, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow"}, - sidelen = 16, - noise_params = { - offset = -0.005, - scale = 0.006, - spread = vector.new(250, 250, 250), - seed = 333, - octaves = 3, - persist = 0.6 - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_farming:melon", - biomes = {"JungleEdge", "JungleEdgeM", "BambooJungleEdge", "BambooJungleEdgeM"}, - }) - - -- Lots of melons in Jungle Edge M - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow"}, - sidelen = 80, - noise_params = { - offset = 0.013, - scale = 0.006, - spread = vector.new(125, 125, 125), - seed = 333, - octaves = 3, - persist = 0.6 - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_farming:melon", - biomes = {"JungleEdgeM"}, - }) - - -- Pumpkin - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - decoration = "mcl_farming:pumpkin", - param2 = 0, - param2_max = 3, - place_on = {"group:grass_block_no_snow"}, - sidelen = 16, - noise_params = { - offset = -0.016, - scale = 0.01332, - spread = vector.new(125, 125, 125), - seed = 666, - octaves = 6, - persist = 0.666 - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - biomes = {"ExtremeHills", "ExtremeHillsM", "ExtremeHills+", "Taiga", "MegaTaiga", "MegaSpruceTaiga", "Plains", "SunflowerPlains", "Swampland", "MangroveSwamp"}, - }) - - -- Grasses and ferns - local grass_forest = {"Plains", "Taiga", "Forest", "FlowerForest", "BirchForest", "BirchForestM", "RoofedForest", "Swampland", } - local grass_mpf = {"MesaPlateauF_grasstop"} - local grass_plains = {"Plains", "SunflowerPlains", "JungleEdge", "JungleEdgeM", "MangroveSwamp"} - local grass_savanna = {"Savanna", "SavannaM"} - local grass_sparse = {"ExtremeHills", "ExtremeHills+", "ExtremeHills+_snowtop", "ExtremeHillsM", "Jungle"} - local grass_mpfm = {"MesaPlateauFM_grasstop"} - - register_grass_decoration("tallgrass", -0.03, 0.09, grass_forest) - register_grass_decoration("tallgrass", -0.015, 0.075, grass_forest) - register_grass_decoration("tallgrass", 0, 0.06, grass_forest) - register_grass_decoration("tallgrass", 0.015, 0.045, grass_forest) - register_grass_decoration("tallgrass", 0.03, 0.03, grass_forest) - register_grass_decoration("tallgrass", -0.03, 0.09, grass_mpf) - register_grass_decoration("tallgrass", -0.015, 0.075, grass_mpf) - register_grass_decoration("tallgrass", 0, 0.06, grass_mpf) - register_grass_decoration("tallgrass", 0.01, 0.045, grass_mpf) - register_grass_decoration("tallgrass", 0.01, 0.05, grass_forest) - register_grass_decoration("tallgrass", 0.03, 0.03, grass_plains) - register_grass_decoration("tallgrass", 0.05, 0.01, grass_plains) - register_grass_decoration("tallgrass", 0.07, -0.01, grass_plains) - register_grass_decoration("tallgrass", 0.09, -0.03, grass_plains) - register_grass_decoration("tallgrass", 0.18, -0.03, grass_savanna) - register_grass_decoration("tallgrass", 0.05, -0.03, grass_sparse) - register_grass_decoration("tallgrass", 0.05, 0.05, grass_mpfm) - - local fern_minimal = {"Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga", "ColdTaiga", "MangroveSwamp"} - local fern_low = {"Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga"} - local fern_Jungle = {"Jungle", "JungleM", "JungleEdge", "JungleEdgeM"} - --local fern_JungleM = { "JungleM" }, - - register_grass_decoration("fern", -0.03, 0.09, fern_minimal) - register_grass_decoration("fern", -0.015, 0.075, fern_minimal) - register_grass_decoration("fern", 0, 0.06, fern_minimal) - register_grass_decoration("fern", 0.015, 0.045, fern_low) - register_grass_decoration("fern", 0.03, 0.03, fern_low) - register_grass_decoration("fern", 0.01, 0.05, fern_Jungle) - register_grass_decoration("fern", 0.03, 0.03, fern_Jungle) - register_grass_decoration("fern", 0.05, 0.01, fern_Jungle) - register_grass_decoration("fern", 0.07, -0.01, fern_Jungle) - register_grass_decoration("fern", 0.09, -0.03, fern_Jungle) - register_grass_decoration("fern", 0.12, -0.03, {"JungleM"}) - - local b_seagrass = {"ColdTaiga_ocean", "ExtremeHills_ocean", "ExtremeHillsM_ocean", "ExtremeHills+_ocean", "Taiga_ocean", "MegaTaiga_ocean", "MegaSpruceTaiga_ocean", "StoneBeach_ocean", "Plains_ocean", "SunflowerPlains_ocean", "Forest_ocean", "FlowerForest_ocean", "BirchForest_ocean", "BirchForestM_ocean", "RoofedForest_ocean", "Swampland_ocean", "Jungle_ocean", "JungleM_ocean", "JungleEdge_ocean", "JungleEdgeM_ocean", "MushroomIsland_ocean", "Desert_ocean", "Savanna_ocean", "SavannaM_ocean", "Mesa_ocean", "MesaBryce_ocean", "MesaPlateauF_ocean", "MesaPlateauFM_ocean", - "ColdTaiga_deep_ocean", "ExtremeHills_deep_ocean", "ExtremeHillsM_deep_ocean", "ExtremeHills+_deep_ocean", "Taiga_deep_ocean", "MegaTaiga_deep_ocean", "MegaSpruceTaiga_deep_ocean", "StoneBeach_deep_ocean", "Plains_deep_ocean", "SunflowerPlains_deep_ocean", "Forest_deep_ocean", "FlowerForest_deep_ocean", "BirchForest_deep_ocean", "BirchForestM_deep_ocean", "RoofedForest_deep_ocean", "Swampland_deep_ocean", "Jungle_deep_ocean", "JungleM_deep_ocean", "JungleEdge_deep_ocean", "JungleEdgeM_deep_ocean", "MushroomIsland_deep_ocean", "Desert_deep_ocean", "Savanna_deep_ocean", "SavannaM_deep_ocean", "Mesa_deep_ocean", "MesaBryce_deep_ocean", "MesaPlateauF_deep_ocean", "MesaPlateauFM_deep_ocean", - "Mesa_sandlevel", "MesaBryce_sandlevel", "MesaPlateauF_sandlevel", "MesaPlateauFM_sandlevel", "Swampland_shore", "Jungle_shore", "JungleM_shore", "Savanna_beach", "FlowerForest_beach", "ColdTaiga_beach_water", "ExtremeHills_beach"} - local b_kelp = {"ExtremeHillsM_ocean", "ExtremeHills+_ocean", "MegaTaiga_ocean", "MegaSpruceTaiga_ocean", "Plains_ocean", "SunflowerPlains_ocean", "Forest_ocean", "FlowerForest_ocean", "BirchForest_ocean", "BirchForestM_ocean", "RoofedForest_ocean", "Swampland_ocean", "Jungle_ocean", "JungleM_ocean", "JungleEdge_ocean", "JungleEdgeM_ocean", "MushroomIsland_ocean", - "ExtremeHillsM_deep_ocean", "ExtremeHills+_deep_ocean", "MegaTaiga_deep_ocean", "MegaSpruceTaiga_deep_ocean", "Plains_deep_ocean", "SunflowerPlains_deep_ocean", "Forest_deep_ocean", "FlowerForest_deep_ocean", "BirchForest_deep_ocean", "BirchForestM_deep_ocean", "RoofedForest_deep_ocean", "Swampland_deep_ocean", "Jungle_deep_ocean", "JungleM_deep_ocean", "JungleEdge_deep_ocean", "JungleEdgeM_deep_ocean", "MushroomIsland_deep_ocean" - } - - register_seagrass_decoration("seagrass", 0, 0.5, b_seagrass) - register_seagrass_decoration("kelp", -0.5, 1, b_kelp) - - -- Place tall grass on snow in Ice Plains and Extreme Hills+ - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - priority = 1500, - place_on = {"group:grass_block"}, - sidelen = 16, - noise_params = { - offset = -0.08, - scale = 0.09, - spread = vector.new(15, 15, 15), - seed = 420, - octaves = 3, - persist = 0.6, - }, - biomes = {"IcePlains"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = { - size = vector.new(1, 2, 1), - data = { - {name = "mcl_core:dirt_with_grass", force_place = true, }, - {name = "mcl_flowers:tallgrass", param2 = minetest.registered_biomes["IcePlains"]._mcl_grass_palette_index}, - }, - }, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - priority = 1500, - place_on = {"group:grass_block"}, - sidelen = 16, - noise_params = { - offset = 0.0, - scale = 0.09, - spread = vector.new(15, 15, 15), - seed = 420, - octaves = 3, - persist = 0.6, - }, - biomes = {"ExtremeHills+_snowtop"}, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - schematic = { - size = vector.new(1, 2, 1), - data = { - {name = "mcl_core:dirt_with_grass", force_place = true, }, - {name = "mcl_flowers:tallgrass", param2 = minetest.registered_biomes["ExtremeHills+_snowtop"]._mcl_grass_palette_index}, - }, - }, - }) - - - -- Dead bushes - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - priority = 1500, - place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:dirt_with_grass", "mcl_core:coarse_dirt", "group:hardened_clay"}, - sidelen = 16, - noise_params = { - offset = 0.01, - scale = 0.003, - spread = vector.new(100, 100, 100), - seed = 1972, - octaves = 3, - persist = 0.6 - }, - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - biomes = {"MegaSpruceTaiga", "MegaTaiga"}, - decoration = "mcl_core:deadbush", - height = 1, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - priority = 1500, - place_on = {"group:sand", "group:hardened_clay"}, - sidelen = 16, - noise_params = { - offset = 0.01, - scale = 0.006, - spread = vector.new(100, 100, 100), - seed = 1972, - octaves = 3, - persist = 0.6 - }, - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - biomes = {"Desert"}, - decoration = "mcl_core:deadbush", - height = 1, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - priority = 1500, - place_on = {"group:sand", "mcl_core:podzol", "mcl_core:dirt", "mcl_core:dirt_with_grass", "mcl_core:coarse_dirt", "group:hardened_clay"}, - sidelen = 16, - noise_params = { - offset = 0.01, - scale = 0.06, - spread = vector.new(100, 100, 100), - seed = 1972, - octaves = 3, - persist = 0.6 - }, - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - biomes = {"Mesa", "Mesa_sandlevel", "MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlateauF_grasstop", "MesaBryce"}, - decoration = "mcl_core:deadbush", - height = 1, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - priority = 1500, - place_on = {"group:sand", "mcl_core:dirt", "mcl_core:dirt_with_grass", "mcl_core:coarse_dirt"}, - sidelen = 16, - noise_params = { - offset = 0.01, - scale = 0.06, - spread = vector.new(100, 100, 100), - seed = 1972, - octaves = 3, - persist = 0.6 - }, - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - biomes = {"MesaPlateauFM_grasstop"}, - decoration = "mcl_core:deadbush", - height = 1, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - priority = 1500, - place_on = {"group:sand"}, - sidelen = 16, - noise_params = { - offset = 0.01, - scale = 0.06, - spread = vector.new(100, 100, 100), - seed = 1972, - octaves = 3, - persist = 0.6 - }, - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - biomes = {"MesaPlateauFM", "MesaPlateauFM_sandlevel"}, - decoration = "mcl_core:deadbush", - height = 1, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - priority = 1500, - place_on = {"group:hardened_clay"}, - sidelen = 16, - noise_params = { - offset = 0.01, - scale = 0.06, - spread = vector.new(100, 100, 100), - seed = 1972, - octaves = 3, - persist = 0.6 - }, - y_min = 4, - y_max = mcl_vars.mg_overworld_max, - biomes = {"MesaPlateauFM", "MesaPlateauFM_sandlevel", "MesaPlateauFM_grasstop"}, - decoration = "mcl_core:deadbush", - height = 1, - }) - - -- Mushrooms in mushroom biome - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_core:mycelium"}, - sidelen = 80, - fill_ratio = 0.009, - biomes = {"MushroomIsland", "MushroomIslandShore"}, - noise_threshold = 2.0, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_mushrooms:mushroom_red", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_core:mycelium"}, - sidelen = 80, - fill_ratio = 0.009, - biomes = {"MushroomIsland", "MushroomIslandShore"}, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_mushrooms:mushroom_brown", - }) - - -- Mushrooms in Taiga - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_core:podzol"}, - sidelen = 80, - fill_ratio = 0.003, - biomes = {"Taiga", "MegaTaiga", "MegaSpruceTaiga"}, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_mushrooms:mushroom_red", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_core:podzol"}, - sidelen = 80, - fill_ratio = 0.003, - biomes = {"Taiga", "MegaTaiga", "MegaSpruceTaiga"}, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, - decoration = "mcl_mushrooms:mushroom_brown", - }) - - - -- Mushrooms next to trees - local mushrooms = {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"} - local mseeds = {7133, 8244} - for m = 1, #mushrooms do - -- Mushrooms next to trees - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"}, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.003, - spread = vector.new(250, 250, 250), - seed = mseeds[m], - octaves = 3, - persist = 0.66, - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - decoration = mushrooms[m], - spawn_by = {"mcl_core:tree", "mcl_core:sprucetree", "mcl_core:darktree", "mcl_core:birchtree"}, - num_spawn_by = 1, - priority = 1150, - }) - - -- More mushrooms in Swampland - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"}, - sidelen = 16, - noise_params = { - offset = 0.05, - scale = 0.003, - spread = vector.new(250, 250, 250), - seed = mseeds[m], - octaves = 3, - persist = 0.6, - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - decoration = mushrooms[m], - biomes = {"Swampland"}, - spawn_by = {"mcl_core:tree", "mcl_core:sprucetree", "mcl_core:darktree", "mcl_core:birchtree"}, - num_spawn_by = 1, - priority = 1150, - }) - end - local function register_flower(name, biomes, seed, is_in_flower_forest, custom_rarity_mod) - if is_in_flower_forest == nil then - is_in_flower_forest = true - end - if biomes then - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 16, - noise_params = { - offset = 0.0008 + (custom_rarity_mod or 0), - scale = 0.006, - spread = vector.new(100, 100, 100), - seed = seed, - octaves = 3, - persist = 0.6 - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - biomes = biomes, - decoration = "mcl_flowers:" .. name, - }) - end - if is_in_flower_forest then - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 80, - noise_params = { - offset = 0.0008 * 40, - scale = 0.003, - spread = vector.new(100, 100, 100), - seed = seed, - octaves = 3, - persist = 0.6, - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - biomes = {"FlowerForest"}, - decoration = "mcl_flowers:" .. name, - }) - end - end - - local flower_biomes1 = {"Plains", "SunflowerPlains", "RoofedForest", "Forest", "BirchForest", "BirchForestM", "Taiga", "ColdTaiga", "Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Savanna", "SavannaM", "ExtremeHills", "ExtremeHillsM", "ExtremeHills+", "ExtremeHills+_snowtop"} - - register_flower("dandelion", flower_biomes1, 8) - register_flower("poppy", flower_biomes1, 9439) - - local flower_biomes2 = {"Plains", "SunflowerPlains"} - register_flower("tulip_red", flower_biomes2, 436) - register_flower("tulip_orange", flower_biomes2, 536) - register_flower("tulip_pink", flower_biomes2, 636) - register_flower("tulip_white", flower_biomes2, 736) - register_flower("azure_bluet", flower_biomes2, 800) - register_flower("oxeye_daisy", flower_biomes2, 3490) - - register_flower("allium", nil, 0) -- flower Forest only - register_flower("blue_orchid", {"Swampland"}, 64500, false) - - register_flower("lily_of_the_valley", nil, 325) - register_flower("cornflower", flower_biomes2, 486) - - register_flower("clover", flower_biomes1, 3, false, 0.04) - register_flower("fourleaf_clover", flower_biomes1, 13, false, -0.002) -end - --- Decorations in non-Overworld dimensions -local function register_dimension_decorations() - --[[ NETHER ]] - --NETHER WASTES (Nether) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_nether:netherrack", "mcl_nether:magma"}, - sidelen = 16, - fill_ratio = 0.04, - biomes = {"Nether"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_max - 1, - flags = "all_floors", - decoration = "mcl_fire:eternal_fire", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_nether:netherrack"}, - sidelen = 16, - fill_ratio = 0.013, - biomes = {"Nether"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_max - 1, - flags = "all_floors", - decoration = "mcl_mushrooms:mushroom_brown", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_nether:netherrack"}, - sidelen = 16, - fill_ratio = 0.012, - biomes = {"Nether"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_max - 1, - flags = "all_floors", - decoration = "mcl_mushrooms:mushroom_red", - }) - - -- WARPED FOREST - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_crimson:warped_nylium"}, - sidelen = 16, - fill_ratio = 0.02, - biomes = {"WarpedForest"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_max - 10, - flags = "all_floors", - decoration = "mcl_crimson:warped_fungus", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - name = "mcl_biomes:warped_tree1", - place_on = {"mcl_crimson:warped_nylium"}, - sidelen = 16, - fill_ratio = 0.007, - biomes = {"WarpedForest"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_max - 15, - flags = "all_floors, place_center_x, place_center_z", - schematic = mod_mcl_crimson .. "/schematics/warped_fungus_1.mts", - size = vector.new(5, 11, 5), - rotation = "random", - gen_callback = fix_light_8_gennotify, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - name = "mcl_biomes:warped_tree2", - place_on = {"mcl_crimson:warped_nylium"}, - sidelen = 16, - fill_ratio = 0.005, - biomes = {"WarpedForest"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_max - 10, - flags = "all_floors, place_center_x, place_center_z", - schematic = mod_mcl_crimson .. "/schematics/warped_fungus_2.mts", - size = vector.new(5, 6, 5), - rotation = "random", - gen_callback = fix_light_8_gennotify, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - name = "mcl_biomes:warped_tree3", - place_on = {"mcl_crimson:warped_nylium"}, - sidelen = 16, - fill_ratio = 0.003, - biomes = {"WarpedForest"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_max - 14, - flags = "all_floors, place_center_x, place_center_z", - schematic = mod_mcl_crimson .. "/schematics/warped_fungus_3.mts", - size = vector.new(5, 12, 5), - rotation = "random", - gen_callback = fix_light_8_gennotify, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_crimson:warped_nylium", "mcl_crimson:twisting_vines"}, - sidelen = 16, - fill_ratio = 0.032, - biomes = {"WarpedForest"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - flags = "all_floors", - height = 2, - height_max = 8, - decoration = "mcl_crimson:twisting_vines", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_crimson:warped_nylium"}, - sidelen = 16, - fill_ratio = 0.0812, - biomes = {"WarpedForest"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - flags = "all_floors", - max_height = 5, - decoration = "mcl_crimson:warped_roots", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_crimson:crimson_nylium"}, - sidelen = 16, - fill_ratio = 0.052, - biomes = {"WarpedForest"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - flags = "all_floors", - decoration = "mcl_crimson:nether_sprouts", - }) - -- CRIMSON FOREST - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_crimson:crimson_nylium"}, - sidelen = 16, - fill_ratio = 0.02, - biomes = {"CrimsonForest"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_max - 10, - flags = "all_floors", - decoration = "mcl_crimson:crimson_fungus", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - name = "mcl_biomes:crimson_tree1", - place_on = {"mcl_crimson:crimson_nylium"}, - sidelen = 16, - fill_ratio = 0.008, - biomes = {"CrimsonForest"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_max - 10, - flags = "all_floors, place_center_x, place_center_z", - schematic = mod_mcl_crimson .. "/schematics/crimson_fungus_1.mts", - size = vector.new(5, 8, 5), - rotation = "random", - gen_callback = fix_light_8_gennotify, - }) - minetest.register_alias("mcl_biomes:crimson_tree", "mcl_biomes:crimson_tree1") -- legacy inconsistency, fixed 08/2024 - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - name = "mcl_biomes:crimson_tree2", - place_on = {"mcl_crimson:crimson_nylium"}, - sidelen = 16, - fill_ratio = 0.006, - biomes = {"CrimsonForest"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_max - 15, - flags = "all_floors, place_center_x, place_center_z", - schematic = mod_mcl_crimson .. "/schematics/crimson_fungus_2.mts", - size = vector.new(5, 12, 5), - rotation = "random", - gen_callback = fix_light_8_gennotify, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - name = "mcl_biomes:crimson_tree3", - place_on = {"mcl_crimson:crimson_nylium"}, - sidelen = 16, - fill_ratio = 0.004, - biomes = {"CrimsonForest"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_max - 20, - flags = "all_floors, place_center_x, place_center_z", - schematic = mod_mcl_crimson .. "/schematics/crimson_fungus_3.mts", - size = vector.new(7, 13, 7), - rotation = "random", - gen_callback = fix_light_8_gennotify, - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_crimson:warped_nylium", "mcl_crimson:weeping_vines", "mcl_nether:netherrack"}, - sidelen = 16, - fill_ratio = 0.063, - biomes = {"CrimsonForest"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_deco_max, - flags = "all_ceilings", - height = 2, - height_max = 8, - decoration = "mcl_crimson:weeping_vines", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_crimson:crimson_nylium"}, - sidelen = 16, - fill_ratio = 0.082, - biomes = {"CrimsonForest"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - flags = "all_floors", - max_height = 5, - decoration = "mcl_crimson:crimson_roots", - }) - - --SOULSAND VALLEY - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - place_on = {"mcl_blackstone:soul_soil", "mcl_nether:soul_sand"}, - sidelen = 16, - fill_ratio = 0.062, - biomes = {"SoulsandValley"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - flags = "all_floors", - max_height = 5, - decoration = "mcl_blackstone:soul_fire", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"mcl_blackstone:soul_soil", "mcl_nether:soulsand"}, - sidelen = 16, - fill_ratio = 0.000212, - biomes = {"SoulsandValley"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - flags = "all_floors, place_center_x, place_center_z", - schematic = mod_mcl_blackstone .. "/schematics/mcl_blackstone_nether_fossil_1.mts", - size = vector.new(5, 8, 5), - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"mcl_blackstone:soul_soil", "mcl_nether:soulsand"}, - sidelen = 16, - fill_ratio = 0.0002233, - biomes = {"SoulsandValley"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - flags = "all_floors, place_center_x, place_center_z", - schematic = mod_mcl_blackstone .. "/schematics/mcl_blackstone_nether_fossil_2.mts", - size = vector.new(5, 8, 5), - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"mcl_blackstone:soul_soil", "mcl_nether:soulsand"}, - sidelen = 16, - fill_ratio = 0.000225, - biomes = {"SoulsandValley"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - flags = "all_floors, place_center_x, place_center_z", - schematic = mod_mcl_blackstone .. "/schematics/mcl_blackstone_nether_fossil_3.mts", - size = vector.new(5, 8, 5), - rotation = "random", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "schematic", - place_on = {"mcl_blackstone:soul_soil", "mcl_nether:soulsand"}, - sidelen = 16, - fill_ratio = 0.00022323, - biomes = {"SoulsandValley"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - flags = "all_floors, place_center_x, place_center_z", - schematic = mod_mcl_blackstone .. "/schematics/mcl_blackstone_nether_fossil_4.mts", - size = vector.new(5, 8, 5), - rotation = "random", - }) - --BASALT DELTA - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - decoration = "mcl_blackstone:basalt", - place_on = {"mcl_blackstone:basalt", "mcl_nether:netherrack", "mcl_blackstone:blackstone"}, - sidelen = 80, - height_max = 55, - noise_params = { - offset = -0.0085, - scale = 0.002, - spread = vector.new(25, 120, 25), - seed = 2325, - octaves = 5, - persist = 2, - lacunarity = 3.5, - flags = "absvalue" - }, - biomes = {"BasaltDelta"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_deco_max - 50, - flags = "all_floors, all ceilings", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - decoration = "mcl_blackstone:basalt", - place_on = {"mcl_blackstone:basalt", "mcl_nether:netherrack", "mcl_blackstone:blackstone"}, - sidelen = 80, - height_max = 15, - noise_params = { - offset = -0.0085, - scale = 0.004, - spread = vector.new(25, 120, 25), - seed = 235, - octaves = 5, - persist = 2.5, - lacunarity = 3.5, - flags = "absvalue" - }, - biomes = {"BasaltDelta"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_deco_max - 15, - flags = "all_floors, all ceilings", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - decoration = "mcl_blackstone:basalt", - place_on = {"mcl_blackstone:basalt", "mcl_nether:netherrack", "mcl_blackstone:blackstone"}, - sidelen = 80, - height_max = 3, - fill_ratio = 0.4, - biomes = {"BasaltDelta"}, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_deco_max - 15, - flags = "all_floors, all ceilings", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - decoration = "mcl_nether:magma", - place_on = {"mcl_blackstone:basalt", "mcl_nether:netherrack", "mcl_blackstone:blackstone"}, - sidelen = 80, - fill_ratio = 0.082323, - biomes = {"BasaltDelta"}, - place_offset_y = -1, - y_min = mcl_vars.mg_lava_nether_max + 1, - flags = "all_floors, all ceilings", - }) - mcl_mapgen_core.register_decoration({ - deco_type = "simple", - decoration = "mcl_nether:nether_lava_source", - place_on = {"mcl_blackstone:basalt", "mcl_nether:netherrack", "mcl_blackstone:blackstone"}, - spawn_by = {"mcl_blackstone:basalt", "mcl_blackstone:blackstone"}, - num_spawn_by = 14, - sidelen = 80, - fill_ratio = 4, - biomes = {"BasaltDelta"}, - place_offset_y = -1, - y_min = mcl_vars.mg_lava_nether_max + 1, - y_max = mcl_vars.mg_nether_max - 5, - flags = "all_floors, force_placement", - }) - - --[[ THE END ]] - - -- Chorus plant - mcl_mapgen_core.register_decoration({ - name = "mcl_biomes:chorus", - deco_type = "simple", - place_on = {"mcl_end:end_stone"}, - flags = "all_floors", - sidelen = 16, - noise_params = { - offset = -0.012, - scale = 0.024, - spread = vector.new(100, 100, 100), - seed = 257, - octaves = 3, - persist = 0.6 - }, - y_min = mcl_vars.mg_end_min, - y_max = mcl_vars.mg_end_max, - decoration = "mcl_end:chorus_plant", - height = 1, - height_max = 8, - biomes = {"End", "EndMidlands", "EndHighlands", "EndBarrens", "EndSmallIslands"}, - }) - mcl_mapgen_core.register_decoration({ - name = "mcl_biomes:chorus_plant", - deco_type = "simple", - place_on = {"mcl_end:chorus_plant"}, - flags = "all_floors", - sidelen = 16, - fill_ratio = 10, - --[[noise_params = { - offset = -0.012, - scale = 0.024, - spread = vector.new(100, 100, 100), - seed = 257, - octaves = 3, - persist = 0.6 - },--]] - y_min = mcl_vars.mg_end_min, - y_max = mcl_vars.mg_end_max, - decoration = "mcl_end:chorus_flower", - height = 1, - biomes = {"End", "EndMidlands", "EndHighlands", "EndBarrens", "EndSmallIslands"}, - gen_callback = function(t, minp, maxp, blockseed) - local pr = PcgRandom(blockseed + mg_seed + 99682) - for _, pos in ipairs(t) do - local x, y, z = pos.x, pos.y, pos.z - if x < -10 or x > 10 or z < -10 or z > 10 then - local realpos = vector.new(x, y + 1, z) - local node = minetest.get_node(realpos) - if node and node.name == "mcl_end:chorus_flower" then - mcl_end.grow_chorus_plant(realpos, node, pr) - end - end - end - end, - }) - -- TODO: End cities -end - - --- --- Detect mapgen to select functions --- -if mg_name ~= "singlenode" then - if not superflat then - if mg_name ~= "v6" then - register_biomes() - register_biomelike_ores() - end - register_biome_ores() - if mg_name ~= "v6" then - register_decorations() - end - else - -- Implementation of Minecraft's Superflat mapgen, classic style: - -- * Perfectly flat land, 1 grass biome, no decorations, no caves - -- * 4 layers, from top to bottom: grass block, dirt, dirt, bedrock - minetest.clear_registered_biomes() - minetest.clear_registered_decorations() - minetest.clear_registered_schematics() - register_classic_superflat_biome() - end - - -- Non-overworld stuff is registered independently - register_dimension_biomes() - register_dimension_ores() - register_dimension_decorations() -end diff --git a/mods/MAPGEN/mcl_biomes/LICENSE b/mods/MAPGEN/vl_biomes/LICENSE similarity index 100% rename from mods/MAPGEN/mcl_biomes/LICENSE rename to mods/MAPGEN/vl_biomes/LICENSE diff --git a/mods/MAPGEN/vl_biomes/README.md b/mods/MAPGEN/vl_biomes/README.md new file mode 100644 index 000000000..9244c1415 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/README.md @@ -0,0 +1 @@ +Biomes mod. By Wuzzy, maikerumine, and kno10. diff --git a/mods/MAPGEN/vl_biomes/badlands-strata.lua b/mods/MAPGEN/vl_biomes/badlands-strata.lua new file mode 100644 index 000000000..f4d407e4a --- /dev/null +++ b/mods/MAPGEN/vl_biomes/badlands-strata.lua @@ -0,0 +1,243 @@ +local mg_name = minetest.get_mapgen_setting("mg_name") +local mg_seed = minetest.get_mapgen_setting("seed") + +-- SHARED patterns across different variants of badlands/mesa for consistency +-- Bonus gold spawn in Mesa +if mg_name ~= "v6" then + local stonelike = {"mcl_core:stone", "mcl_core:diorite", "mcl_core:andesite", "mcl_core:granite"} + minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_core:stone_with_gold", + wherein = stonelike, + clust_scarcity = 3333, + clust_num_ores = 5, + clust_size = 3, + y_min = mcl_worlds.layer_to_y(32), + y_max = mcl_worlds.layer_to_y(79), + biomes = {"Mesa", "Mesa_sandlevel", "Mesa_ocean", + "MesaBryce", "MesaBryce_sandlevel", "MesaBryce_ocean", + "MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlateauF_ocean", + "MesaPlateauFM", "MesaPlateauFM_sandlevel", "MesaPlateauFM_ocean", }, + }) +end + +-- For a transition from stone to hardened clay in mesa biomes that is not perfectly flat +minetest.register_ore({ + ore_type = "stratum", + ore = "mcl_core:stone", + wherein = {"group:hardened_clay"}, + noise_params = {offset = -6, scale = 2, spread = vector.new(25, 25, 25), octaves = 1, persist = 0.60}, + stratum_thickness = 8, + biomes = { + "Mesa_sandlevel", "Mesa_ocean", + "MesaBryce_sandlevel", "MesaBryce_ocean", + "MesaPlateauF_sandlevel", "MesaPlateauF_ocean", + "MesaPlateauFM_sandlevel", "MesaPlateauFM_ocean", + }, + y_min = -4, + y_max = 0, + +}) + +-- Mesa strata (registered as sheet ores) + +-- Helper function to create strata. +local function stratum(y_min, height, color, seed, is_perfect) + height = height or 1 + seed = seed or 39 + local y_max = y_min + height - 1 + -- "perfect" means no erosion + local perfect_biomes = is_perfect and {"MesaBryce", "Mesa", "MesaPlateauF", "MesaPlateauFM"} or {"MesaBryce"} + -- Full, perfect stratum + minetest.register_ore({ + ore_type = "stratum", + ore = "mcl_colorblocks:hardened_clay_" .. color, + -- Only paint uncolored so the biome can choose + -- a color in advance. + wherein = {"mcl_colorblocks:hardened_clay"}, + y_min = y_min, + y_max = y_max, + biomes = perfect_biomes, + }) + if not is_perfect then + -- Slightly eroded stratum, only minor imperfections + minetest.register_ore({ + ore_type = "stratum", + ore = "mcl_colorblocks:hardened_clay_" .. color, + wherein = {"mcl_colorblocks:hardened_clay"}, + y_min = y_min, + y_max = y_max, + biomes = {"Mesa", "MesaPlateauF"}, + noise_params = { + offset = y_min + (y_max - y_min) / 2, + scale = 0, + spread = vector.new(50, 50, 50), + seed = seed + 4, + octaves = 1, + persist = 1.0 + }, + np_stratum_thickness = { + offset = 1.28, + scale = 1, + spread = vector.new(18, 18, 18), + seed = seed + 4, + octaves = 3, + persist = 0.8, + }, + }) + -- Very eroded stratum, most of the color is gone + minetest.register_ore({ + ore_type = "stratum", + ore = "mcl_colorblocks:hardened_clay_" .. color, + wherein = {"mcl_colorblocks:hardened_clay"}, + y_min = y_min, + y_max = y_max, + biomes = {"MesaPlateauFM"}, + noise_params = { + offset = y_min + (y_max - y_min) / 2, + scale = 0, + spread = vector.new(50, 50, 50), + seed = seed + 4, + octaves = 1, + persist = 1.0 + }, + np_stratum_thickness = { + offset = 0.1, + scale = 1, + spread = vector.new(28, 28, 28), + seed = seed + 4, + octaves = 2, + persist = 0.6, + }, + }) + end + +end + +-- Hardcoded orange strata near sea level. +-- For MesaBryce, since it has no sand at these heights +stratum(4, 1, "orange", nil, true) +stratum(7, 2, "orange", nil, true) + +-- 3-level stratum above the sandlevel (all mesa biomes) +stratum(11, 3, "orange", nil, true) + +-- Create random strata for up to Y = 256. +--[[ + +------ DANGER ZONE! ------ + +The following code is sensitive to changes; changing any number may break +mapgen consistency when the mapgen generates new mapchunks in existing +worlds because the random generator will yield different results and the strata +suddenly don't match up anymore. ]] + +-- These strata are calculated based on the world seed and are global. +-- They are thus different per-world. +local mesapr = PcgRandom(mg_seed) + +-- Available Mesa colors: +local mesa_stratum_colors = {"silver", "brown", "orange", "red", "yellow", "white"} + +-- Start level +local y = 17 +-- Generate stratas +while y <= 256 do + -- Each stratum has a color (duh!) + local colorid = mesapr:next(1, #mesa_stratum_colors) + + -- … and a random thickness + local heightrandom = mesapr:next(1, 12) + local h = heightrandom == 12 and 4 or heightrandom >= 10 and 3 or heightrandom >= 8 and 2 or 1 + -- Small built-in bias: Only thin strata up to this Y level + if y < 45 then h = math.min(h, 2) end + + -- Register stratum + stratum(y, h, mesa_stratum_colors[colorid]) + + -- Skip a random amount of layers (which won't get painted) + local skiprandom = mesapr:next(1, 12) + local skip = skiprandom == 12 and 4 or skiprandom >= 10 and 3 or skiprandom >= 5 and 2 or skiprandom >= 2 and 1 or 0 + + -- Get height of next stratum or finish + y = y + h + skip +end +--[[ END OF DANGER ZONE ]] + +-- Dead bushes +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + priority = 1500, + place_on = {"group:sand", "mcl_core:podzol", "mcl_core:dirt", "mcl_core:dirt_with_grass", "mcl_core:coarse_dirt", "group:hardened_clay"}, + sidelen = 16, + noise_params = { + offset = 0.01, + scale = 0.06, + spread = vector.new(100, 100, 100), + seed = 1972, + octaves = 3, + persist = 0.6 + }, + y_min = 4, + y_max = vl_biomes.overworld_max, + biomes = {"Mesa", "Mesa_sandlevel", "MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlateauF_grasstop", "MesaBryce"}, + decoration = "mcl_core:deadbush", + height = 1, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + priority = 1500, + place_on = {"group:sand", "mcl_core:dirt", "mcl_core:dirt_with_grass", "mcl_core:coarse_dirt"}, + sidelen = 16, + noise_params = { + offset = 0.01, + scale = 0.06, + spread = vector.new(100, 100, 100), + seed = 1972, + octaves = 3, + persist = 0.6 + }, + y_min = 4, + y_max = vl_biomes.overworld_max, + biomes = {"MesaPlateauFM_grasstop"}, + decoration = "mcl_core:deadbush", + height = 1, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + priority = 1500, + place_on = {"group:sand"}, + sidelen = 16, + noise_params = { + offset = 0.01, + scale = 0.06, + spread = vector.new(100, 100, 100), + seed = 1972, + octaves = 3, + persist = 0.6 + }, + y_min = 4, + y_max = vl_biomes.overworld_max, + biomes = {"MesaPlateauFM", "MesaPlateauFM_sandlevel"}, + decoration = "mcl_core:deadbush", + height = 1, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + priority = 1500, + place_on = {"group:hardened_clay"}, + sidelen = 16, + noise_params = { + offset = 0.01, + scale = 0.06, + spread = vector.new(100, 100, 100), + seed = 1972, + octaves = 3, + persist = 0.6 + }, + y_min = 4, + y_max = vl_biomes.overworld_max, + biomes = {"MesaPlateauFM", "MesaPlateauFM_sandlevel", "MesaPlateauFM_grasstop"}, + decoration = "mcl_core:deadbush", + height = 1, +}) diff --git a/mods/MAPGEN/vl_biomes/badlands.lua b/mods/MAPGEN/vl_biomes/badlands.lua new file mode 100644 index 000000000..148b66389 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/badlands.lua @@ -0,0 +1,42 @@ +-- Mesa aka Badlands +-- Starts with a couple of sand-covered layers (the "sandlevel"), +-- followed by terracotta with colorful (but imperfect) strata +vl_biomes.register_biome({ + name = "Mesa", + node_top = "mcl_colorblocks:hardened_clay", + depth_top = 1, + node_filler = "mcl_colorblocks:hardened_clay", + node_riverbed = "mcl_core:redsand", + depth_riverbed = 1, + node_stone = "mcl_colorblocks:hardened_clay", + y_min = 11, + y_max = vl_biomes.overworld_max, + humidity_point = 0, + heat_point = 100, + _mcl_biome_type = "hot", + _mcl_water_temp = "warm", + _mcl_grass_palette_index = 19, + _mcl_foliage_palette_index = 4, + _mcl_water_palette_index = 3, + _mcl_skycolor = "#6EB1FF", + -- Helper biome for the red sand at the bottom of Mesas. + _sandlevel = { + node_top = "mcl_core:redsand", + depth_top = 1, + node_filler = "mcl_colorblocks:hardened_clay_orange", + depth_filler = 3, + node_stone = "mcl_colorblocks:hardened_clay_orange", + y_min = -4, + y_max = 10, + }, + _ocean = { + node_top = "mcl_core:sand", + depth_top = 3, + node_filler = "mcl_core:sand", + depth_filler = 2, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_max = -5, + vertical_blend = 1, + }, +}) diff --git a/mods/MAPGEN/vl_biomes/badlands_eroded.lua b/mods/MAPGEN/vl_biomes/badlands_eroded.lua new file mode 100644 index 000000000..f5a376955 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/badlands_eroded.lua @@ -0,0 +1,42 @@ +-- Mesa Bryce aka Eroded Badlands +-- Variant of Mesa, but with perfect strata and a much smaller red sand desert +vl_biomes.register_biome({ + name = "MesaBryce", + node_top = "mcl_colorblocks:hardened_clay", + depth_top = 1, + node_filler = "mcl_colorblocks:hardened_clay", + node_riverbed = "mcl_colorblocks:hardened_clay", + depth_riverbed = 1, + node_stone = "mcl_colorblocks:hardened_clay", + y_min = 4, + y_max = vl_biomes.overworld_max, + humidity_point = -5, + heat_point = 100, + _mcl_biome_type = "hot", + _mcl_water_temp = "warm", + _mcl_grass_palette_index = 20, + _mcl_foliage_palette_index = 4, + _mcl_water_palette_index = 3, + _mcl_skycolor = "#6EB1FF", + _sandlevel = { + node_top = "mcl_core:redsand", + depth_top = 1, + node_filler = "mcl_colorblocks:hardened_clay_orange", + depth_filler = 3, + node_riverbed = "mcl_colorblocks:hardened_clay", + depth_riverbed = 1, + node_stone = "mcl_colorblocks:hardened_clay_orange", + y_min = -4, + y_max = 3, + }, + _ocean = { + node_top = "mcl_core:sand", + depth_top = 3, + node_filler = "mcl_core:sand", + depth_filler = 2, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_max = -5, + vertical_blend = 1, + }, +}) diff --git a/mods/MAPGEN/vl_biomes/badlands_wooded.lua b/mods/MAPGEN/vl_biomes/badlands_wooded.lua new file mode 100644 index 000000000..e92a224c2 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/badlands_wooded.lua @@ -0,0 +1,111 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") + +-- Mesa Plateau F aka Wooded Badlands +-- Identical to Mesa below Y=30. At Y=30 and above there is a "dry" oak forest +vl_biomes.register_biome({ + name = "MesaPlateauF", + node_top = "mcl_colorblocks:hardened_clay", + depth_top = 1, + node_filler = "mcl_colorblocks:hardened_clay", + node_riverbed = "mcl_core:redsand", + depth_riverbed = 1, + node_stone = "mcl_colorblocks:hardened_clay", + y_min = 11, + y_max = 29, + humidity_point = 0, + heat_point = 60, + vertical_blend = 0, -- we want a sharp transition + _mcl_biome_type = "hot", + _mcl_water_temp = "warm", + _mcl_grass_palette_index = 21, + _mcl_foliage_palette_index = 4, + _mcl_water_palette_index = 3, + _mcl_skycolor = "#6EB1FF", + -- The oak forest plateau of this biome. + -- This is a plateau for grass blocks, dry shrubs, tall grass, coarse dirt and oaks. + -- Strata don't generate here. + _grasstop = { + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 1, + y_min = 30, + y_max = vl_biomes.overworld_max, + }, + _sandlevel = { + node_top = "mcl_core:redsand", + depth_top = 2, + node_filler = "mcl_colorblocks:hardened_clay_orange", + depth_filler = 3, + node_stone = "mcl_colorblocks:hardened_clay_orange", + y_min = -5, + y_max = 10, + }, + _ocean = { + node_top = "mcl_core:sand", + depth_top = 3, + node_filler = "mcl_core:sand", + depth_filler = 2, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_max = -6, + vertical_blend = 1, + }, +}) + +-- Random coarse dirt floor in Mesa Plateau F +minetest.register_ore({ + ore_type = "sheet", + ore = "mcl_core:coarse_dirt", + wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + column_height_max = 1, + column_midpoint_factor = 0.0, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + noise_threshold = 0.0, + noise_params = {offset = 0, scale = 15, spread = vector.new(250, 250, 250), seed = 24, octaves = 3, persist = 0.70}, + biomes = {"MesaPlateauF_grasstop"}, +}) +minetest.register_ore({ + ore_type = "blob", + ore = "mcl_core:coarse_dirt", + wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + clust_scarcity = 1500, + clust_num_ores = 25, + clust_size = 7, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + noise_params = { + offset = 0, + scale = 1, + spread = vector.new(250, 250, 250), + seed = 12345, + octaves = 3, + persist = 0.6, + lacunarity = 2, + flags = "defaults", + }, + biomes = {"MesaPlateauF_grasstop"}, +}) + +-- Small “classic” oak (many biomes) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + sidelen = 16, + noise_params = { + offset = 0.015, + scale = 0.002, + spread = vector.new(250, 250, 250), + seed = 2, + octaves = 3, + persist = 0.7 + }, + biomes = {"MesaPlateauF_grasstop"}, + y_min = 30, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + diff --git a/mods/MAPGEN/vl_biomes/badlands_wooded_mod.lua b/mods/MAPGEN/vl_biomes/badlands_wooded_mod.lua new file mode 100644 index 000000000..8b9cda1d4 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/badlands_wooded_mod.lua @@ -0,0 +1,187 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") +-- Mesa Plateau FM aka Modified Wooded Badlands Plateau +-- Dryer and more "chaotic"/"weathered down" variant of MesaPlateauF: +-- oak forest is less dense, more coarse dirt, more erratic terrain, vertical blend, more red sand layers, +-- red sand as ores, red sandstone at sandlevel +vl_biomes.register_biome({ + name = "MesaPlateauFM", + node_top = "mcl_colorblocks:hardened_clay", + depth_top = 1, + node_filler = "mcl_colorblocks:hardened_clay", + node_riverbed = "mcl_core:redsand", + depth_riverbed = 2, + node_stone = "mcl_colorblocks:hardened_clay", + y_min = 12, + y_max = 29, + humidity_point = -5, + heat_point = 60, + vertical_blend = 5, + _mcl_biome_type = "hot", + _mcl_water_temp = "warm", + _mcl_grass_palette_index = 22, + _mcl_foliage_palette_index = 4, + _mcl_water_palette_index = 3, + _mcl_skycolor = "#6EB1FF", + -- Grass plateau + _grasstop = { + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:coarse_dirt", + depth_filler = 2, + node_riverbed = "mcl_core:redsand", + depth_riverbed = 1, + y_min = 30, + y_max = vl_biomes.overworld_max, + }, + _sandlevel = { + node_top = "mcl_core:redsand", + depth_top = 3, + node_filler = "mcl_colorblocks:hardened_clay_orange", + depth_filler = 3, + node_stone = "mcl_colorblocks:hardened_clay", + -- red sand has wider reach than in other mesa biomes + y_min = -7, + y_max = 11, + vertical_blend = 4, + }, + _ocean = { + node_top = "mcl_core:sand", + depth_top = 3, + node_filler = "mcl_core:sand", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 3, + y_min = vl_biomes.OCEAN_MIN, + y_max = -8, + vertical_blend = 2, + }, +}) +minetest.register_ore({ + ore_type = "sheet", + ore = "mcl_core:coarse_dirt", + wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + column_height_max = 1, + column_midpoint_factor = 0.0, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + noise_threshold = -2.5, + noise_params = {offset = 1, scale = 15, spread = vector.new(250, 250, 250), seed = 24, octaves = 3, persist = 0.80}, + biomes = {"MesaPlateauFM_grasstop"}, +}) +minetest.register_ore({ + ore_type = "blob", + ore = "mcl_core:coarse_dirt", + wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + clust_scarcity = 1800, + clust_num_ores = 65, + clust_size = 15, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + noise_params = { + offset = 0, + scale = 1, + spread = vector.new(250, 250, 250), + seed = 12345, + octaves = 3, + persist = 0.6, + lacunarity = 2, + flags = "defaults", + }, + biomes = {"MesaPlateauFM_grasstop"}, +}) +-- Occasionally dig out portions of MesaPlateauFM +minetest.register_ore({ + ore_type = "blob", + ore = "air", + wherein = {"group:hardened_clay", "group:sand", "mcl_core:coarse_dirt"}, + clust_scarcity = 4000, + clust_size = 5, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + noise_params = { + offset = 0, + scale = 1, + spread = vector.new(250, 250, 250), + seed = 12345, + octaves = 3, + persist = 0.6, + lacunarity = 2, + flags = "defaults", + }, + biomes = {"MesaPlateauFM", "MesaPlateauFM_grasstop"}, +}) +minetest.register_ore({ + ore_type = "blob", + ore = "mcl_core:redsandstone", + wherein = {"mcl_colorblocks:hardened_clay_orange"}, + clust_scarcity = 300, + clust_size = 8, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + noise_params = { + offset = 0, + scale = 1, + spread = vector.new(250, 250, 250), + seed = 12345, + octaves = 3, + persist = 0.6, + lacunarity = 2, + flags = "defaults", + }, + biomes = {"MesaPlateauFM_sandlevel"}, +}) +-- More red sand in MesaPlateauFM +minetest.register_ore({ + ore_type = "sheet", + ore = "mcl_core:redsand", + wherein = {"group:hardened_clay"}, + clust_scarcity = 1, + clust_num_ores = 12, + clust_size = 10, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + noise_threshold = 0.1, + noise_params = {offset = 0, scale = 15, spread = vector.new(130, 130, 130), seed = 95, octaves = 3, persist = 0.70}, + biomes = {"MesaPlateauFM"}, +}) +minetest.register_ore({ + ore_type = "blob", + ore = "mcl_core:redsand", + wherein = {"group:hardened_clay"}, + clust_scarcity = 1500, + clust_size = 4, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + noise_params = { + offset = 0, + scale = 1, + spread = vector.new(250, 250, 250), + seed = 12345, + octaves = 3, + persist = 0.6, + lacunarity = 2, + flags = "defaults", + }, + biomes = {"MesaPlateauFM", "MesaPlateauFM_grasstop", "MesaPlateauFM_sandlevel"}, +}) +-- Small “classic” oak (many biomes) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + sidelen = 16, + noise_params = { + offset = 0.008, + scale = 0.002, + spread = vector.new(250, 250, 250), + seed = 2, + octaves = 3, + persist = 0.7 + }, + biomes = {"MesaPlateauFM_grasstop"}, + y_min = 30, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + diff --git a/mods/MAPGEN/vl_biomes/bamboojungle.lua b/mods/MAPGEN/vl_biomes/bamboojungle.lua new file mode 100644 index 000000000..4aa0780ea --- /dev/null +++ b/mods/MAPGEN/vl_biomes/bamboojungle.lua @@ -0,0 +1,68 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") +-- Bamboo Jungle areas are like the Jungle areas, but warmer and more humid. +vl_biomes.register_biome({ + name = "BambooJungle", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 90, + heat_point = 95, + _mcl_biome_type = "medium", + _mcl_water_temp = "lukewarm", + _mcl_grass_palette_index = 24, + _mcl_foliage_palette_index = 12, + _mcl_water_palette_index = 2, + _mcl_skycolor = "#77A8FF", + _shore = { + node_top = "mcl_core:dirt", + depth_top = 1, + y_min = -2, + y_max = 0, + }, + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 3, + y_max = -3, + vertical_blend = 1, + }, +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.025, + biomes = {"BambooJungle"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +-- Melon +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = -0.01, + scale = 0.006, + spread = vector.new(250, 250, 250), + seed = 333, + octaves = 3, + persist = 0.6 + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = "mcl_farming:melon", + biomes = {"BambooJungle"}, +}) + diff --git a/mods/MAPGEN/vl_biomes/bamboojungle_edge.lua b/mods/MAPGEN/vl_biomes/bamboojungle_edge.lua new file mode 100644 index 000000000..1570930a3 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/bamboojungle_edge.lua @@ -0,0 +1,59 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") + +-- Bamboo Jungle Edge +vl_biomes.register_biome({ + name = "BambooJungleEdge", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 2, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 92, + heat_point = 90, + _mcl_biome_type = "medium", + _mcl_water_temp = "lukewarm", + _mcl_grass_palette_index = 26, + _mcl_foliage_palette_index = 13, + _mcl_water_palette_index = 2, + _mcl_skycolor = "#77A8FF", + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 2, + }, +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.0045, + biomes = {"BambooJungleEdge"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) +-- Melon +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = -0.005, + scale = 0.006, + spread = vector.new(250, 250, 250), + seed = 333, + octaves = 3, + persist = 0.6 + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = "mcl_farming:melon", + biomes = {"BambooJungleEdge"}, +}) diff --git a/mods/MAPGEN/vl_biomes/bamboojungle_modified.lua b/mods/MAPGEN/vl_biomes/bamboojungle_modified.lua new file mode 100644 index 000000000..451fbb462 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/bamboojungle_modified.lua @@ -0,0 +1,86 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") + +-- Bamboo Jungle M +-- Like Bamboo Jungle but with even more dense vegetation +vl_biomes.register_biome({ + name = "BambooJungleM", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 95, + heat_point = 95, + _mcl_biome_type = "medium", + _mcl_water_temp = "lukewarm", + _mcl_grass_palette_index = 25, + _mcl_foliage_palette_index = 12, + _mcl_water_palette_index = 2, + _mcl_skycolor = "#77A8FF", + _shore = { + node_top = "mcl_core:dirt", + depth_top = 1, + y_min = -2, + y_max = 0, + }, + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 3, + y_max = -3, + vertical_blend = 1, + }, +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.09, + biomes = {"BambooJungleM"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_2.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + noise_params = { + offset = 0.05, + scale = 0.025, + spread = vector.new(250, 250, 250), + seed = 2930, + octaves = 4, + persist = 0.6, + }, + biomes = {"BambooJungleM"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves.mts", + flags = "place_center_x, place_center_z", +}) +-- Melon +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = 0.0, + scale = 0.006, + spread = vector.new(250, 250, 250), + seed = 333, + octaves = 3, + persist = 0.6 + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = "mcl_farming:melon", + biomes = {"BambooJungleM"}, +}) diff --git a/mods/MAPGEN/vl_biomes/bamboojungle_modified_edge.lua b/mods/MAPGEN/vl_biomes/bamboojungle_modified_edge.lua new file mode 100644 index 000000000..d7b0323ee --- /dev/null +++ b/mods/MAPGEN/vl_biomes/bamboojungle_modified_edge.lua @@ -0,0 +1,83 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") + +-- Jungle Edge M (very rare). +-- Almost identical to Jungle Edge. Has deeper dirt. Melons spawn here a lot. +-- This biome occours directly between Jungle M and Jungle Edge but also has a small border to Jungle. +-- This biome is very small in general. +vl_biomes.register_biome({ + name = "BambooJungleEdgeM", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 4, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 95, + heat_point = 95, + _mcl_biome_type = "medium", + _mcl_water_temp = "lukewarm", + _mcl_grass_palette_index = 27, + _mcl_foliage_palette_index = 13, + _mcl_water_palette_index = 2, + _mcl_skycolor = "#77A8FF", + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 4, + }, +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.0045, + biomes = {"BambooJungleEdgeM"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + noise_params = { + offset = 0.0085, + scale = 0.025, + spread = vector.new(250, 250, 250), + seed = 2930, + octaves = 4, + persist = 0.6, + }, + biomes = {"BambooJungleEdgeM"}, + y_min = 3, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves.mts", + flags = "place_center_x, place_center_z", +}) + +-- Melon +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = -0.005, + scale = 0.006, + spread = vector.new(250, 250, 250), + seed = 333, + octaves = 3, + persist = 0.6 + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = "mcl_farming:melon", + biomes = {"BambooJungleEdgeM"}, +}) + diff --git a/mods/MAPGEN/vl_biomes/birchforest.lua b/mods/MAPGEN/vl_biomes/birchforest.lua new file mode 100644 index 000000000..f1af9d766 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/birchforest.lua @@ -0,0 +1,68 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") +-- Birch Forest +vl_biomes.register_biome({ + name = "BirchForest", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 78, + heat_point = 31, + _mcl_biome_type = "medium", + _mcl_water_temp = "ocean", + _mcl_grass_palette_index = 15, + _mcl_foliage_palette_index = 8, + _mcl_water_palette_index = 0, + _mcl_skycolor = "#7AA5FF", + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 3, + }, +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = 0.03, + scale = 0.0025, + spread = vector.new(250, 250, 250), + seed = 11, + octaves = 3, + persist = 0.66 + }, + biomes = {"BirchForest"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_birch.mts", + flags = "place_center_x, place_center_z", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 16, + --[[noise_params = { + offset = 0.01, + scale = 0.00001, + spread = vector.new(250, 250, 250), + seed = 2, + octaves = 3, + persist = 0.33 + },]]-- + fill_ratio = 0.00002, + biomes = {"BirchForest"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_birch_bee_nest.mts", + flags = "place_center_x, place_center_z", + rotation = "random", + spawn_by = "group:flower", + priority = 1550, +}) diff --git a/mods/MAPGEN/vl_biomes/birchforest_old.lua b/mods/MAPGEN/vl_biomes/birchforest_old.lua new file mode 100644 index 000000000..8a32a0782 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/birchforest_old.lua @@ -0,0 +1,69 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") +-- Birch Forest M aka Old Growth Birch Forest +vl_biomes.register_biome({ + name = "BirchForestM", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 77, + heat_point = 27, + _mcl_biome_type = "medium", + _mcl_water_temp = "ocean", + _mcl_grass_palette_index = 16, + _mcl_foliage_palette_index = 8, + _mcl_water_palette_index = 0, + _mcl_skycolor = "#7AA5FF", + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:gravel", + depth_filler = 3, + }, +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = 0.03, + scale = 0.0025, + spread = vector.new(250, 250, 250), + seed = 11, + octaves = 3, + persist = 0.66 + }, + biomes = {"BirchForestM"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_birch_tall.mts", + flags = "place_center_x, place_center_z", +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 16, + --[[noise_params = { + offset = 0.01, + scale = 0.00001, + spread = vector.new(250, 250, 250), + seed = 2, + octaves = 3, + persist = 0.33 + },]]-- + fill_ratio = 0.00002, + biomes = {"BirchForestM"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_birch_bee_nest.mts", + flags = "place_center_x, place_center_z", + rotation = "random", + spawn_by = "group:flower", + priority = 1550, +}) diff --git a/mods/MAPGEN/vl_biomes/dark_forest.lua b/mods/MAPGEN/vl_biomes/dark_forest.lua new file mode 100644 index 000000000..ea86681c4 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/dark_forest.lua @@ -0,0 +1,107 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") +local mod_mcl_mushrooms = minetest.get_modpath("mcl_mushrooms") + +-- Roofed Forest aka Dark Forest +vl_biomes.register_biome({ + name = "RoofedForest", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 2, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 94, + heat_point = 27, + _mcl_biome_type = "medium", + _mcl_water_temp = "ocean", + _mcl_grass_palette_index = 18, + _mcl_foliage_palette_index = 7, + _mcl_water_palette_index = 0, + _mcl_skycolor = "#79A6FF", + _ocean = { + node_top = "mcl_core:gravel", + depth_top = 1, + node_filler = "mcl_core:gravel", + depth_filler = 2, + }, +}) + +-- Dark Oak +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = 0.05, + scale = 0.0015, + spread = vector.new(125, 125, 125), + seed = 223, + octaves = 3, + persist = 0.66 + }, + biomes = {"RoofedForest"}, + y_min = 4, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_dark_oak.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +local ratio_mushroom = 0.0001 +local ratio_mushroom_huge = ratio_mushroom * (11 / 12) +local ratio_mushroom_giant = ratio_mushroom * (1 / 12) + +-- Huge Brown Mushroom +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = ratio_mushroom_huge, + biomes = {"RoofedForest"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_huge_brown.mts", + flags = "place_center_x, place_center_z", + rotation = "0", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = ratio_mushroom_giant, + biomes = {"RoofedForest"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_giant_brown.mts", + flags = "place_center_x, place_center_z", + rotation = "0", +}) + +-- Huge Red Mushroom +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = ratio_mushroom_huge, + biomes = {"RoofedForest"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_huge_red.mts", + flags = "place_center_x, place_center_z", + rotation = "0", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = ratio_mushroom_giant, + biomes = {"RoofedForest"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_giant_red.mts", + flags = "place_center_x, place_center_z", + rotation = "0", +}) + diff --git a/mods/MAPGEN/vl_biomes/deco/bamboo.lua b/mods/MAPGEN/vl_biomes/deco/bamboo.lua new file mode 100644 index 000000000..7126bf353 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/deco/bamboo.lua @@ -0,0 +1,31 @@ +-- Bamboo +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt", }, + sidelen = 80, + fill_ratio = 0.0043, + biomes = {"Jungle", "JungleM", "JungleEdge", "JungleEdgeM"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = "mcl_bamboo:bamboo", + height = 9, + max_height = 11, + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt", "mcl_core:podzol"}, + sidelen = 80, + fill_ratio = 0.095, + biomes = {"BambooJungle", "BambooJungleM", "BambooJungleEdge", "BambooJungleEdgeM"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = "mcl_bamboo:bamboo", + height = 9, + max_height = 10, + flags = "place_center_x, place_center_z", + rotation = "random", +}) + diff --git a/mods/MAPGEN/vl_biomes/deco/cacti.lua b/mods/MAPGEN/vl_biomes/deco/cacti.lua new file mode 100644 index 000000000..0be9cd8c0 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/deco/cacti.lua @@ -0,0 +1,27 @@ +-- Cacti +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:sand"}, + sidelen = 16, + noise_params = { + offset = -0.01, + scale = 0.024, + spread = vector.new(100, 100, 100), + seed = 257, + octaves = 3, + persist = 0.6 + }, + y_min = 4, + y_max = vl_biomes.overworld_max, + decoration = "mcl_core:cactus", + biomes = {"Desert", + "Mesa", "Mesa_sandlevel", + "MesaPlateauF", "MesaPlateauF_sandlevel", + "MesaPlateauFM", "MesaPlateauFM_sandlevel"}, + height = 1, + height_max = 3, + spawn_by = "air", + check_offset = 1, + num_spawn_by = 16 +}) + diff --git a/mods/MAPGEN/vl_biomes/deco/corals.lua b/mods/MAPGEN/vl_biomes/deco/corals.lua new file mode 100644 index 000000000..cfdec72c1 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/deco/corals.lua @@ -0,0 +1,165 @@ +-- TODO: use priorities, and move this to the module where coral blocks are defined? +local mod_mcl_structures = minetest.get_modpath("mcl_structures") +local coral_min = vl_biomes.OCEAN_MIN +local coral_max = -10 +local warm_oceans = vl_biomes.by_water_temp.warm + +-- Coral Reefs +for _, c in ipairs({ "brain", "horn", "bubble", "tube", "fire" }) do + local noise = { + offset = -0.0085, + scale = 0.002, + spread = vector.new(25, 120, 25), + seed = 235, + octaves = 5, + persist = 1.8, + lacunarity = 3.5, + flags = "absvalue" + } + mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:sand", "mcl_core:gravel", "mcl_mud:mud"}, + sidelen = 80, + noise_params = noise, + biomes = warm_oceans, + y_min = coral_min, + y_max = coral_max, + schematic = mod_mcl_structures .. "/schematics/mcl_structures_coral_" .. c .. "_1.mts", + rotation = "random", + flags = "all_floors,force_placement", + }) + mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:sand", "mcl_core:gravel", "mcl_mud:mud"}, + noise_params = noise, + sidelen = 80, + biomes = warm_oceans, + y_min = coral_min, + y_max = coral_max, + schematic = mod_mcl_structures .. "/schematics/mcl_structures_coral_" .. c .. "_2.mts", + rotation = "random", + flags = "all_floors,force_placement", + }) + + mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_ocean:" .. c .. "_coral_block"}, + sidelen = 16, + fill_ratio = 3, + y_min = coral_min, + y_max = coral_max, + decoration = "mcl_ocean:" .. c .. "_coral", + biomes = warm_oceans, + flags = "force_placement, all_floors", + height = 1, + height_max = 1, + }) + mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_ocean:horn_coral_block"}, + sidelen = 16, + fill_ratio = 7, + y_min = coral_min, + y_max = coral_max, + decoration = "mcl_ocean:" .. c .. "_coral_fan", + biomes = warm_oceans, + flags = "force_placement, all_floors", + height = 1, + height_max = 1, + }) +end + +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:sand", "mcl_core:gravel", "mcl_mud:mud"}, + sidelen = 16, + noise_params = { + offset = -0.0085, + scale = 0.002, + spread = vector.new(25, 120, 25), + seed = 235, + octaves = 5, + persist = 1.8, + lacunarity = 3.5, + flags = "absvalue" + }, + y_min = coral_min, + y_max = coral_max, + decoration = "mcl_ocean:dead_brain_coral_block", + biomes = warm_oceans, + flags = "force_placement", + height = 1, + height_max = 1, + place_offset_y = -1, +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_ocean:dead_brain_coral_block"}, + sidelen = 16, + fill_ratio = 3, + y_min = coral_min, + y_max = coral_max, + decoration = "mcl_ocean:sea_pickle_1_dead_brain_coral_block", + biomes = warm_oceans, + flags = "force_placement, all_floors", + height = 1, + height_max = 1, + place_offset_y = -1, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_ocean:dead_brain_coral_block"}, + sidelen = 16, + fill_ratio = 3, + y_min = coral_min, + y_max = coral_max, + decoration = "mcl_ocean:sea_pickle_2_dead_brain_coral_block", + biomes = warm_oceans, + flags = "force_placement, all_floors", + height = 1, + height_max = 1, + place_offset_y = -1, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_ocean:dead_brain_coral_block"}, + sidelen = 16, + fill_ratio = 2, + y_min = coral_min, + y_max = coral_max, + decoration = "mcl_ocean:sea_pickle_3_dead_brain_coral_block", + biomes = warm_oceans, + flags = "force_placement, all_floors", + height = 1, + height_max = 1, + place_offset_y = -1, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_ocean:dead_brain_coral_block"}, + sidelen = 16, + fill_ratio = 2, + y_min = coral_min, + y_max = coral_max, + decoration = "mcl_ocean:sea_pickle_4_dead_brain_coral_block", + biomes = warm_oceans, + flags = "force_placement, all_floors", + height = 1, + height_max = 1, + place_offset_y = -1, +}) +--rare CORAl easter egg +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:sand", "mcl_core:gravel"}, + fill_ratio = 0.0001, + sidelen = 80, + biomes = warm_oceans, + y_min = coral_min, + y_max = coral_max, + schematic = mod_mcl_structures .. "/schematics/coral_cora.mts", + rotation = "random", + flags = "all_floors,force_placement", +}) + diff --git a/mods/MAPGEN/vl_biomes/deco/fern.lua b/mods/MAPGEN/vl_biomes/deco/fern.lua new file mode 100644 index 000000000..9391763c3 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/deco/fern.lua @@ -0,0 +1,79 @@ +-- Template to register a grass or fern decoration +local function register_fern_decoration(offset, scale, biomes) + for b = 1, #biomes do + local param2 = minetest.registered_biomes[biomes[b]]._mcl_grass_palette_index + mcl_mapgen_core.register_decoration({ + deco_type = "simple", + priority = 1500, + place_on = {"group:grass_block_no_snow", "mcl_core:podzol", "mcl_mud:mud"}, + sidelen = 16, + noise_params = { + offset = offset, + scale = scale, + spread = vector.new(200, 200, 200), + seed = 333, + octaves = 3, + persist = 0.6 + }, + biomes = {biomes[b]}, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = "mcl_flowers:fern", + param2 = param2, + }) + end +end + +local fern_minimal = {"Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga", "ColdTaiga", "MangroveSwamp"} +local fern_low = {"Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga"} +local fern_Jungle = {"Jungle", "JungleM", "JungleEdge", "JungleEdgeM"} +--local fern_JungleM = { "JungleM" }, + +-- FIXME: register once per biome only, with appropriate parameters? +register_fern_decoration(-0.03, 0.09, fern_minimal) +register_fern_decoration(-0.015, 0.075, fern_minimal) +register_fern_decoration(0, 0.06, fern_minimal) +register_fern_decoration(0.015, 0.045, fern_low) +register_fern_decoration(0.03, 0.03, fern_low) +register_fern_decoration(0.01, 0.05, fern_Jungle) +register_fern_decoration(0.03, 0.03, fern_Jungle) +register_fern_decoration(0.05, 0.01, fern_Jungle) +register_fern_decoration(0.07, -0.01, fern_Jungle) +register_fern_decoration(0.09, -0.03, fern_Jungle) +register_fern_decoration(0.12, -0.03, {"JungleM"}) + +-- Large ferns +local function register_double_fern(offset, scale, biomes) + for b = 1, #biomes do + local param2 = minetest.registered_biomes[biomes[b]]._mcl_grass_palette_index + mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + priority = 1500, + schematic = { + size = vector.new(1, 3, 1), + data = { + {name = "air", prob = 0}, + {name = "mcl_flowers:double_fern", param1 = 255, param2 = param2}, + {name = "mcl_flowers:double_fern_top", param1 = 255, param2 = param2}, + }, + }, + place_on = {"group:grass_block_no_snow", "mcl_core:podzol"}, + sidelen = 16, + noise_params = { + offset = offset, + scale = scale, + spread = vector.new(250, 250, 250), + seed = 333, + octaves = 2, + persist = 0.66, + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + biomes = biomes[b], + }) + end +end + +register_double_fern(0.01, 0.03, {"Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "ColdTaiga", "MegaTaiga", "MegaSpruceTaiga", "BambooJungle", "BambooJungleM", "BambooJungleEdge", "BambooJungleEdgeM", }) +register_double_fern(0.15, 0.1, {"JungleM", "BambooJungleM", "BambooJungle"}) + diff --git a/mods/MAPGEN/vl_biomes/deco/flowers.lua b/mods/MAPGEN/vl_biomes/deco/flowers.lua new file mode 100644 index 000000000..496df4800 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/deco/flowers.lua @@ -0,0 +1,86 @@ +-- Large flowers +local function register_large_flower(name, biomes, seed, offset) + mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + schematic = { + size = vector.new(1, 2, 1), + data = { + {name = "mcl_flowers:" .. name }, + {name = "mcl_flowers:" .. name .. "_top" }, + }, + }, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 16, + noise_params = { + offset = offset, + scale = 0.01, + spread = vector.new(300, 300, 300), + seed = seed, + octaves = 5, + persist = 0.62, + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + biomes = biomes, + }) +end + +register_large_flower("rose_bush", {"Forest"}, 9350, -0.008) +register_large_flower("rose_bush", {"FlowerForest"}, 9350, 0.003) +register_large_flower("peony", {"Forest"}, 10450, -0.008) +register_large_flower("peony", {"FlowerForest"}, 10450, 0.003) +register_large_flower("lilac", {"Forest"}, 10600, -0.007) +register_large_flower("lilac", {"FlowerForest"}, 10600, 0.003) +register_large_flower("sunflower", {"SunflowerPlains"}, 2940, 0.01) + +local function register_flower(name, biomes, seed, offset) + mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 16, + noise_params = { + offset = offset, + scale = 0.006, + spread = vector.new(100, 100, 100), + seed = seed, + octaves = 3, + persist = 0.6 + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + biomes = biomes, + decoration = "mcl_flowers:" .. name, + }) +end + +local flower_biomes1 = {"Plains", "SunflowerPlains", "RoofedForest", "Forest", "BirchForest", "BirchForestM", "Taiga", "ColdTaiga", "Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Savanna", "SavannaM", "ExtremeHills", "ExtremeHillsM", "ExtremeHills+", "ExtremeHills+_snowtop"} + +register_flower("dandelion", flower_biomes1, 8, 0.0008) +register_flower("dandelion", {"FlowerForest"}, 8, 0.032) +register_flower("poppy", flower_biomes1, 9439, 0.0008) +register_flower("poppy", {"FlowerForest"}, 9439, 0.032) +register_flower("clover", flower_biomes1, 3, 0.0408) -- not in Flower Forest +register_flower("fourleaf_clover", flower_biomes1, 13, -0.0012) -- not in Flower Forest + +local flower_biomes2 = {"Plains", "SunflowerPlains"} +register_flower("tulip_red", flower_biomes2, 436, 0.0008) +register_flower("tulip_red", {"FlowerForest"}, 436, 0.032) +register_flower("tulip_orange", flower_biomes2, 536, 0.0008) +register_flower("tulip_orange", {"FlowerForest"}, 536, 0.032) +register_flower("tulip_pink", flower_biomes2, 636, 0.0008) +register_flower("tulip_pink", {"FlowerForest"}, 636, 0.032) +register_flower("tulip_white", flower_biomes2, 736, 0.0008) +register_flower("tulip_white", {"FlowerForest"}, 736, 0.032) +register_flower("azure_bluet", flower_biomes2, 800, 0.0008) +register_flower("azure_bluet", {"FlowerForest"}, 800, 0.032) +register_flower("oxeye_daisy", flower_biomes2, 3490, 0.0008) +register_flower("oxeye_daisy", {"FlowerForest"}, 3490, 0.032) +register_flower("cornflower", flower_biomes2, 486, 0.0008) +register_flower("cornflower", {"FlowerForest"}, 486, 0.032) + +register_flower("lily_of_the_valley", {"Forest", "BirchForest", "BirchForestM", "RoofedForest"}, 325, 0.0008) +register_flower("lily_of_the_valley", {"FlowerForest"}, 325, 0.032) + +register_flower("allium", {"FlowerForest"}, 836, 0.04008) -- Flower Forest only, until we have Meadows +register_flower("blue_orchid", {"Swampland"}, 64500, 0.0008) -- Swamp only + diff --git a/mods/MAPGEN/vl_biomes/deco/mushrooms.lua b/mods/MAPGEN/vl_biomes/deco/mushrooms.lua new file mode 100644 index 000000000..e6ff67ae2 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/deco/mushrooms.lua @@ -0,0 +1,70 @@ +-- Small mushrooms in caves +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:material_stone"}, + sidelen = 80, + fill_ratio = 0.009, + noise_threshold = 2.0, + flags = "all_floors", + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + decoration = "mcl_mushrooms:mushroom_red", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:material_stone"}, + sidelen = 80, + fill_ratio = 0.009, + noise_threshold = 2.0, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + decoration = "mcl_mushrooms:mushroom_brown", +}) + +-- Mushrooms next to trees +local mushrooms = {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"} +local mseeds = {7133, 8244} +for m = 1, #mushrooms do + -- Mushrooms next to trees + mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.003, + spread = vector.new(250, 250, 250), + seed = mseeds[m], + octaves = 3, + persist = 0.66, + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = mushrooms[m], + spawn_by = {"mcl_core:tree", "mcl_core:sprucetree", "mcl_core:darktree", "mcl_core:birchtree"}, + num_spawn_by = 1, + priority = 1150, + }) + + -- More mushrooms in Swampland + mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"}, + sidelen = 16, + noise_params = { + offset = 0.05, + scale = 0.003, + spread = vector.new(250, 250, 250), + seed = mseeds[m], + octaves = 3, + persist = 0.6, + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = mushrooms[m], + biomes = {"Swampland"}, + spawn_by = {"mcl_core:tree", "mcl_core:sprucetree", "mcl_core:darktree", "mcl_core:birchtree"}, + num_spawn_by = 1, + priority = 1150, + }) +end diff --git a/mods/MAPGEN/vl_biomes/deco/pumpkin.lua b/mods/MAPGEN/vl_biomes/deco/pumpkin.lua new file mode 100644 index 000000000..f8f4fcec5 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/deco/pumpkin.lua @@ -0,0 +1,20 @@ +-- Pumpkin +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + decoration = "mcl_farming:pumpkin", + param2 = 0, + param2_max = 3, + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = -0.016, + scale = 0.01332, + spread = vector.new(125, 125, 125), + seed = 666, + octaves = 6, + persist = 0.666 + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + biomes = {"ExtremeHills", "ExtremeHillsM", "ExtremeHills+", "Taiga", "MegaTaiga", "MegaSpruceTaiga", "Plains", "SunflowerPlains", "Swampland", "MangroveSwamp"}, +}) diff --git a/mods/MAPGEN/vl_biomes/deco/reeds.lua b/mods/MAPGEN/vl_biomes/deco/reeds.lua new file mode 100644 index 000000000..432623aae --- /dev/null +++ b/mods/MAPGEN/vl_biomes/deco/reeds.lua @@ -0,0 +1,43 @@ +-- Sugar canes +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:dirt", "mcl_core:coarse_dirt", "group:grass_block_no_snow", "group:sand", "mcl_core:podzol", "mcl_core:reeds"}, + sidelen = 16, + noise_params = { + offset = -0.3, + scale = 0.7, + spread = vector.new(200, 200, 200), + seed = 2, + octaves = 3, + persist = 0.7 + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = "mcl_core:reeds", + height = 1, + height_max = 3, + spawn_by = {"mcl_core:water_source", "group:frosted_ice"}, -- TODO: river water source, too? + num_spawn_by = 1, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:dirt", "mcl_core:coarse_dirt", "group:grass_block_no_snow", "group:sand", "mcl_core:podzol", "mcl_core:reeds"}, + sidelen = 16, + noise_params = { + offset = 0.0, + scale = 0.5, + spread = vector.new(200, 200, 200), + seed = 2, + octaves = 3, + persist = 0.7, + }, + biomes = {"Swampland", "Swampland_shore"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = "mcl_core:reeds", + height = 1, + height_max = 3, + spawn_by = {"mcl_core:water_source", "group:frosted_ice"}, + num_spawn_by = 1, +}) + diff --git a/mods/MAPGEN/vl_biomes/deco/seagrass_kelp.lua b/mods/MAPGEN/vl_biomes/deco/seagrass_kelp.lua new file mode 100644 index 000000000..250884260 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/deco/seagrass_kelp.lua @@ -0,0 +1,155 @@ +-- TODO: move to mcl_ocean? +local function register_seagrass_decoration(grasstype, offset, scale, biomes) + local seed, nodes, surfaces, param2, param2_max, y_max + if grasstype == "seagrass" then + seed = 16 + surfaces = {"mcl_core:dirt", "mcl_core:sand", "mcl_core:gravel", "mcl_core:redsand"} + nodes = {"mcl_ocean:seagrass_dirt", "mcl_ocean:seagrass_sand", "mcl_ocean:seagrass_gravel", "mcl_ocean:seagrass_redsand"} + y_max = 0 + elseif grasstype == "kelp" then + seed = 32 + param2 = 16 + param2_max = 96 + surfaces = {"mcl_core:dirt", "mcl_core:sand", "mcl_core:gravel"} + nodes = {"mcl_ocean:kelp_dirt", "mcl_ocean:kelp_sand", "mcl_ocean:kelp_gravel"} + y_max = -6 + end + local noise = { + offset = offset, + scale = scale, + spread = vector.new(100, 100, 100), + seed = seed, + octaves = 3, + persist = 0.6, + } + + for s = 1, #surfaces do + mcl_mapgen_core.register_decoration({ + deco_type = "simple", + priority = 1500, + place_on = {surfaces[s]}, + sidelen = 16, + noise_params = noise, + biomes = biomes, + y_min = vl_biomes.DEEP_OCEAN_MIN, + y_max = y_max, + decoration = nodes[s], + param2 = param2, + param2_max = param2_max, + place_offset_y = -1, + flags = "force_placement", + }) + end +end + +-- TODO: use temperature classes, rather than hardcoding biome lists here? +-- Also would allow for more/less seagrass depending on temperature class +register_seagrass_decoration("seagrass", 0, 0.5, { + "ColdTaiga_ocean", + "ExtremeHills_ocean", + "ExtremeHillsM_ocean", + "ExtremeHills+_ocean", + "Taiga_ocean", + "MegaTaiga_ocean", + "MegaSpruceTaiga_ocean", + "StoneBeach_ocean", + "Plains_ocean", + "SunflowerPlains_ocean", + "Forest_ocean", + "FlowerForest_ocean", + "BirchForest_ocean", + "BirchForestM_ocean", + "RoofedForest_ocean", + "Swampland_ocean", + "Jungle_ocean", + "JungleM_ocean", + "JungleEdge_ocean", + "JungleEdgeM_ocean", + "MushroomIsland_ocean", + "Desert_ocean", + "Savanna_ocean", + "SavannaM_ocean", + "Mesa_ocean", + "MesaBryce_ocean", + "MesaPlateauF_ocean", + "MesaPlateauFM_ocean", + + "ColdTaiga_deep_ocean", + "ExtremeHills_deep_ocean", + "ExtremeHillsM_deep_ocean", + "ExtremeHills+_deep_ocean", + "Taiga_deep_ocean", + "MegaTaiga_deep_ocean", + "MegaSpruceTaiga_deep_ocean", + "StoneBeach_deep_ocean", + "Plains_deep_ocean", + "SunflowerPlains_deep_ocean", + "Forest_deep_ocean", + "FlowerForest_deep_ocean", + "BirchForest_deep_ocean", + "BirchForestM_deep_ocean", + "RoofedForest_deep_ocean", + "Swampland_deep_ocean", + "Jungle_deep_ocean", + "JungleM_deep_ocean", + "JungleEdge_deep_ocean", + "JungleEdgeM_deep_ocean", + "MushroomIsland_deep_ocean", + "Desert_deep_ocean", + "Savanna_deep_ocean", + "SavannaM_deep_ocean", + "Mesa_deep_ocean", + "MesaBryce_deep_ocean", + "MesaPlateauF_deep_ocean", + "MesaPlateauFM_deep_ocean", + + "Mesa_sandlevel", + "MesaBryce_sandlevel", + "MesaPlateauF_sandlevel", + "MesaPlateauFM_sandlevel", + "Swampland_shore", + "Jungle_shore", + "JungleM_shore", + "Savanna_beach", + "FlowerForest_beach", + "ColdTaiga_beach_water", + "ExtremeHills_beach", +}) + +register_seagrass_decoration("kelp", -0.5, 1, { + "ExtremeHillsM_ocean", + "ExtremeHills+_ocean", + "MegaTaiga_ocean", + "MegaSpruceTaiga_ocean", + "Plains_ocean", + "SunflowerPlains_ocean", + "Forest_ocean", + "FlowerForest_ocean", + "BirchForest_ocean", + "BirchForestM_ocean", + "RoofedForest_ocean", + "Swampland_ocean", + "Jungle_ocean", + "JungleM_ocean", + "JungleEdge_ocean", + "JungleEdgeM_ocean", + "MushroomIsland_ocean", + + "ExtremeHillsM_deep_ocean", + "ExtremeHills+_deep_ocean", + "MegaTaiga_deep_ocean", + "MegaSpruceTaiga_deep_ocean", + "Plains_deep_ocean", + "SunflowerPlains_deep_ocean", + "Forest_deep_ocean", + "FlowerForest_deep_ocean", + "BirchForest_deep_ocean", + "BirchForestM_deep_ocean", + "RoofedForest_deep_ocean", + "Swampland_deep_ocean", + "Jungle_deep_ocean", + "JungleM_deep_ocean", + "JungleEdge_deep_ocean", + "JungleEdgeM_deep_ocean", + "MushroomIsland_deep_ocean", +}) diff --git a/mods/MAPGEN/vl_biomes/deco/snowy_dirt.lua b/mods/MAPGEN/vl_biomes/deco/snowy_dirt.lua new file mode 100644 index 000000000..61bfbdc44 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/deco/snowy_dirt.lua @@ -0,0 +1,11 @@ +--Snow layer on snowy dirt +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:dirt_with_grass_snow"}, + sidelen = 80, + fill_ratio = 10, + flags = "all_floors", + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + decoration = "mcl_core:snow", +}) diff --git a/mods/MAPGEN/vl_biomes/deco/sweet_berry.lua b/mods/MAPGEN/vl_biomes/deco/sweet_berry.lua new file mode 100644 index 000000000..31294157e --- /dev/null +++ b/mods/MAPGEN/vl_biomes/deco/sweet_berry.lua @@ -0,0 +1,20 @@ +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:dirt_with_grass", "mcl_core:podzol"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.012, + spread = vector.new(100, 100, 100), + seed = 354, + octaves = 1, + persist = 0.5, + lacunarity = 1.0, + flags = "absvalue" + }, + biomes = {"Taiga", "ColdTaiga", "MegaTaiga", "MegaSpruceTaiga", "Forest"}, + y_max = vl_biomes.overworld_max, + y_min = 2, + decoration = "mcl_sweet_berry:sweet_berry_bush_3" +}) + diff --git a/mods/MAPGEN/vl_biomes/deco/tallgrass.lua b/mods/MAPGEN/vl_biomes/deco/tallgrass.lua new file mode 100644 index 000000000..2da593f86 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/deco/tallgrass.lua @@ -0,0 +1,110 @@ +-- Template to register a grass decoration +local function register_grass_decoration(offset, scale, biomes) + for b = 1, #biomes do + local param2 = minetest.registered_biomes[biomes[b]]._mcl_grass_palette_index + mcl_mapgen_core.register_decoration({ + deco_type = "simple", + priority = 1500, + place_on = {"group:grass_block_no_snow", "mcl_mud:mud"}, + sidelen = 16, + noise_params = { + offset = offset, + scale = scale, + spread = vector.new(200, 200, 200), + seed = 420, + octaves = 3, + persist = 0.6 + }, + biomes = { biomes[b] }, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = "mcl_flowers:tallgrass", + param2 = param2, + }) + end +end + +local grass_forest = {"Plains", "Taiga", "Forest", "FlowerForest", "BirchForest", "BirchForestM", "RoofedForest", "Swampland", } +local grass_mpf = {"MesaPlateauF_grasstop"} +local grass_plains = {"Plains", "SunflowerPlains", "JungleEdge", "JungleEdgeM", "MangroveSwamp"} +local grass_savanna = {"Savanna", "SavannaM"} +local grass_sparse = {"ExtremeHills", "ExtremeHills+", "ExtremeHills+_snowtop", "ExtremeHillsM", "Jungle"} +local grass_mpfm = {"MesaPlateauFM_grasstop"} + +-- TODO: register only once for each biome, with better parameters? +register_grass_decoration(-0.03, 0.09, grass_forest) +register_grass_decoration(-0.015, 0.075, grass_forest) +register_grass_decoration(0, 0.06, grass_forest) +register_grass_decoration(0.015, 0.045, grass_forest) +register_grass_decoration(0.03, 0.03, grass_forest) +register_grass_decoration(-0.03, 0.09, grass_mpf) +register_grass_decoration(-0.015, 0.075, grass_mpf) +register_grass_decoration(0, 0.06, grass_mpf) +register_grass_decoration(0.01, 0.045, grass_mpf) +register_grass_decoration(0.01, 0.05, grass_forest) +register_grass_decoration(0.03, 0.03, grass_plains) +register_grass_decoration(0.05, 0.01, grass_plains) +register_grass_decoration(0.07, -0.01, grass_plains) +register_grass_decoration(0.09, -0.03, grass_plains) +register_grass_decoration(0.18, -0.03, grass_savanna) +register_grass_decoration(0.05, -0.03, grass_sparse) +register_grass_decoration(0.05, 0.05, grass_mpfm) +register_grass_decoration(-0.03, 1, {"BambooJungle", "BambooJungleM", "BambooJungleEdge"}) + +-- Doubletall grass registration helper +local function register_doubletall_grass(offset, scale, biomes) + for b = 1, #biomes do + local param2 = minetest.registered_biomes[biomes[b]]._mcl_grass_palette_index + mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + priority = 1500, + schematic = { + size = vector.new(1, 3, 1), + data = { + {name = "air", prob = 0}, + {name = "mcl_flowers:double_grass", param1 = 255, param2 = param2}, + {name = "mcl_flowers:double_grass_top", param1 = 255, param2 = param2}, + }, + }, + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = offset, + scale = scale, + spread = vector.new(200, 200, 200), + seed = 420, + octaves = 3, + persist = 0.6, + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + biomes = biomes, + }) + end +end + +register_doubletall_grass(-0.0005, -0.3, {"BambooJungle", "BambooJungleM", "BambooJungleEdge"}) +register_doubletall_grass(-0.01, 0.03, {"Forest", "FlowerForest", "BirchForest", "BirchForestM", "RoofedForest", "Taiga"}) +register_doubletall_grass(-0.002, 0.03, {"Plains", "SunflowerPlains"}) +register_doubletall_grass(-0.0005, -0.03, {"Savanna", "SavannaM"}) + +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + priority = 1500, + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.012, + spread = vector.new(100, 100, 100), + seed = 354, + octaves = 1, + persist = 0.5, + lacunarity = 1.0, + flags = "absvalue" + }, + biomes = {"BambooJungle", "BambooJungleEdge","BambooJungleM", "BambooJungleEdge"}, + y_max = vl_biomes.overworld_max, + y_min = 1, + decoration = "mcl_flowers:tallgrass" +}) diff --git a/mods/MAPGEN/vl_biomes/desert.lua b/mods/MAPGEN/vl_biomes/desert.lua new file mode 100644 index 000000000..0cc7e6e82 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/desert.lua @@ -0,0 +1,45 @@ +-- Desert +vl_biomes.register_biome({ + name = "Desert", + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 2, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + node_stone = "mcl_core:sandstone", + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 26, + heat_point = 94, + _mcl_biome_type = "hot", + _mcl_water_temp = "warm", + _mcl_grass_palette_index = 17, + _mcl_foliage_palette_index = 3, + _mcl_water_palette_index = 3, + _mcl_skycolor = "#6EB1FF", + _ocean = { + node_filler = "mcl_core:sand", + depth_filler = 3, + } +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + priority = 1500, + place_on = {"group:sand", "group:hardened_clay"}, + sidelen = 16, + noise_params = { + offset = 0.01, + scale = 0.006, + spread = vector.new(100, 100, 100), + seed = 1972, + octaves = 3, + persist = 0.6 + }, + y_min = 4, + y_max = vl_biomes.overworld_max, + biomes = {"Desert"}, + decoration = "mcl_core:deadbush", + height = 1, +}) diff --git a/mods/MAPGEN/vl_biomes/end/end.lua b/mods/MAPGEN/vl_biomes/end/end.lua new file mode 100644 index 000000000..7943f62bd --- /dev/null +++ b/mods/MAPGEN/vl_biomes/end/end.lua @@ -0,0 +1,326 @@ +local mg_seed = minetest.get_mapgen_setting("seed") + +vl_biomes.register_biome({ + name = "End", + node_stone = "air", + node_filler = "air", + node_water = "air", + node_river_water = "air", + node_cave_liquid = "air", + y_min = vl_biomes.end_min, + y_max = vl_biomes.end_max + 80, + heat_point = 1000, --ridiculously high values so End Island always takes precedent + humidity_point = 1000, + vertical_blend = 16, + _mcl_biome_type = "medium", + _mcl_grass_palette_index = 0, + _mcl_foliage_palette_index = 0, + _mcl_water_palette_index = 0, + _mcl_waterfogcolor = vl_biomes.default_waterfogcolor, + _mcl_skycolor = vl_biomes.end_skycolor, + _mcl_fogcolor = vl_biomes.end_fogcolor +}) +vl_biomes.register_biome({ + name = "EndBarrens", + node_stone = "air", + node_filler = "air", + node_water = "air", + node_river_water = "air", + node_cave_liquid = "air", + y_min = vl_biomes.end_min, + y_max = vl_biomes.end_max + 80, + heat_point = 1000, + humidity_point = 1000, + vertical_blend = 16, + _mcl_biome_type = "medium", + _mcl_grass_palette_index = 0, + _mcl_foliage_palette_index = 0, + _mcl_water_palette_index = 0, + _mcl_waterfogcolor = vl_biomes.default_waterfogcolor, + _mcl_skycolor = vl_biomes.end_skycolor, + _mcl_fogcolor = vl_biomes.end_fogcolor +}) +vl_biomes.register_biome({ + name = "EndMidlands", + node_stone = "air", + node_filler = "air", + node_water = "air", + node_river_water = "air", + node_cave_liquid = "air", + y_min = vl_biomes.end_min, + y_max = vl_biomes.end_max + 80, + heat_point = 1000, + humidity_point = 1000, + vertical_blend = 16, + _mcl_biome_type = "medium", + _mcl_grass_palette_index = 0, + _mcl_foliage_palette_index = 0, + _mcl_water_palette_index = 0, + _mcl_waterfogcolor = vl_biomes.default_waterfogcolor, + _mcl_skycolor = vl_biomes.end_skycolor, + _mcl_fogcolor = vl_biomes.end_fogcolor +}) +vl_biomes.register_biome({ + name = "EndHighlands", + node_stone = "air", + node_filler = "air", + node_water = "air", + node_river_water = "air", + node_cave_liquid = "air", + y_min = vl_biomes.end_min, + y_max = vl_biomes.end_max + 80, + heat_point = 1000, + humidity_point = 1000, + vertical_blend = 16, + _mcl_biome_type = "medium", + _mcl_grass_palette_index = 0, + _mcl_foliage_palette_index = 0, + _mcl_water_palette_index = 0, + _mcl_waterfogcolor = vl_biomes.default_waterfogcolor, + _mcl_skycolor = vl_biomes.end_skycolor, + _mcl_fogcolor = vl_biomes.end_fogcolor +}) +vl_biomes.register_biome({ + name = "EndSmallIslands", + node_stone = "air", + node_filler = "air", + node_water = "air", + node_river_water = "air", + node_cave_liquid = "air", + y_min = vl_biomes.end_min, + y_max = vl_biomes.end_max + 80, + heat_point = 1000, + humidity_point = 1000, + vertical_blend = 16, + _mcl_biome_type = "medium", + _mcl_grass_palette_index = 0, + _mcl_foliage_palette_index = 0, + _mcl_water_palette_index = 0, + _mcl_waterfogcolor = vl_biomes.default_waterfogcolor, + _mcl_skycolor = vl_biomes.end_skycolor, + _mcl_fogcolor = vl_biomes.end_fogcolor +}) + +vl_biomes.register_biome({ + name = "EndBorder", + node_stone = "air", + node_filler = "air", + node_water = "air", + node_river_water = "air", + node_cave_liquid = "air", + y_min = vl_biomes.end_min, + y_max = vl_biomes.end_max + 80, + heat_point = 500, + humidity_point = 500, + vertical_blend = 16, + max_pos = vector.new(1250, vl_biomes.end_min + 512, 1250), + min_pos = vector.new(-1250, vl_biomes.end_min, -1250), + _mcl_biome_type = "medium", + _mcl_grass_palette_index = 0, + _mcl_foliage_palette_index = 0, + _mcl_water_palette_index = 0, + _mcl_waterfogcolor = vl_biomes.default_waterfogcolor, + _mcl_skycolor = vl_biomes.end_skycolor, + _mcl_fogcolor = vl_biomes.end_fogcolor +}) + +vl_biomes.register_biome({ + name = "EndIsland", + node_stone = "air", + node_filler = "air", + node_water = "air", + node_river_water = "air", + node_cave_liquid = "air", + max_pos = vector.new(650, vl_biomes.end_min + 512, 650), + min_pos = vector.new(-650, vl_biomes.end_min, -650), + heat_point = 50, + humidity_point = 50, + vertical_blend = 16, + _mcl_biome_type = "medium", + _mcl_grass_palette_index = 0, + _mcl_foliage_palette_index = 0, + _mcl_water_palette_index = 0, + _mcl_waterfogcolor = vl_biomes.default_waterfogcolor, + _mcl_skycolor = vl_biomes.end_skycolor, + _mcl_fogcolor = vl_biomes.end_fogcolor +}) + +-- Generate fake End +-- TODO: Remove the "ores" when there's a better End generator +-- FIXME: Broken lighting in v6 mapgen +local mg_name = minetest.get_mapgen_setting("mg_name") +local end_wherein = mg_name == "v6" and {"air", "mcl_core:stone"} or {"air"} + +minetest.register_ore({ + ore_type = "stratum", + ore = "mcl_end:end_stone", + wherein = end_wherein, + biomes = {"EndSmallIslands", "Endborder"}, + y_min = vl_biomes.end_min + 64, + y_max = vl_biomes.end_min + 80, + clust_num_ores = 3375, + clust_size = 15, + + noise_params = { + offset = vl_biomes.end_min + 70, + scale = -1, + spread = vector.new(84, 84, 84), + seed = 145, + octaves = 3, + persist = 0.6, + lacunarity = 2, + --flags = "defaults", + }, + + np_stratum_thickness = { + offset = 0, + scale = 15, + spread = vector.new(84, 84, 84), + seed = 145, + octaves = 3, + persist = 0.6, + lacunarity = 2, + --flags = "defaults", + }, + clust_scarcity = 1, +}) + +minetest.register_ore({ + ore_type = "stratum", + ore = "mcl_end:end_stone", + wherein = end_wherein, + biomes = {"End", "EndMidlands", "EndHighlands", "EndBarrens"}, + y_min = vl_biomes.end_min + 64, + y_max = vl_biomes.end_min + 80, + + noise_params = { + offset = vl_biomes.end_min + 70, + scale = -1, + spread = vector.new(126, 126, 126), + seed = mg_seed + 9999, + octaves = 3, + persist = 0.5, + }, + + np_stratum_thickness = { + offset = -2, + scale = 10, + spread = vector.new(126, 126, 126), + seed = mg_seed + 9999, + octaves = 3, + persist = 0.5, + }, + clust_scarcity = 1, +}) + +minetest.register_ore({ + ore_type = "stratum", + ore = "mcl_end:end_stone", + wherein = end_wherein, + biomes = {"End", "EndMidlands", "EndHighlands", "EndBarrens"}, + y_min = vl_biomes.end_min + 64, + y_max = vl_biomes.end_min + 80, + + noise_params = { + offset = vl_biomes.end_min + 72, + scale = -3, + spread = vector.new(84, 84, 84), + seed = mg_seed + 999, + octaves = 4, + persist = 0.8, + }, + + np_stratum_thickness = { + offset = -4, + scale = 10, + spread = vector.new(84, 84, 84), + seed = mg_seed + 999, + octaves = 4, + persist = 0.8, + }, + clust_scarcity = 1, +}) +minetest.register_ore({ + ore_type = "stratum", + ore = "mcl_end:end_stone", + wherein = end_wherein, + biomes = {"End", "EndMidlands", "EndHighlands", "EndBarrens"}, + y_min = vl_biomes.end_min + 64, + y_max = vl_biomes.end_min + 80, + + noise_params = { + offset = vl_biomes.end_min + 70, + scale = -2, + spread = vector.new(84, 84, 84), + seed = mg_seed + 99, + octaves = 4, + persist = 0.85, + }, + + np_stratum_thickness = { + offset = -3, + scale = 5, + spread = vector.new(63, 63, 63), + seed = mg_seed + 50, + octaves = 4, + persist = 0.85, + }, + clust_scarcity = 1, +}) + +-- Chorus plant +mcl_mapgen_core.register_decoration({ + name = "mcl_biomes:chorus", + deco_type = "simple", + place_on = {"mcl_end:end_stone"}, + flags = "all_floors", + sidelen = 16, + noise_params = { + offset = -0.012, + scale = 0.024, + spread = vector.new(100, 100, 100), + seed = 257, + octaves = 3, + persist = 0.6 + }, + y_min = vl_biomes.end_min, + y_max = vl_biomes.end_max, + decoration = "mcl_end:chorus_plant", + height = 1, + height_max = 8, + biomes = {"End", "EndMidlands", "EndHighlands", "EndBarrens", "EndSmallIslands"}, +}) +mcl_mapgen_core.register_decoration({ + name = "mcl_biomes:chorus_plant", + deco_type = "simple", + place_on = {"mcl_end:chorus_plant"}, + flags = "all_floors", + sidelen = 16, + fill_ratio = 10, + --[[noise_params = { + offset = -0.012, + scale = 0.024, + spread = vector.new(100, 100, 100), + seed = 257, + octaves = 3, + persist = 0.6 + },--]] + y_min = vl_biomes.end_min, + y_max = vl_biomes.end_max, + decoration = "mcl_end:chorus_flower", + height = 1, + biomes = {"End", "EndMidlands", "EndHighlands", "EndBarrens", "EndSmallIslands"}, + gen_callback = function(t, minp, maxp, blockseed) + local pr = PcgRandom(blockseed + mg_seed + 99682) + for _, pos in ipairs(t) do + local x, y, z = pos.x, pos.y, pos.z + if x < -10 or x > 10 or z < -10 or z > 10 then + local realpos = vector.new(x, y + 1, z) + local node = minetest.get_node(realpos) + if node and node.name == "mcl_end:chorus_flower" then + mcl_end.grow_chorus_plant(realpos, node, pr) + end + end + end + end, +}) diff --git a/mods/MAPGEN/vl_biomes/forest.lua b/mods/MAPGEN/vl_biomes/forest.lua new file mode 100644 index 000000000..961c32236 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/forest.lua @@ -0,0 +1,168 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") +-- Forest +vl_biomes.register_biome({ + name = "Forest", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 61, + heat_point = 45, + _mcl_biome_type = "medium", + _mcl_water_temp = "ocean", + _mcl_grass_palette_index = 13, + _mcl_foliage_palette_index = 7, + _mcl_water_palette_index = 0, + _mcl_skycolor = "#79A6FF", + _beach = { + node_top = "mcl_core:sand", + depth_top = 2, + node_filler = "mcl_core:sandstone", + depth_filler = 1, + y_min = -1, + y_max = 0, + _mcl_foliage_palette_index = 1, + }, + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 3, + y_max = -2, + }, +}) + +for i = 1, 4 do + mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + noise_params = { + offset = 0.000545, + scale = 0.0011, + spread = vector.new(250, 250, 250), + seed = 3 + 5 * i, + octaves = 3, + persist = 0.66 + }, + biomes = {"Forest"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_large_"..i..".mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) +end + +-- Small “classic” oak (many biomes) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 16, + noise_params = { + offset = 0.025, + scale = 0.0022, + spread = vector.new(250, 250, 250), + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = {"Forest"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 16, + --[[noise_params = { + offset = 0.01, + scale = 0.00001, + spread = vector.new(250, 250, 250), + seed = 2, + octaves = 3, + persist = 0.33 + },]] + fill_ratio = 0.00002, + biomes = {"Forest"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic_bee_nest.mts", + flags = "place_center_x, place_center_z", + rotation = "random", + spawn_by = "group:flower", + priority = 1550, +}) + +-- Rare balloon oak +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 16, + noise_params = { + offset = 0.002083, + scale = 0.0022, + spread = vector.new(250, 250, 250), + seed = 3, + octaves = 3, + persist = 0.6, + }, + biomes = {"Forest"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_balloon.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +-- Birch +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 16, + noise_params = { + offset = 0.000333, + scale = -0.0015, + spread = vector.new(250, 250, 250), + seed = 11, + octaves = 3, + persist = 0.66 + }, + biomes = {"Forest"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_birch.mts", + flags = "place_center_x, place_center_z", +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 16, + --[[noise_params = { + offset = 0.01, + scale = 0.00001, + spread = vector.new(250, 250, 250), + seed = 2, + octaves = 3, + persist = 0.33 + },]]-- + fill_ratio = 0.00002, + biomes = {"Forest"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_birch_bee_nest.mts", + flags = "place_center_x, place_center_z", + rotation = "random", + spawn_by = "group:flower", + priority = 1550, +}) + diff --git a/mods/MAPGEN/vl_biomes/forest_flower.lua b/mods/MAPGEN/vl_biomes/forest_flower.lua new file mode 100644 index 000000000..c0ba647c2 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/forest_flower.lua @@ -0,0 +1,100 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") +-- Flower Forest +vl_biomes.register_biome({ + name = "FlowerForest", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 3, + y_max = vl_biomes.overworld_max, + humidity_point = 44, + heat_point = 32, + _mcl_biome_type = "medium", + _mcl_water_temp = "ocean", + _mcl_grass_palette_index = 14, + _mcl_foliage_palette_index = 7, + _mcl_water_palette_index = 0, + _mcl_skycolor = "#79A6FF", + _beach = { + node_top = "mcl_core:sand", + depth_top = 2, + node_filler = "mcl_core:sandstone", + depth_filler = 1, + y_min = -2, + y_max = 2, + _mcl_foliage_palette_index = 1, + }, + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 3, + y_max = -3, + }, +}) +-- Small “classic” oak (many biomes) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 16, + noise_params = { + offset = 0.01, + scale = 0.0022, + spread = vector.new(250, 250, 250), + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = {"FlowerForest"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 16, + --[[noise_params = { + offset = 0.01, + scale = 0.00001, + spread = vector.new(250, 250, 250), + seed = 2, + octaves = 3, + persist = 0.33 + },]]-- + fill_ratio = 0.0002, + biomes = {"FlowerForest"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic_bee_nest.mts", + flags = "place_center_x, place_center_z", + rotation = "random", + spawn_by = "group:flower", + priority = 1550, +}) + +-- Birch +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 16, + noise_params = { + offset = 0.000333, + scale = -0.0015, + spread = vector.new(250, 250, 250), + seed = 11, + octaves = 3, + persist = 0.66 + }, + biomes = {"FlowerForest"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_birch.mts", + flags = "place_center_x, place_center_z", +}) diff --git a/mods/MAPGEN/vl_biomes/init.lua b/mods/MAPGEN/vl_biomes/init.lua new file mode 100644 index 000000000..0c53a93a2 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/init.lua @@ -0,0 +1,347 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +-- Future biomes API, work in progress +vl_biomes = {} + +vl_biomes.overworld_fogcolor = "#C0D8FF" +vl_biomes.beach_skycolor = "#78A7FF" -- This is the case for all beach biomes except for the snowy ones! Those beaches will have their own colour instead of this one. +vl_biomes.ocean_skycolor = "#7BA4FF" -- This is the case for all ocean biomes except for non-deep frozen oceans! Those oceans will have their own colour instead of this one. + +vl_biomes.nether_skycolor = "#6EB1FF" -- The Nether biomes seemingly don't use the sky colour, despite having this value according to the wiki. The fog colour is used for both sky and fog. + +vl_biomes.end_skycolor = "#000000" +vl_biomes.end_fogcolor = "#A080A0" -- The End biomes seemingly don't use the fog colour, despite having this value according to the wiki. The sky colour is used for both sky and fog. + +-- Colors of underwater fog effect, defaults for temperatures +-- Swamp and Mangrove Swamp differ +local waterfogcolor = { warm = "#43D5EE", lukewarm = "#45ADF2", ocean = "#3F76E4", cold = "#3D57D6", frozen = "#3938C9" } + +vl_biomes.overworld_min = mcl_vars.mg_overworld_min +vl_biomes.overworld_max = mcl_vars.mg_overworld_max +vl_biomes.nether_min = mcl_vars.mg_nether_min +vl_biomes.lava_nether_max = mcl_vars.mg_lava_nether_max +vl_biomes.nether_deco_max = mcl_vars.mg_nether_deco_max +vl_biomes.nether_max = mcl_vars.mg_nether_max +vl_biomes.end_min = mcl_vars.mg_end_min +vl_biomes.end_max = mcl_vars.mg_end_max + +vl_biomes.OCEAN_MIN = -15 +vl_biomes.DEEP_OCEAN_MAX = vl_biomes.OCEAN_MIN - 1 +vl_biomes.DEEP_OCEAN_MIN = -31 + +local mg_name = minetest.get_mapgen_setting("mg_name") +local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true" + +-- Biomes by water temperature, for decorations and structures +vl_biomes.by_water_temp = {} + +-- Register a biome +-- This API has a few extensions over minetest.register_biome: +-- +-- - _mcl_skycolor affects sky color +-- - _mcl_waterfogcolor affects sky color depending on weather +-- - _mcl_biome_type = "snowy", "cold", "medium" or "hot" affects weather +-- - _mcl_foliage_palette_index affects tree colors +-- - _mcl_grass_palette_index affects grass color +-- - _mcl_water_palette_index affects water color +-- - some default values +-- - subbiomes that inherit from defaults or their parents +-- +-- TODO: add a "_mcl_world" parameter to set defaults for y_min, y_max, and ensure bounds? +vl_biomes.register_biome = function(def) + local is_overworld = (def.y_min or def.min_pos.y) >= vl_biomes.overworld_min - 5 and (def.y_max or def.max_pos.y) <= vl_biomes.overworld_max + 5 + if is_overworld then + -- some defaults: + if def._mcl_fogcolor == nil then def._mcl_fogcolor = vl_biomes.overworld_fogcolor end + if def._beach and def._beach._mcl_skycolor == nil then def._beach._mcl_skycolor = vl_biomes.beach_skycolor end + if def._ocean then + local odef = def._ocean + if odef._mcl_skycolor == nil then odef._mcl_skycolor = vl_biomes.ocean_skycolor end + if odef._mcl_water_temp == nil or odef._mcl_water_temp == "default" then odef._mcl_water_temp = "ocean" end + if odef._mcl_waterfogcolor == nil then odef._mcl_waterfogcolor = waterfogcolor[odef._mcl_water_temp] end + if odef.y_min == nil and not odef.min_pos then odef.y_min = vl_biomes.OCEAN_MIN end + if odef.y_max == nil and not odef.max_pos then odef.y_max = 0 end + if odef._mcl_foliage_palette_index == nil then odef._mcl_foliage_palette_index = 0 end -- no param2 updates + end + -- add deep ocean automatically + if def._deep_ocean == nil then + -- TODO: y_min, y_max only if not min_pos, max_pos + def._deep_ocean = { + y_min = vl_biomes.DEEP_OCEAN_MIN, + y_max = vl_biomes.DEEP_OCEAN_MAX, + node_top = def._ocean.node_top or def.node_top, + depth_top = 2, + node_filler = def._ocean.node_filler or def.node_filler, + depth_filler = 3, + node_riverbed = def._ocean.node_riverbed or def.node_riverbed, + depth_riverbed = 2, + vertical_blend = 5, + _mcl_foliage_palette_index = 0, -- to avoid running the foliage fix + _mcl_skycolor = vl_biomes.ocean_skycolor, + } + end + -- Underground biomes are used to identify the underground and to prevent nodes from the surface + -- (sand, dirt) from leaking into the underground. + if def._underground == nil then + -- TODO: y_min, y_max only if not min_pos, max_pos + def._underground = { + node_top = def._ocean.node_top or def.node_top, + depth_top = 2, + node_filler = def._ocean.node_filler or def.node_filler, + depth_filler = 3, + node_riverbed = def._ocean.node_riverbed or def.node_riverbed, + depth_riverbed = 2, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.DEEP_OCEAN_MIN - 1, + } + end + end + -- subbiomes + local subbiomes = {} + for k, sdef in pairs(def) do + -- currently, all _tables are subbiomes + -- TODO: more precise check, or use _subbiomes = {}? + if k:sub(1,1) == "_" and type(sdef) == "table" then + -- subbiome name + if not sdef.name then sdef.name = def.name .. k end + -- merge from parent + for k2, v2 in pairs(def) do + if type(v2) ~= "table" and sdef[k2] == nil then + sdef[k2] = v2 + end + end + table.insert(subbiomes, sdef) + def[k] = nil -- remove + end + -- build a biome map based on water temperature + if k == "_ocean" and sdef._mcl_water_temp then + local temp = sdef._mcl_water_temp + if not vl_biomes.by_water_temp[temp] then vl_biomes.by_water_temp[temp] = {} end + table.insert(vl_biomes.by_water_temp[temp], sdef.name) + end + end + minetest.register_biome(def) + -- minetest.log("action", "registering biome "..tostring(def.name)) + for _, sdef in ipairs(subbiomes) do + -- minetest.log("action", "registering subbiome "..tostring(sdef.name)) + minetest.register_biome(sdef) + end +end + +-- helper for spruce decorations +function vl_biomes.register_spruce_decoration(seed, offset, sprucename, biomes, y_min) + local mod_mcl_core = minetest.get_modpath("mcl_core") + mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block", "mcl_core:dirt", "mcl_core:podzol"}, + sidelen = 16, + noise_params = { + offset = offset, + scale = 0.0006, + spread = vector.new(250, 250, 250), + seed = seed, + octaves = 3, + persist = 0.66 + }, + biomes = biomes, + y_min = y_min or 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/" .. sprucename, + flags = "place_center_x, place_center_z", + }) +end + +-- +-- Detect mapgen to select functions +-- +if mg_name == "singlenode" then + -- nothing in singlenode +elseif superflat then + -- Implementation of Minecraft's Superflat mapgen, classic style: + -- * Perfectly flat land, 1 grass biome, no decorations, no caves + -- * 4 layers, from top to bottom: grass block, dirt, dirt, bedrock + minetest.clear_registered_biomes() + minetest.clear_registered_decorations() + minetest.clear_registered_schematics() + -- Classic Superflat: bedrock (not part of biome), 2 dirt, 1 grass block + minetest.register_biome({ + name = "flat", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_stone = "mcl_core:dirt", + y_min = mcl_vars.mg_overworld_min - 512, + y_max = mcl_vars.mg_overworld_max, + humidity_point = 50, + heat_point = 50, + _mcl_biome_type = "medium", + _mcl_grass_palette_index = 0, + _mcl_foliage_palette_index = 1, + _mcl_water_palette_index = 0, + _mcl_watertemp = "ocean", + _mcl_waterfogcolor = waterfogcolor["ocean"], + _mcl_skycolor = "#78A7FF", + _mcl_fogcolor = vl_biomes.overworld_fogcolor + }) +elseif mg_name ~= "v6" then + -- OVERWORLD biomes + --[[ These biomes try to resemble MC. This means especially the floor cover and the type of + plants and structures (shapes might differ). The terrain itself will be of course different and + depends on the mapgen. + Important: MC also takes the terrain into account while MT biomes so far don't care about the + terrain at all (except height). + MC has many “M” and “Hills” variants, most of which only differ in terrain compared to their original + counterpart. + In MT, any biome can occour in any terrain, so these variants are implied and are therefore + not explicitly implmented in MCL2. “M” variants are only included if they have another unique feature, + such as a different land cover. + In MCL2, the MC Overworld biomes are split in multiple more parts (stacked by height): + * The main part, this represents the land. It begins at around sea level and usually goes all the way up + * _ocean: For the area covered by ocean water. The y_max may vary for various beach effects. + Has sand or dirt as floor. + * _deep_ocean: Like _ocean, but deeper and has gravel as floor + * _underground: + * Other modifiers: Some complex biomes require more layers to improve the landscape. + + The following naming conventions apply: + * The land biome name is equal to the MC biome name, as of Minecraft 1.11 (in camel case) + * Height modifiers and sub-biomes are appended with underscores and in lowercase. Example: “_ocean” + * Non-MC biomes are written in lowercase + * MC dimension biomes are named after their MC dimension + + Intentionally missing biomes: + * River (generated by valleys and v7) + * Frozen River (generated by valleys and v7) + * Hills biomes (shape only) + * Plateau (shape only) + * Plateau M (shape only) + * Cold Taiga M (mountain only) + * Taiga M (mountain only) + * Roofed Forest M (mountain only) + * Swampland M (mountain only) + * Extreme Hills Edge (unused in MC) + + TODO: + * Better beaches + * Improve Extreme Hills M + * Desert M (desert lakes - removed?) + ]] + + dofile(modpath.."/plains.lua") + dofile(modpath.."/plains_sunflower.lua") + dofile(modpath.."/savanna.lua") + dofile(modpath.."/savanna_windswept.lua") + dofile(modpath.."/desert.lua") + -- missing: Meadow, similar to Plains? + + dofile(modpath.."/forest.lua") + dofile(modpath.."/forest_flower.lua") + dofile(modpath.."/birchforest.lua") + dofile(modpath.."/birchforest_old.lua") + dofile(modpath.."/taiga.lua") + dofile(modpath.."/taiga_old_pine.lua") + dofile(modpath.."/taiga_old_spruce.lua") + dofile(modpath.."/dark_forest.lua") + -- missing: Cherry Grove + + -- missing: Frozen Peaks -- just a matter of shape? + -- missing: Grove, but how does it differ from snowy taiga? + -- missing: Jagged Peaks -- just a matter of shape? + dofile(modpath.."/snowy_taiga.lua") + dofile(modpath.."/snowy_plains.lua") + dofile(modpath.."/snowy_plains_spikes.lua") + -- missing: Snowy Slopes -- just a matter of shape? + + dofile(modpath.."/badlands.lua") + dofile(modpath.."/badlands_eroded.lua") + dofile(modpath.."/badlands_wooded.lua") + dofile(modpath.."/badlands_wooded_mod.lua") + dofile(modpath.."/badlands-strata.lua") -- not a biome, but shared code that needs to be last + + dofile(modpath.."/jungle.lua") + dofile(modpath.."/jungle_edge.lua") + dofile(modpath.."/jungle_modified.lua") + dofile(modpath.."/jungle_modified_edge.lua") + + dofile(modpath.."/bamboojungle.lua") + dofile(modpath.."/bamboojungle_edge.lua") + dofile(modpath.."/bamboojungle_modified.lua") + dofile(modpath.."/bamboojungle_modified_edge.lua") + + dofile(modpath.."/swampland.lua") + dofile(modpath.."/mangroveswamp.lua") + dofile(modpath.."/mushroomisland.lua") + + dofile(modpath.."/stonebeach.lua") + dofile(modpath.."/windswepthills.lua") + dofile(modpath.."/windswepthills_forest.lua") + dofile(modpath.."/windswepthills_gravelly.lua") + -- missing: Stony Peaks -- just a matter of shape? + + -- missing: Deep Dark + -- missing: Dripstone Caves + -- missing: Lush Caves + + -- Additional decorations + dofile(modpath.."/deco/bamboo.lua") + dofile(modpath.."/deco/cacti.lua") + dofile(modpath.."/deco/corals.lua") + dofile(modpath.."/deco/fern.lua") + dofile(modpath.."/deco/flowers.lua") + dofile(modpath.."/deco/mushrooms.lua") + dofile(modpath.."/deco/pumpkin.lua") + dofile(modpath.."/deco/reeds.lua") + dofile(modpath.."/deco/seagrass_kelp.lua") + dofile(modpath.."/deco/snowy_dirt.lua") + dofile(modpath.."/deco/sweet_berry.lua") + dofile(modpath.."/deco/tallgrass.lua") +end +-- FIXME: add back some v6 support? + +-- Non-overworld in everything except singlenode +if mg_name ~= "singlenode" then + --[[ THE NETHER ]] + -- the following decoration is a hack to cover exposed bedrock in netherrack - be careful + -- not to put any ceiling decorations in a way that would apply to this + -- (they would get generated regardless of biome) + mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:bedrock"}, + sidelen = 16, + fill_ratio = 10, + y_min = vl_biomes.lava_nether_max, + y_max = vl_biomes.nether_max + 15, + height = 6, + max_height = 10, + decoration = "mcl_nether:netherrack", + flags = "all_ceilings", + param2 = 0, + }) + mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:bedrock"}, + sidelen = 16, + fill_ratio = 10, + y_min = vl_biomes.nether_min - 10, + y_max = vl_biomes.lava_nether_max, + height = 7, + max_height = 14, + decoration = "mcl_nether:netherrack", + flags = "all_floors,force_placement", + param2 = 0, + }) + + -- Nether biomes + dofile(modpath.."/nether/netherwastes.lua") + dofile(modpath.."/nether/soulsandvalley.lua") + dofile(modpath.."/nether/crimsonforest.lua") + dofile(modpath.."/nether/warpedforest.lua") + dofile(modpath.."/nether/basaltdelta.lua") + -- Sahred ores across nether biomes + dofile(modpath.."/nether/ores.lua") + + --[[ THE END ]] + dofile(modpath.."/end/end.lua") +end + diff --git a/mods/MAPGEN/vl_biomes/jungle.lua b/mods/MAPGEN/vl_biomes/jungle.lua new file mode 100644 index 000000000..93aa7b142 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/jungle.lua @@ -0,0 +1,173 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") + +-- Jungle +vl_biomes.register_biome({ + name = "Jungle", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 88, + heat_point = 81, + _mcl_biome_type = "medium", + _mcl_water_temp = "lukewarm", + _mcl_grass_palette_index = 24, + _mcl_foliage_palette_index = 12, + _mcl_water_palette_index = 2, + _mcl_skycolor = "#77A8FF", + _shore = { + node_top = "mcl_core:dirt", + depth_top = 1, + y_min = -2, + y_max = 0, + }, + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 3, + y_max = -3, + vertical_blend = 1, + }, +}) + +-- Small “classic” oak (many biomes) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.004, + biomes = {"Jungle"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +-- Huge jungle tree (4 variants) +for i = 1, 4 do + mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.0008, + biomes = {"Jungle"}, + y_min = 4, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_huge_"..i..".mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) +end + +-- Common jungle tree +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.025, + biomes = {"Jungle"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.015, + biomes = {"Jungle"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_2.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.005, + biomes = {"Jungle"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_3.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.005, + biomes = {"Jungle"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_4.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) +-- Jungle bush +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + noise_params = { + offset = 0.0196, + scale = 0.015, + spread = vector.new(250, 250, 250), + seed = 2930, + octaves = 4, + persist = 0.6, + }, + biomes = {"Jungle"}, + y_min = 3, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves.mts", + flags = "place_center_x, place_center_z", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + noise_params = { + offset = 0.0196, + scale = 0.005, + spread = vector.new(250, 250, 250), + seed = 2930, + octaves = 4, + persist = 0.6, + }, + biomes = {"Jungle" }, + y_min = 3, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves_2.mts", + flags = "place_center_x, place_center_z", +}) + +-- Melon +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = -0.01, + scale = 0.006, + spread = vector.new(250, 250, 250), + seed = 333, + octaves = 3, + persist = 0.6 + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = "mcl_farming:melon", + biomes = {"Jungle"}, +}) + diff --git a/mods/MAPGEN/vl_biomes/jungle_edge.lua b/mods/MAPGEN/vl_biomes/jungle_edge.lua new file mode 100644 index 000000000..813f15643 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/jungle_edge.lua @@ -0,0 +1,93 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") + +-- Jungle Edge aka Sparse Jungle +vl_biomes.register_biome({ + name = "JungleEdge", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 2, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 88, + heat_point = 76, + _mcl_biome_type = "medium", + _mcl_water_temp = "lukewarm", + _mcl_grass_palette_index = 26, + _mcl_foliage_palette_index = 13, + _mcl_water_palette_index = 2, + _mcl_skycolor = "#77A8FF", + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 2, + }, +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.0004, + biomes = {"JungleEdge"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.0045, + biomes = {"JungleEdge"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + noise_params = { + offset = 0.0085, + scale = 0.025, + spread = vector.new(250, 250, 250), + seed = 2930, + octaves = 4, + persist = 0.6, + }, + biomes = {"JungleEdge"}, + y_min = 3, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves.mts", + flags = "place_center_x, place_center_z", +}) + +-- Melon +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = -0.005, + scale = 0.006, + spread = vector.new(250, 250, 250), + seed = 333, + octaves = 3, + persist = 0.6 + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = "mcl_farming:melon", + biomes = {"JungleEdge"}, +}) + diff --git a/mods/MAPGEN/vl_biomes/jungle_modified.lua b/mods/MAPGEN/vl_biomes/jungle_modified.lua new file mode 100644 index 000000000..ff4b6c9a4 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/jungle_modified.lua @@ -0,0 +1,115 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") + +-- Jungle M aka modified Jungle +-- Like Jungle but with even more dense vegetation +vl_biomes.register_biome({ + name = "JungleM", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 92, + heat_point = 81, + _mcl_biome_type = "medium", + _mcl_water_temp = "lukewarm", + _mcl_grass_palette_index = 25, + _mcl_foliage_palette_index = 12, + _mcl_water_palette_index = 2, + _mcl_skycolor = "#77A8FF", + _shore = { + node_top = "mcl_core:dirt", + depth_top = 1, + y_min = -2, + y_max = 0, + }, + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 3, + y_max = -3, + vertical_blend = 1, + }, +}) +-- Small “classic” oak (many biomes) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.004, + biomes = {"JungleM"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +-- Huge jungle tree (4 variants) +for i = 1, 4 do + mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.003, + biomes = {"JungleM"}, + y_min = 4, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_huge_"..i..".mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) +end + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.09, + biomes = {"JungleM"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_2.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + noise_params = { + offset = 0.05, + scale = 0.025, + spread = vector.new(250, 250, 250), + seed = 2930, + octaves = 4, + persist = 0.6, + }, + biomes = {"JungleM"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves.mts", + flags = "place_center_x, place_center_z", +}) +-- Melon +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = 0.0, + scale = 0.006, + spread = vector.new(250, 250, 250), + seed = 333, + octaves = 3, + persist = 0.6 + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = "mcl_farming:melon", + biomes = {"JungleM"}, +}) diff --git a/mods/MAPGEN/vl_biomes/jungle_modified_edge.lua b/mods/MAPGEN/vl_biomes/jungle_modified_edge.lua new file mode 100644 index 000000000..f06a26787 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/jungle_modified_edge.lua @@ -0,0 +1,113 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") + +-- Jungle Edge M (very rare). +-- Almost identical to Jungle Edge. Has deeper dirt. Melons spawn here a lot. +-- This biome occours directly between Jungle M and Jungle Edge but also has a small border to Jungle. +-- This biome is very small in general. +vl_biomes.register_biome({ + name = "JungleEdgeM", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 4, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 90, + heat_point = 79, + _mcl_biome_type = "medium", + _mcl_water_temp = "lukewarm", + _mcl_grass_palette_index = 27, + _mcl_foliage_palette_index = 13, + _mcl_water_palette_index = 2, + _mcl_skycolor = "#77A8FF", + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 4, + }, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.0004, + biomes = {"JungleEdgeM"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.0045, + biomes = {"JungleEdgeM"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + noise_params = { + offset = 0.0085, + scale = 0.025, + spread = vector.new(250, 250, 250), + seed = 2930, + octaves = 4, + persist = 0.6, + }, + biomes = {"JungleEdgeM"}, + y_min = 3, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves.mts", + flags = "place_center_x, place_center_z", +}) + +-- Lots of melons in Jungle Edge M +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow"}, + sidelen = 80, + noise_params = { + offset = 0.013, + scale = 0.006, + spread = vector.new(125, 125, 125), + seed = 333, + octaves = 3, + persist = 0.6 + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = "mcl_farming:melon", + biomes = {"JungleEdgeM"}, +}) + +-- Melon +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = -0.005, + scale = 0.006, + spread = vector.new(250, 250, 250), + seed = 333, + octaves = 3, + persist = 0.6 + }, + y_min = 1, + y_max = vl_biomes.overworld_max, + decoration = "mcl_farming:melon", + biomes = {"JungleEdgeM"}, +}) diff --git a/mods/MAPGEN/vl_biomes/mangroveswamp.lua b/mods/MAPGEN/vl_biomes/mangroveswamp.lua new file mode 100644 index 000000000..3fa2e5c8b --- /dev/null +++ b/mods/MAPGEN/vl_biomes/mangroveswamp.lua @@ -0,0 +1,207 @@ +-- TODO: move to mcl_mangrove module? +local mod_mcl_mangrove = minetest.get_modpath("mcl_mangrove") +local mg_seed = minetest.get_mapgen_setting("seed") + +-- Mangrove swamp +vl_biomes.register_biome({ + name = "MangroveSwamp", + node_top = "mcl_mud:mud", + depth_top = 1, + node_filler = "mcl_mud:mud", + depth_filler = 3, + node_riverbed = "mcl_core:dirt", + depth_riverbed = 2, + y_min = -5, -- was 1, with _shore below + y_max = 27, -- Note: Limited in height! + humidity_point = 95, + heat_point = 94, + _mcl_biome_type = "hot", + _mcl_water_temp = "warm", + _mcl_grass_palette_index = 27, + _mcl_foliage_palette_index = 6, + _mcl_water_palette_index = 7, + _mcl_waterfogcolor = "#3A7A6A", + _mcl_skycolor = "#78A7FF", + -- removed, as it did not differ _shore = { y_min = -5, y_max = 0, }, + _ocean = { + node_top = "mcl_core:dirt", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_riverbed = "mcl_core:gravel", + depth_riverbed = 2, + y_max = -6, + vertical_blend = 1, + }, +}) + +--- Grow mangrove roots after generation +local function mangrove_root_gennotify(t, minp, maxp, blockseed) + for _, pos in ipairs(t) do + local nn = minetest.find_nodes_in_area(vector.offset(pos, -8, -1, -8), vector.offset(pos, 8, 0, 8), {"mcl_mangrove:mangrove_roots"}) + if nn and #nn > 0 then + local pr = PcgRandom(blockseed + mg_seed + 38327) + for _, v in pairs(nn) do + local l = pr:next(2, 16) + local n = minetest.get_node(vector.offset(v, 0, -1, 0)).name + if minetest.get_item_group(n, "water") > 0 then + local wl = "mcl_mangrove:water_logged_roots" + if n:find("river") then wl = "mcl_mangrove:river_water_logged_roots" end + minetest.bulk_swap_node(minetest.find_nodes_in_area(v, vector.offset(v, 0, -l, 0), {"group:water"}), {name = wl}) + elseif n == "mcl_mud:mud" then + minetest.bulk_swap_node(minetest.find_nodes_in_area(v, vector.offset(v, 0, -l, 0), {"mcl_mud:mud"}), {name = "mcl_mangrove:mangrove_mud_roots"}) + elseif n == "air" then + minetest.bulk_swap_node(minetest.find_nodes_in_area(v, vector.offset(v, 0, -l, 0), {"air"}), {name = "mcl_mangrove:mangrove_roots"}) + end + end + end + end +end + +mcl_mapgen_core.register_decoration({ + name = "mcl_biomes:mangrove_tree_1", + deco_type = "schematic", + place_on = {"mcl_mud:mud"}, + sidelen = 80, + fill_ratio = 0.0065, + biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_tree_1.mts", + flags = "place_center_x, place_center_z, force_placement", + rotation = "random", + gen_callback = mangrove_root_gennotify, +}) +mcl_mapgen_core.register_decoration({ + name = "mcl_biomes:mangrove_tree_2", + deco_type = "schematic", + place_on = {"mcl_mud:mud"}, + sidelen = 80, + fill_ratio = 0.0045, + biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, + y_min = -1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_tree_2.mts", + flags = "place_center_x, place_center_z, force_placement", + rotation = "random", + gen_callback = mangrove_root_gennotify, +}) +mcl_mapgen_core.register_decoration({ + name = "mcl_biomes:mangrove_tree_3", + deco_type = "schematic", + place_on = {"mcl_mud:mud"}, + sidelen = 80, + fill_ratio = 0.023, + biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, + y_min = -1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_tree_3.mts", + flags = "place_center_x, place_center_z, force_placement", + rotation = "random", + gen_callback = mangrove_root_gennotify, +}) +mcl_mapgen_core.register_decoration({ + name = "mcl_biomes:mangrove_tree_4", + deco_type = "schematic", + place_on = {"mcl_mud:mud"}, + sidelen = 80, + fill_ratio = 0.023, + biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, + y_min = -1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_tree_4.mts", + flags = "place_center_x, place_center_z, force_placement", + rotation = "random", + gen_callback = mangrove_root_gennotify, +}) +mcl_mapgen_core.register_decoration({ + name = "mcl_biomes:mangrove_tree_5", + deco_type = "schematic", + place_on = {"mcl_mud:mud"}, + sidelen = 80, + fill_ratio = 0.023, + biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, + y_min = -1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_tree_5.mts", + flags = "place_center_x, place_center_z, force_placement", + rotation = "random", + gen_callback = mangrove_root_gennotify, +}) +mcl_mapgen_core.register_decoration({ + name = "mcl_biomes:mangrove_bee_nest", + deco_type = "schematic", + place_on = {"mcl_mud:mud"}, + sidelen = 80, + --[[noise_params = { + offset = 0.01, + scale = 0.00001, + spread = vector.new(250, 250, 250), + seed = 2, + octaves = 3, + persist = 0.33 + },]]-- + fill_ratio = 0.0005, + biomes = {"MangroveSwamp"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_bee_nest.mts", + flags = "place_center_x, place_center_z, force_placement", + rotation = "random", + spawn_by = "group:flower", + priority = 1550, + gen_callback = mangrove_root_gennotify, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_mud:mud"}, + sidelen = 80, + fill_ratio = 0.045, + biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, + y_min = 0, + y_max = 0, + decoration = "mcl_mangrove:water_logged_roots", + flags = "place_center_x, place_center_z, force_placement", +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_mangrove:mangrove_roots"}, + spawn_by = {"group:water"}, + num_spawn_by = 2, + sidelen = 80, + fill_ratio = 10, + biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, + y_min = 0, + y_max = 0, + decoration = "mcl_mangrove:water_logged_roots", + flags = "place_center_x, place_center_z, force_placement, all_ceilings", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_mud:mud"}, + sidelen = 80, + fill_ratio = 0.045, + biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, + place_offset_y = -1, + decoration = "mcl_mangrove:mangrove_mud_roots", + flags = "place_center_x, place_center_z, force_placement", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_mud:mud"}, + sidelen = 80, + fill_ratio = 0.008, + biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, + decoration = "mcl_core:deadbush", + flags = "place_center_x, place_center_z", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:water_source"}, + sidelen = 80, + fill_ratio = 0.035, + biomes = {"MangroveSwamp", "MangroveSwamp_shore"}, + decoration = "mcl_flowers:waterlily", + flags = "place_center_x, place_center_z, liquid_surface", +}) diff --git a/mods/MAPGEN/mcl_biomes/mod.conf b/mods/MAPGEN/vl_biomes/mod.conf similarity index 82% rename from mods/MAPGEN/mcl_biomes/mod.conf rename to mods/MAPGEN/vl_biomes/mod.conf index 6cce58bf4..d465cdd2e 100644 --- a/mods/MAPGEN/mcl_biomes/mod.conf +++ b/mods/MAPGEN/vl_biomes/mod.conf @@ -1,4 +1,4 @@ -name = mcl_biomes -author = maikerumine +name = vl_biomes +author = maikerumine,wuzzy,kno10 description = Adds the various biomes and biome-related things for non-v6 map generators. depends = mcl_init, mcl_mapgen_core, mcl_core, mcl_worlds, mcl_farming, mcl_flowers, mcl_end, mcl_ocean, mcl_crimson, mcl_blackstone, mcl_mangrove diff --git a/mods/MAPGEN/vl_biomes/mushroomisland.lua b/mods/MAPGEN/vl_biomes/mushroomisland.lua new file mode 100644 index 000000000..304c64926 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/mushroomisland.lua @@ -0,0 +1,107 @@ +local mod_mcl_mushrooms = minetest.get_modpath("mcl_mushrooms") +-- Mushroom Island / Mushroom Island Shore (rare) aka Mushroom Fields +-- Not neccessarily an island at all, only named after Minecraft's biome +vl_biomes.register_biome({ + name = "MushroomIsland", + node_top = "mcl_core:mycelium", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, -- was 4, with Shore below + y_max = 20, -- Note: Limited in height! + vertical_blend = 1, + humidity_point = 106, + heat_point = 50, + _mcl_biome_type = "medium", + _mcl_water_temp = "ocean", + _mcl_grass_palette_index = 29, + _mcl_foliage_palette_index = 17, + _mcl_water_palette_index = 0, + _mcl_skycolor = "#77A8FF", + -- _shore = { name = "MushroomIslandShore", y_min = 1, y_max = 3, }, + _ocean = { + node_top = "mcl_core:gravel", + depth_top = 1, + node_filler = "mcl_core:gravel", + depth_filler = 3, + }, +}) + +local ratio_mushroom_mycelium = 0.002 +local ratio_mushroom_mycelium_huge = ratio_mushroom_mycelium * (11 / 12) +local ratio_mushroom_mycelium_giant = ratio_mushroom_mycelium * (1 / 12) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_core:mycelium"}, + sidelen = 80, + fill_ratio = ratio_mushroom_mycelium_huge, + biomes = {"MushroomIsland"}, --"MushroomIslandShore"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_huge_brown.mts", + flags = "place_center_x, place_center_z", + rotation = "0", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_core:mycelium"}, + sidelen = 80, + fill_ratio = ratio_mushroom_mycelium_giant, + biomes = {"MushroomIsland"}, --"MushroomIslandShore"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_giant_brown.mts", + flags = "place_center_x, place_center_z", + rotation = "0", +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_core:mycelium"}, + sidelen = 80, + fill_ratio = ratio_mushroom_mycelium_huge, + biomes = {"MushroomIsland"}, --"MushroomIslandShore"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_huge_red.mts", + flags = "place_center_x, place_center_z", + rotation = "0", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_core:mycelium"}, + sidelen = 80, + fill_ratio = ratio_mushroom_mycelium_giant, + biomes = {"MushroomIsland"}, --"MushroomIslandShore"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_giant_red.mts", + flags = "place_center_x, place_center_z", + rotation = "0", +}) + +-- Mushrooms in mushroom biome +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:mycelium"}, + sidelen = 80, + fill_ratio = 0.009, + biomes = {"MushroomIsland", "MushroomIslandShore"}, + noise_threshold = 2.0, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + decoration = "mcl_mushrooms:mushroom_red", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:mycelium"}, + sidelen = 80, + fill_ratio = 0.009, + biomes = {"MushroomIsland", "MushroomIslandShore"}, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + decoration = "mcl_mushrooms:mushroom_brown", +}) diff --git a/mods/MAPGEN/vl_biomes/nether/basaltdelta.lua b/mods/MAPGEN/vl_biomes/nether/basaltdelta.lua new file mode 100644 index 000000000..39477e0c5 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/nether/basaltdelta.lua @@ -0,0 +1,135 @@ +-- Nether Basalt Delta biome +vl_biomes.register_biome({ + name = "BasaltDelta", + node_filler = "mcl_nether:netherrack", + node_stone = "mcl_nether:netherrack", + node_top = "mcl_blackstone:basalt", + node_water = "air", + node_river_water = "air", + node_cave_liquid = "air", + y_min = vl_biomes.nether_min, + y_max = vl_biomes.nether_max + 80, + heat_point = 27, + humidity_point = 80, + _mcl_biome_type = "hot", + _mcl_grass_palette_index = 17, + _mcl_foliage_palette_index = 3, + _mcl_water_palette_index = 0, + _mcl_waterfogcolor = vl_biomes.default_waterfogcolor, + _mcl_skycolor = vl_biomes.nether_skycolor, + _mcl_fogcolor = "#685F70" +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_blackstone:nether_gold", "mcl_nether:quartz_ore", "mcl_core:gravel", "mcl_nether:soul_sand", "mcl_blackstone:blackstone", "mcl_nether:magma"}, + sidelen = 16, + fill_ratio = 10, + biomes = {"BasaltDelta"}, + y_min = vl_biomes.lava_nether_max, + y_max = vl_biomes.nether_deco_max, + decoration = "mcl_blackstone:basalt", + flags = "all_floors", + param2 = 0, +}) + +minetest.register_ore({ + ore_type = "blob", + ore = "mcl_blackstone:blackstone", + wherein = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_core:gravel"}, + clust_scarcity = 100, + clust_num_ores = 400, + clust_size = 20, + biomes = {"BasaltDelta"}, + y_min = vl_biomes.lava_nether_max, + y_max = vl_biomes.nether_deco_max, + noise_params = { + offset = 0, + scale = 1, + spread = vector.new(250, 250, 250), + seed = 12345, + octaves = 3, + persist = 0.6, + lacunarity = 2, + flags = "defaults", + } +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + decoration = "mcl_blackstone:basalt", + place_on = {"mcl_blackstone:basalt", "mcl_nether:netherrack", "mcl_blackstone:blackstone"}, + sidelen = 80, + height_max = 55, + noise_params = { + offset = -0.0085, + scale = 0.002, + spread = vector.new(25, 120, 25), + seed = 2325, + octaves = 5, + persist = 2, + lacunarity = 3.5, + flags = "absvalue" + }, + biomes = {"BasaltDelta"}, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_deco_max - 50, + flags = "all_floors, all ceilings", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + decoration = "mcl_blackstone:basalt", + place_on = {"mcl_blackstone:basalt", "mcl_nether:netherrack", "mcl_blackstone:blackstone"}, + sidelen = 80, + height_max = 15, + noise_params = { + offset = -0.0085, + scale = 0.004, + spread = vector.new(25, 120, 25), + seed = 235, + octaves = 5, + persist = 2.5, + lacunarity = 3.5, + flags = "absvalue" + }, + biomes = {"BasaltDelta"}, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_deco_max - 15, + flags = "all_floors, all ceilings", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + decoration = "mcl_blackstone:basalt", + place_on = {"mcl_blackstone:basalt", "mcl_nether:netherrack", "mcl_blackstone:blackstone"}, + sidelen = 80, + height_max = 3, + fill_ratio = 0.4, + biomes = {"BasaltDelta"}, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_deco_max - 15, + flags = "all_floors, all ceilings", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + decoration = "mcl_nether:magma", + place_on = {"mcl_blackstone:basalt", "mcl_nether:netherrack", "mcl_blackstone:blackstone"}, + sidelen = 80, + fill_ratio = 0.082323, + biomes = {"BasaltDelta"}, + place_offset_y = -1, + y_min = vl_biomes.lava_nether_max + 1, + flags = "all_floors, all ceilings", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + decoration = "mcl_nether:nether_lava_source", + place_on = {"mcl_blackstone:basalt", "mcl_nether:netherrack", "mcl_blackstone:blackstone"}, + spawn_by = {"mcl_blackstone:basalt", "mcl_blackstone:blackstone"}, + num_spawn_by = 14, + sidelen = 80, + fill_ratio = 4, + biomes = {"BasaltDelta"}, + place_offset_y = -1, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_max - 5, + flags = "all_floors, force_placement", +}) diff --git a/mods/MAPGEN/vl_biomes/nether/crimsonforest.lua b/mods/MAPGEN/vl_biomes/nether/crimsonforest.lua new file mode 100644 index 000000000..889bf9ed1 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/nether/crimsonforest.lua @@ -0,0 +1,121 @@ +local mod_mcl_crimson = minetest.get_modpath("mcl_crimson") + +vl_biomes.register_biome({ + name = "CrimsonForest", + node_filler = "mcl_nether:netherrack", + node_stone = "mcl_nether:netherrack", + node_top = "mcl_crimson:crimson_nylium", + node_water = "air", + node_river_water = "air", + node_cave_liquid = "air", + y_min = vl_biomes.nether_min, + y_max = vl_biomes.nether_max + 80, + heat_point = 60, + humidity_point = 47, + _mcl_biome_type = "hot", + _mcl_grass_palette_index = 17, + _mcl_foliage_palette_index = 3, + _mcl_water_palette_index = 0, + _mcl_waterfogcolor = vl_biomes.default_waterfogcolor, + _mcl_skycolor = vl_biomes.nether_skycolor, + _mcl_fogcolor = "#330303" +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_blackstone:nether_gold", "mcl_nether:quartz_ore", "mcl_core:gravel", "mcl_nether:soul_sand", "mcl_nether:magma", "mcl_blackstone:blackstone"}, + sidelen = 16, + fill_ratio = 10, + biomes = {"CrimsonForest"}, + y_min = vl_biomes.lava_nether_max, + y_max = vl_biomes.nether_deco_max, + decoration = "mcl_crimson:crimson_nylium", + flags = "all_floors", + param2 = 0, +}) +--- Fix light for mushroom lights after generation +local function fix_light_8_gennotify(t, minp, maxp, blockseed) + for _, pos in ipairs(t) do + minetest.fix_light(vector.offset(pos, -8, -8, -8), vector.offset(pos, 8, 8, 8)) + end +end +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_crimson:crimson_nylium"}, + sidelen = 16, + fill_ratio = 0.02, + biomes = {"CrimsonForest"}, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_max - 10, + flags = "all_floors", + decoration = "mcl_crimson:crimson_fungus", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + name = "mcl_biomes:crimson_tree1", + place_on = {"mcl_crimson:crimson_nylium"}, + sidelen = 16, + fill_ratio = 0.008, + biomes = {"CrimsonForest"}, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_max - 10, + flags = "all_floors, place_center_x, place_center_z", + schematic = mod_mcl_crimson .. "/schematics/crimson_fungus_1.mts", + size = vector.new(5, 8, 5), + rotation = "random", + gen_callback = fix_light_8_gennotify, +}) +minetest.register_alias("mcl_biomes:crimson_tree", "mcl_biomes:crimson_tree1") -- legacy inconsistency, fixed 08/2024 +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + name = "mcl_biomes:crimson_tree2", + place_on = {"mcl_crimson:crimson_nylium"}, + sidelen = 16, + fill_ratio = 0.006, + biomes = {"CrimsonForest"}, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_max - 15, + flags = "all_floors, place_center_x, place_center_z", + schematic = mod_mcl_crimson .. "/schematics/crimson_fungus_2.mts", + size = vector.new(5, 12, 5), + rotation = "random", + gen_callback = fix_light_8_gennotify, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + name = "mcl_biomes:crimson_tree3", + place_on = {"mcl_crimson:crimson_nylium"}, + sidelen = 16, + fill_ratio = 0.004, + biomes = {"CrimsonForest"}, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_max - 20, + flags = "all_floors, place_center_x, place_center_z", + schematic = mod_mcl_crimson .. "/schematics/crimson_fungus_3.mts", + size = vector.new(7, 13, 7), + rotation = "random", + gen_callback = fix_light_8_gennotify, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_crimson:warped_nylium", "mcl_crimson:weeping_vines", "mcl_nether:netherrack"}, + sidelen = 16, + fill_ratio = 0.063, + biomes = {"CrimsonForest"}, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_deco_max, + flags = "all_ceilings", + height = 2, + height_max = 8, + decoration = "mcl_crimson:weeping_vines", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_crimson:crimson_nylium"}, + sidelen = 16, + fill_ratio = 0.082, + biomes = {"CrimsonForest"}, + y_min = vl_biomes.lava_nether_max + 1, + flags = "all_floors", + max_height = 5, + decoration = "mcl_crimson:crimson_roots", +}) diff --git a/mods/MAPGEN/vl_biomes/nether/netherwastes.lua b/mods/MAPGEN/vl_biomes/nether/netherwastes.lua new file mode 100644 index 000000000..ad63b7643 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/nether/netherwastes.lua @@ -0,0 +1,102 @@ +-- Nether Wastes +minetest.register_biome({ + name = "Nether", + node_filler = "mcl_nether:netherrack", + node_stone = "mcl_nether:netherrack", + node_top = "mcl_nether:netherrack", + node_water = "air", + node_river_water = "air", + node_cave_liquid = "air", + y_min = vl_biomes.nether_min, + y_max = vl_biomes.nether_max + 80, + heat_point = 100, + humidity_point = 0, + _mcl_biome_type = "hot", + _mcl_grass_palette_index = 17, + _mcl_foliage_palette_index = 3, + _mcl_water_palette_index = 0, + _mcl_waterfogcolor = vl_biomes.default_waterfogcolor, + _mcl_skycolor = vl_biomes.nether_skycolor, + _mcl_fogcolor = "#330808" +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_blackstone:nether_gold", "mcl_nether:quartz_ore", "mcl_core:gravel", "mcl_nether:soul_sand", "mcl_nether:glowstone", "mcl_nether:magma"}, + sidelen = 16, + fill_ratio = 10, + biomes = {"Nether"}, + y_min = vl_biomes.lava_nether_max, + y_max = vl_biomes.nether_deco_max, + decoration = "mcl_nether:netherrack", + flags = "all_floors", + param2 = 0, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_nether:netherrack", "mcl_nether:magma"}, + sidelen = 16, + fill_ratio = 0.04, + biomes = {"Nether"}, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_max - 1, + flags = "all_floors", + decoration = "mcl_fire:eternal_fire", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_nether:netherrack"}, + sidelen = 16, + fill_ratio = 0.013, + biomes = {"Nether"}, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_max - 1, + flags = "all_floors", + decoration = "mcl_mushrooms:mushroom_brown", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_nether:netherrack"}, + sidelen = 16, + fill_ratio = 0.012, + biomes = {"Nether"}, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_max - 1, + flags = "all_floors", + decoration = "mcl_mushrooms:mushroom_red", +}) + +--nether gold +local mg_name = minetest.get_mapgen_setting("mg_name") +if mg_name ~= "v6" then + minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_blackstone:blackstone_gilded", + wherein = "mcl_blackstone:blackstone", + clust_scarcity = 4775, + clust_num_ores = 2, + clust_size = 2, + y_min = vl_biomes.nether_min, + y_max = vl_biomes.nether_max, + }) + minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_blackstone:nether_gold", + wherein = "mcl_nether:netherrack", + clust_scarcity = 830, + clust_num_ores = 5, + clust_size = 3, + y_min = vl_biomes.nether_min, + y_max = vl_biomes.nether_max, + }) + minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_blackstone:nether_gold", + wherein = "mcl_nether:netherrack", + clust_scarcity = 1660, + clust_num_ores = 4, + clust_size = 2, + y_min = vl_biomes.nether_min, + y_max = vl_biomes.nether_max, + }) +end diff --git a/mods/MAPGEN/vl_biomes/nether/ores.lua b/mods/MAPGEN/vl_biomes/nether/ores.lua new file mode 100644 index 000000000..0b153091b --- /dev/null +++ b/mods/MAPGEN/vl_biomes/nether/ores.lua @@ -0,0 +1,190 @@ +-- Soul sand +minetest.register_ore({ + ore_type = "sheet", + ore = "mcl_nether:soul_sand", + -- Note: Stone is included only for v6 mapgen support. Netherrack is not generated naturally + -- in v6, but instead set with the on_generated function in mcl_mapgen_core. + wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, + clust_scarcity = 13 * 13 * 13, + clust_size = 5, + y_min = vl_biomes.nether_min, + y_max = mcl_worlds.layer_to_y(64, "nether"), + noise_threshold = 0.0, + noise_params = { + offset = 0.5, + scale = 0.1, + spread = vector.new(5, 5, 5), + seed = 2316, + octaves = 1, + persist = 0.0 + }, +}) + +-- Magma blocks +minetest.register_ore({ + ore_type = "blob", + ore = "mcl_nether:magma", + wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, + clust_scarcity = 8 * 8 * 8, + clust_num_ores = 45, + clust_size = 6, + y_min = mcl_worlds.layer_to_y(23, "nether"), + y_max = mcl_worlds.layer_to_y(37, "nether"), + noise_params = { + offset = 0, + scale = 1, + spread = vector.new(250, 250, 250), + seed = 12345, + octaves = 3, + persist = 0.6, + lacunarity = 2, + flags = "defaults", + }, +}) +minetest.register_ore({ + ore_type = "blob", + ore = "mcl_nether:magma", + wherein = {"mcl_nether:netherrack"}, + clust_scarcity = 10 * 10 * 10, + clust_num_ores = 65, + clust_size = 8, + y_min = mcl_worlds.layer_to_y(23, "nether"), + y_max = mcl_worlds.layer_to_y(37, "nether"), + noise_params = { + offset = 0, + scale = 1, + spread = vector.new(250, 250, 250), + seed = 12345, + octaves = 3, + persist = 0.6, + lacunarity = 2, + flags = "defaults", + }, +}) + +-- Glowstone +minetest.register_ore({ + ore_type = "blob", + ore = "mcl_nether:glowstone", + wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, + clust_scarcity = 26 * 26 * 26, + clust_size = 5, + y_min = vl_biomes.lava_nether_max + 10, + y_max = vl_biomes.nether_max - 13, + noise_threshold = 0.0, + noise_params = { + offset = 0.5, + scale = 0.1, + spread = vector.new(5, 5, 5), + seed = 17676, + octaves = 1, + persist = 0.0 + }, +}) + +-- Gravel (Nether) +minetest.register_ore({ + ore_type = "sheet", + ore = "mcl_core:gravel", + wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, + column_height_min = 1, + column_height_max = 1, + column_midpoint_factor = 0, + y_min = mcl_worlds.layer_to_y(63, "nether"), + -- This should be 65, but for some reason with this setting, the sheet ore really stops at 65. o_O + y_max = mcl_worlds.layer_to_y(65 + 2, "nether"), + noise_threshold = 0.2, + noise_params = { + offset = 0.0, + scale = 0.5, + spread = vector.new(20, 20, 20), + seed = 766, + octaves = 3, + persist = 0.6, + }, +}) + +-- Nether quartz +if minetest.settings:get_bool("mcl_generate_ores", true) then + minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_nether:quartz_ore", + wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, + clust_scarcity = 850, + clust_num_ores = 4, -- MC cluster amount: 4-10 + clust_size = 3, + y_min = vl_biomes.nether_min, + y_max = vl_biomes.nether_max, + }) + minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_nether:quartz_ore", + wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, + clust_scarcity = 1650, + clust_num_ores = 8, -- MC cluster amount: 4-10 + clust_size = 4, + y_min = vl_biomes.nether_min, + y_max = vl_biomes.nether_max, + }) +end + +-- Lava springs in the Nether +minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_nether:nether_lava_source", + wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, + clust_scarcity = 13500, --rare + clust_num_ores = 1, + clust_size = 1, + y_min = vl_biomes.lava_nether_max, + y_max = vl_biomes.nether_max - 13, +}) + +local lava_biomes = {"BasaltDelta", "Nether"} +minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_nether:nether_lava_source", + wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, + clust_scarcity = 500, + clust_num_ores = 1, + clust_size = 1, + biomes = lava_biomes, + y_min = vl_biomes.nether_min, + y_max = vl_biomes.lava_nether_max + 1, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_nether:nether_lava_source", + wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, + clust_scarcity = 1000, + clust_num_ores = 1, + clust_size = 1, + biomes = lava_biomes, + y_min = vl_biomes.lava_nether_max + 2, + y_max = vl_biomes.lava_nether_max + 12, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_nether:nether_lava_source", + wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, + clust_scarcity = 2000, + clust_num_ores = 1, + clust_size = 1, + biomes = lava_biomes, + y_min = vl_biomes.lava_nether_max + 13, + y_max = vl_biomes.lava_nether_max + 48, +}) +minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_nether:nether_lava_source", + wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, + clust_scarcity = 3500, + clust_num_ores = 1, + clust_size = 1, + biomes = lava_biomes, + y_min = vl_biomes.lava_nether_max + 49, + y_max = vl_biomes.nether_max - 13, +}) + diff --git a/mods/MAPGEN/vl_biomes/nether/soulsandvalley.lua b/mods/MAPGEN/vl_biomes/nether/soulsandvalley.lua new file mode 100644 index 000000000..27c74c3cf --- /dev/null +++ b/mods/MAPGEN/vl_biomes/nether/soulsandvalley.lua @@ -0,0 +1,115 @@ +local mod_mcl_blackstone = minetest.get_modpath("mcl_blackstone") + +vl_biomes.register_biome({ + name = "SoulsandValley", + node_filler = "mcl_nether:netherrack", + node_stone = "mcl_nether:netherrack", + node_top = "mcl_blackstone:soul_soil", + node_water = "air", + node_river_water = "air", + node_cave_liquid = "air", + y_min = vl_biomes.nether_min, + y_max = vl_biomes.nether_max + 80, + heat_point = 77, + humidity_point = 33, + _mcl_biome_type = "hot", + _mcl_grass_palette_index = 17, + _mcl_foliage_palette_index = 3, + _mcl_water_palette_index = 0, + _mcl_waterfogcolor = vl_biomes.default_waterfogcolor, + _mcl_skycolor = vl_biomes.nether_skycolor, + _mcl_fogcolor = "#1B4745" +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_nether:magma"}, + sidelen = 16, + fill_ratio = 10, + biomes = {"SoulsandValley"}, + y_min = vl_biomes.lava_nether_max, + y_max = vl_biomes.nether_deco_max, + decoration = "mcl_blackstone:soul_soil", + flags = "all_floors, all_ceilings", + param2 = 0, +}) +minetest.register_ore({ + ore_type = "blob", + ore = "mcl_nether:soul_sand", + wherein = {"mcl_nether:netherrack", "mcl_blackstone:soul_soil"}, + clust_scarcity = 100, + clust_num_ores = 225, + clust_size = 15, + biomes = {"SoulsandValley"}, + y_min = vl_biomes.lava_nether_max, + y_max = vl_biomes.nether_deco_max, + noise_params = { + offset = 0, + scale = 1, + spread = vector.new(250, 250, 250), + seed = 12345, + octaves = 3, + persist = 0.6, + lacunarity = 2, + flags = "defaults", + } +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_blackstone:soul_soil", "mcl_nether:soul_sand"}, + sidelen = 16, + fill_ratio = 0.062, + biomes = {"SoulsandValley"}, + y_min = vl_biomes.lava_nether_max + 1, + flags = "all_floors", + max_height = 5, + decoration = "mcl_blackstone:soul_fire", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_blackstone:soul_soil", "mcl_nether:soulsand"}, + sidelen = 16, + fill_ratio = 0.000212, + biomes = {"SoulsandValley"}, + y_min = vl_biomes.lava_nether_max + 1, + flags = "all_floors, place_center_x, place_center_z", + schematic = mod_mcl_blackstone .. "/schematics/mcl_blackstone_nether_fossil_1.mts", + size = vector.new(5, 8, 5), + rotation = "random", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_blackstone:soul_soil", "mcl_nether:soulsand"}, + sidelen = 16, + fill_ratio = 0.0002233, + biomes = {"SoulsandValley"}, + y_min = vl_biomes.lava_nether_max + 1, + flags = "all_floors, place_center_x, place_center_z", + schematic = mod_mcl_blackstone .. "/schematics/mcl_blackstone_nether_fossil_2.mts", + size = vector.new(5, 8, 5), + rotation = "random", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_blackstone:soul_soil", "mcl_nether:soulsand"}, + sidelen = 16, + fill_ratio = 0.000225, + biomes = {"SoulsandValley"}, + y_min = vl_biomes.lava_nether_max + 1, + flags = "all_floors, place_center_x, place_center_z", + schematic = mod_mcl_blackstone .. "/schematics/mcl_blackstone_nether_fossil_3.mts", + size = vector.new(5, 8, 5), + rotation = "random", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_blackstone:soul_soil", "mcl_nether:soulsand"}, + sidelen = 16, + fill_ratio = 0.00022323, + biomes = {"SoulsandValley"}, + y_min = vl_biomes.lava_nether_max + 1, + flags = "all_floors, place_center_x, place_center_z", + schematic = mod_mcl_blackstone .. "/schematics/mcl_blackstone_nether_fossil_4.mts", + size = vector.new(5, 8, 5), + rotation = "random", +}) diff --git a/mods/MAPGEN/vl_biomes/nether/warpedforest.lua b/mods/MAPGEN/vl_biomes/nether/warpedforest.lua new file mode 100644 index 000000000..66e2566a2 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/nether/warpedforest.lua @@ -0,0 +1,129 @@ +local mod_mcl_crimson = minetest.get_modpath("mcl_crimson") + +vl_biomes.register_biome({ + name = "WarpedForest", + node_filler = "mcl_nether:netherrack", + node_stone = "mcl_nether:netherrack", + node_top = "mcl_crimson:warped_nylium", + node_water = "air", + node_river_water = "air", + node_cave_liquid = "air", + y_min = vl_biomes.nether_min, + y_max = vl_biomes.nether_max + 80, + heat_point = 37, + humidity_point = 70, + _mcl_biome_type = "hot", + _mcl_grass_palette_index = 17, + _mcl_foliage_palette_index = 3, + _mcl_water_palette_index = 0, + _mcl_waterfogcolor = vl_biomes.default_waterfogcolor, + _mcl_skycolor = vl_biomes.nether_skycolor, + _mcl_fogcolor = "#1A051A" +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_blackstone:nether_gold", "mcl_nether:quartz_ore", "mcl_core:gravel", "mcl_nether:soul_sand", "mcl_nether:magma", "mcl_blackstone:blackstone"}, + sidelen = 16, + fill_ratio = 10, + biomes = {"WarpedForest"}, + y_min = vl_biomes.lava_nether_max, + y_max = vl_biomes.nether_deco_max, + decoration = "mcl_crimson:warped_nylium", + flags = "all_floors", + param2 = 0, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_crimson:warped_nylium"}, + sidelen = 16, + fill_ratio = 0.02, + biomes = {"WarpedForest"}, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_max - 10, + flags = "all_floors", + decoration = "mcl_crimson:warped_fungus", +}) +--- Fix light for mushroom lights after generation +local function fix_light_8_gennotify(t, minp, maxp, blockseed) + for _, pos in ipairs(t) do + minetest.fix_light(vector.offset(pos, -8, -8, -8), vector.offset(pos, 8, 8, 8)) + end +end +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + name = "mcl_biomes:warped_tree1", + place_on = {"mcl_crimson:warped_nylium"}, + sidelen = 16, + fill_ratio = 0.007, + biomes = {"WarpedForest"}, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_max - 15, + flags = "all_floors, place_center_x, place_center_z", + schematic = mod_mcl_crimson .. "/schematics/warped_fungus_1.mts", + size = vector.new(5, 11, 5), + rotation = "random", + gen_callback = fix_light_8_gennotify, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + name = "mcl_biomes:warped_tree2", + place_on = {"mcl_crimson:warped_nylium"}, + sidelen = 16, + fill_ratio = 0.005, + biomes = {"WarpedForest"}, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_max - 10, + flags = "all_floors, place_center_x, place_center_z", + schematic = mod_mcl_crimson .. "/schematics/warped_fungus_2.mts", + size = vector.new(5, 6, 5), + rotation = "random", + gen_callback = fix_light_8_gennotify, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + name = "mcl_biomes:warped_tree3", + place_on = {"mcl_crimson:warped_nylium"}, + sidelen = 16, + fill_ratio = 0.003, + biomes = {"WarpedForest"}, + y_min = vl_biomes.lava_nether_max + 1, + y_max = vl_biomes.nether_max - 14, + flags = "all_floors, place_center_x, place_center_z", + schematic = mod_mcl_crimson .. "/schematics/warped_fungus_3.mts", + size = vector.new(5, 12, 5), + rotation = "random", + gen_callback = fix_light_8_gennotify, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_crimson:warped_nylium", "mcl_crimson:twisting_vines"}, + sidelen = 16, + fill_ratio = 0.032, + biomes = {"WarpedForest"}, + y_min = vl_biomes.lava_nether_max + 1, + flags = "all_floors", + height = 2, + height_max = 8, + decoration = "mcl_crimson:twisting_vines", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_crimson:warped_nylium"}, + sidelen = 16, + fill_ratio = 0.0812, + biomes = {"WarpedForest"}, + y_min = vl_biomes.lava_nether_max + 1, + flags = "all_floors", + max_height = 5, + decoration = "mcl_crimson:warped_roots", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_crimson:crimson_nylium"}, + sidelen = 16, + fill_ratio = 0.052, + biomes = {"WarpedForest"}, + y_min = vl_biomes.lava_nether_max + 1, + flags = "all_floors", + decoration = "mcl_crimson:nether_sprouts", +}) diff --git a/mods/MAPGEN/vl_biomes/plains.lua b/mods/MAPGEN/vl_biomes/plains.lua new file mode 100644 index 000000000..65078ce53 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/plains.lua @@ -0,0 +1,36 @@ +-- Plains +vl_biomes.register_biome({ + name = "Plains", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 2, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 3, + y_max = vl_biomes.overworld_max, + humidity_point = 39, + heat_point = 58, + _mcl_biome_type = "medium", + _mcl_water_temp = "ocean", + _mcl_grass_palette_index = 0, + _mcl_foliage_palette_index = 1, + _mcl_water_palette_index = 0, + _mcl_skycolor = "#78A7FF", + _beach = { + node_top = "mcl_core:sand", + depth_top = 2, + node_filler = "mcl_core:sandstone", + depth_filler = 2, + y_min = 0, + y_max = 2, + }, + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 3, + y_max = -1, + }, +}) + diff --git a/mods/MAPGEN/vl_biomes/plains_sunflower.lua b/mods/MAPGEN/vl_biomes/plains_sunflower.lua new file mode 100644 index 000000000..ce8cdf22d --- /dev/null +++ b/mods/MAPGEN/vl_biomes/plains_sunflower.lua @@ -0,0 +1,29 @@ +-- Sunflower Plains +vl_biomes.register_biome({ + name = "SunflowerPlains", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 4, + y_max = vl_biomes.overworld_max, + humidity_point = 28, + heat_point = 45, + _mcl_biome_type = "medium", + _mcl_water_temp = "ocean", + _mcl_grass_palette_index = 11, + _mcl_foliage_palette_index = 1, + _mcl_water_palette_index = 0, + _mcl_skycolor = "#78A7FF", + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 3, + node_riverbed = "mcl_core:dirt", + depth_riverbed = 2, + }, +}) + diff --git a/mods/MAPGEN/vl_biomes/savanna.lua b/mods/MAPGEN/vl_biomes/savanna.lua new file mode 100644 index 000000000..77fc41110 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/savanna.lua @@ -0,0 +1,65 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") +-- Savanna +vl_biomes.register_biome({ + name = "Savanna", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 2, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 36, + heat_point = 79, + _mcl_biome_type = "hot", + _mcl_water_temp = "lukewarm", + _mcl_grass_palette_index = 1, + _mcl_foliage_palette_index = 3, + _mcl_water_palette_index = 2, + _mcl_skycolor = "#6EB1FF", + _beach = { + node_top = "mcl_core:sand", + depth_top = 3, + node_filler = "mcl_core:sandstone", + depth_filler = 2, + y_min = -1, + y_max = 0, + _mcl_foliage_palette_index = 1, + }, + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 3, + y_max = -2, + }, +}) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + fill_ratio = 0.0004, + biomes = {"JungleEdge", "JungleEdgeM", "Savanna"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) +-- Acacia (many variants) +for a = 1, 7 do + mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:coarse_dirt"}, + sidelen = 16, + fill_ratio = 0.0002, + biomes = {"Savanna"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_acacia_" .. a .. ".mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) +end + diff --git a/mods/MAPGEN/vl_biomes/savanna_windswept.lua b/mods/MAPGEN/vl_biomes/savanna_windswept.lua new file mode 100644 index 000000000..8d393c8ef --- /dev/null +++ b/mods/MAPGEN/vl_biomes/savanna_windswept.lua @@ -0,0 +1,45 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") +-- Savanna M aka Shattered Savanna aka Windswept Savanna +-- Changes to Savanna: Coarse Dirt. No sand beach. No oaks. +-- Otherwise identical to Savanna +vl_biomes.register_biome({ + name = "SavannaM", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:coarse_dirt", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 48, + heat_point = 100, + _mcl_biome_type = "hot", + _mcl_water_temp = "lukewarm", + _mcl_grass_palette_index = 23, + _mcl_foliage_palette_index = 3, + _mcl_water_palette_index = 2, + _mcl_skycolor = "#6EB1FF", + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 3, + }, +}) +-- Acacia (many variants) +for a = 1, 7 do + mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:coarse_dirt"}, + sidelen = 16, + fill_ratio = 0.0002, + biomes = {"SavannaM"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_acacia_" .. a .. ".mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) +end + diff --git a/mods/MAPGEN/vl_biomes/snowy_plains.lua b/mods/MAPGEN/vl_biomes/snowy_plains.lua new file mode 100644 index 000000000..91b40bdde --- /dev/null +++ b/mods/MAPGEN/vl_biomes/snowy_plains.lua @@ -0,0 +1,101 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") + +-- Ice Plains, aka ice flats, aka Snowy Plains +vl_biomes.register_biome({ + name = "IcePlains", + node_dust = "mcl_core:snow", + node_top = "mcl_core:dirt_with_grass_snow", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 2, + node_water_top = "mcl_core:ice", + depth_water_top = 2, + node_river_water = "mcl_core:ice", + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 24, + heat_point = 8, + _mcl_biome_type = "snowy", + _mcl_water_temp = "frozen", + _mcl_grass_palette_index = 10, + _mcl_foliage_palette_index = 2, + _mcl_water_palette_index = 5, + _mcl_skycolor = "#7FA1FF", + _ocean = { + node_top = "mcl_core:gravel", + depth_top = 1, + node_filler = "mcl_core:gravel", + depth_filler = 3, + _mcl_skycolor = "#7FA1FF", -- not default, but icy + }, +}) + +-- Small “classic” oak (many biomes) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block", "mcl_core:dirt", }, + sidelen = 16, + noise_params = { + offset = 0.0, + scale = 0.0002, + spread = vector.new(250, 250, 250), + seed = 2, + octaves = 3, + persist = 0.7 + }, + biomes = {"IcePlains"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +-- Rare spruce in Ice Plains +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block"}, + sidelen = 16, + noise_params = { + offset = -0.00075, + scale = -0.0015, + spread = vector.new(250, 250, 250), + seed = 11, + octaves = 3, + persist = 0.7 + }, + biomes = {"IcePlains"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_spruce_5.mts", + flags = "place_center_x, place_center_z", +}) + +-- Place tall grass on snow in Ice Plains +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + priority = 1500, + place_on = {"group:grass_block"}, + sidelen = 16, + noise_params = { + offset = -0.08, + scale = 0.09, + spread = vector.new(15, 15, 15), + seed = 420, + octaves = 3, + persist = 0.6, + }, + biomes = {"IcePlains"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = { + size = vector.new(1, 2, 1), + data = { + {name = "mcl_core:dirt_with_grass", force_place = true, }, + {name = "mcl_flowers:tallgrass", param2 = 10}, + }, + }, +}) + diff --git a/mods/MAPGEN/vl_biomes/snowy_plains_spikes.lua b/mods/MAPGEN/vl_biomes/snowy_plains_spikes.lua new file mode 100644 index 000000000..61e2aa886 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/snowy_plains_spikes.lua @@ -0,0 +1,75 @@ +local mod_mcl_structures = minetest.get_modpath("mcl_structures") + +-- Ice Plains Spikes (rare) aka Ice Spikes +vl_biomes.register_biome({ + name = "IcePlainsSpikes", + node_top = "mcl_core:snowblock", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 2, + node_water_top = "mcl_core:ice", + depth_water_top = 1, + node_river_water = "mcl_core:ice", + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 24, + heat_point = -5, + _mcl_biome_type = "snowy", + _mcl_water_temp = "frozen", + _mcl_grass_palette_index = 2, + _mcl_foliage_palette_index = 2, + _mcl_water_palette_index = 5, + _mcl_skycolor = "#7FA1FF", + _ocean = { + node_top = "mcl_core:gravel", + depth_top = 1, + node_filler = "mcl_core:gravel", + depth_filler = 3, + _mcl_skycolor = "#7FA1FF", -- not default, but icy + }, +}) + +-- FIXME: on slopes, they tend to float on one side. Use even larger spikes and a negative y_offset? +-- Large ice spike +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_core:snowblock", "mcl_core:snow", "group:grass_block_snow"}, + sidelen = 80, + noise_params = { + offset = 0.00040, + scale = 0.001, + spread = vector.new(250, 250, 250), + seed = 1133, + octaves = 4, + persist = 0.67, + }, + biomes = {"IcePlainsSpikes"}, + y_min = 4, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_structures .. "/schematics/mcl_structures_ice_spike_large.mts", + rotation = "random", + flags = "place_center_x, place_center_z", +}) + +-- Small ice spike +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_core:snowblock", "mcl_core:snow", "group:grass_block_snow"}, + sidelen = 80, + noise_params = { + offset = 0.005, + scale = 0.001, + spread = vector.new(250, 250, 250), + seed = 1133, + octaves = 4, + persist = 0.67, + }, + biomes = {"IcePlainsSpikes"}, + y_min = 4, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_structures .. "/schematics/mcl_structures_ice_spike_small.mts", + rotation = "random", + flags = "place_center_x, place_center_z", +}) diff --git a/mods/MAPGEN/vl_biomes/snowy_taiga.lua b/mods/MAPGEN/vl_biomes/snowy_taiga.lua new file mode 100644 index 000000000..ea4d0353c --- /dev/null +++ b/mods/MAPGEN/vl_biomes/snowy_taiga.lua @@ -0,0 +1,103 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") + +-- Cold Taiga aka Snowy Taiga +vl_biomes.register_biome({ + name = "ColdTaiga", + node_dust = "mcl_core:snow", + node_top = "mcl_core:dirt_with_grass_snow", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 2, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 3, + y_max = vl_biomes.overworld_max, + humidity_point = 58, + heat_point = 8, + _mcl_biome_type = "snowy", + _mcl_water_temp = "frozen", + _mcl_grass_palette_index = 3, + _mcl_foliage_palette_index = 2, + _mcl_water_palette_index = 5, + _mcl_skycolor = "#839EFF", + -- A cold beach-like biome, implemented as low part of Cold Taiga + _beach = { + node_top = "mcl_core:sand", + depth_top = 2, + node_water_top = "mcl_core:ice", + depth_water_top = 1, + node_filler = "mcl_core:sandstone", + depth_filler = 2, + y_min = 1, + y_max = 2, + _mcl_foliage_palette_index = 16, + _mcl_skycolor = "#7FA1FF", -- not default, but icy + }, + -- Water part of the beach. Added to prevent snow being on the ice. + _beach_water = { + node_top = "mcl_core:sand", + depth_top = 2, + node_water_top = "mcl_core:ice", + depth_water_top = 1, + node_filler = "mcl_core:sandstone", + depth_filler = 2, + y_min = -4, + y_max = 0, + _mcl_foliage_palette_index = 16, + _mcl_skycolor = "#7FA1FF", -- not default, but icy + }, + _ocean = { + node_top = "mcl_core:gravel", + depth_top = 1, + node_filler = "mcl_core:gravel", + depth_filler = 3, + y_max = -5, + vertical_blend = 1, + _mcl_skycolor = "#7FA1FF", -- not default, but icy + }, +}) +-- Small lollipop spruce +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block", "mcl_core:podzol"}, + sidelen = 16, + noise_params = { + offset = 0.004, + scale = 0.0022, + spread = vector.new(250, 250, 250), + seed = 2500, + octaves = 3, + persist = 0.66 + }, + biomes = {"ColdTaiga"}, + y_min = 2, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_spruce_lollipop.mts", + flags = "place_center_x, place_center_z", +}) + +-- Matchstick spruce: Very few leaves, tall trunk +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block", "mcl_core:podzol"}, + sidelen = 80, + noise_params = { + offset = -0.025, + scale = 0.025, + spread = vector.new(250, 250, 250), + seed = 2566, + octaves = 5, + persist = 0.60, + }, + biomes = {"ColdTaiga"}, + y_min = 3, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_spruce_matchstick.mts", + flags = "place_center_x, place_center_z", +}) + +vl_biomes.register_spruce_decoration(11000, 0.00150, "mcl_core_spruce_5.mts", {"ColdTaiga"}) + +vl_biomes.register_spruce_decoration(2500, 0.00325, "mcl_core_spruce_1.mts", {"ColdTaiga"}) +vl_biomes.register_spruce_decoration(7000, 0.00425, "mcl_core_spruce_3.mts", {"ColdTaiga"}) +vl_biomes.register_spruce_decoration(9000, 0.00325, "mcl_core_spruce_4.mts", {"ColdTaiga"}) diff --git a/mods/MAPGEN/vl_biomes/stonebeach.lua b/mods/MAPGEN/vl_biomes/stonebeach.lua new file mode 100644 index 000000000..147595507 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/stonebeach.lua @@ -0,0 +1,26 @@ +-- Stone beach, aka Stony Shore +-- Just stone. +-- Not neccessarily a beach at all, only named so according to MC +vl_biomes.register_biome({ + name = "StoneBeach", + node_riverbed = "mcl_core:sand", + depth_riverbed = 1, + y_min = -7, + y_max = vl_biomes.overworld_max, + humidity_point = 0, + heat_point = 8, + _mcl_biome_type = "cold", + _mcl_water_temp = "cold", + _mcl_grass_palette_index = 9, + _mcl_foliage_palette_index = 11, + _mcl_water_palette_index = 4, + _mcl_skycolor = "#7DA2FF", + _ocean = { + node_top = "mcl_core:gravel", + depth_top = 1, + y_min = vl_biomes.OCEAN_MIN, + y_max = -8, + vertical_blend = 2, + }, +}) + diff --git a/mods/MAPGEN/vl_biomes/swampland.lua b/mods/MAPGEN/vl_biomes/swampland.lua new file mode 100644 index 000000000..9d76ebde5 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/swampland.lua @@ -0,0 +1,96 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") + +-- Swampland +vl_biomes.register_biome({ + name = "Swampland", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = 23, -- Note: Limited in height! + humidity_point = 90, + heat_point = 50, + _mcl_biome_type = "medium", + _mcl_water_temp = "ocean", + _mcl_grass_palette_index = 28, + _mcl_foliage_palette_index = 5, + _mcl_water_palette_index = 1, + _mcl_waterfogcolor = "#617B64", + _mcl_skycolor = "#78A7FF", + _shore = { + node_top = "mcl_core:dirt", + depth_top = 1, + y_min = -5, + y_max = 0, + }, + _ocean = { + node_top = "mcl_core:sand", + depth_top = 1, + node_filler = "mcl_core:sand", + depth_filler = 3, + y_max = -6, + vertical_blend = 1, + }, +}) +-- Swamp oak +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + sidelen = 80, + noise_params = { + offset = 0.0055, + scale = 0.0011, + spread = vector.new(250, 250, 250), + seed = 5005, + octaves = 5, + persist = 0.6, + }, + biomes = {"Swampland", "Swampland_shore"}, + y_min = 0, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_swamp.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +-- Lily pad +local lily_schem = { + {name = "mcl_core:water_source"}, + {name = "mcl_flowers:waterlily"}, +} + +-- Spawn them in shallow water at ocean level in Swampland. +-- Tweak lilydepth to change the maximum water depth +local lilydepth = 2 + +for d = 1, lilydepth do + local height = d + 2 + local y = 1 - d + table.insert(lily_schem, 1, {name = "air", prob = 0}) + + mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + schematic = { + size = vector.new(1, height, 1), + data = lily_schem, + }, + place_on = "mcl_core:dirt", + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.3, + spread = vector.new(100, 100, 100), + seed = 503, + octaves = 6, + persist = 0.7, + }, + y_min = y, + y_max = y, + biomes = {"Swampland_shore"}, + rotation = "random", + }) +end + diff --git a/mods/MAPGEN/vl_biomes/taiga.lua b/mods/MAPGEN/vl_biomes/taiga.lua new file mode 100644 index 000000000..1a3c359df --- /dev/null +++ b/mods/MAPGEN/vl_biomes/taiga.lua @@ -0,0 +1,106 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") + +-- Taiga +vl_biomes.register_biome({ + name = "Taiga", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 4, + y_max = vl_biomes.overworld_max, + humidity_point = 58, + heat_point = 22, + _mcl_biome_type = "cold", + _mcl_water_temp = "cold", + _mcl_grass_palette_index = 12, + _mcl_foliage_palette_index = 10, + _mcl_water_palette_index = 4, + _mcl_skycolor = "#7DA3FF", + _beach = { + node_top = "mcl_core:sand", + depth_top = 2, + node_filler = "mcl_core:sandstone", + depth_filler = 1, + y_min = 1, + y_max = 3, + _mcl_foliage_palette_index = 1, + }, + _ocean = { + node_top = "mcl_core:gravel", + depth_top = 1, + node_filler = "mcl_core:gravel", + depth_filler = 3, + }, +}) + +-- Small lollipop spruce +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block", "mcl_core:podzol"}, + sidelen = 16, + noise_params = { + offset = 0.004, + scale = 0.0022, + spread = vector.new(250, 250, 250), + seed = 2500, + octaves = 3, + persist = 0.66 + }, + biomes = {"Taiga"}, + y_min = 2, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_spruce_lollipop.mts", + flags = "place_center_x, place_center_z", +}) + +-- Matchstick spruce: Very few leaves, tall trunk +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block", "mcl_core:podzol"}, + sidelen = 80, + noise_params = { + offset = -0.025, + scale = 0.025, + spread = vector.new(250, 250, 250), + seed = 2566, + octaves = 5, + persist = 0.60, + }, + biomes = {"Taiga"}, + y_min = 3, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_spruce_matchstick.mts", + flags = "place_center_x, place_center_z", +}) + +-- Common spruce +vl_biomes.register_spruce_decoration(11000, 0.00150, "mcl_core_spruce_5.mts", {"Taiga"}) +vl_biomes.register_spruce_decoration(2500, 0.00325, "mcl_core_spruce_1.mts", {"Taiga"}) +vl_biomes.register_spruce_decoration(7000, 0.00425, "mcl_core_spruce_3.mts", {"Taiga"}) +vl_biomes.register_spruce_decoration(9000, 0.00325, "mcl_core_spruce_4.mts", {"Taiga"}) + +-- Mushrooms in Taiga +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:podzol"}, + sidelen = 80, + fill_ratio = 0.003, + biomes = {"Taiga"}, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + decoration = "mcl_mushrooms:mushroom_red", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:podzol"}, + sidelen = 80, + fill_ratio = 0.003, + biomes = {"Taiga"}, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + decoration = "mcl_mushrooms:mushroom_brown", +}) + diff --git a/mods/MAPGEN/vl_biomes/taiga_old_pine.lua b/mods/MAPGEN/vl_biomes/taiga_old_pine.lua new file mode 100644 index 000000000..e83f29593 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/taiga_old_pine.lua @@ -0,0 +1,138 @@ +local mod_mcl_structures = minetest.get_modpath("mcl_structures") + +-- Mega Pine Taiga aka Old Growth Pine Taiga +vl_biomes.register_biome({ + name = "MegaTaiga", + node_top = "mcl_core:podzol", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 76, + heat_point = 10, + _mcl_biome_type = "cold", + _mcl_water_temp = "cold", + _mcl_grass_palette_index = 4, + _mcl_foliage_palette_index = 9, + _mcl_water_palette_index = 4, + _mcl_skycolor = "#7CA3FF", + _ocean = { + node_top = "mcl_core:gravel", + depth_top = 1, + node_filler = "mcl_core:gravel", + depth_filler = 3, + }, +}) + +-- Random coarse dirt floor in Mega Taiga +minetest.register_ore({ + ore_type = "sheet", + ore = "mcl_core:coarse_dirt", + wherein = {"mcl_core:podzol", "mcl_core:dirt"}, + clust_scarcity = 1, + clust_num_ores = 12, + clust_size = 10, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + noise_threshold = 0.2, + noise_params = {offset = 0, scale = 15, spread = vector.new(130, 130, 130), seed = 24, octaves = 3, persist = 0.70}, + biomes = {"MegaTaiga"}, +}) +-- Mossy cobblestone boulder (3x3) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:coarse_dirt"}, + sidelen = 80, + noise_params = { + offset = 0.00015, + scale = 0.001, + spread = vector.new(300, 300, 300), + seed = 775703, + octaves = 4, + persist = 0.63, + }, + biomes = {"MegaTaiga"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_structures .. "/schematics/mcl_structures_boulder.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +-- Small mossy cobblestone boulder (2x2) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:coarse_dirt"}, + sidelen = 80, + noise_params = { + offset = 0.001, + scale = 0.001, + spread = vector.new(300, 300, 300), + seed = 775704, + octaves = 4, + persist = 0.63, + }, + biomes = {"MegaTaiga"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_structures .. "/schematics/mcl_structures_boulder_small.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +-- Huge spruce +vl_biomes.register_spruce_decoration(3000, 0.0008, "mcl_core_spruce_huge_up_1.mts", {"MegaTaiga"}) +vl_biomes.register_spruce_decoration(4000, 0.0008, "mcl_core_spruce_huge_up_2.mts", {"MegaTaiga"}) +vl_biomes.register_spruce_decoration(6000, 0.0008, "mcl_core_spruce_huge_up_3.mts", {"MegaTaiga"}) + + +-- Common spruce +vl_biomes.register_spruce_decoration(2500, 0.00325, "mcl_core_spruce_1.mts", {"MegaTaiga"}) +vl_biomes.register_spruce_decoration(7000, 0.00425, "mcl_core_spruce_3.mts", {"MegaTaiga"}) +vl_biomes.register_spruce_decoration(9000, 0.00325, "mcl_core_spruce_4.mts", {"MegaTaiga"}) +vl_biomes.register_spruce_decoration(9500, 0.00500, "mcl_core_spruce_tall.mts", {"MegaTaiga"}) +vl_biomes.register_spruce_decoration(5000, 0.00250, "mcl_core_spruce_2.mts", {"MegaTaiga"}) + +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + priority = 1500, + place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:dirt_with_grass", "mcl_core:coarse_dirt", "group:hardened_clay"}, + sidelen = 16, + noise_params = { + offset = 0.01, + scale = 0.003, + spread = vector.new(100, 100, 100), + seed = 1972, + octaves = 3, + persist = 0.6 + }, + y_min = 4, + y_max = vl_biomes.overworld_max, + biomes = {"MegaTaiga"}, + decoration = "mcl_core:deadbush", + height = 1, +}) +-- Mushrooms in Taiga +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:podzol"}, + sidelen = 80, + fill_ratio = 0.003, + biomes = {"MegaTaiga"}, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + decoration = "mcl_mushrooms:mushroom_red", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:podzol"}, + sidelen = 80, + fill_ratio = 0.003, + biomes = {"MegaTaiga"}, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + decoration = "mcl_mushrooms:mushroom_brown", +}) diff --git a/mods/MAPGEN/vl_biomes/taiga_old_spruce.lua b/mods/MAPGEN/vl_biomes/taiga_old_spruce.lua new file mode 100644 index 000000000..3ff15de61 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/taiga_old_spruce.lua @@ -0,0 +1,123 @@ +local mod_mcl_structures = minetest.get_modpath("mcl_structures") + +-- Mega Spruce Taiga aka Old Growth Spruce Taiga +vl_biomes.register_biome({ + name = "MegaSpruceTaiga", + node_top = "mcl_core:podzol", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 3, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 100, + heat_point = 8, + _mcl_biome_type = "cold", + _mcl_water_temp = "cold", + _mcl_grass_palette_index = 5, + _mcl_foliage_palette_index = 10, + _mcl_water_palette_index = 4, + _mcl_skycolor = "#7DA3FF", + _ocean = { + node_top = "mcl_core:gravel", + depth_top = 1, + node_filler = "mcl_core:gravel", + depth_filler = 3, + }, +}) +-- Mossy cobblestone boulder (3x3) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:coarse_dirt"}, + sidelen = 80, + noise_params = { + offset = 0.00015, + scale = 0.001, + spread = vector.new(300, 300, 300), + seed = 775703, + octaves = 4, + persist = 0.63, + }, + biomes = {"MegaSpruceTaiga"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_structures .. "/schematics/mcl_structures_boulder.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +-- Small mossy cobblestone boulder (2x2) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:coarse_dirt"}, + sidelen = 80, + noise_params = { + offset = 0.001, + scale = 0.001, + spread = vector.new(300, 300, 300), + seed = 775704, + octaves = 4, + persist = 0.63, + }, + biomes = {"MegaSpruceTaiga"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_structures .. "/schematics/mcl_structures_boulder_small.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +-- Huge spruce +vl_biomes.register_spruce_decoration(3000, 0.0030, "mcl_core_spruce_huge_1.mts", {"MegaSpruceTaiga"}) +vl_biomes.register_spruce_decoration(4000, 0.0036, "mcl_core_spruce_huge_2.mts", {"MegaSpruceTaiga"}) +vl_biomes.register_spruce_decoration(6000, 0.0036, "mcl_core_spruce_huge_3.mts", {"MegaSpruceTaiga"}) +vl_biomes.register_spruce_decoration(6600, 0.0036, "mcl_core_spruce_huge_4.mts", {"MegaSpruceTaiga"}) + +-- Common spruce +vl_biomes.register_spruce_decoration(2500, 0.00325, "mcl_core_spruce_1.mts", {"MegaSpruceTaiga"}) +vl_biomes.register_spruce_decoration(7000, 0.00425, "mcl_core_spruce_3.mts", {"MegaSpruceTaiga"}) +vl_biomes.register_spruce_decoration(5000, 0.00250, "mcl_core_spruce_2.mts", {"MegaSpruceTaiga"}) + +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + priority = 1500, + place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:dirt_with_grass", "mcl_core:coarse_dirt", "group:hardened_clay"}, + sidelen = 16, + noise_params = { + offset = 0.01, + scale = 0.003, + spread = vector.new(100, 100, 100), + seed = 1972, + octaves = 3, + persist = 0.6 + }, + y_min = 4, + y_max = vl_biomes.overworld_max, + biomes = {"MegaSpruceTaiga"}, + decoration = "mcl_core:deadbush", + height = 1, +}) + +-- Mushrooms in Taiga +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:podzol"}, + sidelen = 80, + fill_ratio = 0.003, + biomes = {"MegaSpruceTaiga"}, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + decoration = "mcl_mushrooms:mushroom_red", +}) +mcl_mapgen_core.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:podzol"}, + sidelen = 80, + fill_ratio = 0.003, + biomes = {"MegaSpruceTaiga"}, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + decoration = "mcl_mushrooms:mushroom_brown", +}) + diff --git a/mods/MAPGEN/vl_biomes/windswepthills-ores.lua b/mods/MAPGEN/vl_biomes/windswepthills-ores.lua new file mode 100644 index 000000000..ff2ebdee1 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/windswepthills-ores.lua @@ -0,0 +1,41 @@ +local mg_name = minetest.get_mapgen_setting("mg_name") + +-- Note: this currently has to go after all the extremehills (windswept hills) biomes in order to be able to register. +-- Alternatively, we could put a copy into each... +local stonelike = {"mcl_core:stone", "mcl_core:diorite", "mcl_core:andesite", "mcl_core:granite"} + +-- Emeralds +minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_core:stone_with_emerald", + wherein = stonelike, + clust_scarcity = 16384, + clust_num_ores = 1, + clust_size = 1, + y_min = mcl_worlds.layer_to_y(4), + y_max = mcl_worlds.layer_to_y(32), + biomes = { + "ExtremeHills", "ExtremeHills_beach", "ExtremeHills_ocean", "ExtremeHills_deep_ocean", "ExtremeHills_underground", + "ExtremeHills+", "ExtremeHills+_ocean", "ExtremeHills+_deep_ocean", "ExtremeHills+_underground", + "ExtremeHillsM", "ExtremeHillsM_ocean", "ExtremeHillsM_deep_ocean", "ExtremeHillsM_underground", + }, +}) + +-- Rarely replace stone with stone monster eggs. +-- In v6 this can happen anywhere, in other mapgens only in Extreme Hills. +local monster_egg_scarcity = (mg_name == "v6" and 28 or 26)^3 +minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_monster_eggs:monster_egg_stone", + wherein = "mcl_core:stone", + clust_scarcity = monster_egg_scarcity, + clust_num_ores = 3, + clust_size = 2, + y_min = vl_biomes.overworld_min, + y_max = mcl_worlds.layer_to_y(61), + biomes = { + "ExtremeHills", "ExtremeHills_beach", "ExtremeHills_ocean", "ExtremeHills_deep_ocean", "ExtremeHills_underground", + "ExtremeHills+", "ExtremeHills+_ocean", "ExtremeHills+_deep_ocean", "ExtremeHills+_underground", + "ExtremeHillsM", "ExtremeHillsM_ocean", "ExtremeHillsM_deep_ocean", "ExtremeHillsM_underground", + }, +}) diff --git a/mods/MAPGEN/vl_biomes/windswepthills.lua b/mods/MAPGEN/vl_biomes/windswepthills.lua new file mode 100644 index 000000000..3f47d9369 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/windswepthills.lua @@ -0,0 +1,89 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") + +-- Extreme Hills aka Windswept Hills +-- Sparsely populated grasslands with little tallgras and trees. +vl_biomes.register_biome({ + name = "ExtremeHills", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 4, + node_riverbed = "mcl_core:sand", + depth_riverbed = 4, + y_min = 4, + y_max = vl_biomes.overworld_max, + humidity_point = 10, + heat_point = 45, + _mcl_biome_type = "cold", + _mcl_water_temp = "cold", + _mcl_grass_palette_index = 6, + _mcl_foliage_palette_index = 11, + _mcl_water_palette_index = 4, + _mcl_skycolor = "#7DA2FF", + _beach = { + node_top = "mcl_core:sand", + depth_top = 2, + node_filler = "mcl_core:sandstone", + depth_filler = 3, + y_min = -4, + y_max = 3, + _mcl_foliage_palette_index = 1, + }, + _ocean = { + node_top = "mcl_core:gravel", + depth_top = 1, + node_filler = "mcl_core:gravel", + depth_filler = 4, + y_max = -5, + vertical_blend = 1, + }, +}) + +-- Large oaks +for i = 1, 4 do + mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block", "mcl_core:dirt", }, + sidelen = 80, + noise_params = { + offset = -0.0007, + scale = 0.001, + spread = vector.new(250, 250, 250), + seed = 3, + octaves = 3, + persist = 0.6 + }, + biomes = {"ExtremeHills"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_large_" .. i .. ".mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) +end +-- Small “classic” oak (many biomes) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block", "mcl_core:dirt", }, + sidelen = 16, + noise_params = { + offset = 0.0, + scale = 0.002, + spread = vector.new(250, 250, 250), + seed = 2, + octaves = 3, + persist = 0.7 + }, + biomes = {"ExtremeHills"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +-- Spruce +vl_biomes.register_spruce_decoration(11000, 0.000025, "mcl_core_spruce_5.mts", {"ExtremeHills"}) +vl_biomes.register_spruce_decoration(2500, 0.00005, "mcl_core_spruce_1.mts", {"ExtremeHills"}) +vl_biomes.register_spruce_decoration(7000, 0.00005, "mcl_core_spruce_3.mts", {"ExtremeHills"}) +vl_biomes.register_spruce_decoration(9000, 0.00005, "mcl_core_spruce_4.mts", {"ExtremeHills"}) diff --git a/mods/MAPGEN/vl_biomes/windswepthills_forest.lua b/mods/MAPGEN/vl_biomes/windswepthills_forest.lua new file mode 100644 index 000000000..aaab09662 --- /dev/null +++ b/mods/MAPGEN/vl_biomes/windswepthills_forest.lua @@ -0,0 +1,136 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") + +-- Extreme Hills+ aka Windswept Forest +-- This biome is near-identical to Extreme Hills on the surface but has snow-covered mountains with spruce/oak +-- forests above a certain height. +vl_biomes.register_biome({ + name = "ExtremeHills+", + node_top = "mcl_core:dirt_with_grass", + depth_top = 1, + node_filler = "mcl_core:dirt", + depth_filler = 4, + node_riverbed = "mcl_core:sand", + depth_riverbed = 4, + y_min = 1, + y_max = 41, + humidity_point = 24, + heat_point = 25, + vertical_blend = 6, + _mcl_biome_type = "cold", + _mcl_water_temp = "cold", + _mcl_grass_palette_index = 8, + _mcl_foliage_palette_index = 11, + _mcl_water_palette_index = 4, + _mcl_skycolor = "#7DA2FF", + _snowtop = { + node_dust = "mcl_core:snow", + node_top = "mcl_core:dirt_with_grass_snow", + depth_top = 1, + node_river_water = "mcl_core:ice", + y_min = 42, + y_max = vl_biomes.overworld_max, + }, + _ocean = { + node_top = "mcl_core:gravel", + depth_top = 1, + node_filler = "mcl_core:gravel", + depth_filler = 4, + }, +}) + +-- Large oaks +for i = 1, 4 do + mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block", "mcl_core:dirt", }, + sidelen = 80, + noise_params = { + offset = -0.0007, + scale = 0.001, + spread = vector.new(250, 250, 250), + seed = 3, + octaves = 3, + persist = 0.6 + }, + biomes = {"ExtremeHills+", "ExtremeHills+_snowtop"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_large_" .. i .. ".mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) +end + +-- Small “classic” oak (many biomes) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block", "mcl_core:dirt", }, + sidelen = 16, + noise_params = { + offset = 0.0, + scale = 0.002, + spread = vector.new(250, 250, 250), + seed = 2, + octaves = 3, + persist = 0.7 + }, + biomes = {"ExtremeHills+", "ExtremeHills+_snowtop"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block", "mcl_core:dirt"}, + sidelen = 16, + noise_params = { + offset = 0.006, + scale = 0.002, + spread = vector.new(250, 250, 250), + seed = 2, + octaves = 3, + persist = 0.7 + }, + biomes = {"ExtremeHills+", "ExtremeHills+_snowtop"}, + y_min = 50, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +-- Spruce +vl_biomes.register_spruce_decoration(11000, 0.001, "mcl_core_spruce_5.mts", {"ExtremeHills+", "ExtremeHills+_snowtop"}, 50) +vl_biomes.register_spruce_decoration(2500, 0.002, "mcl_core_spruce_1.mts", {"ExtremeHills+", "ExtremeHills+_snowtop"}, 50) +vl_biomes.register_spruce_decoration(7000, 0.003, "mcl_core_spruce_3.mts", {"ExtremeHills+", "ExtremeHills+_snowtop"}, 50) +vl_biomes.register_spruce_decoration(9000, 0.002, "mcl_core_spruce_4.mts", {"ExtremeHills+", "ExtremeHills+_snowtop"}, 50) + +-- Some tallgrass +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + priority = 1500, + place_on = {"group:grass_block"}, + sidelen = 16, + noise_params = { + offset = 0.0, + scale = 0.09, + spread = vector.new(15, 15, 15), + seed = 420, + octaves = 3, + persist = 0.6, + }, + biomes = {"ExtremeHills+_snowtop"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = { + size = vector.new(1, 2, 1), + data = { + {name = "mcl_core:dirt_with_grass", force_place = true, }, + {name = "mcl_flowers:tallgrass", param2 = 8}, + }, + }, +}) + diff --git a/mods/MAPGEN/vl_biomes/windswepthills_gravelly.lua b/mods/MAPGEN/vl_biomes/windswepthills_gravelly.lua new file mode 100644 index 000000000..02f252a9b --- /dev/null +++ b/mods/MAPGEN/vl_biomes/windswepthills_gravelly.lua @@ -0,0 +1,93 @@ +local mod_mcl_core = minetest.get_modpath("mcl_core") + +-- Extreme Hills M aka Windswept Gravelly Hills +-- Just gravel. +vl_biomes.register_biome({ + name = "ExtremeHillsM", + node_top = "mcl_core:gravel", + depth_top = 1, + node_filler = "mcl_core:gravel", + depth_filler = 3, + node_riverbed = "mcl_core:gravel", + depth_riverbed = 3, + y_min = 1, + y_max = vl_biomes.overworld_max, + humidity_point = 0, + heat_point = 25, + _mcl_biome_type = "cold", + _mcl_water_temp = "cold", + _mcl_grass_palette_index = 7, + _mcl_foliage_palette_index = 11, + _mcl_water_palette_index = 4, + _mcl_skycolor = "#7DA2FF", + _ocean = { + node_riverbed = "mcl_core:sand", + depth_riverbed = 3, + }, +}) + +-- Small dirt patches in Extreme Hills M +minetest.register_ore({ + ore_type = "blob", + -- TODO: Should be grass block. But generating this as ore means gras blocks will spawn undeground. :-( + ore = "mcl_core:dirt", + wherein = {"mcl_core:gravel"}, + clust_scarcity = 5000, + clust_num_ores = 12, + clust_size = 4, + y_min = vl_biomes.overworld_min, + y_max = vl_biomes.overworld_max, + noise_threshold = 0.2, + noise_params = {offset = 0, scale = 5, spread = vector.new(250, 250, 250), seed = 64, octaves = 3, persist = 0.60}, + biomes = {"ExtremeHillsM"}, +}) + +-- Large oaks +for i = 1, 4 do + mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block", "mcl_core:dirt", }, + sidelen = 80, + noise_params = { + offset = -0.0007, + scale = 0.001, + spread = vector.new(250, 250, 250), + seed = 3, + octaves = 3, + persist = 0.6 + }, + biomes = {"ExtremeHillsM"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_large_" .. i .. ".mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) +end +-- Small “classic” oak (many biomes) +mcl_mapgen_core.register_decoration({ + deco_type = "schematic", + place_on = {"group:grass_block", "mcl_core:dirt", }, + sidelen = 16, + noise_params = { + offset = 0.0, + scale = 0.002, + spread = vector.new(250, 250, 250), + seed = 2, + octaves = 3, + persist = 0.7 + }, + biomes = {"ExtremeHillsM"}, + y_min = 1, + y_max = vl_biomes.overworld_max, + schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts", + flags = "place_center_x, place_center_z", + rotation = "random", +}) + +-- Spruce +vl_biomes.register_spruce_decoration(11000, 0.000025, "mcl_core_spruce_5.mts", {"ExtremeHillsM"}) +vl_biomes.register_spruce_decoration(2500, 0.00005, "mcl_core_spruce_1.mts", {"ExtremeHillsM"}) +vl_biomes.register_spruce_decoration(7000, 0.00005, "mcl_core_spruce_3.mts", {"ExtremeHillsM"}) +vl_biomes.register_spruce_decoration(9000, 0.00005, "mcl_core_spruce_4.mts", {"ExtremeHillsM"}) +