原代码
1.这章大概要做的事
基本会做个简单的公告功能
2.创建.yml设置档
右键resources文件夹并选择 新建->文档
输入announcement.yml,如果觉得太长可以换自己喜欢的。
输入完就案Enter。
再来输入内容。
简单的公告有多久发一次公告。
是否随机发送。
还有公告列表。
文本1那个只只做范例用。
announcement: long: 10 random: false Test: ‘文本1’ List: – ‘公告1’ – ‘公告2’ – ‘公告3’ – ‘公告3’ |
3.在开服时把设置档复制到插件文件夹
先创建一个config文件夹,来专门存放有关设置的东西。
在创建一个CopyConfig对象来处理文档复制的动作。
再来输入CopyConfig的内容
BackHome.backHome.saveResource(“announcement.yml”, false); |
在来把写好的方法,放到开服时运行。
CopyConfig.copy(); |
再来要测试是否会复制文档
不过在那之前要再做个设置。
每次测试都要打开编译出文件的文件夹,再把文件复制到服务器的plugins文件夹,这点有点麻烦。
所以我们要做个测定把编译出来的文件,直接顺便复制到你的服务器plugins文件夹。
首先打开build.gradle文档,在后面加在这段。
这段意思是编译完成后,把编译文件复制到你指定的路径。
task copyJar(type: Copy) { from jar into ‘C:/Users/Gary/Desktop/1.16.5/plugins’ } build.finalizedBy copyJar |
怕打错,可以直接打开资夹,复制上面路径,斜线的\\和/都是一样意思,只是我不喜欢\\就改成/。
编译后,打开服务器测试。
可以看到有文件夹,和设置文件生出。
4.获取设置档的值,来发送公告。
首先创一个announcement文件夹来放置公告功能。
再创一个SendMessage对象来发送公告。
再输入SendMessage的内容。
先做按照顺序公告的功能。
File file = new File(BackHome.backHome.getDataFolder(), “/announcement.yml”);
int time = aConfig.getInt(“announcement.long”); boolean random = aConfig.getBoolean(“announcement.random”); String test = aConfig.getString(“announcement.Test”); List<String> aList = aConfig.getStringList(“announcement.List”); BukkitRunnable bukkitRunnable = new BukkitRunnable() { |
一样把SendMessage.send();放到启动时运行。
测试效果
再来加入随机发送的功能。
只需要稍微修改就能达到随机发送公告的功能。
如果 想要连控制台也发送,只要加上一行即可。
把设置档的random改为trure,再开启服务器测试。
效果
5.重新读取设置档功能
目前做的,都只会在开启服务器时读取设置。
每次修改都要重启,这很麻烦,所以要做个reload指令来重新读取设置内容。
先在config文件夹创建一个LoadConfig对象来处理文档的读取和储数据内容。
在输入代码
在把SendMessage里面的值改用到LoadConfig里面的值。
只要把值前面加上LoadConfig.就可以。
有时会发现有地方会亮一些光。
这边就是有些小错误,不过不解决可能也不会有问题。
如果觉得不好看,可以选择右上角的惊叹号。
他会说明显示的原因。
可以右键->显示快速修复->在选显示出来的方法来解决这问题。
不一定都会给你方法解学,所以这方法只能解决简单的问题。
结果,后面+个L单位就没问题了。
在把LoadConfig.load();方法加在开服时和使用reload指令时。
因为SendMessage.send();要使用LoadConfig.load();里面的值,所以要放在SendMessage.send();前面运行。
顺边加进提示里面,让用户知道有这指令。
测试效果
reload前
更改公告内容reload后