Skip to content

Commit

Permalink
Make sure to send initial game profile to complete protocol state in …
Browse files Browse the repository at this point in the history
…1.20.2+
  • Loading branch information
killme committed Nov 26, 2023
1 parent b007a77 commit 20c4f33
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.bungee.storage.BungeeStorage;
import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.packets.InventoryPackets;
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.Protocol1_20_2To1_20;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.EntityIdProvider;
Expand Down Expand Up @@ -358,10 +360,29 @@ public void checkServerChange(ServerConnectedEvent event, UserConnection user) t
}
}

Object wrapper = channelWrapper.get(player);
setVersion.invoke(wrapper, serverProtocolVersion);
{
Object wrapper = channelWrapper.get(player);
setVersion.invoke(wrapper, serverProtocolVersion);
}

Object entityMap = getEntityMap.invoke(null, serverProtocolVersion);
entityRewrite.set(player, entityMap);

// Complete the login process if bungeecord has skipped it
if (serverProtocolVersion < ProtocolVersion.v1_20_2.getVersion()
&& event.getPlayer().getServer() == null
&& user.getProtocolInfo().getClientState() == State.LOGIN) {
PacketWrapper wrapper = PacketWrapper.create(
ClientboundLoginPackets.GAME_PROFILE,
user);
wrapper.write(Type.UUID, event.getPlayer().getUniqueId());
wrapper.write(Type.STRING, event.getPlayer().getName());
wrapper.write(Type.VAR_INT, 0); // TODO: Properties
try {
wrapper.send(Protocol1_20_2To1_20.class, false);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,10 @@ public void register() {
ProtocolInfo info = wrapper.user().getProtocolInfo();
if (info.getProtocolVersion() < ProtocolVersion.v1_20_2.getVersion()) { // On 1.20.2+, wait for the login ack
info.setState(State.PLAY);
} else {
// FIXME: Hack to not break on the UUID type when we send it
// manually.
return;
}

UUID uuid = passthroughLoginUUID(wrapper);
Expand Down

0 comments on commit 20c4f33

Please sign in to comment.