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())