faster getPatterns lookup, #559

This commit is contained in:
way2muchnoise
2016-11-01 11:49:30 +01:00
parent 8e0fdaa0a0
commit 268018673b

View File

@@ -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.IItemStorage;
import com.raoulvdberge.refinedstorage.api.storage.item.IItemStorageCache; import com.raoulvdberge.refinedstorage.api.storage.item.IItemStorageCache;
import com.raoulvdberge.refinedstorage.api.util.IComparer; 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.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeGraph; import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeGraph;
import com.raoulvdberge.refinedstorage.apiimpl.network.WirelessGridHandler; import com.raoulvdberge.refinedstorage.apiimpl.network.WirelessGridHandler;
@@ -407,10 +408,12 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
List<ICraftingPattern> patterns = new ArrayList<>(); List<ICraftingPattern> patterns = new ArrayList<>();
for (ICraftingPattern craftingPattern : getPatterns()) { for (ICraftingPattern craftingPattern : getPatterns()) {
for (ItemStack output : craftingPattern.getOutputs()) { IItemStackList outputs = API.instance().createItemStackList();
if (API.instance().getComparer().isEqual(output, pattern, flags)) { craftingPattern.getOutputs().stream().filter(Objects::nonNull).forEach(outputs::add);
patterns.add(craftingPattern); outputs = outputs.getOredicted();
} ItemStack contains = outputs.get(pattern, flags);
if (contains != null && contains.stackSize > 0) {
patterns.add(craftingPattern);
} }
} }