Minecraft(我的世界)中文论坛
标题: ---===从零基础开始,到精通插件===---#6
作者: berry64 时间: 2015-1-21 19:25
标题: ---===从零基础开始,到精通插件===---#6
本帖最后由 berry64 于 2015-1-21 19:31 编辑
--------------------------------------------------------------------------------------------------------------------
第六章:了解EventHandler和基本Config
潜水了好久,我终于回来了,不是挺好么
期末考试复习中,复习完了发的这个帖子{:10_544:}
发句牢骚: 我的浏览器提醒我说网站被病毒感染了,说访问会有危险,问下别人有么 |
开始解说EventHandler:
EventHandler是什么呢?他是一个很好用的Bukkit加入的玩家测试方法(我擦,不会解释了)就是说玩家干了什么会被发送到EventHandler下的东西里,如果有设置的话。
今天呢我们做一个简单的玩家加入游戏EventHandler练习。之前我没讲过,不过写所有程序必须的步骤:
1)构思
2)给自己画张图
3)开始编辑
这里我的构思已经好了,我准备用上点Config设置
放上渣图:
图挂了的话吱一声, 相信你们也看懂了这个是啥吧
然后呢,在下面加一个这就是叫起来EventHandler啦,但是没有给它可以用的东西怎么办? 我们赶紧写一个叫onPlayerJoin的方法,在@EventHandler下面加入:
- public void onPlayerJoin(PlayerJoinEvent evt){
- }
复制代码 这样,括号前面的onPlayerJoin你可以改名字,括号里面告诉EventHandler是什么样的东西这里我们创建玩家,所以说在大括号里面加入:
- Player p = evt.getPlayer()
复制代码 上面呢,就是创建一个Player类型的盒子,里面要存event里面找到的玩家果断输入";"结束句子
然后呢,我们开始给玩家发东西,这里我们会用到p.sendMessage()
这个就很简单啦,括号里面加上双引号打上消息就完事啦,比如:
p.sendMessage("欢迎你哈")
记得这个是针对玩家的, 你输入了String类型的文字,String还可以用一部分代数,一部分设定的文字打,用+号连接起来, 这里我们用bukkit.broadcastMessage()发给全服
所以我们用:
- 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
这样标准配置文件就完事了。现在我们编辑下标准的,只要加一行就行了
现在我们回到java文件,在onEnable的时候让他创建一个Config
直接加入this.saveDefaultConfig();
这样就可以了, 现在还没有自动读取系统,也就是说每次重启就会刷新config, 这个没事=w=默认配置改一下就可以了,要让他每次重启还看看有没有config很麻烦,现在不说。
这里我们不是有bukkit.broadcastMessage()吗?我们把括号里面的删掉,双引号也不留,全部统统改成this.getConfig().getString("PlayerJoinMessage")
这样一个基本的Config读取东西就完成了,这是多么的好
最后求你们一句:
读完吱一声,告诉我一下看了什么和评论,如果条件允许的话给点人气我就知足了,给人气自己也不丢什么,不想给人气清至少回复个帖子让我知道发生了什么。
--------------------------------------------------------------------------------------------------------------------
[groupid=844]SmoothCraft Work[/groupid]
作者: zwh007 时间: 2015-1-21 19:32
虽然我是插件渣渣。。。
但是看到LZ写这么认真一定得给个人气。
作者: Sakakibara 时间: 2015-1-21 19:33
前排留名=w=养肥了再看,感觉好棒!楼楼加油!
作者: 1052259852 时间: 2015-1-21 19:33
火钳刘明
作者: 猥★琐★菌 时间: 2015-1-21 19:42
火钳刘明
作者: xiaope 时间: 2015-1-21 19:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: 修改器很好玩 时间: 2015-1-21 19:56
不是要在包含事件中的类implement什么的吗?
作者: SAO_BAO 时间: 2015-1-21 19:58
以我的智商果然不适合做这个
作者: 修改器很好玩 时间: 2015-1-21 20:09
LZ你好,我想问一个问题。我在config文件中设置了PlayerJoinMessage,那么如何添加玩家的名字?因为player.getname在事件的方法里面,如何在config中调取?
作者: 215635430 时间: 2015-1-21 20:19
表示从不编插件... 不过还是要顶一下~
作者: berry64 时间: 2015-1-21 20:42
playerJoinMessage只是玩家进入游戏的时候给的自定义话语而已,没和插件里的有联系
要从config里面调取你可以试试this.getConfig().getString()
作者: White7829 时间: 2015-1-25 23:48
继续努力,造福各位腐竹
作者: 桃渊林 时间: 2015-3-29 07:20
@berry64 问问怎么读取config(java里什么东西可以判断config.yml是否存在,没有就用saveDefaultConfig(),有就getConfig()?)
作者: berry64 时间: 2015-3-29 09:36
if((plugin.getDatafolder + File.seperator + "config.yml").exists){
//如果存在干嘛...
} else {
// 如果不存在干嘛....
}
作者: 1527802264 时间: 2015-3-31 00:00
很不错哦,可惜我只找到0、6、73个教程是不是要点回到目录
作者: 1411690572 时间: 2015-5-4 20:03
如何当玩家加入时,判断某文件里有没有他的名字,没有就创建1个
作者: 桃渊林 时间: 2015-5-5 13:00
貌似掉了一个大括号
作者: antecer 时间: 2015-6-13 16:31
你貌似没有讲解,config.yml怎么才能支持中文,还有load config会提示Default system encoding may have misread config.yml form jar怎么办?
作者: y729320011 时间: 2015-6-28 22:03
完完全全的填鸭教学=w=~
作者: berry64 时间: 2015-6-29 08:42
回复的有点慢对不起
你可以这样:
public void onPlayerJoin(PlayerJoinEvent evt){
Player p = evt.getPlayer();
String playername = p.getName().toString();
File f = new File(这里填你要的文件名, 比如说this.getDataFolder+"/players"+"/"+name+".yml", 下面解释);
if(f.exists()){
//要是文件存在的话干什么
} else {
//要是文件不存在干什么
}
}
上面的File 解释: 这里的必须要填文件夹全部目录, 比如说你要存到c盘的asdf文件夹里面你就需要输入C:\asdf\文件名.后缀 this.getDataFolder是让插件自己获取他的文件夹, name 是玩家的名字, .yml 是后缀
这里要是插件名字是mmjj 然后玩家名字是kk那么就会是这样
new File("服务器目录/plugins/mmjj/players/kk.yml")
作者: berry64 时间: 2015-6-29 08:43
是的....
作者: EsHappyさん 时间: 2015-7-25 14:03
写的很好!
作者: kosgt 时间: 2015-7-26 15:08
LZ 太NB 了顶顶顶顶顶顶顶
作者: _信念_ 时间: 2015-8-22 03:30
Bukkit.getPluginManager().registerEvents(this, this);
一加入这句话就出错,这是什么原因?
作者: berry64 时间: 2015-8-22 12:17
是不是你没导入
作者: zxmzxm1125 时间: 2015-9-1 18:49
可以的,但是有些地方还是第一次看不懂。比如:config.yml那里
作者: LK520 时间: 2015-9-4 18:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: 494308843 时间: 2015-9-14 14:12
{:10_512:}还能更详细
刚准备学java的我
表示。。好多都看不懂
当时导入核心jar都导入了半天
作者: lingluoxiao 时间: 2015-9-15 10:51
理解了,一级棒。
作者: ybb135788 时间: 2015-9-17 13:27
吱————
作者: ttxzt 时间: 2016-2-8 20:56
本帖最后由 ttxzt 于 2016-2-8 21:06 编辑
JAVA小白在此跪拜{:10_512:}
作者: kjkj2173135 时间: 2016-2-16 20:53
JAR 创建失败。请参阅“详细信息”以获取更多信息。
资源与文件系统不同步:"/MyFirstPlugin/plugin.yml"。
作者: Ray009 时间: 2016-2-21 13:12
666666,顶!!!
作者: 烧饼大哥 时间: 2016-3-12 22:10
我就想问你不把写好的发过来,你自己看看你自己写的教程能看懂吗?bukkit.getPluginManager().registerEvents(this, this)
这两个this this到底是什么" ."这种常用符号的意义也没有
作者: cten 时间: 2016-5-18 16:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: zvw一VE 时间: 2016-6-15 13:32
这是后我们用到的是PlayerJoinEvent (详情请去 jd.bukkit.org/apidocs/ 查看)
先创一个插件,详情这个有讲
然后呢,在下面加一个
@EventHandler
在哪个下面?
作者: zvw一VE 时间: 2016-6-15 13:48
这里就基本完成啦,现在要注册一个EventHandler, 千万不能忘, 不然没效果的 所以我们创建一个onEnable() 上一章有讲过, 所以现在我们在大括号里面让他在启动插件的时候注册一个Event 很简单,就输入 bukkit.getPluginManager().registerEvents(this, this) 就完成了,这里bukkit代表服务器,getPluginManager()是获取插件 管理器,然后registerEvents是注册 保存,导出就可以啦 不懂格式。。。加个源码吧 是不是一般冒号后面都要加空格
作者: ~KU~ 时间: 2016-7-1 14:49
OnEnable那裏不是太懂……但是亂打亂撞做出來了Orz
作者: 茉丶梨SUMA 时间: 2016-7-27 13:57
楼主啊,你为什么不在每章节的最后
贴上一个成品的链接?
这样可以方便看不懂的小白对照着来啊
比如我。。前面几章看懂了,看的这里一脸懵逼
作者: lwaix 时间: 2016-8-7 08:09
那貌似叫监听,好像是叫这个
作者: BOY36 时间: 2016-8-7 15:04
加油加油
作者: 928641007 时间: 2016-8-23 13:14
并没有看懂,,能不能把写好的代码给我们看看?
作者: XiaoMao#205 时间: 2016-8-24 11:02
绝对良心!
作者: XiaoMao#205 时间: 2016-8-24 11:02
我这个JS渣也看懂了
作者: 天马司空 时间: 2016-8-28 09:31
上全部代码就没有意义了...
实在看不懂可以多翻几个教程贴
作者: 123飞 时间: 2016-10-14 22:14
看的时候有些英语单词不认识影响学习吗比如evt
作者: Laver 时间: 2016-11-10 11:10
楼主如何判断配置里是否存在某个字符串
比如我有一个配置文件如下
config:
name: aa
permission: ss.use
world:
- world
复制代码
我想判断下这个文件里有没有 permission 这一行
让判断的结果为boolean类型的一个值 如何判断 求大大解答
作者: berry64 时间: 2016-11-20 19:35
bukkit当找不到值的时候会返回null,这里你可以这样:
- if(config.get(config.permission) == null){
- //没有找到节点的代码
复制代码
作者: ILUVLS 时间: 2016-12-25 14:02
说好的零基础呢。。。
从第五章开始就什么都不知道了
作者: 辣条未至 时间: 2017-8-12 14:15
听不懂 求楼主解释
作者: Godpower 时间: 2017-8-13 11:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: 芒果酱i 时间: 2017-8-24 14:00
LZ 话说在下面加上@EventHandler 下面指的是哪里?怎么加?
作者: 晴空为你 时间: 2017-8-25 20:35
厉害,顶一个
作者: xiaonaoL 时间: 2017-9-3 23:38
666666666666
作者: 黑骑鸣佐 时间: 2017-11-4 00:20
哇这贴真的很不错!学到了,加油!!
作者: xuan1586849044 时间: 2017-11-17 23:16
跟着大佬学插件系列
作者: Drunker 时间: 2018-1-11 14:01
刚开始学习Java的萌新看见这个表示一脸蒙蔽
作者: n1109964492 时间: 2018-1-28 10:33
楼主,这个“@EventHandler”在插件下面加是什么意思呀
作者: Star小铭 时间: 2018-2-28 11:05
难度瞬间提高了啊= = 看不懂了
作者: xygu 时间: 2018-3-5 08:03
有点蒙蒙的感觉
作者: baizhi_D 时间: 2018-4-21 21:12
填的bukkit全都提示要B大写.................作者你是没用心还是习惯小写了
作者: Spartan859 时间: 2018-6-18 14:30
Bukkit.broadcastMessage(this.getConfig().getString("PlayerJoinMessage1")+p.getName()+this.getConfig().getString("PlayerJoinMessage2"));
两个message,一个在玩家名字前,一个在玩家名字后
比如PlayerJoinMessage1:欢迎
PlayerJoinMessage2:玩家加入游戏!
作者: luo2005 时间: 2018-7-18 13:11
看着一堆叉我懵了= =
作者: 631017918 时间: 2018-7-19 10:50
神乎其技,不服不行!
作者: Suibiantwo 时间: 2018-8-1 20:58
LZ你好!我现在打开jd.bukkit.org/apidocs/显示404咋办
作者: waidao 时间: 2018-9-8 20:14
哈哈,学会了上一章,看这一章一脸懵逼
作者: 3326109006 时间: 2019-1-1 11:24
看不太懂啊。OnEnable前一章没讲鸭
作者: kuikui851 时间: 2019-1-29 19:42
从这开始看不懂了
作者: 1257241185 时间: 2019-1-30 11:45
bukkit.getPluginManager().registerEvents(this, this) B没有大写啊
作者: ctnioub 时间: 2019-1-30 17:04
很好的教程,必须顶!
作者: 911010331 时间: 2019-1-31 06:40
顶...............
作者: 我是叶辉 时间: 2019-3-10 19:27
java从入门到转行
作者: qaz2296777814 时间: 2019-3-23 21:52
public class MyFirstPlugin extends JavaPlugin implements Listener
这是类名吗,可以加空格?还是继承关系看着不像呀
作者: 宝哥靓 时间: 2019-3-25 00:49
支持~~~~~~
作者: 猿汐 时间: 2019-4-5 13:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: mohuang521 时间: 2019-4-24 12:03
onEnable里面如何注册啊?
作者: mohuang521 时间: 2019-4-26 08:59
是我的错觉嘛= =!
作者: NGK3 时间: 2019-4-26 11:21
本帖最后由 NGK3 于 2019-4-26 11:22 编辑
注册什么?啊?EventHandler么?
好好看教程呀
bukkit.getPluginManager().registerEvents(this, this)
作者: heatWater 时间: 2019-4-26 14:00
神乎其技,不服不行!
作者: mohuang521 时间: 2019-4-26 14:32
这个我知道了,刚发完问题突然发现瞬间明白了= =!
作者: 筱柒儿 时间: 2019-5-19 07:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: lucksheep 时间: 2019-6-25 19:37
加油加油 贼厉害
作者: f1a2f1a 时间: 2019-6-29 00:14
继续打卡深入学习
作者: f1a2f1a 时间: 2019-6-29 07:48
持续打卡学习
作者: 随风成雨 时间: 2019-7-3 14:31
请问一下 教程中所写的注册插件onEnable()这个是写在哪里?
作者: shi4337744 时间: 2019-7-5 06:09
看着大佬分享技术,本人表示一脸懵QWQ
作者: qq1937625541 时间: 2019-8-15 11:39
然后呢,在下面加一个 @EventHandler (这个下面指的是哪个下面。。。)
作者: qq1937625541 时间: 2019-8-15 12:20
从bukkit.broadcastMessage("大家欢迎玩家:" + p.getName()+"加入服务器!");加入这个东西开始,直接不会了
作者: Zi_Gao 时间: 2019-9-11 16:56
这个很难看懂啊。一小段一小段展示,最好啥也不知道。是否在写完一句或展示全部或在最或吧几个文件全部展示一下
作者: 闪光皮皮瓜 时间: 2019-10-13 17:27
本帖最后由 闪光皮皮瓜 于 2019-10-13 17:29 编辑
- <blockquote><span style="font-size: 14px;">@EventHandler</span>
复制代码- PlayerJoinMessage1: 大家欢迎玩家:
- PlayerJoinMessage2: 加入服务器!
复制代码
我可能不太聪明,我的java基础全学完了,是这个样子吗
作者: 闪光皮皮瓜 时间: 2019-10-13 17:30
- @EventHandler
- public void onPlayerJoin(PlayerJoinEvent evt) {
- Player p = evt.getPlayer();
- Bukkit.broadcastMessage(this.getConfig().getString("PlayerJoinMessage1")+p.getName()+this.getConfig().getString("PlayerJoinMessage2"));
- onEnable();
- Bukkit.getPluginManager().registerEvents(this,this);
- this.saveDefaultConfig();
- }
复制代码- PlayerJoinMessage1: 大家欢迎玩家:
- PlayerJoinMessage2: 加入服务器!
复制代码
我可能不太聪明,我的java基础全学完了,是这个样子吗
作者: berry64 时间: 2019-11-15 04:44
差不多很接近了,应该这样:
- public void onEnable(){
- Bukkit.getPluginManager().registerEvents(this,this);
- this.reloadConfig();
- }
- [url=home.php?mod=space&uid=2017888]@EventHandler[/url] public void onPlayerJoin(PlayerJoinEvent evt) {
- Player p = evt.getPlayer();
- Bukkit.broadcastMessage(this.getConfig().getString("PlayerJoinMessage1")+p.getName()+this.getConfig().getString("PlayerJoinMessage2")); }
复制代码
作者: 小狐狸FM 时间: 2019-11-25 21:31
感觉排版有点乱
作者: 某晨路过 时间: 2019-12-3 14:39
MCBBS有你更精彩~
作者: l小魂l 时间: 2020-1-4 00:43
哇 你这教程导包都不说的吗?
作者: 3100026750 时间: 2020-1-11 17:38
学到了!!
作者: s.acer 时间: 2020-1-26 21:42
谢谢大佬给的精华帖子 MCbbs有你更精彩
作者: 2723219233 时间: 2020-2-11 08:06
en.................................看不懂
作者: Today一MC 时间: 2020-2-12 07:33
很详细,再来多点
作者: 2697552240 时间: 2020-2-15 00:27
原来如此,感觉好简单