原代碼
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後