diff --git a/CHANGELOG.md b/CHANGELOG.md index 2dd8ab478..83731d2b9 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - 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) +- Fixed air appearing in Grid (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/util/StackListItem.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/util/StackListItem.java index ec4f3eb1e..605881eb0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/util/StackListItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/util/StackListItem.java @@ -7,18 +7,17 @@ import com.raoulvdberge.refinedstorage.apiimpl.API; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.items.ItemHandlerHelper; -import org.apache.commons.lang3.tuple.Pair; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.*; -import java.util.stream.Collectors; +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; public class StackListItem implements IStackList { private ArrayListMultimap stacks = ArrayListMultimap.create(); private List removeTracker = new LinkedList<>(); protected boolean needsCleanup = false; - private Set touchedItems = new HashSet<>(); @Override public void add(@Nonnull ItemStack stack, int size) { @@ -49,7 +48,6 @@ public class StackListItem implements IStackList { otherStack.shrink(size); if (otherStack.isEmpty()) { - touchedItems.add(stack.getItem()); needsCleanup = true; } @@ -71,7 +69,6 @@ public class StackListItem implements IStackList { otherStack.shrink(size); if (otherStack.isEmpty()) { - touchedItems.add(stack.getItem()); needsCleanup = true; } @@ -129,14 +126,8 @@ public class StackListItem implements IStackList { @Override public void clean() { - List> toRemove = touchedItems.stream() - .flatMap(item -> stacks.get(item).stream().map(stack -> Pair.of(item, stack))) - .filter(pair -> pair.getValue().isEmpty()) - .collect(Collectors.toList()); + stacks.values().removeIf(ItemStack::isEmpty); - toRemove.forEach(pair -> stacks.remove(pair.getLeft(), pair.getRight())); - - touchedItems.clear(); needsCleanup = false; } @@ -156,6 +147,7 @@ public class StackListItem implements IStackList { if (needsCleanup) { clean(); } + return stacks.values(); }