Fixed transfering breaking on multiple versions

This commit is contained in:
Anon 2026-03-25 14:05:43 +01:00
parent 52eda4ccdd
commit 41a1a1db9b
4 changed files with 81 additions and 17 deletions

View file

@ -618,7 +618,7 @@ namespace MinecraftClient.Protocol.Handlers
}
}
public bool Login(PlayerKeyPair? playerKeyPair, SessionToken session)
public bool Login(PlayerKeyPair? playerKeyPair, SessionToken session, bool isTransfer = false)
{
if (Handshake(handler.GetUserUuidStr(), handler.GetUsername(), handler.GetSessionID(), handler.GetServerHost(), handler.GetServerPort(), session))
{

View file

@ -3188,8 +3188,13 @@ namespace MinecraftClient.Protocol.Handlers
/// Do the Minecraft login.
/// </summary>
/// <returns>True if login successful</returns>
public bool Login(PlayerKeyPair? playerKeyPair, SessionToken session)
public bool Login(PlayerKeyPair? playerKeyPair, SessionToken session, bool isTransfer = false)
{
int nextState = isTransfer && protocolVersion >= MC_1_20_6_Version ? 3 : 2;
if (nextState == 3)
log.Debug("Using transfer handshake intent for transferred login.");
// 1. Send the handshake packet
SendPacket(0x00, dataTypes.ConcatBytes(
// Protocol Version (use raw version for snapshot/RC servers)
@ -3202,7 +3207,7 @@ namespace MinecraftClient.Protocol.Handlers
dataTypes.GetUShort((ushort)handler.GetServerPort()),
// Next State
DataTypes.GetVarInt(2)) // 2 is for the Login state
DataTypes.GetVarInt(nextState)) // 2 is Login, 3 is Transfer
);
// 2. Send the Login Start packet

View file

@ -19,7 +19,7 @@ namespace MinecraftClient.Protocol
/// Start the login procedure once connected to the server
/// </summary>
/// <returns>True if login was successful</returns>
bool Login(PlayerKeyPair? playerKeyPair, Session.SessionToken session);
bool Login(PlayerKeyPair? playerKeyPair, Session.SessionToken session, bool isTransfer = false);
/// <summary>
/// Disconnect from the server