3
0
Mirror von https://github.com/ViaVersion/ViaVersion.git synchronisiert 2024-10-08 11:10:06 +02:00

Check SessionHandler type before getting knownChannels

Dieser Commit ist enthalten in:
creeper123123321 2019-04-21 18:56:01 -03:00
Ursprung 9fe19e763a
Commit bd7e36e38c
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 0AC57D54786721D1

Datei anzeigen

@ -34,6 +34,7 @@ public class VelocityServerHandler {
private static Method getMinecraftConnection;
private static Method getNextProtocolVersion;
private static Method getKnownChannels;
private static Class<?> clientPlaySessionHandler;
static {
try {
@ -45,7 +46,8 @@ public class VelocityServerHandler {
.getDeclaredMethod("getMinecraftConnection");
getNextProtocolVersion = Class.forName("com.velocitypowered.proxy.connection.MinecraftConnection")
.getDeclaredMethod("getNextProtocolVersion");
getKnownChannels = Class.forName("com.velocitypowered.proxy.connection.client.ClientPlaySessionHandler")
clientPlaySessionHandler = Class.forName("com.velocitypowered.proxy.connection.client.ClientPlaySessionHandler");
getKnownChannels = clientPlaySessionHandler
.getDeclaredMethod("getKnownChannels");
} catch (NoSuchMethodException | ClassNotFoundException e) {
e.printStackTrace();
@ -144,12 +146,13 @@ public class VelocityServerHandler {
pipeline.add(ProtocolRegistry.getBaseProtocol(protocolId));
// Workaround 1.13 server change
Set<String> knownChannels = (Set<String>) getKnownChannels.invoke(
ReflectionUtil.invoke(
Object sessionHandler = ReflectionUtil.invoke(
getMinecraftConnection.invoke(e.getPlayer()),
"getSessionHandler"
)
);
System.out.println(sessionHandler);
if (clientPlaySessionHandler.isInstance(sessionHandler)) { // It may be InitialConnectSessionHandler on the first server connection
Set<String> knownChannels = (Set<String>) getKnownChannels.invoke(sessionHandler);
if (previousServerProtocol != -1) {
int id1_13 = ProtocolVersion.MINECRAFT_1_13.getProtocol();
if (previousServerProtocol < id1_13 && protocolId >= id1_13) {
@ -174,6 +177,7 @@ public class VelocityServerHandler {
knownChannels.addAll(newChannels);
}
}
}
user.put(info);
user.put(storage);