【攻略】插件制作教学-3.设置档应用

原代码

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() {
int order = 0;
@Override
public void run() {
for(Player player : Bukkit.getOnlinePlayers()){
player.sendMessage(aList.get(order));
}
order++;
if(order >= aList.size()){
order = 0;
}
}
};

一样把SendMessage.send();放到启动时运行。

测试效果

再来加入随机发送的功能。
只需要稍微修改就能达到随机发送公告的功能。

如果 想要连控制台也发送,只要加上一行即可。
把设置档的random改为trure,再开启服务器测试。
效果

5.重新读取设置档功能

目前做的,都只会在开启服务器时读取设置。
每次修改都要重启,这很麻烦,所以要做个reload指令来重新读取设置内容。

先在config文件夹创建一个LoadConfig对象来处理文档的读取和储数据内容。
在输入代码
在把SendMessage里面的值改用到LoadConfig里面的值。
只要把值前面加上LoadConfig.就可以。
有时会发现有地方会亮一些光。
这边就是有些小错误,不过不解决可能也不会有问题。
如果觉得不好看,可以选择右上角的惊叹号。
他会说明显示的原因。
可以右键->显示快速修复->在选显示出来的方法来解决这问题。
不一定都会给你方法解学,所以这方法只能解决简单的问题。
结果,后面+个L单位就没问题了。
在把LoadConfig.load();方法加在开服时和使用reload指令时。
因为SendMessage.send();要使用LoadConfig.load();里面的值,所以要放在SendMessage.send();前面运行。
顺边加进提示里面,让用户知道有这指令。
测试效果
reload前
更改公告内容reload后

6.加入讨论群



本文来自网络,不代表3楼猫立场,转载请注明出处:https://www.3loumao.org/16290.html
返回顶部