aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0468-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/api/0468-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch')
-rw-r--r--patches/api/0468-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch91
1 files changed, 91 insertions, 0 deletions
diff --git a/patches/api/0468-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch b/patches/api/0468-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch
new file mode 100644
index 0000000000..8a0f6e9468
--- /dev/null
+++ b/patches/api/0468-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch
@@ -0,0 +1,91 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jason Penilla <[email protected]>
+Date: Tue, 21 May 2024 13:18:00 -0700
+Subject: [PATCH] Allow Bukkit plugin to use Paper PluginLoader API
+
+
+diff --git a/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java b/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java
+index c5465431ce35d264d8510af45e73d058b333c60b..a857e46fa6f0c212db93193e1fdd8b0ea9c33c38 100644
+--- a/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java
++++ b/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java
+@@ -260,6 +260,13 @@ public final class PluginDescriptionFile implements io.papermc.paper.plugin.conf
+ private Set<PluginAwareness> awareness = ImmutableSet.of();
+ private String apiVersion = null;
+ private List<String> libraries = ImmutableList.of();
++ // Paper start - plugin loader api
++ private String paperPluginLoader;
++ @org.jetbrains.annotations.ApiStatus.Internal @org.jetbrains.annotations.Nullable
++ public String getPaperPluginLoader() {
++ return this.paperPluginLoader;
++ }
++ // Paper end - plugin loader api
+ // Paper start - oh my goddddd
+ /**
+ * Don't use this.
+@@ -1233,6 +1240,23 @@ public final class PluginDescriptionFile implements io.papermc.paper.plugin.conf
+ } else {
+ libraries = ImmutableList.<String>of();
+ }
++ // Paper start - plugin loader api
++ if (map.containsKey("paper-plugin-loader")) {
++ this.paperPluginLoader = map.get("paper-plugin-loader").toString();
++ }
++
++ /*
++ Allow skipping the Bukkit/Spigot 'libraries' list. By default, both the 'libraries'
++ list and the 'paper-plugin-loader' will contribute libraries. It may be desired to only
++ use one or the other. (i.e. 'libraries' on Spigot and 'paper-plugin-loader' on Paper)
++ */
++ if (map.containsKey("paper-skip-libraries")) {
++ String skip = map.get("paper-skip-libraries").toString();
++ if (skip.equalsIgnoreCase("true")) {
++ this.libraries = ImmutableList.of();
++ }
++ }
++ // Paper end - plugin loader api
+
+ try {
+ lazyPermissions = (Map<?, ?>) map.get("permissions");
+diff --git a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java
+index 8e1b6be2462aaa692efa1f72986921a6dc357196..c66252802c51174bc26f266cb5cdecdd856ff220 100644
+--- a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java
++++ b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java
+@@ -84,7 +84,13 @@ public class LibraryLoader
+ @Nullable
+ public ClassLoader createLoader(@NotNull PluginDescriptionFile desc)
+ {
+- if ( desc.getLibraries().isEmpty() )
++ // Paper start - plugin loader api
++ return this.createLoader(desc, null);
++ }
++ @Nullable
++ public ClassLoader createLoader(@NotNull PluginDescriptionFile desc, java.util.@Nullable List<java.nio.file.Path> paperLibraryPaths) {
++ if ( desc.getLibraries().isEmpty() && paperLibraryPaths == null )
++ // Paper end - plugin loader api
+ {
+ return null;
+ }
+@@ -103,17 +109,20 @@ public class LibraryLoader
+ }
+
+ DependencyResult result;
+- try
++ if (!dependencies.isEmpty()) try // Paper - plugin loader api
+ {
+ result = repository.resolveDependencies( session, new DependencyRequest( new CollectRequest( (Dependency) null, dependencies, repositories ), null ) );
+ } catch ( DependencyResolutionException ex )
+ {
+ throw new RuntimeException( "Error resolving libraries", ex );
+- }
++ } else result = null; // Paper - plugin loader api
+
+ List<URL> jarFiles = new ArrayList<>();
+ List<java.nio.file.Path> jarPaths = new ArrayList<>(); // Paper - remap libraries
+- for ( ArtifactResult artifact : result.getArtifactResults() )
++ // Paper start - plugin loader api
++ if (paperLibraryPaths != null) jarPaths.addAll(paperLibraryPaths);
++ if (result != null) for ( ArtifactResult artifact : result.getArtifactResults() )
++ // Paper end - plugin loader api
+ {
+ // Paper start - remap libraries
+ jarPaths.add(artifact.getArtifact().getFile().toPath());