diff --git a/.gitmodules b/.gitmodules index 5f50a61e..e3b89fa5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "images"] path = .wiki/images - url = git@github.com:PolyhedralDev/TerraOverworldConfigImages.git + url = https://github.com/PolyhedralDev/TerraOverworldConfigImages.git diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fa59c31..54b24f9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,13 +41,15 @@ generate in an area where it previously did not (resulting in a chunk border). ## [Unreleased] ### Added - +- Added cold steppe. +- Added the spawn island, a flattened landmass at 0,0 that guarantees the world spawn is on land. ### Changed - +- Reworked terrain to use a global heightmap. +- Reworked biome distribution to be based on the [Koppen Climate Classification](https://en.wikipedia.org/wiki/K%C3%B6ppen_climate_classification) ### Removed - +- Removed elevation biome variants, as biomes now use a global height map for terrain. ### Fixed diff --git a/README.md b/README.md index 482546cb..b849d469 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ specific to a different domain of configuration: - `biomes` Where all biome configs are defined. -- `biome-providers` +- `biome-distribution` Contains configuration files related *where* biomes generate. - `structures` @@ -51,7 +51,7 @@ This pack comes with several biome distribution presets, which can be chosen within the [`pack.yml`](./pack.yml) file. If none of these presets do exactly what you want, you can further modify biome distribution presets with alternate sources and stages. Check out the -[`biome-providers/presets/default.yml`](./biome-providers/presets/default.yml) +[`biome-distribution/presets/default.yml`](./biome-distribution/presets/default.yml) config for these alternative sources and stages. ### Where can I learn more about configuration? diff --git a/biome-distribution/README.md b/biome-distribution/README.md new file mode 100644 index 00000000..173e5308 --- /dev/null +++ b/biome-distribution/README.md @@ -0,0 +1,22 @@ +# Biome Distribution + +This directory contains configuration files related to **biome distribution**. +For individual biome configuration, checkout the `biomes` directory instead. + +This directory is organized into 3 subdirectories: + +## Presets +A collection of preset biome provider configurations. A biome provider is simply +something that tells Terra how to distribute biomes. The provider in use is +determined under the `biomes` parameter in the pack manifest (`pack.yml`). (Only +one can be selected at a time.) + +## Stages +Contains various mutation stages that are applied to pipeline biome providers. +These do things such as add different climate zones, add rivers, add volcanoes, +etc. Similarly to sources, the ordering of stages is determined by the provider +preset. + +## Extrusions +Contains extrusion stages that relate to 3D biome distribution. This is primarily +for handling the placement of cave biomes. diff --git a/biome-distribution/extrusions/add_cave_biomes.yml b/biome-distribution/extrusions/add_cave_biomes.yml new file mode 100644 index 00000000..204e4527 --- /dev/null +++ b/biome-distribution/extrusions/add_cave_biomes.yml @@ -0,0 +1,43 @@ +extrusions: + - type: REPLACE + from: LAND_CAVES + sampler: + type: CELLULAR + return: CellValue + salt: 1252 + frequency: 1 / 200 / ${customization.yml:cave-biome-scale} / ${customization.yml:global-scale} + to: + - SELF: 6 + - LUSH_CAVES: 1 + - DRIPSTONE_CAVES: 1 + range: + min: $meta.yml:deepslate-bottom + max: ${meta.yml:ocean-level} - 13 + + - type: REPLACE + from: ICE_CAVES + sampler: + type: CELLULAR + return: CellValue + salt: 1252 + frequency: 1 / 200 / ${customization.yml:cave-biome-scale} / ${customization.yml:global-scale} + to: + - SELF: 3 + - ICE_CAVES: 7 + range: + min: $meta.yml:deepslate-bottom + max: ${meta.yml:ocean-level} - 13 + + - type: REPLACE + from: ANCIENT_CAVES + sampler: + type: CELLULAR + return: CellValue + salt: 6457 + frequency: 1 / 200 / ${customization.yml:cave-biome-scale} / ${customization.yml:global-scale} + to: + - SELF: 3 + - ANCIENT_CAVES: 1 + range: + min: $meta.yml:bottom-y + max: $meta.yml:deepslate-top \ No newline at end of file diff --git a/biome-providers/extrusions/add_deep_dark.yml b/biome-distribution/extrusions/add_deep_dark.yml similarity index 50% rename from biome-providers/extrusions/add_deep_dark.yml rename to biome-distribution/extrusions/add_deep_dark.yml index 08d9aa5d..a31109d1 100644 --- a/biome-providers/extrusions/add_deep_dark.yml +++ b/biome-distribution/extrusions/add_deep_dark.yml @@ -4,10 +4,10 @@ extrusions: sampler: type: OPEN_SIMPLEX_2 salt: 9238 - frequency: 0.2 / ${meta.yml:biome-distribution.variation-scale} / ${meta.yml:biome-distribution.global-scale} + frequency: 1 / 40 / ${customization.yml:variation-scale} / ${customization.yml:global-scale} to: - SELF: 4 - DEEP_DARK: 1 range: - min: -64 - max: 0 \ No newline at end of file + min: $meta.yml:bottom-y + max: $meta.yml:deepslate-top \ No newline at end of file diff --git a/biome-distribution/presets/default.yml b/biome-distribution/presets/default.yml new file mode 100644 index 00000000..80d461c3 --- /dev/null +++ b/biome-distribution/presets/default.yml @@ -0,0 +1,58 @@ +biomes: + type: EXTRUSION + extrusions: + - << biome-distribution/extrusions/add_cave_biomes.yml:extrusions + - << biome-distribution/extrusions/add_deep_dark.yml:extrusions + provider: + type: PIPELINE + resolution: 4 + blend: + amplitude: 2 + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.1 + pipeline: + source: + type: SAMPLER + sampler: + type: EXPRESSION + expression: continents(x, z) + biomes: + ocean: 1 + land: 1 + stages: + - << biome-distribution/stages/add_spots.yml:stages + - << biome-distribution/stages/add_coast.yml:stages + - << biome-distribution/stages/climate/temperature.yml:stages + - << biome-distribution/stages/climate/precipitation.yml:stages + - << biome-distribution/stages/climate/elevation.yml:stages + - << biome-distribution/stages/climate/color.yml:stages + - << biome-distribution/stages/add_travertine_terraces.yml:stages + - << biome-distribution/stages/set_biomes_in_climates.yml:stages + + - type: REPLACE + from: todo + to: PLAINS + sampler: + type: CONSTANT + + - type: FRACTAL_EXPAND + sampler: + type: WHITE_NOISE + - type: FRACTAL_EXPAND + sampler: + type: WHITE_NOISE + - type: FRACTAL_EXPAND + sampler: + type: WHITE_NOISE + - type: FRACTAL_EXPAND + sampler: + type: WHITE_NOISE + - type: SMOOTH + sampler: + type: WHITE_NOISE + - type: SMOOTH + sampler: + type: WHITE_NOISE + + - << biome-distribution/stages/add_rivers.yml:stages \ No newline at end of file diff --git a/biome-distribution/presets/single.yml b/biome-distribution/presets/single.yml new file mode 100644 index 00000000..baad344f --- /dev/null +++ b/biome-distribution/presets/single.yml @@ -0,0 +1,21 @@ +biomes: + type: EXTRUSION + extrusions: + - << biome-distribution/extrusions/add_cave_biomes.yml:extrusions + - << biome-distribution/extrusions/add_deep_dark.yml:extrusions + provider: + type: PIPELINE + resolution: 4 + blend: + amplitude: 2 + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.1 + pipeline: + source: + type: SAMPLER + biomes: $pack.yml:preset-single-biome + sampler: + type: CONSTANT + stages: + - << biome-distribution/stages/add_rivers.yml:stages diff --git a/biome-distribution/presets/single_debug.yml b/biome-distribution/presets/single_debug.yml new file mode 100644 index 00000000..52e03061 --- /dev/null +++ b/biome-distribution/presets/single_debug.yml @@ -0,0 +1,3 @@ +biomes: + type: SINGLE + biome: $pack.yml:preset-single-debug-biome \ No newline at end of file diff --git a/biome-distribution/stages/add_coast.yml b/biome-distribution/stages/add_coast.yml new file mode 100644 index 00000000..368943a5 --- /dev/null +++ b/biome-distribution/stages/add_coast.yml @@ -0,0 +1,24 @@ +stages: + - type: REPLACE + from: ocean + sampler: + type: EXPRESSION + expression: continentBorder(x, z) + to: + SELF: 1 + coast: 1 + - type: BORDER + sampler: + type: CONSTANT + from: land + replace: ocean + to: coast + - type: REPLACE + from: coast + to: + land: 1 + SELF: 1 + sampler: + type: OPEN_SIMPLEX_2 + frequency: 1 / 300 / ${customization.yml:global-scale} + salt: 1023 \ No newline at end of file diff --git a/biome-providers/stages/add_rivers.yml b/biome-distribution/stages/add_rivers.yml similarity index 51% rename from biome-providers/stages/add_rivers.yml rename to biome-distribution/stages/add_rivers.yml index 543b8709..e7f5cb50 100644 --- a/biome-providers/stages/add_rivers.yml +++ b/biome-distribution/stages/add_rivers.yml @@ -1,8 +1,27 @@ -# The sampler that controls how rivers generate, you can find various presets -# in the biome-providers/stages/river-samplers/ folder. -riverSampler: &riverSampler $biome-providers/stages/river-samplers/default.yml:sampler -# To pick the preset, simply change the file reference above ^ -# You can further edit and customize the parameters of a river sampler preset within its own file. +riverSampler: &riverSampler + type: EXPRESSION + expression: segment(riverBiomeMap(x, z), riverValue, borderValue, (elevation(x, z) < lowlandsThreshold) && (borderMask(x, z) < borderMaskThreshold)) + variables: + riverValue: $math/samplers/rivers.yml:variables.riverValue + borderValue: $math/samplers/rivers.yml:variables.borderValue + borderMaskThreshold: 0.2 + lowlandsThreshold: $customization.yml:elevation-lowlands-threshold + functions: + segment: + arguments: + - river + - riverValue + - borderValue + - borderPredicate + expression: if(river <= riverValue, 1, if((river <= borderValue) && borderPredicate, -0.4, -1)) + samplers: + borderMask: + dimensions: 2 + type: PROBABILITY + sampler: + type: OPEN_SIMPLEX_2 + salt: 4812 + frequency: 0.003 # Tags are used by biomes to determine the kind of river to use, except for biomes with # their own specific river biome. These tags are formatted by the type of river, and optionally @@ -27,9 +46,9 @@ stages: XERIC_MOUNTAINS: - SELF: 1 - XERIC_MOUNTAINS_RIVER: 1 - BADLANDS_MOUNTAINS: + BADLANDS: - SELF: 1 - - BADLANDS_MOUNTAINS_RIVER: 1 + - BADLANDS_RIVER: 1 DRY_TEMPERATE_MOUNTAINS: - SELF: 1 - DRY_TEMPERATE_MOUNTAINS_RIVER: 1 @@ -39,12 +58,26 @@ stages: SNOWY_MOUNTAINS: - SELF: 1 - SNOWY_MOUNTAINS_RIVER: 1 - SNOWY_TERRACED_MOUNTAINS: + SNOWY_TUFF_MOUNTAINS: - SELF: 1 - - SNOWY_TERRACED_MOUNTAINS_RIVER: 1 - SNOWY_ERODED_TERRACED_MOUNTAINS: + - SNOWY_TUFF_MOUNTAINS_RIVER: 1 + SNOWY_BLACKSTONE_MOUNTAINS: - SELF: 1 - - SNOWY_ERODED_TERRACED_MOUNTAINS_RIVER: 1 + - SNOWY_BLACKSTONE_MOUNTAINS_RIVER: 1 + sampler: *riverSampler + # Desert rivers + - type: REPLACE + from: USE_DESERT_RIVER + to: + - SELF: 1 + - DESERT_RIVER: 1 + sampler: *riverSampler + # Red desert rivers + - type: REPLACE + from: USE_RED_DESERT_RIVER + to: + - SELF: 1 + - RED_DESERT_RIVER: 1 sampler: *riverSampler # Regular rivers with temperate marshes - type: REPLACE @@ -62,13 +95,34 @@ stages: - SWAMP: 1 - RIVER: 2 sampler: *riverSampler - # Regular coastal rivers with mangrove swamps + # Warm rivers + - type: REPLACE + from: USE_LUKEWARM_RIVER + to: + - SELF: 1 + - LUKEWARM_RIVER: 1 + sampler: *riverSampler + # Tropical rivers + - type: REPLACE + from: USE_TROPICAL_RIVER + to: + - SELF: 1 + - TROPICAL_RIVER: 1 + sampler: *riverSampler + # Tropical coastal rivers with mangrove swamps - type: REPLACE from: USE_RIVER_COASTAL_TROPICAL_SWAMP to: - SELF: 1 - MANGROVE_SWAMP: 1 - - RIVER: 2 + - TROPICAL_RIVER: 2 + sampler: *riverSampler + # Cold rivers + - type: REPLACE + from: USE_COLD_RIVER + to: + - SELF: 1 + - COLD_RIVER: 1 sampler: *riverSampler # Frozen Rivers - type: REPLACE diff --git a/biome-distribution/stages/add_spots.yml b/biome-distribution/stages/add_spots.yml new file mode 100644 index 00000000..86a9d158 --- /dev/null +++ b/biome-distribution/stages/add_spots.yml @@ -0,0 +1,46 @@ +stages: + - type: REPLACE + from: ALL + to: + - SELF: 1 + - spot: 1 + sampler: + type: EXPRESSION + expression: if(spotDistance(x, z) < spotRadius(x, z) + biomeBorder, 1, -1) + variables: $math/samplers/spots.yml:variables + + - type: REPLACE + from: spot + to: + - volcano: 1 + - mesa: 1 + sampler: + type: EXPRESSION + expression: spotSizePercent(x, z)*2-1 + + - type: REPLACE + from: volcano + to: + - extinct-volcano: 5 + - active-volcano: 1 + sampler: + type: EXPRESSION + expression: volcanoActivity(x, z) + + - type: REPLACE + from: extinct-volcano + to: + - extinct-volcano: 4 + # - crater-lake: 1 # Crater lakes are disabled until a good method of adding fluid is implemented + sampler: + type: EXPRESSION + expression: spotEdgeRadiusPercent(x, z)*2-1 + + - type: REPLACE + from: active-volcano + to: + - ERUPTED_VOLCANO: 4 + - PRISMATIC_SPRING: 1 + sampler: + type: EXPRESSION + expression: spotEdgeRadiusPercent(x, z)*2-1 \ No newline at end of file diff --git a/biome-distribution/stages/add_travertine_terraces.yml b/biome-distribution/stages/add_travertine_terraces.yml new file mode 100644 index 00000000..b6348536 --- /dev/null +++ b/biome-distribution/stages/add_travertine_terraces.yml @@ -0,0 +1,16 @@ +stages: + - type: REPLACE_LIST + sampler: + type: CELLULAR + return: CellValue + frequency: 1 / 100 / ${customization.yml:variation-scale} / ${customization.yml:global-scale} + default-from: tropical-rainforest + default-to: &travertineList + - SELF: 10 + - TRAVERTINE_TERRACES: 1 + to: + tropical-rainforest-highlands: *travertineList + tropical-monsoon: *travertineList + tropical-monsoon-highlands: *travertineList + tropical-savanna-wet: *travertineList + tropical-savanna-wet-highlands: *travertineList diff --git a/biome-distribution/stages/climate/color.yml b/biome-distribution/stages/climate/color.yml new file mode 100644 index 00000000..f014ea71 --- /dev/null +++ b/biome-distribution/stages/climate/color.yml @@ -0,0 +1,33 @@ +stages: + - type: REPLACE_LIST + sampler: + type: OPEN_SIMPLEX_2 + salt: 6893 + frequency: 1 / 1000 / ${customization.yml:variation-scale} / ${customization.yml:global-scale} + default-from: hot-desert-flat + default-to: + - hot-desert-flat-red: &red 3 + - hot-desert-flat-orange: &orange 1 + - hot-desert-flat-white: &white 3 + to: + hot-desert: + - hot-desert-red: *red + - hot-desert-orange: *orange + - hot-desert-white: *white + hot-desert-highlands: + - hot-desert-highlands-red: *red + - hot-desert-highlands-orange: *orange + - hot-desert-highlands-white: *white + + hot-steppe-flat: + - hot-steppe-flat-red: *red + - hot-steppe-flat-orange: *orange + - hot-steppe-flat-white: *white + hot-steppe: + - hot-steppe-red: *red + - hot-steppe-orange: *orange + - hot-steppe-white: *white + hot-steppe-highlands: + - hot-steppe-highlands-red: *red + - hot-steppe-highlands-orange: *orange + - hot-steppe-highlands-white: *white diff --git a/biome-distribution/stages/climate/elevation.yml b/biome-distribution/stages/climate/elevation.yml new file mode 100644 index 00000000..c30d8c45 --- /dev/null +++ b/biome-distribution/stages/climate/elevation.yml @@ -0,0 +1,233 @@ +stages: + - type: REPLACE_LIST + sampler: + type: EXPRESSION + expression: segment(oceanElevation(x, z), shallowThreshold, deepThreshold) + variables: + shallowThreshold: $customization.yml:ocean-shallow-threshold + deepThreshold: $customization.yml:ocean-deep-threshold + functions: + segment: + arguments: + - elevation + - shallow + - deep + expression: if(elevation > shallow, 1, if(elevation < deep, -1, 0)) + + # Weighted lists below are interpreted as: + # - : 1 + # - : 1 + # - : 1 + + default-from: polar-ocean + default-to: + - polar-deep-ocean: 1 + - polar-ocean: 1 + - polar-shallow-ocean: 1 + to: + boreal-ocean: + - boreal-deep-ocean: 1 + - boreal-ocean: 1 + - boreal-shallow-ocean: 1 + temperate-ocean: + - temperate-deep-ocean: 1 + - temperate-ocean: 1 + - temperate-shallow-ocean: 1 + hot-ocean: + - hot-deep-ocean: 1 + - hot-ocean: 1 + - hot-shallow-ocean: 1 + + - type: REPLACE_LIST + sampler: + type: EXPRESSION + expression: segment(elevation(x, z), flatness(x, z), highlandsThreshold, lowlandsThreshold) + variables: + highlandsThreshold: $customization.yml:elevation-highlands-threshold + lowlandsThreshold: $customization.yml:elevation-lowlands-threshold + functions: + segment: + arguments: + - elevation + - flatness + - highlands + - lowlands + expression: if(elevation > highlands, 0.75, if(elevation > lowlands, 0.25, if(flatness < 1, -0.25, -0.75))) + + # Weighted lists below are interpreted as: + # - : 1 + # - : 1 + # - : 1 + # - : 1 + + default-from: ice-cap + default-to: + - ice-cap-flat: 1 + - ice-cap: 1 + - ice-cap: 1 + - ice-cap-highlands: 1 + to: + tundra: + - tundra-flat: 1 + - tundra: 1 + - tundra: 1 + - tundra-highlands: 1 + polar-coast: + - polar-coast-flat: 1 + - polar-coast-flat: 1 + - polar-coast: 1 + - polar-coast-highlands: 1 + polar-shallow-ocean: + - polar-shallow-ocean: 1 + - polar-shallow-ocean: 1 + - polar-shallow-ocean-midlands: 1 + - polar-shallow-ocean-midlands: 1 + + boreal-hot: + - boreal-hot-flat: 1 + - boreal-hot: 1 + - boreal-hot: 1 + - boreal-hot-highlands: 1 + boreal-warm: + - boreal-warm-flat: 1 + - boreal-warm: 1 + - boreal-warm: 1 + - boreal-warm-highlands: 1 + boreal-cold: + - boreal-cold-flat: 1 + - boreal-cold: 1 + - boreal-cold: 1 + - boreal-cold-highlands: 1 + boreal-snowy: + - boreal-snowy-flat: 1 + - boreal-snowy: 1 + - boreal-snowy: 1 + - boreal-snowy-highlands: 1 + boreal-hot-dry: + - boreal-hot-dry-flat: 1 + - boreal-hot-dry: 1 + - boreal-hot-dry: 1 + - boreal-hot-dry-highlands: 1 + boreal-warm-dry: + - boreal-warm-dry-flat: 1 + - boreal-warm-dry: 1 + - boreal-warm-dry: 1 + - boreal-warm-dry-highlands: 1 + boreal-cold-dry: + - boreal-cold-dry-flat: 1 + - boreal-cold-dry: 1 + - boreal-cold-dry: 1 + - boreal-cold-dry-highlands: 1 + boreal-snowy-dry: + - boreal-snowy-dry-flat: 1 + - boreal-snowy-dry: 1 + - boreal-snowy-dry: 1 + - boreal-snowy-dry-highlands: 1 + boreal-coast: + - boreal-coast-flat: 1 + - boreal-coast-flat: 1 + - boreal-coast: 1 + - boreal-coast-highlands: 1 + boreal-shallow-ocean: + - boreal-shallow-ocean: 1 + - boreal-shallow-ocean: 1 + - boreal-shallow-ocean-midlands: 1 + - boreal-shallow-ocean-midlands: 1 + + temperate-hot-dry: + - temperate-hot-dry-flat: 1 + - temperate-hot-dry: 1 + - temperate-hot-dry: 1 + - temperate-hot-dry-highlands: 1 + temperate-warm-dry: + - temperate-warm-dry-flat: 1 + - temperate-warm-dry: 1 + - temperate-warm-dry: 1 + - temperate-warm-dry-highlands: 1 + temperate-hot: + - temperate-hot-flat: 1 + - temperate-hot: 1 + - temperate-hot: 1 + - temperate-hot-highlands: 1 + temperate-warm: + - temperate-warm-flat: 1 + - temperate-warm: 1 + - temperate-warm: 1 + - temperate-warm-highlands: 1 + temperate-cold: + - temperate-cold-flat: 1 + - temperate-cold: 1 + - temperate-cold: 1 + - temperate-cold-highlands: 1 + temperate-coast: + - temperate-coast-flat: 1 + - temperate-coast-flat: 1 + - temperate-coast: 1 + - temperate-coast-highlands: 1 + temperate-shallow-ocean: + - temperate-shallow-ocean: 1 + - temperate-shallow-ocean: 1 + - temperate-shallow-ocean-midlands: 1 + - temperate-shallow-ocean-midlands: 1 + + hot-desert: + - hot-desert-flat: 1 + - hot-desert: 1 + - hot-desert: 1 + - hot-desert-highlands: 1 + hot-steppe: + - hot-steppe-flat: 1 + - hot-steppe: 1 + - hot-steppe: 1 + - hot-steppe-highlands: 1 + cold-desert: + - cold-desert-flat: 1 + - cold-desert: 1 + - cold-desert: 1 + - cold-desert-highlands: 1 + temperate-steppe: + - temperate-steppe-flat: 1 + - temperate-steppe: 1 + - temperate-steppe: 1 + - temperate-steppe-highlands: 1 + cold-steppe: + - cold-steppe-flat: 1 + - cold-steppe: 1 + - cold-steppe: 1 + - cold-steppe-highlands: 1 + arid-coast: + - arid-coast-flat: 1 + - arid-coast-flat: 1 + - arid-coast: 1 + - arid-coast-highlands: 1 + + tropical-rainforest: + - tropical-rainforest-flat: 1 + - tropical-rainforest: 1 + - tropical-rainforest: 1 + - tropical-rainforest-highlands: 1 + tropical-monsoon: + - tropical-monsoon-flat: 1 + - tropical-monsoon: 1 + - tropical-monsoon: 1 + - tropical-monsoon-highlands: 1 + tropical-savanna-dry: + - tropical-savanna-dry-flat: 1 + - tropical-savanna-dry: 1 + - tropical-savanna-dry: 1 + - tropical-savanna-dry-highlands: 1 + tropical-savanna-wet: + - tropical-savanna-wet-flat: 1 + - tropical-savanna-wet: 1 + - tropical-savanna-wet: 1 + - tropical-savanna-wet-highlands: 1 + tropical-coast: + - tropical-coast-flat: 1 + - tropical-coast-flat: 1 + - tropical-coast: 1 + - tropical-coast-highlands: 1 + hot-shallow-ocean: + - hot-shallow-ocean: 1 + - hot-shallow-ocean: 1 + - hot-shallow-ocean-midlands: 1 + - hot-shallow-ocean-midlands: 1 \ No newline at end of file diff --git a/biome-distribution/stages/climate/precipitation.yml b/biome-distribution/stages/climate/precipitation.yml new file mode 100644 index 00000000..b17ed132 --- /dev/null +++ b/biome-distribution/stages/climate/precipitation.yml @@ -0,0 +1,128 @@ +stages: + - type: REPLACE_LIST + sampler: + type: EXPRESSION + expression: precipitation(x, z) + + default-from: tropical-rainforest + default-to: + - hot-desert: &desert 4 + - hot-desert: &desertBorder 1 + - hot-steppe: &semiArid 1 + - tropical-savanna-dry: &mid 1 + - tropical-monsoon: &mildlyWet 2 + - tropical-rainforest: &veryWet 3 + to: + tropical-monsoon: + - hot-desert: *desert + - hot-desert: *desertBorder + - hot-steppe: *semiArid + - tropical-savanna-dry: *mid + - tropical-monsoon: *mildlyWet + - tropical-monsoon: *veryWet + tropical-savanna-wet: + - hot-steppe: *desert + - hot-steppe: *desertBorder + - hot-steppe: *semiArid + - tropical-savanna-wet: *mid + - tropical-savanna-wet: *mildlyWet + - tropical-savanna-wet: *veryWet + hot-coast: + - arid-coast: *desert + - arid-coast: *desertBorder + - temperate-coast: *semiArid + - tropical-coast: *mid + - tropical-coast: *mildlyWet + - tropical-coast: *veryWet + + hot-mesa: + - desert-mesa: *desert + - desert-mesa: *desertBorder + - temperate-mesa: *semiArid + - tropical-mesa: *mid + - tropical-mesa: *mildlyWet + - tropical-mesa: *veryWet + hot-crater-lake: + - desert-crater-lake: *desert + - desert-crater-lake: *desertBorder + - temperate-crater-lake: *semiArid + - tropical-crater-lake: *mid + - tropical-crater-lake: *mildlyWet + - tropical-crater-lake: *veryWet + hot-extinct-volcano: + - desert-extinct-volcano: *desert + - desert-extinct-volcano: *desertBorder + - temperate-extinct-volcano: *semiArid + - tropical-extinct-volcano: *mid + - tropical-extinct-volcano: *mildlyWet + - tropical-extinct-volcano: *veryWet + + temperate-hot: + - hot-desert: *desert + - temperate-steppe: *desertBorder + - temperate-hot-dry: *semiArid + - temperate-hot: *mildlyWet + - temperate-hot: *veryWet + temperate-warm: + - hot-desert: *desert + - temperate-steppe: *desertBorder + - temperate-warm-dry: *semiArid + - temperate-warm: *mildlyWet + - temperate-warm: *veryWet + temperate-cold: + - hot-desert: *desert + - temperate-steppe: *desertBorder + - temperate-warm-dry: *semiArid + - temperate-cold: *mildlyWet + - temperate-cold: *veryWet + + temperate-mesa: + - temperate-mesa: *desert + - temperate-mesa: *desertBorder + - temperate-mesa: *semiArid + - temperate-mesa: *mid + - temperate-mesa: *mildlyWet + - temperate-mesa: *veryWet + temperate-crater-lake: + - temperate-crater-lake: *desert + - temperate-crater-lake: *desertBorder + - temperate-crater-lake: *semiArid + - temperate-crater-lake: *mid + - temperate-crater-lake: *mildlyWet + - temperate-crater-lake: *veryWet + temperate-extinct-volcano: + - temperate-extinct-volcano: *desert + - temperate-extinct-volcano: *desertBorder + - temperate-extinct-volcano: *semiArid + - temperate-extinct-volcano: *mid + - temperate-extinct-volcano: *mildlyWet + - temperate-extinct-volcano: *veryWet + + boreal-hot: + - cold-desert: *desert + - cold-steppe: *desertBorder + - boreal-hot-dry: *semiArid + - boreal-warm: *mid + - boreal-warm: *mildlyWet + - boreal-hot: *veryWet + boreal-warm: + - cold-desert: *desert + - cold-steppe: *desertBorder + - boreal-warm-dry: *semiArid + - boreal-warm-dry: *mid + - boreal-warm: *mildlyWet + - boreal-warm: *veryWet + boreal-cold: + - cold-desert: *desert + - cold-steppe: *desertBorder + - boreal-cold-dry: *semiArid + - boreal-cold: *mid + - boreal-cold: *mildlyWet + - boreal-cold: *veryWet + boreal-snowy: + - cold-desert: *desert + - cold-steppe: *desertBorder + - boreal-snowy-dry: *semiArid + - boreal-snowy: *mid + - boreal-snowy: *mildlyWet + - boreal-snowy: *veryWet \ No newline at end of file diff --git a/biome-distribution/stages/climate/temperature.yml b/biome-distribution/stages/climate/temperature.yml new file mode 100644 index 00000000..1eec8fed --- /dev/null +++ b/biome-distribution/stages/climate/temperature.yml @@ -0,0 +1,86 @@ +stages: + - type: REPLACE_LIST + sampler: + type: EXPRESSION + expression: temperature(x, z) + + default-from: land + default-to: + - ice-cap: &iceCap 1 + - tundra: &tundra 1 + - boreal-snowy: &borealSnowy 1 + - boreal-cold: &borealCold 1 + - boreal-warm: &borealWarm 1 + - boreal-hot: &borealHot 1 + - temperate-cold: &temperateCold 1 + - temperate-warm: &temperateWarm 3 + - temperate-hot: &temperateHot 2 + - tropical-savanna-wet: &tropicalCold 1 + - tropical-monsoon: &tropicalWarm 1 + - tropical-rainforest: &tropicalHot 4 + to: + coast: + - polar-coast: *iceCap + - polar-coast: *tundra + - boreal-coast: *borealSnowy + - boreal-coast: *borealCold + - boreal-coast: *borealWarm + - boreal-coast: *borealHot + - temperate-coast: *temperateCold + - temperate-coast: *temperateWarm + - temperate-coast: *temperateHot + - hot-coast: *tropicalCold + - hot-coast: *tropicalWarm + - hot-coast: *tropicalHot + ocean: + - polar-ocean: *iceCap + - polar-ocean: *tundra + - boreal-ocean: *borealSnowy + - boreal-ocean: *borealCold + - boreal-ocean: *borealWarm + - boreal-ocean: *borealHot + - temperate-ocean: *temperateCold + - temperate-ocean: *temperateWarm + - temperate-ocean: *temperateHot + - hot-ocean: *tropicalCold + - hot-ocean: *tropicalWarm + - hot-ocean: *tropicalHot + mesa: + - polar-mesa: *iceCap + - polar-mesa: *tundra + - boreal-mesa: *borealSnowy + - boreal-mesa: *borealCold + - boreal-mesa: *borealWarm + - boreal-mesa: *borealHot + - temperate-mesa: *temperateCold + - temperate-mesa: *temperateWarm + - temperate-mesa: *temperateHot + - hot-mesa: *tropicalCold + - hot-mesa: *tropicalWarm + - hot-mesa: *tropicalHot + crater-lake: + - polar-crater-lake: *iceCap + - polar-crater-lake: *tundra + - boreal-crater-lake: *borealSnowy + - boreal-crater-lake: *borealCold + - boreal-crater-lake: *borealWarm + - boreal-crater-lake: *borealHot + - temperate-crater-lake: *temperateCold + - temperate-crater-lake: *temperateWarm + - temperate-crater-lake: *temperateHot + - hot-crater-lake: *tropicalCold + - hot-crater-lake: *tropicalWarm + - hot-crater-lake: *tropicalHot + extinct-volcano: + - polar-extinct-volcano: *iceCap + - polar-extinct-volcano: *tundra + - boreal-extinct-volcano: *borealSnowy + - boreal-extinct-volcano: *borealCold + - boreal-extinct-volcano: *borealWarm + - boreal-extinct-volcano: *borealHot + - temperate-extinct-volcano: *temperateCold + - temperate-extinct-volcano: *temperateWarm + - temperate-extinct-volcano: *temperateHot + - hot-extinct-volcano: *tropicalCold + - hot-extinct-volcano: *tropicalWarm + - hot-extinct-volcano: *tropicalHot \ No newline at end of file diff --git a/biome-distribution/stages/set_biomes_in_climates.yml b/biome-distribution/stages/set_biomes_in_climates.yml new file mode 100644 index 00000000..da695bb1 --- /dev/null +++ b/biome-distribution/stages/set_biomes_in_climates.yml @@ -0,0 +1,448 @@ +stages: + - type: REPLACE_LIST + sampler: + type: CELLULAR + return: CellValue + frequency: 1 / 1000 / ${customization.yml:variation-scale} / ${customization.yml:global-scale} + + default-from: ice-cap-flat + default-to: + - ICE_SPIKES: 1 + - LAND_GLACIER: 1 + to: + ice-cap: + - SNOWY_TUFF_MOUNTAINS: 1 + ice-cap-highlands: + - SNOWY_BLACKSTONE_MOUNTAINS: 1 + + tundra-flat: + - TUNDRA: 1 + tundra: + - TUNDRA: 1 + tundra-highlands: + - SNOWY_TUFF_MOUNTAINS: 1 + + polar-coast-flat: + - FROZEN_BEACH: 1 + polar-coast: + - SNOWY_SEA_CAVES: 1 + polar-coast-highlands: + - SNOWY_SEA_CAVES: 1 + + polar-mesa: + - COLD_DESERT_MESA: 1 + + polar-crater-lake: + - todo: 1 + + polar-extinct-volcano: + - todo: 1 + + polar-shallow-ocean: + - FROZEN_OCEAN: 1 + polar-shallow-ocean-midlands: + - FROZEN_OCEAN: 1 + - FROZEN_OCEAN_OVERHANGS: 1 + polar-ocean: + - FROZEN_OCEAN: 1 + - FROZEN_OCEAN_SLOPES: 1 + - ICEBERG_OCEAN: 1 + polar-deep-ocean: + - FROZEN_DEEP_OCEAN: 1 + - FROZEN_DEEP_OCEAN_VENTS: 1 + - FROZEN_DEEP_DEPTHS: 1 + + + boreal-hot-flat: + - AUTUMNAL_FOREST: 1 + - FLOWERING_AUTUMNAL_FOREST: 1 + - BIRCH_FOREST: 1 + boreal-hot: + - AUTUMNAL_FOREST: 1 + - FLOWERING_AUTUMNAL_FOREST: 1 + - BIRCH_FOREST: 1 + boreal-hot-highlands: + - MOUNTAINS: 1 + + boreal-warm-flat: + - AUTUMNAL_FOREST: 1 + - FLOWERING_AUTUMNAL_FOREST: 1 + - BIRCH_FOREST: 1 + boreal-warm: + - REDWOOD_FOREST: 1 + - TAIGA: 5 + boreal-warm-highlands: + - MOUNTAINS: 1 + + boreal-cold-flat: + - TAIGA: 1 + boreal-cold: + - TAIGA: 1 + boreal-cold-highlands: + - MOUNTAINS: 1 + + boreal-snowy-flat: + - SNOWY_MEADOW: 1 + boreal-snowy: + - SNOWY_TAIGA: 1 + - SNOWY_BIRCH_FOREST: 1 + boreal-snowy-highlands: + - SNOWY_MOUNTAINS: 1 + + boreal-hot-dry-flat: + - AUTUMNAL_FOREST: 1 + - FLOWERING_AUTUMNAL_FOREST: 1 + - BIRCH_FOREST: 1 + boreal-hot-dry: + - TAIGA: 1 + boreal-hot-dry-highlands: + - MOUNTAINS: 1 + + boreal-warm-dry-flat: + - TAIGA: 1 + boreal-warm-dry: + - TAIGA: 1 + boreal-warm-dry-highlands: + - MOUNTAINS: 1 + + boreal-cold-dry-flat: + - TAIGA: 1 + boreal-cold-dry: + - TAIGA: 1 + boreal-cold-dry-highlands: + - SNOWY_MOUNTAINS: 1 + + boreal-snowy-dry-flat: + - SNOWY_MEADOW: 1 + boreal-snowy-dry: + - SNOWY_MEADOW: 1 + boreal-snowy-dry-highlands: + - SNOWY_MOUNTAINS: 1 + + boreal-coast-flat: + - ROCKY_ARCHIPELAGO: 5 + - SHALE_BEACH: 1 + boreal-coast: + - ROCKY_SEA_CAVES: 1 + boreal-coast-highlands: + - ROCKY_SEA_CAVES: 1 + + boreal-mesa: + - BOREAL_MESA: 1 + + boreal-crater-lake: + - todo: 1 + + boreal-extinct-volcano: + - todo: 1 + + boreal-shallow-ocean: + - COLD_OCEAN: 1 + - KELP_FOREST: 1 + boreal-shallow-ocean-midlands: + - COLD_OCEAN: 1 + - COLD_OCEAN_OVERHANGS: 1 + boreal-ocean: + - COLD_OCEAN: 1 + - COLD_OCEAN_SLOPES: 1 + boreal-deep-ocean: + - COLD_DEEP_OCEAN: 1 + - COLD_DEEP_OCEAN_VENTS: 1 + - COLD_DEEP_DEPTHS: 1 + + temperate-hot-dry-flat: + - PALM_FOREST: 1 + - CHAPARRAL: 1 + - MOORLAND: 1 + temperate-hot-dry: + - CHAPARRAL: 1 + - MOORLAND: 1 + temperate-hot-dry-highlands: + - DRY_TEMPERATE_MOUNTAINS: 1 + - DRY_TEMPERATE_WHITE_MOUNTAINS: 1 + + temperate-warm-dry-flat: + - PALM_FOREST: 1 + - CHAPARRAL: 1 + - MOORLAND: 1 + temperate-warm-dry: + - CHAPARRAL: 1 + - MOORLAND: 1 + temperate-warm-dry-highlands: + - DRY_TEMPERATE_MOUNTAINS: 1 + - DRY_TEMPERATE_WHITE_MOUNTAINS: 1 + + temperate-hot-flat: + - PLAINS: 1 + - ALIEN_MARSH: 1 + temperate-hot: + - WOODED_BUTTES: 1 + - TEMPERATE_OVERPASS: 1 + temperate-hot-highlands: + - HIGHLANDS: 1 + - TEMPERATE_ALPHA_MOUNTAINS: 1 + - TEMPERATE_MOUNTAINS: 1 + + temperate-warm-flat: + - FLOWERING_FOREST: 1 + - RAINFOREST: 1 + - BROADLEAF_FOREST: 1 + - DARK_FOREST: 1 + - SAKURA_GROVE: 1 + - WOODED_BUTTES: 1 + temperate-warm: + - FLOWERING_FOREST: 1 + - RAINFOREST: 1 + - BROADLEAF_FOREST: 1 + - DARK_FOREST: 1 + - SAKURA_GROVE: 1 + - WOODED_BUTTES: 1 + temperate-warm-highlands: + - HIGHLANDS: 1 + - TEMPERATE_ALPHA_MOUNTAINS: 1 + - TEMPERATE_MOUNTAINS: 1 + + temperate-cold-flat: + - FLOWERING_FOREST: 1 + - RAINFOREST: 1 + - BROADLEAF_FOREST: 1 + - DARK_FOREST: 1 + - SAKURA_GROVE: 1 + - WOODED_BUTTES: 1 + temperate-cold: + - FLOWERING_FOREST: 1 + - RAINFOREST: 1 + - BROADLEAF_FOREST: 1 + - DARK_FOREST: 1 + - SAKURA_GROVE: 1 + - WOODED_BUTTES: 1 + temperate-cold-highlands: + - HIGHLANDS: 1 + - TEMPERATE_ALPHA_MOUNTAINS: 1 + - TEMPERATE_MOUNTAINS: 1 + + temperate-coast-flat: + - BEACH: 1 + - SHRUB_BEACH: 1 + temperate-coast: + - TEMPERATE_SEA_ARCHES: 1 + temperate-coast-highlands: + - TEMPERATE_SEA_ARCHES: 1 + + temperate-mesa: + - TEMPERATE_MESA: 1 + + temperate-crater-lake: + - TEMPERATE_CRATER_LAKE: 1 + + temperate-extinct-volcano: + - TEMPERATE_EXTINCT_VOLCANO: 1 + + temperate-shallow-ocean: + - OCEAN: 1 + - KELP_FOREST: 1 + - SEAGRASS_MEADOW: 1 + temperate-shallow-ocean-midlands: + - ROCKY_SHALLOW_OCEAN: 1 + - OCEAN_OVERHANGS: 1 + temperate-ocean: + - OCEAN: 1 + - OCEAN_SLOPES: 1 + temperate-deep-ocean: + - DEEP_OCEAN: 1 + - DEEP_OCEAN_VENTS: 1 + - DEEP_DEPTHS: 1 + + # Red hot desert + hot-desert-flat-red: + - ARID_SPIKES: 1 + - BADLANDS: 1 + - BADLANDS_BUTTES: 1 + - RED_DESERT: 1 + - SALT_FLATS: 1 + hot-desert-red: + - ARID_SPIKES: 1 + - BADLANDS: 1 + - BADLANDS_BUTTES: 1 + - RED_DESERT: 1 + hot-desert-highlands-red: + - ARID_SPIKES: 1 + - BADLANDS: 1 + - BADLANDS_BUTTES: 1 + + # Orange hot desert + hot-desert-flat-orange: + - ORANGE_DESERT: 5 + - SALT_FLATS: 1 + hot-desert-orange: + - ORANGE_DESERT: 1 + hot-desert-highlands-orange: + - ORANGE_DESERT: 1 + + # White hot desert + hot-desert-flat-white: + - DESERT: 4 + - PEARLESCENT_DESERT: 1 + - SALT_FLATS: 1 + hot-desert-white: + - DESERT: 1 + - DESERT_PILLARS: 1 + - DESERT_SPIKES: 1 + - DESERT_SPIKES_GOLD: 1 + - DESERT_TERRACES: 1 + - ROCKY_DESERT: 1 + - PEARLESCENT_DESERT: 1 + hot-desert-highlands-white: + - DESERT_PILLARS: 1 + - DESERT_SPIKES: 1 + - DESERT_SPIKES_GOLD: 1 + - DESERT_TERRACES: 1 + - ROCKY_DESERT: 1 + - PEARLESCENT_DESERT: 1 + + # Red hot steppe + hot-steppe-flat-red: + - ARID_SPIKES: 1 + hot-steppe-red: + - ARID_SPIKES: 1 + hot-steppe-highlands-red: + - ARID_SPIKES: 1 + + # Orange hot steppe + hot-steppe-flat-orange: + - ARID_SPIKES: 1 + hot-steppe-orange: + - ARID_SPIKES: 1 + hot-steppe-highlands-orange: + - ARID_SPIKES: 1 + + # White hot steppe + hot-steppe-flat-white: + - XERIC_SHRUBLAND: 1 + - TAR_PITS: 1 + hot-steppe-white: + - XERIC_SHRUBLAND: 1 + - TAR_PITS: 1 + hot-steppe-highlands-white: + - XERIC_MOUNTAINS: 1 + + temperate-steppe-flat: + - COLD_STEPPE: 1 + temperate-steppe: + - COLD_STEPPE: 1 + temperate-steppe-highlands: + - COLD_STEPPE: 1 + + cold-desert-flat: + - SALT_FLATS: 1 + cold-desert: + - SNOWY_DUNES: 1 + - SNOWY_BADLANDS: 1 + cold-desert-highlands: + - SNOWY_MOUNTAINS: 1 + - SNOWY_BADLANDS: 1 + + cold-steppe-flat: + - COLD_STEPPE: 1 + cold-steppe: + - COLD_STEPPE: 1 + cold-steppe-highlands: + - COLD_STEPPE: 1 + + cold-desert-mesa: + - COLD_DESERT_MESA: 1 + + cold-desert-crater-lake: + - todo: 1 + + cold-desert-extinct-volcano: + - todo: 1 + + arid-coast-flat: + - BLACK_SAND_BEACH: 1 + - BEACH: 1 + arid-coast: + - SANDSTONE_ARCHIPELAGO: 1 + arid-coast-highlands: + - TERRACOTTA_SEA_CAVES: 1 + + desert-mesa: + - DESERT_MESA: 1 + + desert-crater-lake: + - todo: 1 + + desert-extinct-volcano: + - todo: 1 + + tropical-rainforest-flat: + - BAMBOO_JUNGLE: 1 + - JUNGLE: 1 + - ROCKY_JUNGLE: 1 + tropical-rainforest: + - BAMBOO_JUNGLE: 1 + - BAMBOO_PONDS: 1 + - JUNGLE: 1 + - ROCKY_JUNGLE: 1 + tropical-rainforest-highlands: + - OVERGROWN_CLIFFS: 1 + + tropical-monsoon-flat: + - DRY_FOREST: 1 + - MONSOON_FOREST: 1 + tropical-monsoon: + - DRY_FOREST: 1 + - MONSOON_FOREST: 1 + tropical-monsoon-highlands: + - DRY_FOREST: 1 + - MONSOON_FOREST: 1 + + tropical-savanna-dry-flat: + - GRASS_SAVANNA: 1 + - SAVANNA: 1 + tropical-savanna-dry: + - GRASS_SAVANNA: 1 + - SAVANNA: 1 + tropical-savanna-dry-highlands: + - SAVANNA_OVERHANGS: 1 + + tropical-savanna-wet-flat: + - WET_SAVANNA: 1 + tropical-savanna-wet: + - WET_SAVANNA: 1 + tropical-savanna-wet-highlands: + - SAVANNA_OVERHANGS: 1 + + tropical-coast-flat: + - MUDDY_COASTS: 1 + - MANGROVE_SWAMP: 1 + - PALM_BEACH: 1 + tropical-coast: LUSH_SEA_CAVES + tropical-coast-highlands: LUSH_SEA_CAVES + + tropical-mesa: + - TROPICAL_MESA: 1 + + tropical-crater-lake: + - todo: 1 + + tropical-extinct-volcano: + - todo: 1 + + hot-shallow-ocean: + - TROPICAL_OCEAN: 1 + - SEAGRASS_MEADOW: 1 + hot-shallow-ocean-midlands: + - TROPICAL_OCEAN: 1 + - TROPICAL_OCEAN_OVERHANGS: 1 + - SEAGRASS_MEADOW: 1 + - CORAL_OCEAN: 1 + - CORAL_OCEAN_OVERHANGS: 1 + hot-ocean: + - TROPICAL_OCEAN: 1 + - TROPICAL_OCEAN_SLOPES: 1 + - CORAL_OCEAN_SLOPES: 1 + hot-deep-ocean: + - TROPICAL_DEEP_OCEAN: 1 + - TROPICAL_DEEP_OCEAN_VENTS: 1 + - TROPICAL_DEEP_DEPTHS: 1 \ No newline at end of file diff --git a/biome-providers/README.md b/biome-providers/README.md deleted file mode 100644 index fe4343b4..00000000 --- a/biome-providers/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Biome Providers - -This directory contains configuration files related to **biome distribution**. -For individual biome configuration, checkout the `biomes` directory instead. - -This directory is organized into 3 subdirectories: - -## Presets -A collection of preset biome provider configurations. A biome provider is simply -something that tells Terra how to distribute biomes. We have a couple presets -available for those who want alternative biome distributions but may not know -how to configure them. The provider in use is determined under the `biomes` -parameter in the pack manifest (`pack.yml`). (Only one can be selected at a time.) - -## Sources -Contains various configs that define different base biome distributions used for -'pipeline' biome providers. These are typically used to determine how land, -coasts, and oceans generate. For pipeline providers, The source in use is -determined by the preset. - -## Stages -Contains various mutation stages that are applied to pipeline biome providers. -These do things such as add different climate zones, add rivers, add volcanoes, -etc. Similarly to sources, the ordering of stages is determined by the provider -preset. \ No newline at end of file diff --git a/biome-providers/extrusions/add_cave_biomes.yml b/biome-providers/extrusions/add_cave_biomes.yml deleted file mode 100644 index 91f84020..00000000 --- a/biome-providers/extrusions/add_cave_biomes.yml +++ /dev/null @@ -1,15 +0,0 @@ -extrusions: - - type: REPLACE - from: LAND_CAVES - sampler: - type: CELLULAR - return: CellValue - salt: 1252 - frequency: 1 / ${meta.yml:biome-distribution.cave-biome-scale} / ${meta.yml:biome-distribution.global-scale} - to: - - SELF: 6 - - LUSH_CAVES: 1 - - DRIPSTONE_CAVES: 1 - range: - min: -16 - max: 48 diff --git a/biome-providers/presets/default.yml b/biome-providers/presets/default.yml deleted file mode 100644 index 60010c38..00000000 --- a/biome-providers/presets/default.yml +++ /dev/null @@ -1,138 +0,0 @@ -biomes: - type: EXTRUSION - extrusions: - - << biome-providers/extrusions/add_cave_biomes.yml:extrusions - - << biome-providers/extrusions/add_deep_dark.yml:extrusions - provider: - type: PIPELINE - resolution: 2 - initial-size: 10 - blend: - amplitude: 1.5 - sampler: - type: WHITE_NOISE - pipeline: - # --- - # Source - # --- - # The source controls ocean / coast / land distribution. - # Several preset sources are available to choose from below. - # Choosing which one is in use is as simple as commenting the enabled one - # (by adding a # at the start) and uncommenting the one you wish to use. - # - # Basic Continents - source: $biome-providers/sources/basic_continents.yml:source - # - # Land Only - #source: $biome-providers/sources/land_only.yml:source - # - # Ocean Only - #source: $biome-providers/sources/ocean_only.yml:source - # - # From Image - #source: TODO - # --- - - # --- - # Pipeline Stages - # --- - # Here is a list of stages applied sequentially after the source, and is - # where most of biome distribution occurs. Further customizations can - # be made as outlined by the comments in each stage, additionally you can - # further more modify the stages themselves in their respective files. - - stages: - # --- - # Assign zones for volcanic biomes - # - Comment the following line to disable volcano generation. - - << biome-providers/stages/add_volcanic_zones.yml:stages - # --- - - # --- - # Add mushroom islands - # - Comment the following line to disable mushroom island generation - - << biome-providers/stages/add_mushroom_islands.yml:stages - # --- - - # --- - # Replace deep ocean border with deep ocean - - << biome-providers/stages/replace_deep_ocean_border.yml:stages - # --- - - # --- - # Split land & coast (determined by the source) into elevation zones - - << biome-providers/stages/distribute_elevation_zones.yml:stages - # --- - - # --- - # Replace some higher coastal zones with flat ones - # - Comment the following line for more consistent coastline terrain - - << biome-providers/stages/flatten_coast_randomly.yml:stages - # --- - - # --- - # Replace volcanic biomes with variants - # - This will do nothing if volcanoes have been disabled above - # and should also be commented out if you've disabled them. - - << biome-providers/stages/add_volcanic_variations.yml:stages - # --- - - # --- - # Split elevation zones into temperature zones - - << biome-providers/stages/distribute_temperature_zones.yml:stages - # - # Alternative temperature distributions - # - If you want to use an alternative distribution, comment the stage - # above (distribute_temperature_zones) to disable it, and uncomment - # the distribution you wish to use. - # - # Polar Biomes Only - #- << biome-providers/stages/distribute_temperature_zones_polar.yml:stages - # - # Hot Biomes Only - #- << biome-providers/stages/distribute_temperature_zones_tropical.yml:stages - # - # Temperate Biomes Only - #- TODO - # - # Striped Temperature - Alternating stripes from hot to cold along the x axis - #- TODO - # --- - - # --- - # Split temperature zones into precipitation zones or singular biomes - # - Some temperature zones aren't affected by precipitation (such as polar) - # and are handled by the next stage instead. - - << biome-providers/stages/distribute_precipitation_zones.yml:stages - # --- - - # --- - # Choose final biome(s) for any zones not assigned biomes in the previous stage. - - << biome-providers/stages/distribute_climate_variants.yml:stages - # --- - - - << biome-providers/stages/expand.yml:stages - - # --- - # Biome specific variations - - << biome-providers/stages/add_variants.yml:stages - # --- - - # --- - # Expansion and smoothing - # - Make biomes bigger + blend the borders to look more natural. - - << biome-providers/stages/expand.yml:stages - - << biome-providers/stages/expand.yml:stages - - << biome-providers/stages/smooth.yml:stages - - << biome-providers/stages/smooth.yml:stages - - << biome-providers/stages/smooth.yml:stages - - << biome-providers/stages/expand.yml:stages - - << biome-providers/stages/smooth.yml:stages - - << biome-providers/stages/smooth.yml:stages - - << biome-providers/stages/smooth.yml:stages - - # --- - # Add rivers to all biomes - # - Comment this out to disable river generation - - << biome-providers/stages/add_rivers.yml:stages - # --- diff --git a/biome-providers/presets/single.yml b/biome-providers/presets/single.yml deleted file mode 100644 index 2fb1d0c7..00000000 --- a/biome-providers/presets/single.yml +++ /dev/null @@ -1,3 +0,0 @@ -biomes: - type: SINGLE - biome: ARID_HIGHLANDS # The singular biome that will be used. diff --git a/biome-providers/sources/basic_continents.yml b/biome-providers/sources/basic_continents.yml deleted file mode 100644 index 50ce7466..00000000 --- a/biome-providers/sources/basic_continents.yml +++ /dev/null @@ -1,21 +0,0 @@ -source: - type: SAMPLER - biomes: - - deep-ocean: 28 - - deep-ocean-border: 4 # Used for the border of deep ocean island biomes crossing into regular ocean - - ocean: 16 - - coast: 4 # Used for the border of land biomes crossing into ocean - - land: 32 - sampler: - dimensions: 2 - type: LINEAR - min: -1 - max: -0.65 - sampler: - type: FBM - lacunarity: 3 - gain: 0.4 - octaves: 4 - sampler: - type: CELLULAR - frequency: 1 / ${meta.yml:biome-distribution.continental-scale} / ${meta.yml:biome-distribution.global-scale} diff --git a/biome-providers/sources/land_only.yml b/biome-providers/sources/land_only.yml deleted file mode 100644 index 39d5ae39..00000000 --- a/biome-providers/sources/land_only.yml +++ /dev/null @@ -1,7 +0,0 @@ -source: - type: SAMPLER - biomes: - - land: 1 - sampler: - dimensions: 2 - type: CONSTANT \ No newline at end of file diff --git a/biome-providers/sources/ocean_only.yml b/biome-providers/sources/ocean_only.yml deleted file mode 100644 index 1c23ef0b..00000000 --- a/biome-providers/sources/ocean_only.yml +++ /dev/null @@ -1,10 +0,0 @@ -source: - type: SAMPLER - biomes: - - ocean: 2 - - deep-ocean: 1 - sampler: - dimensions: 2 - type: FBM - sampler: - type: OPEN_SIMPLEX_2 \ No newline at end of file diff --git a/biome-providers/stages/add_mushroom_islands.yml b/biome-providers/stages/add_mushroom_islands.yml deleted file mode 100644 index a83e80f3..00000000 --- a/biome-providers/stages/add_mushroom_islands.yml +++ /dev/null @@ -1,63 +0,0 @@ - -# Uses warped cellular distance to determine where mushroom islands are placed. -# The output is modified to allow users to define the spread and radius easily. -zone-sampler: - type: EXPRESSION - expression: split((noise(x/spread,z/spread)+1)*4/(radius/spread)-1) - variables: - spread: 0+${meta.yml:biome-distribution.global-scale} * ${meta.yml:biome-distribution.mushroom-island-spread} - radius: 0+${meta.yml:biome-distribution.global-scale} * ${meta.yml:biome-distribution.mushroom-island-radius} - functions: - split: - arguments: [x] - expression: if(x<0,x,1) - samplers: - noise: - dimensions: 2 - type: DOMAIN_WARP - amplitude: 0.04 - warp: - type: OPEN_SIMPLEX_2 - salt: 4161 - frequency: 7 - sampler: - type: CELLULAR - salt: 5171 - frequency: 1 - -variation-sampler: - type: OPEN_SIMPLEX_2 - salt: 1959 - frequency: 0.04 / ${meta.yml:biome-distribution.global-scale} - -mushroom-area-weight: &mushroom-area-weight 5 # Summed weights allocated to mushroom area - -stages: - - type: REPLACE_LIST - default-from: deep-ocean - default-to: - # Mushroom area - The weights should sum to mushroom-area-weight. - - MUSHROOM_MOUNTAINS: 1 - - MUSHROOM_HILLS: 1 - - mushroom-land: 2 - - mushroom-coast: 1 - # Non-mushroom area - - deep-ocean: *mushroom-area-weight - to: - deep-ocean-border: - # Mushroom area - - mushroom-coast: 5 - # Non-mushroom area - - deep-ocean-border: *mushroom-area-weight - sampler: $biome-providers/stages/add_mushroom_islands.yml:zone-sampler - - type: REPLACE_LIST - default-from: mushroom-land - default-to: - - MUSHROOM_MOUNTAINS: 1 - - MUSHROOM_HILLS: 1 - - MUSHROOM_FIELDS: 1 - to: - mushroom-coast: - - MUSHROOM_COAST: 1 - - ROCKY_WETLANDS: 2 - sampler: $biome-providers/stages/add_mushroom_islands.yml:variation-sampler \ No newline at end of file diff --git a/biome-providers/stages/add_variants.yml b/biome-providers/stages/add_variants.yml deleted file mode 100644 index 3a98510e..00000000 --- a/biome-providers/stages/add_variants.yml +++ /dev/null @@ -1,96 +0,0 @@ -stages: - # Climate variations - - type: REPLACE_LIST - default-from: desert-variants - default-to: - - DESERT: 5 - - ROCKY_DESERT: 3 - - desert-spikes-microvariants: 1 - to: - jungle-flats-variants: - - jungle-flats-microvariants: 5 - - SWAMP: 1 - evergreen-flats-variants: - - EVERGREEN_FLATS: 5 - - FLOWERING_FLATS: 3 - plains-variants: - - plains-microvariants: 3 - - PRAIRIE: 3 - birch-flats-variants: - - BIRCH_FLATS: 3 - - AUTUMNAL_FLATS: 2 - jungle-variants: - - jungle-microvariants: 4 - - BAMBOO_PONDS: 1 - evergreen-forest-variants: - - EVERGREEN_FOREST: 5 - - FLOWERING_FOREST: 3 - - EVERGREEN_OVERHANGS: 1 - birch-forest-variants: - - BIRCH_FOREST: 3 - - AUTUMNAL_FOREST: 1 - birch-forest-hills-variants: - - BIRCH_FOREST_HILLS: 5 - - AUTUMNAL_FOREST_HILLS: 3 - - FLOWERING_AUTUMNAL_FOREST_HILLS: 1 - badlands-variants: - - BADLANDS_MOUNTAINS: 2 - - DESERT_PILLARS: 1 - - BADLANDS_BUTTES: 2 - - ERODED_BADLANDS_BUTTES: 1 - - ARID_HIGHLANDS: 1 - forest-hills-variants: - - FOREST_HILLS: 5 - - FLOWERING_FOREST_HILLS: 3 - wild-mountains-variants: - - WILD_BUMPY_MOUNTAINS: 3 - temperate-mountains-variants: - - HIGHLANDS: 4 - - TEMPERATE_MOUNTAINS: 8 - - SAKURA_MOUNTAINS: 4 - sampler: - dimensions: 2 - type: CELLULAR - return: CellValue - salt: 42342 - frequency: 0.06 / ${meta.yml:biome-distribution.global-scale} - - # Direct variants - color variations, etc - - type: REPLACE_LIST - default-from: desert-spikes-microvariants - default-to: - - DESERT_SPIKES: 6 - - DESERT_SPIKES_GOLD: 1 - to: - DRY_TEMPERATE_MOUNTAINS: - - SELF: 2 - - DRY_TEMPERATE_WHITE_MOUNTAINS: 1 - TAIGA_HILLS: - - SELF: 9 - - REDWOOD_FOREST_HILLS: 1 - jungle-flats-microvariants: - - JUNGLE_FLATS: 4 - - BAMBOO_JUNGLE_FLATS: 2 - - PALM_FOREST: 2 - jungle-microvariants: - - JUNGLE: 3 - - BAMBOO_JUNGLE: 1 - plains-microvariants: - - PLAINS: 3 - - SUNFLOWER_PLAINS: 1 - JUNGLE_HILLS: - - SELF: 3 - - BAMBOO_JUNGLE_HILLS: 1 - JUNGLE_MOUNTAINS: - - SELF: 3 - - BAMBOO_JUNGLE_MOUNTAINS: 1 - desert-flats-microvariants: - - DESERT_FLATS: 7 - - SALT_FLATS: 1 - - sampler: - dimensions: 2 - type: CELLULAR - return: CellValue - frequency: 0.3 / ${meta.yml:biome-distribution.global-scale} - salt: 34534 diff --git a/biome-providers/stages/add_volcanic_variations.yml b/biome-providers/stages/add_volcanic_variations.yml deleted file mode 100644 index 9d7a981a..00000000 --- a/biome-providers/stages/add_volcanic_variations.yml +++ /dev/null @@ -1,20 +0,0 @@ -active-weight: &active-weight 1 -caldera-weight: &caldera-weight 3 - -stages: - - type: REPLACE_LIST - default-from: volcano-pit - default-to: - - ACTIVE_VOLCANO_PIT: *active-weight - - CALDERA_VOLCANO_PIT: *caldera-weight - to: - volcano-pit-edge: - - ACTIVE_VOLCANO_PIT_EDGE: *active-weight - - CALDERA_VOLCANO_PIT_EDGE: *caldera-weight - volcano-base-edge: - - ACTIVE_VOLCANO_BASE_EDGE: *active-weight - - CALDERA_VOLCANO_BASE_EDGE: *caldera-weight - volcano-base: - - ACTIVE_VOLCANO_BASE: *active-weight - - CALDERA_VOLCANO_BASE: *caldera-weight - sampler: $biome-providers/stages/add_volcanic_zones.yml:variation-sampler diff --git a/biome-providers/stages/add_volcanic_zones.yml b/biome-providers/stages/add_volcanic_zones.yml deleted file mode 100644 index 5ed74a89..00000000 --- a/biome-providers/stages/add_volcanic_zones.yml +++ /dev/null @@ -1,97 +0,0 @@ - -# Uses warped cellular distance to determine where volcanoes are placed. -# The output is modified to allow users to define the spread and radius easily. -zone-sampler: - type: EXPRESSION - expression: split((noise(x/spread,z/spread)+1)*4/(radius/spread)-1) - variables: - spread: &spread 0+${meta.yml:biome-distribution.global-scale} * ${meta.yml:biome-distribution.volcano-spread} - radius: 0+${meta.yml:biome-distribution.global-scale} * ${meta.yml:biome-distribution.volcano-radius} - functions: - split: - arguments: [x] - expression: if(x<0,x,1) - samplers: - noise: &noise - dimensions: 2 - type: DOMAIN_WARP - amplitude: 0.01 - warp: - type: OPEN_SIMPLEX_2 - salt: 3912 - frequency: 10 - sampler: &cellular - type: CELLULAR - salt: 5912 - frequency: 1 - -# Variations use the same cellular noise as above but return the cell value -# instead to determine the variation. -# This sampler is used in the add_volcanic_variations.yml file. -variation-sampler: - type: EXPRESSION - expression: noise(x/spread,z/spread) - variables: - spread: *spread - samplers: - noise: - <<: *noise - sampler: - <<: *cellular - return: CellValue - -volcano-area-weight: &volcano-area-weight 14 # Summed weights allocated to volcanic area - -stages: - - type: REPLACE_LIST - default-from: deep-ocean - default-to: - # Volcano area - The weights should sum to volcano-area-weight. - - volcano-pit: 1 - - volcano-pit-edge: 1 - - volcano-base-edge: 2 - - volcano-base: 4 - - mountains-small: 3 - - coast-mountains-small: 3 - # Non-volcano area - - deep-ocean: *volcano-area-weight - to: - deep-ocean-border: - # Volcano area - - volcano-pit: 1 - - volcano-pit-edge: 1 - - volcano-base-edge: 2 - - volcano-base: 4 - - mountains-small: 3 - - coast-mountains-small: 3 - # Non-volcano area - - deep-ocean-border: *volcano-area-weight - ocean: - # Volcano area - - volcano-pit: 1 - - volcano-pit-edge: 1 - - volcano-base-edge: 2 - - volcano-base: 4 - - hills-large: 3 - - coast-hills-large: 3 - # Non-volcano area - - ocean: *volcano-area-weight - coast: - # Volcano area - - volcano-pit: 1 - - volcano-pit-edge: 1 - - volcano-base-edge: 2 - - volcano-base: 4 - - coast-mountains-small: 6 - # Non-volcano area - - coast: *volcano-area-weight - land: - # Volcano area - - volcano-pit: 1 - - volcano-pit-edge: 1 - - volcano-base-edge: 2 - - volcano-base: 4 - - land: 6 - # Non-volcano area - - land: *volcano-area-weight - sampler: $biome-providers/stages/add_volcanic_zones.yml:zone-sampler diff --git a/biome-providers/stages/distribute_climate_variants.yml b/biome-providers/stages/distribute_climate_variants.yml deleted file mode 100644 index 8b824b46..00000000 --- a/biome-providers/stages/distribute_climate_variants.yml +++ /dev/null @@ -1,213 +0,0 @@ - -# Here all zones not assigned a biome, such as oceanic, coastal, -# and polar zones are finally assigned one or more biomes. - -variation-map: &variation-map - dimensions: 2 - type: CELLULAR - return: CellValue - frequency: 1 / ${meta.yml:biome-distribution.variation-scale} / ${meta.yml:biome-distribution.global-scale} - -stages: - - type: REPLACE_LIST - sampler: *variation-map - - # --------------- - # Tropical Biomes - # --------------- - - # Tropical Oceanic - - default-from: deep-ocean-tropical - default-to: - - TROPICAL_DEEP_OCEAN: 1 - to: - ocean-tropical: - - TROPICAL_OCEAN: 1 - - CORAL_OCEAN: 1 - - # Tropical Coastal - - coast-flat-tropical: - - PALM_BEACH: 1 - - MANGROVE_SWAMP: 1 - - coast-hills-small-tropical: - - SANDSTONE_WETLANDS: 1 - - SANDSTONE_ARCHIPELAGO: 1 - - MANGROVE_SWAMP: 1 - - coast-hills-large-tropical: - - SANDSTONE_WETLANDS: 1 - - SANDSTONE_ARCHIPELAGO: 1 - - coast-mountains-small-tropical-humid: - - LUSH_SEA_CAVES: 1 - - coast-mountains-small-tropical: - - ROCKY_SEA_CAVES: 1 - - coast-mountains-small-tropical-arid: - - TERRACOTTA_SEA_CAVES: 1 - - coast-mountains-large-tropical-humid: - - TEMPERATE_SEA_ARCHES: 1 - - coast-mountains-large-tropical: - - ROCKY_SEA_ARCHES: 1 - - coast-mountains-large-tropical-arid: - - TERRACOTTA_SEA_ARCHES: 1 - - # ------------------ - # Subtropical Biomes - # ------------------ - - # Subtropical Oceanic - - deep-ocean-subtropical: - - SUBTROPICAL_DEEP_OCEAN: 1 - - ocean-subtropical: - - SUBTROPICAL_OCEAN: 1 - - # Subtropical Coastal - - coast-flat-subtropical: - - BEACH: 1 - - MANGROVE_SWAMP: 1 - - SHRUB_BEACH: 1 - - coast-hills-small-subtropical: - - WETLANDS: 1 - - ARCHIPELAGO: 1 - - MANGROVE_SWAMP: 1 - - coast-hills-large-subtropical: - - WETLANDS: 1 - - ARCHIPELAGO: 1 - - coast-mountains-small-subtropical: - - LUSH_SEA_CAVES: 1 - - coast-mountains-large-subtropical: - - TEMPERATE_SEA_ARCHES: 1 - # ---------------- - # Temperate Biomes - # ---------------- - - # Temperate Oceanic - - deep-ocean-temperate: - - DEEP_OCEAN: 1 - - ocean-temperate: - - OCEAN: 1 - - # Temperate Coastal - - coast-flat-temperate: - - BEACH: 3 - - SHALE_BEACH: 1 - - SHRUB_BEACH: 1 - - coast-hills-small-temperate: - - WETLANDS: 1 - - ARCHIPELAGO: 1 - - coast-hills-large-temperate: - - WETLANDS: 1 - - ARCHIPELAGO: 1 - - coast-mountains-small-temperate: - - LUSH_SEA_CAVES: 1 - - coast-mountains-large-temperate: - - TEMPERATE_SEA_ARCHES: 1 - - mountains-large-temperate-semi-arid: - - DRY_TEMPERATE_MOUNTAINS: 1 - - DRY_TEMPERATE_WHITE_MOUNTAINS: 1 - - # ------------- - # Boreal Biomes - # ------------- - - # Boreal Oceanic - deep-ocean-boreal: - - COLD_DEEP_OCEAN: 1 - - ocean-boreal: - - COLD_OCEAN: 1 - - # Boreal Coastal - coast-flat-boreal: - - BEACH: 2 - - SHALE_BEACH: 1 - - coast-hills-small-boreal: - - ROCKY_WETLANDS: 1 - - ROCKY_ARCHIPELAGO: 1 - - coast-hills-large-boreal: - - ROCKY_WETLANDS: 1 - - ROCKY_ARCHIPELAGO: 1 - - coast-mountains-small-boreal: - - ROCKY_SEA_CAVES: 1 - - coast-mountains-large-boreal: - - ROCKY_SEA_ARCHES: 1 - - # ------------ - # Polar Biomes - # ------------ - - # Polar Oceanic - - deep-ocean-polar: - - FROZEN_DEEP_OCEAN: 1 - - ICEBERG_OCEAN: 1 - - ocean-polar: - - FROZEN_OCEAN: 1 - - # Polar Coastal - - coast-flat-polar: - - FROZEN_BEACH: 1 - - coast-hills-small-polar: - - FROZEN_WETLANDS: 1 - - FROZEN_ARCHIPELAGO: 1 - - coast-hills-large-polar: - - FROZEN_WETLANDS: 1 - - FROZEN_ARCHIPELAGO: 1 - - coast-mountains-small-polar: - - SNOWY_SEA_CAVES: 1 - - coast-mountains-large-polar: - - SNOWY_SEA_ARCHES: 1 - - # Polar Land - - flat-polar: - - SNOWY_PLAINS: 2 - - TUNDRA_PLAINS: 2 - - SNOWY_MEADOW: 4 - - hills-small-polar: - - ICE_SPIKES: 1 - - TUNDRA_MIDLANDS: 3 - - hills-large-polar: - - TUNDRA_HILLS: 1 - - mountains-small-polar: - - SNOWY_MOUNTAINS: 1 - - SNOWY_ERODED_TERRACED_MOUNTAINS: 1 - - mountains-large-polar: - - SNOWY_TERRACED_MOUNTAINS: 1 diff --git a/biome-providers/stages/distribute_elevation_zones.yml b/biome-providers/stages/distribute_elevation_zones.yml deleted file mode 100644 index 01e64363..00000000 --- a/biome-providers/stages/distribute_elevation_zones.yml +++ /dev/null @@ -1,31 +0,0 @@ -# Splits land and coastal zones into different elevation zones. -# These elevation zones are further divided into temperature zones -# in the distribute_temperature_zones.yml file. - -elevation-map: &elevation-map - dimensions: 2 - type: FBM - octaves: 3 - sampler: - type: OPEN_SIMPLEX_2 - salt: 2313 - frequency: 1 / ${meta.yml:biome-distribution.elevation-scale} / ${meta.yml:biome-distribution.global-scale} - -stages: - - type: REPLACE_LIST - sampler: *elevation-map - - default-from: coast - default-to: - - coast-flat: 6 - - coast-hills-small: 5 - - coast-hills-large: 4 - - coast-mountains-small: 5 - - coast-mountains-large: 6 - to: - land: - - flat: 6 - - hills-small: 5 - - hills-large: 4 - - mountains-small: 5 - - mountains-large: 6 diff --git a/biome-providers/stages/distribute_precipitation_zones.yml b/biome-providers/stages/distribute_precipitation_zones.yml deleted file mode 100644 index fa41dcf6..00000000 --- a/biome-providers/stages/distribute_precipitation_zones.yml +++ /dev/null @@ -1,339 +0,0 @@ - -# Replaces temperature zones with the relevant biome, -# or a precipitation zone, which contains climate variants, -# handled in the distribute_variants.yml file. - -# Aquatic, coastal (except tropical coastal), and polar zones aren't affected -# by precipitation and are distributed via the distribute_variants.yml file instead. - -precipitation-map: &precipitation-map - dimensions: 2 - type: FBM - octaves: 2 - sampler: - type: OPEN_SIMPLEX_2 - salt: 5055 - frequency: 1 / ${meta.yml:biome-distribution.precipitation-scale} / ${meta.yml:biome-distribution.global-scale} - -stages: - - type: REPLACE_LIST - sampler: *precipitation-map - - # -------------------------------------------- - # Flat Biomes - # -------------------------------------------- - - default-from: flat-tropical - default-to: - - # ------------- - # Flat Tropical Humid - # ------------- - - jungle-flats-variants: 5 - # ------------- - # Flat Tropical Semi-Humid - # ------------- - - GRASS_SAVANNA: 2 - - SAVANNA: 2 - # ------------- - # Flat Tropical Semi-Arid - # ------------- - - CHAPARRAL_FLATS: 1 - # ------------- - # Flat Tropical Semi-Arid - # ------------- - - XERIC_PLAINS: 3 - # ------------- - # Flat Tropical Arid - # ------------- - - desert-flats-microvariants: 7 - - to: - flat-subtropical: - # ------------- - # Flat Subtropical Semi-Arid - # ------------- - - CHAPARRAL_FLATS: 3 - # ------------- - # ------------- - # Flat Subtropical Arid - # ------------- - - XERIC_PLAINS: 5 - - flat-temperate: - # Flat Subtropical Extra-Humid - # ------------- - - evergreen-forest-variants: 3 - # ------------- - # Flat Temperate Humid - # ------------- - - FOREST_FLATS: 5 - # ------------- - # Flat Temperate Semi-Humid - # ------------- - - plains-variants: 5 - # ------------- - # Flat Temperate Semi-Arid - # ------------- - - STEPPE: 3 - - EUCALYPTUS_FOREST: 3 - # ------------- - # Flat Temperate Arid (Mediterranean) - # ------------- - - OAK_SAVANNA: 4 - - flat-boreal: - # ------------- - # Flat Boreal Humid (Wetter Forests) - # ------------- - - birch-flats-variants: 5 - # ------------- - # Flat Boreal Semi-Humid (Dryer Forests) - # ------------- - - TAIGA_FLATS: 5 - - # -------------------------------------------- - # Small Hills Biomes - # -------------------------------------------- - - hills-small-tropical: - # ------------- - # Small Hills Tropical Humid - # ------------- - - jungle-variants: 5 - - # ------------- - # Small Hills Tropical Semi-Humid - # ------------- - - GRASS_SAVANNA_LOW_HILLS: 2 - - SAVANNA_LOW_HILLS: 2 - # ------------- - # Small Hills Tropical Semi-Arid - # ------------- - - LOW_CHAPARRAL: 3 - # ------------- - # Small Hills Tropical Arid - # ------------- - - desert-variants: 9 - - hills-small-subtropical: - # ------------- - # Small Hills Subtropical Humid - # ------------- - - RAINFOREST: 5 - # ------------- - # Small Hills Subtropical Semi Humid - # ------------- - - LOW_CHAPARRAL: 2 - - XEROPHYTIC_FOREST: 5 - # ------------- - # Small Hills Subtropical Arid - # ------------- - - XERIC_LOW_HILLS: 5 - - hills-small-temperate: - # ------------- - # Small Hills Temperate Humid - # ------------- - - evergreen-forest-variants: 3 - # ------------- - # Small Hills Temperate Semi-Humid - # ------------- - - DARK_FOREST: 1 - - FOREST: 3 - # ------------- - # Small Hills Temperate Semi-Arid - # ------------- - - WOODED_BUTTES: 2 - - hills-small-boreal: - # ------------- - # Small Hills Boreal Humid (Wetter Forests) - # ------------- - - birch-forest-variants: 3 - # ------------- - # Small Hills Boreal Semi-Humid (Dryer Forests) - # ------------- - - TAIGA: 3 - - # -------------------------------------------- - # Large Hills Biomes - # -------------------------------------------- - - hills-large-tropical: - # ------------- - # Large Hills Tropical Humid - # ------------- - - JUNGLE_HILLS: 5 - # ------------- - # Large Hills Tropical Semi-Humid - # ------------- - - GRASS_SAVANNA_HILLS: 3 - - SAVANNA_HILLS: 3 - # ------------- - # Large Hills Tropical Semi-Arid - # ------------- - - CHAPARRAL: 2 - # ------------- - # Large Hills Tropical Arid - # ------------- - - ARID_SPIKES: 5 - - hills-large-subtropical: - # ------------- - # Large Hills Subtropical Humid - # ------------- - - RAINFOREST_HILLS: 5 - # ------------- - # Large Hills Subtropical Semi-Arid - # ------------- - - XEROPHYTIC_FOREST_HILLS: 6 - - MOORLAND: 3 - # ------------- - # Large Hills Subtropical Arid - # ------------- - - XERIC_HILLS: 5 - - hills-large-temperate: - # ------------- - # Large Hills Temperate Humid - # ------------- - - EVERGREEN_FOREST_HILLS: 4 - # ------------- - # Large Hills Temperate Semi-Humid - # ------------- - - DARK_FOREST_HILLS: 3 - - forest-hills-variants: 6 - # ------------- - # Large Hills Temperate Semi-Arid - # ------------- - - SHRUBLAND: 5 - # ------------- - - hills-large-boreal: - # ------------- - # Large Hills Boreal Semi-Humid - # ------------- - - birch-forest-hills-variants: 9 - # ------------- - # Large Hills Boreal Semi-Arid - # ------------- - - TAIGA_HILLS: 11 - - # -------------------------------------------- - # Small Mountains Biomes - # -------------------------------------------- - - mountains-small-tropical: - # ------------- - # Small Mountains Tropical Humid - # ------------- - - OVERGROWN_CLIFFS: 5 - # ------------- - # Small Mountains Tropical Semi-Humid - # ------------- - - SAVANNA_OVERHANGS: 2 - # ------------- - # Small Mountains Tropical Semi-Arid - # ------------- - - XERIC_MOUNTAINS: 4 - # ------------- - # Small Mountains Tropical Arid - # ------------- - - badlands-variants: 7 - - mountains-small-subtropical: - # ------------- - # Small Mountains Subtropical Semi-Humid - # ------------- - - MONSOON_MOUNTAINS: 5 - # ------------- - # Small Mountains Subtropical Semi-Humid - # ------------- - - wild-mountains-variants: 4 - # ------------- - # Small Mountains Subtropical Semi-Arid - # ------------- - - ROCKY_BUMPY_MOUNTAINS: 4 - # ------------- - # Small Mountains Subtropical Arid - # ------------- - - DRY_ROCKY_BUMPY_MOUNTAINS: 5 - - mountains-small-temperate: - # ------------- - # Mountains Temperate Semi-Humid - # ------------- - - temperate-mountains-variants: 16 - - mountains-small-boreal: - # ------------- - # Mountains Boreal Semi-Humid - # ------------- - - SNOWY_ERODED_TERRACED_MOUNTAINS: 1 - # ------------- - # Mountains Boreal Semi-Arid - # ------------- - - MOUNTAINS: 3 - - # -------------------------------------------- - # Large Mountains Biomes - # -------------------------------------------- - - mountains-large-tropical: - # ------------- - # Large Mountains Tropical Humid - # ------------- - - JUNGLE_MOUNTAINS: 4 - # ------------- - # Large Mountains Tropical Semi-Humid - # ------------- - - WILD_HIGHLANDS: 4 - # ------------- - # Large Mountains Tropical Semi-Arid - # ------------- - - DRY_WILD_HIGHLANDS: 3 - # ------------- - # Large Mountains Tropical Arid - # ------------- - - CRACKED_BADLANDS_PLATEAU: 5 - - mountains-large-subtropical: - # ------------- - # Large Mountains Subtropical Humid - # ------------- - - LARGE_MONSOON_MOUNTAINS: 1 - - mountains-large-temperate: - # ------------- - # Large Mountains Temperate Semi-Humid - # ------------- - - TEMPERATE_ALPHA_MOUNTAINS: 2 - # ------------- - # Large Mountains Temperate Semi-Arid - # ------------- - - DRY_TEMPERATE_MOUNTAINS: 5 - - mountains-large-boreal: - # ------------- - # Large Mountains Boreal Semi-Humid - # ------------- - - SNOWY_ERODED_TERRACED_MOUNTAINS: 1 - - # -------------------------------------------- - # Coastal Small Mountains Biomes - # -------------------------------------------- - - coast-mountains-small-tropical: - # ------------- - # Coastal Small Mountains Tropical Humid - # ------------- - - coast-mountains-small-tropical-humid: 1 - # ------------- - # Coastal Small Mountains Tropical Semi Humid & Semi Arid - # ------------- - - coast-mountains-small-tropical: 2 - # ------------- - # Coastal Small Mountains Tropical Arid - # ------------- - - coast-mountains-small-tropical-arid: 1 diff --git a/biome-providers/stages/distribute_temperature_zones.yml b/biome-providers/stages/distribute_temperature_zones.yml deleted file mode 100644 index e2bd79a6..00000000 --- a/biome-providers/stages/distribute_temperature_zones.yml +++ /dev/null @@ -1,107 +0,0 @@ - -# Splits elevation zones into temperature zones. - -# These temperature zones are then later split into different -# precipitation zones by the distribute_precipitation_zones.yml file. -# Zones unaffected by precipitation such oceanic, coastal, and -# polar as are handled in the distribute_variants.yml file instead. - -temperature-map: &temperature-map - dimensions: 2 - type: FBM - octaves: 2 - sampler: - type: OPEN_SIMPLEX_2 - frequency: 1 / ${meta.yml:biome-distribution.temperature-scale} / ${meta.yml:biome-distribution.global-scale} - salt: 53 - -stages: - - type: REPLACE_LIST - sampler: *temperature-map - - default-from: deep-ocean - default-to: - - deep-ocean-tropical: 5 - - deep-ocean-subtropical: 4 - - deep-ocean-temperate: 6 - - deep-ocean-boreal: 4 - - deep-ocean-polar: 5 - - to: - - ocean: - - ocean-tropical: 5 - - ocean-subtropical: 4 - - ocean-temperate: 6 - - ocean-boreal: 4 - - ocean-polar: 5 - - coast-flat: - - coast-flat-tropical: 5 - - coast-flat-subtropical: 4 - - coast-flat-temperate: 6 - - coast-flat-boreal: 4 - - coast-flat-polar: 5 - - coast-hills-small: - - coast-hills-small-tropical: 5 - - coast-hills-small-subtropical: 4 - - coast-hills-small-temperate: 6 - - coast-hills-small-boreal: 4 - - coast-hills-small-polar: 5 - - coast-hills-large: - - coast-hills-large-tropical: 5 - - coast-hills-large-subtropical: 4 - - coast-hills-large-temperate: 6 - - coast-hills-large-boreal: 4 - - coast-hills-large-polar: 5 - - coast-mountains-small: - - coast-mountains-small-tropical: 5 - - coast-mountains-small-subtropical: 4 - - coast-mountains-small-temperate: 6 - - coast-mountains-small-boreal: 4 - - coast-mountains-small-polar: 5 - - coast-mountains-large: - - coast-mountains-large-tropical: 5 - - coast-mountains-large-subtropical: 4 - - coast-mountains-large-temperate: 6 - - coast-mountains-large-boreal: 4 - - coast-mountains-large-polar: 5 - - flat: - - flat-tropical: 5 - - flat-subtropical: 4 - - flat-temperate: 6 - - flat-boreal: 4 - - flat-polar: 5 - - hills-small: - - hills-small-tropical: 5 - - hills-small-subtropical: 4 - - hills-small-temperate: 6 - - hills-small-boreal: 4 - - hills-small-polar: 5 - - hills-large: - - hills-large-tropical: 5 - - hills-large-subtropical: 4 - - hills-large-temperate: 6 - - hills-large-boreal: 4 - - hills-large-polar: 5 - - mountains-small: - - mountains-small-tropical: 5 - - mountains-small-subtropical: 4 - - mountains-small-temperate: 6 - - mountains-small-boreal: 4 - - mountains-small-polar: 5 - - mountains-large: - - mountains-large-tropical: 5 - - mountains-large-subtropical: 4 - - mountains-large-temperate: 6 - - mountains-large-boreal: 4 - - mountains-large-polar: 5 \ No newline at end of file diff --git a/biome-providers/stages/distribute_temperature_zones_polar.yml b/biome-providers/stages/distribute_temperature_zones_polar.yml deleted file mode 100644 index 8b90cb5a..00000000 --- a/biome-providers/stages/distribute_temperature_zones_polar.yml +++ /dev/null @@ -1,54 +0,0 @@ - -# Splits elevation zones into temperature zones. - -# These temperature zones are then later split into different -# precipitation zones by the distribute_precipitation_zones.yml file. -# Zones unaffected by precipitation such oceanic, coastal, and -# polar as are handled in the distribute_variants.yml file instead. - -temperature-map: &temperature-map - dimensions: 2 - type: CONSTANT - -stages: - - type: REPLACE_LIST - sampler: *temperature-map - - default-from: deep-ocean - default-to: - - deep-ocean-polar: 1 - - to: - - ocean: - - ocean-polar: 1 - - coast-flat: - - coast-flat-polar: 1 - - coast-hills-small: - - coast-hills-small-polar: 1 - - coast-hills-large: - - coast-hills-large-polar: 1 - - coast-mountains-small: - - coast-mountains-small-polar: 1 - - coast-mountains-large: - - coast-mountains-large-polar: 1 - - flat: - - flat-polar: 1 - - hills-small: - - hills-small-polar: 1 - - hills-large: - - hills-large-polar: 1 - - mountains-small: - - mountains-small-polar: 1 - - mountains-large: - - mountains-large-polar: 1 diff --git a/biome-providers/stages/distribute_temperature_zones_tropical.yml b/biome-providers/stages/distribute_temperature_zones_tropical.yml deleted file mode 100644 index 8d2d070b..00000000 --- a/biome-providers/stages/distribute_temperature_zones_tropical.yml +++ /dev/null @@ -1,54 +0,0 @@ - -# Splits elevation zones into temperature zones. - -# These temperature zones are then later split into different -# precipitation zones by the distribute_precipitation_zones.yml file. -# Zones unaffected by precipitation such oceanic, coastal, and -# polar as are handled in the distribute_variants.yml file instead. - -temperature-map: &temperature-map - dimensions: 2 - type: CONSTANT - -stages: - - type: REPLACE_LIST - sampler: *temperature-map - - default-from: deep-ocean - default-to: - - deep-ocean-tropical: 1 - - to: - - ocean: - - ocean-tropical: 1 - - coast-flat: - - coast-flat-tropical: 1 - - coast-hills-small: - - coast-hills-small-tropical: 1 - - coast-hills-large: - - coast-hills-large-tropical: 1 - - coast-mountains-small: - - coast-mountains-small-tropical: 1 - - coast-mountains-large: - - coast-mountains-large-tropical: 1 - - flat: - - flat-tropical: 1 - - hills-small: - - hills-small-tropical: 1 - - hills-large: - - hills-large-tropical: 1 - - mountains-small: - - mountains-small-tropical: 1 - - mountains-large: - - mountains-large-tropical: 1 diff --git a/biome-providers/stages/expand.yml b/biome-providers/stages/expand.yml deleted file mode 100644 index d4c4c9b5..00000000 --- a/biome-providers/stages/expand.yml +++ /dev/null @@ -1,4 +0,0 @@ -stages: - - type: FRACTAL_EXPAND - sampler: - type: WHITE_NOISE diff --git a/biome-providers/stages/flatten_coast_randomly.yml b/biome-providers/stages/flatten_coast_randomly.yml deleted file mode 100644 index 9b6d6802..00000000 --- a/biome-providers/stages/flatten_coast_randomly.yml +++ /dev/null @@ -1,25 +0,0 @@ -stages: - - type: REPLACE_LIST - default-from: coast-hills-small - default-to: - - coast-hills-small: 2 - - coast-flat: 1 - to: - coast-hills-large: - - coast-hills-large: 2 - - coast-hills-small: 1 - - coast-flat: 1 - coast-mountains-small: - - coast-mountains-small: 6 - - coast-hills-large: 1 - - coast-hills-small: 1 - - coast-flat: 6 - coast-mountains-large: - - coast-mountains-large: 6 - - coast-hills-large: 1 - - coast-hills-small: 1 - - coast-flat: 6 - sampler: - type: OPEN_SIMPLEX_2 - frequency: 0.1 / ${meta.yml:biome-distribution.global-scale} - salt: 9129 diff --git a/biome-providers/stages/frozen_world/distribute_temperature_zones_polar.yml b/biome-providers/stages/frozen_world/distribute_temperature_zones_polar.yml deleted file mode 100644 index 7f7163d2..00000000 --- a/biome-providers/stages/frozen_world/distribute_temperature_zones_polar.yml +++ /dev/null @@ -1,31 +0,0 @@ -# Elevation Zones -> Temperature Zones - -temperature-map: &temperature-map - dimensions: 2 - type: CONSTANT - -stages: - - type: REPLACE_LIST - sampler: *temperature-map - default-from: deep-ocean - default-to: - - deep-ocean-polar: 1 - to: - ocean: - - ocean-polar: 1 - coast-flat: - - FROZEN_BEACH: 1 - coast-hills: - - FROZEN_WETLANDS: 1 - coast-mountains: - - FROZEN_ARCHIPELAGO: 1 - flat: - - flat-polar: 1 - hills-small: - - hills-small-polar: 1 - hills-large: - - hills-large-polar: 1 - mountains-small: - - mountains-small-polar: 1 - mountains-large: - - mountains-large-polar: 1 diff --git a/biome-providers/stages/replace_deep_ocean_border.yml b/biome-providers/stages/replace_deep_ocean_border.yml deleted file mode 100644 index d0dd6963..00000000 --- a/biome-providers/stages/replace_deep_ocean_border.yml +++ /dev/null @@ -1,6 +0,0 @@ -stages: - - type: REPLACE - from: deep-ocean-border - to: deep-ocean - sampler: - type: CONSTANT \ No newline at end of file diff --git a/biome-providers/stages/river-samplers/default.yml b/biome-providers/stages/river-samplers/default.yml deleted file mode 100644 index 73f8afb2..00000000 --- a/biome-providers/stages/river-samplers/default.yml +++ /dev/null @@ -1,55 +0,0 @@ -variables: &variables - riverValue: 1 # Value the sampler outputs where there should be a river. - wetlandValue: -0.4 # Value the sampler outputs for areas bordering rivers, used for wetland biomes. - notRiverValue: -1 # Value the sampler outputs for areas where there is not a river. - - riverFrequency: 1 / ${meta.yml:biome-distribution.river-spread-scale} / ${meta.yml:biome-distribution.global-scale} - riverThreshold: 0.35 # Determines the area calculated as river, which also determines how far from rivers wetlands can be. - riverMaxWidth: 5 * ${meta.yml:biome-distribution.global-scale} # Determines the width of rivers within riverThreshold. - wetlandThreshold: 0.2 # Determines how much area within riverThreshold will be wetlands. - -sampler: - type: EXPRESSION - expression: | - if(|riverNoise((x+riverMaxWidth)*riverFrequency,(z+riverMaxWidth)*riverFrequency)|>riverThreshold,notRiverValue, - if(riverKerneled(x/riverMaxWidth, z/riverMaxWidth)!=0,riverValue,if(wetlandMask(x*riverFrequency,z*riverFrequency)0 - variables: *variables - samplers: - riverNoise: *riverNoise \ No newline at end of file diff --git a/biome-providers/stages/smooth.yml b/biome-providers/stages/smooth.yml deleted file mode 100644 index 669cb622..00000000 --- a/biome-providers/stages/smooth.yml +++ /dev/null @@ -1,4 +0,0 @@ -stages: - - type: SMOOTH - sampler: - type: WHITE_NOISE \ No newline at end of file diff --git a/biomes/abstract/base.yml b/biomes/abstract/base.yml index 1279a5a9..5230c0f9 100644 --- a/biomes/abstract/base.yml +++ b/biomes/abstract/base.yml @@ -9,7 +9,7 @@ slant-depth: 15 ocean: palette: BLOCK:minecraft:water - level: 62 + level: $meta.yml:ocean-level features: global-preprocessors: @@ -20,4 +20,7 @@ features: - TEXTURED_STONE_SLANT underwater-flora: - KELP + - CLINGING_KELP - SEAGRASS + structures: + - MOB_ROOMS \ No newline at end of file diff --git a/biomes/abstract/carving/carving_land.yml b/biomes/abstract/carving/carving_land.yml index 81d9d189..6b46b90a 100644 --- a/biomes/abstract/carving/carving_land.yml +++ b/biomes/abstract/carving/carving_land.yml @@ -6,98 +6,10 @@ carving: sampler: dimensions: 3 type: EXPRESSION + expression: $biomes/abstract/carving/carving_sampler_template.yml:expression + samplers: $biomes/abstract/carving/carving_sampler_template.yml:samplers variables: - - carvingThreshold: 0.55 # Higher = less carving - carvingMinHeight: -63 - carvingMinTaper: 8 - carvingMaxHeight: 140 - carvingMaxTaper: 20 - carvingCap: 1 # Caps the amount of base carving - - cheeseStrength: 0.8 - cheeseHorizontalFrequency: 1.5 - cheeseVerticalFrequency: 3 - cheeseMaxHeight: 90 - cheeseMaxTaper: 40 - - spaghettiStrengthLarge: 0.59 - spaghettiStrengthSmall: 0.57 - - pillarStrength: 0.5 - pillarRadius: 0.02 - - megaCaveStrength: 0.3 - megaCaveSize: 0.3 - - expression: | - -carvingThreshold - + if(ycarvingMaxHeight,0,maskSmooth(maskSmooth( // Skip unnecessary calculations - min(carvingCap, - max( - // Spaghetti Caves - max( - spaghettiStrengthLarge * ((-(|simplex3(x,y+0000,z)|+|simplex3(x,y+1000,z)|)/2)+1), - spaghettiStrengthSmall * ((-(|simplex3(x,y+2000,z)|+|simplex3(x,y+3000,z)|)/2)+1) - ), - - // Cheese caves - if(y>cheeseMaxHeight,0, - maskSmooth( - cheeseStrength * (simplex3( - x * cheeseHorizontalFrequency, - (y + simplex2(x, z) * 5) * cheeseVerticalFrequency, - z * cheeseHorizontalFrequency - )+1)/2 - - // Mega caves - +lerp(megaCaves(x, y, z), 1-megaCaveSize, 0, 1, megaCaveStrength) - - // Pillars - -lerp(cavePillars(x, z),-1+pillarRadius,0,-1,1) * pillarStrength, - - // Cheese clamp parameters - cheeseMaxHeight, cheeseMaxHeight - cheeseMaxTaper, y - ) - ) - ) - ), - // Clamp parameters - carvingMinHeight, carvingMinHeight + carvingMinTaper, y - ), - carvingMaxHeight, carvingMaxHeight - carvingMaxTaper, y - )) - - samplers: - cavePillars: - dimensions: 2 - type: CELLULAR - frequency: 0.05 - - megaCaves: - dimensions: 3 - type: OPEN_SIMPLEX_2 - salt: 777 - frequency: 0.003 - - # Basic 2D simplex noise - simplex2: - dimensions: 2 - type: LINEAR - min: -0.9 - max: 0.9 - sampler: - type: FBM - octaves: 4 - sampler: - type: OPEN_SIMPLEX_2 - frequency: 0.0075 - - # Basic 3D simplex noise - simplex3: - dimensions: 3 - type: FBM - octaves: 2 - sampler: - type: OPEN_SIMPLEX_2 - frequency: 0.0075 \ No newline at end of file + "<<": + - biomes/abstract/carving/carving_sampler_template.yml:variables + # Variable Overrides: + carvingMaxMode: 1 # Use land heightmap diff --git a/biomes/abstract/carving/carving_none.yml b/biomes/abstract/carving/carving_none.yml new file mode 100644 index 00000000..d6287b11 --- /dev/null +++ b/biomes/abstract/carving/carving_none.yml @@ -0,0 +1,16 @@ +id: CARVING_NONE +type: BIOME +abstract: true + +carving: + sampler: + dimensions: 3 + type: EXPRESSION + expression: $biomes/abstract/carving/carving_sampler_template.yml:expression + samplers: $biomes/abstract/carving/carving_sampler_template.yml:samplers + variables: + "<<": + - biomes/abstract/carving/carving_sampler_template.yml:variables + # Variable Overrides: + carvingMaxMode: 1 # Use land heightmap + carvingThreshold: 1 \ No newline at end of file diff --git a/biomes/abstract/carving/carving_ocean.yml b/biomes/abstract/carving/carving_ocean.yml index 8572a77e..aa0ab494 100644 --- a/biomes/abstract/carving/carving_ocean.yml +++ b/biomes/abstract/carving/carving_ocean.yml @@ -6,10 +6,12 @@ carving: sampler: dimensions: 3 type: EXPRESSION + expression: $biomes/abstract/carving/carving_sampler_template.yml:expression + samplers: $biomes/abstract/carving/carving_sampler_template.yml:samplers variables: "<<": - - biomes/abstract/carving/carving_land.yml:carving.sampler.variables - carvingMaxHeight: 40 - - expression: $biomes/abstract/carving/carving_land.yml:carving.sampler.expression - samplers: $biomes/abstract/carving/carving_land.yml:carving.sampler.samplers \ No newline at end of file + - biomes/abstract/carving/carving_sampler_template.yml:variables + # Variable Overrides: + carvingMaxMode: 2 # Use ocean heightmap + spaghettiSurfaceBreak: -20 # Make spaghetti caves not break ocean floor + spaghettiSurfaceBreakTaper: 10 diff --git a/biomes/abstract/carving/carving_sampler_template.yml b/biomes/abstract/carving/carving_sampler_template.yml new file mode 100644 index 00000000..29392eee --- /dev/null +++ b/biomes/abstract/carving/carving_sampler_template.yml @@ -0,0 +1,136 @@ +# Template for carving samplers +# This template should be used via metaconfiguration like so: + +# dimensions: 3 +# type: EXPRESSION +# expression: $biomes/abstract/carving/carving_sampler_template.yml:expression +# samplers: $biomes/abstract/carving/carving_sampler_template.yml:samplers +# variables: +# "<<": +# - biomes/abstract/carving/carving_sampler_template.yml:variables +# # Variable Overrides: +# : +# : + +variables: + # These serve as default values that each usage of this template can override for specific adjustments + + carvingThreshold: 0.55 # Higher = less carving + carvingCap: 1 # Caps the amount of base carving + + cheeseStrength: 0.7 # Higher = larger cheese caves + cheeseHorizontalFrequency: 1.5 + cheeseVerticalFrequency: 3 + + # Higher = larger spaghetti caves + spaghettiAStrength: 0.58 + spaghettiBStrength: 0.57 + + pillarStrength: 0.5 + pillarRadius: 0.02 + + megaCaveStrength: 0.3 + megaCaveSize: 0.3 + + # Clamping variables + + carvingMinHeight: ${meta.yml:bottom-y} + 1 # Where all carving will cut off at the bottom of the world + carvingMinTaper: 8 # How many blocks above the min height should all carving 'fade out' + + cheeseSurfaceBreak: -30 # How many blocks from the surface cheese carving will stop + cheeseSurfaceBreakTaper: 20 # How many blocks from surface break should cheese carving taper out + + spaghettiSurfaceBreak: -10 # How many blocks from the surface spaghetti carving will stop + spaghettiSurfaceBreakTaper: 40 # How many blocks from surface break should spaghetti carving taper out + + # carvingMaxMode: !!!Must be set in carving configs that use this template!!! + # - 1 = cap carving by land elevation + # - 2 = cap carving by ocean depth + # - Anything else sets to cap by the constant carvingMaxHeight instead + carvingMaxHeight: -64 + + # Terrain variables for clamping max y, shouldn't be overridden + terrainBase: $customization.yml:terrain-base-y-level + terrainScale: $customization.yml:terrain-height + oceanBase: $customization.yml:terrain-ocean-base-y-level + oceanDepth: $customization.yml:terrain-ocean-depth + +expression: | # If > 0 then carve + -carvingThreshold + + if(y 0.25 + samplers: + noise: + dimensions: 2 + type: CELLULAR + return: Distance2Div + frequency: 0.01 + salt: 1284 + cellLookup: + <<: *cellular + return: NoiseLookup + lookup: + type: EXPRESSION + expression: elevationDetailed(x, z) \ No newline at end of file diff --git a/biomes/abstract/terrain/land/eq_craters.yml b/biomes/abstract/terrain/land/eq_craters.yml new file mode 100644 index 00000000..7ebca00c --- /dev/null +++ b/biomes/abstract/terrain/land/eq_craters.yml @@ -0,0 +1,90 @@ +id: EQ_CRATERS +type: BIOME +abstract: true + +vars: &variables + base: $customization.yml:terrain-base-y-level + scale: $customization.yml:terrain-height + + craterScale: 0.2 + + rimRadius: 0.1 + rimHeight: 0.5 + rimOutsideWidth: 0.05 + + erosionDepth: 0.5 + +cellular: &cellular + type: CELLULAR + distance: Euclidean + frequency: 0.0025 + +terrain: + sampler: + type: EXPRESSION + expression: -y + base + variables: *variables + + sampler-2d: + type: EXPRESSION + expression: scale * (elevationDetailed(x, z) + craters(x, z) * craterScale) + variables: *variables + samplers: + craters: + dimensions: 2 + type: DOMAIN_WARP + amplitude: 2.5 + warp: + type: OPEN_SIMPLEX_2 + frequency: 0.03 + sampler: + type: FBM + octaves: 4 + lacunarity: 1.5 + gain: 0.8 + sampler: + type: EXPRESSION + expression: | + parabolicMap3(cellDist(x, z), + 0, -1 + herp(cellDist(x, z), + rimRadius * 0.2, 0, + rimRadius, erosion(x, z) * erosionDepth + ), + rimRadius, rimHeight, + rimRadius + rimOutsideWidth, 0 + ) + variables: *variables + samplers: + cellDist: + dimensions: 2 + type: PROBABILITY + sampler: + <<: *cellular + erosion: + dimensions: 2 + type: EXPRESSION + expression: | + noise( + cellDist(x, z) * distFrequency + cellValue(x, z) * offsetAmplitude, + sin(cellAngle(x, z)) * angleFrequency + cellValue(x, z) * offsetAmplitude, + cos(cellAngle(x, z)) * angleFrequency + cellValue(x, z) * offsetAmplitude + ) + variables: + distFrequency: 200 + angleFrequency: 300 + offsetAmplitude: 10000 # Translates sample position per cell so the erosion pattern is unique for each cell + samplers: + cellDist: + dimensions: 2 + <<: *cellular + cellAngle: + dimensions: 2 + <<: *cellular + return: Angle + cellValue: + dimensions: 2 + <<: *cellular + return: CellValue + noise: + dimensions: 3 + type: OPEN_SIMPLEX_2 \ No newline at end of file diff --git a/biomes/abstract/terrain/land/eq_eroded_coast.yml b/biomes/abstract/terrain/land/eq_eroded_coast.yml new file mode 100644 index 00000000..fc013aea --- /dev/null +++ b/biomes/abstract/terrain/land/eq_eroded_coast.yml @@ -0,0 +1,64 @@ +id: EQ_ERODED_COAST +type: BIOME +abstract: true + +variables: &variables + base: $customization.yml:terrain-base-y-level + scale: $customization.yml:terrain-height + erosionBottom: ${customization.yml:terrain-base-y-level} - 15 + bottomVariation: 10 + +terrain: + sampler: + type: EXPRESSION + dimensions: 3 + variables: *variables + expression: | + -y + base + + erode( + erosionBottom + bottom(x, z) * bottomVariation, + base, + elevation(x,z)*(1+variation(x,z)*0.2), + scale, + y, + 1-|erosion(x, z)| + ) + samplers: &samplers + variation: + dimensions: 2 + type: OPEN_SIMPLEX_2 + frequency: 0.02 + salt: 5 + erosion: + dimensions: 2 + type: PROBABILITY + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.02 + salt: 2 + bottom: + dimensions: 2 + type: PROBABILITY + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.008 + salt: 9 + functions: + erode: + arguments: [ bottom, base, height, scale, y, erosion ] + expression: | + -lerp(y, + base+height*scale, 0, + base+height*scale/10, + lerp(y, + base+height*scale/10, erosion * (-y+base+height*scale) * lerp(height, 0.05, 0, 0.3, 4), + bottom, 0 + ) + ) + functions: $math/functions/interpolation.yml:functions + + sampler-2d: + type: EXPRESSION + variables: *variables + samplers: *samplers + expression: elevation(x, z) * scale \ No newline at end of file diff --git a/biomes/abstract/terrain/land/hills-small/eq_dunes.yml b/biomes/abstract/terrain/land/eq_global_dunes.yml similarity index 55% rename from biomes/abstract/terrain/land/hills-small/eq_dunes.yml rename to biomes/abstract/terrain/land/eq_global_dunes.yml index a5274693..b16938f5 100644 --- a/biomes/abstract/terrain/land/hills-small/eq_dunes.yml +++ b/biomes/abstract/terrain/land/eq_global_dunes.yml @@ -1,40 +1,43 @@ -id: EQ_DUNES +id: EQ_GLOBAL_DUNES type: BIOME abstract: true -# Relatively flat low elevation sand dunes. - -vars: &variables - base: 64 # Base terrain y level - groundHeight: 10 # Block height of base noise +variables: &variables + base: $customization.yml:terrain-base-y-level + scale: $customization.yml:terrain-height - duneHeight: 15 # Block height of dunes - duneSpacing: 10 # Higher number = more spacing between dunes - duneFrequency: 0.5 # Overall dune frequency - duneRotationRange: pi/3 # How much dune cells are randomly rotated, 0 = anisotrophic, pi = isotrophic + duneFactor: 0.03 + duneStart: 0 + duneEnd: 0.4 + mountainPeakStart: 0.5 + mountainPeakEnd: 0.8 + mountainPeakFactor: 0.1 + duneSpacing: 7 # Higher number = more spacing between dunes + duneFrequency: 0.3 # Overall dune frequency + duneRotationRange: pi/3 # How much dune cells are randomly rotated, 0 = anisotrophic, pi = isotrophic + terrain: sampler: - dimensions: 3 type: EXPRESSION - variables: *variables expression: -y + base - + variables: *variables + sampler-2d: - dimensions: 2 type: EXPRESSION - variables: *variables expression: | - duneHeight * dunes(x*duneFrequency, z*duneFrequency) * ((duneHeightVariation(x,z)/4)+0.75) - + groundHeight * (ground(x, z)+1)/2 + scale * + combine( + combine( + elevationDetailed(x, z), + mountainPeakStart, 0, + mountainPeakEnd, mountainPeaks(x,z) * mountainPeakFactor + ), + duneStart, dunes(x*duneFrequency,z*duneFrequency) * duneFactor, + duneEnd, 0 + ) + variables: *variables samplers: - duneHeightVariation: - dimensions: 2 - type: FBM - octaves: 2 - sampler: - type: OPEN_SIMPLEX_2 - frequency: 0.02 dunes: # Dune height map [0, 1] dimensions: 2 type: DOMAIN_WARP @@ -67,10 +70,28 @@ terrain: mask: <<: *cell return: Distance2Div - - ground: + mountainPeaks: dimensions: 2 - type: FBM - sampler: + type: DOMAIN_WARP + amplitude: 5 + warp: type: OPEN_SIMPLEX_2 - frequency: 0.005 \ No newline at end of file + frequency: 0.03 + salt: 812 + sampler: + type: RIDGED + octaves: 2 + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.005 + salt: 7129 + functions: + combine: + arguments: + - x + - at + - a + - bt + - b + expression: x+lerp(x,at,a,bt,b) + functions: $math/functions/interpolation.yml:functions \ No newline at end of file diff --git a/biomes/abstract/terrain/land/eq_global_eroded_pillars.yml b/biomes/abstract/terrain/land/eq_global_eroded_pillars.yml new file mode 100644 index 00000000..f8e18286 --- /dev/null +++ b/biomes/abstract/terrain/land/eq_global_eroded_pillars.yml @@ -0,0 +1,68 @@ +id: EQ_GLOBAL_ERODED_PILLARS +type: BIOME +abstract: true + +vars: &variables + base: $customization.yml:terrain-base-y-level + scale: $customization.yml:terrain-height + + pillarHeight: 0.35 + pillarPlatformHeight: 0.05 + pillarWarpStrength: 45 + pillarYMin: 50 + +terrain: + sampler: + dimensions: 3 + type: EXPRESSION + variables: *variables + expression: | + -y + base + + if(ybase+scale,0, // Skip unnecessary calculations + herp(elevation(x, z), + 0.8, 0, + 0.6, scale * max( + // Pillar 'platform' + herp(pillarMask(x, z), + 0.4, 0, + 0.5, pillarPlatformHeight - elevation(x, z) / 2 + ), + + // Pillars + herp(pillarMask( + x+pillarWarp(x,y/2,z)*pillarWarpStrength, + z+pillarWarp(x,y/2,z+1000)*pillarWarpStrength), + 0.5, 0, + 0.7, pillarHeight + ) + ) + ) + ) + samplers: + pillarMask: + dimensions: 2 + type: EXPRESSION + expression: (-noise(x, z)+1)/2 + samplers: + noise: + dimensions: 2 + type: RIDGED + gain: 0.7 + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.0025 + pillarWarp: + dimensions: 3 + type: FBM + octaves: 3 + lacunarity: 2.2 + gain: 0.4 + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.01 + + sampler-2d: + dimensions: 2 + type: EXPRESSION + variables: *variables + expression: scale * elevationDetailed(x, z) \ No newline at end of file diff --git a/biomes/abstract/terrain/land/eq_global_river.yml b/biomes/abstract/terrain/land/eq_global_river.yml new file mode 100644 index 00000000..fabe69d5 --- /dev/null +++ b/biomes/abstract/terrain/land/eq_global_river.yml @@ -0,0 +1,76 @@ +id: EQ_GLOBAL_RIVER +type: BIOME +abstract: true + +variables: &variables + base: $customization.yml:terrain-base-y-level + scale: $customization.yml:terrain-height + + depth: 0.11 + ceilingBase: 0.1 + ceilingHeight: 0.17 + +terrain: + sampler: + type: EXPRESSION + dimensions: 3 + variables: *variables + expression: | + -y + base - + erode( + base, + elevation(x, z), + scale, + (y - base) / scale, + depth, + ceilingBase, + ceilingHeight, + ceilingSpikes(x, z) * -0.1, + herp(openings(x, z), 0.3, 0, 0.6, 1) + ) * (1 + erosionStrengthVariation(x/3, y, z/3)^2) + samplers: + erosionStrengthVariation: # Used to roughen up the walls + dimensions: 3 + type: FBM + octaves: 2 + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.03 + salt: 5 + openings: + dimensions: 2 + type: EXPRESSION_NORMALIZER + expression: "|in|" + sampler: + type: OPEN_SIMPLEX_2 + frequency: 1 / 1000 + salt: 9 + ceilingSpikes: + dimensions: 2 + type: CUBIC_SPLINE + points: + - { from: -1, to: 1, gradient: -2 } + - { from: -0.2, to: 0, gradient: 0 } + sampler: + type: CELLULAR + distance: Euclidean + frequency: 0.06 + functions: + erode: + arguments: [ base, elevation, scale, y, depth, ceilingBase, ceilingHeight, ceilingOffset, ceilingOpenings ] + expression: | + herp(y, + -depth, 0, + 0, herp(y - ceilingOffset - herp(elevation, 0.4, ceilingOpenings, 0.6, 0), + ceilingBase, -y+base+elevation*scale, + ceilingBase + ceilingHeight, 0 + ) + ) + functions: + "<<": + - math/functions/interpolation.yml:functions + + sampler-2d: + type: EXPRESSION + expression: scale * elevationDetailed(x, z) + variables: *variables \ No newline at end of file diff --git a/biomes/abstract/terrain/land/eq_land.yml b/biomes/abstract/terrain/land/eq_land.yml new file mode 100644 index 00000000..9564466f --- /dev/null +++ b/biomes/abstract/terrain/land/eq_land.yml @@ -0,0 +1,32 @@ +id: EQ_LAND +type: BIOME +abstract: true + +vars: &variables + base: $customization.yml:terrain-base-y-level + scale: $customization.yml:terrain-height + +terrain: + sampler: + type: EXPRESSION + expression: -y + base + lerp(overhangsMask(x, y, z), 0, 0, 1, overhangs(x, y*3, z) * 20) + variables: *variables + samplers: + overhangsMask: + dimensions: 3 + type: OPEN_SIMPLEX_2 + frequency: 0.002 + salt: 8481 + overhangs: + dimensions: 3 + type: FBM + octaves: 3 + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.01 + salt: 4957 + + sampler-2d: + type: EXPRESSION + expression: scale * elevationDetailed(x, z) + variables: *variables diff --git a/biomes/abstract/terrain/land/eq_land_glacier.yml b/biomes/abstract/terrain/land/eq_land_glacier.yml new file mode 100644 index 00000000..bc8f30e7 --- /dev/null +++ b/biomes/abstract/terrain/land/eq_land_glacier.yml @@ -0,0 +1,75 @@ +id: EQ_LAND_GLACIER +type: BIOME +abstract: true + +vars: &variables + base: $customization.yml:terrain-base-y-level + scale: $customization.yml:terrain-height + + overhangStrength: 15 + +cell-base: &cellBase + dimensions: 2 + type: CELLULAR + frequency: 0.012 + +terrain: + sampler: + dimensions: 3 + type: EXPRESSION + variables: *variables + expression: -y + base + overhangs(x, y*3, z) * overhangStrength + samplers: + overhangs: + dimensions: 3 + type: FBM + octaves: 3 + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.01 + salt: 4957 + + sampler-2d: + dimensions: 2 + type: EXPRESSION + variables: *variables + expression: | + scale * herp(cellDistance(x, z) + lerp(cellMask(x, z), 0.7, 0, 1, 1), + -0.2, elevationWarped(x, z), + -0.75, cellLookup(x, z)+0.02 + ) + samplers: + elevationWarped: + dimensions: 2 + type: DOMAIN_WARP + amplitude: 5 + warp: + type: FBM + sampler: + type: OPEN_SIMPLEX_2 + salt: 62098 + sampler: + type: EXPRESSION + expression: elevation(x, z) + cellMask: + dimensions: 2 + type: PROBABILITY + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.005 + cellLookup: + <<: *cellBase + return: NoiseLookup + salt-lookup: false + lookup: + type: EXPRESSION + expression: elevation(x, z) + cellDistance: + dimensions: 2 + type: FBM + octaves: 4 + lacunarity: 2.4 + gain: 0.4 + sampler: + <<: *cellBase + return: Distance2Div \ No newline at end of file diff --git a/biomes/abstract/terrain/land/eq_land_shore_bumpy.yml b/biomes/abstract/terrain/land/eq_land_shore_bumpy.yml new file mode 100644 index 00000000..70080a5d --- /dev/null +++ b/biomes/abstract/terrain/land/eq_land_shore_bumpy.yml @@ -0,0 +1,18 @@ +id: EQ_LAND_SHORE_BUMPY +type: BIOME +abstract: true + +vars: &variables + base: $customization.yml:terrain-base-y-level + scale: $customization.yml:terrain-height + +terrain: + sampler: + type: EXPRESSION + expression: -y + base + simplex(x*20, z*20) + variables: *variables + + sampler-2d: + type: EXPRESSION + expression: scale * elevationDetailed(x, z) + variables: *variables \ No newline at end of file diff --git a/biomes/abstract/terrain/land/eq_multi_terraced_land.yml b/biomes/abstract/terrain/land/eq_multi_terraced_land.yml new file mode 100644 index 00000000..09db5362 --- /dev/null +++ b/biomes/abstract/terrain/land/eq_multi_terraced_land.yml @@ -0,0 +1,123 @@ +id: EQ_MULTI_TERRACED_LAND +type: BIOME +abstract: true + +variables: &variables + base: $customization.yml:terrain-base-y-level + scale: $customization.yml:terrain-height + + detailFactor: 0.05 + detailZero: 0 + detailFull: 0.2 + + terraceDepth: 1 + terraceZero: 0.1 + terraceFull: 0.2 + terraceVariationBase: 0.8 + terraceVariationScaled: 0.25 + terraceScale: 0.12 + +terrain: + sampler: + type: EXPRESSION + expression: -y + base + variables: *variables + + sampler-2d: + type: EXPRESSION + expression: | + scale * triTerrace( + combine( + elevation(x, z), + detailZero, 0, + detailFull, detail(x, z) * detailFactor + ), + terraceDepth, terraceZero, terraceFull, + terraceScale*1/3, terraceVariation(x, z+1000)*(terraceVariationBase+terraceVariationScaled*0), + terraceScale*2/3, terraceVariation(x, z+2000)*(terraceVariationBase+terraceVariationScaled*1), + terraceScale*3/3, terraceVariation(x, z+3000)*(terraceVariationBase+terraceVariationScaled*2) + ) + variables: *variables + samplers: + detail: # Creates bubbly looking terrain + dimensions: 2 + type: DOMAIN_WARP + amplitude: 5 + warp: + type: OPEN_SIMPLEX_2 + frequency: 0.02 + salt: 4219 + sampler: + type: PROBABILITY + sampler: + type: LINEAR + min: 0.2 + max: -1 + sampler: + type: CELLULAR + frequency: 0.07 + terraceVariation: + dimensions: 2 + type: FBM + octaves: 3 + lacunarity: 2.5 + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.0015 + functions: + combine: + arguments: + - x + - at + - a + - bt + - b + expression: x+lerp(x,at,a,bt,b) + functions: $math/functions/interpolation.yml:functions + + triTerrace: # This is a terrible function that exists to avoid duplicate calculations of the 'in' value. + # Allows terrace depth to be controlled according to the value it terraces. + arguments: + - in + - depth + - depthLerpZero # Value of 'in' where terrace depth should be 0 + - depthLerpFull # Value of 'in' where terrace depth should be depth + - scale1 + - offset1 + - scale2 + - offset2 + - scale3 + - offset3 + expression: | + triTerraceWithLerpedDepth( + in, + lerp(in, depthLerpZero, 0, depthLerpFull, depth), + scale1, offset1, + scale2, offset2, + scale3, offset3 + ) + functions: + "<<": + math/functions/interpolation.yml:functions + triTerraceWithLerpedDepth: + arguments: + - in + - depth + - scale1 + - offset1 + - scale2 + - offset2 + - scale3 + - offset3 + expression: | + terraceParalinear( + terraceParalinear( + terraceParalinear( + in, + scale1, offset1, 0, depth + ), + scale2, offset2, 0, depth + ), + scale3, offset3, 0, depth + ) + functions: $math/functions/terrace.yml:functions diff --git a/biomes/abstract/terrain/land/eq_overhangs.yml b/biomes/abstract/terrain/land/eq_overhangs.yml new file mode 100644 index 00000000..3db1cd32 --- /dev/null +++ b/biomes/abstract/terrain/land/eq_overhangs.yml @@ -0,0 +1,29 @@ +id: EQ_OVERHANGS +type: BIOME +abstract: true + +variables: &variables + base: $customization.yml:terrain-base-y-level + scale: $customization.yml:terrain-height + + overhangStrength: 20 + +terrain: + sampler: + type: EXPRESSION + expression: -y + base + overhangs(x, y*3, z) * overhangStrength + variables: *variables + samplers: + overhangs: + dimensions: 3 + type: FBM + octaves: 3 + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.01 + salt: 4957 + + sampler-2d: + type: EXPRESSION + expression: scale * elevationDetailed(x, z) + variables: *variables \ No newline at end of file diff --git a/biomes/abstract/terrain/land/eq_overpass.yml b/biomes/abstract/terrain/land/eq_overpass.yml new file mode 100644 index 00000000..b0153ce9 --- /dev/null +++ b/biomes/abstract/terrain/land/eq_overpass.yml @@ -0,0 +1,80 @@ +id: EQ_OVERPASS +type: BIOME +abstract: true + +variables: &variables + base: $customization.yml:terrain-base-y-level + scale: $customization.yml:terrain-height + depth: 0 + depthVariation: 20 + +terrain: + sampler: + type: EXPRESSION + dimensions: 3 + variables: *variables + expression: | + -y + base + + erode( + depth - depthVariationNoise(x, z) * depthVariation, + base, + elevation(x,z) * lerp(openings(x, z), 0.3, 1, 0.7, 1.2), + scale, + y, + 1 - lerp(openings(x, z), 0.6, 1, 0.8, 0) * lerp(erosion(x, z), 0.7, 0, 0.8, 1) + ) + samplers: &samplers + openings: + dimensions: 2 + type: DOMAIN_WARP + amplitude: 20 + warp: + type: OPEN_SIMPLEX_2 + frequency: 0.006 + salt: 4329 + sampler: + type: EXPRESSION_NORMALIZER + expression: -in + sampler: + type: CELLULAR + return: Distance2Div + frequency: 0.006 + salt: 6432 + erosion: + dimensions: 2 + type: OPEN_SIMPLEX_2 + frequency: 0.015 + salt: 8522 + depthVariationNoise: + dimensions: 2 + type: PROBABILITY + sampler: + type: FBM + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.008 + salt: 9 + functions: + erode: + arguments: [ depth, base, height, scale, y, erosion ] + expression: | + -lerp3(y, + base+height*scale, 0, + weightedAvg(base+height*scale, 1, base-depth, 2), erosion * (-y+base+height*scale) * lerp(height, 0.1, 0, 0.3, 4), + base-depth, 0 + ) + functions: + "<<": [ math/functions/interpolation.yml:functions ] + weightedAvg: + arguments: + - a + - aw + - b + - bw + expression: (a*aw + b*bw)/(aw + bw) + + sampler-2d: + type: EXPRESSION + variables: *variables + samplers: *samplers + expression: elevationDetailed(x, z) * scale \ No newline at end of file diff --git a/biomes/abstract/terrain/land/eq_rocky.yml b/biomes/abstract/terrain/land/eq_rocky.yml new file mode 100644 index 00000000..2aad5243 --- /dev/null +++ b/biomes/abstract/terrain/land/eq_rocky.yml @@ -0,0 +1,64 @@ +id: EQ_ROCKY +type: BIOME +abstract: true + +vars: &variables + base: $customization.yml:terrain-base-y-level + scale: $customization.yml:terrain-height + +cell-base: &cellBase + dimensions: 2 + type: CELLULAR + frequency: 0.012 + +terrain: + sampler: + dimensions: 3 + type: EXPRESSION + variables: *variables + expression: -y + base + + sampler-2d: + dimensions: 2 + type: EXPRESSION + variables: *variables + expression: | + scale * herp(cellDistance(x, z) + lerp(cellMask(x, z), 0.7, 0, 1, 1), + -0.2, elevationWarped(x, z), + -0.75, cellLookup(x, z)+0.02 + ) + samplers: + elevationWarped: + dimensions: 2 + type: DOMAIN_WARP + amplitude: 5 + warp: + type: FBM + sampler: + type: OPEN_SIMPLEX_2 + salt: 62098 + sampler: + type: EXPRESSION + expression: elevation(x, z) + cellMask: + dimensions: 2 + type: PROBABILITY + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.005 + cellLookup: + <<: *cellBase + return: NoiseLookup + salt-lookup: false + lookup: + type: EXPRESSION + expression: elevation(x, z) + cellDistance: + dimensions: 2 + type: FBM + octaves: 4 + lacunarity: 2.4 + gain: 0.4 + sampler: + <<: *cellBase + return: Distance2Div \ No newline at end of file diff --git a/biomes/abstract/terrain/land/eq_rocky_buttes.yml b/biomes/abstract/terrain/land/eq_rocky_buttes.yml new file mode 100644 index 00000000..59ce50b8 --- /dev/null +++ b/biomes/abstract/terrain/land/eq_rocky_buttes.yml @@ -0,0 +1,112 @@ +id: EQ_ROCKY_BUTTES +type: BIOME +abstract: true + +vars: &variables + base: $customization.yml:terrain-base-y-level + scale: $customization.yml:terrain-height + + terraceHeight: 0.13 + terraceHeightVariation: 0 + + depositMaskLowerBound: 0.7 + depositMaskUpperBound: 1 + depositTerraceHeight: 0.015 + + butteHeight: 0.45 + butteBase: 0.12 + butteMaskFrequency: 1 + butteMaskLowerBound: 0.75 + butteMaskUpperBound: 0.85 + +cell-base: &cellBase + dimensions: 2 + type: CELLULAR + frequency: 0.012 + +terrain: + sampler: + dimensions: 3 + type: EXPRESSION + variables: *variables + expression: -y + base + + sampler-2d: + dimensions: 2 + type: EXPRESSION + variables: *variables + expression: | + scale * ( + herp(cellDistance(x, z) + lerp(cellMask(x, z), 0.7, 0, 1, 1), + -0.2, elevation(x, z), + -0.75, cellLookup(x, z)+0.02 + ) + + max( + terraceStrata( + herp(|butteMask(x*butteMaskFrequency, z*butteMaskFrequency)|, + depositMaskLowerBound, 0, + depositMaskUpperBound, butteBase + ), + depositTerraceHeight, 0, 0, lerp(simplex(x*3,z*3),0.2,0,0.3,0.5) + ), + terraceStrata( + herp(|butteMask(x*butteMaskFrequency, z*butteMaskFrequency)|, + butteMaskLowerBound, 0, + butteMaskUpperBound, (buttes(x, z)+1)/2 * butteHeight + ), + terraceHeight, terraceVariation(x, z) * terraceHeightVariation, 0, 0.5 + ) + ) + ) + + + samplers: + terraceVariation: + dimensions: 2 + type: OPEN_SIMPLEX_2 + frequency: 0.001 + butteMask: + dimensions: 2 + type: DOMAIN_WARP + amplitude: 2 + warp: + type: OPEN_SIMPLEX_2 + frequency: 0.03 + salt: 6 + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.003 + salt: 5 + buttes: + dimensions: 2 + type: FBM + octaves: 3 + sampler: + type: LINEAR + min: -1 + max: -0.2 + sampler: + type: CELLULAR + frequency: 0.02 + cellMask: + dimensions: 2 + type: PROBABILITY + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.005 + cellLookup: + <<: *cellBase + return: NoiseLookup + salt-lookup: false + lookup: + type: EXPRESSION + expression: elevation(x, z) + cellDistance: + dimensions: 2 + type: FBM + octaves: 4 + lacunarity: 2.4 + gain: 0.4 + sampler: + <<: *cellBase + return: Distance2Div \ No newline at end of file diff --git a/biomes/abstract/terrain/land/eq_rocky_overhangs.yml b/biomes/abstract/terrain/land/eq_rocky_overhangs.yml new file mode 100644 index 00000000..fee19e6b --- /dev/null +++ b/biomes/abstract/terrain/land/eq_rocky_overhangs.yml @@ -0,0 +1,75 @@ +id: EQ_ROCKY_OVERHANGS +type: BIOME +abstract: true + +vars: &variables + base: $customization.yml:terrain-base-y-level + scale: $customization.yml:terrain-height + + overhangStrength: 10 + +cell-base: &cellBase + dimensions: 2 + type: CELLULAR + frequency: 0.012 + +terrain: + sampler: + dimensions: 3 + type: EXPRESSION + variables: *variables + expression: -y + base + overhangs(x, y*3, z) * overhangStrength + samplers: + overhangs: + dimensions: 3 + type: FBM + octaves: 3 + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.01 + salt: 4957 + + sampler-2d: + dimensions: 2 + type: EXPRESSION + variables: *variables + expression: | + scale * herp(cellDistance(x, z) + lerp(cellMask(x, z), 0.7, 0, 1, 1), + -0.2, elevationWarped(x, z), + -0.75, cellLookup(x, z)+0.02 + ) + samplers: + elevationWarped: + dimensions: 2 + type: DOMAIN_WARP + amplitude: 5 + warp: + type: FBM + sampler: + type: OPEN_SIMPLEX_2 + salt: 62098 + sampler: + type: EXPRESSION + expression: elevation(x, z) + cellMask: + dimensions: 2 + type: PROBABILITY + sampler: + type: OPEN_SIMPLEX_2 + frequency: 0.005 + cellLookup: + <<: *cellBase + return: NoiseLookup + salt-lookup: false + lookup: + type: EXPRESSION + expression: elevation(x, z) + cellDistance: + dimensions: 2 + type: FBM + octaves: 4 + lacunarity: 2.4 + gain: 0.4 + sampler: + <<: *cellBase + return: Distance2Div \ No newline at end of file diff --git a/biomes/abstract/terrain/land/hills-large/eq_spikes.yml b/biomes/abstract/terrain/land/eq_spikes.yml similarity index 55% rename from biomes/abstract/terrain/land/hills-large/eq_spikes.yml rename to biomes/abstract/terrain/land/eq_spikes.yml index f480a41d..b7452ea9 100644 --- a/biomes/abstract/terrain/land/hills-large/eq_spikes.yml +++ b/biomes/abstract/terrain/land/eq_spikes.yml @@ -1,36 +1,32 @@ id: EQ_SPIKES type: BIOME abstract: true -extends: NO_TERRAIN_2D -# Relatively flat terrain with small lakes, populated by large protruding spikes. - -vars: &variables +variables: &variables # Terms: - # - Ground - The basic terrain sans spikes # - Big spikes - Largest spikes protruding from ground # - Little spikes - Smaller ancillary spikes surrounding bigger spikes # - Platform - Slab of terrain surrounding the large & little spikes - # - Baby spikes - Tiny spikes as a part of the ground terrain - base: 64 # Base y level - groundHeight: 50 # Block height of ground terrain - babySpikeHeight: 20 # Block height of small ground spikes + base: $customization.yml:terrain-base-y-level + scale: $customization.yml:terrain-height spikeSlantStrength: 1 spikeCap: 0.7 # Cuts off the tips of spikes to mitigate floating terrain, 1 = no cap - bigSpikeHeight: 70 - bigSpikeMaskNone: 0.5 + bigSpikeHeight: 0.35 + bigSpikeMaskNone: 0.65 bigSpikeMaskFull: 1 - littleSpikeHeight: 40 - littleSpikeMaskNone: 0.1 - littleSpikeMaskFull: 1 + littleSpikeHeight: 0.17 + littleSpikeMaskNone: 0.4 + littleSpikeMaskFull: 0.8 + + platformHeight: 0.04 + platformMaskNone: 0.3 + platformMaskFull: 0.35 - platformHeight: 10 - platformMaskNone: 0 - platformMaskFull: 0.1 + elevationCutoff: 0.9 terrain: sampler: @@ -39,39 +35,12 @@ terrain: variables: *variables expression: | -y + base - + if(y