diff --git a/SpigotCore_Main/src/de/steamwar/command/SWCommand.java b/SpigotCore_Main/src/de/steamwar/command/SWCommand.java index 6c56ade..9192772 100644 --- a/SpigotCore_Main/src/de/steamwar/command/SWCommand.java +++ b/SpigotCore_Main/src/de/steamwar/command/SWCommand.java @@ -65,12 +65,18 @@ public class SWCommand { } public List tabComplete(String[] args) { - if (args.length > arguments.length) return new ArrayList<>(); - for (int i = 0; i < args.length - 1; i++) { + if (args.length > arguments.length && !lastArgRepeatable) { + return new ArrayList<>(); + } + for (int i = 0; i < Math.min(args.length - 1, arguments.length - 1); i++) { if (!arguments[i].valueSupplier(args[i]).isPresent()) return new ArrayList<>(); } - int index = args.length - 1; - return arguments[index].tabCompleteSupplier(args[index]).orElseGet(ArrayList::new); + if (lastArgRepeatable) { + for (int i = arguments.length; i < args.length; i++) { + if (!arguments[arguments.length - 1].valueSupplier(args[i]).isPresent()) return new ArrayList<>(); + } + } + return arguments[arguments.length - 1].tabCompleteSupplier(args[args.length - 1]).orElseGet(ArrayList::new); } public static boolean execute(List> swCommandList, T sender, String[] args) {