feat(worldgen): custom ultra-large terrain + fix spawn-dark-forest bias

Two related worldgen improvements validated in-game with Distant
Horizons + Lithosphere. Build + 6 GameTests green.

== Custom ultra-large terrain (preset ultra_wide_biome) ==
The mod controlled biome distribution but not relief, so the "long
prairies / immense mountain chains" effect was weak (relief was the
vanilla one that changes every ~1-2k blocks). Added a custom noise
settings custom_ore_gen:ultra_large_biome, built on top of Lithosphere's
large_biomes (which the mod already depends on for the mountain/cave
density functions).

Approach (iteratively tuned - v1/v2 with amplitude boost created HOLES in
the terrain; this v3-safe is the one that works):
  - 34 density functions copied verbatim from lithosphere, re-pointed
    to the custom_ore_gen: namespace (so our preset can reference them).
  - Cave density functions are NOT copied (left pointing at lithosphere:)
    so cave generation stays the natural Lithosphere one.
  - NOISE parameter references are NEVER namespacespaced - the noise
    parameter definitions live in the lithosphere jar and we just
    reference them (this was the v2 crash: an "Unbound values in
    registry noise: [custom_ore_gen:rivers, ...]" crash).
  - 9 MACRO density functions are stretched 2x in xz_scale only:
    continents, mountains_shape, basic_topography, orogeny,
    topography_final, topography_mountains, topography_swamps,
    topography_rivers, topography_cliffs. These drive the large-scale
    relief, so the effect is "longer plains, longer mountain chains".
  - 25 DETAIL density functions are left UNTOUCHED (xz_scale = original):
    roughness, rivers, mesas, erosion_detail, lake_placement, etc. Details
    must NOT be stretched or the terrain becomes incoherent.
  - NO amplitude boost on sloped_cheese: a v1 attempt with a x1.3
    multiplier pushed final_density out of [-1,1], which broke the
    `squeeze` envelope and carved literal HOLES in the terrain.

The preset data/custom_ore_gen/worldgen/world_preset/ultra_wide_biome.json
now references custom_ore_gen:ultra_large_biome (instead of the vanilla
minecraft:overworld it pointed at after the tectonic preset cleanup).

== Fix: spawn always landed in dark_forest ==
Root cause found by offline analysis:
  - LatitudeBiomeSource.spawnSafeBiomes (plains/forest/birch/...) only
    applied inside a 191x191 square (SPAWN_SAFE_RADIUS=96).
  - LatitudeSpawnHandler.findSpawnBiome scans rings up to MAX_RADIUS=512,
    so once it wandered past 96 blocks it fell out of the safe square and
    into the latitude_temperate_surface pool - which contains dark_forest.
  - Worse: findSpawnBiome probed biomes at y=0 (underground), but the
    latitude biome legitimately differs between y=0 and y=64 (the 3-zone
    underground model extends latitude DOWNWARDS), so a "safe" biome at
    y=0 could be dark_forest at the actual surface.

Fix:
  - SPAWN_SAFE_RADIUS 96 -> 540 (covers the handler's MAX_RADIUS=512
    search so the safe-square guarantee applies to everything found).
  - SPAWN_SELECTOR_SCALE 0.02 -> 0.004 so the safe square is populated
    by large blocks of the same safe biome (instead of a per-block
    patchwork).
  - LatitudeSpawnHandler now probes biomes at SURFACE_Y=64 instead of
    y=0, so what it validates matches what the player actually sees.

LatitudeMathTest updated for the new radius (191->1079 inclusive square).

Verification: ./gradlew test build -> BUILD SUCCESSFUL, 71/71 unit tests
            ./gradlew runGameTestServer -> 6/6 GameTests passed in 1.0s,
              spawn=birch_forest (safe, not dark_forest),
              north=100% cold, south=100% hot, deepDark=1.3%
This commit is contained in:
feldenr
2026-06-21 16:13:47 +02:00
parent d0df118270
commit 600393399f
39 changed files with 5790 additions and 24 deletions
@@ -42,8 +42,8 @@ public final class LatitudeMath {
// Spawn safe zone // Spawn safe zone
// ------------------------------------------------------------------ // ------------------------------------------------------------------
public static final int SPAWN_SAFE_RADIUS = 96; public static final int SPAWN_SAFE_RADIUS = 540;
public static final double SPAWN_SELECTOR_SCALE = 0.02; public static final double SPAWN_SELECTOR_SCALE = 0.004;
/** Underground vertical zone, mirroring {@link LatitudeBiomeSource#applyCaveOverrides}. */ /** Underground vertical zone, mirroring {@link LatitudeBiomeSource#applyCaveOverrides}. */
public enum Zone { public enum Zone {
@@ -38,12 +38,16 @@ public class LatitudeSpawnHandler {
Biomes.MEADOW, Biomes.CHERRY_GROVE Biomes.MEADOW, Biomes.CHERRY_GROVE
); );
/** Maximum search radius (in blocks) around the origin. */ /** Maximum search radius (in blocks) around the origin. Kept inside the BiomeSource */
/** SPAWN_SAFE_RADIUS (540) so the safe-square guarantee applies to everything we find. */
private static final int MAX_RADIUS = 512; private static final int MAX_RADIUS = 512;
/** Step between sampled positions. */ /** Step between sampled positions. */
private static final int STEP = 8; private static final int STEP = 8;
/** Surface Y used for biome probing - must match LatitudeGameTest.SURFACE_Y semantics. */
private static final int SURFACE_Y = 64;
private static volatile boolean initialized = false; private static volatile boolean initialized = false;
@SubscribeEvent @SubscribeEvent
@@ -64,8 +68,14 @@ public class LatitudeSpawnHandler {
return; return;
} }
// Probe biomes at the SURFACE (y=64), not at y=0. Underground the latitude biome extends
// downwards by design, so probing at y=0 could match a SPAWN_BIOMES that differs from what
// the player actually sees on the surface. The BiomeSource spawn-safe square covers the
// first 540 blocks around the origin, so probing at surface y and within that square reliably
// lands on plains/forest - never dark_forest (which is only in the temperate surface pool,
// used outside the safe square).
BlockPos current = levelData.getSpawnPos(); BlockPos current = levelData.getSpawnPos();
if (isSpawnBiome(level, current)) { if (isSpawnBiomeAtSurface(level, current.getX(), current.getZ())) {
return; // Already on a good biome, leave it alone. return; // Already on a good biome, leave it alone.
} }
@@ -82,13 +92,14 @@ public class LatitudeSpawnHandler {
level.getBiome(spawn).unwrapKey().map(Object::toString).orElse("?")); level.getBiome(spawn).unwrapKey().map(Object::toString).orElse("?"));
} }
private static boolean isSpawnBiome(ServerLevel level, BlockPos pos) { private static boolean isSpawnBiomeAtSurface(ServerLevel level, int x, int z) {
Holder<Biome> biome = level.getBiome(pos); Holder<Biome> biome = level.getBiome(new BlockPos(x, SURFACE_Y, z));
return biome.unwrapKey().map(SPAWN_BIOMES::contains).orElse(false); return biome.unwrapKey().map(SPAWN_BIOMES::contains).orElse(false);
} }
private static BlockPos findSpawnBiome(ServerLevel level) { private static BlockPos findSpawnBiome(ServerLevel level) {
// Concentric square rings starting from the origin. // Concentric square rings starting from the origin. We probe at SURFACE_Y because the
// latitude biome at y=0 can legitimately differ from the surface biome.
for (int radius = 0; radius <= MAX_RADIUS; radius += STEP) { for (int radius = 0; radius <= MAX_RADIUS; radius += STEP) {
for (int x = -radius; x <= radius; x += STEP) { for (int x = -radius; x <= radius; x += STEP) {
for (int z = -radius; z <= radius; z += STEP) { for (int z = -radius; z <= radius; z += STEP) {
@@ -96,9 +107,8 @@ public class LatitudeSpawnHandler {
if (Math.abs(x) != radius && Math.abs(z) != radius && radius != 0) { if (Math.abs(x) != radius && Math.abs(z) != radius && radius != 0) {
continue; continue;
} }
BlockPos pos = new BlockPos(x, 0, z); if (isSpawnBiomeAtSurface(level, x, z)) {
if (isSpawnBiome(level, pos)) { return new BlockPos(x, 0, z);
return pos;
} }
} }
} }
@@ -0,0 +1,93 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "mul",
"argument1": 0.6,
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": {
"type": "add",
"argument1": "custom_ore_gen:volcanic_islands",
"argument2": "custom_ore_gen:continents"
},
"argument2": {
"type": "abs",
"argument": {
"type": "mul",
"argument1": {
"type": "noise",
"noise": "minecraft:erosion",
"xz_scale": 1.05,
"y_scale": 0
},
"argument2": 0.1
}
}
},
"points": [
{
"location": -1.213001338068079,
"value": -1.7064387458300765,
"derivative": 0
},
{
"location": -0.7627571197458174,
"value": -1.6061786740436106,
"derivative": 0.3380331078862123
},
{
"location": -0.48698253602343267,
"value": -1.4380004891114746,
"derivative": 0.7293714366314117
},
{
"location": -0.397,
"value": -1.06,
"derivative": 0.185
},
{
"location": -0.1,
"value": -0.95,
"derivative": 0.5755
},
{
"location": 0.06,
"value": -0.85,
"derivative": 0.15
},
{
"location": 0.139,
"value": -0.79,
"derivative": 0.7
},
{
"location": 0.14,
"value": -0.79,
"derivative": 0.2
},
{
"location": 0.2,
"value": -0.7555,
"derivative": 0.16
},
{
"location": 0.5764376203349904,
"value": -0.7167748114217367,
"derivative": 0.059949233699557354
},
{
"location": 1.4999126514129806,
"value": -0.6132805437711915,
"derivative": 0
}
]
}
}
}
}
}
@@ -0,0 +1,300 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": "custom_ore_gen:river_valleys",
"points": [
{
"location": 0,
"value": 0,
"derivative": 0
},
{
"location": 3,
"value": 1,
"derivative": 0
}
]
}
},
"argument2": {
"type": "mul",
"argument1": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": "custom_ore_gen:roughness",
"argument2": {
"type": "noise",
"noise": "lithosphere:cliffs_height",
"xz_scale": 150,
"y_scale": 0
}
},
"points": [
{
"location": -0.5,
"value": 0.5,
"derivative": 0
},
{
"location": 0,
"value": 0.75,
"derivative": 0.55
},
{
"location": 0.5,
"value": 1,
"derivative": 0
}
]
}
},
"argument2": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": {
"type": "mul",
"argument1": 0.6,
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": {
"type": "add",
"argument1": "custom_ore_gen:continents",
"argument2": {
"type": "mul",
"argument1": {
"type": "noise",
"noise": "minecraft:erosion",
"xz_scale": 9.1,
"y_scale": 0
},
"argument2": 0.1
}
},
"argument2": -0.35
},
"argument2": 0.5
},
"points": [
{
"location": -0.7,
"value": 0.0,
"derivative": 0
},
{
"location": -0.4,
"value": -0.07,
"derivative": 0
},
{
"location": -0.185,
"value": 0.05,
"derivative": 0.3
},
{
"location": -0.18,
"value": 0.075,
"derivative": 9.0
},
{
"location": -0.075,
"value": 1.0,
"derivative": 0
},
{
"location": 0.3,
"value": 0.0,
"derivative": 0
}
]
}
}
},
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "noise",
"noise": "lithosphere:variation_select",
"xz_scale": 0.18,
"y_scale": 0
},
"points": [
{
"location": -0.1,
"value": 0.0,
"derivative": 0
},
{
"location": 0.0,
"value": 1.0,
"derivative": 0
}
]
}
}
},
"argument2": {
"type": "mul",
"argument1": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "mul",
"argument1": 0.5,
"argument2": {
"type": "add",
"argument1": -0.275,
"argument2": {
"type": "add",
"argument1": "custom_ore_gen:continents",
"argument2": {
"type": "mul",
"argument1": {
"type": "noise",
"noise": "minecraft:erosion",
"xz_scale": 9.1,
"y_scale": 0
},
"argument2": 0.07
}
}
}
},
"points": [
{
"location": -0.7,
"value": 0,
"derivative": 0
},
{
"location": -0.4,
"value": -0.08,
"derivative": 0
},
{
"location": -0.25,
"value": 0.0,
"derivative": 0.2
},
{
"location": -0.249,
"value": 0.0,
"derivative": 0.0
},
{
"location": -0.175,
"value": 0.0,
"derivative": 0.0
},
{
"location": -0.13,
"value": 0.175,
"derivative": 15.0
},
{
"location": -0.1,
"value": 1,
"derivative": 0
},
{
"location": 0.3,
"value": 0,
"derivative": 0
}
]
}
},
"argument2": 0.6
},
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "noise",
"noise": "lithosphere:variation_select",
"xz_scale": 0.18,
"y_scale": 0
},
"points": [
{
"location": -0.1,
"value": 1.0,
"derivative": 0
},
{
"location": 0.0,
"value": 0.0,
"derivative": 0
}
]
}
}
}
}
},
"argument2": {
"type": "mul",
"argument1": {
"type": "clamp",
"min": 0,
"max": 1,
"input": {
"type": "add",
"argument1": {
"type": "add",
"argument1": {
"type": "noise",
"noise": "lithosphere:cliffs",
"xz_scale": 0.4,
"y_scale": 0
},
"argument2": {
"type": "mul",
"argument1": "custom_ore_gen:roughness",
"argument2": 0.3
}
},
"argument2": 0.3
}
},
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": "custom_ore_gen:orogeny",
"points": [
{
"location": 0.6,
"value": 0,
"derivative": 0
},
{
"location": 2,
"value": 1.2,
"derivative": 0
}
]
}
}
}
}
}
}
}
@@ -0,0 +1,196 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "mul",
"argument1": 0.6,
"argument2": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": {
"type": "noise",
"noise": "minecraft:erosion",
"xz_scale": 0.1,
"y_scale": 0
},
"argument2": 0.1
},
"argument2": {
"type": "min",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:continent_trenches_b",
"xz_scale": 0.1,
"y_scale": 0
}
},
"argument2": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:continent_trenches_a",
"xz_scale": 0.1,
"y_scale": 0
}
}
}
},
"argument2": 0.3
},
"points": [
{
"location": 0,
"value": 0,
"derivative": 0
},
{
"location": 0.005,
"value": 0.2,
"derivative": 0.5
},
{
"location": 0.06,
"value": 0.45,
"derivative": 0.1
},
{
"location": 0.105,
"value": 0.55,
"derivative": 0.22
},
{
"location": 0.165,
"value": 0.6,
"derivative": 0.22
},
{
"location": 0.5,
"value": 0.75,
"derivative": 0.7
},
{
"location": 1,
"value": 1,
"derivative": 0
}
]
}
},
"argument2": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": 0.1,
"argument2": {
"type": "add",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "minecraft:continentalness_large",
"xz_scale": 0.05,
"y_scale": 0
}
},
"argument2": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:continentalness",
"xz_scale": 0.025,
"y_scale": 0
}
}
}
},
"argument2": 5.0
},
"argument2": {
"type": "mul",
"argument1": {
"type": "clamp",
"min": -0.1,
"max": 6,
"input": {
"type": "mul",
"argument1": 2.5,
"argument2": {
"type": "add",
"argument1": -0.1,
"argument2": {
"type": "noise",
"noise": "lithosphere:continent_regions",
"xz_scale": 10.0,
"y_scale": 0
}
}
}
},
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "noise",
"noise": "lithosphere:orogeny",
"xz_scale": 0.025,
"y_scale": 0
},
"points": [
{
"location": -1.0059170172770522,
"value": -0.0023781670732448967,
"derivative": 0
},
{
"location": -0.2629656813549912,
"value": 2,
"derivative": 0
},
{
"location": 0.503051207772355,
"value": 0.003392583914896552,
"derivative": 0
}
]
}
}
}
}
},
"argument2": -1.5000000000000002
}
},
"points": [
{
"location": -1.0014012866114452,
"value": -0.7471759829313853,
"derivative": 0
},
{
"location": 1,
"value": 1,
"derivative": 1
}
]
}
}
}
}
@@ -0,0 +1,65 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "max",
"argument1": "custom_ore_gen:continents",
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": "custom_ore_gen:volcanic_islands",
"points": [
{
"location": 0.14360335362930743,
"value": -0.1310218390591008,
"derivative": 18.0000000000004
},
{
"location": 0.14880633072371618,
"value": -0.1015555424693857,
"derivative": 0
},
{
"location": 0.2,
"value": -0.08147924539874107,
"derivative": 0
}
]
}
}
},
"points": [
{
"location": -0.49976008525166954,
"value": -0.5002721028087205,
"derivative": 1
},
{
"location": -0.10337850472876609,
"value": -0.20295646190819788,
"derivative": 0.25036175009465034
},
{
"location": 0.12634764285727262,
"value": -0.09327753654205617,
"derivative": 0
},
{
"location": 0.17710100129056594,
"value": 0.3240372305999084,
"derivative": 0
},
{
"location": 0.49749810507038805,
"value": 0.49871852056804145,
"derivative": 1.0325850374726078
}
]
}
}
}
}
@@ -0,0 +1,72 @@
{
"type": "squeeze",
"argument": {
"type": "mul",
"argument1": 0.64,
"argument2": {
"type": "interpolated",
"argument": {
"type": "add",
"argument1": 0.1171875,
"argument2": {
"type": "mul",
"argument1": {
"type": "y_clamped_gradient",
"from_y": -64,
"to_y": -40,
"from_value": 0,
"to_value": 1
},
"argument2": {
"type": "add",
"argument1": -0.1171875,
"argument2": {
"type": "add",
"argument1": -0.078125,
"argument2": {
"type": "mul",
"argument1": {
"type": "y_clamped_gradient",
"from_y": 500,
"to_y": 520,
"from_value": 1,
"to_value": 0
},
"argument2": {
"type": "add",
"argument1": 0.078125,
"argument2": {
"type": "add",
"argument1": "custom_ore_gen:sloped_cheese",
"argument2": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": "custom_ore_gen:sloped_cheese",
"points": [
{
"location": 0.1,
"value": 0.0,
"derivative": 0
},
{
"location": 0.45,
"value": 1.0,
"derivative": 0
}
]
}
},
"argument2": "lithosphere:caves/caves_final"
}
}
}
}
}
}
}
}
}
}
}
@@ -0,0 +1,40 @@
{
"type": "minecraft:cache_once",
"argument": {
"type": "add",
"argument1": {
"type": "add",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "y_clamped_gradient",
"from_y": -64,
"to_y": 512,
"from_value": 1.5,
"to_value": -2.5
},
"points": [
{
"location": -0.001,
"value": -0.001,
"derivative": 1
},
{
"location": 0.001,
"value": -0.001,
"derivative": 0.4
},
{
"location": 1.0,
"value": 1.0,
"derivative": 1
}
]
}
},
"argument2": "custom_ore_gen:topography_final"
},
"argument2": -0.1
}
}
@@ -0,0 +1,19 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "abs",
"argument": {
"type": "mul",
"argument1": {
"type": "noise",
"noise": "lithosphere:rivers_detail",
"xz_scale": 3,
"y_scale": 0
},
"argument2": 0.10000000000000003
}
}
}
}
@@ -0,0 +1,69 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "mul",
"argument1": {
"type": "mul",
"argument1": -1,
"argument2": {
"type": "add",
"argument1": -1,
"argument2": "custom_ore_gen:lakes_placement"
}
},
"argument2": {
"type": "add",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": {
"type": "add",
"argument1": {
"type": "noise",
"noise": "minecraft:erosion",
"xz_scale": 3,
"y_scale": 0
},
"argument2": -0.2
},
"argument2": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:rivers_detail",
"xz_scale": 5.9,
"y_scale": 0
}
},
"argument2": -0.4
},
"argument2": 0.5
}
},
"points": [
{
"location": 0.5,
"value": -0.26,
"derivative": 0.07
},
{
"location": 1,
"value": -0.24,
"derivative": 0
}
]
}
},
"argument2": -0.3
}
}
}
}
@@ -0,0 +1,146 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": 0.5,
"argument2": {
"type": "add",
"argument1": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": -0.4,
"argument2": {
"type": "add",
"argument1": {
"type": "noise",
"noise": "lithosphere:lakes_placement",
"xz_scale": 0.4,
"y_scale": 0
},
"argument2": {
"type": "mul",
"argument1": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:continentalness",
"xz_scale": 0.3,
"y_scale": 0
}
},
"argument2": -4.4
},
"argument2": -0.9999999999999999
},
"argument2": 0.06
}
}
},
"points": [
{
"location": -0.3,
"value": 1,
"derivative": -0.05
},
{
"location": 0.4,
"value": -1,
"derivative": 0
}
]
}
},
"argument2": 0.9999999999999992
},
"argument2": {
"type": "add",
"argument1": "custom_ore_gen:roughness",
"argument2": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:rivers_detail",
"xz_scale": 3,
"y_scale": 0
}
},
"argument2": -0.4
},
"argument2": 0.35
}
}
},
"argument2": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": "custom_ore_gen:continents",
"points": [
{
"location": -0.3,
"value": 1,
"derivative": 0
},
{
"location": 1,
"value": 0,
"derivative": 0
}
]
}
},
"argument2": 2
}
}
},
"points": [
{
"location": -0.8,
"value": 0,
"derivative": 0
},
{
"location": -0.5,
"value": 0.15,
"derivative": 0.3
},
{
"location": -0.32,
"value": 0.25,
"derivative": 1
},
{
"location": 0.6,
"value": 1,
"derivative": 0
},
{
"location": 0.7,
"value": 1,
"derivative": 0
}
]
}
}
}
}
@@ -0,0 +1,71 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "add",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "noise",
"noise": "lithosphere:mesa_placement",
"xz_scale": 0.35,
"y_scale": 0
},
"points": [
{
"location": -1.5,
"value": -4,
"derivative": 0
},
{
"location": 0.6,
"value": 0.5,
"derivative": 0
}
]
}
},
"argument2": {
"type": "add",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": "custom_ore_gen:continents",
"points": [
{
"location": -0.8,
"value": -4,
"derivative": 0
},
{
"location": 0.6,
"value": 0,
"derivative": 0
}
]
}
},
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": "custom_ore_gen:swamp_placement",
"points": [
{
"location": 0.19925928566100026,
"value": -0.00394316740780809,
"derivative": 0
},
{
"location": 1.098883476098011,
"value": -3.9953112100754486,
"derivative": 0
}
]
}
}
}
}
}
}
@@ -0,0 +1,200 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "mul",
"argument1": {
"type": "mul",
"argument1": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": "custom_ore_gen:orogeny",
"points": [
{
"location": 1.0,
"value": 1.0,
"derivative": 0
},
{
"location": 2.0,
"value": 0.0,
"derivative": 0
}
]
}
},
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "noise",
"noise": "lithosphere:mesa_height",
"xz_scale": 0.7,
"y_scale": 0
},
"points": [
{
"location": -1.5,
"value": 0,
"derivative": 0
},
{
"location": 1,
"value": 0.7,
"derivative": 0
},
{
"location": 2.2,
"value": 1.2,
"derivative": 0
}
]
}
}
},
"argument2": 0.30000000000000004
},
"argument2": {
"type": "add",
"argument1": {
"type": "add",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": {
"type": "noise",
"noise": "lithosphere:mesa_variation",
"xz_scale": 0.3,
"y_scale": 0
},
"argument2": {
"type": "add",
"argument1": "custom_ore_gen:mesa_placement",
"argument2": {
"type": "noise",
"noise": "lithosphere:mesa_additions",
"xz_scale": 1.5,
"y_scale": 0
}
}
},
"points": [
{
"location": -0.15,
"value": 0,
"derivative": 0
},
{
"location": 0.0471304347826087,
"value": 0.1993478260869566,
"derivative": 0
},
{
"location": 0.12,
"value": 1,
"derivative": 0.25
},
{
"location": 0.32,
"value": 1.15,
"derivative": 0.15
}
]
}
},
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": "custom_ore_gen:mesa_placement",
"argument2": {
"type": "noise",
"noise": "lithosphere:mesa_base",
"xz_scale": 1,
"y_scale": 0
}
},
"argument2": 0.6666666666666666
},
"points": [
{
"location": -0.16,
"value": 0,
"derivative": 0
},
{
"location": 0.049913043478260866,
"value": 0.1993478260869566,
"derivative": 0
},
{
"location": 0.1,
"value": 1,
"derivative": 0.25
},
{
"location": 0.3,
"value": 1.15,
"derivative": 0.15
}
]
}
}
},
"argument2": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": -0.10000000000000003,
"argument2": {
"type": "add",
"argument1": {
"type": "noise",
"noise": "lithosphere:mesa_base",
"xz_scale": 1.7000000000000004,
"y_scale": 0
},
"argument2": "custom_ore_gen:mesa_placement"
}
},
"points": [
{
"location": -0.16330434782608683,
"value": -0.0013043478260863495,
"derivative": 0
},
{
"location": 0.05026086956521736,
"value": 0.20452173913043542,
"derivative": 0
},
{
"location": 0.10434782608695659,
"value": 0.9965217391304348,
"derivative": 0.1768421052631575
},
{
"location": 0.30086956521739117,
"value": 1.1521739130434785,
"derivative": 0.1424999999999989
}
]
}
},
"argument2": 0.7
}
}
}
}
}
@@ -0,0 +1,179 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "mul",
"argument1": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "noise",
"noise": "lithosphere:mesa_height",
"xz_scale": 0.7,
"y_scale": 0
},
"points": [
{
"location": -1.5,
"value": 0.0,
"derivative": 0
},
{
"location": 1,
"value": 0.7,
"derivative": 0
},
{
"location": 2.2,
"value": 1.2,
"derivative": 0
}
]
}
},
"argument2": 0.30000000000000004
},
"argument2": {
"type": "add",
"argument1": {
"type": "add",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": {
"type": "noise",
"noise": "lithosphere:mesa_variation",
"xz_scale": 0.3,
"y_scale": 0
},
"argument2": {
"type": "add",
"argument1": "custom_ore_gen:mesa_placement",
"argument2": {
"type": "noise",
"noise": "lithosphere:mesa_additions",
"xz_scale": 1.5,
"y_scale": 0
}
}
},
"points": [
{
"location": -0.15,
"value": 0,
"derivative": 0
},
{
"location": 0.0471304347826087,
"value": 0.1993478260869566,
"derivative": 0
},
{
"location": 0.12,
"value": 1,
"derivative": 0.25
},
{
"location": 0.32,
"value": 1.15,
"derivative": 0.15
}
]
}
},
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": "custom_ore_gen:mesa_placement",
"argument2": {
"type": "noise",
"noise": "lithosphere:mesa_base",
"xz_scale": 1,
"y_scale": 0
}
},
"argument2": 0.6666666666666666
},
"points": [
{
"location": -0.16,
"value": 0,
"derivative": 0
},
{
"location": 0.049913043478260866,
"value": 0.1993478260869566,
"derivative": 0
},
{
"location": 0.1,
"value": 1,
"derivative": 0.25
},
{
"location": 0.3,
"value": 1.15,
"derivative": 0.15
}
]
}
}
},
"argument2": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": -0.10000000000000003,
"argument2": {
"type": "add",
"argument1": {
"type": "noise",
"noise": "lithosphere:mesa_base",
"xz_scale": 1.7000000000000004,
"y_scale": 0
},
"argument2": "custom_ore_gen:mesa_placement"
}
},
"points": [
{
"location": -0.16330434782608683,
"value": -0.0013043478260863495,
"derivative": 0
},
{
"location": 0.05026086956521736,
"value": 0.20452173913043542,
"derivative": 0
},
{
"location": 0.10434782608695659,
"value": 0.9965217391304348,
"derivative": 0.1768421052631575
},
{
"location": 0.30086956521739117,
"value": 1.1521739130434785,
"derivative": 0.1424999999999989
}
]
}
},
"argument2": 0.7
}
}
}
}
}
@@ -0,0 +1,164 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": {
"type": "abs",
"argument": {
"type": "shifted_noise",
"noise": "lithosphere:mountains_shape",
"xz_scale": 105.90000000000047,
"y_scale": 0,
"shift_x": -100000,
"shift_y": 0,
"shift_z": 100000
}
},
"argument2": {
"type": "abs",
"argument": {
"type": "shifted_noise",
"noise": "lithosphere:mountains_shape",
"xz_scale": 60.0000000000006,
"y_scale": 0,
"shift_x": 100000,
"shift_y": 0,
"shift_z": -100000
}
}
},
"argument2": 0.5999999999999993
},
"argument2": 1.5
},
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": {
"type": "abs",
"argument": {
"type": "mul",
"argument1": 2.1,
"argument2": {
"type": "noise",
"noise": "lithosphere:mountains_valleys",
"xz_scale": 0.175,
"y_scale": 0
}
}
},
"argument2": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "minecraft:jagged",
"xz_scale": 1.0999999999999999,
"y_scale": 0
}
},
"argument2": -0.01
},
"argument2": 0.2
}
},
"points": [
{
"location": 0.0002636959756417423,
"value": 0.0016079171144931514,
"derivative": 0
},
{
"location": 0.25,
"value": 0.5025172744345754,
"derivative": 0.36574074074074464
},
{
"location": 0.5680059985537048,
"value": 0.9974804958648761,
"derivative": 0
},
{
"location": 0.877068240778131,
"value": 1.1727179882717886,
"derivative": 0.2
},
{
"location": 3.006104525397133,
"value": 1.3979741128283603,
"derivative": 0
}
]
}
}
},
"argument2": {
"type": "mul",
"argument1": "custom_ore_gen:mountains_weathering",
"argument2": 0.15
}
},
"argument2": {
"type": "mul",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "minecraft:erosion",
"xz_scale": 0.975,
"y_scale": 0
}
},
"argument2": 0.05
}
},
"argument2": 0.7999999999999999
},
"points": [
{
"location": -1.2,
"value": -0.6461375418382934,
"derivative": 0.587048994490454
},
{
"location": 0.3,
"value": 0.5,
"derivative": 0.8
},
{
"location": 1.3466961487857894,
"value": 1.523097380959721,
"derivative": 1.021015477029345
},
{
"location": 2.5563444318881157,
"value": 2.2988765929422055,
"derivative": 0
}
]
}
}
}
}
@@ -0,0 +1,243 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": {
"type": "mul",
"argument1": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": "custom_ore_gen:continents",
"points": [
{
"location": 0,
"value": 0,
"derivative": 0
},
{
"location": 1.25,
"value": 1,
"derivative": 0
}
]
}
},
"argument2": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": {
"type": "add",
"argument1": 1.0999999999999999,
"argument2": {
"type": "mul",
"argument1": -0.7,
"argument2": {
"type": "abs",
"argument": {
"type": "shifted_noise",
"noise": "lithosphere:mountains_base",
"xz_scale": 0.85,
"y_scale": 0,
"shift_x": -5000,
"shift_y": 0,
"shift_z": -5000
}
}
}
},
"argument2": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": {
"type": "abs",
"argument": {
"type": "shifted_noise",
"noise": "lithosphere:mountains_base",
"xz_scale": 0.8,
"y_scale": 0,
"shift_x": 5000,
"shift_y": 0,
"shift_z": 5000
}
},
"argument2": -0.7
},
"argument2": 1.3
}
},
"argument2": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:mountains_base",
"xz_scale": 0.85,
"y_scale": 0
}
},
"argument2": 0.09999999999999992
},
"argument2": 0.9999999999999999
}
},
"argument2": -0.9999999999999999
}
},
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "mul",
"argument1": "custom_ore_gen:mountains_base",
"argument2": {
"type": "mul",
"argument1": 0.5,
"argument2": "custom_ore_gen:orogeny"
}
},
"points": [
{
"location": -0.1,
"value": 0.0,
"derivative": 0
},
{
"location": 0.9,
"value": 0.5,
"derivative": 1.2
},
{
"location": 1.3,
"value": 0.95,
"derivative": 0
},
{
"location": 1.6,
"value": 1.0,
"derivative": 0
},
{
"location": 2.25,
"value": 1.1,
"derivative": 0
}
]
}
}
},
"argument2": 1.5000000000000007
},
"argument2": {
"type": "mul",
"argument1": "custom_ore_gen:mountains_base",
"argument2": 0.7999999999999999
}
},
"argument2": 1.2
},
"points": [
{
"location": -2.0008288243387504,
"value": -0.49897615549681923,
"derivative": 0
},
{
"location": -0.7722271935763148,
"value": -0.12420646904228239,
"derivative": 0.49344316811070665
},
{
"location": 0.4,
"value": 0.6,
"derivative": 0.8
},
{
"location": 2.6224934733128626,
"value": 3.1735981437831056,
"derivative": 0.3494421418602317
},
{
"location": 5.000299852617543,
"value": 6.583799642372736,
"derivative": 1.7304960909246236
},
{
"location": 5.156001748812116,
"value": 6.996412354006738,
"derivative": 0.33835761411195625
},
{
"location": 7.582408947589361,
"value": 6.011514694863861,
"derivative": 0
}
]
}
},
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:rivers",
"xz_scale": 0.35,
"y_scale": 0
}
},
"argument2": {
"type": "mul",
"argument1": "custom_ore_gen:mountains_weathering",
"argument2": 0.3
}
},
"points": [
{
"location": 0,
"value": 0,
"derivative": 0
},
{
"location": 0.5,
"value": 0.25,
"derivative": 0
},
{
"location": 2,
"value": 0.85,
"derivative": 0.33
},
{
"location": 3,
"value": 1,
"derivative": 0
}
]
}
}
}
}
}
@@ -0,0 +1,27 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "add",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "minecraft:erosion",
"xz_scale": 2,
"y_scale": 0
}
},
"argument2": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "minecraft:ridge",
"xz_scale": 0.6,
"y_scale": 0
}
}
}
}
}
@@ -0,0 +1,73 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": "custom_ore_gen:roughness",
"argument2": {
"type": "noise",
"noise": "lithosphere:mountains_base",
"xz_scale": 2.0,
"y_scale": 0
}
},
"points": [
{
"location": -0.15,
"value": 0.7,
"derivative": 0
},
{
"location": -0.05,
"value": 0.6,
"derivative": 0
},
{
"location": 0.05,
"value": 0.5,
"derivative": 0
},
{
"location": 0.15,
"value": 0.4,
"derivative": 0
}
]
}
},
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": "custom_ore_gen:roughness",
"argument2": "minecraft:overworld/continents"
},
"points": [
{
"location": -1.2,
"value": 1.1,
"derivative": 0
},
{
"location": -1.08,
"value": 1.0,
"derivative": 0
},
{
"location": -1.02,
"value": 0.0,
"derivative": 0
}
]
}
}
}
}
}
@@ -0,0 +1,100 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": -0.2,
"argument2": {
"type": "mul",
"argument1": 3.200000000000001,
"argument2": {
"type": "add",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "mul",
"argument1": 3,
"argument2": {
"type": "add",
"argument1": -0.10000000000000003,
"argument2": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:orogeny",
"xz_scale": 0.03,
"y_scale": 0
}
}
}
},
"points": [
{
"location": -1,
"value": -1,
"derivative": 1
},
{
"location": 1.9869910107372983,
"value": 1.493458466864761,
"derivative": 0
}
]
}
},
"argument2": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:orogeny_variation",
"xz_scale": 0.04,
"y_scale": 0
}
},
"argument2": -1.2000000000000037
},
"argument2": 0.35
}
}
}
},
"points": [
{
"location": -1.5473011420027334,
"value": 2.1448256191166886,
"derivative": 0
},
{
"location": -0.0034350304074217686,
"value": 1.912965422058449,
"derivative": -0.03837981999595763
},
{
"location": 1.2462071875958165,
"value": 1.112938038310409,
"derivative": -0.1041737971318851
},
{
"location": 2.4862331054926377,
"value": 0.43427069702551413,
"derivative": 0
},
{
"location": 4.545910168043465,
"value": -0.014228459376440017,
"derivative": 0
}
]
}
}
}
}
@@ -0,0 +1,37 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:rivers",
"xz_scale": 0.7,
"y_scale": 0
}
},
"points": [
{
"location": 0,
"value": 0,
"derivative": 0
},
{
"location": 0.01,
"value": 0,
"derivative": 0
},
{
"location": 0.1,
"value": 1,
"derivative": 0
}
]
}
}
}
}
@@ -0,0 +1,46 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "mul",
"argument1": "custom_ore_gen:roughness",
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:rivers",
"xz_scale": 0.7000000000000001,
"y_scale": 0
}
},
"points": [
{
"location": 0.0010537059864972331,
"value": 0.004126671646150548,
"derivative": 0
},
{
"location": 0.029203935180293905,
"value": 0.0823975951013069,
"derivative": 7.44416873449137
},
{
"location": 0.057658190170974344,
"value": 0.503543855067291,
"derivative": 14.516129032258162
},
{
"location": 0.1497165175582627,
"value": 1.0016307049315492,
"derivative": 0
}
]
}
}
}
}
}
@@ -0,0 +1,154 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "add",
"argument1": -0.555,
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": "custom_ore_gen:river_roughness",
"argument2": {
"type": "mul",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:rivers",
"xz_scale": 0.7,
"y_scale": 0
}
},
"argument2": {
"type": "clamp",
"min": 0.1,
"max": 1,
"input": {
"type": "add",
"argument1": {
"type": "clamp",
"min": 0,
"max": 0.9999999999999999,
"input": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": "custom_ore_gen:river_mask",
"argument2": -0.8
},
"argument2": 0.9999999999999992
}
},
"argument2": {
"type": "add",
"argument1": 0.10000000000000003,
"argument2": {
"type": "add",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:rivers_detail",
"xz_scale": 3,
"y_scale": 0
}
},
"argument2": {
"type": "mul",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:rivers",
"xz_scale": 0.7,
"y_scale": 0
}
},
"argument2": 0.5
}
}
}
}
}
}
},
"points": [
{
"location": 0.002150713233593282,
"value": 0.00283157812902024,
"derivative": 0
},
{
"location": 0.04556430113928506,
"value": 0.053225427270452236,
"derivative": 0
},
{
"location": 0.07896186418523429,
"value": 0.072,
"derivative": 0
},
{
"location": 0.10079873233066206,
"value": 0.19800802886104754,
"derivative": 0
},
{
"location": 0.13676533868783816,
"value": 0.23,
"derivative": 0
},
{
"location": 0.17273194504501424,
"value": 0.3577681409610177,
"derivative": 0
},
{
"location": 0.23438898451445841,
"value": 0.38772316197976187,
"derivative": 0
},
{
"location": 0.2665020259047942,
"value": 0.5325057635703576,
"derivative": 0
},
{
"location": 0.34,
"value": 0.5656221260946868,
"derivative": 0
},
{
"location": 0.4,
"value": 0.7459135514914128,
"derivative": 0.09838292737042877
},
{
"location": 0.6320222622401517,
"value": 0.8426675039419397,
"derivative": 0.7367765729832989
},
{
"location": 0.953557190932748,
"value": 1.3034812477103055,
"derivative": 2.650176228977901
},
{
"location": 1.236636844332311,
"value": 3.249141950234568,
"derivative": 11.062042422762687
},
{
"location": 1.274425255713071,
"value": 3.940363333744151,
"derivative": 44.120242722438554
}
]
}
}
}
}
}
@@ -0,0 +1,124 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "add",
"argument1": -0.555,
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": "custom_ore_gen:river_roughness",
"argument2": {
"type": "mul",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:rivers",
"xz_scale": 0.7,
"y_scale": 0
}
},
"argument2": {
"type": "clamp",
"min": 0.1,
"max": 1,
"input": {
"type": "add",
"argument1": {
"type": "clamp",
"min": 0,
"max": 0.9999999999999999,
"input": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": "custom_ore_gen:river_mask",
"argument2": -0.8
},
"argument2": 0.9999999999999992
}
},
"argument2": {
"type": "add",
"argument1": 0.10000000000000003,
"argument2": {
"type": "add",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:rivers_detail",
"xz_scale": 3,
"y_scale": 0
}
},
"argument2": {
"type": "mul",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:rivers",
"xz_scale": 0.7,
"y_scale": 0
}
},
"argument2": 0.5
}
}
}
}
}
}
},
"points": [
{
"location": 0.002150713233593282,
"value": 0.00283157812902024,
"derivative": 0
},
{
"location": 0.04556430113928506,
"value": 0.053225427270452236,
"derivative": 0
},
{
"location": 0.11683002315235638,
"value": 0.17106586853891428,
"derivative": 2.841754163538001
},
{
"location": 0.16803221618275213,
"value": 0.6895411547682563,
"derivative": 0.5564641133485675
},
{
"location": 0.44402241600853787,
"value": 0.9072477204507282,
"derivative": 1.3322291880341446
},
{
"location": 0.6814559792436795,
"value": 1.312107604429511,
"derivative": 2.650176228977901
},
{
"location": 0.9642524869571842,
"value": 2.8781031875231036,
"derivative": 11.062042422762687
},
{
"location": 1.0118376810340126,
"value": 3.9468951729844814,
"derivative": 44.120242722438554
}
]
}
}
}
}
}
@@ -0,0 +1,114 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "add",
"argument1": -0.555,
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": "custom_ore_gen:river_roughness",
"argument2": {
"type": "mul",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:rivers",
"xz_scale": 0.7,
"y_scale": 0
}
},
"argument2": {
"type": "clamp",
"min": 0,
"max": 1,
"input": {
"type": "add",
"argument1": {
"type": "clamp",
"min": 0,
"max": 0.9999999999999999,
"input": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": "custom_ore_gen:river_mask",
"argument2": -0.9999999999999999
},
"argument2": 0.9999999999999992
}
},
"argument2": {
"type": "add",
"argument1": 0.10000000000000003,
"argument2": {
"type": "add",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:rivers_detail",
"xz_scale": 3,
"y_scale": 0
}
},
"argument2": {
"type": "mul",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:rivers",
"xz_scale": 0.7,
"y_scale": 0
}
},
"argument2": 1.0999999999999999
}
}
}
}
}
}
},
"points": [
{
"location": 0.002150713233593282,
"value": 0.00283157812902024,
"derivative": 0
},
{
"location": 0.05916748863798171,
"value": 0.05144477569651196,
"derivative": 0
},
{
"location": 0.19897245586388027,
"value": 0.12606260307540926,
"derivative": 0.9366564776007699
},
{
"location": 0.6421418963420271,
"value": 0.6781976604534464,
"derivative": 1.90617809476648
},
{
"location": 0.9115889184005059,
"value": 1.4742994511987502,
"derivative": 3.9509873236978024
},
{
"location": 1.0040835486261095,
"value": 2.0034070394217585,
"derivative": 6.86687905660854
}
]
}
}
}
}
}
@@ -0,0 +1,103 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "add",
"argument1": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "noise",
"noise": "minecraft:erosion_large",
"xz_scale": 0.1,
"y_scale": 0
},
"points": [
{
"location": -0.2,
"value": 1,
"derivative": 0
},
{
"location": -0.1,
"value": 0,
"derivative": 0
}
]
}
},
"argument2": "custom_ore_gen:river_valley_c"
},
"argument2": {
"type": "mul",
"argument1": "custom_ore_gen:river_valley_u",
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "noise",
"noise": "minecraft:erosion_large",
"xz_scale": 0.1,
"y_scale": 0
},
"points": [
{
"location": -0.2,
"value": 0,
"derivative": 0
},
{
"location": -0.1,
"value": 1,
"derivative": 0
},
{
"location": 0.2029680059923502,
"value": 0.9975880546997432,
"derivative": 0
},
{
"location": 0.3045291371814176,
"value": -0.003445104388667977,
"derivative": 0
}
]
}
}
}
},
"argument2": {
"type": "mul",
"argument1": "custom_ore_gen:river_valley_g",
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "noise",
"noise": "minecraft:erosion_large",
"xz_scale": 0.1,
"y_scale": 0
},
"points": [
{
"location": 0.20385214652993805,
"value": 0.001440659571383729,
"derivative": 0
},
{
"location": 0.3020744126764428,
"value": 1.0014724913605504,
"derivative": 0
}
]
}
}
}
}
}
}
@@ -0,0 +1,19 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "abs",
"argument": {
"type": "mul",
"argument1": {
"type": "noise",
"noise": "minecraft:erosion",
"xz_scale": 2.1,
"y_scale": 0
},
"argument2": 0.1
}
}
}
}
@@ -0,0 +1,22 @@
{
"type": "minecraft:cache_once",
"argument": {
"type": "add",
"argument1": {
"type": "add",
"argument1": {
"type": "y_clamped_gradient",
"from_y": -64,
"to_y": 512,
"from_value": 1.5,
"to_value": -2.5
},
"argument2": {
"type": "mul",
"argument1": "custom_ore_gen:topography_final",
"argument2": 1
}
},
"argument2": -0.11
}
}
@@ -0,0 +1,126 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": {
"type": "add",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "noise",
"noise": "lithosphere:mesa_placement",
"xz_scale": 0.2,
"y_scale": 0
},
"points": [
{
"location": 0,
"value": 0,
"derivative": 0
},
{
"location": 0.5,
"value": -2,
"derivative": 0
}
]
}
},
"argument2": {
"type": "add",
"argument1": {
"type": "add",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:humidity",
"xz_scale": 0.3,
"y_scale": 0
}
},
"argument2": -0.2
},
"argument2": "custom_ore_gen:erosion_detail"
}
},
"argument2": {
"type": "add",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": "custom_ore_gen:erosion_detail",
"argument2": 3
},
"argument2": "custom_ore_gen:orogeny"
},
"points": [
{
"location": 0.503565217391304,
"value": 0.004347826086956719,
"derivative": 0
},
{
"location": 1.75,
"value": -2,
"derivative": 0
}
]
}
},
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": "custom_ore_gen:continents",
"points": [
{
"location": -0.3,
"value": -1,
"derivative": 0
},
{
"location": -0.05,
"value": 0,
"derivative": 0.8344036966842363
},
{
"location": 0.4101997289458542,
"value": 0.15034429690187112,
"derivative": 0
},
{
"location": 2.0002734861642413,
"value": -0.05276463848770696,
"derivative": 0
}
]
}
}
}
},
"points": [
{
"location": 0,
"value": 0,
"derivative": 0
},
{
"location": 0.1,
"value": 1,
"derivative": 0
}
]
}
}
}
}
@@ -0,0 +1,61 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "mul",
"argument1": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": "custom_ore_gen:river_mask",
"points": [
{
"location": 0,
"value": 0,
"derivative": 0
},
{
"location": 0.9965217391304348,
"value": 0.9998260869565221,
"derivative": 0
}
]
}
},
"argument2": "custom_ore_gen:swamp_placement"
},
"argument2": {
"type": "add",
"argument1": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:swamp_terrain",
"xz_scale": 5.000000000000003,
"y_scale": 0
}
},
"argument2": 0.06
},
"argument2": {
"type": "mul",
"argument1": {
"type": "noise",
"noise": "minecraft:gravel",
"xz_scale": 3,
"y_scale": 0
},
"argument2": 0.005
}
},
"argument2": -0.525
}
}
}
}
@@ -0,0 +1,15 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "add",
"argument1": {
"type": "add",
"argument1": "custom_ore_gen:coastal_cliffs",
"argument2": "custom_ore_gen:topography_mountains"
},
"argument2": "custom_ore_gen:mesas"
}
}
}
@@ -0,0 +1,7 @@
{
"type": "minecraft:flat_cache",
"argument": {
"type": "cache_2d",
"argument": "custom_ore_gen:topography_swamps"
}
}
@@ -0,0 +1,95 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "add",
"argument1": {
"type": "add",
"argument1": "custom_ore_gen:volcanic_mountains",
"argument2": "custom_ore_gen:basic_topography"
},
"argument2": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": -0.05,
"argument2": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": 0.2,
"argument2": {
"type": "noise",
"noise": "minecraft:jagged",
"xz_scale": 125.0,
"y_scale": 0
}
},
"argument2": "custom_ore_gen:continents"
}
},
"points": [
{
"location": -0.5,
"value": 0,
"derivative": 0
},
{
"location": -0.164,
"value": 0,
"derivative": 0
},
{
"location": 0.7,
"value": 0.5,
"derivative": 1.3100436681222607
},
{
"location": 1.4957218502292502,
"value": 0.9966698642152904,
"derivative": 0
}
]
}
},
"argument2": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": {
"type": "mul",
"argument1": {
"type": "add",
"argument1": "custom_ore_gen:roughness",
"argument2": {
"type": "mul",
"argument1": "custom_ore_gen:orogeny",
"argument2": "custom_ore_gen:mountains_base"
}
},
"argument2": {
"type": "mul",
"argument1": "custom_ore_gen:mountains_shape",
"argument2": "custom_ore_gen:orogeny"
}
},
"argument2": 0.04
},
"argument2": {
"type": "mul",
"argument1": {
"type": "mul",
"argument1": "custom_ore_gen:orogeny",
"argument2": "custom_ore_gen:mountains_base"
},
"argument2": 0.01
}
}
}
}
}
}
@@ -0,0 +1,19 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "min",
"argument1": "custom_ore_gen:river_valleys",
"argument2": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": "custom_ore_gen:topography_cliffs",
"argument2": "custom_ore_gen:lakes_placement"
},
"argument2": "custom_ore_gen:lakes_depth"
}
}
}
}
@@ -0,0 +1,44 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "add",
"argument1": "custom_ore_gen:swamp_terrain",
"argument2": {
"type": "mul",
"argument1": {
"type": "mul",
"argument1": -1,
"argument2": {
"type": "add",
"argument1": -1,
"argument2": {
"type": "mul",
"argument1": "custom_ore_gen:swamp_placement",
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": "custom_ore_gen:river_mask",
"points": [
{
"location": 0.0049565217391304706,
"value": -0.0049565217391304706,
"derivative": 0
},
{
"location": 0.998260869565218,
"value": 1.00304347826087,
"derivative": 0
}
]
}
}
}
}
},
"argument2": "custom_ore_gen:topography_rivers"
}
}
}
}
@@ -0,0 +1,140 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": "custom_ore_gen:continents",
"points": [
{
"location": -1,
"value": 1,
"derivative": 0
},
{
"location": -0.75,
"value": 0.75,
"derivative": -1.25
},
{
"location": -0.2,
"value": 0,
"derivative": 0
}
]
}
},
"argument2": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "noise",
"noise": "lithosphere:continent_regions",
"xz_scale": 20,
"y_scale": 0
},
"points": [
{
"location": -0.2,
"value": 0,
"derivative": 0
},
{
"location": 0.5,
"value": 1,
"derivative": 0
}
]
}
},
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:continentalness",
"xz_scale": 0.15,
"y_scale": 0
}
},
"points": [
{
"location": 0,
"value": 1,
"derivative": 0
},
{
"location": 0.2,
"value": 0.9,
"derivative": -2.8
},
{
"location": 0.4,
"value": 0,
"derivative": 0
}
]
}
}
}
},
"points": [
{
"location": 0,
"value": 0,
"derivative": 0
},
{
"location": 0.37,
"value": 0.25,
"derivative": 1.55
},
{
"location": 0.72,
"value": 1,
"derivative": 0
}
]
}
},
"argument2": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:continent_regions",
"xz_scale": 40,
"y_scale": 0
}
}
},
"points": [
{
"location": 0,
"value": 0,
"derivative": 0
},
{
"location": 0.95,
"value": 1.1,
"derivative": 0.55
}
]
}
}
}
}
@@ -0,0 +1,92 @@
{
"type": "flat_cache",
"argument": {
"type": "cache_2d",
"argument": {
"type": "mul",
"argument1": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "add",
"argument1": {
"type": "mul",
"argument1": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "minecraft:erosion",
"xz_scale": 2.5,
"y_scale": 0
}
},
"argument2": -0.1
},
"argument2": "custom_ore_gen:volcanic_islands"
},
"points": [
{
"location": 0.6,
"value": 0,
"derivative": 0
},
{
"location": 0.75,
"value": 0.15163141469685884,
"derivative": 0.32629796373549297
},
{
"location": 0.9851171512607291,
"value": 0.9443211533398697,
"derivative": 4.551856594110115
},
{
"location": 0.9984760406417272,
"value": 0.9952003584978202,
"derivative": 1.4036059106481638
}
]
}
},
"argument2": {
"type": "mul",
"argument1": 0.5,
"argument2": {
"type": "minecraft:spline",
"spline": {
"coordinate": {
"type": "mul",
"argument1": 1.2,
"argument2": {
"type": "abs",
"argument": {
"type": "noise",
"noise": "lithosphere:mountains_shape",
"xz_scale": 79.09999999999997,
"y_scale": 0
}
}
},
"points": [
{
"location": 0.0022965455811022606,
"value": 1.0013258014742137,
"derivative": -0.6318579006228999
},
{
"location": 0.7368348150264282,
"value": 0.17988579803906854,
"derivative": -0.17711721525263788
},
{
"location": 1.500845810182251,
"value": -0.002047815788355556,
"derivative": 0
}
]
}
}
}
}
}
}
@@ -8,7 +8,7 @@
"type": "custom_ore_gen:latitude", "type": "custom_ore_gen:latitude",
"seed": 0 "seed": 0
}, },
"settings": "minecraft:overworld" "settings": "custom_ore_gen:ultra_large_biome"
} }
}, },
"minecraft:the_nether": { "minecraft:the_nether": {
@@ -174,28 +174,28 @@ class LatitudeMathTest {
@DisplayName("origin is inside the spawn safe zone") @DisplayName("origin is inside the spawn safe zone")
void spawnSafeZone_origin() { void spawnSafeZone_origin() {
assertTrue(LatitudeMath.isInSpawnSafeZone(0, 0)); assertTrue(LatitudeMath.isInSpawnSafeZone(0, 0));
assertTrue(LatitudeMath.isInSpawnSafeZone(95, 95)); assertTrue(LatitudeMath.isInSpawnSafeZone(539, 539));
} }
@Test @Test
@DisplayName("just outside the safe radius is NOT safe") @DisplayName("just outside the safe radius is NOT safe")
void spawnSafeZone_outside() { void spawnSafeZone_outside() {
assertFalse(LatitudeMath.isInSpawnSafeZone(96, 0), assertFalse(LatitudeMath.isInSpawnSafeZone(540, 0),
"x=96 equals radius, must be outside (strict <)"); "x=540 equals radius, must be outside (strict <)");
assertFalse(LatitudeMath.isInSpawnSafeZone(0, 96)); assertFalse(LatitudeMath.isInSpawnSafeZone(0, 540));
assertFalse(LatitudeMath.isInSpawnSafeZone(-96, -96)); assertFalse(LatitudeMath.isInSpawnSafeZone(-540, -540));
assertFalse(LatitudeMath.isInSpawnSafeZone(1000, 1000)); assertFalse(LatitudeMath.isInSpawnSafeZone(1000, 1000));
} }
@Test @Test
@DisplayName("spawn safe zone is a square symmetric around the origin") @DisplayName("spawn safe zone is a square symmetric around the origin")
void spawnSafeZone_symmetricSquare() { void spawnSafeZone_symmetricSquare() {
for (int x : new int[]{0, 50, 95, -50, -95}) { for (int x : new int[]{0, 50, 539, -50, -539}) {
assertEquals(LatitudeMath.isInSpawnSafeZone(x, 50), assertEquals(LatitudeMath.isInSpawnSafeZone(x, 50),
LatitudeMath.isInSpawnSafeZone(-x, 50), LatitudeMath.isInSpawnSafeZone(-x, 50),
"safe zone must be X-symmetric at x=" + x); "safe zone must be X-symmetric at x=" + x);
} }
for (int z : new int[]{0, 50, 95, -50, -95}) { for (int z : new int[]{0, 50, 539, -50, -539}) {
assertEquals(LatitudeMath.isInSpawnSafeZone(50, z), assertEquals(LatitudeMath.isInSpawnSafeZone(50, z),
LatitudeMath.isInSpawnSafeZone(50, -z), LatitudeMath.isInSpawnSafeZone(50, -z),
"safe zone must be Z-symmetric at z=" + z); "safe zone must be Z-symmetric at z=" + z);
@@ -205,16 +205,16 @@ class LatitudeMathTest {
@Test @Test
@DisplayName("spawn safe zone edge count matches a 2*radius x 2*radius square (exclusive)") @DisplayName("spawn safe zone edge count matches a 2*radius x 2*radius square (exclusive)")
void spawnSafeZone_edgeCount() { void spawnSafeZone_edgeCount() {
// SPAWN_SAFE_RADIUS = 96, strict <, so the square is [-95, 95] inclusive on both axes. // SPAWN_SAFE_RADIUS = 540, strict <, so the square is [-539, 539] inclusive on both axes.
int count = 0; int count = 0;
for (int x = -100; x <= 100; x++) { for (int x = -545; x <= 545; x++) {
for (int z = -100; z <= 100; z++) { for (int z = -545; z <= 545; z++) {
if (LatitudeMath.isInSpawnSafeZone(x, z)) count++; if (LatitudeMath.isInSpawnSafeZone(x, z)) count++;
} }
} }
assertEquals(2 * 95 + 1, (int) Math.sqrt(count), assertEquals(2 * 539 + 1, (int) Math.sqrt(count),
"safe zone side length must be 2*(96-1)+1 = 191"); "safe zone side length must be 2*(540-1)+1 = 1079");
assertEquals(191 * 191, count); assertEquals(1079 * 1079, count);
} }
// ------------------------------------------------------------------ // ------------------------------------------------------------------