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 97a1cbb01da..8d70deada7e 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..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,6 +18,7 @@ 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.*; @@ -681,30 +682,16 @@ 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 == 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)) { 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/modpack/mcbbs/McbbsModpackExportTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/modpack/mcbbs/McbbsModpackExportTask.java index 1d20256ffcc..a53dc47dd31 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/modpack/mcbbs/McbbsModpackExportTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/modpack/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