From 69172c5b4b0232c248c8dc59367c205c19b0ebe4 Mon Sep 17 00:00:00 2001 From: Lyfts <127234178+Lyfts@users.noreply.github.com> Date: Thu, 13 Feb 2025 18:24:28 +0100 Subject: [PATCH] fix claim-only backup failing when encountering renamed region files Signed-off-by: Lyfts <127234178+Lyfts@users.noreply.github.com> --- .../serverutils/task/backup/ThreadBackup.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/serverutils/task/backup/ThreadBackup.java b/src/main/java/serverutils/task/backup/ThreadBackup.java index 7e493120..ef48dc91 100644 --- a/src/main/java/serverutils/task/backup/ThreadBackup.java +++ b/src/main/java/serverutils/task/backup/ThreadBackup.java @@ -236,6 +236,7 @@ private static Object2ObjectMap> mapClaimsToRegionF for (File file : regions) { int[] coords = getRegionCoords(file); + if (coords == null) continue; long key = CoordinatePacker.pack(coords[0], 0, coords[1]); ObjectSet claims = regionClaims.get(key); if (claims == null) { @@ -250,14 +251,17 @@ private static Object2ObjectMap> mapClaimsToRegionF return regionFilesToBackup; } - private static int[] getRegionCoords(File f) { - String fileName = f.getName(); - int firstDot = fileName.indexOf('.'); - int secondDot = fileName.indexOf('.', firstDot + 1); + private static int[] getRegionCoords(File file) { + if (!file.getName().endsWith(".mca")) return null; - int x = Integer.parseInt(fileName.substring(firstDot + 1, secondDot)); - int z = Integer.parseInt(fileName.substring(secondDot + 1, fileName.lastIndexOf('.'))); - return new int[] { x, z }; + String[] parts = file.getName().split("\\."); + try { + int x = Integer.parseInt(parts[1]); + int z = Integer.parseInt(parts[2]); + return new int[] { x, z }; + } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) { + return null; + } } private static String getDoneTime(long l) {