From 6fd6022210f1ff26a408ca3e44d2b8409447c069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=9E=E5=BA=90?= <109708109+CiiLu@users.noreply.github.com> Date: Thu, 15 Jan 2026 23:53:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=B8=A6=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E5=99=A8=20Modrinth=20=E6=95=B4=E5=90=88=E5=8C=85=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=20zip=20=E6=A0=BC=E5=BC=8F=20&=20=E5=86=85=E9=83=A8?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=20mrpack=20(#5195)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Glavo --- .../hmcl/ui/export/ExportWizardProvider.java | 18 +++++++++++------- .../hmcl/ui/export/ModpackInfoPage.java | 2 +- .../org/jackhuang/hmcl/ui/main/RootPage.java | 18 ++++++++++++++---- 3 files changed, 26 insertions(+), 12 deletions(-) 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 eac1a55a5..54bcadbb1 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,10 +22,10 @@ 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.modrinth.ModrinthModpackExportTask; 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.mod.modrinth.ModrinthModpackExportTask; import org.jackhuang.hmcl.setting.Config; import org.jackhuang.hmcl.setting.FontManager; import org.jackhuang.hmcl.setting.Profile; @@ -41,7 +41,9 @@ import org.jackhuang.hmcl.util.io.Zipper; import java.nio.file.Files; import java.nio.file.Path; -import java.util.*; +import java.util.Collection; +import java.util.Collections; +import java.util.List; import static org.jackhuang.hmcl.setting.ConfigHolder.config; @@ -132,7 +134,9 @@ public final class ExportWizardProvider implements WizardProvider { exported.getAuthlibInjectorServers().setAll(config().getAuthlibInjectorServers()); zip.putTextFile(exported.toJson(), ".hmcl/hmcl.json"); - zip.putFile(tempModpack, "modpack.zip"); + zip.putFile(tempModpack, ModpackTypeSelectionPage.MODPACK_TYPE_MODRINTH.equals(modpackType) + ? "modpack.mrpack" + : "modpack.zip"); Path bg = Metadata.HMCL_CURRENT_DIRECTORY.resolve("background"); if (!Files.isDirectory(bg)) @@ -263,10 +267,10 @@ public final class ExportWizardProvider implements WizardProvider { @Override public void execute() { dependency = new ModrinthModpackExportTask( - profile.getRepository(), - version, - exportInfo, - modpackFile + profile.getRepository(), + version, + exportInfo, + modpackFile ); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackInfoPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackInfoPage.java index 59ccf6191..222f6bd2f 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackInfoPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackInfoPage.java @@ -109,7 +109,7 @@ public final class ModpackInfoPage extends Control implements WizardPage { private void onNext() { FileChooser fileChooser = new FileChooser(); fileChooser.setTitle(i18n("modpack.wizard.step.initialization.save")); - if (controller.getSettings().get(MODPACK_TYPE) == MODPACK_TYPE_MODRINTH) { + if (!packWithLauncher.get() && controller.getSettings().get(MODPACK_TYPE) == MODPACK_TYPE_MODRINTH) { fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter(i18n("modpack"), "*.mrpack")); fileChooser.setInitialFileName(name.get() + (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS ? "" : ".mrpack")); } else { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/RootPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/RootPage.java index b37952862..22f3d97ca 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/RootPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/RootPage.java @@ -293,11 +293,21 @@ public class RootPage extends DecoratorAnimatedPage implements DecoratorPage { checkedModpack = true; if (repository.getVersionCount() == 0) { - Path modpackFile = Metadata.CURRENT_DIRECTORY.resolve("modpack.zip"); - if (Files.exists(modpackFile)) { + Path zipModpack = Metadata.CURRENT_DIRECTORY.resolve("modpack.zip"); + Path mrpackModpack = Metadata.CURRENT_DIRECTORY.resolve("modpack.mrpack"); + + Path modpackFile; + if (Files.exists(zipModpack)) { + modpackFile = zipModpack; + } else if (Files.exists(mrpackModpack)) { + modpackFile = mrpackModpack; + } else { + modpackFile = null; + } + + if (modpackFile != null) { Task.supplyAsync(() -> CompressingUtils.findSuitableEncoding(modpackFile)) - .thenApplyAsync( - encoding -> ModpackHelper.readModpackManifest(modpackFile, encoding)) + .thenApplyAsync(encoding -> ModpackHelper.readModpackManifest(modpackFile, encoding)) .thenApplyAsync(modpack -> ModpackHelper .getInstallTask(repository.getProfile(), modpackFile, modpack.getName(), modpack, null) .executor())