diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java index 8bac52d0c..46a84023a 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java @@ -399,20 +399,32 @@ public class JREUtils { ArrayList parsedArguments = new ArrayList<>(0); args = args.trim().replace(" ", ""); //For each prefixes, we separate args. - for(String prefix : new String[]{"-XX:-","-XX:+", "-XX:","-"}){ + for(String prefix : new String[]{"-XX:-","-XX:+", "-XX:","--","-"}){ while (true){ int start = args.indexOf(prefix); if(start == -1) break; //Get the end of the current argument int end = args.indexOf("-", start + prefix.length()); if(end == -1) end = args.length(); + //Extract it String parsedSubString = args.substring(start, end); args = args.replace(parsedSubString, ""); //Check if two args aren't bundled together by mistake - if(parsedSubString.indexOf('=') == parsedSubString.lastIndexOf('=')) + if(parsedSubString.indexOf('=') == parsedSubString.lastIndexOf('=')) { + int arraySize = parsedArguments.size(); + if(arraySize > 0){ + String lastString = parsedArguments.get(arraySize - 1); + // Looking for list elements + if(lastString.charAt(lastString.length() - 1) == ',' || + parsedSubString.contains(",")){ + parsedArguments.set(arraySize - 1, lastString + parsedSubString); + continue; + } + } parsedArguments.add(parsedSubString); + } else Log.w("JAVA ARGS PARSER", "Removed improper arguments: " + parsedSubString); } }