【攻略】插件製作教學-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?variant=zh-tw
返回頂部