diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 50541448c..585fa9008 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -60,10 +60,10 @@
+
-
@@ -74,7 +74,7 @@
-
+
@@ -147,22 +147,22 @@
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
diff --git a/src/main/java/com/volmit/iris/util/CaveResult.java b/src/main/java/com/volmit/iris/util/CaveResult.java
index d6f817aed..0ebf0f201 100644
--- a/src/main/java/com/volmit/iris/util/CaveResult.java
+++ b/src/main/java/com/volmit/iris/util/CaveResult.java
@@ -13,4 +13,9 @@ public class CaveResult
this.floor = floor;
this.ceiling = ceiling;
}
+
+ public boolean isWithin(int v)
+ {
+ return v > floor || v < ceiling;
+ }
}
diff --git a/src/main/java/com/volmit/iris/v2/generator/IrisComplex.java b/src/main/java/com/volmit/iris/v2/generator/IrisComplex.java
index 4ab38fbeb..7b4de2577 100644
--- a/src/main/java/com/volmit/iris/v2/generator/IrisComplex.java
+++ b/src/main/java/com/volmit/iris/v2/generator/IrisComplex.java
@@ -1,8 +1,9 @@
package com.volmit.iris.v2.generator;
+import com.volmit.iris.object.*;
+import com.volmit.iris.util.*;
import com.volmit.iris.v2.scaffold.data.DataProvider;
import com.volmit.iris.v2.scaffold.engine.Engine;
-import com.volmit.iris.util.B;
import org.bukkit.Material;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
@@ -12,16 +13,6 @@ import com.volmit.iris.v2.scaffold.stream.ProceduralStream;
import com.volmit.iris.v2.scaffold.stream.interpolation.Interpolated;
import com.volmit.iris.manager.IrisDataManager;
import com.volmit.iris.noise.CNG;
-import com.volmit.iris.object.DecorationPart;
-import com.volmit.iris.object.InferredType;
-import com.volmit.iris.object.IrisBiome;
-import com.volmit.iris.object.IrisDecorator;
-import com.volmit.iris.object.IrisBiomePaletteLayer;
-import com.volmit.iris.object.IrisGenerator;
-import com.volmit.iris.object.IrisRegion;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.M;
-import com.volmit.iris.util.RNG;
import lombok.Data;
@@ -56,6 +47,7 @@ public class IrisComplex implements DataProvider
private ProceduralStream rockStream;
private ProceduralStream fluidStream;
private ProceduralStream glassStream;
+ private ProceduralStream> caveStream;
public ProceduralStream getBiomeStream(InferredType type)
{
@@ -164,6 +156,7 @@ public class IrisComplex implements DataProvider
.convertAware2D((b, xx,zz) -> decorateFor(b, xx, zz, DecorationPart.SHORE_LINE));
seaSurfaceDecoration = trueBiomeStream
.convertAware2D((b, xx,zz) -> decorateFor(b, xx, zz, DecorationPart.SEA_SURFACE));
+ caveStream = ProceduralStream.of((x, z) -> engine.getFramework().getCaveModifier().genCaves(x, z, x.intValue() & 15, z.intValue() & 15, null), Interpolated.CAVE_RESULTS);
//@done
}
diff --git a/src/main/java/com/volmit/iris/v2/generator/IrisEngine.java b/src/main/java/com/volmit/iris/v2/generator/IrisEngine.java
index abf9a0779..a0ab8df82 100644
--- a/src/main/java/com/volmit/iris/v2/generator/IrisEngine.java
+++ b/src/main/java/com/volmit/iris/v2/generator/IrisEngine.java
@@ -46,6 +46,7 @@ public class IrisEngine implements Engine
})
);
+ // getFramework().getCaveModifier().modify(x, z, blocks, biomes);
getFramework().getEngineParallax().insertParallax(x, z, blocks);
getParallax().cleanup();
}
diff --git a/src/main/java/com/volmit/iris/v2/generator/IrisEngineFramework.java b/src/main/java/com/volmit/iris/v2/generator/IrisEngineFramework.java
index 5d3118563..1f0c0a176 100644
--- a/src/main/java/com/volmit/iris/v2/generator/IrisEngineFramework.java
+++ b/src/main/java/com/volmit/iris/v2/generator/IrisEngineFramework.java
@@ -10,6 +10,7 @@ import com.volmit.iris.util.RNG;
import com.volmit.iris.v2.generator.actuator.IrisBiomeActuator;
import com.volmit.iris.v2.generator.actuator.IrisDecorantActuator;
import com.volmit.iris.v2.generator.actuator.IrisTerrainActuator;
+import com.volmit.iris.v2.generator.modifier.IrisCaveModifier;
import com.volmit.iris.v2.scaffold.engine.Engine;
import com.volmit.iris.v2.scaffold.engine.EngineActuator;
import com.volmit.iris.v2.scaffold.engine.EngineFramework;
@@ -23,6 +24,9 @@ public class IrisEngineFramework implements EngineFramework {
@Getter
private final Engine engine;
+ @Getter
+ private final IrisCaveModifier caveModifier;
+
@Getter
private final IrisComplex complex;
@@ -41,6 +45,7 @@ public class IrisEngineFramework implements EngineFramework {
public IrisEngineFramework(Engine engine)
{
this.engine = engine;
+ this.caveModifier = new IrisCaveModifier(engine);
this.complex = new IrisComplex(getEngine());
this.engineParallax = new IrisEngineParallax(getEngine());
this.terrainActuator = new IrisTerrainActuator(getEngine());
diff --git a/src/main/java/com/volmit/iris/v2/generator/actuator/IrisTerrainActuator.java b/src/main/java/com/volmit/iris/v2/generator/actuator/IrisTerrainActuator.java
index 68aaa1733..73fe28efd 100644
--- a/src/main/java/com/volmit/iris/v2/generator/actuator/IrisTerrainActuator.java
+++ b/src/main/java/com/volmit/iris/v2/generator/actuator/IrisTerrainActuator.java
@@ -3,7 +3,9 @@ package com.volmit.iris.v2.generator.actuator;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.object.IrisCarveLayer;
+import com.volmit.iris.object.IrisCaveLayer;
import com.volmit.iris.object.IrisNoiseGenerator;
+import com.volmit.iris.util.CaveResult;
import com.volmit.iris.util.KList;
import com.volmit.iris.util.RNG;
import com.volmit.iris.v2.scaffold.engine.Engine;
diff --git a/src/main/java/com/volmit/iris/v2/generator/actuator/IrisCaveModifier.java b/src/main/java/com/volmit/iris/v2/generator/modifier/IrisCaveModifier.java
similarity index 92%
rename from src/main/java/com/volmit/iris/v2/generator/actuator/IrisCaveModifier.java
rename to src/main/java/com/volmit/iris/v2/generator/modifier/IrisCaveModifier.java
index 15c6c13b0..c6ff25980 100644
--- a/src/main/java/com/volmit/iris/v2/generator/actuator/IrisCaveModifier.java
+++ b/src/main/java/com/volmit/iris/v2/generator/modifier/IrisCaveModifier.java
@@ -1,6 +1,5 @@
-package com.volmit.iris.v2.generator.actuator;
+package com.volmit.iris.v2.generator.modifier;
-import com.volmit.iris.gen.atomics.AtomicSliver;
import com.volmit.iris.noise.FastNoiseDouble;
import com.volmit.iris.object.IrisCaveLayer;
import com.volmit.iris.util.B;
@@ -8,14 +7,16 @@ import com.volmit.iris.util.CaveResult;
import com.volmit.iris.util.KList;
import com.volmit.iris.util.RNG;
import com.volmit.iris.v2.scaffold.engine.Engine;
+import com.volmit.iris.v2.scaffold.engine.EngineAssignedBiModifier;
import com.volmit.iris.v2.scaffold.engine.EngineAssignedModifier;
import com.volmit.iris.v2.scaffold.hunk.Hunk;
import org.bukkit.Material;
+import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
import java.util.function.Function;
-public class IrisCaveModifier extends EngineAssignedModifier
+public class IrisCaveModifier extends EngineAssignedBiModifier
{
public static final BlockData CAVE_AIR = B.getBlockData("CAVE_AIR");
public static final BlockData AIR = B.getBlockData("AIR");
@@ -30,8 +31,16 @@ public class IrisCaveModifier extends EngineAssignedModifier
}
@Override
- public void onModify(int x, int z, Hunk output) {
+ public void onModify(int x, int z, Hunk a, Hunk b) {
+ Hunk.computeDual2D(getParallelism(), a, b, (xx,yy,zz, ha, hb) -> {
+ for(int i = 0; i < ha.getWidth(); i++)
+ {
+ for(int j = 0; j < ha.getDepth(); i++)
+ {
+ }
+ }
+ });
}
public KList genCaves(double wxx, double wzz, int x, int z, Hunk data)
diff --git a/src/main/java/com/volmit/iris/v2/scaffold/engine/EngineAssignedBiModifier.java b/src/main/java/com/volmit/iris/v2/scaffold/engine/EngineAssignedBiModifier.java
new file mode 100644
index 000000000..4f6621720
--- /dev/null
+++ b/src/main/java/com/volmit/iris/v2/scaffold/engine/EngineAssignedBiModifier.java
@@ -0,0 +1,18 @@
+package com.volmit.iris.v2.scaffold.engine;
+
+import com.volmit.iris.v2.scaffold.hunk.Hunk;
+
+public abstract class EngineAssignedBiModifier extends EngineAssignedComponent implements EngineBiModifier
+{
+ public EngineAssignedBiModifier(Engine engine, String name)
+ {
+ super(engine, name);
+ }
+
+ public abstract void onModify(int x, int z, Hunk a, Hunk b);
+
+ @Override
+ public void modify(int x, int z, Hunk a, Hunk b) {
+ onModify(x, z, a, b);
+ }
+}
diff --git a/src/main/java/com/volmit/iris/v2/scaffold/engine/EngineBiModifier.java b/src/main/java/com/volmit/iris/v2/scaffold/engine/EngineBiModifier.java
new file mode 100644
index 000000000..c1ea6f4c4
--- /dev/null
+++ b/src/main/java/com/volmit/iris/v2/scaffold/engine/EngineBiModifier.java
@@ -0,0 +1,7 @@
+package com.volmit.iris.v2.scaffold.engine;
+
+import com.volmit.iris.v2.scaffold.hunk.Hunk;
+
+public interface EngineBiModifier extends EngineComponent {
+ public void modify(int x, int z, Hunk a, Hunk b);
+}
diff --git a/src/main/java/com/volmit/iris/v2/scaffold/engine/EngineFramework.java b/src/main/java/com/volmit/iris/v2/scaffold/engine/EngineFramework.java
index 264465850..baec77a4e 100644
--- a/src/main/java/com/volmit/iris/v2/scaffold/engine/EngineFramework.java
+++ b/src/main/java/com/volmit/iris/v2/scaffold/engine/EngineFramework.java
@@ -1,5 +1,7 @@
package com.volmit.iris.v2.scaffold.engine;
+import com.volmit.iris.v2.generator.IrisEngine;
+import com.volmit.iris.v2.generator.modifier.IrisCaveModifier;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
@@ -24,4 +26,6 @@ public interface EngineFramework extends DataProvider
public EngineActuator getDecorantActuator();
public EngineActuator getBiomeActuator();
+
+ public IrisCaveModifier getCaveModifier();
}
diff --git a/src/main/java/com/volmit/iris/v2/scaffold/hunk/Hunk.java b/src/main/java/com/volmit/iris/v2/scaffold/hunk/Hunk.java
index 637282180..1d2189b57 100644
--- a/src/main/java/com/volmit/iris/v2/scaffold/hunk/Hunk.java
+++ b/src/main/java/com/volmit/iris/v2/scaffold/hunk/Hunk.java
@@ -605,7 +605,7 @@ public interface Hunk
return compute2D(getIdeal2DParallelism(), v);
}
- public static void compute2D(int parallelism, Hunk a, Hunk b, Consumer5, Hunk> v)
+ public static void computeDual2D(int parallelism, Hunk a, Hunk b, Consumer5, Hunk> v)
{
if(a.getWidth() != b.getWidth() || a.getHeight() != b.getHeight() || a.getDepth() != b.getDepth())
{
diff --git a/src/main/java/com/volmit/iris/v2/scaffold/stream/interpolation/Interpolated.java b/src/main/java/com/volmit/iris/v2/scaffold/stream/interpolation/Interpolated.java
index 36c1859e8..6cf20e1b3 100644
--- a/src/main/java/com/volmit/iris/v2/scaffold/stream/interpolation/Interpolated.java
+++ b/src/main/java/com/volmit/iris/v2/scaffold/stream/interpolation/Interpolated.java
@@ -2,6 +2,9 @@ package com.volmit.iris.v2.scaffold.stream.interpolation;
import java.util.function.Function;
+import com.volmit.iris.object.IrisCaveLayer;
+import com.volmit.iris.util.CaveResult;
+import com.volmit.iris.util.KList;
import com.volmit.iris.v2.scaffold.stream.ProceduralStream;
import org.bukkit.block.data.BlockData;
@@ -10,6 +13,7 @@ import com.volmit.iris.util.RNG;
public interface Interpolated
{
public static final Interpolated BLOCK_DATA = of((t) -> 0D, (t) -> null);
+ public static final Interpolated> CAVE_RESULTS = of((t) -> 0D, (t) -> null);
public static final Interpolated RNG = of((t) -> 0D, (t) -> null);
public static final Interpolated DOUBLE = of((t) -> t, (t) -> t);
public static final Interpolated INT = of((t) -> Double.valueOf(t), (t) -> t.intValue());