From 5e5173aeb43559e53de1c83f45665465585f0779 Mon Sep 17 00:00:00 2001 From: Bukkit/Spigot Date: Sun, 9 Feb 2014 20:12:04 -0500 Subject: [PATCH] [Bleeding] Support any number of arguments in aliases By: t00thpick1 --- .../bukkit/command/FormattedCommandAlias.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/paper-api/src/main/java/org/bukkit/command/FormattedCommandAlias.java b/paper-api/src/main/java/org/bukkit/command/FormattedCommandAlias.java index bb46a4daac..84199292dc 100644 --- a/paper-api/src/main/java/org/bukkit/command/FormattedCommandAlias.java +++ b/paper-api/src/main/java/org/bukkit/command/FormattedCommandAlias.java @@ -80,13 +80,24 @@ public class FormattedCommandAlias extends Command { // Move index past the $ index++; - int position = Character.getNumericValue(formatString.charAt(index)); - // Move index past the position - index++; + int argStart = index; + while (index < formatString.length() && inRange(((int) formatString.charAt(index)) - 48, 0, 9)) { + // Move index past current digit + index++; + } - if (position == -1) { + // No numbers found + if (argStart == index) { throw new IllegalArgumentException("Invalid replacement token"); } + + int position = Integer.valueOf(formatString.substring(argStart, index)); + + // Arguments are not 0 indexed + if (position == 0) { + throw new IllegalArgumentException("Invalid replacement token"); + } + // Convert position to 0 index position--; @@ -125,4 +136,8 @@ public class FormattedCommandAlias extends Command { return formatString; } + + private static boolean inRange(int i, int j, int k) { + return i >= j && i <= k; + } }