diff --git a/src/main/java/ninja/bytecode/iris/CommandIris.java b/src/main/java/ninja/bytecode/iris/CommandIris.java index 7b86aee9b..5bfe6ec3a 100644 --- a/src/main/java/ninja/bytecode/iris/CommandIris.java +++ b/src/main/java/ninja/bytecode/iris/CommandIris.java @@ -82,7 +82,7 @@ public class CommandIris implements CommandExecutor if(w.getGenerator() instanceof IrisGenerator) { IrisGenerator g = (IrisGenerator) w.getGenerator(); - IrisBiome biome = g.getBiome((int) g.getOffsetX(p.getLocation().getX()), (int) g.getOffsetZ(p.getLocation().getZ())); + IrisBiome biome = g.getBiome((int) g.getOffsetX(p.getLocation().getX(), p.getLocation().getZ()), (int) g.getOffsetZ(p.getLocation().getX(), p.getLocation().getZ())); BiomeLayer l = new BiomeLayer(g, biome); msg(p, "Biome: " + C.BOLD + C.WHITE + biome.getName() + C.RESET + C.GRAY + " (" + C.GOLD + l.getBiome().getRarityString() + C.GRAY + ")"); @@ -183,7 +183,7 @@ public class CommandIris implements CommandExecutor int x = (int) ((int) (29999983 / 1.2) * Math.random()); int z = (int) ((int) (29999983 / 1.2) * Math.random()); - if(g.getBiome((int) g.getOffsetX(x), (int) g.getOffsetZ(z)).equals(b)) + if(g.getBiome((int) g.getOffsetX(x, z), (int) g.getOffsetZ(x, z)).equals(b)) { f = true; @@ -310,7 +310,7 @@ public class CommandIris implements CommandExecutor ChronoLatch cl = new ChronoLatch(3000); Player p = (Player) sender; World ww = ((Player) sender).getWorld(); - + msg(p, "Regenerating View Distance"); WorldReactor r = new WorldReactor(ww); diff --git a/src/main/java/ninja/bytecode/iris/Settings.java b/src/main/java/ninja/bytecode/iris/Settings.java index 020020329..68d09b07b 100644 --- a/src/main/java/ninja/bytecode/iris/Settings.java +++ b/src/main/java/ninja/bytecode/iris/Settings.java @@ -33,25 +33,16 @@ public class Settings public double landScale = 0.75; public double landChance = 0.55; public double roughness = 1.55; - public double biomeEdgeScrambleScale = 1; + public double biomeEdgeFuzzScale = 1; + public double biomeEdgeScrambleScale = 0.3; + public double biomeEdgeScrambleRange = 0.9; public double heightMultiplier = 0.806; public double heightExponentBase = 1; public double heightExponentMultiplier = 1.41; public double heightScale = 0.56; public double baseHeight = 0.065; public int seaLevel = 63; - public double caveDensity = 5; - public double caveScale = 1.2; - public double biomeScale = 0.65; + public double biomeScale = 1; public boolean flatBedrock = false; - public boolean genCarving = false; - public boolean genCaverns = false; - public boolean genCaves = false; - public double carvingChance = 0.352; - public double cavernChance = 0.321; - public int minCarvingHeight = 75; - public int maxCarvingHeight = 155; - public int minCavernHeight = 14; - public int maxCavernHeight = 54; } } diff --git a/src/main/java/ninja/bytecode/iris/controller/WandController.java b/src/main/java/ninja/bytecode/iris/controller/WandController.java index a6e265da7..8b64a0981 100644 --- a/src/main/java/ninja/bytecode/iris/controller/WandController.java +++ b/src/main/java/ninja/bytecode/iris/controller/WandController.java @@ -203,7 +203,7 @@ public class WandController implements IrisController if(g != null) { Location point = new Location(l.getWorld(), po.getX(), po.getY(), po.getZ()); - IrisBiome biome = generator.getBiome((int) generator.getOffsetX(po.getX()), (int) generator.getOffsetZ(po.getZ())); + IrisBiome biome = generator.getBiome((int) generator.getOffsetX(po.getX(), po.getZ()), (int) generator.getOffsetZ(po.getX(), po.getZ())); String gg = po.getF().split("\\Q:\\E")[0]; for(int j = 0; j < 10; j++) diff --git a/src/main/java/ninja/bytecode/iris/generator/IrisGenerator.java b/src/main/java/ninja/bytecode/iris/generator/IrisGenerator.java index 571c9100c..9ef837b64 100644 --- a/src/main/java/ninja/bytecode/iris/generator/IrisGenerator.java +++ b/src/main/java/ninja/bytecode/iris/generator/IrisGenerator.java @@ -63,6 +63,7 @@ public class IrisGenerator extends ParallaxWorldGenerator private boolean disposed; private CNG scatter; + private CNG swirl; private MB ICE = new MB(Material.ICE); private MB PACKED_ICE = new MB(Material.PACKED_ICE); private MB WATER = new MB(Material.STATIONARY_WATER); @@ -121,6 +122,7 @@ public class IrisGenerator extends ParallaxWorldGenerator } random = new Random(world.getSeed()); rTerrain = new RNG(world.getSeed()); + swirl = new CNG(rTerrain.nextParallelRNG(0), 40, 1).scale(0.012); glLNoise = new GenLayerLayeredNoise(this, world, random, rTerrain.nextParallelRNG(2)); glBiome = new GenLayerBiome(this, world, random, rTerrain.nextParallelRNG(4), dim.getBiomes()); glSnow = new GenLayerSnow(this, world, random, rTerrain.nextParallelRNG(5)); @@ -174,14 +176,14 @@ public class IrisGenerator extends ParallaxWorldGenerator return getDimension().getBiomeByName(name); } - public double getOffsetX(double x) + public double getOffsetX(double x, double z) { - return Math.round((double) x * (Iris.settings.gen.horizontalZoom / 1.90476190476)); + return Math.round((double) x * (Iris.settings.gen.horizontalZoom / 1.90476190476)) + swirl.noise(x, z); } - public double getOffsetZ(double z) + public double getOffsetZ(double x, double z) { - return Math.round((double) z * (Iris.settings.gen.horizontalZoom / 1.90476190476)); + return Math.round((double) z * (Iris.settings.gen.horizontalZoom / 1.90476190476)) - swirl.noise(z, x); } public IrisMetrics getMetrics() @@ -331,8 +333,8 @@ public class IrisGenerator extends ParallaxWorldGenerator return Biome.VOID; } - double wx = getOffsetX(wxxf); - double wz = getOffsetZ(wzxf); + double wx = getOffsetX(wxxf, wzxf); + double wz = getOffsetZ(wxxf, wzxf); int wxx = (int) wx; int wzx = (int) wz; int highest = 0; diff --git a/src/main/java/ninja/bytecode/iris/generator/genobject/GenObjectDecorator.java b/src/main/java/ninja/bytecode/iris/generator/genobject/GenObjectDecorator.java index b7b4c2d8e..908704251 100644 --- a/src/main/java/ninja/bytecode/iris/generator/genobject/GenObjectDecorator.java +++ b/src/main/java/ninja/bytecode/iris/generator/genobject/GenObjectDecorator.java @@ -122,7 +122,7 @@ public class GenObjectDecorator extends BlockPopulator { int x = (cx << 4) + random.nextInt(16); int z = (cz << 4) + random.nextInt(16); - IrisBiome biome = g.getBiome((int) g.getOffsetX(x), (int) g.getOffsetZ(z)); + IrisBiome biome = g.getBiome((int) g.getOffsetX(x, z), (int) g.getOffsetZ(x, z)); if(hits.contains(biome)) { diff --git a/src/main/java/ninja/bytecode/iris/generator/layer/GenLayerBiome.java b/src/main/java/ninja/bytecode/iris/generator/layer/GenLayerBiome.java index 17f12614e..4921f4afd 100644 --- a/src/main/java/ninja/bytecode/iris/generator/layer/GenLayerBiome.java +++ b/src/main/java/ninja/bytecode/iris/generator/layer/GenLayerBiome.java @@ -22,6 +22,7 @@ public class GenLayerBiome extends GenLayer private GMap regions; private Function factory; private CNG fracture; + private CNG fuzz; private CNG island; private BiomeLayer master; @@ -32,8 +33,9 @@ public class GenLayerBiome extends GenLayer island = new CNG(rng.nextParallelRNG(10334), 1D, 1) .scale(0.003 * Iris.settings.gen.landScale) .fractureWith(new CNG(rng.nextParallelRNG(1211), 1D, 1) - .scale(0.001 * Iris.settings.gen.landScale), 600); - fracture = new CNG(rng.nextParallelRNG(28), 1D, 4).scale(0.0021) + .scale(0.001 * Iris.settings.gen.landScale), 3600); + fuzz = new CNG(rng.nextParallelRNG(9112), 1D * 8 * Iris.settings.gen.biomeEdgeFuzzScale, 1).scale(6.5); + fracture = new CNG(rng.nextParallelRNG(28), 1D, 4).scale(0.0021 * Iris.settings.gen.biomeEdgeScrambleScale) .fractureWith(new CNG(rng.nextParallelRNG(34), 1D, 2) .scale(0.01), 12250); factory = (g) -> g.fractureWith(new CNG(rng.nextParallelRNG(29), 1D, 3) @@ -135,8 +137,10 @@ public class GenLayerBiome extends GenLayer { double wx = Math.round((double) wxx * (Iris.settings.gen.horizontalZoom / 1.90476190476)) * Iris.settings.gen.biomeScale; double wz = Math.round((double) wzx * (Iris.settings.gen.horizontalZoom / 1.90476190476)) * Iris.settings.gen.biomeScale; - double x = wx + ((fracture.noise(wx, wz) / 2D) * 200D * Iris.settings.gen.biomeEdgeScrambleScale); - double z = wz - ((fracture.noise(wz, wx) / 2D) * 200D * Iris.settings.gen.biomeEdgeScrambleScale); + double x = wx + ((fracture.noise(wx, wz) / 2D) * 200D * Iris.settings.gen.biomeEdgeScrambleRange); + double z = wz - ((fracture.noise(wz, wx) / 2D) * 200D * Iris.settings.gen.biomeEdgeScrambleRange); + x -= fuzz.noise(wx, wz); + z += fuzz.noise(wz, wx); if(real) { diff --git a/src/main/java/ninja/bytecode/iris/pack/IrisBiome.java b/src/main/java/ninja/bytecode/iris/pack/IrisBiome.java index 497ba1c6d..08a9f81c5 100644 --- a/src/main/java/ninja/bytecode/iris/pack/IrisBiome.java +++ b/src/main/java/ninja/bytecode/iris/pack/IrisBiome.java @@ -25,7 +25,7 @@ import ninja.bytecode.shuriken.math.RNG; public class IrisBiome { public static final double MAX_HEIGHT = 0.77768; - public static final double IDEAL_HEIGHT = 0.053; + public static final double IDEAL_HEIGHT = 0.0527; public static final double MIN_HEIGHT = -0.0218; private static final GMap map = build(); private String name;