aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/1041-Plugin-scoped-resources.patch
diff options
context:
space:
mode:
authorRiley Park <[email protected]>2024-07-18 18:14:02 -0700
committerRiley Park <[email protected]>2024-07-18 18:14:02 -0700
commit49fc427fb88b498ea9bc71feabe4b07d196512e2 (patch)
treecc900b8d316eae4d2e461e5d30e225ae41bb95f6 /patches/server/1041-Plugin-scoped-resources.patch
parenta8db5274493f3bf6c91c8bc9d4a3618a02ba5500 (diff)
downloadPaper-feat/plugin-scoped-resources.tar.gz
Paper-feat/plugin-scoped-resources.zip
Plugin-scoped resourcesfeat/plugin-scoped-resources
Diffstat (limited to 'patches/server/1041-Plugin-scoped-resources.patch')
-rw-r--r--patches/server/1041-Plugin-scoped-resources.patch116
1 files changed, 116 insertions, 0 deletions
diff --git a/patches/server/1041-Plugin-scoped-resources.patch b/patches/server/1041-Plugin-scoped-resources.patch
new file mode 100644
index 0000000000..bb448beb9b
--- /dev/null
+++ b/patches/server/1041-Plugin-scoped-resources.patch
@@ -0,0 +1,116 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Riley Park <[email protected]>
+Date: Thu, 18 Jul 2024 18:13:17 -0700
+Subject: [PATCH] Plugin-scoped resources
+
+
+diff --git a/src/main/java/io/papermc/paper/plugin/entrypoint/classloader/PaperPluginClassLoader.java b/src/main/java/io/papermc/paper/plugin/entrypoint/classloader/PaperPluginClassLoader.java
+index 18401ede9cd1fc7094c6b74859929938e01795ca..b8eeedf0b2ba0c81d0e40383ff3a02cde973574d 100644
+--- a/src/main/java/io/papermc/paper/plugin/entrypoint/classloader/PaperPluginClassLoader.java
++++ b/src/main/java/io/papermc/paper/plugin/entrypoint/classloader/PaperPluginClassLoader.java
+@@ -1,12 +1,14 @@
+ package io.papermc.paper.plugin.entrypoint.classloader;
+
+ import io.papermc.paper.plugin.configuration.PluginMeta;
++import io.papermc.paper.plugin.event.PluginEventManagerImpl;
+ import io.papermc.paper.plugin.provider.entrypoint.DependencyContext;
+ import io.papermc.paper.plugin.provider.classloader.ConfiguredPluginClassLoader;
+ import io.papermc.paper.plugin.entrypoint.classloader.group.PaperPluginClassLoaderStorage;
+ import io.papermc.paper.plugin.provider.classloader.PaperClassLoaderStorage;
+ import io.papermc.paper.plugin.provider.classloader.PluginClassLoaderGroup;
+ import io.papermc.paper.plugin.provider.configuration.PaperPluginMeta;
++import io.papermc.paper.plugin.scheduler.PluginSchedulerImpl;
+ import org.bukkit.Bukkit;
+ import org.bukkit.plugin.PluginDescriptionFile;
+ import org.bukkit.plugin.java.JavaPlugin;
+@@ -175,7 +177,7 @@ public class PaperPluginClassLoader extends PaperSimplePluginClassLoader impleme
+
+ File dataFolder = new File(Bukkit.getPluginsFolder(), pluginDescriptionFile.getName());
+
+- plugin.init(Bukkit.getServer(), pluginDescriptionFile, dataFolder, this.source.toFile(), this, config, this.logger);
++ plugin.init(Bukkit.getServer(), pluginDescriptionFile, dataFolder, this.source.toFile(), this, config, this.logger, new PluginEventManagerImpl(plugin), new PluginSchedulerImpl(plugin));
+
+ this.loadedJavaPlugin = plugin;
+ }
+diff --git a/src/main/java/io/papermc/paper/plugin/event/PluginEventManagerImpl.java b/src/main/java/io/papermc/paper/plugin/event/PluginEventManagerImpl.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..2b034cd5f9b2f4a9a30b6ff7d9e4d52888e9846b
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/plugin/event/PluginEventManagerImpl.java
+@@ -0,0 +1,27 @@
++package io.papermc.paper.plugin.event;
++
++import org.bukkit.Bukkit;
++import org.bukkit.event.HandlerList;
++import org.bukkit.event.Listener;
++import org.bukkit.plugin.Plugin;
++import org.bukkit.plugin.PluginManager;
++import org.jetbrains.annotations.NotNull;
++
++public final class PluginEventManagerImpl implements PluginEventManager {
++ private final PluginManager em = Bukkit.getServer().getPluginManager();
++ private final Plugin plugin;
++
++ public PluginEventManagerImpl(final Plugin plugin) {
++ this.plugin = plugin;
++ }
++
++ @Override
++ public void register(final @NotNull Listener listener) {
++ this.em.registerEvents(listener, this.plugin);
++ }
++
++ @Override
++ public void unregister(final @NotNull Listener listener) {
++ HandlerList.unregisterAll(listener);
++ }
++}
+diff --git a/src/main/java/io/papermc/paper/plugin/scheduler/PluginSchedulerImpl.java b/src/main/java/io/papermc/paper/plugin/scheduler/PluginSchedulerImpl.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..ca132f47bb617d441a7a69e745ad4909848157c0
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/plugin/scheduler/PluginSchedulerImpl.java
+@@ -0,0 +1,20 @@
++package io.papermc.paper.plugin.scheduler;
++
++import org.bukkit.Bukkit;
++import org.bukkit.plugin.Plugin;
++import org.bukkit.scheduler.BukkitScheduler;
++import org.jetbrains.annotations.NotNull;
++
++public final class PluginSchedulerImpl implements PluginScheduler {
++ private final BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
++ private final Plugin plugin;
++
++ public PluginSchedulerImpl(final Plugin plugin) {
++ this.plugin = plugin;
++ }
++
++ @Override
++ public void executeOnMainThread(final @NotNull Runnable runnable) {
++ this.scheduler.runTask(this.plugin, runnable);
++ }
++}
+diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+index 28b3ad04e1f4b38ce21084864a59a2cd81b3992c..be01657f6a2c87b8f8bdf3c1086afa03fb4d6587 100644
+--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
++++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+@@ -684,6 +684,18 @@ public final class CraftMagicNumbers implements UnsafeValues {
+ }
+ // Paper end - proxy ItemStack
+
++ // Paper start - plugin-scoped resources
++ @Override
++ public io.papermc.paper.plugin.event.PluginEventManager pluginScopedEventManager(final org.bukkit.plugin.Plugin plugin) {
++ return new io.papermc.paper.plugin.event.PluginEventManagerImpl(plugin);
++ }
++
++ @Override
++ public io.papermc.paper.plugin.scheduler.PluginScheduler pluginScopedScheduler(final org.bukkit.plugin.Plugin plugin) {
++ return new io.papermc.paper.plugin.scheduler.PluginSchedulerImpl(plugin);
++ }
++ // Paper end - plugin-scoped resources
++
+ /**
+ * This helper class represents the different NBT Tags.
+ * <p>