diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/parser/pattern/RandomPatternParser.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/parser/pattern/RandomPatternParser.java index b3227096c..ce2510ce5 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/parser/pattern/RandomPatternParser.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extension/factory/parser/pattern/RandomPatternParser.java @@ -30,34 +30,23 @@ public class RandomPatternParser extends InputParser { public Stream getSuggestions(String input) { //FAWE start List patterns = StringUtil.split(input, ',', '[', ']'); - if (patterns.size() == 0) { + if (patterns.isEmpty()) { return Stream.empty(); } - // get suggestions for the last token only - String token = patterns.get(patterns.size() - 1); - String percent; - String previous; - if (patterns.size() != 1) { - previous = String.join(",", patterns.subList(0, patterns.size() - 1)); - percent = ","; - } else { - previous = ""; - percent = ""; - } - if (regex.matcher(token).matches()) { - String[] p = token.split("%"); - if (p.length < 2) { - return Stream.empty(); - } else { - percent += p[0] + "%"; - token = p[1]; - } - } else { - return Stream.empty(); - } - final List innerSuggestions = worldEdit.getPatternFactory().getSuggestions(token); - String prefix = previous + percent; //FAWE end + // get suggestions for the last token only + String percent = null; + String token = patterns.get(patterns.size() - 1); + if (regex.matcher(token).matches()) { + String[] p = token.split("%", 2); + percent = p[0]; + token = p[1]; + } else if (patterns.size() == 1) { + return Stream.empty(); // handled by DefaultBlockParser + } + String previous = patterns.size() == 1 ? "" : String.join(",", patterns.subList(0, patterns.size() - 1)) + ","; + String prefix = previous + (percent == null ? "" : percent + "%"); + final List innerSuggestions = worldEdit.getPatternFactory().getSuggestions(token); return innerSuggestions.stream().map(s -> prefix + s); }