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 9b00f4c79..b1d770e57 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java @@ -235,10 +235,7 @@ public class HMCLGameRepository extends DefaultGameRepository { File iconFile = getVersionIconFile(id); if (iconFile.exists()) return new Image("file:" + iconFile.getAbsolutePath()); - else if (version.getMainClass() != null && - (LibraryAnalyzer.LAUNCH_WRAPPER_MAIN.equals(version.getMainClass()) - || version.getMainClass().startsWith("net.fabricmc") - || LibraryAnalyzer.MOD_LAUNCHER_MAIN.equals(version.getMainClass()))) + else if (LibraryAnalyzer.isModded(this, version)) return newImage("/assets/img/furnace.png"); else return newImage("/assets/img/grass.png"); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/LibraryAnalyzer.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/LibraryAnalyzer.java index d7f2ac419..26bb7ceb2 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/LibraryAnalyzer.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/LibraryAnalyzer.java @@ -19,6 +19,7 @@ package org.jackhuang.hmcl.download; import org.jackhuang.hmcl.game.Library; import org.jackhuang.hmcl.game.Version; +import org.jackhuang.hmcl.game.VersionProvider; import org.jackhuang.hmcl.util.Pair; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -84,6 +85,11 @@ public final class LibraryAnalyzer implements Iterable modLauncher.equals(patch.getMainClass())); } + public boolean hasBootstrapLauncher() { + final String bootstrapLauncher = "cpw.mods.bootstraplauncher.BootstrapLauncher"; + return bootstrapLauncher.equals(version.getMainClass()) || version.getPatches().stream().anyMatch(patch -> bootstrapLauncher.equals(patch.getMainClass())); + } + private Version removingMatchedLibrary(Version version, String libraryId) { LibraryType type = LibraryType.fromPatchId(libraryId); if (type == null) return version; @@ -141,10 +147,16 @@ public final class LibraryAnalyzer implements Iterable