From 545883b8678b87b88fcbcfe63d67d81a0c07d127 Mon Sep 17 00:00:00 2001 From: dags- Date: Fri, 17 Jan 2020 21:11:31 +0000 Subject: [PATCH] - create FeatureMatchers from FeartureTypes - use TerraContainer for biomes in the RegionFix wrapper - Let extreme biomes (snowy/sandy) override others when selecting biome features --- FeatureManager | 2 +- .../terraforged/core/decorator/SwampPools.java | 2 +- .../com/terraforged/core/filter/Steepness.java | 2 +- .../core/world/biome/BiomeType.java | 4 ++++ .../core/world/terrain/LandForms.java | 18 ++++-------------- .../provider/StandardTerrainProvider.java | 4 ++-- TerraForgedMod | 2 +- 7 files changed, 14 insertions(+), 20 deletions(-) diff --git a/FeatureManager b/FeatureManager index d7d5b15..1597178 160000 --- a/FeatureManager +++ b/FeatureManager @@ -1 +1 @@ -Subproject commit d7d5b154b854b7f866e3817ce6f746dd192e4350 +Subproject commit 1597178d4717ad684b67fcb23b3222feae1e3ee0 diff --git a/TerraForgedCore/src/main/java/com/terraforged/core/decorator/SwampPools.java b/TerraForgedCore/src/main/java/com/terraforged/core/decorator/SwampPools.java index ce92739..5850f64 100644 --- a/TerraForgedCore/src/main/java/com/terraforged/core/decorator/SwampPools.java +++ b/TerraForgedCore/src/main/java/com/terraforged/core/decorator/SwampPools.java @@ -39,7 +39,7 @@ public class SwampPools implements Decorator { return; } - if (cell.value <= levels.water) { + if (cell.value <= minY) { return; } diff --git a/TerraForgedCore/src/main/java/com/terraforged/core/filter/Steepness.java b/TerraForgedCore/src/main/java/com/terraforged/core/filter/Steepness.java index 5aa696f..74af4aa 100644 --- a/TerraForgedCore/src/main/java/com/terraforged/core/filter/Steepness.java +++ b/TerraForgedCore/src/main/java/com/terraforged/core/filter/Steepness.java @@ -46,7 +46,7 @@ public class Steepness implements Filter, Filter.Visitor { } } cell.steepness = Math.min(1, totalHeightDif * scaler); - if (cell.tag == terrains.coast && cell.steepness < 0.2F) { + if (cell.tag == terrains.coast && cell.steepness < 0.22F) { cell.tag = terrains.beach; } } diff --git a/TerraForgedCore/src/main/java/com/terraforged/core/world/biome/BiomeType.java b/TerraForgedCore/src/main/java/com/terraforged/core/world/biome/BiomeType.java index c67a817..dd47f05 100644 --- a/TerraForgedCore/src/main/java/com/terraforged/core/world/biome/BiomeType.java +++ b/TerraForgedCore/src/main/java/com/terraforged/core/world/biome/BiomeType.java @@ -42,6 +42,10 @@ public enum BiomeType { return color; } + public boolean isExtreme() { + return this == TUNDRA || this == DESERT; + } + public static BiomeType get(float temperature, float moisture) { return getCurve(temperature, moisture); } diff --git a/TerraForgedCore/src/main/java/com/terraforged/core/world/terrain/LandForms.java b/TerraForgedCore/src/main/java/com/terraforged/core/world/terrain/LandForms.java index fd25347..f91763b 100644 --- a/TerraForgedCore/src/main/java/com/terraforged/core/world/terrain/LandForms.java +++ b/TerraForgedCore/src/main/java/com/terraforged/core/world/terrain/LandForms.java @@ -12,7 +12,7 @@ public class LandForms { private static final double PLAINS_V = 0.24; public static final int PLATEAU_H = 500; - public static final double PLATEAU_V = 0.45; + public static final double PLATEAU_V = 0.475; public static final int LOESS_H0 = 100; public static final int LOESS_H1 = 200; @@ -35,7 +35,7 @@ public class LandForms { public LandForms(Levels levels) { terrainHorizontalScale = 1F; - terrainVerticalScale = 0.975F; + terrainVerticalScale = 1F; groundLevel = levels.ground; seaLevel = levels.water; } @@ -118,16 +118,6 @@ public class LandForms { .bias(groundLevel); } - public Module badlands(Seed seed) { - Module ridge = Source.build(seed.next(), LOESS_H0, 4).ridge().scale(0.25); - Module ridge2 = Source.build(seed.next(), LOESS_H1, 3).gain(1.5).ridge().scale(0.75); - Module mask = Source.perlin(seed.next(), LOESS_H1 * 2, 2).clamp(0.2, 0.9).map(0, 1); - return ridge.add(ridge2).mult(mask) - .warp(seed.next(), 360, 3, 200) - .scale(LOESS_V * terrainVerticalScale) - .bias(groundLevel); - } - public Module hills1(Seed seed) { return Source.perlin(seed.next(), 200, 3) .mult(Source.billow(seed.next(), 400, 3).alpha(0.5)) @@ -159,7 +149,7 @@ public class LandForms { Module hills = combined .pow(1.125) .warp(seed.next(), 300, 1, 100); - return hills.scale(0.225).bias(groundLevel); + return hills.scale(0.24).bias(groundLevel); } public Module mountains(Seed seed) { @@ -203,7 +193,7 @@ public class LandForms { return terraced.scale(scale).bias(groundLevel); } - public Module badlands2(Seed seed) { + public Module badlands(Seed seed) { Module mask = Source.perlin(seed.next(), 800, 1).clamp(0.35, 0.65).map(0, 1); Module hills = Source.ridge(seed.next(), 500, 4) .warp(seed.next(), 400, 2, 100) diff --git a/TerraForgedCore/src/main/java/com/terraforged/core/world/terrain/provider/StandardTerrainProvider.java b/TerraForgedCore/src/main/java/com/terraforged/core/world/terrain/provider/StandardTerrainProvider.java index fe446d8..82359cd 100644 --- a/TerraForgedCore/src/main/java/com/terraforged/core/world/terrain/provider/StandardTerrainProvider.java +++ b/TerraForgedCore/src/main/java/com/terraforged/core/world/terrain/provider/StandardTerrainProvider.java @@ -42,12 +42,12 @@ public class StandardTerrainProvider implements TerrainProvider { registerMixable(context.terrain.hills, landForms.hills1(context.seed)); registerMixable(context.terrain.hills, landForms.hills2(context.seed)); registerMixable(context.terrain.dales, landForms.dales(context.seed)); - registerMixable(context.terrain.badlands, landForms.badlands2(context.seed)); + registerMixable(context.terrain.badlands, landForms.badlands(context.seed)); registerMixable(context.terrain.plateau, landForms.plateau(context.seed)); registerMixable(context.terrain.torridonian, landForms.torridonian(context.seed)); registerUnMixable(new VolcanoPopulator(context.seed, config, context.levels, context.terrain)); - registerUnMixable(context.terrain.badlands, landForms.badlands2(context.seed)); + registerUnMixable(context.terrain.badlands, landForms.badlands(context.seed)); registerUnMixable(context.terrain.mountains, landForms.mountains2(context.seed)); registerUnMixable(context.terrain.mountains, landForms.mountains3(context.seed)); } diff --git a/TerraForgedMod b/TerraForgedMod index c9d5473..b7e1b7f 160000 --- a/TerraForgedMod +++ b/TerraForgedMod @@ -1 +1 @@ -Subproject commit c9d54733c495fb9f26ded79f56d0b8da0af1aa4f +Subproject commit b7e1b7fc5f20ac8d5e6f1675a187fbd4198075cf