diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a38f7310..c269f32d7 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ - Fixed when shift clicking crafting recipe and inventory is full items are dropping on the ground instead of going in the system (raoulvdberge) - Fixed glitchy rendering of cable parts in item form (raoulvdberge) - Fixed Destructor being able to break bedrock (InusualZ) +- Fixed External Storage thinking that items are inserted in Extra Utilities Trash Cans (InusualZ) - Updated Storage Drawers API (raoulvdberge) ### 1.1.3 diff --git a/src/main/java/refinedstorage/api/autocrafting/task/IProcessable.java b/src/main/java/refinedstorage/api/autocrafting/task/IProcessable.java index b19eace17..36b2bee75 100755 --- a/src/main/java/refinedstorage/api/autocrafting/task/IProcessable.java +++ b/src/main/java/refinedstorage/api/autocrafting/task/IProcessable.java @@ -3,6 +3,8 @@ package refinedstorage.api.autocrafting.task; import net.minecraft.item.ItemStack; import refinedstorage.api.autocrafting.ICraftingPattern; +import java.util.Deque; + /** * Represents a item in a crafting task that can be processed. */ @@ -13,14 +15,9 @@ public interface IProcessable { ICraftingPattern getPattern(); /** - * @return the first stack to attempt inserting + * @return the stacks to insert */ - ItemStack getStackToInsert(); - - /** - * Moves to the next stack to insert. - */ - void nextStack(); + Deque getToInsert(); /** * @return true if we received all outputs, false otherwise diff --git a/src/main/java/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java b/src/main/java/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java index a81a69647..163294dd1 100755 --- a/src/main/java/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java +++ b/src/main/java/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java @@ -213,13 +213,13 @@ public class CraftingTask implements ICraftingTask { for (IProcessable processable : toProcess) { IItemHandler inventory = processable.getPattern().getContainer().getFacingInventory(); - if (inventory != null && processable.getStackToInsert() != null) { - ItemStack toInsert = network.extractItem(processable.getStackToInsert(), 1, compare); + if (inventory != null && !processable.getToInsert().isEmpty()) { + ItemStack toInsert = network.extractItem(processable.getToInsert().peek(), 1, compare); if (ItemHandlerHelper.insertItem(inventory, toInsert, true) == null) { ItemHandlerHelper.insertItem(inventory, toInsert, false); - processable.nextStack(); + processable.getToInsert().pop(); } } } diff --git a/src/main/java/refinedstorage/apiimpl/autocrafting/task/Processable.java b/src/main/java/refinedstorage/apiimpl/autocrafting/task/Processable.java index 2e350ddb5..57bc3bc90 100755 --- a/src/main/java/refinedstorage/apiimpl/autocrafting/task/Processable.java +++ b/src/main/java/refinedstorage/apiimpl/autocrafting/task/Processable.java @@ -5,14 +5,23 @@ import refinedstorage.api.autocrafting.ICraftingPattern; import refinedstorage.api.autocrafting.task.IProcessable; import refinedstorage.apiimpl.API; +import java.util.ArrayDeque; +import java.util.Deque; + public class Processable implements IProcessable { private ICraftingPattern pattern; - private int pos; + private Deque toInsert = new ArrayDeque<>(); private boolean satisfied[]; public Processable(ICraftingPattern pattern) { this.pattern = pattern; this.satisfied = new boolean[pattern.getOutputs().size()]; + + for (ItemStack input : pattern.getInputs()) { + if (input != null) { + toInsert.add(input.copy()); + } + } } @Override @@ -21,17 +30,8 @@ public class Processable implements IProcessable { } @Override - public void nextStack() { - ++pos; - } - - @Override - public ItemStack getStackToInsert() { - if (pos > pattern.getInputs().size() - 1) { - return null; - } - - return pattern.getInputs().get(pos); + public Deque getToInsert() { + return toInsert; } @Override diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 49a2a5153..e19196b46 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -448,9 +448,11 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR int score = 0; for (ItemStack input : patterns.get(i).getInputs()) { - ItemStack stored = itemStorage.getList().get(input, IComparer.COMPARE_DAMAGE | IComparer.COMPARE_NBT); + if (input != null) { + ItemStack stored = itemStorage.getList().get(input, IComparer.COMPARE_DAMAGE | IComparer.COMPARE_NBT); - score += stored != null ? stored.stackSize : 0; + score += stored != null ? stored.stackSize : 0; + } } if (score > highestScore) {