跳到主要内容

Nightbreak 更新日志通知

MagmaCore 内置了一个共享的更新日志收件箱。每个使用 MagmaCore Nightbreak 更新器的插件都会获得该功能,并用它在游戏内告知服务器管理员:插件本身或其已安装的某个内容包有尚未阅读的发布说明。

由于收件箱位于 MagmaCore 中,它在各处的行为完全一致。不同之处只有命令名称和所报告的插件。

命令

每个插件都会注册自己的更新日志命令,由该插件的根命令加上 changelog 组成 —— 而不是根据显示名称生成,因此标签会跟随该插件所使用的根命令:

插件命令
EliteMobs/emchangelog
BetterStructures/bschangelog
EternalTD/etdchangelog
WorldCannon/wcchangelog
FreeMinecraftModels/freeminecraftmodelschangelog
ResurrectionChest/resurrectionchestchangelog
BetterFood/betterfoodchangelog
ResourcePackManager/resourcepackmanagerchangelog

如果该标签在服务器上已被占用,插件会改为注册一个带命名空间的后备标签;若完全找不到无冲突的标签,则会记录一条警告。

用法作用
/<root>changelog打开未读的发布说明。
/<root>changelog dismiss将刚才显示给你的说明标记为已读。
/<root>changelog disable永久停止向你发送自动提醒。命令本身仍然可用。

该命令仅限游戏内使用,且仅限管理员。只要你是 OP,或拥有该插件的通配符权限、管理权限、setup 权限或 initialize 权限,就算作管理员。

加入时的提示

当管理员加入服务器时,插件会等待几秒钟,然后在有未读说明的情况下发送一条简短的聊天提示,其中带有可点击的 VIEW CHANGELOG 按钮。已经在线的管理员在后台抓取完成并发现新内容时也会被通知一次。

只要未读发布集合没有变化,同一条提示就不会重复发送,因此一次正常的游戏会话只会收到一次提醒,而不是连续不断的消息。运行过 disable 的管理员永远不会收到通知。

说明的展示方式

在 Minecraft 1.21.6 及更新版本上,说明会在一个对话框窗口中打开,其中带有 Dismiss These UpdatesNever Show Changelogs 按钮。在更旧的服务器上,相同的内容会打印到聊天栏,并附带等效的命令说明。

单次查看最多显示 20 个发布,按从新到旧排列,并在插件自身与每个受跟踪的内容包之间交错显示。超出部分会以「已省略发布数量」的形式报告。关闭一整页后,较旧的说明仍会保留在队列中,后续消息会提供 VIEW NEXT 按钮。

跟踪的内容

  • 插件自身的发布,取自其公开的 Nightbreak 更新日志。
  • 每个具有 Nightbreak slug 的已安装内容包,取自该包的公开更新日志。

插件首次带着收件箱运行时,会将当前所处的版本记录为跟踪基准线,并只显示该当前发布。从那之后,它会显示记录的基准线与你现在运行的版本之间的所有发布,因此一次性跨越多个版本升级时,会得到一份涵盖整个跨度的汇总,而不是什么都没有。

发布正文来自 Nightbreak,并且始终以纯文本呈现。如果无法连接到更新日志服务,插件会在后台重试 —— 大约 15 分钟后开始,并逐步退避至最长约四小时 —— 同时在此期间显示已缓存的内容。

已读状态存储在哪里

每个插件将自己的状态存储在:

plugins/<PluginName>/nightbreak-changelogs.yml

<PluginName> 是插件的内部名称,并不总是与其维基名称相同: WorldCannon 的文件夹是 plugins/CannonRTP

该文件保存版本跟踪基准线、已抓取发布说明的缓存,以及按 UUID 索引的每位管理员的已读与退订状态。它不包含任何账户令牌,也不包含玩家 UUID 之外的任何个人数据。

删除该文件会重置跟踪:插件会把当前版本当作全新的基准线,每位管理员的已读状态也会从零开始。

如何关闭

没有服务器范围的总开关。提醒是按管理员逐个退订的,使用:

/<root>changelog disable

这会把当前所有可用内容标记为已读,并在插件的状态文件中为该玩家记录退订标记。之后该命令仍然可用,方便他们手动查看 —— 停止的只是自动提示。