User: rednesto Date: 01 Apr 23 21:46 Revision: 39ff9a1c2618f9fa72d6d8e193bc2dbf39043af6 Summary: Show plugin icon for paper bootstraps and loaders TeamCity URL: http://ci.mcdev.io:80/viewModification.html?tab=vcsModificationFiles&modId=8422&personal=false Index: src/main/kotlin/platform/bukkit/BukkitModule.kt =================================================================== --- src/main/kotlin/platform/bukkit/BukkitModule.kt (revision 78680be6a02fe3d7a54a32e62b14dfe7be95e84e) +++ src/main/kotlin/platform/bukkit/BukkitModule.kt (revision 39ff9a1c2618f9fa72d6d8e193bc2dbf39043af6) @@ -18,6 +18,7 @@ import com.demonwav.mcdev.platform.PlatformType import com.demonwav.mcdev.platform.bukkit.generation.BukkitGenerationData import com.demonwav.mcdev.platform.bukkit.util.BukkitConstants +import com.demonwav.mcdev.platform.bukkit.util.PaperConstants import com.demonwav.mcdev.util.SourceType import com.demonwav.mcdev.util.addImplements import com.demonwav.mcdev.util.createVoidMethodWithParameterType @@ -54,6 +55,12 @@ override val moduleType: T = type + private val pluginParentClasses = listOf( + BukkitConstants.PLUGIN, + PaperConstants.PLUGIN_BOOTSTRAP, + PaperConstants.PLUGIN_LOADER, + ) + override fun isEventClassValid(eventClass: PsiClass, method: PsiMethod?) = BukkitConstants.EVENT_CLASS == eventClass.qualifiedName @@ -168,13 +175,24 @@ val psiClass = (identifier.uastParent as? UClass)?.javaPsi ?: return false - val pluginInterface = JavaPsiFacade.getInstance(element.project) - .findClass(BukkitConstants.PLUGIN, module.getModuleWithDependenciesAndLibrariesScope(false)) - ?: return false + if (psiClass.hasModifier(JvmModifier.ABSTRACT)) { + return false + } - return !psiClass.hasModifier(JvmModifier.ABSTRACT) && psiClass.isInheritor(pluginInterface, true) + val project = element.project + for (className in pluginParentClasses) { + val pluginInterface = JavaPsiFacade.getInstance(project) + .findClass(className, module.getModuleWithDependenciesAndLibrariesScope(false)) + ?: continue + + if (psiClass.isInheritor(pluginInterface, true)) { + return true - } + } + } + return false + } + override fun dispose() { super.dispose() Index: src/main/kotlin/platform/bukkit/util/PaperConstants.kt =================================================================== --- src/main/kotlin/platform/bukkit/util/PaperConstants.kt (revision 39ff9a1c2618f9fa72d6d8e193bc2dbf39043af6) +++ src/main/kotlin/platform/bukkit/util/PaperConstants.kt (revision 39ff9a1c2618f9fa72d6d8e193bc2dbf39043af6) @@ -0,0 +1,17 @@ +/* + * Minecraft Dev for IntelliJ + * + * https://minecraftdev.org + * + * Copyright (c) 2023 minecraft-dev + * + * MIT License + */ + +package com.demonwav.mcdev.platform.bukkit.util + +object PaperConstants { + + const val PLUGIN_BOOTSTRAP = "io.papermc.paper.plugin.bootstrap.PluginBootstrap" + const val PLUGIN_LOADER = "io.papermc.paper.plugin.loader.PluginLoader" +}