diff --git a/core/assets/contributors b/core/assets/contributors index 85449e6c45..6ba2c30b20 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -109,3 +109,4 @@ VolasYouKnow Quick-Korx Ángel Rodríguez Aguilera Catchears +younggam diff --git a/core/src/mindustry/core/Version.java b/core/src/mindustry/core/Version.java index 220e75536e..f5b3d2fd6b 100644 --- a/core/src/mindustry/core/Version.java +++ b/core/src/mindustry/core/Version.java @@ -53,7 +53,7 @@ public class Version{ int dot = str.indexOf('.'); if(dot != -1){ int major = Strings.parseInt(str.substring(0, dot), 0), minor = Strings.parseInt(str.substring(dot + 1), 0); - return build >= major && revision >= minor; + return build > major || (build == major && revision >= minor); }else{ return build >= Strings.parseInt(str, 0); } diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 142e89573a..9c4ca480f5 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -384,6 +384,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, //endregion //region handler methods + public boolean canUnload(){ + return block.unloadable; + } + /** Called when an unloader takes an item. */ public void itemTaken(Item item){ diff --git a/core/src/mindustry/world/blocks/distribution/StackConveyor.java b/core/src/mindustry/world/blocks/distribution/StackConveyor.java index 4b30d7e82b..7deba52711 100644 --- a/core/src/mindustry/world/blocks/distribution/StackConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/StackConveyor.java @@ -179,14 +179,23 @@ public class StackConveyor extends Block implements Autotiler{ } } + @Override + public boolean canUnload(){ + return state != stateLoad; + } + + @Override + public float efficiency(){ + return 1f; + } + @Override public void updateTile(){ // reel in crater if(cooldown > 0f) cooldown = Mathf.clamp(cooldown - speed * edelta(), 0f, recharge); - if(link == -1){ - return; - } + // indicates empty state + if(link == -1) return; // crater needs to be centered if(cooldown > 0f) return; @@ -196,6 +205,9 @@ public class StackConveyor extends Block implements Autotiler{ lastItem = items.first(); } + // do not continue if disabled, will still allow one to be reeled in to prevent visual stacking + if(!enabled) return; + if(state == stateUnload){ //unload while(lastItem != null && (!splitOut ? moveForward(lastItem) : dump(lastItem))){ if(items.empty()) poofOut(); diff --git a/core/src/mindustry/world/blocks/storage/Unloader.java b/core/src/mindustry/world/blocks/storage/Unloader.java index 47b7c71088..e040153828 100644 --- a/core/src/mindustry/world/blocks/storage/Unloader.java +++ b/core/src/mindustry/world/blocks/storage/Unloader.java @@ -61,7 +61,7 @@ public class Unloader extends Block{ int pos = (offset + i) % proximity.size; var other = proximity.get(pos); - if(other.interactable(team) && other.block.unloadable && other.block.hasItems + if(other.interactable(team) && other.block.unloadable && other.canUnload() && other.block.hasItems && ((sortItem == null && other.items.total() > 0) || (sortItem != null && other.items.has(sortItem)))){ //make sure the item can't be dumped back into this block dumpingTo = other;