@Override public void load(Collection<PluginMetaData> plugins) { List<KotlinPluginScript> pluginScripts = new ArrayList<>(); ClassGraph classGraph = new ClassGraph().enableAllInfo(); try (ScanResult scanResult = classGraph.scan()) { ClassInfoList pluginClassList = scanResult .getSubclasses(KotlinPluginScript.class.getName()) .directOnly(); for (ClassInfo pluginClassInfo : pluginClassList) { Class<KotlinPluginScript> scriptClass = pluginClassInfo.loadClass(KotlinPluginScript.class); Constructor<KotlinPluginScript> scriptConstructor = scriptClass.getConstructor(World.class, PluginContext.class); pluginScripts.add(scriptConstructor.newInstance(world, context)); logger.info(String.format("Loaded plugin: %s", pluginDescriptor(scriptClass))); } } catch (Exception e) { throw new RuntimeException(e); } pluginScripts.forEach(script -> script.doStart(world)); }
for (final ClassInfo directSuperclassNode : classNode.getSuperclasses().directOnly()) { if (directSuperclassNode != null && allVisibleNodes.contains(directSuperclassNode.getName()) && !directSuperclassNode.getName().equals("java.lang.Object")) { for (final ClassInfo implementedInterfaceNode : classNode.getInterfaces().directOnly()) { if (allVisibleNodes.contains(implementedInterfaceNode.getName())) { for (final ClassInfo superinterfaceNode : interfaceNode.getInterfaces().directOnly()) { if (allVisibleNodes.contains(superinterfaceNode.getName())) {