From 6199256058d6c64d8d267b9869fde0be4330bb75 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Wed, 21 Oct 2020 17:47:20 +0200 Subject: [PATCH] Poor attempt at adding pregen pausing Please fix /command/CommandIrisPregen.java (has // TODO:) and /util/PregenJob.java (has // TODO:) --- .../iris/command/CommandIrisPregen.java | 34 ++++++++++++++++- .../java/com/volmit/iris/util/PregenJob.java | 37 +++++++++++++++++++ 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/volmit/iris/command/CommandIrisPregen.java b/src/main/java/com/volmit/iris/command/CommandIrisPregen.java index 84f546e20..57db92c0e 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisPregen.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisPregen.java @@ -35,11 +35,41 @@ public class CommandIrisPregen extends MortarCommand } else { - sender.sendMessage("Stopped all pregens."); + sender.sendMessage("Stopped All Pregens."); + PregenJob.stop(); } - PregenJob.stop(); return true; } + /* TODO: help + else if(args[0].equalsIgnoreCase("pause")) + { + if(PregenJob.task == -1) + { + sender.sendMessage("No Active Pregens"); + } + else + { + if (PregenJob.isPaused()) { + PregenJob.resume(); + } else { + PregenJob.pause(); + } + sender.sendMessage("Paused Active Pregen"); + } + return true; + } else if(args[0].equalsIgnoreCase("resume")){ + if(!PregenJob.isPaused()) + { + sender.sendMessage("No Paused Pregens"); + } + else + { + sender.sendMessage("Resumed Paused Pregen"); + PregenJob.resume(); + } + return true; + } + */ if(sender.isPlayer()) { diff --git a/src/main/java/com/volmit/iris/util/PregenJob.java b/src/main/java/com/volmit/iris/util/PregenJob.java index 63b3e25d3..22019ac87 100644 --- a/src/main/java/com/volmit/iris/util/PregenJob.java +++ b/src/main/java/com/volmit/iris/util/PregenJob.java @@ -17,6 +17,7 @@ import com.volmit.iris.gen.scaffold.IrisWorlds; import com.volmit.iris.gui.PregenGui; import io.papermc.lib.PaperLib; +import org.bukkit.scheduler.BukkitTask; public class PregenJob implements Listener { @@ -51,6 +52,8 @@ public class PregenJob implements Listener private long nogen = M.ms(); private KList requeueMCA = new KList(); private RollingSequence acps = new RollingSequence(PaperLib.isPaper() ? 8 : 32); + private BukkitTask pausedTask; + private boolean isPaused = false; int xc = 0; public PregenJob(World world, int size, MortarSender sender, Runnable onDone) @@ -124,6 +127,40 @@ public class PregenJob implements Listener task = -1; } + // TODO: Cannot get paused value from this. Have to check bukkit tasks, not sure how. + // TODO: Trying to add functionality here to allow for pausing an continuing. + public static boolean isPaused(){ + return false; + //return this.isPaused; + } + + public static void pause() + { + try + { + // Save the task, tell bukkit to cancel it + stop(); + } + catch(Throwable e) + { + + } + task = -1; + } + + public static void resume() + { + try + { + // Load task and tell bukkit to continue it + } + catch(Throwable e) + { + + } + task = -1; + } + public void onTick() { if(completed)