Fixed some multithreading bugs and crashes

This commit is contained in:
Anuken
2018-02-10 12:38:02 -05:00
parent 2ff4a1ee0d
commit e5365d5572
8 changed files with 44 additions and 14 deletions

View File

@@ -11,6 +11,7 @@ import com.badlogic.gdx.utils.ObjectMap;
import com.badlogic.gdx.utils.reflect.ClassReflection;
import io.anuke.mindustry.io.Platform;
import io.anuke.mindustry.net.Packet.ImportantPacket;
import io.anuke.mindustry.net.Packet.UnimportantPacket;
import io.anuke.mindustry.net.Packets.KickReason;
import io.anuke.mindustry.net.Streamable.StreamBegin;
import io.anuke.mindustry.net.Streamable.StreamBuilder;
@@ -189,7 +190,7 @@ public class Net{
if(clientLoaded || object instanceof ImportantPacket){
if(clientListeners.get(object.getClass()) != null) clientListeners.get(object.getClass()).accept(object);
if(listeners.get(object.getClass()) != null) listeners.get(object.getClass()).accept(object);
}else{
}else if(!(object instanceof UnimportantPacket)){
packetQueue.add(object);
Log.info("Queuing packet {0}.", ClassReflection.getSimpleName(object.getClass()));
}

View File

@@ -7,4 +7,5 @@ public interface Packet {
void write(ByteBuffer buffer);
interface ImportantPacket{}
interface UnimportantPacket{}
}

View File

@@ -6,6 +6,7 @@ import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.entities.SyncEntity;
import io.anuke.mindustry.io.Version;
import io.anuke.mindustry.net.Packet.ImportantPacket;
import io.anuke.mindustry.net.Packet.UnimportantPacket;
import io.anuke.mindustry.resource.Item;
import io.anuke.ucore.entities.Entities;
import io.anuke.ucore.entities.EntityGroup;
@@ -502,7 +503,7 @@ public class Packets {
public void read(ByteBuffer buffer) { }
}
public static class ItemTransferPacket implements Packet{
public static class ItemTransferPacket implements Packet, UnimportantPacket{
public int position;
public byte rotation;
public byte itemid;