跳到主要內容
平台

Folia 插件

Folia 的分區多執行緒改變了插件排程工作的方式。Codexe 如何產生對 Folia 安全的插件,以及需求中要寫些什麼。

更新於

本頁內容
  1. Codexe 的不同做法
  2. 需求要寫什麼
  3. 建置與驗證
  4. 常見問題

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。
Folia 插件 | Codexe Docs