基于Bukkit API的插件编写教程
在教程开始之前,请确保你有一定的编程基础.如果你对编程属于一无所知,那么请你先去阅读Java编程基础.
上一节
上一节
内容提要
上一节我们告诉了大家如何写出一个空的插件.当然一个空的插件也是插件,但这完全不够.
在本节笔者将告诉大家如何为插件写一个监听器和一个命令执行器
写一个插件的监听器
监听器是插件用于监视服务器玩家或者服务端动作的类,默认需要实现Listener接口
<关于接口的参考文章:http://blog.csdn.net/yjkwf/article/details/7238847>。
<在1.1以前,监听器内的事件方法是以继承方式创建的,名称都是固定的(因为要覆盖),严格而繁琐;
1.1以后,CB作出较大改动,你仅需实现Listener接口,事件方法也变为依靠一个高级注释(EventHandler)来进行创建,自由且简便。
目前,你可以随意的创建一个监听器,方法也是任意的,只不过不要忘记注释“EventHandler”。>
1.1以后,CB作出较大改动,你仅需实现Listener接口,事件方法也变为依靠一个高级注释(EventHandler)来进行创建,自由且简便。
目前,你可以随意的创建一个监听器,方法也是任意的,只不过不要忘记注释“EventHandler”。>
这里我们举一个例子进行说明
我们要让玩家不能放置一个钻石块,只有拥有相关权限<me.hopeasd.a>的玩家才可以放置
首先我们需要新建一个类 名字就叫做SimplePluginListener
如图
在你点击完成后 插件就会帮你自动完成相关包的导入.
我们要让玩家不能放置一个钻石块,只有拥有相关权限<me.hopeasd.a>的玩家才可以放置
首先我们需要新建一个类 名字就叫做SimplePluginListener
如图
在你点击完成后 插件就会帮你自动完成相关包的导入.
创建完成后的监听器中没有任何的方法 这时就需要玩家去写监听某些事件的方法
我们要完成 让玩家不能放置钻石块 就必然需要找到Bukkit API中相关的事件类。
关于事件 我们之后再来说明
在图片中 我们可以清晰的看到 Bukkit 把所有事件都放置在org.bukkit.event下
我们因为要对方块的放置进行操作 所以我搜寻到了org.bukkit.event.block下的BlockPlaceEvent
笔者从Bukkit API 的JavaDocs上搜寻到关于这个事件的构造<http://jd.bukkit.org/rb/apidocs/org/bukkit/event/block/BlockBreakEvent.html>
发现这个事件正是我们所需要的事件。
前面说过 Bukkit API从1.1之后就进行了大改,不再和以前一样进行继承然后重载来实现事件的监听。现在我们可以通过高级注释EventHandler来进行标示我们的方法
关于EventHandler 我们就必须要了解他的参数
在JavaDocs上 我查到了相关的数据<http://jd.bukkit.org/rb/apidocs/org/bukkit/event/EventHandler.html>
这个注释中存在着两个参数 一个是EventPriority类型的
我们要完成 让玩家不能放置钻石块 就必然需要找到Bukkit API中相关的事件类。
关于事件 我们之后再来说明
在图片中 我们可以清晰的看到 Bukkit 把所有事件都放置在org.bukkit.event下
我们因为要对方块的放置进行操作 所以我搜寻到了org.bukkit.event.block下的BlockPlaceEvent
笔者从Bukkit API 的JavaDocs上搜寻到关于这个事件的构造<http://jd.bukkit.org/rb/apidocs/org/bukkit/event/block/BlockBreakEvent.html>
发现这个事件正是我们所需要的事件。
前面说过 Bukkit API从1.1之后就进行了大改,不再和以前一样进行继承然后重载来实现事件的监听。现在我们可以通过高级注释EventHandler来进行标示我们的方法
关于EventHandler 我们就必须要了解他的参数
在JavaDocs上 我查到了相关的数据<http://jd.bukkit.org/rb/apidocs/org/bukkit/event/EventHandler.html>
这个注释中存在着两个参数 一个是EventPriority类型的
priority 一个是boolean类型的ignoreCancelled
Bukkit对两者都做出了说明 前者是用来表示事件接受的顺序 后者是用来表示忽视Cancelled处理
EventPriority
是一个枚举<关于枚举的参考资料: