平台
Folia 插件
Folia 的分區多執行緒改變了插件排程工作的方式。Codexe 如何產生對 Folia 安全的插件,以及需求中要寫些什麼。
更新於
Folia 是 Paper 的分支,會在不同的執行緒上處理世界中不同區域的 tick。它沒有單一的「主執行緒」,所以一般的 Bukkit 排程(Bukkit.getScheduler().runTask(...))在這裡是無效的。
#Codexe 的不同做法
當你選擇 Folia 類型時,產生的插件會:
- 用區域、實體、全域區域和非同步排程器來排程工作,而不是 Bukkit 排程器,
- 在
plugin.yml中宣告folia-supported: true, - 以 Folia API 為基礎建置(Maven)。
#需求要寫什麼
Spigot 與 Paper 指南裡的所有內容,再加上跟時間有關的細節:「3 秒後傳送」、「每分鐘對每位線上玩家重複一次」。Folia 的程式碼差異最大的就是這些地方。
#建置與驗證
Folia 插件在變成就緒之前,會像其他插件一樣經過編譯和檢查。編譯成功代表程式碼能以 Folia API 建置。執行時的執行緒安全仍取決於邏輯本身,所以請在 Folia 伺服器上測試。
#常見問題
| 症狀 | 可能的原因 |
|---|---|
出現跟排程器有關的 UnsupportedOperationException | 有程式碼(通常來自某個相依套件)使用了 Bukkit 排程器。請在聊天中要求把它改用區域或實體排程器。 |
| 插件在 Folia 上拒絕載入 | plugin.yml 中少了 folia-supported: true。 |