From fc976acdd4670a9287552bc01bf2dd86c86ce488 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 23:02:13 +0200 Subject: [PATCH] Fix CommandPart Validator for varargs part --- src/de/steamwar/command/CommandPart.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/de/steamwar/command/CommandPart.java b/src/de/steamwar/command/CommandPart.java index 2f7e075..ef888ec 100644 --- a/src/de/steamwar/command/CommandPart.java +++ b/src/de/steamwar/command/CommandPart.java @@ -92,12 +92,17 @@ class CommandPart { if (varArgType != null) { Object array = Array.newInstance(varArgType, args.length - startIndex); for (int i = startIndex; i < args.length; i++) { - CheckArgumentResult validArgument = checkArgument(errors, null, sender, args, i); + CheckArgumentResult validArgument = checkArgument(null, null, sender, args, i); if (!validArgument.success) { throw new CommandParseException(); } Array.set(array, i - startIndex, validArgument.value); } + if (validator != null && !validator.validate(sender, array, (s, objects) -> { + errors.accept(() -> command.sendMessage(sender, s, objects)); + })) { + throw new CommandParseException(); + } current.add(array); return; } @@ -195,7 +200,7 @@ class CommandPart { private CheckArgumentResult checkArgument(Consumer errors, GuardCheckType guardCheckType, T sender, String[] args, int index) { try { Object value = typeMapper.map(sender, Arrays.copyOf(args, index), args[index]); - if (validator != null) { + if (validator != null && errors != null) { if (!validator.validate(sender, value, (s, objects) -> { errors.accept(() -> { command.sendMessage(sender, s, objects);