From 4047c6529d6fa9a367ca903b667d3fc3951e77ab Mon Sep 17 00:00:00 2001 From: Phoenix616 Date: Wed, 10 Jun 2020 23:20:05 +0100 Subject: [PATCH] Fix issue where the parser would try to parse too much --- .../searcher/options/SimpleOptionParser.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/randomteleport-plugin/src/main/java/de/themoep/randomteleport/searcher/options/SimpleOptionParser.java b/randomteleport-plugin/src/main/java/de/themoep/randomteleport/searcher/options/SimpleOptionParser.java index 18f34e2..3838210 100644 --- a/randomteleport-plugin/src/main/java/de/themoep/randomteleport/searcher/options/SimpleOptionParser.java +++ b/randomteleport-plugin/src/main/java/de/themoep/randomteleport/searcher/options/SimpleOptionParser.java @@ -50,8 +50,6 @@ public class SimpleOptionParser implements OptionParser { @Override public boolean parse(RandomSearcher searcher, String[] args) { - boolean ret = false; - for (int i = 0; i < args.length; i++) { if (args[i].startsWith("-")) { String option = args[i].toLowerCase().substring(1); @@ -65,13 +63,23 @@ public class SimpleOptionParser implements OptionParser { "option", option, "perm", "randomteleport.manual.option." + aliases.iterator().next())); } - if (argsLength < 0 || i + argsLength < args.length) { - ret |= parser.apply(searcher, Arrays.copyOfRange(args, i + 1, argsLength < 0 ? args.length : i + 1 + argsLength)); + i++; + int argLength = argsLength > 0 ? argsLength : 0; + for (int j = i + argLength; j < args.length; j++) { + if (!args[j].startsWith("-")) { + argLength++; + } else { + break; + } } + if (i + argLength < args.length) { + return parser.apply(searcher, Arrays.copyOfRange(args, i, i + argLength)); + } + break; } } } - return ret; + return false; } private boolean hasAccess(CommandSender initiator) {