From 4652e8ede45abad2a7f4a46f1b288f8fe628ea47 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Tue, 2 Jun 2020 17:27:01 -0600 Subject: [PATCH] PluginManager: don't duplicate dependency plugins if they already exist If you had an external plugin with a PluginDependency on a core plugin the core plugin would be included in the external `loadPlugins` dependency graph, which would make it be instantiated twice. Since external plugins can't depend on other external plugins, and core plugins are guaranteed to be loaded first with no external dependencies, we can just exclude dependency edges for nodes outside of the current load list. --- .../main/java/net/runelite/client/plugins/PluginManager.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java b/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java index 1a2dc1f365..f48da0de17 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java @@ -320,7 +320,10 @@ public class PluginManager for (PluginDependency pluginDependency : pluginDependencies) { - graph.putEdge(pluginClazz, pluginDependency.value()); + if (graph.nodes().contains(pluginDependency.value())) + { + graph.putEdge(pluginClazz, pluginDependency.value()); + } } }