aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api
diff options
context:
space:
mode:
authorJason Penilla <[email protected]>2024-04-28 13:14:10 -0700
committerGitHub <[email protected]>2024-04-28 13:14:10 -0700
commit7f2d5315fd85fda43b5a5e7040c3a47a68a052b5 (patch)
tree58419cbb32b60343730c01920314dbcb5e4ee866 /patches/api
parent61c9c07e95d84ce6dcdf92d02968cfa9f3efe868 (diff)
downloadPaper-7f2d5315fd85fda43b5a5e7040c3a47a68a052b5.tar.gz
Paper-7f2d5315fd85fda43b5a5e7040c3a47a68a052b5.zip
Rewrite reflection in library loader jars (#10608)
* Rewrite reflection in library loader jars * Address todos
Diffstat (limited to 'patches/api')
-rw-r--r--patches/api/0473-Allow-modifying-library-loader-jars-bytecode.patch34
1 files changed, 34 insertions, 0 deletions
diff --git a/patches/api/0473-Allow-modifying-library-loader-jars-bytecode.patch b/patches/api/0473-Allow-modifying-library-loader-jars-bytecode.patch
new file mode 100644
index 0000000000..0c0311e790
--- /dev/null
+++ b/patches/api/0473-Allow-modifying-library-loader-jars-bytecode.patch
@@ -0,0 +1,34 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jason Penilla <[email protected]>
+Date: Sun, 28 Apr 2024 11:11:26 -0700
+Subject: [PATCH] Allow modifying library loader jars bytecode
+
+
+diff --git a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java
+index f4d655a158410039305ac68cebe0d79000f73df8..5b0203e908f84c531886b8ea8faeb591eb045636 100644
+--- a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java
++++ b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java
+@@ -46,6 +46,7 @@ public class LibraryLoader
+ private final RepositorySystem repository;
+ private final DefaultRepositorySystemSession session;
+ private final List<RemoteRepository> repositories;
++ public static java.util.function.BiFunction<URL[], ClassLoader, URLClassLoader> LIBRARY_LOADER_FACTORY; // Paper - rewrite reflection in libraries
+
+ public LibraryLoader(@NotNull Logger logger)
+ {
+@@ -130,7 +131,14 @@ public class LibraryLoader
+ } );
+ }
+
+- URLClassLoader loader = new URLClassLoader( jarFiles.toArray( new URL[ jarFiles.size() ] ), getClass().getClassLoader() );
++ // Paper start - rewrite reflection in libraries
++ URLClassLoader loader;
++ if (LIBRARY_LOADER_FACTORY == null) {
++ loader = new URLClassLoader( jarFiles.toArray( new URL[ jarFiles.size() ] ), getClass().getClassLoader() );
++ } else {
++ loader = LIBRARY_LOADER_FACTORY.apply(jarFiles.toArray( new URL[ jarFiles.size() ] ), getClass().getClassLoader());
++ }
++ // Paper end - rewrite reflection in libraries
+
+ return loader;
+ }