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 37ad68b0aa..83cbde274c 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 @@ -119,6 +119,7 @@ public class ExternalPluginManager @Getter(AccessLevel.PUBLIC) private UpdateManager updateManager; private Map lastPluginRelease = new HashMap<>(); + private Set pluginTypes = Set.of(PluginType.values()); @Inject public ExternalPluginManager( @@ -638,17 +639,29 @@ public class ExternalPluginManager Class clazz = plugin.getClass(); PluginDescriptor pluginDescriptor = clazz.getAnnotation(PluginDescriptor.class); - if (pluginDescriptor == null) + try { - if (clazz.getSuperclass() == Plugin.class) + if (pluginDescriptor == null) + { + if (clazz.getSuperclass() == Plugin.class) + { + log.warn("Class {} is a plugin, but has no plugin descriptor", clazz); + continue; + } + } + else if (clazz.getSuperclass() != Plugin.class) + { + log.warn("Class {} has plugin descriptor, but is not a plugin", clazz); + continue; + } + else if (!pluginTypes.contains(pluginDescriptor.type())) { - log.warn("Class {} is a plugin, but has no plugin descriptor", clazz); continue; } } - else if (clazz.getSuperclass() != Plugin.class) + catch (EnumConstantNotPresentException e) { - log.warn("Class {} has plugin descriptor, but is not a plugin", clazz); + log.warn("{} has an invalid plugin type of {}", clazz, e.getMessage()); continue; }