From 2d37b57701941d6acf504744c772635afeba0810 Mon Sep 17 00:00:00 2001 From: pedroksl Date: Fri, 10 Jan 2025 17:51:04 -0300 Subject: [PATCH] Icon changed and small logic tweak to always filter inputs if filtered input is set --- .../AdvPatternProviderReturnInventory.java | 16 ++++++++++------ .../common/logic/AdvPatternProviderLogic.java | 7 +++++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/pedroksl/advanced_ae/common/inventory/AdvPatternProviderReturnInventory.java b/src/main/java/net/pedroksl/advanced_ae/common/inventory/AdvPatternProviderReturnInventory.java index 2cd641d..01ba409 100644 --- a/src/main/java/net/pedroksl/advanced_ae/common/inventory/AdvPatternProviderReturnInventory.java +++ b/src/main/java/net/pedroksl/advanced_ae/common/inventory/AdvPatternProviderReturnInventory.java @@ -6,6 +6,7 @@ import net.pedroksl.advanced_ae.api.AAESettings; import net.pedroksl.advanced_ae.common.logic.AdvPatternProviderLogic; +import java.util.HashSet; import java.util.Set; public class AdvPatternProviderReturnInventory extends PatternProviderReturnInventory { @@ -15,15 +16,18 @@ public AdvPatternProviderReturnInventory(Runnable listener, AdvPatternProviderLo this.setFilter((slot, what) -> { var filter = logic.getConfigManager().getSetting(AAESettings.FILTERED_IMPORT); if (filter != YesNo.YES) return true; - Set tracked = logic.getTrackedCrafts(); - if (tracked.isEmpty()) return true; - for (AEKey craft : tracked) { - if (what.equals(craft)) { - return true; + Set tracked = logic.getTrackedCrafts(); + if (!tracked.isEmpty()) { + for (AEKey craft : tracked) { + if (what.equals(craft)) { + return true; + } } } - return false; + + HashSet cached = logic.getOutputCache(); + return cached.stream().anyMatch(what::equals); }); } } diff --git a/src/main/java/net/pedroksl/advanced_ae/common/logic/AdvPatternProviderLogic.java b/src/main/java/net/pedroksl/advanced_ae/common/logic/AdvPatternProviderLogic.java index e90536d..baa636d 100644 --- a/src/main/java/net/pedroksl/advanced_ae/common/logic/AdvPatternProviderLogic.java +++ b/src/main/java/net/pedroksl/advanced_ae/common/logic/AdvPatternProviderLogic.java @@ -99,6 +99,7 @@ public class AdvPatternProviderLogic implements InternalInventoryHost, ICrafting private final PatternProviderReturnInventory returnInv; private final AdvPatternProviderTargetCache[] targetCaches = new AdvPatternProviderTargetCache[6]; + private final HashSet outputCache = new HashSet<>(); private YesNo redstoneState = YesNo.UNDECIDED; @@ -291,6 +292,7 @@ public boolean isClientSide() { public void updatePatterns() { patterns.clear(); patternInputs.clear(); + outputCache.clear(); if (craftingWatcher != null) { craftingWatcher.reset(); } @@ -305,6 +307,7 @@ public void updatePatterns() { if (craftingWatcher != null) { for (var output : details.getOutputs()) { craftingWatcher.add(output.what()); + outputCache.add(output.what()); } } @@ -819,6 +822,10 @@ public Set getTrackedCrafts() { return trackedCrafts; } + public HashSet getOutputCache() { + return outputCache; + } + private class Ticker implements IGridTickable { @Override