diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultDependencyManager.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultDependencyManager.java index c5bf0010c..b56e006cc 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultDependencyManager.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultDependencyManager.java @@ -84,14 +84,17 @@ public class DefaultDependencyManager extends AbstractDependencyManager { case "forge": return new ForgeInstallTask(this, gameVersion, version, libraryVersion) .then(variables -> new LibrariesUniqueTask(variables.get("version"))) + .then(variables -> new MaintainTask(repository, variables.get("version"))) .then(variables -> new VersionJsonSaveTask(repository, variables.get("version"))); case "liteloader": return new LiteLoaderInstallTask(this, gameVersion, version, libraryVersion) .then(variables -> new LibrariesUniqueTask(variables.get("version"))) + .then(variables -> new MaintainTask(repository, variables.get("version"))) .then(variables -> new VersionJsonSaveTask(repository, variables.get("version"))); case "optifine": return new OptiFineInstallTask(this, gameVersion, version, libraryVersion) .then(variables -> new LibrariesUniqueTask(variables.get("version"))) + .then(variables -> new MaintainTask(repository, variables.get("version"))) .then(variables -> new VersionJsonSaveTask(repository, variables.get("version"))); default: throw new IllegalArgumentException("Library id " + libraryId + " is unrecognized."); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/MaintainTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/MaintainTask.java index 1e06aa996..2daf1d281 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/MaintainTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/MaintainTask.java @@ -68,8 +68,15 @@ public class MaintainTask extends TaskResult { removeTweakClass(args, "forge"); } + // Installing Forge will override the Minecraft arguments in json, so LiteLoader and OptiFine Tweaker are being re-added. + if (liteLoader == null) { removeTweakClass(args, "liteloader"); + } else { + if (!StringUtils.containsOne(args, "LiteLoaderTweaker")) { + args.add("--tweakClass"); + args.add("com.mumfrey.liteloader.launch.LiteLoaderTweaker"); + } } if (optiFine == null) { @@ -88,7 +95,7 @@ public class MaintainTask extends TaskResult { removeTweakClass(args, "optifine"); } - setResult(newVersion); + setResult(newVersion.setMinecraftArguments(StringUtils.makeCommand(args))); } @Override