diff --git a/core/src/mindustry/world/blocks/storage/Unloader.java b/core/src/mindustry/world/blocks/storage/Unloader.java index bf70385092..206d732efa 100644 --- a/core/src/mindustry/world/blocks/storage/Unloader.java +++ b/core/src/mindustry/world/blocks/storage/Unloader.java @@ -143,12 +143,18 @@ public class Unloader extends Block{ } //sort so it gives full priority to blocks that can give but not receive (stackConveyors and Storage), and then by load, and then by last use - possibleBlocks.sort(Structs.comps( - Structs.comparingBool(e -> e.building.block.highUnloadPriority), + possibleBlocks.sort( Structs.comps( - Structs.comparingFloat(e -> e.loadFactor), - Structs.comparingInt(e -> -lastUsed[e.index]) - ))); + Structs.comps( + Structs.comparingBool(e -> e.building.block.highUnloadPriority && !e.canLoad), + Structs.comparingBool(e -> e.canUnload && !e.canLoad) + ), + Structs.comps( + Structs.comparingFloat(e -> e.loadFactor), + Structs.comparingInt(e -> -lastUsed[e.index]) + ) + ) + ); ContainerStat dumpingFrom = null; ContainerStat dumpingTo = null; @@ -175,7 +181,7 @@ public class Unloader extends Block{ } //trade the items - if(dumpingFrom != null && dumpingTo != null && (dumpingFrom.loadFactor != dumpingTo.loadFactor || dumpingFrom.building.block.highUnloadPriority)){ + if(dumpingFrom != null && dumpingTo != null && (dumpingFrom.loadFactor != dumpingTo.loadFactor || !dumpingFrom.canLoad)){ dumpingTo.building.handleItem(this, item); dumpingFrom.building.removeStack(item, 1); lastUsed[dumpingFrom.index] = 0;