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 b57726f..9ba0356 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 @@ -12,6 +12,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; +import java.util.Stack; import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.logging.Level; @@ -82,7 +83,17 @@ public class BungeePluginManager extends AbstractPluginManager pluginStatuses = new HashMap<>(); + for (Map.Entry entry : toLoad.entrySet()) { + // Yeah... loadPlugins() calls enablePlugin() + if (!RPluginManager.enablePlugin(proxyPluginManager, pluginStatuses, new Stack<>(), entry.getValue())) { + return loadResults.addResult(entry.getKey(), Result.ERROR); + } + } + + toLoad.clear(); + RPluginManager.setToLoad(proxyPluginManager, null); for (BungeePluginDescription description : descriptions) { Optional pluginOptional = getPlugin(description.getId()); diff --git a/Bungee/src/main/java/net/frankheijden/serverutils/bungee/reflection/RPluginManager.java b/Bungee/src/main/java/net/frankheijden/serverutils/bungee/reflection/RPluginManager.java index c928c16..f24ae83 100644 --- a/Bungee/src/main/java/net/frankheijden/serverutils/bungee/reflection/RPluginManager.java +++ b/Bungee/src/main/java/net/frankheijden/serverutils/bungee/reflection/RPluginManager.java @@ -1,8 +1,10 @@ package net.frankheijden.serverutils.bungee.reflection; import com.google.common.collect.Multimap; -import java.util.Map; +import dev.frankheijden.minecraftreflection.ClassObject; import dev.frankheijden.minecraftreflection.MinecraftReflection; +import java.util.Map; +import java.util.Stack; import net.frankheijden.serverutils.common.utils.MapUtils; import net.md_5.bungee.api.plugin.Command; import net.md_5.bungee.api.plugin.Plugin; @@ -43,6 +45,22 @@ public class RPluginManager { reflection.set(pluginManager, "toLoad", toLoad); } + /** + * Enables a plugin. + */ + public static boolean enablePlugin( + Object pluginManager, + Map pluginStatuses, + Stack dependStack, + PluginDescription plugin + ) { + return reflection.invoke(pluginManager, "enablePlugin", + ClassObject.of(Map.class, pluginStatuses), + ClassObject.of(Stack.class, dependStack), + ClassObject.of(PluginDescription.class, plugin) + ); + } + /** * Retrieves the registered plugin of the command. * @param instance The PluginManager instance.