跳到主要内容

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 处理。