From a298c5275b23e6f5cea0ccdef5d16a565761bb6d Mon Sep 17 00:00:00 2001 From: dan28000 <84990628+dan28000@users.noreply.github.com> Date: Wed, 22 Apr 2026 01:06:34 +0200 Subject: [PATCH] Fix loading of plugins from "add-plugin-dir" flag --- .../paper/plugin/PluginInitializerManager.java | 12 ++++++++++-- .../provider/source/DirectoryProviderSource.java | 13 +------------ 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/paper-server/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java b/paper-server/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java index 5741a60faba7..84d6a5ad1c68 100644 --- a/paper-server/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java +++ b/paper-server/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java @@ -109,8 +109,16 @@ public static void load(OptionSet optionSet) throws Exception { io.papermc.paper.plugin.util.EntrypointUtil.registerProvidersFromSource(io.papermc.paper.plugin.provider.source.PluginFlagProviderSource.INSTANCE, files); @SuppressWarnings("unchecked") - java.util.List dirs = ((java.util.List) optionSet.valuesOf("add-plugin-dir")).stream().map(File::toPath).toList(); - dirs.forEach(pluginDir -> io.papermc.paper.plugin.util.EntrypointUtil.registerProvidersFromSource(io.papermc.paper.plugin.provider.source.DirectoryProviderSource.INSTANCE_NO_CREATE, pluginDir)); + java.util.List pluginList = ((java.util.List) optionSet.valuesOf("add-plugin-dir")).stream() + .filter(java.util.Objects::nonNull) + .map(f -> f.listFiles(file -> file.getName().endsWith(".jar"))) + .filter(java.util.Objects::nonNull) + .flatMap(java.util.Arrays::stream) + .filter(File::isFile) + .map(File::toPath) + .toList(); + + io.papermc.paper.plugin.util.EntrypointUtil.registerProvidersFromSource(io.papermc.paper.plugin.provider.source.PluginFlagProviderSource.INSTANCE, pluginList); final Set paperPluginNames = new TreeSet<>(); final Set legacyPluginNames = new TreeSet<>(); diff --git a/paper-server/src/main/java/io/papermc/paper/plugin/provider/source/DirectoryProviderSource.java b/paper-server/src/main/java/io/papermc/paper/plugin/provider/source/DirectoryProviderSource.java index b6dcbd88ea31..226f457db6c1 100644 --- a/paper-server/src/main/java/io/papermc/paper/plugin/provider/source/DirectoryProviderSource.java +++ b/paper-server/src/main/java/io/papermc/paper/plugin/provider/source/DirectoryProviderSource.java @@ -16,25 +16,14 @@ */ public class DirectoryProviderSource implements ProviderSource> { - public static final DirectoryProviderSource INSTANCE = new DirectoryProviderSource(true); - public static final DirectoryProviderSource INSTANCE_NO_CREATE = new DirectoryProviderSource(false); + public static final DirectoryProviderSource INSTANCE = new DirectoryProviderSource(); private static final FileProviderSource FILE_PROVIDER_SOURCE = new FileProviderSource("Directory '%s'"::formatted); private static final Logger LOGGER = LogUtils.getClassLogger(); - private final boolean createDirectory; - - public DirectoryProviderSource(final boolean createDirectory) { - this.createDirectory = createDirectory; - } - @Override public List prepareContext(Path context) throws IOException { // Symlink happy, create file if missing. if (!Files.isDirectory(context)) { - if (!this.createDirectory) { - return List.of(); - } - Files.createDirectories(context); }