From 57e728991b108b4d44842c631e7767c434d8fc09 Mon Sep 17 00:00:00 2001 From: Glavo Date: Tue, 12 Mar 2024 20:01:30 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20#1938:=20=E6=AD=A3=E7=A1=AE=E5=A4=84?= =?UTF-8?q?=E7=90=86=20map=5Fto=5Fresources=20(#2919)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix #1938: 正确处理 map_to_resources * fix checkstyle --- .../java/org/jackhuang/hmcl/ui/versions/VersionPage.java | 4 +++- .../src/main/java/org/jackhuang/hmcl/game/AssetIndex.java | 4 ++++ .../org/jackhuang/hmcl/game/DefaultGameRepository.java | 8 ++++++++ 3 files changed, 15 insertions(+), 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 b641a73ff..233a70231 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 @@ -164,7 +164,9 @@ public class VersionPage extends DecoratorAnimatedPage implements DecoratorPage } private void clearAssets() { - FileUtils.deleteDirectoryQuietly(new File(getProfile().getRepository().getBaseDirectory(), "assets")); + File baseDirectory = getProfile().getRepository().getBaseDirectory(); + FileUtils.deleteDirectoryQuietly(new File(baseDirectory, "assets")); + FileUtils.deleteDirectoryQuietly(new File(baseDirectory, "resources")); } private void clearJunkFiles() { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/AssetIndex.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/AssetIndex.java index 8125bce5d..cc24611e7 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/AssetIndex.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/AssetIndex.java @@ -52,6 +52,10 @@ public final class AssetIndex { return virtual || mapToResources; } + public boolean needMapToResources() { + return mapToResources; + } + public Map getObjects() { return Collections.unmodifiableMap(objects); } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/DefaultGameRepository.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/DefaultGameRepository.java index f0665ceef..73df906d1 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/DefaultGameRepository.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/DefaultGameRepository.java @@ -459,6 +459,8 @@ public class DefaultGameRepository implements GameRepository { return assetsDir; if (index.isVirtual()) { + Path resourcesDir = getBaseDirectory().toPath().resolve("resources"); + int cnt = 0; int tot = index.getObjects().entrySet().size(); for (Map.Entry entry : index.getObjects().entrySet()) { @@ -468,6 +470,12 @@ public class DefaultGameRepository implements GameRepository { cnt++; if (!Files.isRegularFile(target)) FileUtils.copyFile(original, target); + + if (index.needMapToResources()) { + target = resourcesDir.resolve(entry.getKey()); + if (!Files.isRegularFile(target)) + FileUtils.copyFile(original, target); + } } }