二、命令
这一章节,我们会讲讲怎么开发一个可以输入指令的插件
首先你需要知道指令(命令)
都应该用过cmd吧,比如/ping
,/pause
,/cls
等,这些就是指令
那么怎么自己开发一个可以输入指令的插件呢?
编写教程
老规矩,照样继承JavaPlugin,来重写一下加载和卸载两个方法
public class MyCommand extends JavaPlugin {
public void onEnable() {
say("插件已加载");
}
public void onDisable() {
say("插件已卸载");
}
public void say(String s) {
CommandSender sender = Bukkit.getConsoleSender();
sender.sendMessage(s);
}
}
那么此时需要添加一个新成员:onCommand
也需要重写一下,参数不变(废话)
public boolean onCommand(CommandSender sender, Command cmd, String label, String args[]) {
//...
return true;
}
- CommandSender:输入指令的玩家
- Command:执行的命令
- label:被执行命令的别名
- args:命令参数,如
/ping s
,s就是参数,args[0]就是s
注意看重载的方法是布尔类型的,那么一定有返回值true
或者是false
如果返回值是false会把plugin.yml提示信息发送给玩家
现在我想输入一个命令test,并想返回一条消息:Hello World!
if(label.equalsIgnoreCase("test"))
{
return true;
}
这个if是判断玩家输入的是否是/test
(不区分大小写)
如果是,则:
sender.sendMessage("Hello World!");
如果不是,则返回false
如果你还想让输入这个指令的玩家有一定的权限,则if中需要改为
if(label.equalsIgnoreCase("test")&&sender.hasPermission("test.me"))
另外的权限:
1.如果想判断玩家是不是管理员可以这么写:
//是不是管理员
if(sender.isOp())
2.判断输入此命令的是控制台还是游戏中的玩家
Player p = (Player)sender;
//是不是玩家
if(p instanceof Player) {
//...
}
至此我们就写完了
plugin.yml
等等你忘了!plugin.yml还需加一些什么东西!
新加如下代码:
commands:
test:
#描述这个命令
description: My first command.
#用法
usage: /<command>
#执行此命令的人所需的权限
permission: test.me
#没有权限的提示消息
permission-message: 你不能执行它.
每个冒号后面一定要跟着一个空格
分级的话,要多加两个空格
上一篇:我的世界Bukkit服务器插件开发教程(一)第一个插件
下一篇:我的世界Bukkit服务器插件开发教程(三)容器和物品堆