Skip to content

Commit

Permalink
Plugin Datapacks
Browse files Browse the repository at this point in the history
  • Loading branch information
Machine-Maker committed Mar 31, 2023
1 parent 1704bf7 commit 96245d9
Show file tree
Hide file tree
Showing 7 changed files with 401 additions and 28 deletions.
5 changes: 2 additions & 3 deletions patches/api/0008-Paper-Plugins.patch
Original file line number Diff line number Diff line change
Expand Up @@ -872,14 +872,13 @@ index 0000000000000000000000000000000000000000..e3e902a708a760be167cb1bba8e845c5
+}
diff --git a/src/main/java/io/papermc/paper/plugin/provider/classloader/ClassLoaderAccess.java b/src/main/java/io/papermc/paper/plugin/provider/classloader/ClassLoaderAccess.java
new file mode 100644
index 0000000000000000000000000000000000000000..64e46fdfa4d404cb08c67a456e5990b729296b98
index 0000000000000000000000000000000000000000..a37a0b9e161aaf9db892ca4993033076cd924fc3
--- /dev/null
+++ b/src/main/java/io/papermc/paper/plugin/provider/classloader/ClassLoaderAccess.java
@@ -0,0 +1,34 @@
@@ -0,0 +1,33 @@
+package io.papermc.paper.plugin.provider.classloader;
+
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * The class loader access interface is an <b>internal</b> representation of a class accesses' ability to see types
Expand Down
73 changes: 73 additions & 0 deletions patches/api/0418-Plugin-Datapacks.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Sat, 9 Jan 2021 22:21:41 -0800
Subject: [PATCH] Plugin Datapacks


diff --git a/src/main/java/io/papermc/paper/plugin/DatapackConfiguration.java b/src/main/java/io/papermc/paper/plugin/DatapackConfiguration.java
new file mode 100644
index 0000000000000000000000000000000000000000..9e48ad4f2bd9d73fdaf1e05b5338e4a54d5cd146
--- /dev/null
+++ b/src/main/java/io/papermc/paper/plugin/DatapackConfiguration.java
@@ -0,0 +1,22 @@
+package io.papermc.paper.plugin;
+
+import net.kyori.adventure.text.Component;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface DatapackConfiguration {
+
+ /**
+ * Gets the directory inside the plugin's file for the datapack.
+ *
+ * @return the datapack directory
+ */
+ @NotNull String directory();
+
+ /**
+ * Gets the datapack's configured name.
+ *
+ * @return the name or null if none configured
+ */
+ @Nullable Component name();
+}
diff --git a/src/main/java/io/papermc/paper/plugin/configuration/PluginMeta.java b/src/main/java/io/papermc/paper/plugin/configuration/PluginMeta.java
index ef393f1f93ca48264fc1b6e3a27787f6a9152e1b..c0037d779cbfe926221559598fc9965717202768 100644
--- a/src/main/java/io/papermc/paper/plugin/configuration/PluginMeta.java
+++ b/src/main/java/io/papermc/paper/plugin/configuration/PluginMeta.java
@@ -1,5 +1,6 @@
package io.papermc.paper.plugin.configuration;

+import io.papermc.paper.plugin.DatapackConfiguration;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
import org.bukkit.plugin.PluginLoadOrder;
@@ -200,4 +201,11 @@ public interface PluginMeta {
@Nullable
String getAPIVersion();

+ /**
+ * Get the configuration for the datapack associated with the plugin.
+ *
+ * @return the datapack configuration (or null if none)
+ */
+ @Nullable DatapackConfiguration getDatapackConfiguration();
+
}
diff --git a/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java b/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java
index 028805bcdb1d2bb0d11387db165b7376579e5f60..da527a7ab60fa0e0790a31004bb965ba3d86227e 100644
--- a/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java
+++ b/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java
@@ -318,6 +318,11 @@ public final class PluginDescriptionFile implements io.papermc.paper.plugin.conf
public @NotNull List<String> getProvidedPlugins() {
return this.provides;
}
+
+ @Override
+ public @Nullable io.papermc.paper.plugin.DatapackConfiguration getDatapackConfiguration() {
+ return null;
+ }
// Paper end

