login disconnect, player info (tab) packet

This commit is contained in:
bixilon 2020-06-03 14:23:05 +02:00
parent adbc77df2e
commit 11f95213d3
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
5 changed files with 89 additions and 1 deletions

View File

@ -149,7 +149,7 @@ public class Network {
Class<? extends ClientboundPacket> clazz = Protocol.getPacketByPacket(p);
if (clazz == null) {
Log.warn(String.format("[IN] Unknown packet with command %x (%s)", inPacketBuffer.getCommand(), ((p != null) ? p.name() : "UNKNOWN")));
Log.warn(String.format("[IN] Unknown packet with command 0x%x (%s)", inPacketBuffer.getCommand(), ((p != null) ? p.name() : "UNKNOWN")));
binQueueIn.remove(0);
continue;
}

View File

@ -0,0 +1,32 @@
package de.bixilon.minosoft.protocol.packets.clientbound.login;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InPacketBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.protocol.protocol.ProtocolVersion;
import org.json.JSONObject;
public class PacketLoginDisconnect implements ClientboundPacket {
JSONObject reason;
@Override
public void read(InPacketBuffer buffer, ProtocolVersion v) {
reason = buffer.readJson();
log();
}
@Override
public void log() {
Log.protocol("Receiving login disconnect packet");
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
public JSONObject getReason() {
return reason;
}
}

View File

@ -0,0 +1,42 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InPacketBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.protocol.protocol.ProtocolVersion;
public class PacketPlayerInfo implements ClientboundPacket {
String name;
PlayerJoinState state;
short ping;
@Override
public void read(InPacketBuffer buffer, ProtocolVersion v) {
switch (v) {
case VERSION_1_7_10:
name = buffer.readString();
state = (buffer.readBoolean() ? PlayerJoinState.JOINED : PlayerJoinState.DISCONNECTED);
ping = buffer.readShort();
break;
}
log();
}
@Override
public void log() {
Log.game(String.format("%s %s", name, (state == PlayerJoinState.JOINED ? "joined" : "disconnected")));
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
public enum PlayerJoinState {
JOINED,
DISCONNECTED
}
}

View File

@ -3,8 +3,10 @@ package de.bixilon.minosoft.protocol.protocol;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketEncryptionKeyRequest;
import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketLoginDisconnect;
import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketLoginSuccess;
import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketJoinGame;
import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketPlayerInfo;
import de.bixilon.minosoft.protocol.packets.clientbound.status.PacketStatusPong;
import de.bixilon.minosoft.protocol.packets.clientbound.status.PacketStatusResponse;
import de.bixilon.minosoft.protocol.packets.serverbound.login.PacketEncryptionResponse;
@ -48,4 +50,12 @@ public class PacketHandler {
public void handle(PacketJoinGame pkg) {
}
public void handle(PacketLoginDisconnect pkg) {
Log.info(String.format("Disconnecting from server(%s)", pkg.getReason().toString()));
connection.setConnectionState(ConnectionState.DISCONNECTING);
}
public void handle(PacketPlayerInfo pkg) {
}
}

View File

@ -2,8 +2,10 @@ package de.bixilon.minosoft.protocol.protocol;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketEncryptionKeyRequest;
import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketLoginDisconnect;
import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketLoginSuccess;
import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketJoinGame;
import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketPlayerInfo;
import de.bixilon.minosoft.protocol.packets.clientbound.status.PacketStatusPong;
import de.bixilon.minosoft.protocol.packets.clientbound.status.PacketStatusResponse;
@ -31,7 +33,9 @@ public interface Protocol {
packetClassMapping.put(Packets.Clientbound.STATUS_PONG, PacketStatusPong.class);
packetClassMapping.put(Packets.Clientbound.LOGIN_ENCRYPTION_REQUEST, PacketEncryptionKeyRequest.class);
packetClassMapping.put(Packets.Clientbound.LOGIN_LOGIN_SUCCESS, PacketLoginSuccess.class);
packetClassMapping.put(Packets.Clientbound.LOGIN_DISCONNECT, PacketLoginDisconnect.class);
packetClassMapping.put(Packets.Clientbound.PLAY_JOIN_GAME, PacketJoinGame.class);
packetClassMapping.put(Packets.Clientbound.PLAY_PLAYER_INFO, PacketPlayerInfo.class);
}
}