Cache asset files
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user