From 40024da5c9bbcf0f5e535faec66b743bb2b18ac2 Mon Sep 17 00:00:00 2001 From: EpicPlayerA10 <62206933+EpicPlayerA10@users.noreply.github.com> Date: Sat, 26 Mar 2022 15:40:14 +0100 Subject: [PATCH] Fix compression packet order (#811) --- .../minestom/server/network/ConnectionManager.java | 7 +++++++ .../packet/client/login/LoginStartPacket.java | 13 +------------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/main/java/net/minestom/server/network/ConnectionManager.java b/src/main/java/net/minestom/server/network/ConnectionManager.java index 996779c1e..913fe031c 100644 --- a/src/main/java/net/minestom/server/network/ConnectionManager.java +++ b/src/main/java/net/minestom/server/network/ConnectionManager.java @@ -2,6 +2,7 @@ package net.minestom.server.network; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; +import net.minestom.server.MinecraftServer; import net.minestom.server.entity.Player; import net.minestom.server.event.EventDispatcher; import net.minestom.server.event.player.AsyncPlayerPreLoginEvent; @@ -10,6 +11,7 @@ import net.minestom.server.instance.Instance; import net.minestom.server.network.packet.server.login.LoginSuccessPacket; import net.minestom.server.network.packet.server.play.KeepAlivePacket; import net.minestom.server.network.player.PlayerConnection; +import net.minestom.server.network.player.PlayerSocketConnection; import net.minestom.server.utils.StringUtils; import net.minestom.server.utils.async.AsyncUtils; import net.minestom.server.utils.debug.DebugUtils; @@ -194,6 +196,11 @@ public final class ConnectionManager { public CompletableFuture startPlayState(@NotNull Player player, boolean register) { return AsyncUtils.runAsync(() -> { final PlayerConnection playerConnection = player.getPlayerConnection(); + // Compression + if (playerConnection instanceof PlayerSocketConnection socketConnection) { + final int threshold = MinecraftServer.getCompressionThreshold(); + if (threshold > 0) socketConnection.startCompression(); + } // Call pre login event AsyncPlayerPreLoginEvent asyncPlayerPreLoginEvent = new AsyncPlayerPreLoginEvent(player); EventDispatcher.call(asyncPlayerPreLoginEvent); diff --git a/src/main/java/net/minestom/server/network/packet/client/login/LoginStartPacket.java b/src/main/java/net/minestom/server/network/packet/client/login/LoginStartPacket.java index 988e675a2..bfd5c24cf 100644 --- a/src/main/java/net/minestom/server/network/packet/client/login/LoginStartPacket.java +++ b/src/main/java/net/minestom/server/network/packet/client/login/LoginStartPacket.java @@ -2,7 +2,6 @@ package net.minestom.server.network.packet.client.login; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; -import net.minestom.server.MinecraftServer; import net.minestom.server.entity.Player; import net.minestom.server.extras.MojangAuth; import net.minestom.server.extras.bungee.BungeeCordProxy; @@ -31,20 +30,10 @@ public record LoginStartPacket(@NotNull String username) implements ClientPrepla @Override public void process(@NotNull PlayerConnection connection) { final boolean isSocketConnection = connection instanceof PlayerSocketConnection; - // Cache the login username and start compression if enabled + // Proxy support (only for socket clients) and cache the login username if (isSocketConnection) { PlayerSocketConnection socketConnection = (PlayerSocketConnection) connection; socketConnection.UNSAFE_setLoginUsername(username); - - // Compression - final int threshold = MinecraftServer.getCompressionThreshold(); - if (threshold > 0) { - socketConnection.startCompression(); - } - } - // Proxy support (only for socket clients) - if (isSocketConnection) { - final PlayerSocketConnection socketConnection = (PlayerSocketConnection) connection; // Velocity support if (VelocityProxy.isEnabled()) { final int messageId = ThreadLocalRandom.current().nextInt();