From 6ba8924352e853da99c27ece25d614a4073ec4e4 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Thu, 7 Dec 2017 19:53:32 +0100 Subject: [PATCH] Fixed Exporter in Regulator Mode not regulating properly when same item is specified multiple times, fixes #1563 --- CHANGELOG.md | 1 + .../apiimpl/network/node/NetworkNodeExporter.java | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b58bec78e..2dd8ab478 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### 1.5.26 - Added Funky Locomotion integration (raoulvdberge) - Minor fixes to autocrafting (raoulvdberge) +- Fixed Exporter in Regulator Mode not regulating properly when same item is specified multiple times (raoulvdberge) ### 1.5.25 - Fixed not being able to autocraft different Storage Drawers' wood drawers (raoulvdberge) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java index 740485572..5d27c98cd 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java @@ -145,7 +145,15 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy } } - stackSize = slot.getCount() - found; + int needed = 0; + + for (int i = 0; i < itemFilters.getSlots(); ++i) { + if (API.instance().getComparer().isEqualNoQuantity(slot, itemFilters.getStackInSlot(i))) { + needed += itemFilters.getStackInSlot(i).getCount(); + } + } + + stackSize = needed - found; if (stackSize <= 0) { return; @@ -158,7 +166,7 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy if (took == null) { if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) { - network.getCraftingManager().schedule(slot, 1, compare); + network.getCraftingManager().schedule(slot, stackSize, compare); } } else if (ItemHandlerHelper.insertItem(handler, took, true).isEmpty()) { took = network.extractItem(slot, Math.min(slot.getMaxStackSize(), stackSize), compare, false);