From 321db65854a3b516c20b694e32ea8c379cf35ad7 Mon Sep 17 00:00:00 2001 From: MCMDEV Date: Fri, 19 Jun 2026 16:29:57 +0200 Subject: [PATCH 1/2] Add extra classpath urls system property --- .../java/io/papermc/paperclip/Paperclip.java | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/java17/src/main/java/io/papermc/paperclip/Paperclip.java b/java17/src/main/java/io/papermc/paperclip/Paperclip.java index a10744d..e5606b3 100644 --- a/java17/src/main/java/io/papermc/paperclip/Paperclip.java +++ b/java17/src/main/java/io/papermc/paperclip/Paperclip.java @@ -1,21 +1,16 @@ package io.papermc.paperclip; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; +import java.io.*; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; +import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Path; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; +import java.util.*; public final class Paperclip { @@ -80,11 +75,13 @@ private static URL[] setupClasspath() { // This is due to change we make to some library classes inside the versions jar final Collection versionUrls = classpathUrls.get("versions").values(); final Collection libraryUrls = classpathUrls.get("libraries").values(); + final Collection extraUrls = findExtraClasspathUrls(); final URL[] emptyArray = new URL[0]; - final URL[] urls = new URL[versionUrls.size() + libraryUrls.size()]; + final URL[] urls = new URL[versionUrls.size() + libraryUrls.size() + extraUrls.size()]; System.arraycopy(versionUrls.toArray(emptyArray), 0, urls, 0, versionUrls.size()); System.arraycopy(libraryUrls.toArray(emptyArray), 0, urls, versionUrls.size(), libraryUrls.size()); + System.arraycopy(extraUrls.toArray(emptyArray), 0, urls, versionUrls.size() + libraryUrls.size(), extraUrls.size()); return urls; } @@ -241,4 +238,22 @@ private static void applyPatches( throw Util.fail("Failed to apply patches", e); } } + + private static Collection findExtraClasspathUrls() { + String extraClasspathUrlsString = System.getProperty("paperclip.extraClasspathUrls"); + if (extraClasspathUrlsString == null) { + return Collections.emptyList(); + } + String[] extraClasspathStrings = extraClasspathUrlsString.split(File.pathSeparator); + Collection extraClasspathUrls = new ArrayList<>(); + try { + for (String extraClasspathString : extraClasspathStrings) { + File extraClasspathFile = new File(extraClasspathString); + extraClasspathUrls.add(extraClasspathFile.toURI().toURL()); + } + } catch (MalformedURLException e) { + throw Util.fail("Failed to parse extra classpath URLs", e); + } + return extraClasspathUrls; + } } From 470d0acedfe84d845d6d1f35b2d243f2d95ca4bf Mon Sep 17 00:00:00 2001 From: MCMDEV Date: Fri, 31 Jul 2026 22:12:20 +0200 Subject: [PATCH 2/2] Replace wildcard imports with single class imports --- .../main/java/io/papermc/paperclip/Paperclip.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/java17/src/main/java/io/papermc/paperclip/Paperclip.java b/java17/src/main/java/io/papermc/paperclip/Paperclip.java index e5606b3..0fa52e5 100644 --- a/java17/src/main/java/io/papermc/paperclip/Paperclip.java +++ b/java17/src/main/java/io/papermc/paperclip/Paperclip.java @@ -1,6 +1,10 @@ package io.papermc.paperclip; -import java.io.*; +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; @@ -10,7 +14,11 @@ import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Path; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; public final class Paperclip {