From a893633b62a56d216d19b7fc6bad623ce9aa10a0 Mon Sep 17 00:00:00 2001 From: Presti Date: Fri, 24 Jan 2025 10:07:36 +0100 Subject: [PATCH] fix: Do not try loading directories and give plugins their own logger. --- .../presti/ree6/addons/ReePluginContext.java | 5 +++- .../presti/ree6/addons/ReePluginFactory.java | 3 ++- .../addons/YamlPluginDescriptorFinder.java | 2 +- src/main/java/de/presti/ree6/main/Main.java | 25 +++++++++++-------- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/main/java/de/presti/ree6/addons/ReePluginContext.java b/src/main/java/de/presti/ree6/addons/ReePluginContext.java index c1e0d72a6..9088b4974 100644 --- a/src/main/java/de/presti/ree6/addons/ReePluginContext.java +++ b/src/main/java/de/presti/ree6/addons/ReePluginContext.java @@ -2,14 +2,17 @@ import lombok.Getter; import org.pf4j.RuntimeMode; +import org.slf4j.Logger; @Getter public class ReePluginContext { private final RuntimeMode runtimeMode; + private final Logger logger; - public ReePluginContext(RuntimeMode runtimeMode) { + public ReePluginContext(RuntimeMode runtimeMode, Logger logger) { this.runtimeMode = runtimeMode; + this.logger = logger; } } diff --git a/src/main/java/de/presti/ree6/addons/ReePluginFactory.java b/src/main/java/de/presti/ree6/addons/ReePluginFactory.java index c41e31436..09fcabae2 100644 --- a/src/main/java/de/presti/ree6/addons/ReePluginFactory.java +++ b/src/main/java/de/presti/ree6/addons/ReePluginFactory.java @@ -4,6 +4,7 @@ import org.pf4j.DefaultPluginFactory; import org.pf4j.Plugin; import org.pf4j.PluginWrapper; +import org.slf4j.LoggerFactory; import java.lang.reflect.Constructor; @@ -12,7 +13,7 @@ public class ReePluginFactory extends DefaultPluginFactory { @Override protected Plugin createInstance(Class pluginClass, PluginWrapper pluginWrapper) { - ReePluginContext context = new ReePluginContext(pluginWrapper.getRuntimeMode()); + ReePluginContext context = new ReePluginContext(pluginWrapper.getRuntimeMode(), LoggerFactory.getLogger(pluginClass)); try { Constructor constructor = pluginClass.getConstructor(ReePluginContext.class); return (Plugin) constructor.newInstance(context); diff --git a/src/main/java/de/presti/ree6/addons/YamlPluginDescriptorFinder.java b/src/main/java/de/presti/ree6/addons/YamlPluginDescriptorFinder.java index 2e61d8052..d8fc05dfd 100644 --- a/src/main/java/de/presti/ree6/addons/YamlPluginDescriptorFinder.java +++ b/src/main/java/de/presti/ree6/addons/YamlPluginDescriptorFinder.java @@ -42,7 +42,7 @@ public YamlPluginDescriptorFinder(String yamlFileName) { @Override public boolean isApplicable(Path pluginPath) { - return Files.exists(pluginPath) && (Files.isDirectory(pluginPath) || FileUtils.isZipOrJarFile(pluginPath)); + return Files.exists(pluginPath) && FileUtils.isZipOrJarFile(pluginPath); } @Override diff --git a/src/main/java/de/presti/ree6/main/Main.java b/src/main/java/de/presti/ree6/main/Main.java index c6f0f865a..ed5d1ec5e 100644 --- a/src/main/java/de/presti/ree6/main/Main.java +++ b/src/main/java/de/presti/ree6/main/Main.java @@ -57,6 +57,8 @@ import net.dv8tion.jda.api.entities.emoji.Emoji; import net.dv8tion.jda.api.utils.messages.MessageEditBuilder; import org.pf4j.PluginManager; +import org.pf4j.PluginState; +import org.pf4j.PluginWrapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -289,7 +291,7 @@ public static void main(String[] args) { BotWorker.createBot(version, shards); getInstance().addEvents(); } catch (Exception ex) { - log.error("[Main] Error while init: " + ex.getMessage()); + log.error("[Main] Error while init: {}", ex.getMessage()); Sentry.captureException(ex); System.exit(0); return; @@ -380,15 +382,18 @@ public static void main(String[] args) { getInstance().getPluginManager().startPlugins(); log.info("Registering all Commands of plugins."); - List commands = getInstance().getPluginManager().getExtensions(ICommand.class); - log.info("Found {} commands in all plugins.", commands.size()); - commands.forEach(command -> { - try { - getInstance().getCommandManager().addCommand(command); - } catch (CommandInitializerException e) { - log.warn("Failed to initialize command: {}", command.getClass().getSimpleName(), e); - } - }); + for (PluginWrapper plugin : getInstance().getPluginManager().getPlugins()) { + if (plugin.getPluginState() != PluginState.STARTED) continue; + List commands = getInstance().getPluginManager().getExtensions(ICommand.class, plugin.getPluginId()); + log.info("Found {} commands in {}.", commands.size(), plugin.getPluginId()); + commands.forEach(command -> { + try { + getInstance().getCommandManager().addCommand(command); + } catch (CommandInitializerException e) { + log.warn("Failed to initialize command: {}", command.getClass().getSimpleName(), e); + } + }); + } } // Create checker Thread.