65 lines
3.0 KiB
Diff
65 lines
3.0 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: jmp <jasonpenilla2@me.com>
|
||
|
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
|
||
|
index 033a0f1852afd6c1fd136ef07b611a9132adfa0c..c51e9b50323f5e33bad5fd25d74c572241377059 100644
|
||
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||
|
@@ -385,8 +385,13 @@ public final class CraftServer implements Server {
|
||
|
|
||
|
File pluginFolder = (File) console.options.valueOf("plugins");
|
||
|
|
||
|
- if (pluginFolder.exists()) {
|
||
|
- Plugin[] plugins = pluginManager.loadPlugins(pluginFolder);
|
||
|
+ // Paper start
|
||
|
+ if (true || pluginFolder.exists()) {
|
||
|
+ if (!pluginFolder.exists()) {
|
||
|
+ pluginFolder.mkdirs();
|
||
|
+ }
|
||
|
+ Plugin[] plugins = pluginManager.loadPlugins(pluginFolder, this.extraPluginJars());
|
||
|
+ // Paper end
|
||
|
for (Plugin plugin : plugins) {
|
||
|
try {
|
||
|
String message = String.format("Loading %s", plugin.getDescription().getFullName());
|
||
|
@@ -401,6 +406,18 @@ public final class CraftServer implements Server {
|
||
|
}
|
||
|
}
|
||
|
|
||
|
+ // 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) {
|
||
|
helpMap.clear();
|
||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||
|
index 68229f7679f9e974dc7af6c34d6f1d3f8db49353..409fbeeb66fb8f58a72d94686bc9515299927b75 100644
|
||
|
--- 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");
|
||
|
+
|
||
|
+ acceptsAll(asList("add-plugin", "add-extra-plugin-jar"))
|
||
|
+ .withRequiredArg()
|
||
|
+ .ofType(File.class)
|
||
|
+ .defaultsTo(new File[] {})
|
||
|
+ .describedAs("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.");
|
||
|
// Paper end
|
||
|
}
|
||
|
};
|