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); + } } }