Revisions for untitled paste

View the changes made to this paste.

unlisted ⁨1⁩ ⁨file⁩ 2021-06-27 08:34:37 UTC

pastefile1

@@ -0,0 +1,35 @@

+public static CompletableFuture<Boolean> applyProtocolLibPatch(Plugin plugin) {
+        return CompletableFuture.supplyAsync(() -> {
+            try {
+                logger.info("Patching ProtocolLib, please wait.");
+
+                // TODO Remove this message if you know a better way for this!
+                logger.warning(
+                        "This patch is a nasty way to patch ProtocolLib, since if an " +
+                                "breaking update is done to the ProtocolInjector this WILL break ProtocolLib. " +
+                                "Please do note that the latest update on the ProtocolInjector class was made " +
+                                "before 2018, so there shouldn't be anything to worry about. " +
+                                "If you do know how to fix this though, please make a PR at: https://github.com/Sculas/NachoSpigot"
+                );
+
+                ClassPool pool = ClassPool.getDefault();
+                pool.insertClassPath(new LoaderClassPath(plugin.getClass().getClassLoader()));
+
+                CtClass defaultProtocolInjector = pool.get("com.comphenix.protocol.injector.netty.ProtocolInjector$1");
+                if (defaultProtocolInjector.isFrozen()) {
+                    defaultProtocolInjector.defrost();
+                }
+
+                CtClass clazz = pool.makeClass(CraftServer.class.getClassLoader().getResourceAsStream("protpatch.class"));
+                clazz.replaceClassName(clazz.getName(), "com.comphenix.protocol.injector.netty.ProtocolInjector$1");
+                clazz.toClass(plugin.getClass().getClassLoader(), plugin.getClass().getProtectionDomain());
+
+                logger.info("Successfully patched ProtocolLib!");
+                return true;
+            } catch (Exception e) {
+                logger.warning("Could not patch ProtocolLib.");
+                e.printStackTrace();
+            }
+            return false;
+        });
+    }
\ No newline at end of file