diff --git a/src/main/java/com/volmit/iris/engine/modifier/IrisCarveModifier.java b/src/main/java/com/volmit/iris/engine/modifier/IrisCarveModifier.java index f5b56a4bc..d83f5c5cc 100644 --- a/src/main/java/com/volmit/iris/engine/modifier/IrisCarveModifier.java +++ b/src/main/java/com/volmit/iris/engine/modifier/IrisCarveModifier.java @@ -47,6 +47,7 @@ public class IrisCarveModifier extends EngineAssignedModifier { private final RNG rng; private final BlockData AIR = Material.CAVE_AIR.createBlockData(); private final BlockData WATER = Material.WATER.createBlockData(); + private final BlockData LAVA = Material.LAVA.createBlockData(); public IrisCarveModifier(Engine engine) { super(engine, "Carve"); @@ -102,7 +103,10 @@ public class IrisCarveModifier extends EngineAssignedModifier { if (c.isWater()) { output.set(rx, yy, rz, WATER); - } else { + } else if(c.isLava()) { + output.set(rx, yy, rz, LAVA); + } + else { output.set(rx, yy, rz, AIR); } }; diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCave.java b/src/main/java/com/volmit/iris/engine/object/IrisCave.java index 7455901a4..6c1733907 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisCave.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisCave.java @@ -78,7 +78,7 @@ public class IrisCave extends IrisRegistrant { KList points = getWorm().generate(rng, engine.getData(), writer, verticalRange, x, y, z, (at) -> {}); int highestWater = Math.max(waterHint, -1); int lowestPoint = Integer.MAX_VALUE; - + if (highestWater == -1) { for (IrisPosition i : points) { double yy = i.getY() + girth; @@ -106,12 +106,12 @@ public class IrisCave extends IrisRegistrant { } MatterCavern c = new MatterCavern(true, customBiome, (byte) 0); - MatterCavern w = h >= 0 ? new MatterCavern(true, customBiome, (byte) 1) : null; - MatterCavern l = lavaLevel >= 0 ? new MatterCavern(true, customBiome, (byte) 2) : null; - int flp = lowestPoint; + MatterCavern w = new MatterCavern(true, customBiome, (byte) 1); + MatterCavern l = new MatterCavern(true, customBiome, (byte) 2); + int flp = lowestPoint - worm.getGirth().getMid(); writer.setLineConsumer(points, girth, true, - (xf, yf, zf) -> (lavaLevel + flp >= yf) ? l : (yf <= h ? w : c)); + (xf, yf, zf) -> (lavaLevel + flp >= yf && lavaLevel >= 0) ? l : (yf <= h ? w : c)); } @Override diff --git a/src/main/java/com/volmit/iris/engine/object/IrisElipsoid.java b/src/main/java/com/volmit/iris/engine/object/IrisElipsoid.java index 644a9dfcb..b15b6cf8c 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisElipsoid.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisElipsoid.java @@ -55,7 +55,7 @@ public class IrisElipsoid implements IRare { writer.setElipsoid(x, y, z, xRadius.get(rng, z, y, engine.getData()), yRadius.get(rng, x, z, engine.getData()), - zRadius.get(rng, y, x, engine.getData()), true, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome(), false))); + zRadius.get(rng, y, x, engine.getData()), true, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome(), 0))); } public double maxSize() { diff --git a/src/main/java/com/volmit/iris/engine/object/IrisPyramid.java b/src/main/java/com/volmit/iris/engine/object/IrisPyramid.java index 03ea93d75..8e6d23db9 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisPyramid.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisPyramid.java @@ -46,7 +46,7 @@ public class IrisPyramid implements IRare { private transient final AtomicCache matterNodeCache = new AtomicCache<>(); public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z) { - writer.setPyramid(x, y, z, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome(), false)), + writer.setPyramid(x, y, z, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome(), 0)), (int) baseWidth.get(rng, z, y, engine.getData()), true); } diff --git a/src/main/java/com/volmit/iris/engine/object/IrisRavine.java b/src/main/java/com/volmit/iris/engine/object/IrisRavine.java index 6d9bb2b93..2665dafa7 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisRavine.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisRavine.java @@ -132,7 +132,7 @@ public class IrisRavine extends IrisRegistrant { } MatterCavern c = new MatterCavern(true, customBiome, (byte) (water ? 1 : 0)); - MatterCavern l = lavaLevel >= 0 ? new MatterCavern(true, customBiome, (byte) 2) : null; + MatterCavern l = new MatterCavern(true, customBiome, (byte) 2); if (pos.size() < nodeThreshold) { return; @@ -158,7 +158,7 @@ public class IrisRavine extends IrisRegistrant { break; } - writer.setElipsoid(p.getX(), i, p.getZ(), v, ribThickness, v, true, (lavaLevel + lowestPoint) >= i ? l : c); + writer.setElipsoid(p.getX(), i, p.getZ(), v, ribThickness, v, true, ((lavaLevel + (lowestPoint - depthStyle.getMid())) >= i) && lavaLevel >= 0 ? l : c); } } @@ -174,7 +174,7 @@ public class IrisRavine extends IrisRegistrant { break; } - writer.setElipsoid(p.getX(), i, p.getZ(), v, ribThickness, v, true, (lavaLevel + lowestPoint) >= i ? l : c); + writer.setElipsoid(p.getX(), i, p.getZ(), v, ribThickness, v, true, ((lavaLevel + (lowestPoint - depthStyle.getMid())) >= i) && lavaLevel >= 0 ? l : c); } } } diff --git a/src/main/java/com/volmit/iris/engine/object/IrisShapedGeneratorStyle.java b/src/main/java/com/volmit/iris/engine/object/IrisShapedGeneratorStyle.java index 6f3244963..ad4deb88d 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisShapedGeneratorStyle.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisShapedGeneratorStyle.java @@ -66,4 +66,8 @@ public class IrisShapedGeneratorStyle { public boolean isFlat() { return min == max || getGenerator().isFlat(); } + + public int getMid() { + return (getMax() + getMin()) / 2; + } } diff --git a/src/main/java/com/volmit/iris/engine/object/IrisSphere.java b/src/main/java/com/volmit/iris/engine/object/IrisSphere.java index 6c24344d5..8bc0ac611 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisSphere.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisSphere.java @@ -46,7 +46,7 @@ public class IrisSphere implements IRare { private transient final AtomicCache matterNodeCache = new AtomicCache<>(); public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z) { - writer.setSphere(x, y, z, radius.get(rng, z, y, engine.getData()), true, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome(), false))); + writer.setSphere(x, y, z, radius.get(rng, z, y, engine.getData()), true, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome(), 0))); } public double maxSize() { diff --git a/src/main/java/com/volmit/iris/engine/object/IrisStyledRange.java b/src/main/java/com/volmit/iris/engine/object/IrisStyledRange.java index 1fa826107..1a2e2c8bf 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisStyledRange.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisStyledRange.java @@ -65,4 +65,8 @@ public class IrisStyledRange { public boolean isFlat() { return getMax() == getMin() || style.isFlat(); } + + public int getMid() { + return (int) ((getMax() + getMin()) / 2); + } }