From d9e51980e6dca969c8da5eaa9c0974bdada98c08 Mon Sep 17 00:00:00 2001 From: Jason Penilla <11360596+jpenilla@users.noreply.github.com> Date: Sun, 28 Apr 2024 11:11:26 -0700 Subject: [PATCH] Allow modifying library loader jars bytecode --- .../java/org/bukkit/plugin/java/LibraryLoader.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/paper-api/src/main/java/org/bukkit/plugin/java/LibraryLoader.java b/paper-api/src/main/java/org/bukkit/plugin/java/LibraryLoader.java index f4d655a158..5b0203e908 100644 --- a/paper-api/src/main/java/org/bukkit/plugin/java/LibraryLoader.java +++ b/paper-api/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 repositories; + public static java.util.function.BiFunction 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; }