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
2023-06-08 07:03:07 +02:00
index e982442204972e140f0e5ebac777a931ea7394e2..7912cf0e4cab7d6c99106d43b2cdc4f4e80aebac 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
2023-06-06 11:09:19 +02:00
@@ -423,6 +423,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() {
+ return (File) this.console.options.valueOf("plugins");
+ }
+
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
2023-06-07 20:31:32 +02:00
index 15b886634112b2a18b7952107b49ae1430376a3d..47c3c7484687b808341937f7e4ef1c0c410fa59f 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-03-14 19:05:23 +01:00
@@ -159,6 +159,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
}
};