From e72189adc76cb9774982e4ef8b891746ed5a9b9c Mon Sep 17 00:00:00 2001 From: Brian Neumann-Fopiano Date: Wed, 7 Oct 2026 10:24:59 -0400 Subject: [PATCH] Adopt cooperative reload cleanup - Return cleanup completion from the committed Iris reload callback --- .../bukkit/plugin/src/main/java/art/arcane/iris/Iris.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/adapters/bukkit/plugin/src/main/java/art/arcane/iris/Iris.java b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/Iris.java index 25700400e..3bc843e9c 100644 --- a/adapters/bukkit/plugin/src/main/java/art/arcane/iris/Iris.java +++ b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/Iris.java @@ -18,6 +18,7 @@ package art.arcane.iris; +import java.util.concurrent.CompletionStage; import art.arcane.volmlib.util.diagnostics.BukkitDebugDump; import art.arcane.iris.generation.runtime.IrisEngineEffects; import art.arcane.iris.generation.runtime.IrisWorldManager; @@ -1011,20 +1012,21 @@ public class Iris extends VolmitPlugin implements Listener, ReloadAware { } @Override - public void onPreUnload(ReloadAware.PreUnloadReason reason) { + public CompletionStage commitReload(ReloadAware.PreUnloadReason reason) { teardownPapi(); if (IrisToolbelt.isServerStopping()) { quiesceRuntimeForServerShutdown("pre-unload:" + reason); startPostStopFinisher(); Iris.debug("Pre-unload hook deferred generator teardown until Paper closes its chunk schedulers."); - return; + return CompletableFuture.completedFuture(null); } if (alreadyDrained.get()) { Iris.debug("Pre-unload hook skipped; Iris already drained."); - return; + return CompletableFuture.completedFuture(null); } Iris.debug("BileTools pre-unload hook fired (" + reason + "). Freezing all Iris worlds."); drainOnce("pre-unload:" + reason, 45L); + return CompletableFuture.completedFuture(null); } /**