2021-06-11 14:02:28 +02:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2021-06-17 11:37:24 +02:00
From: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
2021-06-11 14:02:28 +02:00
Date: Tue, 18 May 2021 14:39:44 -0700
Subject: [PATCH] Add command line option to load extra plugin jars not in the
plugins folder
ex: java -jar paperclip.jar nogui -add-plugin=/path/to/plugin.jar -add-plugin=/path/to/another/plugin_jar.jar
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
2024-06-13 16:45:27 +02:00
index c9767da51134fc5576f4d9f994f8b9fc05c57b9e..0030794a3e125f2493a84ddac86430db625c626e 100644
2021-06-11 14:02:28 +02:00
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
2024-06-13 16:45:27 +02:00
@@ -447,6 +447,35 @@ public final class CraftServer implements Server {
2023-02-19 15:57:10 +01:00
io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.INSTANCE.enter(io.papermc.paper.plugin.entrypoint.Entrypoint.PLUGIN); // Paper - replace implementation
2021-06-11 14:02:28 +02:00
}
+ // Paper start
2021-10-15 23:54:22 +02:00
+ @Override
+ public File getPluginsFolder() {
2024-04-23 21:23:27 +02:00
+ return this.console.getPluginsFolder();
2021-10-15 23:54:22 +02:00
+ }
+
2021-06-11 14:02:28 +02:00
+ private List<File> extraPluginJars() {
+ @SuppressWarnings("unchecked")
+ final List<File> jars = (List<File>) this.console.options.valuesOf("add-plugin");
2021-10-15 23:54:22 +02:00
+ final List<File> list = new ArrayList<>();
+ for (final File file : jars) {
+ if (!file.exists()) {
2022-02-12 14:20:33 +01:00
+ net.minecraft.server.MinecraftServer.LOGGER.warn("File '{}' specified through 'add-plugin' argument does not exist, cannot load a plugin from it!", file.getAbsolutePath());
2021-10-15 23:54:22 +02:00
+ continue;
+ }
+ if (!file.isFile()) {
2022-02-12 14:20:33 +01:00
+ net.minecraft.server.MinecraftServer.LOGGER.warn("File '{}' specified through 'add-plugin' argument is not a file, cannot load a plugin from it!", file.getAbsolutePath());
2021-10-15 23:54:22 +02:00
+ continue;
+ }
+ if (!file.getName().endsWith(".jar")) {
2022-02-12 14:20:33 +01:00
+ net.minecraft.server.MinecraftServer.LOGGER.warn("File '{}' specified through 'add-plugin' argument is not a jar file, cannot load a plugin from it!", file.getAbsolutePath());
2021-10-15 23:54:22 +02:00
+ continue;
+ }
+ list.add(file);
+ }
+ return list;
2021-06-11 14:02:28 +02:00
+ }
+ // Paper end
+
public void enablePlugins(PluginLoadOrder type) {
if (type == PluginLoadOrder.STARTUP) {
2021-06-15 04:59:31 +02:00
this.helpMap.clear();
2021-06-11 14:02:28 +02:00
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
2024-06-13 16:45:27 +02:00
index 2ef6386ea4b95211e26c8759cae849cbe68e3f40..efedc5c8474c548781c943ddfdf2de121c7c09b7 100644
2021-06-11 14:02:28 +02:00
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
2023-11-25 10:49:48 +01:00
@@ -160,6 +160,12 @@ public class Main {
2021-11-24 02:09:49 +01:00
.ofType(File.class)
.defaultsTo(new File("paper.yml"))
.describedAs("Yml file");
2021-06-11 14:02:28 +02:00
+
2021-06-29 11:09:02 +02:00
+ acceptsAll(asList("add-plugin", "add-extra-plugin-jar"), "Specify paths to extra plugin jars to be loaded in addition to those in the plugins folder. This argument can be specified multiple times, once for each extra plugin jar path.")
2021-06-11 14:02:28 +02:00
+ .withRequiredArg()
+ .ofType(File.class)
+ .defaultsTo(new File[] {})
2021-06-29 11:09:02 +02:00
+ .describedAs("Jar file");
2021-06-11 14:02:28 +02:00
// Paper end
}
};