Make CommandMethod applicable to class

This commit is contained in:
Frank van der Heijden 2021-09-19 13:31:22 +02:00 committed by Jason
parent 6cd1105642
commit 730e78e212
3 changed files with 21 additions and 4 deletions

View file

@ -406,13 +406,16 @@ public final class AnnotationParser<C> {
final @NonNull Object instance,
final @NonNull Collection<@NonNull CommandMethodPair> methodPairs
) {
final CommandMethod classCommandMethod = instance.getClass().getAnnotation(CommandMethod.class);
final String syntaxPrefix = classCommandMethod == null ? "" : (classCommandMethod.value() + " ");
final Collection<Command<C>> commands = new ArrayList<>();
for (final CommandMethodPair commandMethodPair : methodPairs) {
final CommandMethod commandMethod = commandMethodPair.getCommandMethod();
final Method method = commandMethodPair.getMethod();
final List<SyntaxFragment> tokens = this.syntaxParser.apply(commandMethod.value());
final String syntax = syntaxPrefix + commandMethod.value();
final List<SyntaxFragment> tokens = this.syntaxParser.apply(syntax);
/* Determine command name */
final String commandToken = commandMethod.value().split(" ")[0].split("\\|")[0];
final String commandToken = syntax.split(" ")[0].split("\\|")[0];
@SuppressWarnings("rawtypes") final CommandManager manager = this.manager;
final SimpleCommandMeta.Builder metaBuilder = SimpleCommandMeta.builder()
.with(this.metaFactory.apply(method));

View file

@ -34,7 +34,7 @@ import java.lang.annotation.Target;
* Used to declare a class method as a command method
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface CommandMethod {
/**