Respect server protocol version when writing packets to the server.
Needed for ViaVersion.
This commit is contained in:
@@ -135,7 +135,8 @@ public class ClientPlaySessionHandler implements MinecraftSessionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (actuallyRegistered.size() > 0) {
|
if (actuallyRegistered.size() > 0) {
|
||||||
PluginMessage newRegisterPacket = PluginMessageUtil.constructChannelsPacket(player.getProtocolVersion(), actuallyRegistered);
|
PluginMessage newRegisterPacket = PluginMessageUtil.constructChannelsPacket(player.getConnectedServer()
|
||||||
|
.getConnection().getProtocolVersion(), actuallyRegistered);
|
||||||
player.getConnectedServer().getConnection().write(newRegisterPacket);
|
player.getConnectedServer().getConnection().write(newRegisterPacket);
|
||||||
}
|
}
|
||||||
} else if (PluginMessageUtil.isMCUnregister(packet)) {
|
} else if (PluginMessageUtil.isMCUnregister(packet)) {
|
||||||
@@ -271,15 +272,16 @@ public class ClientPlaySessionHandler implements MinecraftSessionHandler {
|
|||||||
serverBossBars.clear();
|
serverBossBars.clear();
|
||||||
|
|
||||||
// Tell the server about this client's plugin message channels.
|
// Tell the server about this client's plugin message channels.
|
||||||
|
int serverVersion = player.getConnectedServer().getConnection().getProtocolVersion();
|
||||||
Collection<String> toRegister = new HashSet<>(clientPluginMsgChannels);
|
Collection<String> toRegister = new HashSet<>(clientPluginMsgChannels);
|
||||||
if (player.getProtocolVersion() >= ProtocolConstants.MINECRAFT_1_13) {
|
if (serverVersion >= ProtocolConstants.MINECRAFT_1_13) {
|
||||||
toRegister.addAll(server.getChannelRegistrar().getModernChannelIds());
|
toRegister.addAll(server.getChannelRegistrar().getModernChannelIds());
|
||||||
} else {
|
} else {
|
||||||
toRegister.addAll(server.getChannelRegistrar().getIdsForLegacyConnections());
|
toRegister.addAll(server.getChannelRegistrar().getIdsForLegacyConnections());
|
||||||
}
|
}
|
||||||
if (!toRegister.isEmpty()) {
|
if (!toRegister.isEmpty()) {
|
||||||
player.getConnectedServer().getConnection().delayedWrite(PluginMessageUtil.constructChannelsPacket(
|
player.getConnectedServer().getConnection().delayedWrite(PluginMessageUtil.constructChannelsPacket(
|
||||||
player.getConnection().getProtocolVersion(), toRegister));
|
serverVersion, toRegister));
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we had plugin messages queued during login/FML handshake, send them now.
|
// If we had plugin messages queued during login/FML handshake, send them now.
|
||||||
|
Reference in New Issue
Block a user