mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-15 06:45:42 -04:00
fix: not update game/addons for server modpack
This commit is contained in:
parent
13fa713d58
commit
46869ad5f7
@ -20,6 +20,7 @@ package org.jackhuang.hmcl.mod.server;
|
|||||||
import com.google.gson.JsonParseException;
|
import com.google.gson.JsonParseException;
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
import org.jackhuang.hmcl.download.DefaultDependencyManager;
|
import org.jackhuang.hmcl.download.DefaultDependencyManager;
|
||||||
|
import org.jackhuang.hmcl.download.GameBuilder;
|
||||||
import org.jackhuang.hmcl.game.DefaultGameRepository;
|
import org.jackhuang.hmcl.game.DefaultGameRepository;
|
||||||
import org.jackhuang.hmcl.mod.ModpackConfiguration;
|
import org.jackhuang.hmcl.mod.ModpackConfiguration;
|
||||||
import org.jackhuang.hmcl.task.FileDownloadTask;
|
import org.jackhuang.hmcl.task.FileDownloadTask;
|
||||||
@ -46,6 +47,7 @@ import static org.jackhuang.hmcl.util.Hex.encodeHex;
|
|||||||
|
|
||||||
public class ServerModpackCompletionTask extends Task<Void> {
|
public class ServerModpackCompletionTask extends Task<Void> {
|
||||||
|
|
||||||
|
private final DefaultDependencyManager dependencyManager;
|
||||||
private final DefaultGameRepository repository;
|
private final DefaultGameRepository repository;
|
||||||
private final String version;
|
private final String version;
|
||||||
private ModpackConfiguration<ServerModpackManifest> manifest;
|
private ModpackConfiguration<ServerModpackManifest> manifest;
|
||||||
@ -58,6 +60,7 @@ public class ServerModpackCompletionTask extends Task<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ServerModpackCompletionTask(DefaultDependencyManager dependencyManager, String version, ModpackConfiguration<ServerModpackManifest> manifest) {
|
public ServerModpackCompletionTask(DefaultDependencyManager dependencyManager, String version, ModpackConfiguration<ServerModpackManifest> manifest) {
|
||||||
|
this.dependencyManager = dependencyManager;
|
||||||
this.repository = dependencyManager.getGameRepository();
|
this.repository = dependencyManager.getGameRepository();
|
||||||
this.version = version;
|
this.version = version;
|
||||||
|
|
||||||
@ -97,6 +100,10 @@ public class ServerModpackCompletionTask extends Task<Void> {
|
|||||||
return dependent == null ? Collections.emptySet() : Collections.singleton(dependent);
|
return dependent == null ? Collections.emptySet() : Collections.singleton(dependent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Map<String, String> toMap(Collection<ServerModpackManifest.Addon> addons) {
|
||||||
|
return addons.stream().collect(Collectors.toMap(ServerModpackManifest.Addon::getId, ServerModpackManifest.Addon::getVersion));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() throws Exception {
|
public void execute() throws Exception {
|
||||||
if (manifest == null || StringUtils.isBlank(manifest.getManifest().getFileApi())) return;
|
if (manifest == null || StringUtils.isBlank(manifest.getManifest().getFileApi())) return;
|
||||||
@ -107,6 +114,17 @@ public class ServerModpackCompletionTask extends Task<Void> {
|
|||||||
throw new IOException(e);
|
throw new IOException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Map<String, String> oldAddons = toMap(manifest.getManifest().getAddons());
|
||||||
|
Map<String, String> newAddons = toMap(remoteManifest.getAddons());
|
||||||
|
if (!Objects.equals(oldAddons, newAddons)) {
|
||||||
|
GameBuilder builder = dependencyManager.gameBuilder().name(version);
|
||||||
|
for (ServerModpackManifest.Addon addon : remoteManifest.getAddons()) {
|
||||||
|
builder.version(addon.getId(), addon.getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies.add(builder.buildAsync());
|
||||||
|
}
|
||||||
|
|
||||||
Path rootPath = repository.getVersionRoot(version).toPath();
|
Path rootPath = repository.getVersionRoot(version).toPath();
|
||||||
Map<String, ModpackConfiguration.FileInformation> files = manifest.getManifest().getFiles().stream()
|
Map<String, ModpackConfiguration.FileInformation> files = manifest.getManifest().getFiles().stream()
|
||||||
.collect(Collectors.toMap(ModpackConfiguration.FileInformation::getPath,
|
.collect(Collectors.toMap(ModpackConfiguration.FileInformation::getPath,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user