Fix not correctly adding "--tweakClass" for MultiMC modpack

This commit is contained in:
huanghongxun 2019-01-22 15:52:57 +08:00
parent 76d35af5b9
commit 2635d31425

View File

@ -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<String> 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)));
}