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

3/2 Hopefully fix all the space thingies.

Dieser Commit ist enthalten in:
7kasper 2018-09-10 21:45:26 +02:00 committet von GitHub
Ursprung f6ae076731
Commit 0a8fc31be1
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 4AEE18F83AFDEB23

Datei anzeigen

@ -38,20 +38,17 @@ public class ClassGenerator {
} }
if (ViaVersion.getInstance().isCompatSpigotBuild()) { if (ViaVersion.getInstance().isCompatSpigotBuild()) {
Bukkit.broadcastMessage("COMPAT SPIGOT");
Class decodeSuper = NMSUtil.nms("PacketDecoder"); Class decodeSuper = NMSUtil.nms("PacketDecoder");
Class encodeSuper = NMSUtil.nms("PacketEncoder"); Class encodeSuper = NMSUtil.nms("PacketEncoder");
// Generate the classes // Generate the classes
addSpigotCompatibility(pool, BukkitDecodeHandler.class, decodeSuper); addSpigotCompatibility(pool, BukkitDecodeHandler.class, decodeSuper);
addSpigotCompatibility(pool, BukkitEncodeHandler.class, encodeSuper); addSpigotCompatibility(pool, BukkitEncodeHandler.class, encodeSuper);
} else { } else {
Bukkit.broadcastMessage("COMPAT PROTOCOLSUPPORT");
// ProtocolSupport compatibility // ProtocolSupport compatibility
Class encodeSuper; Class encodeSuper;
Class decodeSuper; Class decodeSuper;
if (isMultiplatformPS()) { if (isMultiplatformPS()) {
Bukkit.broadcastMessage("NEW PROTOCOLSUPPORT!"); psConnectListener = makePSConnectListener(pool);
psConnectListener = makePSConnectListener(pool);
return; return;
} else { } else {
String psPackage = getOldPSPackage(); String psPackage = getOldPSPackage();
@ -182,14 +179,13 @@ public class ClassGenerator {
} }
private static Class makePSConnectListener(ClassPool pool) { private static Class makePSConnectListener(ClassPool pool) {
try { try {
// Reference classes // Reference classes
CtClass toExtend = pool.get("protocolsupport.api.Connection$PacketListener"); CtClass toExtend = pool.get("protocolsupport.api.Connection$PacketListener");
CtClass connectListenerClazz = pool.makeClass("us.myles.ViaVersion.classgenerator.generated.ProtocolSupportConnectListener"); CtClass connectListenerClazz = pool.makeClass("us.myles.ViaVersion.classgenerator.generated.ProtocolSupportConnectListener");
connectListenerClazz.setSuperclass(toExtend); connectListenerClazz.setSuperclass(toExtend);
// Import packages // Import packages
pool.importPackage("java.util.Arrays"); pool.importPackage("java.util.Arrays");
pool.importPackage("org.bukkit.Bukkit");
pool.importPackage("us.myles.ViaVersion.api.protocol.ProtocolRegistry"); pool.importPackage("us.myles.ViaVersion.api.protocol.ProtocolRegistry");
pool.importPackage("protocolsupport.api.ProtocolVersion"); pool.importPackage("protocolsupport.api.ProtocolVersion");
pool.importPackage("protocolsupport.api.ProtocolType"); pool.importPackage("protocolsupport.api.ProtocolType");
@ -202,38 +198,38 @@ public class ClassGenerator {
connectListenerClazz.addField(CtField.make("private ConnectionImpl connection;", connectListenerClazz)); connectListenerClazz.addField(CtField.make("private ConnectionImpl connection;", connectListenerClazz));
// Bake constructor // Bake constructor
connectListenerClazz.addConstructor(CtNewConstructor.make( connectListenerClazz.addConstructor(CtNewConstructor.make(
"public ProtocolSupportConnectListener (ConnectionImpl connection) {\n" "public ProtocolSupportConnectListener (ConnectionImpl connection) {\n"
+ " this.connection = connection;\n" + " this.connection = connection;\n"
+ "}", connectListenerClazz)); + "}", connectListenerClazz));
// Add the listening method // Add the listening method
connectListenerClazz.addMethod(CtNewMethod.make( connectListenerClazz.addMethod(CtNewMethod.make(
// On packet receive // On packet receive
"public void onPacketReceiving(protocolsupport.api.Connection.PacketListener.PacketEvent event) {\n" "public void onPacketReceiving(protocolsupport.api.Connection.PacketListener.PacketEvent event) {\n"
// Check if we are getting handshake packet. // Check if we are getting handshake packet.
+ " if (event.getPacket() instanceof PacketHandshakingInSetProtocol) {\n" + " if (event.getPacket() instanceof PacketHandshakingInSetProtocol) {\n"
// Get protocol version. // Get protocol version.
+ " int protoVersion = ((PacketHandshakingInSetProtocol) event.getPacket()).getProtocolVersion();\n" + " int protoVersion = ((PacketHandshakingInSetProtocol) event.getPacket()).getProtocolVersion();\n"
// ViaVersion has at this point already spoofed the connectionversion. (Since it is higher up the pipeline) // 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 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 (protoVersion == us.myles.ViaVersion.api.protocol.ProtocolRegistry.SERVER_PROTOCOL) {\n"
+ " connection.setVersion(ProtocolVersion.getLatest(ProtocolType.PC));\n" + " connection.setVersion(ProtocolVersion.getLatest(ProtocolType.PC));\n"
+ " }\n" + " }\n"
+ " }\n" + " }\n"
// Id version is not serverversion viaversion will not spoof. ProtocolSupport will handle the rest. // Id version is not serverversion viaversion will not spoof. ProtocolSupport will handle the rest.
// In any case, remove the packet listener and wrap up. // In any case, remove the packet listener and wrap up.
+ " connection.removePacketListener(this);\n" + " connection.removePacketListener(this);\n"
+ "}", connectListenerClazz)); + "}", connectListenerClazz));
return connectListenerClazz.toClass(HandlerConstructor.class.getClassLoader()); return connectListenerClazz.toClass(HandlerConstructor.class.getClassLoader());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return null; return null;
} }
public static void registerPSConnectListener(ViaVersionPlugin plugin) { public static void registerPSConnectListener(ViaVersionPlugin plugin) {
if (getPSConnectListener() != null) { if (getPSConnectListener() != null) {
try { try {
Class<? extends Event> connectionOpenEvent = (Class<? extends Event>) Class.forName("protocolsupport.api.events.ConnectionOpenEvent"); Class<? extends Event> connectionOpenEvent = (Class<? extends Event>) Class.forName("protocolsupport.api.events.ConnectionOpenEvent");
Bukkit.getPluginManager().registerEvent(connectionOpenEvent, new Listener() { }, EventPriority.HIGH, new EventExecutor() { Bukkit.getPluginManager().registerEvent(connectionOpenEvent, new Listener() { }, EventPriority.HIGH, new EventExecutor() {
@Override @Override
public void execute(Listener listener, Event event) throws EventException { public void execute(Listener listener, Event event) throws EventException {
@ -243,18 +239,18 @@ public class ClassGenerator {
Method addConnectListener = connection.getClass().getMethod("addPacketListener", Class.forName("protocolsupport.api.Connection$PacketListener")); Method addConnectListener = connection.getClass().getMethod("addPacketListener", Class.forName("protocolsupport.api.Connection$PacketListener"));
addConnectListener.invoke(connection, connectListener); addConnectListener.invoke(connection, connectListener);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
}, plugin); }, plugin);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
} }
public static Class getPSConnectListener() { public static Class getPSConnectListener() {
return psConnectListener; return psConnectListener;
} }
public static String getOldPSPackage() { public static String getOldPSPackage() {