mirror of
https://github.com/ViaVersion/ViaVersion.git
synced 2024-10-31 15:49:32 +01:00
ViaVersion <3 ProtocolSupport
This commit is contained in:
parent
048ae2fcd0
commit
5415a24f4e
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user