Mekanism

Mekanism

111M Downloads

Extraction algorithm issue

Dawnflash opened this issue ยท 1 comments

commented

This is an issue certainly replicable in 8.1+ versions, probably even earlier.
Setting an inventory for extraction (auto-eject) traverses the inventory from the last to the first slot. If it finds an item that can't be ejected to any inventory, it HALTS the algorithm, preventing any other suitable items to be ejected.

Say, you have a chest wired to Energized Smelter. There are two items: Iron Ore and Iron Ingot. If the ore comes before the ingot in the inventory slots, it won't ever be extracted. If it's reversed (the ore comes last), it's properly handled.

Now I understand that iteration is hardcoded, but I highly suggest the algorithm proceeds to check the whole inventory for items to eject.

Ender IO, for comparation, when set for extraction, checks the inventory properly, ignoring items which can't be processed and skipping to the ones that can, if any.

commented

The issue in this case is efficiency. If the algorithm were to traverse the entire inventory's collection of slots, it would require that many pathfinding calls as well throughout the transporter network to check availability which would cause some serious delay on the server side. It's possible to get around this with a bit of a rewrite, but that's too much work for me right now :(