From cd65820daf937f437d0f9492dc9b93ab6e0be3f5 Mon Sep 17 00:00:00 2001 From: Ciilu <109708109+Ciilu@users.noreply.github.com> Date: Sat, 24 Jan 2026 09:34:35 +0800 Subject: [PATCH 1/4] update --- .../hmcl/ui/versions/VersionPage.java | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java index 7ea91bacb83..fdbf570c677 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java @@ -30,6 +30,9 @@ import org.jackhuang.hmcl.game.GameRepository; import org.jackhuang.hmcl.game.HMCLGameRepository; import org.jackhuang.hmcl.setting.Profile; +import org.jackhuang.hmcl.task.Schedulers; +import org.jackhuang.hmcl.task.Task; +import org.jackhuang.hmcl.ui.Controllers; import org.jackhuang.hmcl.ui.FXUtils; import org.jackhuang.hmcl.ui.SVG; import org.jackhuang.hmcl.ui.WeakListenerHolder; @@ -37,6 +40,7 @@ import org.jackhuang.hmcl.ui.construct.*; import org.jackhuang.hmcl.ui.decorator.DecoratorAnimatedPage; import org.jackhuang.hmcl.ui.decorator.DecoratorPage; +import org.jackhuang.hmcl.util.StringUtils; import org.jackhuang.hmcl.util.io.FileUtils; import java.util.Optional; @@ -162,15 +166,27 @@ private void redownloadAssetIndex() { } private void clearLibraries() { - FileUtils.deleteDirectoryQuietly(getProfile().getRepository().getBaseDirectory().resolve("libraries")); + Task.runAsync(Schedulers.io(), () -> { + FileUtils.deleteDirectoryQuietly(getProfile().getRepository().getBaseDirectory().resolve("libraries")); + }).whenComplete(Schedulers.javafx(), (exception) -> { + if (exception != null) { + Controllers.dialog(i18n("message.failed") + StringUtils.getStackTrace(exception), i18n("message.error"), MessageDialogPane.MessageType.ERROR); + } + }).start(); } private void clearAssets() { - HMCLGameRepository baseDirectory = getProfile().getRepository(); - FileUtils.deleteDirectoryQuietly(baseDirectory.getBaseDirectory().resolve("assets")); - if (version.get() != null) { - FileUtils.deleteDirectoryQuietly(baseDirectory.getRunDirectory(version.get().getVersion()).resolve("resources")); - } + Task.runAsync(Schedulers.io(), () -> { + HMCLGameRepository baseDirectory = getProfile().getRepository(); + FileUtils.deleteDirectoryQuietly(baseDirectory.getBaseDirectory().resolve("assets")); + if (version.get() != null) { + FileUtils.deleteDirectoryQuietly(baseDirectory.getRunDirectory(version.get().getVersion()).resolve("resources")); + } + }).whenComplete(Schedulers.javafx(), (exception) -> { + if (exception != null) { + Controllers.dialog(i18n("message.failed") + StringUtils.getStackTrace(exception), i18n("message.error"), MessageDialogPane.MessageType.ERROR); + } + }).start(); } private void clearJunkFiles() { From 71418acf104fa23905cab5ac6e65ad7c4ca824cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=9E=E5=BA=90?= <109708109+Ciilu@users.noreply.github.com> Date: Wed, 25 Mar 2026 21:54:40 +0800 Subject: [PATCH 2/4] update --- .../java/org/jackhuang/hmcl/ui/versions/VersionPage.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java index fdbf570c677..9c9958d24dc 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java @@ -166,8 +166,9 @@ private void redownloadAssetIndex() { } private void clearLibraries() { + var libraries = getProfile().getRepository().getBaseDirectory().resolve("libraries"); Task.runAsync(Schedulers.io(), () -> { - FileUtils.deleteDirectoryQuietly(getProfile().getRepository().getBaseDirectory().resolve("libraries")); + FileUtils.deleteDirectoryQuietly(libraries); }).whenComplete(Schedulers.javafx(), (exception) -> { if (exception != null) { Controllers.dialog(i18n("message.failed") + StringUtils.getStackTrace(exception), i18n("message.error"), MessageDialogPane.MessageType.ERROR); @@ -176,15 +177,15 @@ private void clearLibraries() { } private void clearAssets() { + HMCLGameRepository baseDirectory = getProfile().getRepository(); Task.runAsync(Schedulers.io(), () -> { - HMCLGameRepository baseDirectory = getProfile().getRepository(); FileUtils.deleteDirectoryQuietly(baseDirectory.getBaseDirectory().resolve("assets")); if (version.get() != null) { FileUtils.deleteDirectoryQuietly(baseDirectory.getRunDirectory(version.get().getVersion()).resolve("resources")); } }).whenComplete(Schedulers.javafx(), (exception) -> { if (exception != null) { - Controllers.dialog(i18n("message.failed") + StringUtils.getStackTrace(exception), i18n("message.error"), MessageDialogPane.MessageType.ERROR); + Controllers.dialog(i18n("message.failed") + "\n" + StringUtils.getStackTrace(exception), i18n("message.error"), MessageDialogPane.MessageType.ERROR); } }).start(); } From 1eb9227fa886e1ccd88f67319562f461a770cce1 Mon Sep 17 00:00:00 2001 From: Glavo Date: Mon, 30 Mar 2026 20:52:31 +0800 Subject: [PATCH 3/4] Refactor `clearAssets` to optimize asset and resource directory handling --- .../jackhuang/hmcl/ui/versions/VersionPage.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java index 75659820488..af1ebdf2f26 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java @@ -30,7 +30,6 @@ import org.jackhuang.hmcl.event.EventPriority; import org.jackhuang.hmcl.event.RefreshedVersionsEvent; import org.jackhuang.hmcl.game.GameRepository; -import org.jackhuang.hmcl.game.HMCLGameRepository; import org.jackhuang.hmcl.setting.Profile; import org.jackhuang.hmcl.task.Schedulers; import org.jackhuang.hmcl.task.Task; @@ -45,6 +44,7 @@ import org.jackhuang.hmcl.util.StringUtils; import org.jackhuang.hmcl.util.io.FileUtils; +import java.nio.file.Path; import java.util.Optional; import java.util.function.Supplier; @@ -201,11 +201,17 @@ private void clearLibraries() { } private void clearAssets() { - HMCLGameRepository baseDirectory = getProfile().getRepository(); + Path assetsDir = getProfile().getRepository().getBaseDirectory().resolve("assets"); + + Profile.ProfileVersion currentVersion = version.get(); + Path resourcesDir = currentVersion != null + ? getProfile().getRepository().getRunDirectory(currentVersion.getVersion()).resolve("resources") + : null; + Task.runAsync(Schedulers.io(), () -> { - FileUtils.deleteDirectoryQuietly(baseDirectory.getBaseDirectory().resolve("assets")); - if (version.get() != null) { - FileUtils.deleteDirectoryQuietly(baseDirectory.getRunDirectory(version.get().getVersion()).resolve("resources")); + FileUtils.deleteDirectoryQuietly(assetsDir); + if (resourcesDir != null) { + FileUtils.deleteDirectoryQuietly(resourcesDir); } }).whenComplete(Schedulers.javafx(), (exception) -> { if (exception != null) { From f873cf992eeb2f87046b5ca9b7588d6fffd7d6bb Mon Sep 17 00:00:00 2001 From: Glavo Date: Mon, 30 Mar 2026 21:00:30 +0800 Subject: [PATCH 4/4] Update HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java index af1ebdf2f26..26bb6298078 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java @@ -195,7 +195,7 @@ private void clearLibraries() { FileUtils.deleteDirectoryQuietly(libraries); }).whenComplete(Schedulers.javafx(), (exception) -> { if (exception != null) { - Controllers.dialog(i18n("message.failed") + StringUtils.getStackTrace(exception), i18n("message.error"), MessageDialogPane.MessageType.ERROR); + Controllers.dialog(i18n("message.failed") + "\n" + StringUtils.getStackTrace(exception), i18n("message.error"), MessageDialogPane.MessageType.ERROR); } }).start(); }