diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/ModpackInstallWizardProvider.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/ModpackInstallWizardProvider.java index bd6a40012d..ddb2552628 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/ModpackInstallWizardProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/ModpackInstallWizardProvider.java @@ -145,20 +145,31 @@ public Object finish(SettingsMap settings) { return finishModpackInstallingAsync(settings); } + private static Node createModpackInstallPage(WizardController controller) { + if (controller.getSettings().containsKey(LocalModpackPage.MODPACK_FILE)) + return new LocalModpackPage(controller); + else if (controller.getSettings().containsKey(RemoteModpackPage.MODPACK_SERVER_MANIFEST)) + return new RemoteModpackPage(controller); + else + throw new IllegalArgumentException(); + } + @Override public Node createPage(WizardController controller, int step, SettingsMap settings) { - switch (step) { - case 0: - return new ModpackSelectionPage(controller); - case 1: - if (controller.getSettings().containsKey(LocalModpackPage.MODPACK_FILE)) - return new LocalModpackPage(controller); - else if (controller.getSettings().containsKey(RemoteModpackPage.MODPACK_SERVER_MANIFEST)) - return new RemoteModpackPage(controller); - else - throw new IllegalArgumentException(); - default: - throw new IllegalStateException("error step " + step + ", settings: " + settings + ", pages: " + controller.getPages()); + boolean hasSource = controller.getSettings().containsKey(LocalModpackPage.MODPACK_FILE) || settings.containsKey(RemoteModpackPage.MODPACK_SERVER_MANIFEST); + if (hasSource) { + return switch (step) { + case 0 -> createModpackInstallPage(controller); + default -> throw new IllegalStateException( + "error step " + step + ", settings: " + settings + ", pages: " + controller.getPages()); + }; + } else { + return switch (step) { + case 0 -> new ModpackSelectionPage(controller); + case 1 -> createModpackInstallPage(controller); + default -> throw new IllegalStateException( + "error step " + step + ", settings: " + settings + ", pages: " + controller.getPages()); + }; } }