From 6d79d3d1f812af0c5365e1910e18ad58c8caa11d Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Mon, 19 Jul 2021 04:21:49 -0400 Subject: [PATCH] Support pregen listeners in iris comp gen --- .../PregenListener.java} | 19 +++++++++++++++++-- .../framework/EngineCompositeGenerator.java | 18 +++++++++++++++++- .../iris/engine/framework/IrisAccess.java | 3 +++ 3 files changed, 37 insertions(+), 3 deletions(-) rename src/main/java/com/volmit/iris/core/{gui/PregeneratorGUI.java => pregenerator/PregenListener.java} (59%) 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();