BetterFood 兼容性
运行时目标
当前仓库目标:
- 插件版本:
1.5.5 - Bukkit
api-version:1.21.4 - Spigot API 构建目标:
26.3-R0.1-SNAPSHOT - Java:
21
命令
插件使用:
/betterfood/bf
面向玩家的子命令专注于切换:
- 自动进食(
toggleEating,或不带参数直接执行/betterfood) - 操作栏上的食用反馈消息(
toggleMessage)
管理员子命令(需要 betterfood.admin)提供了共享的 Nightbreak 工具:
setup—— 打开游戏内设置菜单recommendedplugins—— 显示与 BetterFood 搭配良好的插件。BetterFood 目前在共享推荐目录中没有任何条目,因此该命令会打开一个空菜单,并告知你当前没有额外的推荐(控制台发送者会以聊天文本收到同样的提示)downloadpluginupdate/downloadall—— 如果有可用更新,则下载插件更新applypluginupdate—— 无需重启服务器即可应用已下载的插件更新(参见免重启插件更新)downloadallcontent—— 提示 BetterFood 没有内容包
Tab 补全按权限和已输入的内容过滤:toggleEating 和 toggleMessage 只向拥有 betterfood.user 的发送者显示,downloadpluginupdate、applypluginupdate、downloadallcontent、setup 和 recommendedplugins 只向拥有 betterfood.admin 的发送者显示。downloadall 是有效别名,但不会出现在建议中。两个开关仅限玩家使用:显式的 toggleEating / toggleMessage 会向非玩家发送者回复 "BetterFood settings can only be changed in-game.",不带参数的 /betterfood 则引导控制台使用更新命令。没有 betterfood.user 的玩家会收到权限不足提示。未知子命令或超过一个参数会显示用法。管理员能看到两个开关以及更新、设置和推荐命令;其他人只看到两个开关。用法中没有列出 downloadallcontent,但该命令可以执行,也会出现在管理员的 Tab 补全中。
共享的 MagmaCore 命令
内置的 MagmaCore 工具会在启动过程中添加以下命令。全局命令在加载时注册,但前提是名称尚未被占用;服务器上有其他 MagmaGuy 插件时,首次注册会保留对应的名称。BetterFood 的版本说明命令在插件启用时初始化:
/nightbreak plugins—— 浏览插件目录,在游戏内以菜单形式呈现,在控制台则以聊天列表形式呈现(nightbreak.plugins,默认op)。不带参数的/nightbreak只会打印用法提示行。/nightbreaklogin <token>和/nightbreaklogout—— 连接和断开共享的 Nightbreak 账户令牌(nightbreak.login,默认op)/logify—— 将当前服务器日志上传到 mclo.gs(logify.*,默认op)/betterfoodchangelog [dismiss|disable]—— 显示未读的 BetterFood 版本说明。该命令按插件加上了命名空间,因此不会发生冲突;如果/betterfoodchangelog出于某种原因已被占用,它会回退为betterfood:betterfoodchangelog之类的标签。
更新日志命令仅限管理员且仅限游戏内使用:对于没有管理员权限的发送者(或控制台),它会回复 "This command is only available to plugin administrators in-game."。如果玩家是 op,或者拥有 betterfood.admin 或 betterfood.*,就会被视为管理员。管理员在加入服务器后不久也会收到未读版本说明的提醒,除非他们执行过 /betterfoodchangelog disable。已读/已忽略状态会按玩家存储在 plugins/BetterFood/nightbreak-changelogs.yml 中。
共享流程请参阅 Nightbreak 令牌、Nightbreak 设置 和 更新日志通知。
权限
betterfood.user(默认true)—— 控制自动进食监听器以及玩家开关。betterfood.admin(默认op)—— 控制插件更新的下载与应用、设置菜单和推荐插件命令。它同时也算作更新日志命令的管理员权限。nightbreak.plugins、nightbreak.login和logify.*(均默认op)—— 由内置的 MagmaCore 工具为上述共享命令注册,并未在 BetterFood 的plugin.yml中声明。
其他集成
- 已启用 bStats 统计(插件 id 为
4557)—— 如果想退出,可通过 bStats 配置在全局范围内禁用。 - BetterFood 现已附带共享的 MagmaCore 工具。它会生成一个包含两个键的
config.yml:nightbreak.autoDownloadPluginUpdates开关(默认false)和nightbreak.applyPluginUpdatesWithoutRestart(默认never,参见免重启插件更新),并在启动数分钟后检查nightbreak.io是否有更新版本(该延迟按插件错开,以免多个 MagmaGuy 插件同时对外请求),之后大约每小时检查一次。只有结果发生变化时才会记录日志,因此控制台不会每小时被刷屏。BetterFood 不传递任何 SpigotMC 资源 ID,其目录条目中也没有,因此没有 SpigotMC 版本回退。 - 有更新可用时加入服务器的 OP,会在登录几秒后收到带有下载页面链接的聊天提示。只要已安装版本落后,每次加入都会发送。
- 账户令牌保存在插件文件夹之外的共享文件
plugins/MagmaCore/nightbreak.yml中,因此只需链接一次即可覆盖服务器上的每个 MagmaGuy 插件。 - 没有外部插件依赖;食物逻辑仅监听原版的
FoodLevelChangeEvent。
免重启插件更新
下载好的插件更新会在服务器的更新文件夹中等待。/betterfood applypluginupdate 可以在不重启服务器的情况下换入新版本:先禁用 BetterFood,替换其 jar,然后加载并启用新版本。玩家的进食和消息开关保存在玩家身上,因此会被保留。
在以下情况下,该命令会拒绝执行并给出提示:没有等待中的已下载更新;等待中的更新并不比当前运行的版本新,或其 jar 无效;有其他作者的插件依赖或软依赖 BetterFood;或者另一次插件替换正在进行。如果新版本启用失败,会重新加载之前的 jar,更新则继续留在更新文件夹中,等待下次重启。
config.yml 中的 nightbreak.applyPluginUpdatesWithoutRestart 决定任何插件更新下载完成后会发生什么,无论更新来自 downloadpluginupdate、downloadall、设置菜单还是自动下载:
| 值 | 行为 |
|---|---|
never | 默认值。更新等待下次重启。拥有 betterfood.admin 或 betterfood.* 的在线管理员会被告知需要重启,并看到 applypluginupdate 命令 |
when-empty | 如果没有玩家在线,则立即应用更新;否则每 30 秒检查一次,在服务器无人时应用 |
immediately | 下载一完成就应用更新 |
其他任何值都按 never 处理。