diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java b/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java index 51ea66393..78dda06d0 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java @@ -55,7 +55,7 @@ public class ProtocolConstants public static final int MINECRAFT_1_21_9 = 773; public static final int MINECRAFT_1_21_11 = 774; public static final int MINECRAFT_26_1 = 775; - public static final int MINECRAFT_26_2 = 1073742137; + public static final int MINECRAFT_26_2 = 1073742140; public static final List SUPPORTED_VERSIONS; public static final List SUPPORTED_VERSION_IDS; diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/packet/LoginSuccess.java b/protocol/src/main/java/net/md_5/bungee/protocol/packet/LoginSuccess.java index 4da4d147f..a9d9e21a4 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/packet/LoginSuccess.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/packet/LoginSuccess.java @@ -21,6 +21,7 @@ public class LoginSuccess extends DefinedPacket private UUID uuid; private String username; private Property[] properties; + private UUID sessionId; @Override public void read(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) @@ -42,6 +43,10 @@ public class LoginSuccess extends DefinedPacket // Whether the client should disconnect on its own if it receives invalid data from the server buf.readBoolean(); } + if ( protocolVersion >= ProtocolConstants.MINECRAFT_26_2 ) + { + sessionId = readUUID( buf ); + } } @Override @@ -65,6 +70,10 @@ public class LoginSuccess extends DefinedPacket // Vanilla sends true so we also send true buf.writeBoolean( true ); } + if ( protocolVersion >= ProtocolConstants.MINECRAFT_26_2 ) + { + writeUUID( sessionId, buf ); + } } @Override diff --git a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java index 4082cf9dc..f620dcc8f 100644 --- a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java +++ b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java @@ -386,7 +386,7 @@ public class ServerConnector extends PacketHandler } else { LoginResult loginProfile = user.getPendingConnection().getLoginProfile(); - user.unsafe().sendPacket( new LoginSuccess( user.getRewriteId(), user.getName(), ( loginProfile == null ) ? null : loginProfile.getProperties() ) ); + user.unsafe().sendPacket( new LoginSuccess( user.getRewriteId(), user.getName(), ( loginProfile == null ) ? null : loginProfile.getProperties(), user.getSessionId() ) ); user.getCh().setEncodeProtocol( Protocol.CONFIGURATION ); } } diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java index fad6835de..5d13845af 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -131,6 +131,8 @@ public final class UserConnection implements ProxiedPlayer private final Collection permissions = new CaseInsensitiveSet(); /*========================================================================*/ @Getter + private final UUID sessionId = UUID.randomUUID(); + @Getter @Setter private int clientEntityId; @Getter diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java index b2c9926b4..7575977ae 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java @@ -621,7 +621,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection if ( getVersion() < ProtocolConstants.MINECRAFT_1_20_2 ) { - unsafe.sendPacket( new LoginSuccess( getRewriteId(), getName(), ( loginProfile == null ) ? null : loginProfile.getProperties() ) ); + unsafe.sendPacket( new LoginSuccess( getRewriteId(), getName(), ( loginProfile == null ) ? null : loginProfile.getProperties(), null ) ); ch.setProtocol( Protocol.GAME ); } finish2();