From 2be75ac35821328c33e9a71e3b15464932643e24 Mon Sep 17 00:00:00 2001 From: koiNoCirculation Date: Thu, 5 Sep 2024 01:21:03 -0700 Subject: [PATCH] rename OnCompleteListener and move cleaning of listeners to actual beginning of craft --- .../api/networking/crafting/ICraftingCPU.java | 6 +-- ...stener.java => CraftCompleteListener.java} | 2 +- .../implementations/CraftingCPUCluster.java | 37 ++++++++++--------- 3 files changed, 23 insertions(+), 22 deletions(-) rename src/main/java/appeng/api/util/{OnCompleteListener.java => CraftCompleteListener.java} (84%) diff --git a/src/main/java/appeng/api/networking/crafting/ICraftingCPU.java b/src/main/java/appeng/api/networking/crafting/ICraftingCPU.java index 9f9ef35080e..c7274acc796 100644 --- a/src/main/java/appeng/api/networking/crafting/ICraftingCPU.java +++ b/src/main/java/appeng/api/networking/crafting/ICraftingCPU.java @@ -22,7 +22,7 @@ import appeng.api.storage.data.IAEItemStack; import appeng.api.util.CraftCancelListener; import appeng.api.util.CraftingStatusListener; -import appeng.api.util.OnCompleteListener; +import appeng.api.util.CraftCompleteListener; public interface ICraftingCPU extends IBaseMonitor { @@ -81,9 +81,9 @@ default long getStartItemCount() { } /** - * @param onCompleteListener a callback that is called when task is complete + * @param craftCompleteListener a callback that is called when task is complete */ - void addOnCompleteListener(OnCompleteListener onCompleteListener); + void addOnCompleteListener(CraftCompleteListener craftCompleteListener); /** * @param onCancelListener a callback that is called when task is canceled diff --git a/src/main/java/appeng/api/util/OnCompleteListener.java b/src/main/java/appeng/api/util/CraftCompleteListener.java similarity index 84% rename from src/main/java/appeng/api/util/OnCompleteListener.java rename to src/main/java/appeng/api/util/CraftCompleteListener.java index 9785821338a..9198e016a58 100644 --- a/src/main/java/appeng/api/util/OnCompleteListener.java +++ b/src/main/java/appeng/api/util/CraftCompleteListener.java @@ -3,7 +3,7 @@ import java.io.Serializable; @FunctionalInterface -public interface OnCompleteListener extends Serializable { +public interface CraftCompleteListener extends Serializable { long serialVersionUID = 734594276097234589L; diff --git a/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java b/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java index e76a838a07d..18a0f318a38 100644 --- a/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java +++ b/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java @@ -32,6 +32,7 @@ import java.util.function.Consumer; import java.util.stream.IntStream; +import appeng.api.util.CraftCompleteListener; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.InventoryCrafting; @@ -88,7 +89,6 @@ import appeng.api.util.CraftingStatusListener; import appeng.api.util.DimensionalCoord; import appeng.api.util.IInterfaceViewable; -import appeng.api.util.OnCompleteListener; import appeng.api.util.WorldCoord; import appeng.container.ContainerNull; import appeng.core.AELog; @@ -150,7 +150,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { private long remainingItemCount; private long numsOfOutput; - private List> defaultOnComplete = Arrays + private List> defaultOnComplete = Arrays .asList((finalOutput, numsOfOutput, elapsedTime) -> { if (!this.playersFollowingCurrentCraft.isEmpty()) { final String elapsedTimeText = DurationFormatUtils.formatDuration( @@ -174,7 +174,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { } }); - private List> onCompleteListeners = initializeDefaultOnCompleteListener(); + private List> craftCompleteListeners = initializeDefaultOnCompleteListener(); private List> craftingStatusListeners = new ArrayList<>(); @@ -199,13 +199,13 @@ public ICraftingLink getLastCraftingLink() { return this.myLastLink; } - private List> initializeDefaultOnCompleteListener() { + private List> initializeDefaultOnCompleteListener() { return new ArrayList<>(defaultOnComplete); } @Override - public void addOnCompleteListener(OnCompleteListener onCompleteListener) { - this.onCompleteListeners.add(onCompleteListener); + public void addOnCompleteListener(CraftCompleteListener craftCompleteListener) { + this.craftCompleteListeners.add(craftCompleteListener); } @Override @@ -475,7 +475,7 @@ private void completeJob() { AELog.crafting(LOG_MARK_AS_COMPLETE, logStack); } - onCompleteListeners.forEach(f -> f.apply(this.finalOutput.getItemStack(), this.numsOfOutput, elapsedTime)); + craftCompleteListeners.forEach(f -> f.apply(this.finalOutput.getItemStack(), this.numsOfOutput, elapsedTime)); this.usedStorage = 0; this.remainingItemCount = 0; this.startItemCount = 0; @@ -484,7 +484,7 @@ private void completeJob() { this.numsOfOutput = 0; this.isComplete = true; this.playersFollowingCurrentCraft.clear(); - this.onCompleteListeners = initializeDefaultOnCompleteListener(); + this.craftCompleteListeners = initializeDefaultOnCompleteListener(); } private EntityPlayerMP getPlayerByName(String playerName) { @@ -606,7 +606,7 @@ public void cancel() { this.finalOutput = null; this.updateCPU(); - this.onCompleteListeners = initializeDefaultOnCompleteListener(); + this.craftCompleteListeners = initializeDefaultOnCompleteListener(); for (Runnable onCancelListener : this.onCancelListeners) { onCancelListener.run(); } @@ -879,13 +879,7 @@ public ICraftingLink submitJob(final IGrid g, final ICraftingJob job, final Base && this.availableStorage >= this.usedStorage + job.getByteTotal()) { return mergeJob(g, job, src); } - for (Runnable onCancelListener : onCancelListeners) { - onCancelListener.run(); - } - onCancelListeners.clear(); - craftingStatusListeners.clear(); - onCompleteListeners = initializeDefaultOnCompleteListener(); // clear all possible listeners - // when it comes to a new craft, + if (!this.tasks.isEmpty() || !this.waitingFor.isEmpty()) { return null; @@ -911,6 +905,13 @@ public ICraftingLink submitJob(final IGrid g, final ICraftingJob job, final Base this.playersFollowingCurrentCraft.clear(); if (ci.commit(src)) { + for (Runnable onCancelListener : onCancelListeners) { + onCancelListener.run(); + } + onCancelListeners.clear(); + craftingStatusListeners.clear(); + craftCompleteListeners = initializeDefaultOnCompleteListener(); // clear all possible listeners + // when it comes to a new craft, if (job.getOutput() != null) { this.finalOutput = job.getOutput(); this.waiting = false; @@ -1214,7 +1215,7 @@ public void writeToNBT(final NBTTagCompound data) { data.setLong("usedStorage", this.usedStorage); data.setLong("numsOfOutput", this.numsOfOutput); try { - data.setTag("onCompleteListeners", persistListeners(1, onCompleteListeners)); + data.setTag("craftCompleteListeners", persistListeners(1, craftCompleteListeners)); data.setTag("onCancelListeners", persistListeners(0, onCancelListeners)); data.setTag("craftStatusListeners", persistListeners(0, craftingStatusListeners)); } catch (IOException e) { @@ -1367,7 +1368,7 @@ public void readFromNBT(final NBTTagCompound data) { DimensionalCoord.readAsListFromNBT(pro)); } try { - unpersistListeners(1, onCompleteListeners, data.getCompoundTag("onCompleteListeners")); + unpersistListeners(1, craftCompleteListeners, data.getCompoundTag("craftCompleteListeners")); unpersistListeners(0, onCancelListeners, data.getCompoundTag("onCancelListeners")); unpersistListeners(0, craftingStatusListeners, data.getCompoundTag("craftStatusListeners")); } catch (IOException | ClassNotFoundException e) {