improve some log messages, fix wrong ping calculation (instant send, wait for response packet first)

This commit is contained in:
Bixilon 2020-12-02 23:45:59 +01:00
parent 4c3abc0a30
commit ee37e092cb
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
3 changed files with 7 additions and 7 deletions

View File

@ -29,7 +29,6 @@ import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.packets.ServerboundPacket; import de.bixilon.minosoft.protocol.packets.ServerboundPacket;
import de.bixilon.minosoft.protocol.packets.serverbound.handshaking.PacketHandshake; import de.bixilon.minosoft.protocol.packets.serverbound.handshaking.PacketHandshake;
import de.bixilon.minosoft.protocol.packets.serverbound.login.PacketLoginStart; import de.bixilon.minosoft.protocol.packets.serverbound.login.PacketLoginStart;
import de.bixilon.minosoft.protocol.packets.serverbound.status.PacketStatusPing;
import de.bixilon.minosoft.protocol.packets.serverbound.status.PacketStatusRequest; import de.bixilon.minosoft.protocol.packets.serverbound.status.PacketStatusRequest;
import de.bixilon.minosoft.protocol.ping.ServerListPing; import de.bixilon.minosoft.protocol.ping.ServerListPing;
import de.bixilon.minosoft.protocol.protocol.*; import de.bixilon.minosoft.protocol.protocol.*;
@ -62,7 +61,7 @@ public class Connection {
ConnectionStates state = ConnectionStates.DISCONNECTED; ConnectionStates state = ConnectionStates.DISCONNECTED;
ConnectionReasons reason; ConnectionReasons reason;
ConnectionReasons nextReason; ConnectionReasons nextReason;
ConnectionPing connectionStatusPing; public ConnectionPing connectionStatusPing;
ServerListPing lastPing; ServerListPing lastPing;
Exception lastException; Exception lastException;
@ -318,10 +317,8 @@ public class Connection {
setConnectionState(next); setConnectionState(next);
} }
case STATUS -> { case STATUS -> {
// send status request and ping // send status request
network.sendPacket(new PacketStatusRequest()); network.sendPacket(new PacketStatusRequest());
connectionStatusPing = new ConnectionPing();
network.sendPacket(new PacketStatusPing(connectionStatusPing));
} }
case LOGIN -> network.sendPacket(new PacketLoginStart(player)); case LOGIN -> network.sendPacket(new PacketLoginStart(player));
case DISCONNECTED -> { case DISCONNECTED -> {

View File

@ -192,7 +192,7 @@ public class SocketNetwork implements Network {
packet = connection.getPacketByCommand(connection.getConnectionState(), inPacketBuffer.getCommand()); packet = connection.getPacketByCommand(connection.getConnectionState(), inPacketBuffer.getCommand());
if (packet == null) { if (packet == null) {
disconnect(); disconnect();
lastException = new UnknownPacketException(String.format("Invalid packet 0x%x", inPacketBuffer.getCommand())); lastException = new UnknownPacketException(String.format("Server sent us a invalid packet (id=0x%x, length=%d, data=%s)", inPacketBuffer.getCommand(), length, inPacketBuffer.getBase64()));
throw lastException; throw lastException;
} }
Class<? extends ClientboundPacket> clazz = packet.getClazz(); Class<? extends ClientboundPacket> clazz = packet.getClazz();
@ -228,7 +228,7 @@ public class SocketNetwork implements Network {
} }
} catch (Exception e) { } catch (Exception e) {
Log.printException(e, LogLevels.DEBUG); Log.printException(e, LogLevels.DEBUG);
Log.protocol(String.format("An error occurred while parsing an packet (%s): %s", packet, e)); Log.protocol(String.format("An error occurred while parsing a packet (%s): %s", packet, e));
} }
} }
disconnect(); disconnect();

View File

@ -41,6 +41,7 @@ import de.bixilon.minosoft.protocol.packets.serverbound.login.PacketEncryptionRe
import de.bixilon.minosoft.protocol.packets.serverbound.play.PacketConfirmTeleport; import de.bixilon.minosoft.protocol.packets.serverbound.play.PacketConfirmTeleport;
import de.bixilon.minosoft.protocol.packets.serverbound.play.PacketKeepAliveResponse; import de.bixilon.minosoft.protocol.packets.serverbound.play.PacketKeepAliveResponse;
import de.bixilon.minosoft.protocol.packets.serverbound.play.PacketPlayerPositionAndRotationSending; import de.bixilon.minosoft.protocol.packets.serverbound.play.PacketPlayerPositionAndRotationSending;
import de.bixilon.minosoft.protocol.packets.serverbound.status.PacketStatusPing;
import de.bixilon.minosoft.util.nbt.tag.CompoundTag; import de.bixilon.minosoft.util.nbt.tag.CompoundTag;
import de.bixilon.minosoft.util.nbt.tag.StringTag; import de.bixilon.minosoft.util.nbt.tag.StringTag;
@ -77,6 +78,8 @@ public class PacketHandler {
} }
Log.info(String.format("Status response received: %s/%s online. MotD: '%s'", pkg.getResponse().getPlayerOnline(), pkg.getResponse().getMaxPlayers(), pkg.getResponse().getMotd().getANSIColoredMessage())); Log.info(String.format("Status response received: %s/%s online. MotD: '%s'", pkg.getResponse().getPlayerOnline(), pkg.getResponse().getMaxPlayers(), pkg.getResponse().getMotd().getANSIColoredMessage()));
connection.handlePingCallbacks(pkg.getResponse()); connection.handlePingCallbacks(pkg.getResponse());
connection.connectionStatusPing = new ConnectionPing();
connection.sendPacket(new PacketStatusPing(connection.connectionStatusPing));
} }
public void handle(PacketStatusPong pkg) { public void handle(PacketStatusPong pkg) {