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:
Ursprung
f6ae076731
Commit
0a8fc31be1
@ -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() {
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren