Nightbreak 设置和内容管理
本页面是 Nightbreak 管理插件的共享设置指南。
它直接适用于:
- EliteMobs
- BetterStructures
- FreeMinecraftModels
- EternalTD
- ResurrectionChest
- WorldCannon
这些插件现在共享相同的整体生命周期:
- 安装插件和所有必需的硬依赖项。
- 启动服务器一次,以便生成文件和菜单。
- 如果插件有首次设置命令,请运行它。
- 使用
/nightbreaklogin <token>关联 Nightbreak 令牌。 - 使用插件设置菜单浏览、安装、启用、禁用和更新内容。
- 当您需要更快的初始引导时,使用插件的批量下载/更新命令。
MagmaCore 实际共享的内容
MagmaCore 是 Nightbreak 管理流程背后的共享层。它提供:
- 共享命令
/nightbreaklogin <token>(权限nightbreak.login,默认为 OP) - 共享命令
/nightbreaklogout,用于断开服务器与其 Nightbreak 账户的关联(权限nightbreak.login,默认为 OP) - 共享命令
/logify,用于将当前服务器日志上传到 mclo.gs(权限logify.*,默认为 OP) - 共享命令
/nightbreak plugins,用于浏览 Nightbreak 插件目录(权限nightbreak.plugins,默认为 OP) plugins/MagmaCore/nightbreak.yml中的共享令牌存储- 插件设置菜单使用的共享设置菜单原语
- 共享的 Nightbreak 访问、版本和下载检查
- 将文件下载到所属插件
imports文件夹的共享批量下载逻辑 - 共享的更新日志收件箱,会在插件或已安装内容包有未读发布说明时于游戏内告知管理员(参见 Nightbreak 更新日志通知)
- 每个 Nightbreak 管理插件都会在自己的根命令下注册的标准子命令集(见下文)
/nightbreaklogin、/nightbreaklogout、/logify 和 /nightbreak 都由首先加载 MagmaCore 的任一 Nightbreak 管理插件在每个服务器上注册一次,因此无论运行时哪个插件“拥有”它们,这些命令都可用。
共享的标准子命令
下面这些子命令并非由每个插件各自编写。MagmaCore 会把同一套实现注册到插件所声明的任意根命令下(/em、/bs、/fmm、/etd……),这正是它们在各处行为完全一致的原因。
| 子命令 | 作用 | 权限 |
|---|---|---|
setup | 打开该插件的设置菜单。仅限玩家。 | 插件的 setup 权限 |
initialize | 当插件注册了首次设置流程时,为玩家打开该菜单。预设模式并非必要条件;FreeMinecraftModels 也注册了此命令。请查看各插件的命令页面。 | 插件的 initialize 权限 |
recommendedplugins | 显示推荐的配套插件(游戏内为菜单,控制台为聊天列表)。 | 插件的 setup 权限 |
downloadpluginupdate | 只下载插件更新 jar,不下载内容。 | 插件的 admin 权限 |
downloadall | 下载插件更新,然后下载所有可用内容。 | 插件的 admin 权限 |
downloadallcontent | 下载所有可用内容,不更新插件。只有提供内容包的插件才会注册它。 | 插件的 setup 权限 |
updatecontent(别名 updateallcontent) | 只下载已过期内容的更新。只有提供内容包的插件才会注册它。 | 插件的 setup 权限 |
forcereinstallcontent <package|all> | 即使已安装版本已经是最新的,也通过正常的认证导入与重载路径重新下载内容。all 覆盖每一个已下载、已安装或已过期的包;如果某个包的文件完全丢失,可直接传入它的包 slug。只有提供内容包的插件才会注册它。 | 插件的 admin 权限 |
每一列背后确切的权限节点由插件自行选择,因此请查阅该插件自己的页面了解其节点名称。initialize 是首次引导流程 —— 它不会替代设置菜单或内容管理命令。
由于 downloadall 是从插件更新开始的,当账户没有令牌或令牌认证失败时,它会在进入内容步骤之前停止。请先修好令牌,然后重新运行它。
MagmaCore 还有一个单独的插件启动初始化系统,但这与此处记录的面向玩家的 initialize 命令不同。
自动更新
每个由 Nightbreak 管理的插件都会在自己的 config.yml 中写入一个共享键:
nightbreak:
autoDownloadPluginUpdates: false
当设为 true 时,该插件会在启动几分钟后自动下载:
- 可用的插件更新 jar,以及
- 它所管理的任何已过期内容包的更新文件。
已下载的插件与内容更新会在服务器重启之后才生效 —— 不会有任何东西被热替换进正在运行的服务器。该设置默认为 false,因此开箱即用时你仍然使用游戏内的更新按钮。
自动下载插件 jar 同时需要有效的账户令牌,以及关联 Nightbreak 账户上处于生效状态的 supporter Patreon 会员资格。缺少其一,下载都会被拒绝,插件会记录原因。下载还会经过校验:jar 在被放入服务器的 update 文件夹之前,会做校验和比对并验证它确实是一个真正的插件产物,校验失败的文件会被丢弃而不是安装。
与自动下载设置无关,每个插件还会大约每小时静默地重新检查一次是否有更新版本,以便设置菜单能显示准确的更新状态。该检查本身绝不会下载任何东西。
服务器所有者推荐流程
1. 首先安装插件
将插件 jar 文件和所有必需的硬依赖项放入 plugins/,然后启动服务器一次。
2. 运行首次设置流程
如果插件提供 initialize 命令,请先使用它。当前菜单的设计目的是:
- 将首次设置标记为已完成
- 引导您进行 Nightbreak 账户关联
- 引导您进入当前的设置菜单
- 说明何时手动导入仍然有效
当插件注册了首次设置流程时,为玩家打开该菜单。预设模式并非必要条件;FreeMinecraftModels 也注册了此命令。请查看各插件的命令页面。
3. 关联您的 Nightbreak 账户
前往 Nightbreak 账户页面,获取您的服务器令牌,然后运行:
/nightbreaklogin <token>
令牌通过 MagmaCore 共享,因此一个已关联的令牌可以被该服务器上所有兼容的 MagmaGuy 插件重复使用。
4. 使用设置菜单进行日常内容管理
设置菜单是以下内容的当前权威来源:
- 包状态
- 访问状态
- 已安装与已下载的内容
- 需要修复的部分安装内容
- 过时的内容
- 按类别筛选的内容
如果您有已关联的令牌,设置菜单是安装和更新内容的推荐位置。
5. 需要速度时使用批量安装/更新
当您想快速搭建服务器时使用 downloadall 命令,当您想刷新所有过时内容时使用 updatecontent 命令。
共享批量下载器仅尝试以下 Nightbreak 管理的包:
- 具有 Nightbreak slug
- 对已关联的令牌可访问
- 尚未下载或标记为过时
交互式批量命令在至少一次下载成功之后,会要求所属插件重新加载。启动时的自动内容下载则刻意不重新加载插件;它们会在服务器重启之后生效。
共享概念
已下载与已安装
一个包可以在本地存在但未启用。确切含义因插件而略有不同,但设置菜单状态比 imports 中是否存在 zip 文件更重要。
批量下载也会进入与手动导入使用的相同插件 imports 文件夹,在插件特定的导入/重载步骤完成之前。
访问感知内容
设置菜单现在可以区分以下内容:
- 对您的令牌可用
- 需要购买或解锁
- 已安装
- 仅部分安装
- 已下载但已禁用
- 已过时
手动导入仍然有效
Nightbreak 管理的插件仍然支持手动导入工作流。手动导入现在是备用路径,而非默认路径。请参阅手动导入与游戏内管理。
不使用此流程的插件
并非此 Wiki 中的每个插件都使用 Nightbreak 管理的可下载内容。
- BetterFood 不使用 Nightbreak 包管理
- ResourcePackManager 管理资源包,而非 Nightbreak DLC 包
这两个插件仍然会注册共享的设置外壳,以及共享的插件更新命令和更新日志命令;它们缺少的只是 Nightbreak 内容包。
ResurrectionChest 和 WorldCannon 不是例外 —— 两者都声明了内容包,都注册了共享的内容子命令,也都运行共享导入器,因此它们同样接受手动放置的包 zip。请参阅手动导入与游戏内管理。