From dd99bad81c7bc97894a40c144ebe935ec65c3a75 Mon Sep 17 00:00:00 2001 From: Frank van der Heijden Date: Tue, 3 Aug 2021 20:07:50 +0200 Subject: [PATCH] Bungee can't differentiate between loaded and enabled --- .../bungee/managers/BungeePluginManager.java | 7 ++++- .../managers/AbstractPluginManager.java | 28 +++++++++++++------ 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/Bungee/src/main/java/net/frankheijden/serverutils/bungee/managers/BungeePluginManager.java b/Bungee/src/main/java/net/frankheijden/serverutils/bungee/managers/BungeePluginManager.java index 00cf68f..b57726f 100644 --- a/Bungee/src/main/java/net/frankheijden/serverutils/bungee/managers/BungeePluginManager.java +++ b/Bungee/src/main/java/net/frankheijden/serverutils/bungee/managers/BungeePluginManager.java @@ -124,7 +124,12 @@ public class BungeePluginManager extends AbstractPluginManager checkPluginStates(List plugins, boolean enabled) { + return Optional.empty(); // Bungee can't differentiate between "loaded" and "enabled" } @Override diff --git a/Common/src/main/java/net/frankheijden/serverutils/common/managers/AbstractPluginManager.java b/Common/src/main/java/net/frankheijden/serverutils/common/managers/AbstractPluginManager.java index c5ef500..bbdd06a 100644 --- a/Common/src/main/java/net/frankheijden/serverutils/common/managers/AbstractPluginManager.java +++ b/Common/src/main/java/net/frankheijden/serverutils/common/managers/AbstractPluginManager.java @@ -97,11 +97,9 @@ public abstract class AbstractPluginManager enablePlugins(List

plugins) { - for (P plugin : plugins) { - String pluginId = getPluginId(plugin); - if (isPluginEnabled(pluginId)) { - return new PluginResults

().addResult(pluginId, Result.ALREADY_ENABLED); - } + Optional

pluginOptional = checkPluginStates(plugins, false); + if (pluginOptional.isPresent()) { + return new PluginResults

().addResult(getPluginId(pluginOptional.get()), Result.ALREADY_ENABLED); } return enableOrderedPlugins(determineLoadOrder(plugins)); @@ -115,6 +113,19 @@ public abstract class AbstractPluginManager checkPluginStates(List

plugins, boolean enabled) { + for (P plugin : plugins) { + if (isPluginEnabled(plugin) != enabled) { + return Optional.of(plugin); + } + } + return Optional.empty(); + } + /** * Disables the given plugin by name. */ @@ -132,10 +143,9 @@ public abstract class AbstractPluginManager disablePlugins(List

plugins) { - for (P plugin : plugins) { - if (!isPluginEnabled(plugin)) { - return new PluginResults

().addResult(getPluginId(plugin), Result.ALREADY_DISABLED); - } + Optional

pluginOptional = checkPluginStates(plugins, true); + if (pluginOptional.isPresent()) { + return new PluginResults

().addResult(getPluginId(pluginOptional.get()), Result.ALREADY_DISABLED); } List

orderedPlugins;