Fix command argument sharing

This commit is contained in:
themode 2021-02-12 04:34:37 +01:00
parent 2f99567edf
commit efd2dbc021
3 changed files with 7 additions and 7 deletions

@ -1 +1 @@
Subproject commit 843fc32877802b9b86ae291a2b2fa3d633c24183
Subproject commit 7151ce11dcef265ae87c7d279f2a237d1158a05c

View File

@ -447,12 +447,13 @@ public final class CommandManager {
// Find shared part
boolean foundSharedPart = false;
for (Argument<?>[] parsedArguments : syntaxesArguments) {
if (ArrayUtils.sameStart(arguments, parsedArguments, i + 1)) {
final int index = i + 1;
if (ArrayUtils.sameStart(arguments, parsedArguments, index)) {
final Argument<?> sharedArgument = parsedArguments[i];
final List<DeclareCommandsPacket.Node[]> storedNodes = storedArgumentsNodes.get(sharedArgument);
argChildren = new IntArrayList();
lastNodes = storedNodes.get(storedNodes.size() - Math.max(arguments.length, parsedArguments.length));
lastNodes = storedNodes.get(index);
foundSharedPart = true;
}
}

View File

@ -3,7 +3,6 @@ package demo.commands;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.Arguments;
import net.minestom.server.command.builder.Command;
import net.minestom.server.command.builder.arguments.Argument;
import net.minestom.server.command.builder.arguments.ArgumentType;
import net.minestom.server.command.builder.arguments.number.ArgumentNumber;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
@ -12,15 +11,15 @@ import net.minestom.server.entity.Player;
public class HealthCommand extends Command {
public HealthCommand() {
super("health", "h", "healthbar");
super("health");
setCondition(this::condition);
setDefaultExecutor(this::defaultExecutor);
Argument modeArg = ArgumentType.Word("mode").from("set", "add");
var modeArg = ArgumentType.Word("mode").from("set", "add");
Argument valueArg = ArgumentType.Integer("value").between(0, 100);
var valueArg = ArgumentType.Integer("value").between(0, 100);
setArgumentCallback(this::onModeError, modeArg);
setArgumentCallback(this::onValueError, valueArg);