diff --git a/core/assets/version.properties b/core/assets/version.properties index 1d29cf5678..a09d924b2b 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,5 +1,5 @@ #Autogenerated file. Do not modify. -#Sat Feb 17 20:42:58 EST 2018 +#Sun Feb 18 11:29:39 EST 2018 version=beta androidBuildCode=235 name=Mindustry diff --git a/core/src/io/anuke/mindustry/net/Packets.java b/core/src/io/anuke/mindustry/net/Packets.java index b66d3d550d..183fb3a8e9 100644 --- a/core/src/io/anuke/mindustry/net/Packets.java +++ b/core/src/io/anuke/mindustry/net/Packets.java @@ -30,7 +30,7 @@ public class Packets { } - public static class SyncPacket implements Packet{ + public static class SyncPacket implements Packet, UnimportantPacket{ public byte[] data; @Override @@ -99,7 +99,7 @@ public class Packets { } } - public static class StateSyncPacket implements Packet{ + public static class StateSyncPacket implements Packet, UnimportantPacket{ public int[] items; public float countdown, time; public int enemies, wave; diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 596104a902..86ae652715 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -90,6 +90,8 @@ public class Block{ public Array bars = Array.with(new BlockBar(Color.RED, false, tile -> tile.entity.health / (float)tile.block().health)); /**whether this block can be replaced in all cases*/ public boolean alwaysReplace = false; + /**whether this block has instant transfer checking. used for calculations to prevent infinite loops.*/ + public boolean instantTransfer = false; public Block(String name) { this.name = name; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java index e04a6f5d92..959124656b 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java @@ -16,6 +16,7 @@ public class Junction extends Block{ super(name); update = true; solid = true; + instantTransfer = true; } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java index dee337c83d..bf05956ed1 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java @@ -24,6 +24,7 @@ public class Sorter extends Block{ super(name); update = true; solid = true; + instantTransfer = true; } @Override @@ -70,13 +71,17 @@ public class Sorter extends Block{ }else{ Tile a = dest.getNearby(Mathf.mod(dir - 1, 4)); Tile b = dest.getNearby(Mathf.mod(dir + 1, 4)); - boolean ac = a.block().acceptItem(item, a, dest); - boolean bc = b.block().acceptItem(item, b, dest); + boolean ac = !(a.block().instantTransfer && source.block().instantTransfer) && + a.block().acceptItem(item, a, dest); + boolean bc = !(b.block().instantTransfer && source.block().instantTransfer) && + b.block().acceptItem(item, b, dest); if(ac && !bc){ to = a; }else if(bc && !ac){ to = b; + }else if(!bc && !ac){ + return null; }else{ if(dest.getDump() == 0){ to = a; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Splitter.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Splitter.java index a049be2cbb..a08f11c0ec 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Splitter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Splitter.java @@ -9,6 +9,8 @@ public class Splitter extends Block{ public Splitter(String name){ super(name); + solid = true; + instantTransfer = true; } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java index fa64fdf635..2642d45624 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java @@ -19,6 +19,7 @@ public class TunnelConveyor extends Block{ update = true; solid = true; health = 70; + instantTransfer = true; } @Override diff --git a/kryonet/src/io/anuke/kryonet/KryoServer.java b/kryonet/src/io/anuke/kryonet/KryoServer.java index 91ca98b82f..7e8cacfeb4 100644 --- a/kryonet/src/io/anuke/kryonet/KryoServer.java +++ b/kryonet/src/io/anuke/kryonet/KryoServer.java @@ -54,7 +54,7 @@ public class KryoServer implements ServerProvider { int lastconnection = 0; public KryoServer(){ - server = new Server(4096*2, 2048, connection -> new ByteSerializer()); //TODO tweak + server = new Server(4096*2, 2048, connection -> new ByteSerializer()); server.setDiscoveryHandler((datagramChannel, fromAddress) -> { ByteBuffer buffer = KryoRegistrator.writeServerData(); buffer.position(0);