3
0
Mirror von https://github.com/ViaVersion/ViaVersion.git synchronisiert 2024-12-26 16:12:42 +01:00

Merge pull request #1021 from 7kasper/master

ViaVersion <3 ProtocolSupport
Dieser Commit ist enthalten in:
Myles 2018-09-12 19:51:19 +01:00 committet von GitHub
Commit 94b3b51602
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 4AEE18F83AFDEB23

Datei anzeigen

@ -48,7 +48,7 @@ public class ClassGenerator {
Class encodeSuper;
Class decodeSuper;
if (isMultiplatformPS()) {
psConnectListener = makePSConnectListener(pool);
psConnectListener = makePSConnectListener(pool, shouldUseNewHandshakeVersionMethod());
return;
} else {
String psPackage = getOldPSPackage();
@ -178,7 +178,7 @@ public class ClassGenerator {
return null;
}
private static Class makePSConnectListener(ClassPool pool) {
private static Class makePSConnectListener(ClassPool pool, boolean newVersionMethod) {
try {
// Reference classes
CtClass toExtend = pool.get("protocolsupport.api.Connection$PacketListener");
@ -208,10 +208,15 @@ public class ClassGenerator {
// Check if we are getting handshake packet.
+ " if (event.getPacket() instanceof PacketHandshakingInSetProtocol) {\n"
// Get protocol version.
+ " int protoVersion = ((PacketHandshakingInSetProtocol) event.getPacket()).getProtocolVersion();\n"
// ViaVersion has at this point already spoofed the connectionversion. (Since it is higher up the pipeline)
+ " PacketHandshakingInSetProtocol packet = (PacketHandshakingInSetProtocol) event.getPacket();\n"
+ (newVersionMethod ? (
" int protoVersion = packet.getProtocolVersion();\n"
) : (
" int protoVersion = packet.b();\n"
))
// ViaVersion has at this point already spoofed the connectionversion. (Since it is higher up the pipeline)
// If via has put the protoVersion to the server we can spoof ProtocolSupport's version.
+ " if (protoVersion == us.myles.ViaVersion.api.protocol.ProtocolRegistry.SERVER_PROTOCOL) {\n"
+ " if (connection.getVersion() == ProtocolVersion.MINECRAFT_FUTURE && protoVersion == us.myles.ViaVersion.api.protocol.ProtocolRegistry.SERVER_PROTOCOL) {\n"
+ " connection.setVersion(ProtocolVersion.getLatest(ProtocolType.PC));\n"
+ " }\n"
+ " }\n"
@ -279,4 +284,13 @@ public class ClassGenerator {
}
}
public static boolean shouldUseNewHandshakeVersionMethod() {
try {
NMSUtil.nms("PacketHandshakingInSetProtocol").getMethod("getProtocolVersion");
return true;
} catch (Exception e) {
return false;
}
}
}