diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/MultiMCModpackInstallTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/MultiMCModpackInstallTask.java index 0d42177b6..714bf40a6 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/MultiMCModpackInstallTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/MultiMCModpackInstallTask.java @@ -21,10 +21,11 @@ import com.google.gson.JsonParseException; import com.google.gson.reflect.TypeToken; import org.jackhuang.hmcl.download.DefaultDependencyManager; import org.jackhuang.hmcl.download.GameBuilder; +import org.jackhuang.hmcl.download.MaintainTask; import org.jackhuang.hmcl.download.game.VersionJsonSaveTask; -import org.jackhuang.hmcl.game.Arguments; import org.jackhuang.hmcl.game.DefaultGameRepository; import org.jackhuang.hmcl.game.Version; +import org.jackhuang.hmcl.game.VersionLibraryBuilder; import org.jackhuang.hmcl.task.Task; import org.jackhuang.hmcl.util.Lang; import org.jackhuang.hmcl.util.gson.JsonUtils; @@ -139,20 +140,19 @@ public final class MultiMCModpackInstallTask extends Task { if (patchJson.toString().endsWith(".json")) { // If json is malformed, we should stop installing this modpack instead of skipping it. MultiMCInstancePatch patch = JsonUtils.GSON.fromJson(IOUtils.readFullyAsString(Files.newInputStream(patchJson)), MultiMCInstancePatch.class); - List newArguments = new LinkedList<>(); - for (String arg : patch.getTweakers()) { - newArguments.add("--tweakClass"); - newArguments.add(arg); - } - version = version + + VersionLibraryBuilder builder = new VersionLibraryBuilder(version); + for (String arg : patch.getTweakers()) + builder.addArgument("--tweakClass", arg); + + version = builder.build() .setLibraries(Lang.merge(version.getLibraries(), patch.getLibraries())) - .setMainClass(patch.getMainClass()) - .setArguments(version.getArguments().orElseGet(Arguments::new).addGameArguments(newArguments)); + .setMainClass(patch.getMainClass()); } } } - dependencies.add(new VersionJsonSaveTask(repository, version)); + dependencies.add(new MaintainTask(version).then(var -> new VersionJsonSaveTask(repository, var.get(MaintainTask.ID)))); dependencies.add(new MinecraftInstanceTask<>(zipFile, modpack.getEncoding(), "/" + manifest.getName() + "/minecraft", manifest, MODPACK_TYPE, repository.getModpackConfiguration(name))); }