Cache asset files

This commit is contained in:
huangyuhui
2018-09-06 17:47:44 +08:00
parent 1392ad413a
commit 1019c891e2
10 changed files with 297 additions and 31 deletions

View File

@@ -28,10 +28,7 @@ import org.jackhuang.hmcl.util.Logging;
import org.jackhuang.hmcl.util.NetworkUtils;
import java.io.File;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.logging.Level;
/**
@@ -43,7 +40,6 @@ public final class GameAssetDownloadTask extends Task {
private final AbstractDependencyManager dependencyManager;
private final Version version;
private final GameAssetRefreshTask refreshTask;
private final List<Task> dependents = new LinkedList<>();
private final List<Task> dependencies = new LinkedList<>();
/**
@@ -56,16 +52,15 @@ public final class GameAssetDownloadTask extends Task {
this.dependencyManager = dependencyManager;
this.version = version;
this.refreshTask = new GameAssetRefreshTask(dependencyManager, version);
this.dependents.add(refreshTask);
}
@Override
public Collection<Task> getDependents() {
return dependents;
return Collections.singleton(refreshTask);
}
@Override
public List<Task> getDependencies() {
public Collection<Task> getDependencies() {
return dependencies;
}

View File

@@ -65,6 +65,9 @@ public final class GameAssetIndexDownloadTask extends Task {
if (!FileUtils.makeDirectory(assetDir))
throw new IOException("Cannot create directory: " + assetDir);
File assetIndexFile = dependencyManager.getGameRepository().getIndexFile(version.getId(), assetIndexInfo.getId());
// We should not check the hash code of asset index file since this file is not consistent
// And Mojang will modify this file anytime. So assetIndex.hash might be outdated.
dependencies.add(new FileDownloadTask(
NetworkUtils.toURL(dependencyManager.getDownloadProvider().injectURL(assetIndexInfo.getUrl())),
assetIndexFile

View File

@@ -53,7 +53,7 @@ public final class AssetObject implements Validation {
@Override
public void validate() throws JsonParseException {
if (StringUtils.isBlank(hash))
if (StringUtils.isBlank(hash) || hash.length() < 2)
throw new IllegalStateException("AssetObject hash cannot be blank.");
}
}