diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index 70c682819f..0327c36ab0 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -265,6 +265,8 @@ public class Block extends UnlockableContent{ public boolean quickRotate = true; /** Main subclass. Non-anonymous. */ public @Nullable Class subclass; + /** Determines if this block gets a higher unloader priority. */ + public boolean highUnloadPriority = false; public float selectScroll; //scroll position for certain blocks public Prov buildType = null; //initialized later diff --git a/core/src/mindustry/world/blocks/distribution/StackConveyor.java b/core/src/mindustry/world/blocks/distribution/StackConveyor.java index af8501fd69..d19004d243 100644 --- a/core/src/mindustry/world/blocks/distribution/StackConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/StackConveyor.java @@ -42,6 +42,7 @@ public class StackConveyor extends Block implements Autotiler{ hasItems = true; itemCapacity = 10; conveyorPlacement = true; + highUnloadPriority = true; ambientSound = Sounds.conveyor; ambientSoundVolume = 0.004f; diff --git a/core/src/mindustry/world/blocks/storage/StorageBlock.java b/core/src/mindustry/world/blocks/storage/StorageBlock.java index 01b50b10bf..9b0d482153 100644 --- a/core/src/mindustry/world/blocks/storage/StorageBlock.java +++ b/core/src/mindustry/world/blocks/storage/StorageBlock.java @@ -25,6 +25,7 @@ public class StorageBlock extends Block{ flags = EnumSet.of(BlockFlag.storage); allowResupply = true; envEnabled = Env.any; + highUnloadPriority = true; } @Override diff --git a/core/src/mindustry/world/blocks/storage/Unloader.java b/core/src/mindustry/world/blocks/storage/Unloader.java index 46508a40cc..2b8c4ad4a1 100644 --- a/core/src/mindustry/world/blocks/storage/Unloader.java +++ b/core/src/mindustry/world/blocks/storage/Unloader.java @@ -11,7 +11,6 @@ import mindustry.gen.*; import mindustry.type.*; import mindustry.world.*; import mindustry.world.blocks.*; -import mindustry.world.blocks.distribution.*; import mindustry.world.meta.*; import static mindustry.Vars.*; @@ -139,7 +138,7 @@ 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 possibleBlocks.sort(Structs.comps( - Structs.comparingBool(e -> e.building.block instanceof StorageBlock || e.building.block instanceof StackConveyor), + Structs.comparingBool(e -> e.building.block.highUnloadPriority), Structs.comparingFloat(e -> e.loadFactor) )); @@ -163,7 +162,7 @@ public class Unloader extends Block{ } //trade the items - if(dumpingFrom != null && dumpingTo != null && dumpingFrom.loadFactor != dumpingTo.loadFactor){ + if(dumpingFrom != null && dumpingTo != null && (dumpingFrom.loadFactor != dumpingTo.loadFactor || dumpingFrom.building.block.highUnloadPriority)){ dumpingTo.building.handleItem(this, item); dumpingFrom.building.removeStack(item, 1); any = true; @@ -232,4 +231,4 @@ public class Unloader extends Block{ sortItem = id == -1 ? null : content.items().get(id); } } -} \ No newline at end of file +}