diff --git a/src/main/java/com/volmit/iris/core/gui/PregeneratorGUI.java b/src/main/java/com/volmit/iris/core/pregenerator/PregenListener.java similarity index 59% rename from src/main/java/com/volmit/iris/core/gui/PregeneratorGUI.java rename to src/main/java/com/volmit/iris/core/pregenerator/PregenListener.java index 0aada2f15..5faec9d13 100644 --- a/src/main/java/com/volmit/iris/core/gui/PregeneratorGUI.java +++ b/src/main/java/com/volmit/iris/core/pregenerator/PregenListener.java @@ -16,7 +16,22 @@ * along with this program. If not, see . */ -package com.volmit.iris.core.gui; +package com.volmit.iris.core.pregenerator; -public class PregeneratorGUI { +public interface PregenListener { + void onTick(double chunksPerSecond, double chunksPerMinute, double regionsPerMinute, double percent, int generated, int totalChunks, int chunksRemaining, long eta, long elapsed, String method); + + void onChunkGenerating(int x, int z); + + void onChunkGenerated(int x, int z); + + void onRegionGenerated(int x, int z); + + void onRegionGenerating(int x, int z); + + void onRegionSkipped(int x, int z); + + void onClose(); + + void onSaving(); } diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineCompositeGenerator.java b/src/main/java/com/volmit/iris/engine/framework/EngineCompositeGenerator.java index f16276dcb..bf3067f66 100644 --- a/src/main/java/com/volmit/iris/engine/framework/EngineCompositeGenerator.java +++ b/src/main/java/com/volmit/iris/engine/framework/EngineCompositeGenerator.java @@ -23,6 +23,7 @@ import com.volmit.iris.core.IrisDataManager; import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.nms.BiomeBaseInjector; import com.volmit.iris.core.nms.INMS; +import com.volmit.iris.core.pregenerator.PregenListener; import com.volmit.iris.engine.IrisEngineCompound; import com.volmit.iris.engine.IrisWorlds; import com.volmit.iris.engine.cache.Cache; @@ -460,6 +461,11 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce @Override public void directWriteMCA(IrisWorld w, int x, int z, NBTWorld writer, MultiBurst burst) { + directWriteMCA(w, x, z, writer, burst, null); + } + + @Override + public void directWriteMCA(IrisWorld w, int x, int z, NBTWorld writer, MultiBurst burst, PregenListener l) { BurstExecutor e = burst.burst(1024); int mcaox = x << 5; int mcaoz = z << 5; @@ -468,7 +474,17 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce int ii = i; for (int j = 0; j < 32; j++) { int jj = j; - e.queue(() -> directWriteChunk(w, ii + mcaox, jj + mcaoz, writer)); + e.queue(() -> { + if(l != null) + { + l.onChunkGenerating(ii + mcaox, jj + mcaoz); + } + directWriteChunk(w, ii + mcaox, jj + mcaoz, writer); + if(l != null) + { + l.onChunkGenerated(ii + mcaox, jj + mcaoz); + } + }); } } diff --git a/src/main/java/com/volmit/iris/engine/framework/IrisAccess.java b/src/main/java/com/volmit/iris/engine/framework/IrisAccess.java index 8c6e692f7..1f8919b50 100644 --- a/src/main/java/com/volmit/iris/engine/framework/IrisAccess.java +++ b/src/main/java/com/volmit/iris/engine/framework/IrisAccess.java @@ -20,6 +20,7 @@ package com.volmit.iris.engine.framework; import com.volmit.iris.Iris; import com.volmit.iris.core.IrisDataManager; +import com.volmit.iris.core.pregenerator.PregenListener; import com.volmit.iris.engine.IrisComplex; import com.volmit.iris.engine.data.DataProvider; import com.volmit.iris.engine.data.mca.NBTWorld; @@ -47,6 +48,8 @@ public interface IrisAccess extends Hotloadable, DataProvider { void directWriteMCA(IrisWorld w, int x, int z, NBTWorld writer, MultiBurst burst); + void directWriteMCA(IrisWorld w, int x, int z, NBTWorld writer, MultiBurst burst, PregenListener listener); + void directWriteChunk(IrisWorld w, int x, int z, NBTWorld writer); int getGenerated();