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
2021-06-29 11:09:02 +02:00
index b483289bf016317d6ccb8baad2504e9091d72c5b..21f64f879ab71fd40d3f5bb1d0ded4e5802ae373 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
2021-06-21 10:41:00 +02:00
@@ -385,8 +385,13 @@ public final class CraftServer implements Server {
2021-06-11 14:02:28 +02:00
File pluginFolder = (File) console.options.valueOf("plugins");
- if (pluginFolder.exists()) {
2021-06-15 04:59:31 +02:00
- Plugin[] plugins = this.pluginManager.loadPlugins(pluginFolder);
2021-06-11 14:02:28 +02:00
+ // Paper start
+ if (true || pluginFolder.exists()) {
+ if (!pluginFolder.exists()) {
+ pluginFolder.mkdirs();
+ }
2021-06-15 04:59:31 +02:00
+ Plugin[] plugins = this.pluginManager.loadPlugins(pluginFolder, this.extraPluginJars());
2021-06-11 14:02:28 +02:00
+ // Paper end
for (Plugin plugin : plugins) {
try {
String message = String.format("Loading %s", plugin.getDescription().getFullName());
2021-06-21 10:41:00 +02:00
@@ -401,6 +406,18 @@ public final class CraftServer implements Server {
2021-06-11 14:02:28 +02:00
}
}
+ // Paper start
+ private List<File> extraPluginJars() {
+ @SuppressWarnings("unchecked")
+ final List<File> jars = (List<File>) this.console.options.valuesOf("add-plugin");
+ return jars.stream()
+ .filter(File::exists)
+ .filter(File::isFile)
+ .filter(file -> file.getName().endsWith(".jar"))
+ .collect(java.util.stream.Collectors.toList());
+ }
+ // 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
2021-06-29 11:09:02 +02:00
index daa881823f9a0757211e4fece8ebd9225f8b41bb..d92a7e8e4f5a6e794ae4563f17a817ace36da73e 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
@@ -153,6 +153,12 @@ public class Main {
.ofType(String.class)
.defaultsTo("Unknown Server")
.describedAs("Name");
+
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
}
};