From dfd177433af492c5ee8775922ed6a85acf231f75 Mon Sep 17 00:00:00 2001 From: huangyuhui Date: Mon, 20 Aug 2018 11:38:06 +0800 Subject: [PATCH] Fix not replacing tokens metioned in #426 --- .../main/java/org/jackhuang/hmcl/game/Arguments.java | 2 +- .../java/org/jackhuang/hmcl/game/RuledArgument.java | 2 +- .../org/jackhuang/hmcl/launch/DefaultLauncher.java | 12 +++--------- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/Arguments.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/Arguments.java index 9222e2e58..68b4addc5 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/Arguments.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/Arguments.java @@ -82,7 +82,7 @@ public final class Arguments { } public static List parseStringArguments(List arguments, Map keys) { - return arguments.stream().map(str -> keys.getOrDefault(str, str)).collect(Collectors.toList()); + return arguments.stream().flatMap(str -> new StringArgument(str).toString(keys, Collections.emptyMap()).stream()).collect(Collectors.toList()); } public static List parseArguments(List arguments, Map keys) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/RuledArgument.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/RuledArgument.java index 2f46a177e..fcc9a6183 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/RuledArgument.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/RuledArgument.java @@ -65,7 +65,7 @@ public class RuledArgument implements Argument { @Override public List toString(Map keys, Map features) { - if (CompatibilityRule.appliesToCurrentEnvironment(rules) && value != null) + if (CompatibilityRule.appliesToCurrentEnvironment(rules, features) && value != null) return value.stream() .map(StringArgument::new) .map(str -> str.toString(keys, features).get(0)) 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 90e6d418c..c5d009e27 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -153,14 +153,6 @@ public class DefaultLauncher extends Launcher { res.addAll(Arguments.parseStringArguments(version.getMinecraftArguments().map(StringUtils::tokenize).orElseGet(LinkedList::new), configuration)); - // Optional Minecraft arguments - if (options.getHeight() != null && options.getHeight() != 0 && options.getWidth() != null && options.getWidth() != 0) { - res.add("--height"); - res.add(options.getHeight().toString()); - res.add("--width"); - res.add(options.getWidth().toString()); - } - if (StringUtils.isNotBlank(options.getServerIp())) { String[] args = options.getServerIp().split(":"); res.add("--server"); @@ -249,7 +241,9 @@ public class DefaultLauncher extends Launcher { pair("${game_directory}", repository.getRunDirectory(version.getId()).getAbsolutePath()), pair("${user_type}", "mojang"), pair("${assets_index_name}", version.getAssetIndex().getId()), - pair("${user_properties}", authInfo.getUserProperties()) + pair("${user_properties}", authInfo.getUserProperties()), + pair("${resolution_width}", options.getWidth().toString()), + pair("${resolution_height}", options.getHeight().toString()) ); }