Basic Inventory Hopper with Item Filter on reject mode not not continuously filtering after one stack
Ldawsonm opened this issue ยท 0 comments
Version: 1.20-1.6.8
An interesting problem here. I will explain my configuration so as to reproduce this issue.
I have a double chest with a Basic Inventory Hopper pulling from it into an Inventory Cable which connects to an Inventory Cable Connector. The Basic Inventory Hopper has an Item Filter applied to it with the following rules: rejecting matching Diamond Pickaxe, Diamond Shovel, and Steak. The Inventory Connector is then connected to a chest via an Inventory Cable Connector.
I've been using this mod with Villager Workers, so this filtration is meant to extract resources mined by a Miner worker.
So when a non-filtered item like Dirt or Cobblestone is put into the double chest, whichever one was first sometimes starts to extract from the double chest into the target chest. It's not exactly clear what causes the extraction to trigger, but once the extraction of one stack of items is finished, no more items are extracted, even when there are still non-filtered items left in the double chest. In order to restart the extraction, you'll either need to insert more item stacks, or move that item stack.
Note that this behavior occurred when both the Miner put items into the chest and when I put items into the chest manually.
Edit: I messed with it a little more and noticed an interesting pattern.
Okay so let's say you put a filtered item in slot X and an unfiltered item is in slot Y. In this case this item would not be extracted because the filter is on a rejection rule. Then now let's say the unfiltered item is not extracting. Move the unfiltered item to a different slot Z and move the filtered item to slot Y. Now the unfiltered item starts extracting until you move it to a different slot other than slot Z. Once you move the item from slot Z, you must move the filtered item to slot Z in order to restart extraction.
So it would appear that the code is mapping filtered items to inventory slots and conversely marking unfiltered items to inventory slots as well, and this is probably to reduce the amount of inventory slots the code needs to check. But then the only way this mapping refreshes is if a filtered item moves to a new slot.