From b96d5c417f4f9811b14351053dd66467b42ef36b Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 17 Feb 2020 09:27:51 -0500 Subject: [PATCH] Fixed #1601 --- .../blocks/distribution/OverflowGate.java | 9 ++++++++- .../mindustry/world/modules/ItemModule.java | 18 +++++++++++++----- gradle.properties | 2 +- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/core/src/mindustry/world/blocks/distribution/OverflowGate.java b/core/src/mindustry/world/blocks/distribution/OverflowGate.java index 407aad78a9..e73bb140a8 100644 --- a/core/src/mindustry/world/blocks/distribution/OverflowGate.java +++ b/core/src/mindustry/world/blocks/distribution/OverflowGate.java @@ -9,6 +9,8 @@ import mindustry.world.meta.BlockGroup; import java.io.*; +import static mindustry.Vars.world; + public class OverflowGate extends Block{ public float speed = 1f; public boolean invert = false; @@ -125,19 +127,24 @@ public class OverflowGate extends Block{ @Override public byte version(){ - return 2; + return 3; } @Override public void write(DataOutput stream) throws IOException{ super.write(stream); + stream.writeInt(lastInput == null ? Pos.invalid : lastInput.pos()); } @Override public void read(DataInput stream, byte revision) throws IOException{ super.read(stream, revision); + if(revision == 1){ new DirectionalItemBuffer(25, 50f).read(stream); + }else if(revision == 3){ + lastInput = world.tile(stream.readInt()); + lastItem = items.first(); } } } diff --git a/core/src/mindustry/world/modules/ItemModule.java b/core/src/mindustry/world/modules/ItemModule.java index cd30730d2d..b08a419d0b 100644 --- a/core/src/mindustry/world/modules/ItemModule.java +++ b/core/src/mindustry/world/modules/ItemModule.java @@ -1,10 +1,9 @@ package mindustry.world.modules; -import mindustry.type.Item; -import mindustry.type.ItemStack; +import mindustry.type.*; import java.io.*; -import java.util.Arrays; +import java.util.*; import static mindustry.Vars.content; @@ -69,15 +68,24 @@ public class ItemModule extends BlockModule{ return total; } + public Item first(){ + for(int i = 0; i < items.length; i++){ + if(items[i] > 0){ + return content.item(i); + } + } + return null; + } + public Item take(){ for(int i = 0; i < items.length; i++){ int index = (i + takeRotation); - if(index >= items.length) index -= items.length; //conditional instead of mod + if(index >= items.length) index -= items.length; if(items[index] > 0){ items[index] --; total --; takeRotation = index + 1; - return content.item(index % items.length); + return content.item(index); } } return null; diff --git a/gradle.properties b/gradle.properties index 88c2ae197f..60187da317 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=f1178ca09b4d0b29e23f6443e73f8daf4a4b7329 +archash=0b2f044e5955ff700650eebecfb3dfcb629d7a8b