diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java index 5a095fb10..a859aa284 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java @@ -41,6 +41,7 @@ import org.jackhuang.hmcl.util.io.FileUtils; import org.jackhuang.hmcl.java.JavaRuntime; import org.jackhuang.hmcl.util.platform.OperatingSystem; import org.jackhuang.hmcl.util.platform.SystemInfo; +import org.jackhuang.hmcl.util.versioning.GameVersionNumber; import org.jackhuang.hmcl.util.versioning.VersionNumber; import org.jetbrains.annotations.Nullable; @@ -318,23 +319,32 @@ public final class HMCLGameRepository extends DefaultGameRepository { LibraryAnalyzer libraryAnalyzer = LibraryAnalyzer.analyze(version, null); if (libraryAnalyzer.has(LibraryAnalyzer.LibraryType.FABRIC)) return VersionIconType.FABRIC.getIcon(); + else if (libraryAnalyzer.has(LibraryAnalyzer.LibraryType.QUILT)) + return VersionIconType.QUILT.getIcon(); + else if (libraryAnalyzer.has(LibraryAnalyzer.LibraryType.NEO_FORGE)) + return VersionIconType.NEO_FORGE.getIcon(); else if (libraryAnalyzer.has(LibraryAnalyzer.LibraryType.FORGE)) return VersionIconType.FORGE.getIcon(); else if (libraryAnalyzer.has(LibraryAnalyzer.LibraryType.CLEANROOM)) return VersionIconType.CLEANROOM.getIcon(); - else if (libraryAnalyzer.has(LibraryAnalyzer.LibraryType.NEO_FORGE)) - return VersionIconType.NEO_FORGE.getIcon(); - else if (libraryAnalyzer.has(LibraryAnalyzer.LibraryType.QUILT)) - return VersionIconType.QUILT.getIcon(); - else if (libraryAnalyzer.has(LibraryAnalyzer.LibraryType.OPTIFINE)) - return VersionIconType.OPTIFINE.getIcon(); else if (libraryAnalyzer.has(LibraryAnalyzer.LibraryType.LITELOADER)) return VersionIconType.CHICKEN.getIcon(); - else - return VersionIconType.FURNACE.getIcon(); + else if (libraryAnalyzer.has(LibraryAnalyzer.LibraryType.OPTIFINE)) + return VersionIconType.OPTIFINE.getIcon(); } - return VersionIconType.DEFAULT.getIcon(); + String gameVersion = getGameVersion(version).orElse(null); + if (gameVersion != null) { + GameVersionNumber versionNumber = GameVersionNumber.asGameVersion(gameVersion); + if (versionNumber.isAprilFools()) { + return VersionIconType.APRIL_FOOLS.getIcon(); + } else if (versionNumber instanceof GameVersionNumber.Snapshot) { + return VersionIconType.COMMAND.getIcon(); + } else if (versionNumber instanceof GameVersionNumber.Old) { + return VersionIconType.CRAFT_TABLE.getIcon(); + } + } + return VersionIconType.GRASS.getIcon(); } else { return iconType.getIcon(); }