From e1357fb20a39d538e790c4f2589994762772f14e Mon Sep 17 00:00:00 2001 From: Qther Date: Sat, 1 Aug 2026 20:57:28 +0800 Subject: [PATCH 1/2] perf: swap isDone and matchesStack checks --- .../java/ca/teamdman/sfm/common/program/LimitedInputSlot.java | 4 ++-- .../ca/teamdman/sfm/common/program/LimitedOutputSlot.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/platform/minecraft/src/main/java/ca/teamdman/sfm/common/program/LimitedInputSlot.java b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/program/LimitedInputSlot.java index 7dc51478e..1c6896fef 100644 --- a/platform/minecraft/src/main/java/ca/teamdman/sfm/common/program/LimitedInputSlot.java +++ b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/program/LimitedInputSlot.java @@ -58,11 +58,11 @@ public boolean isDone() { done = true; return true; } - if (!tracker.matchesStack(stack)) { + if (tracker.isDone(type, stack)) { done = true; return true; } - if (tracker.isDone(type, stack)) { + if (!tracker.matchesStack(stack)) { done = true; return true; } diff --git a/platform/minecraft/src/main/java/ca/teamdman/sfm/common/program/LimitedOutputSlot.java b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/program/LimitedOutputSlot.java index 2e3dacce3..74fecba65 100644 --- a/platform/minecraft/src/main/java/ca/teamdman/sfm/common/program/LimitedOutputSlot.java +++ b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/program/LimitedOutputSlot.java @@ -51,10 +51,10 @@ public boolean isDone() { if (count >= type.getMaxStackSizeForSlot(handler, slot)) { return true; } - if (count != 0 && !tracker.matchesStack(stack)) { + if (tracker.isDone(type, stack)) { return true; } - if (tracker.isDone(type, stack)) { + if (count != 0 && !tracker.matchesStack(stack)) { return true; } return false; From f207273d281fbeb3121dcc222770259123327362 Mon Sep 17 00:00:00 2001 From: Qther Date: Sat, 1 Aug 2026 21:18:50 +0800 Subject: [PATCH 2/2] slightly pessimize best-case output for better performance with slow getMaxStackSizeForSlot --- .../ca/teamdman/sfm/common/program/LimitedOutputSlot.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/platform/minecraft/src/main/java/ca/teamdman/sfm/common/program/LimitedOutputSlot.java b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/program/LimitedOutputSlot.java index 74fecba65..7a549f08c 100644 --- a/platform/minecraft/src/main/java/ca/teamdman/sfm/common/program/LimitedOutputSlot.java +++ b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/program/LimitedOutputSlot.java @@ -47,11 +47,12 @@ public boolean isDone() { return true; } STACK stack = getStackInSlot(); - long count = type.getAmount(stack); - if (count >= type.getMaxStackSizeForSlot(handler, slot)) { + if (tracker.isDone(type, stack)) { return true; } - if (tracker.isDone(type, stack)) { + + long count = type.getAmount(stack); + if (count >= type.getMaxStackSizeForSlot(handler, slot)) { return true; } if (count != 0 && !tracker.matchesStack(stack)) {