Dieser Commit ist enthalten in:
Ursprung
9c588b74bf
Commit
8124189214
@ -92,7 +92,11 @@ class SubCommand {
|
|||||||
SWCommand.Guard guard = parameter.getAnnotation(SWCommand.Guard.class);
|
SWCommand.Guard guard = parameter.getAnnotation(SWCommand.Guard.class);
|
||||||
if (guard != null) {
|
if (guard != null) {
|
||||||
if (guard.value() == null || guard.value().isEmpty()) {
|
if (guard.value() == null || guard.value().isEmpty()) {
|
||||||
return GUARD_FUNCTIONS.getOrDefault(parameter.getType().getTypeName(), null);
|
String s = parameter.getType().getTypeName();
|
||||||
|
if (parameter.isVarArgs()) {
|
||||||
|
s = parameter.getType().getComponentType().getTypeName();
|
||||||
|
}
|
||||||
|
return localGuardChecker.getOrDefault(s, GUARD_FUNCTIONS.getOrDefault(s, null));
|
||||||
}
|
}
|
||||||
GuardChecker current = localGuardChecker.getOrDefault(guard.value(), GUARD_FUNCTIONS.getOrDefault(guard.value(), null));
|
GuardChecker current = localGuardChecker.getOrDefault(guard.value(), GUARD_FUNCTIONS.getOrDefault(guard.value(), null));
|
||||||
if (guardChecker == null) {
|
if (guardChecker == null) {
|
||||||
@ -116,15 +120,24 @@ class SubCommand {
|
|||||||
}
|
}
|
||||||
Object[] objects = SWCommandUtils.generateArgumentArray(commandSender, arguments, guards, args, varArgType, subCommand);
|
Object[] objects = SWCommandUtils.generateArgumentArray(commandSender, arguments, guards, args, varArgType, subCommand);
|
||||||
objects[0] = commandSenderFunction.apply(commandSender);
|
objects[0] = commandSenderFunction.apply(commandSender);
|
||||||
for (int i = 0; i < objects.length; i++) {
|
for (int i = subCommand.length; i < args.length; i++) {
|
||||||
GuardChecker current;
|
GuardChecker current;
|
||||||
if (i == 0) {
|
if (i == subCommand.length) {
|
||||||
current = guardChecker;
|
current = guardChecker;
|
||||||
} else {
|
} else {
|
||||||
current = guards[i - 1];
|
if (i >= objects.length + subCommand.length) {
|
||||||
|
current = guards[guards.length - 1];
|
||||||
|
} else {
|
||||||
|
current = guards[i - 1 - subCommand.length];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (current != null) {
|
if (current != null) {
|
||||||
GuardResult guardResult = current.guard(commandSender, help ? GuardCheckType.HELP_COMMAND : GuardCheckType.COMMAND, new String[0], null);
|
GuardResult guardResult;
|
||||||
|
if (i == 0) {
|
||||||
|
guardResult = current.guard(commandSender, help ? GuardCheckType.HELP_COMMAND : GuardCheckType.COMMAND, new String[0], null);
|
||||||
|
} else {
|
||||||
|
guardResult = current.guard(commandSender, help ? GuardCheckType.HELP_COMMAND : GuardCheckType.COMMAND, Arrays.copyOf(args, i - 1), args[i - 1]);
|
||||||
|
}
|
||||||
if (guardResult != GuardResult.ALLOWED) {
|
if (guardResult != GuardResult.ALLOWED) {
|
||||||
if (guardResult == GuardResult.DENIED) {
|
if (guardResult == GuardResult.DENIED) {
|
||||||
throw new CommandNoHelpException();
|
throw new CommandNoHelpException();
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren