Round Robin with Priority voids items
ProTriforcer opened this issue ยท 4 comments
GregTech CEu Version
2.8.10-beta
Modpack Used
Nomi-CEu 1.7-beta-5c
Addons Installed
No response
Environment
Singleplayer
New Worlds
Yes
Cross-Mod Interaction
No
Expected Behavior
Expected conveyors set to Round Robin with Priority to not void items
Actual Behavior
Conveyors set to Round Robin with Priority voided items
Steps to Reproduce
- Place a chest and two macerators (or any other inventory with one free slot), connect them with an item pipe
- Place a conveyor to import from the chest, set it to Round Robin with Priority
- Place four stacks of cobblestone into the chest. Two of them will be moved into the macerators with two remaining, as expected
- Open a macerator and right click the cobblestone to take half of the stack. It will be immediately refilled, as expected
- Open the chest and observe a single stack of cobblestone, instead of expected one and a half
It looks like you lose stack size/number of inventories
items for every inventory you top up
So i renamed some variables and did some logging, but i'm way too tired to make sense of it all myself. I'll just post a slightly edited log output and the code that made it here. Hope it helps.
After some debugging, it appears that this block of code, that runs when attempting a dry run here of inserting items into the conveyor from the chest
stack = insertToHandlers(routePathsCopy, stack, simulate);
if (!stack.isEmpty() && !routePathsCopy.isEmpty())
stack = insertToHandlers(routePathsCopy, stack, simulate);
From what I can tell via debugging, it appears that the first stack = insertToHandlers(routePathsCopy, stack, simulate);
tries to split up the stack and insert it to all inventories along the connected network of pipes (but! it looks like it will only insert a max of size of stack / number of connected output inventories
into each attached inventory), and the second insertToHandlers()
call inserts any remaining items equally into any remaining non-full inventories attached to the network of pipes.
so, for ex: if we have a chest filled with a stack of 64 cobble with 4 macerators attached, each filled with 64 cobble, and we remove half a stack:
- the first
insertToHandlers()
call will return with astackSize
of48
(inserting16
into the macerator) - the second call will return
16
- the chest will have 16 cobble remaining
my hypothesis (don't have more time right now to further investigate) is that since we are doing a dry run, it still thinks the macerator has free space available (since we aren't actually inserting items into it during the dry run), so it will "insert" 32
cobble from the 48
remaining, which leaves 16 cobble in the chest
I'll investigate further and attempt a fix, but also wanted to update on my findings
my hypothesis (don't have more time right now to further investigate) is that since we are doing a dry run, it still thinks the macerator has free space available (since we aren't actually inserting items into it during the dry run), so it will "insert" 32 cobble from the 48 remaining, which leaves 16 cobble in the chest
confirmed this is the case