第一次写教程可能语言组织不是很好,见谅。更新的话不出意外(天更)
1.创建一个命令
首先我们在主类中添加以下代码
CommandSpec myCommandSpec = CommandSpec.builder()
.description(Text.of("Hello World Command"))
.permission("myplugin.command.helloworld")
.executor(new HahCommand())
.build();
第一个:builder()方法/函数,可以理解为开启一个新的构造器,源代码中这个方法/函数会放回一个新建的构造器。
第二个:description是构造器的参数,作用是简短的描述你命令是用来干什么的。
第三个:permission同上,作用是运行命令前会检测是否拥有该权限。
第四个:executor同上,作用就是这个命令的逻辑业务。
第五个:build()方法/函数,用来生成你所定义的命令。
当然还有的参数我就不列举了。
2.定义命令的逻辑业务。
你需要创建一个新的类去实现CommandExecutor这个接口并重写execute方法/函数。
因为在CommandSpec.builder()
.executor中给予的是HahCommand这个类对象,所以我需要以HahCommand这个名字去实现CommandExecutor这个接口并重写execute方法/函数。
public class HahCommand implements CommandExecutor {
public CommandResult execute(CommandSource arg0, CommandContext arg1) throws CommandException {
arg0.sendMessage(Text.of("Hello World"));
return CommandResult.success();
}
}
这里我简单的发送了Hello World文本消息。
execute中的参数
第一个:arg0是执行命令的对象,例如如服务端命令。
第二个:命令上下文这个下一章会说到。
这里需要return一个命令的结果集。
.success()返回一个常量SUCCESS表示执行成功。
3.注册这个命令。
在主类的onServer中
@Listener
public void onServer(GameStartedServerEvent event) {
Sponge.getCommandManager().register(this, myCommandSpec, "helloworld", "hello", "test");
}
.register中的参数
第一个:是Object对象,也就是你主类的对象。
第二个:是CommandCallable对象,也就是上面你创建的命令。
第三个:也就是你执行这个命令的名字啦。可以多个。
到这里命令也就创建完成了。
码字不易,如果对你有帮助就回个帖。