PaperMC/patches/server-unmapped/0735-Add-command-line-option-to-load-extra-plugin-jars-no.patch
2021-06-11 14:02:28 +02:00

64 lines
3 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
}
};