fix: restore stock link priority #9733
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
Stock links weren't respecting priority. Simple case: create a logistics network with two inventories and a linked packager on each. Put a stack of the same material in each inventory. Place an order and observe which is used. Deprioritize that one with redstone/an analog lever. Place another order. Observe same packager being used despite being deprioritized.
Solution
Have groups of stock links under the same inventoryId tracked for priority along with other links via a list of lists. Flatten by choosing randomly between all links with the same + highest priority. I saw one user suggest picking the packager with the shortest queue, but I don't know enough about the code to figure out how to do that, so I kept what the previous contributor did.
Fixes #9689
I'm not the most experienced with Java, so any eyes and advice would be much appreciated. Thanks!