fix miss handling of play connection status due to multiple threads

This commit is contained in:
bixilon 2020-06-04 20:29:46 +02:00
parent b160d9be69
commit f5fa4c9ead
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
2 changed files with 8 additions and 1 deletions

View File

@ -3,6 +3,7 @@ package de.bixilon.minosoft.protocol.network;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.packets.ServerboundPacket;
import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketLoginSuccess;
import de.bixilon.minosoft.protocol.packets.serverbound.login.PacketEncryptionResponse;
import de.bixilon.minosoft.protocol.protocol.*;
import de.bixilon.minosoft.util.Util;
@ -157,6 +158,11 @@ public class Network {
try {
ClientboundPacket packet = clazz.getConstructor().newInstance();
packet.read(inPacketBuffer, connection.getVersion());
if (packet instanceof PacketLoginSuccess) {
// login was okay, setting play status to avoid miss timing issues
connection.setConnectionState(ConnectionState.PLAY);
}
connection.handle(packet);
} catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
// safety first, but will not occur

View File

@ -45,7 +45,8 @@ public class PacketHandler {
public void handle(PacketLoginSuccess pkg) {
// now we are playing
connection.setConnectionState(ConnectionState.PLAY);
// already done in packet thread
// connection.setConnectionState(ConnectionState.PLAY);
}
public void handle(PacketJoinGame pkg) {