From b323033ed8ebb80df29fc941659d341d6995fc7b Mon Sep 17 00:00:00 2001 From: burningtnt Date: Tue, 17 Jun 2025 18:52:01 +0800 Subject: [PATCH] Feature: Remove MultiMC Modpack Export Feature. --- .../hmcl/ui/construct/TaskListPane.java | 3 +- .../hmcl/ui/export/ExportWizardProvider.java | 51 --------- .../ui/export/ModpackTypeSelectionPage.java | 3 - .../mod/multimc/MultiMCModpackExportTask.java | 100 ------------------ 4 files changed, 1 insertion(+), 156 deletions(-) delete mode 100644 HMCLCore/src/main/java/org/jackhuang/hmcl/mod/multimc/MultiMCModpackExportTask.java diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TaskListPane.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TaskListPane.java index 5dd49938a..9eae471bb 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TaskListPane.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TaskListPane.java @@ -52,7 +52,6 @@ import org.jackhuang.hmcl.mod.mcbbs.McbbsModpackCompletionTask; import org.jackhuang.hmcl.mod.mcbbs.McbbsModpackExportTask; import org.jackhuang.hmcl.mod.modrinth.ModrinthCompletionTask; import org.jackhuang.hmcl.mod.modrinth.ModrinthInstallTask; -import org.jackhuang.hmcl.mod.multimc.MultiMCModpackExportTask; import org.jackhuang.hmcl.mod.multimc.MultiMCModpackInstallTask; import org.jackhuang.hmcl.mod.server.ServerModpackCompletionTask; import org.jackhuang.hmcl.mod.server.ServerModpackExportTask; @@ -156,7 +155,7 @@ public final class TaskListPane extends StackPane { task.setName(i18n("install.installing") + ": " + i18n("modpack.type.server")); } else if (task instanceof HMCLModpackInstallTask) { task.setName(i18n("modpack.installing.given", i18n("modpack.type.hmcl"))); - } else if (task instanceof McbbsModpackExportTask || task instanceof MultiMCModpackExportTask || task instanceof ServerModpackExportTask) { + } else if (task instanceof McbbsModpackExportTask || task instanceof ServerModpackExportTask) { task.setName(i18n("modpack.export")); } else if (task instanceof MinecraftInstanceTask) { task.setName(i18n("modpack.scan")); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ExportWizardProvider.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ExportWizardProvider.java index fdd98debb..c95538b75 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ExportWizardProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ExportWizardProvider.java @@ -22,18 +22,14 @@ import org.jackhuang.hmcl.Metadata; import org.jackhuang.hmcl.mod.ModAdviser; import org.jackhuang.hmcl.mod.ModpackExportInfo; import org.jackhuang.hmcl.mod.mcbbs.McbbsModpackExportTask; -import org.jackhuang.hmcl.mod.multimc.MultiMCInstanceConfiguration; -import org.jackhuang.hmcl.mod.multimc.MultiMCModpackExportTask; import org.jackhuang.hmcl.mod.server.ServerModpackExportTask; import org.jackhuang.hmcl.setting.Config; import org.jackhuang.hmcl.setting.FontManager; import org.jackhuang.hmcl.setting.Profile; -import org.jackhuang.hmcl.setting.VersionSetting; import org.jackhuang.hmcl.task.Task; import org.jackhuang.hmcl.ui.FXUtils; import org.jackhuang.hmcl.ui.wizard.WizardController; import org.jackhuang.hmcl.ui.wizard.WizardProvider; -import org.jackhuang.hmcl.util.Lang; import org.jackhuang.hmcl.util.io.JarUtils; import org.jackhuang.hmcl.util.io.Zipper; @@ -94,9 +90,6 @@ public final class ExportWizardProvider implements WizardProvider { case ModpackTypeSelectionPage.MODPACK_TYPE_MCBBS: exportTask = exportAsMcbbs(exportInfo, dest); break; - case ModpackTypeSelectionPage.MODPACK_TYPE_MULTIMC: - exportTask = exportAsMultiMC(exportInfo, dest); - break; case ModpackTypeSelectionPage.MODPACK_TYPE_SERVER: exportTask = exportAsServer(exportInfo, dest); break; @@ -173,50 +166,6 @@ public final class ExportWizardProvider implements WizardProvider { }; } - private Task exportAsMultiMC(ModpackExportInfo exportInfo, File modpackFile) { - return new Task() { - Task dependency; - - @Override - public void execute() { - VersionSetting vs = profile.getVersionSetting(version); - dependency = new MultiMCModpackExportTask(profile.getRepository(), version, exportInfo.getWhitelist(), - new MultiMCInstanceConfiguration( - "OneSix", - exportInfo.getName() + "-" + exportInfo.getVersion(), - null, - Lang.toIntOrNull(vs.getPermSize()), - vs.getWrapper(), - vs.getPreLaunchCommand(), - null, - exportInfo.getDescription(), - null, - exportInfo.getJavaArguments(), - vs.isFullscreen(), - vs.getWidth(), - vs.getHeight(), - vs.getMaxMemory(), - exportInfo.getMinMemory(), - vs.isShowLogs(), - /* showConsoleOnError */ true, - /* autoCloseConsole */ false, - /* overrideMemory */ true, - /* overrideJavaLocation */ false, - /* overrideJavaArgs */ true, - /* overrideConsole */ true, - /* overrideCommands */ true, - /* overrideWindow */ true, - /* iconKey */ null // TODO - ), modpackFile); - } - - @Override - public Collection> getDependencies() { - return Collections.singleton(dependency); - } - }; - } - private Task exportAsServer(ModpackExportInfo exportInfo, File modpackFile) { return new Task() { Task dependency; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackTypeSelectionPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackTypeSelectionPage.java index b29542575..3d7f8775e 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackTypeSelectionPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackTypeSelectionPage.java @@ -26,7 +26,6 @@ import javafx.scene.layout.VBox; import javafx.scene.shape.SVGPath; import org.jackhuang.hmcl.mod.ModpackExportInfo; import org.jackhuang.hmcl.mod.mcbbs.McbbsModpackExportTask; -import org.jackhuang.hmcl.mod.multimc.MultiMCModpackExportTask; import org.jackhuang.hmcl.mod.server.ServerModpackExportTask; import org.jackhuang.hmcl.ui.SVG; import org.jackhuang.hmcl.ui.construct.TwoLineListItem; @@ -55,7 +54,6 @@ public final class ModpackTypeSelectionPage extends VBox implements WizardPage { this.getChildren().setAll( title, createButton(MODPACK_TYPE_MCBBS, McbbsModpackExportTask.OPTION), - createButton(MODPACK_TYPE_MULTIMC, MultiMCModpackExportTask.OPTION), createButton(MODPACK_TYPE_SERVER, ServerModpackExportTask.OPTION) ); } @@ -98,6 +96,5 @@ public final class ModpackTypeSelectionPage extends VBox implements WizardPage { public static final String MODPACK_TYPE = "modpack.type"; public static final String MODPACK_TYPE_MCBBS = "mcbbs"; - public static final String MODPACK_TYPE_MULTIMC = "multimc"; public static final String MODPACK_TYPE_SERVER = "server"; } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/multimc/MultiMCModpackExportTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/multimc/MultiMCModpackExportTask.java deleted file mode 100644 index 93670a4d5..000000000 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/multimc/MultiMCModpackExportTask.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Hello Minecraft! Launcher - * Copyright (C) 2020 huangyuhui and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * 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 General Public License - * along with this program. If not, see . - */ -package org.jackhuang.hmcl.mod.multimc; - -import org.jackhuang.hmcl.download.LibraryAnalyzer; -import org.jackhuang.hmcl.game.DefaultGameRepository; -import org.jackhuang.hmcl.mod.ModAdviser; -import org.jackhuang.hmcl.mod.Modpack; -import org.jackhuang.hmcl.mod.ModpackExportInfo; -import org.jackhuang.hmcl.task.Task; -import org.jackhuang.hmcl.util.gson.JsonUtils; -import org.jackhuang.hmcl.util.io.Zipper; - -import java.io.File; -import java.io.IOException; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import static org.jackhuang.hmcl.download.LibraryAnalyzer.LibraryType.*; -import static org.jackhuang.hmcl.util.logging.Logger.LOG; - -/** - * Export the game to a mod pack file. - */ -public class MultiMCModpackExportTask extends Task { - private final DefaultGameRepository repository; - private final String versionId; - private final List whitelist; - private final MultiMCInstanceConfiguration configuration; - private final File output; - - /** - * @param output mod pack file. - * @param versionId to locate version.json - */ - public MultiMCModpackExportTask(DefaultGameRepository repository, String versionId, List whitelist, MultiMCInstanceConfiguration configuration, File output) { - this.repository = repository; - this.versionId = versionId; - this.whitelist = whitelist; - this.configuration = configuration; - this.output = output; - - onDone().register(event -> { - if (event.isFailed()) output.delete(); - }); - } - - @Override - public void execute() throws Exception { - ArrayList blackList = new ArrayList<>(ModAdviser.MODPACK_BLACK_LIST); - blackList.add(versionId + ".jar"); - blackList.add(versionId + ".json"); - LOG.info("Compressing game files without some files in blacklist, including files or directories: usernamecache.json, asm, logs, backups, versions, assets, usercache.json, libraries, crash-reports, launcher_profiles.json, NVIDIA, TCNodeTracker"); - try (Zipper zip = new Zipper(output.toPath())) { - zip.putDirectory(repository.getRunDirectory(versionId).toPath(), ".minecraft", path -> Modpack.acceptFile(path, blackList, whitelist)); - - String gameVersion = repository.getGameVersion(versionId) - .orElseThrow(() -> new IOException("Cannot parse the version of " + versionId)); - LibraryAnalyzer analyzer = LibraryAnalyzer.analyze(repository.getResolvedPreservingPatchesVersion(versionId), gameVersion); - List components = new ArrayList<>(); - components.add(new MultiMCManifest.MultiMCManifestComponent(true, false, MultiMCComponents.getComponent(MINECRAFT), gameVersion)); - - for (Map.Entry pair : MultiMCComponents.getPairs()) { - if (pair.getValue().isModLoader()) { - analyzer.getVersion(pair.getValue()).ifPresent( - v -> components.add(new MultiMCManifest.MultiMCManifestComponent(false, false, pair.getKey(), v)) - ); - } - } - - MultiMCManifest mmcPack = new MultiMCManifest(1, components); - zip.putTextFile(JsonUtils.GSON.toJson(mmcPack), "mmc-pack.json"); - - StringWriter writer = new StringWriter(); - configuration.toProperties().store(writer, "Auto generated by Hello Minecraft! Launcher"); - zip.putTextFile(writer.toString(), "instance.cfg"); - - zip.putTextFile("", ".packignore"); - } - } - - public static final ModpackExportInfo.Options OPTION = new ModpackExportInfo.Options().requireMinMemory(); -}