跳到正文
平台

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