Fixed multiple crashes, fixed version mismatch showing as disconnect

This commit is contained in:
Anuken
2018-01-26 00:36:23 -05:00
parent 6abbc3eca7
commit 493af5e653
10 changed files with 30 additions and 21 deletions

View File

@@ -6,8 +6,7 @@ import com.badlogic.gdx.utils.IntMap;
import com.badlogic.gdx.utils.ObjectMap;
import com.badlogic.gdx.utils.async.AsyncExecutor;
import io.anuke.mindustry.Mindustry;
import io.anuke.mindustry.net.Packets.Connect;
import io.anuke.mindustry.net.Packets.Disconnect;
import io.anuke.mindustry.net.Packet.ImportantPacket;
import io.anuke.mindustry.net.Packets.KickReason;
import io.anuke.mindustry.net.Streamable.StreamBegin;
import io.anuke.mindustry.net.Streamable.StreamBuilder;
@@ -20,7 +19,7 @@ import io.anuke.ucore.function.Consumer;
import java.io.IOException;
public class Net{
public static final int version = 12;
public static final int version = 13;
private static boolean server;
private static boolean active;
@@ -152,7 +151,7 @@ public class Net{
handleClientReceived(builder.build());
}
}else if(clientListeners.get(object.getClass()) != null){
if(clientLoaded || object instanceof Connect || object instanceof Disconnect || object instanceof Streamable){
if(clientLoaded || object instanceof ImportantPacket){
clientListeners.get(object.getClass()).accept(object);
}else{
UCore.log("Recieved " + object, "but ignoring data, as client is not loaded.");

View File

@@ -15,12 +15,10 @@ import io.anuke.mindustry.world.WorldGenerator;
import io.anuke.mindustry.world.blocks.Blocks;
import io.anuke.mindustry.world.blocks.types.BlockPart;
import io.anuke.mindustry.world.blocks.types.Rock;
import io.anuke.ucore.UCore;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.entities.Entities;
import java.io.*;
import java.nio.ByteBuffer;
public class NetworkIO {

View File

@@ -5,4 +5,6 @@ import java.nio.ByteBuffer;
public interface Packet {
void read(ByteBuffer buffer);
void write(ByteBuffer buffer);
interface ImportantPacket{}
}

View File

@@ -2,6 +2,7 @@ package io.anuke.mindustry.net;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.entities.SyncEntity;
import io.anuke.mindustry.net.Packet.ImportantPacket;
import io.anuke.mindustry.resource.Item;
import java.nio.ByteBuffer;
@@ -9,12 +10,12 @@ import java.nio.ByteBuffer;
/**Class for storing all packets.*/
public class Packets {
public static class Connect{
public static class Connect implements ImportantPacket{
public int id;
public String addressTCP;
}
public static class Disconnect {
public static class Disconnect implements ImportantPacket{
public int id;
public String addressTCP;
}
@@ -382,7 +383,7 @@ public class Packets {
}
}
public static class KickPacket implements Packet{
public static class KickPacket implements Packet, ImportantPacket{
public KickReason reason;
@Override

View File

@@ -2,13 +2,14 @@ package io.anuke.mindustry.net;
import com.badlogic.gdx.utils.reflect.ClassReflection;
import com.badlogic.gdx.utils.reflect.ReflectionException;
import io.anuke.mindustry.net.Packet.ImportantPacket;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
public class Streamable{
public class Streamable implements ImportantPacket{
public transient ByteArrayInputStream stream;
/**Marks the beginning of a stream.*/