From 268018673b6783cab31f1ad38907ca433b7230fe Mon Sep 17 00:00:00 2001 From: way2muchnoise Date: Tue, 1 Nov 2016 11:49:30 +0100 Subject: [PATCH] faster getPatterns lookup, #559 --- .../refinedstorage/tile/TileController.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java index 82d91ec13..fb9edee99 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java @@ -24,6 +24,7 @@ import com.raoulvdberge.refinedstorage.api.storage.fluid.IFluidStorageCache; import com.raoulvdberge.refinedstorage.api.storage.item.IItemStorage; import com.raoulvdberge.refinedstorage.api.storage.item.IItemStorageCache; import com.raoulvdberge.refinedstorage.api.util.IComparer; +import com.raoulvdberge.refinedstorage.api.util.IItemStackList; import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeGraph; import com.raoulvdberge.refinedstorage.apiimpl.network.WirelessGridHandler; @@ -407,10 +408,12 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR List patterns = new ArrayList<>(); for (ICraftingPattern craftingPattern : getPatterns()) { - for (ItemStack output : craftingPattern.getOutputs()) { - if (API.instance().getComparer().isEqual(output, pattern, flags)) { - patterns.add(craftingPattern); - } + IItemStackList outputs = API.instance().createItemStackList(); + craftingPattern.getOutputs().stream().filter(Objects::nonNull).forEach(outputs::add); + outputs = outputs.getOredicted(); + ItemStack contains = outputs.get(pattern, flags); + if (contains != null && contains.stackSize > 0) { + patterns.add(craftingPattern); } }