From 9ea419c05bbb1d74f907e5c74a385658932fdf97 Mon Sep 17 00:00:00 2001 From: Glavo Date: Sun, 11 Jan 2026 21:00:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=AA=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E9=99=B6=E7=93=A6=E8=81=94=E6=9C=BA=E6=97=B6=E6=89=93=E5=BC=80?= =?UTF-8?q?=E9=99=B6=E7=93=A6=E8=81=94=E6=9C=BA=E9=A1=B5=E9=9D=A2=E6=8A=9B?= =?UTF-8?q?=E5=87=BA=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98=20(#5166?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hmcl/terracotta/TerracottaMetadata.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaMetadata.java b/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaMetadata.java index b4502a9b3..b7ad8d8c4 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaMetadata.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaMetadata.java @@ -169,6 +169,9 @@ public final class TerracottaMetadata { public static void removeLegacyVersionFiles() { try (DirectoryStream terracotta = collectLegacyVersionFiles()) { + if (terracotta == null) + return; + for (Path path : terracotta) { try { FileUtils.deleteDirectory(path); @@ -183,13 +186,17 @@ public final class TerracottaMetadata { public static boolean hasLegacyVersionFiles() throws IOException { try (DirectoryStream terracotta = collectLegacyVersionFiles()) { - return terracotta.iterator().hasNext(); + return terracotta != null && terracotta.iterator().hasNext(); } } - private static DirectoryStream collectLegacyVersionFiles() throws IOException { + private static @Nullable DirectoryStream collectLegacyVersionFiles() throws IOException { + Path terracottaDir = Metadata.DEPENDENCIES_DIRECTORY.resolve("terracotta"); + if (Files.notExists(terracottaDir)) + return null; + VersionRange range = VersionNumber.atMost(LATEST); - return Files.newDirectoryStream(Metadata.DEPENDENCIES_DIRECTORY.resolve("terracotta"), path -> { + return Files.newDirectoryStream(terracottaDir, path -> { String name = FileUtils.getName(path); return !LATEST.equals(name) && range.contains(VersionNumber.asVersion(name)); });