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); } }