|
11 | 11 | import java.util.Arrays; |
12 | 12 | import java.util.List; |
13 | 13 | import java.util.stream.Collectors; |
| 14 | +import java.util.stream.Stream; |
14 | 15 |
|
15 | 16 | /** |
16 | 17 | * This class is the base class for all commands. |
@@ -501,30 +502,46 @@ public final T getPlugin() { |
501 | 502 | * @return The default usage of the command. |
502 | 503 | */ |
503 | 504 | public String generateDefaultUsage(CommandPlatform<T,S> platform, S sender, String label) { |
504 | | - StringBuilder usage = new StringBuilder(); |
505 | | - usage.append("/"); |
506 | | - Arrays.stream(label.split("\\.")).forEach(s -> usage.append(s).append(" ")); |
507 | | - //remove the last space |
508 | | - if(this.args.isEmpty() && this.optionalArgs.isEmpty()) { |
509 | | - usage.deleteCharAt(usage.length() - 1); |
| 505 | + StringBuilder usage = new StringBuilder("/"); |
| 506 | + |
| 507 | + String[] parts = label.split("\\."); |
| 508 | + usage.append(String.join(" ", parts)); |
| 509 | + |
| 510 | + List<Command<T, S>> directSubs = this.getSubcommands().stream() |
| 511 | + .filter(sub -> { |
| 512 | + String perm = sub.getPermission(); |
| 513 | + return perm.isEmpty() || platform.hasPermission(sender, perm); |
| 514 | + }) |
| 515 | + .collect(Collectors.toList()); |
| 516 | + |
| 517 | + if (!directSubs.isEmpty()) { |
| 518 | + usage.append(" <"); |
| 519 | + String subs = directSubs.stream() |
| 520 | + .map(Command::getName) |
| 521 | + .map(str -> str.split("\\.")[0]) |
| 522 | + .collect(Collectors.joining("|")); |
| 523 | + usage.append(subs).append(">"); |
510 | 524 | } |
511 | 525 |
|
512 | | - StringBuilder firstArg = new StringBuilder(); |
513 | | - this.getSubcommands() |
514 | | - .stream().filter(subCommand -> subCommand.getPermission().isEmpty() || platform.hasPermission(sender, subCommand.getPermission())) |
515 | | - .forEach(subCommand -> firstArg.append(subCommand.getName()).append("|")); |
516 | | - if(firstArg.length() > 0) { |
517 | | - firstArg.deleteCharAt(firstArg.length() - 1); |
518 | | - usage.append("<").append(firstArg).append(">"); |
519 | | - } |
520 | | - if((!this.getArgs().isEmpty() || !this.getOptinalArgs().isEmpty()) && firstArg.length() > 0) { |
521 | | - usage.append("|"); |
522 | | - } |
523 | | - |
524 | | - usage.append(this.getArgs().stream().map(argument -> "<" + argument.arg() + ">").collect(Collectors.joining(" "))); |
525 | | - if (!this.getOptinalArgs().isEmpty()) { |
526 | | - usage.append(" "); |
527 | | - usage.append(this.getOptinalArgs().stream().map(argument -> "[" + argument.arg() + "]").collect(Collectors.joining(" "))); |
| 526 | + if (!this.getArgs().isEmpty() || !this.getOptinalArgs().isEmpty()) { |
| 527 | + usage.append(!directSubs.isEmpty() ? "|" : " "); |
| 528 | + |
| 529 | + // arguments obligatoires : <name:type> |
| 530 | + String req = this.getArgs().stream() |
| 531 | + .map(arg -> "<" + arg.arg() + ">") |
| 532 | + .collect(Collectors.joining(" ")); |
| 533 | + usage.append(req); |
| 534 | + |
| 535 | + // arguments optionnels : [name:type] |
| 536 | + if (!this.getOptinalArgs().isEmpty()) { |
| 537 | + if (!req.isEmpty()) { |
| 538 | + usage.append(" "); |
| 539 | + } |
| 540 | + String opt = this.getOptinalArgs().stream() |
| 541 | + .map(arg -> "[" + arg.arg() + "]") |
| 542 | + .collect(Collectors.joining(" ")); |
| 543 | + usage.append(opt); |
| 544 | + } |
528 | 545 | } |
529 | 546 |
|
530 | 547 | return usage.toString(); |
|
0 commit comments