本帖最后由 berry64 于 2015-1-21 19:31 编辑


--------------------------------------------------------------------------------------------------------------------
第六章:了解EventHandler和基本Config
潜水了好久,我终于回来了,不是挺好么
期末考试复习中,复习完了发的这个帖子{:10_544:}
发句牢骚:
开始解说EventHandler:
EventHandler是什么呢?他是一个很好用的Bukkit加入的玩家测试方法(我擦,不会解释了)就是说玩家干了什么会被发送到EventHandler下的东西里,如果有设置的话。
今天呢我们做一个简单的玩家加入游戏EventHandler练习。之前我没讲过,不过写所有程序必须的步骤:
1)构思
2)给自己画张图
3)开始编辑
这里我的构思已经好了,我准备用上点Config设置
放上渣图:

图挂了的话吱一声, 相信你们也看懂了这个是啥吧
这是后我们用到的是PlayerJoinEvent (详情请去 jd.bukkit.org/apidocs/ 查看)
先创一个插件,详情这个有讲
然后呢,在下面加一个
  1. @EventHandler
复制代码
这就是叫起来EventHandler啦,但是没有给它可以用的东西怎么办?
我们赶紧写一个叫onPlayerJoin的方法,在@EventHandler下面加入:
  1. public void onPlayerJoin(PlayerJoinEvent evt){
  2. }
复制代码
这样,括号前面的onPlayerJoin你可以改名字,括号里面告诉EventHandler是什么样的东西
这里我们创建玩家,所以说在大括号里面加入:
  1. Player p = evt.getPlayer()
复制代码
上面呢,就是创建一个Player类型的盒子,里面要存event里面找到的玩家
果断输入";"结束句子
然后呢,我们开始给玩家发东西,这里我们会用到p.sendMessage()
这个就很简单啦,括号里面加上双引号打上消息就完事啦,比如:
p.sendMessage("欢迎你哈")
记得这个是针对玩家的, 你输入了String类型的文字,String还可以用一部分代数,一部分设定的文字打,用+号连接起来, 这里我们用bukkit.broadcastMessage()发给全服
所以我们用:
  1. bukkit.broadcastMessage("大家欢迎玩家:" + p.getName()+"加入服务器!");
复制代码

为什么我用了p.getName()呢?应为直接用p是一个玩家类型的盒子,String不能兼容,当然不行了,用了p.getName()就能让插件自动获取玩家的名字,以String来发布
这里就基本完成啦,现在要注册一个EventHandler, 千万不能忘, 不然没效果的
所以我们创建一个onEnable()
上一章有讲过, 所以现在我们在大括号里面让他在启动插件的时候注册一个Event
很简单,就输入
bukkit.getPluginManager().registerEvents(this, this)
就完成了,这里bukkit代表服务器,getPluginManager()是获取插件
管理器,然后registerEvents是注册
保存,导出就可以啦

不对啊,不是还有个config的吗?
对啊,是有,现在讲
我们用上一章讲的创建plugin.yml的方法在同样地方创建一个config.yml
这样标准配置文件就完事了。现在我们编辑下标准的,只要加一行就行了
  1. PlayerJoinMessage:
复制代码

别忘了冒号后面的空格哦......
现在我们回到java文件,在onEnable的时候让他创建一个Config
直接加入this.saveDefaultConfig();
这样就可以了, 现在还没有自动读取系统,也就是说每次重启就会刷新config, 这个没事=w=默认配置改一下就可以了,要让他每次重启还看看有没有config很麻烦,现在不说。
这里我们不是有bukkit.broadcastMessage()吗?我们把括号里面的删掉,双引号也不留,全部统统改成this.getConfig().getString("PlayerJoinMessage")
这样一个基本的Config读取东西就完成了,这是多么的好
最后求你们一句:
读完吱一声,告诉我一下看了什么和评论,如果条件允许的话给点人气我就知足了,给人气自己也不丢什么,不想给人气清至少回复个帖子让我知道发生了什么。

--------------------------------------------------------------------------------------------------------------------

[groupid=844]SmoothCraft Work[/groupid]