diff --git a/src/main/java/com/volmit/iris/engine/IrisEngineMantle.java b/src/main/java/com/volmit/iris/engine/IrisEngineMantle.java index c4f844900..b19098805 100644 --- a/src/main/java/com/volmit/iris/engine/IrisEngineMantle.java +++ b/src/main/java/com/volmit/iris/engine/IrisEngineMantle.java @@ -63,6 +63,8 @@ public class IrisEngineMantle implements EngineMantle { private final KList components; private final int radius; private final AtomicCache radCache = new AtomicCache<>(); + private ProceduralStream> featureChunkStream; + private ProceduralStream> featureStream; public IrisEngineMantle(Engine engine) { this.engine = engine; @@ -72,6 +74,21 @@ public class IrisEngineMantle implements EngineMantle { registerComponent(new MantleFeatureComponent(this)); registerComponent(new MantleJigsawComponent(this)); registerComponent(new MantleObjectComponent(this)); + featureChunkStream = ProceduralStream.of((x, z) + -> EngineMantle.super.getFeaturesInChunk(x.intValue(), z.intValue()), + Interpolated.of((i) -> 0D, (i) -> new KList())).cache2D(2048); + featureStream = ProceduralStream.of(EngineMantle.super::forEachFeature, + Interpolated.of((i) -> 0D, (i) -> new KList())).cache2D(8192); + } + + @ChunkCoordinates + public KList getFeaturesInChunk(int x, int z) { + return featureChunkStream.get(x, z); + } + + @BlockCoordinates + public KList forEachFeature(double x, double z) { + return featureStream.get(x, z); } @Override