From 14cfd6abeba3a6b488ab72c648e80d4f12620eb8 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Wed, 8 Apr 2020 21:18:25 +0800 Subject: [PATCH] add: support variables in prelaunch command which is supported by MultiMC. Closes #698 --- .../org/jackhuang/hmcl/launch/DefaultLauncher.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java index 9924d5e2e..f4c52d83d 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -283,9 +283,18 @@ public class DefaultLauncher extends Launcher { File runDirectory = repository.getRunDirectory(version.getId()); - if (StringUtils.isNotBlank(options.getPreLaunchCommand())) - new ProcessBuilder(options.getPreLaunchCommand()) + if (StringUtils.isNotBlank(options.getPreLaunchCommand())) { + String versionName = Optional.ofNullable(options.getVersionName()).orElse(version.getId()); + String preLaunchCommand = options.getPreLaunchCommand() + .replace("$INST_NAME", versionName) + .replace("$INST_ID", versionName) + .replace("$INST_DIR", repository.getVersionRoot(version.getId()).getAbsolutePath()) + .replace("$INST_MC_DIR", repository.getRunDirectory(version.getId()).getAbsolutePath()) + .replace("$INST_JAVA", options.getJava().getBinary().toString()); + + new ProcessBuilder(preLaunchCommand) .directory(runDirectory).start().waitFor(); + } Process process; try {