From 0296b6f73d1e4371f5388073947ce3dbec330fba Mon Sep 17 00:00:00 2001 From: Glavo Date: Tue, 8 Jun 2021 18:54:27 +0800 Subject: [PATCH] fix: export modpack --- .../src/main/java/org/jackhuang/hmcl/Launcher.java | 14 ++++++++++---- .../hmcl/ui/export/ModpackFileSelectionPage.java | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java index 23623e28d..f7710acc5 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java @@ -36,6 +36,7 @@ import org.jackhuang.hmcl.util.platform.OperatingSystem; import java.awt.*; import java.io.File; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.lang.management.ManagementFactory; import java.net.*; import java.nio.file.Paths; @@ -160,10 +161,15 @@ public final class Launcher extends Application { return null; } } else { - File jarFile = new File(Launcher.class.getProtectionDomain().getCodeSource().getLocation().getPath()); - String ext = FileUtils.getExtension(jarFile); - if ("jar".equals(ext) || "exe".equals(ext)) - result.add(jarFile); + try { + File jarFile = new File(URLDecoder.decode(Launcher.class.getProtectionDomain().getCodeSource().getLocation().getPath(), "UTF-8")); + String ext = FileUtils.getExtension(jarFile); + if ("jar".equals(ext) || "exe".equals(ext)) + result.add(jarFile); + } catch (UnsupportedEncodingException e) { + LOG.log(Level.WARNING, "Failed to decode jar path", e); + return null; + } } if (result.isEmpty()) return null; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackFileSelectionPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackFileSelectionPage.java index 838f842b0..36715424b 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackFileSelectionPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackFileSelectionPage.java @@ -129,7 +129,7 @@ public final class ModpackFileSelectionPage extends StackPane implements WizardP private void getFilesNeeded(CheckBoxTreeItem node, String basePath, List list) { if (node == null) return; - if (node.isSelected()) { + if (node.isSelected() || node.isIndeterminate()) { if (basePath.length() > "minecraft/".length()) list.add(StringUtils.substringAfter(basePath, "minecraft/")); for (TreeItem child : node.getChildren()) {