跳到主要内容

Nightbreak 设置和内容管理

本页面是 Nightbreak 管理插件的共享设置指南。

它直接适用于:

  • EliteMobs
  • BetterStructures
  • FreeMinecraftModels
  • EternalTD
  • ResurrectionChest
  • WorldCannon

这些插件现在共享相同的整体生命周期:

  1. 安装插件和所有必需的硬依赖项。
  2. 启动服务器一次,以便生成文件和菜单。
  3. 如果插件有首次设置命令,请运行它。
  4. 使用 /nightbreaklogin <token> 关联 Nightbreak 令牌。
  5. 使用插件设置菜单浏览、安装、启用、禁用和更新内容。
  6. 当您需要更快的初始引导时,使用插件的批量下载/更新命令。

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。请参阅手动导入与游戏内管理