User: kyle wood Date: 13 Jan 26 06:24 Revision: 68c2b9c18fcd53e93a2a7dd7d5a9c4bfcbbcc069 Summary: Fix Paper library detection TeamCity URL: http://ci.mcdev.io:80/viewModification.html?tab=vcsModificationFiles&modId=10386&personal=false Index: src/main/kotlin/platform/architectury/framework/ArchitecturyPresentationProvider.kt =================================================================== --- src/main/kotlin/platform/architectury/framework/ArchitecturyPresentationProvider.kt (revision 1dd31f2b5f0a8522cc6ecbf62e832f2723d73c0c) +++ src/main/kotlin/platform/architectury/framework/ArchitecturyPresentationProvider.kt (revision 68c2b9c18fcd53e93a2a7dd7d5a9c4bfcbbcc069) @@ -34,18 +34,16 @@ override fun detect(classesRoots: MutableList): LibraryVersionProperties? { for (classesRoot in classesRoots) { - if (classesRoot.name.endsWith(".jar")) { - runCatching { - val jar = JarFile(classesRoot.localFile) - val isArchitecturyLib = jar.entries().asSequence().any { - it.name == "architectury.common.json" + if (!classesRoot.name.endsWith(".jar")) { + continue - } + } - if (isArchitecturyLib) { + runCatching { + JarFile(classesRoot.localFile).use { jar -> + jar.getEntry("architectury.common.json") ?: return@runCatching - return LibraryVersionProperties() - } - } - } + return LibraryVersionProperties() + } + } + } - } return null } } Index: src/main/kotlin/platform/bukkit/framework/ModernPaperPresentationProvider.kt =================================================================== --- src/main/kotlin/platform/bukkit/framework/ModernPaperPresentationProvider.kt (revision 68c2b9c18fcd53e93a2a7dd7d5a9c4bfcbbcc069) +++ src/main/kotlin/platform/bukkit/framework/ModernPaperPresentationProvider.kt (revision 68c2b9c18fcd53e93a2a7dd7d5a9c4bfcbbcc069) @@ -0,0 +1,55 @@ +/* + * Minecraft Development for IntelliJ + * + * https://mcdev.io/ + * + * Copyright (C) 2025 minecraft-dev + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, version 3.0 only. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.demonwav.mcdev.platform.bukkit.framework + +import com.demonwav.mcdev.asset.PlatformAssets +import com.demonwav.mcdev.util.localFile +import com.google.gson.Gson +import com.intellij.framework.library.LibraryVersionProperties +import com.intellij.openapi.roots.libraries.LibraryPresentationProvider +import com.intellij.openapi.vfs.VirtualFile +import java.util.jar.JarFile + +class ModernPaperPresentationProvider : LibraryPresentationProvider(PAPER_LIBRARY_KIND) { + + override fun getIcon(properties: LibraryVersionProperties?) = PlatformAssets.PAPER_ICON + + override fun detect(classesRoots: List): LibraryVersionProperties? { + for (classesRoot in classesRoots) { + if (!classesRoot.name.endsWith(".jar")) { + continue + } + runCatching { + JarFile(classesRoot.localFile).use { jar -> + jar.getEntry("io/papermc/paper/ServerBuildInfo.class") ?: return@runCatching + val versionJson = jar.getEntry("apiVersioning.json") ?: return@runCatching + jar.getInputStream(versionJson).use { stream -> + stream.reader().use { reader -> + val map = Gson().fromJson(reader, Map::class.java) + return LibraryVersionProperties(map["currentApiVersion"] as String) + } + } + } + } + } + return null + } +} Index: src/main/kotlin/platform/fabric/framework/FabricPresentationProvider.kt =================================================================== --- src/main/kotlin/platform/fabric/framework/FabricPresentationProvider.kt (revision 1dd31f2b5f0a8522cc6ecbf62e832f2723d73c0c) +++ src/main/kotlin/platform/fabric/framework/FabricPresentationProvider.kt (revision 68c2b9c18fcd53e93a2a7dd7d5a9c4bfcbbcc069) @@ -33,18 +33,16 @@ override fun detect(classesRoots: MutableList): LibraryVersionProperties? { for (classesRoot in classesRoots) { - if (classesRoot.name.endsWith(".jar")) { - runCatching { - val jar = JarFile(classesRoot.localFile) - val isFabricLib = jar.entries().asSequence().any { - it.name == "net/fabricmc/loader/api/FabricLoader.class" + if (!classesRoot.name.endsWith(".jar")) { + continue - } + } - if (isFabricLib) { + runCatching { + JarFile(classesRoot.localFile).use { jar -> + jar.getEntry("net/fabricmc/loader/api/FabricLoader.class") ?: return@runCatching - return LibraryVersionProperties() - } - } - } + return LibraryVersionProperties() + } + } + } - } return null } } Index: src/main/resources/META-INF/plugin.xml =================================================================== --- src/main/resources/META-INF/plugin.xml (revision 1dd31f2b5f0a8522cc6ecbf62e832f2723d73c0c) +++ src/main/resources/META-INF/plugin.xml (revision 68c2b9c18fcd53e93a2a7dd7d5a9c4bfcbbcc069) @@ -520,6 +520,9 @@ implementation="com.demonwav.mcdev.platform.bukkit.framework.OldPaperPresentationProvider"/> + +