原代码
从这章开始将不会把代码打在文内
会直接引用Github上面放的原代码。
1.这章大概要做的事
创建玩家各自的设置档
使用/sethome 参数 ,保存多个座标到设置档
使用/home 参数 ,读取设置档的座标,并发送过去。
创建玩家各自的对象(类似身分证,纪录一些个人的东西)
并在玩家死亡时保存座标至对象里面。
使用/back指令发送到该死亡座标。
2.创建事件监听
首先到Spigot的说明书网站,找到需要的监听。(说明书链接)
目前需要用到三种监听事件。
玩家登录。(在登录时创建设置档,还有玩家对象)
玩家注销。(删除玩家对象,可以节省内存)
玩家死亡。(纪录死亡座标到玩家对象)
有关事件可以查找有evetn的地方。
第一个要找玩家登录的事件,因为这事件只有玩家有。
可以到event.player里面找,事件名称的英文意思都蛮明显的
,如果不确定可以点下去,看里面的说明。
注销也是在event.player里面找。
第三个玩家死亡事件,因为不只有玩家会死。
所以要到event.entity实体有关的事件去找。
找完就创建一个文件夹listener,来存放有关事件监听的对象。
还有创建PlayerListener对象。
在把刚刚查到的事件方法,加到PlayerListener里面去。
代码
在主类注册此监听对象(代码)
3.创建个人对象和设置档
个人对象类似身分证,但可以保存更多的东西。
创建一个playerdata文件夹来存放有关个人的东西。
在里面创建PlayerData对象。
在PlayerData里面加入一些设置。
首先加入设置档的创建、读取、还有保存功能。
在加入sethome、home、死亡存位置和/back回到死亡位置的方法。
代码
4.把创建的个人对象存放至Map
当一个对象要在各种地方使用,通常都会存放到Map里面,以方便获取。
Map类似Excel只是他只有两行。
我们可以利用第一行的值,来获取第2行相对应的东西。
因为玩家UUID是唯一的(名子可以改),通常会用UUID来当关键字。
玩家1UUID | PlayerData |
玩家2UUID | PlayerData |
玩家3UUID | PlayerData |
先创建一个文件夹manager来存放Map相关的东西。
在里面创建PlayerManger对象。
在PlayerManger加入一行静态的Map,这样Map就完成了。
5.把玩家对象和Map放置监听使用
玩家登录时创建PlayerData(代码)
玩家注销时移除PlayerData。
玩家死亡时保存死亡位置
6.创建指令
在指令对象里面加入代码,因为刚刚方法都写在PlayerData对象里面了
所以只要使用就好,顺便发个消息让用户知道,有使用指令。
指令提示就不多说了。
代码
7.测试是否有错误
登录确实生成设置档
因为图片不好表示结果,就放个影片代替。