geforkt von Mirrors/Paper
65 Zeilen
3.0 KiB
Diff
65 Zeilen
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 89244c152665c97cb539bea07fedd1774ed626f1..8209f188dbc932114268486a2ebd77df989a86ec 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 6459ec144fa54a1e6ad1f0c40776321e95b41197..ecd1f0784493dfc758483b7912ce086c3b0d7aa0 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
|
||
|
}
|
||
|
};
|