public PluginDescriptionFile(@NotNull final InputStream stream) throws InvalidDescriptionException {
34 changes: 9 additions & 25 deletions patches/server/0013-Paper-Plugins.patch
Original file line number Diff line number Diff line change
Expand Up @@ -1675,14 +1675,13 @@ new file mode 100644
index 0000000000000000000000000000000000000000..bfa258faf17ca6118aeddfa4e95bbd082bcd1390
--- /dev/null
+++ b/src/main/java/io/papermc/paper/plugin/entrypoint/dependency/DependencyUtil.java
@@ -0,0 +1,75 @@
@@ -0,0 +1,74 @@
+package io.papermc.paper.plugin.entrypoint.dependency;
+
+import com.google.common.graph.MutableGraph;
+import io.papermc.paper.plugin.configuration.PluginMeta;
+import io.papermc.paper.plugin.provider.PluginProvider;
+import io.papermc.paper.plugin.provider.configuration.LoadOrderConfiguration;
+import org.bukkit.plugin.PluginDescriptionFile;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.ArrayList;
Expand Down Expand Up @@ -4977,7 +4976,7 @@ new file mode 100644
index 0000000000000000000000000000000000000000..1572c3942c850eb36df38cf06395bcafa24e18e0
--- /dev/null
+++ b/src/main/java/io/papermc/paper/plugin/provider/source/DirectoryProviderSource.java
@@ -0,0 +1,40 @@
@@ -0,0 +1,39 @@
+package io.papermc.paper.plugin.provider.source;
+
+import com.mojang.logging.LogUtils;
Expand All @@ -4986,7 +4985,6 @@ index 0000000000000000000000000000000000000000..1572c3942c850eb36df38cf06395bcaf
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.logging.Level;
+
+/**
+ * Loads all plugin providers in the given directory.
Expand Down Expand Up @@ -5401,25 +5399,18 @@ index 0000000000000000000000000000000000000000..362feffd88e117c0fb93ffeddafe8334
+}
diff --git a/src/main/java/io/papermc/paper/plugin/provider/type/paper/PaperLoadOrderConfiguration.java b/src/main/java/io/papermc/paper/plugin/provider/type/paper/PaperLoadOrderConfiguration.java
new file mode 100644
index 0000000000000000000000000000000000000000..b7e8a5ba375a558e0442aa9facf96954a9bb135f
index 0000000000000000000000000000000000000000..d905fb283801f272fbba99a58477d439db357971
--- /dev/null
+++ b/src/main/java/io/papermc/paper/plugin/provider/type/paper/PaperLoadOrderConfiguration.java
@@ -0,0 +1,44 @@
@@ -0,0 +1,37 @@
+package io.papermc.paper.plugin.provider.type.paper;
+
+import io.papermc.paper.plugin.configuration.PluginMeta;
+import io.papermc.paper.plugin.provider.PluginProvider;
+import io.papermc.paper.plugin.provider.configuration.LoadOrderConfiguration;
+import io.papermc.paper.plugin.provider.configuration.PaperPluginMeta;
+import io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider;
+import org.bukkit.plugin.PluginDescriptionFile;
+import org.bukkit.plugin.java.JavaPlugin;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+public class PaperLoadOrderConfiguration implements LoadOrderConfiguration {
+
Expand Down Expand Up @@ -5776,17 +5767,16 @@ index 0000000000000000000000000000000000000000..1ba051931d3ce6ac0bef559911e44530
+}
diff --git a/src/main/java/io/papermc/paper/plugin/provider/type/spigot/SpigotLoadOrderConfiguration.java b/src/main/java/io/papermc/paper/plugin/provider/type/spigot/SpigotLoadOrderConfiguration.java
new file mode 100644
index 0000000000000000000000000000000000000000..b2a6544e321fa61c58bdf5684231de1020884fcc
index 0000000000000000000000000000000000000000..96f84f965f30db09c516a616ba8b5166b4a4c501
--- /dev/null
+++ b/src/main/java/io/papermc/paper/plugin/provider/type/spigot/SpigotLoadOrderConfiguration.java
@@ -0,0 +1,72 @@
@@ -0,0 +1,71 @@
+package io.papermc.paper.plugin.provider.type.spigot;
+
+import io.papermc.paper.plugin.configuration.PluginMeta;
+import io.papermc.paper.plugin.provider.PluginProvider;
+import io.papermc.paper.plugin.provider.configuration.LoadOrderConfiguration;
+import org.bukkit.plugin.PluginDescriptionFile;
+import org.bukkit.plugin.java.JavaPlugin;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.ArrayList;
Expand Down Expand Up @@ -5857,13 +5847,12 @@ new file mode 100644
index 0000000000000000000000000000000000000000..d5db789074ca5a9e005c26a221ee3879252b3d6c
--- /dev/null
+++ b/src/main/java/io/papermc/paper/plugin/provider/type/spigot/SpigotPluginProvider.java
@@ -0,0 +1,190 @@
@@ -0,0 +1,189 @@
+package io.papermc.paper.plugin.provider.type.spigot;
+
+import com.destroystokyo.paper.util.SneakyThrow;
+import com.destroystokyo.paper.utils.PaperPluginLogger;
+import io.papermc.paper.plugin.entrypoint.dependency.DependencyUtil;
+import io.papermc.paper.plugin.manager.PaperPluginManagerImpl;
+import io.papermc.paper.plugin.provider.configuration.LoadOrderConfiguration;
+import io.papermc.paper.plugin.provider.entrypoint.DependencyContext;
+import io.papermc.paper.plugin.entrypoint.dependency.DependencyContextHolder;
Expand Down Expand Up @@ -6104,7 +6093,7 @@ new file mode 100644
index 0000000000000000000000000000000000000000..2851c22ed74792bf7b60139c46776407e5163463
--- /dev/null
+++ b/src/main/java/io/papermc/paper/plugin/storage/BootstrapProviderStorage.java
@@ -0,0 +1,57 @@
@@ -0,0 +1,54 @@
+package io.papermc.paper.plugin.storage;
+
+import com.mojang.logging.LogUtils;
Expand All @@ -6115,13 +6104,10 @@ index 0000000000000000000000000000000000000000..2851c22ed74792bf7b60139c46776407
+import io.papermc.paper.plugin.provider.entrypoint.DependencyContext;
+import io.papermc.paper.plugin.entrypoint.dependency.DependencyContextHolder;
+import io.papermc.paper.plugin.entrypoint.strategy.ModernPluginLoadingStrategy;
+import io.papermc.paper.plugin.entrypoint.strategy.PluginGraphCycleException;
+import io.papermc.paper.plugin.entrypoint.strategy.ProviderConfiguration;
+import io.papermc.paper.plugin.provider.PluginProvider;
+import io.papermc.paper.plugin.provider.ProviderStatus;
+import io.papermc.paper.plugin.provider.ProviderStatusHolder;
+import io.papermc.paper.plugin.provider.configuration.PaperPluginMeta;
+import io.papermc.paper.plugin.provider.configuration.type.DependencyConfiguration;
+import org.slf4j.Logger;
+
+import java.util.ArrayList;
Expand Down Expand Up @@ -6214,7 +6200,7 @@ new file mode 100644
index 0000000000000000000000000000000000000000..cb9b13522a976b82bcb71cef486f11f4172e3e99
--- /dev/null
+++ b/src/main/java/io/papermc/paper/plugin/storage/ServerPluginProviderStorage.java
@@ -0,0 +1,70 @@
@@ -0,0 +1,68 @@
+package io.papermc.paper.plugin.storage;
+
+import com.mojang.logging.LogUtils;
Expand All @@ -6223,8 +6209,6 @@ index 0000000000000000000000000000000000000000..cb9b13522a976b82bcb71cef486f11f4
+import io.papermc.paper.plugin.entrypoint.strategy.ProviderConfiguration;
+import io.papermc.paper.plugin.manager.PaperPluginManagerImpl;
+import io.papermc.paper.plugin.provider.PluginProvider;
+import io.papermc.paper.plugin.provider.ProviderStatus;
+import io.papermc.paper.plugin.provider.ProviderStatusHolder;
+import io.papermc.paper.plugin.provider.type.paper.PaperPluginParent;
+import org.bukkit.plugin.Plugin;
+import org.bukkit.plugin.java.JavaPlugin;
Expand Down
Loading

0 comments on commit 96245d9

Please sign in to comment.