平台
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。 |