From bb6e48d4d9117f398d46ce520a6b0a927f692182 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=9E=E5=BA=90?= <109708109+CiiLu@users.noreply.github.com> Date: Fri, 19 Jun 2026 16:18:58 +0800 Subject: [PATCH 1/3] qwq --- .../hmcl/download/LibraryAnalyzer.java | 6 ++++ .../hmcl/launch/DefaultLauncher.java | 24 +++----------- .../org/jackhuang/hmcl/mod/ModLoaderType.java | 31 ++++++++++++++----- .../mod/mcbbs/McbbsModpackExportTask.java | 20 +++--------- 4 files changed, 37 insertions(+), 44 deletions(-) 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 16c6463108a..1f53368fd1c 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/LibraryAnalyzer.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/LibraryAnalyzer.java @@ -178,6 +178,12 @@ public static boolean isModded(VersionProvider provider, Version version) { || mainClass.startsWith("cpw.mods")); } + public Set getLibraries() { + return Arrays.stream(LibraryType.values()) + .filter(this::has) + .collect(Collectors.toSet()); + } + public Set getModLoaders() { return Arrays.stream(LibraryType.values()) .filter(LibraryType::isModLoader) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java index b020cecb382..b340a1df93e 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -21,6 +21,7 @@ import org.jackhuang.hmcl.auth.AuthInfo; import org.jackhuang.hmcl.download.LibraryAnalyzer; import org.jackhuang.hmcl.game.*; +import org.jackhuang.hmcl.mod.ModLoaderType; import org.jackhuang.hmcl.util.Lang; import org.jackhuang.hmcl.util.ServerAddress; import org.jackhuang.hmcl.util.StringUtils; @@ -681,30 +682,13 @@ else if (driver instanceof Renderer.Vulkan vulkanDriver) { } } - if (analyzer.has(LibraryAnalyzer.LibraryType.FORGE)) { - env.put("INST_FORGE", "1"); - } - if (analyzer.has(LibraryAnalyzer.LibraryType.CLEANROOM)) { - env.put("INST_CLEANROOM", "1"); - } - if (analyzer.has(LibraryAnalyzer.LibraryType.NEO_FORGE)) { - env.put("INST_NEOFORGE", "1"); - } - if (analyzer.has(LibraryAnalyzer.LibraryType.LITELOADER)) { - env.put("INST_LITELOADER", "1"); - } - if (analyzer.has(LibraryAnalyzer.LibraryType.FABRIC)) { - env.put("INST_FABRIC", "1"); + for (ModLoaderType type : analyzer.getModLoaders()) { + if (type.getId() != null) env.put("INST_" + type.getId(), "1"); } + if (analyzer.has(LibraryAnalyzer.LibraryType.OPTIFINE)) { env.put("INST_OPTIFINE", "1"); } - if (analyzer.has(LibraryAnalyzer.LibraryType.QUILT)) { - env.put("INST_QUILT", "1"); - } - if (analyzer.has(LibraryAnalyzer.LibraryType.LEGACY_FABRIC)) { - env.put("INST_LEGACYFABRIC", "1"); - } env.putAll(options.getEnvironmentVariables()); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/ModLoaderType.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/ModLoaderType.java index 9dcf7c00305..67381d2af57 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/ModLoaderType.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/ModLoaderType.java @@ -17,13 +17,28 @@ */ package org.jackhuang.hmcl.mod; +import org.jetbrains.annotations.Nullable; + public enum ModLoaderType { - UNKNOWN, - FORGE, - CLEANROOM, - NEO_FORGE, - FABRIC, - QUILT, - LITE_LOADER, - LEGACY_FABRIC + UNKNOWN(null), + FORGE("FORGE"), + CLEANROOM("CLEANROOM"), + NEO_FORGE("NEOFORGE"), + FABRIC("FABRIC"), + QUILT("QUILT"), + LITE_LOADER("LITELOADER"), + LEGACY_FABRIC("LEGACYFABRIC"), + PACK(null); + + @Nullable + private final String id; + + ModLoaderType(@Nullable String id) { + this.id = id; + } + + @Nullable + public String getId() { + return id; + } } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/mcbbs/McbbsModpackExportTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/mcbbs/McbbsModpackExportTask.java index 2f8eccd2ae7..95792b1b5eb 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/mcbbs/McbbsModpackExportTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/mcbbs/McbbsModpackExportTask.java @@ -95,22 +95,10 @@ public void execute() throws Exception { // Mcbbs manifest List addons = new ArrayList<>(); addons.add(new McbbsModpackManifest.Addon(MINECRAFT.getPatchId(), gameVersion)); - analyzer.getVersion(FORGE).ifPresent(forgeVersion -> - addons.add(new McbbsModpackManifest.Addon(FORGE.getPatchId(), forgeVersion))); - analyzer.getVersion(CLEANROOM).ifPresent(cleanroomVersion -> - addons.add(new McbbsModpackManifest.Addon(CLEANROOM.getPatchId(), cleanroomVersion))); - analyzer.getVersion(NEO_FORGE).ifPresent(neoForgeVersion -> - addons.add(new McbbsModpackManifest.Addon(NEO_FORGE.getPatchId(), neoForgeVersion))); - analyzer.getVersion(LITELOADER).ifPresent(liteLoaderVersion -> - addons.add(new McbbsModpackManifest.Addon(LITELOADER.getPatchId(), liteLoaderVersion))); - analyzer.getVersion(OPTIFINE).ifPresent(optifineVersion -> - addons.add(new McbbsModpackManifest.Addon(OPTIFINE.getPatchId(), optifineVersion))); - analyzer.getVersion(FABRIC).ifPresent(fabricVersion -> - addons.add(new McbbsModpackManifest.Addon(FABRIC.getPatchId(), fabricVersion))); - analyzer.getVersion(QUILT).ifPresent(quiltVersion -> - addons.add(new McbbsModpackManifest.Addon(QUILT.getPatchId(), quiltVersion))); - analyzer.getVersion(LEGACY_FABRIC).ifPresent(legacyfabricVersion -> - addons.add(new McbbsModpackManifest.Addon(LEGACY_FABRIC.getPatchId(), legacyfabricVersion))); + for (LibraryAnalyzer.LibraryType type : analyzer.getLibraries()) { + if (type == BOOTSTRAP_LAUNCHER || type == MINECRAFT) continue; + else addons.add(new McbbsModpackManifest.Addon(type.getPatchId(), analyzer.getVersion(type).orElseThrow())); + } List libraries = new ArrayList<>(); // TODO libraries From f31eef16ff5bbf0e0245ae77c685a33a8e02f71f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=9E=E5=BA=90?= <109708109+CiiLu@users.noreply.github.com> Date: Fri, 19 Jun 2026 16:23:01 +0800 Subject: [PATCH 2/3] qwq --- .../hmcl/launch/DefaultLauncher.java | 5 ++- .../org/jackhuang/hmcl/mod/ModLoaderType.java | 31 +++++-------------- 2 files changed, 12 insertions(+), 24 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java index b340a1df93e..9c7a111d814 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -683,7 +683,10 @@ else if (driver instanceof Renderer.Vulkan vulkanDriver) { } for (ModLoaderType type : analyzer.getModLoaders()) { - if (type.getId() != null) env.put("INST_" + type.getId(), "1"); + if (type == ModLoaderType.NEO_FORGE) env.put("INST_NEOFORGE", "1"); + else if (type == ModLoaderType.LEGACY_FABRIC) env.put("INST_LEGACYFABRIC", "1"); + else if (type == ModLoaderType.LITE_LOADER) env.put("INST_LITELOADER", "1"); + else env.put("INST_" + type.name().toUpperCase(Locale.ROOT), "1"); } if (analyzer.has(LibraryAnalyzer.LibraryType.OPTIFINE)) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/ModLoaderType.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/ModLoaderType.java index 67381d2af57..9dcf7c00305 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/ModLoaderType.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/ModLoaderType.java @@ -17,28 +17,13 @@ */ package org.jackhuang.hmcl.mod; -import org.jetbrains.annotations.Nullable; - public enum ModLoaderType { - UNKNOWN(null), - FORGE("FORGE"), - CLEANROOM("CLEANROOM"), - NEO_FORGE("NEOFORGE"), - FABRIC("FABRIC"), - QUILT("QUILT"), - LITE_LOADER("LITELOADER"), - LEGACY_FABRIC("LEGACYFABRIC"), - PACK(null); - - @Nullable - private final String id; - - ModLoaderType(@Nullable String id) { - this.id = id; - } - - @Nullable - public String getId() { - return id; - } + UNKNOWN, + FORGE, + CLEANROOM, + NEO_FORGE, + FABRIC, + QUILT, + LITE_LOADER, + LEGACY_FABRIC } From 60659caa1d018d649f13a6c5682355f4506ca72c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=9E=E5=BA=90?= <109708109+CiiLu@users.noreply.github.com> Date: Sat, 27 Jun 2026 21:25:53 +0800 Subject: [PATCH 3/3] qwq --- .../main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java index 9c7a111d814..3ab1c7987d0 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -18,10 +18,10 @@ package org.jackhuang.hmcl.launch; import org.glavo.uuid.UUIDs; +import org.jackhuang.hmcl.addon.mod.ModLoaderType; import org.jackhuang.hmcl.auth.AuthInfo; import org.jackhuang.hmcl.download.LibraryAnalyzer; import org.jackhuang.hmcl.game.*; -import org.jackhuang.hmcl.mod.ModLoaderType; import org.jackhuang.hmcl.util.Lang; import org.jackhuang.hmcl.util.ServerAddress; import org.jackhuang.hmcl.util.StringUtils;