From f0b762c5f2bf4d073fbcbc71e9a90d068073fb13 Mon Sep 17 00:00:00 2001 From: ThatGamerBlue Date: Tue, 31 Mar 2020 18:23:47 +0100 Subject: [PATCH] plugins: fix plugins loading configs from their dependencies --- .../client/plugins/ExternalPluginManager.java | 7 +++++-- .../runelite/client/plugins/PluginManager.java | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/ExternalPluginManager.java b/runelite-client/src/main/java/net/runelite/client/plugins/ExternalPluginManager.java index 4439869d48..89c177f4e6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/ExternalPluginManager.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/ExternalPluginManager.java @@ -755,8 +755,11 @@ public class ExternalPluginManager Class type = key.getTypeLiteral().getRawType(); if (Config.class.isAssignableFrom(type)) { - Config config = (Config) pluginInjector.getInstance(key); - configManager.setDefaultConfiguration(config, false); + if (type.getPackageName().startsWith(plugin.getClass().getPackageName())) + { + Config config = (Config) pluginInjector.getInstance(key); + configManager.setDefaultConfiguration(config, false); + } } } } 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 642089bba0..b6f7f2f9ca 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 @@ -82,6 +82,7 @@ import net.runelite.client.ui.RuneLiteSplashScreen; import net.runelite.client.util.GameEventManager; import net.runelite.client.util.Groups; import org.jgroups.Message; +import org.pf4j.Extension; @Singleton @Slf4j @@ -192,6 +193,20 @@ public class PluginManager Class type = key.getTypeLiteral().getRawType(); if (Config.class.isAssignableFrom(type)) { + Extension externalDescriptor = plugin.getClass().getAnnotation(Extension.class); + if (externalDescriptor != null) + { + // external + Config config = (Config) injector.getInstance(key); + Class actualClass = config.getClass().getInterfaces()[0]; + + if (actualClass.getPackageName().startsWith(plugin.getClass().getPackageName())) + { + return config; + } + continue; + } + return (Config) injector.getInstance(key); } }