Fix #1938: 正确处理 map_to_resources (#2919)

* Fix #1938: 正确处理 map_to_resources

* fix checkstyle
This commit is contained in:
Glavo
2024-03-12 20:01:30 +08:00
committed by GitHub
parent e08ba4d421
commit 57e728991b
3 changed files with 15 additions and 1 deletions

View File

@@ -164,7 +164,9 @@ public class VersionPage extends DecoratorAnimatedPage implements DecoratorPage
} }
private void clearAssets() { 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() { private void clearJunkFiles() {

View File

@@ -52,6 +52,10 @@ public final class AssetIndex {
return virtual || mapToResources; return virtual || mapToResources;
} }
public boolean needMapToResources() {
return mapToResources;
}
public Map<String, AssetObject> getObjects() { public Map<String, AssetObject> getObjects() {
return Collections.unmodifiableMap(objects); return Collections.unmodifiableMap(objects);
} }

View File

@@ -459,6 +459,8 @@ public class DefaultGameRepository implements GameRepository {
return assetsDir; return assetsDir;
if (index.isVirtual()) { if (index.isVirtual()) {
Path resourcesDir = getBaseDirectory().toPath().resolve("resources");
int cnt = 0; int cnt = 0;
int tot = index.getObjects().entrySet().size(); int tot = index.getObjects().entrySet().size();
for (Map.Entry<String, AssetObject> entry : index.getObjects().entrySet()) { for (Map.Entry<String, AssetObject> entry : index.getObjects().entrySet()) {
@@ -468,6 +470,12 @@ public class DefaultGameRepository implements GameRepository {
cnt++; cnt++;
if (!Files.isRegularFile(target)) if (!Files.isRegularFile(target))
FileUtils.copyFile(original, target); FileUtils.copyFile(original, target);
if (index.needMapToResources()) {
target = resourcesDir.resolve(entry.getKey());
if (!Files.isRegularFile(target))
FileUtils.copyFile(original, target);
}
} }
} }