Skip to content

使用ClassAnnotationCommand

defoli_ation edited this page Nov 1, 2019 · 5 revisions

ClassAnnotation是为了提高自定义而设计的,与MethodAnnotation不同,ClassAnnotation是以整个类为单位,作为命令的执行单元,相较MethodAnnotation,虽然制作命令的效率有所降低,但在继承MethodAnnotation的部分优点的同时MethodAnnotation所存在的缺点也被消除

使用ClassAnnotationCommand

以最简单的发送say为例

    ClassAnnotationCommand.getBuilder(simpleCommandManager)
            .caseCommand("say", new Runnable() {
                @Sender
                public CommandSender sender;
                public String message;

                @Override
                public void run() {
                    System.out.println(sender.getSenderName()+":"+message)
                }
            })
            .register();
    simpleCommandManager.execute(testSender,"say "hello world"");

当命令能够执行时,我们将确保所有属性(Field)都是玩家所输入的值,所以,放心用。 在MethodAnnotation中部分Annotation依然能够在ClassAnnotation中使用,并且新增了一些Annotation

Annotations

@Command

不支持

@Permission

注解于Run方法上,作用与MethodAnnotation相同

@Sender

注解于属性(Field)上,作用与MethodAnnotation相同

@ArgumentHandler

注解于属性上,作用与MethodAnnotation相同

@Suggester

注解于属性上,作用与MethodAnnotation相同

@Required

注解于属性上,作用与MethodAnnotation相同

@Tip

注解于属性上,作用与MethodAnnotation相同

新增的Annotations

@Ignore

注解于属性上,在类中,所有属性都默认为玩家必须输入的参数,将此注解标记于属性上,即可让系统忽略这个属性