From fb4a499fe97cb782af00a23466ef79e1d2053676 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Sat, 22 Feb 2020 23:13:09 +0800 Subject: [PATCH] fix: #678 --- .../hmcl/game/VersionLibraryBuilder.java | 30 +++++++++---------- .../hmcl/launch/DefaultLauncher.java | 5 +++- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/VersionLibraryBuilder.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/VersionLibraryBuilder.java index 5b562d664..840010fef 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/VersionLibraryBuilder.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/VersionLibraryBuilder.java @@ -46,10 +46,8 @@ public final class VersionLibraryBuilder { // Since $ will be escaped in linux, and our maintain of minecraftArgument will not cause escaping, // so we regenerate the minecraftArgument without escaping. ret = ret.setMinecraftArguments(new CommandBuilder().addAllWithoutParsing(mcArgs).toString()); - } else { - ret = ret.setArguments(ret.getArguments().map(args -> args.withGame(game)).orElse(new Arguments(game, null))); } - return ret; + return ret.setArguments(ret.getArguments().map(args -> args.withGame(game)).orElse(new Arguments(game, null))); } public void removeTweakClass(String target) { @@ -63,19 +61,19 @@ public final class VersionLibraryBuilder { --i; } } - } else { - for (int i = 0; i + 1 < game.size(); ++i) { - Argument arg0 = game.get(i); - Argument arg1 = game.get(i + 1); - if (arg0 instanceof StringArgument && arg1 instanceof StringArgument) { - // We need to preserve the tokens - String arg0Str = arg0.toString(); - String arg1Str = arg1.toString(); - if (arg0Str.equals("--tweakClass") && arg1Str.toLowerCase().contains(target)) { - game.remove(i); - game.remove(i); - --i; - } + } + + for (int i = 0; i + 1 < game.size(); ++i) { + Argument arg0 = game.get(i); + Argument arg1 = game.get(i + 1); + if (arg0 instanceof StringArgument && arg1 instanceof StringArgument) { + // We need to preserve the tokens + String arg0Str = arg0.toString(); + String arg1Str = arg1.toString(); + if (arg0Str.equals("--tweakClass") && arg1Str.toLowerCase().contains(target)) { + game.remove(i); + game.remove(i); + --i; } } } 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 c061f03b5..70cb5988f 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -163,7 +163,10 @@ public class DefaultLauncher extends Launcher { res.addAll(Arguments.parseStringArguments(version.getMinecraftArguments().map(StringUtils::tokenize).orElseGet(LinkedList::new), configuration)); Map features = getFeatures(); - res.addAll(Arguments.parseArguments(version.getArguments().map(Arguments::getGame).orElseGet(this::getDefaultGameArguments), configuration, features)); + version.getArguments().map(Arguments::getGame).ifPresent(arguments -> res.addAll(Arguments.parseArguments(arguments, configuration, features))); + if (version.getMinecraftArguments().isPresent()) { + res.addAll(Arguments.parseArguments(this.getDefaultGameArguments(), configuration, features)); + } if (authInfo.getArguments() != null && authInfo.getArguments().getGame() != null && !authInfo.getArguments().getGame().isEmpty()) res.addAll(Arguments.parseArguments(authInfo.getArguments().getGame(), configuration, features));