跳到主要内容

EternalTD 命令

EternalTD 注册根命令:

/eternaltd
/etd

设置期间使用的 Nightbreak 账户命令是由 MagmaCore 注册的独立顶层命令:

/nightbreaklogin [token]
/nightbreaklogout

两者都受 nightbreak.login(default: op)保护。不带令牌的 /nightbreaklogin 会打印一个 nightbreak.io 链接;你在那里批准后,服务器即已关联。/nightbreaklogout 会从服务器清除已保存的 Nightbreak 账户令牌。

MagmaCore 还会注册一个按插件划分的更新日志命令 /etdchangelog,它同样是一个独立的顶层命令(参见发布更新日志)。

设置和内容管理​

这些子命令大多由 MagmaCore 通过 NightbreakPluginBootstrap.registerStandardCommands 注册。它们在所有 Nightbreak 插件之间共享,并随 EternalTD 一起发布,因为 MagmaCore 被着色(shade)进了该插件。

命令发送者当前用途
/etd任何人显示设置和内容快速入门帮助。需要 eternaltd.*;没有该权限的发送者会收到 "You do not have permission to run this command!"
/etd initialize玩家打开首次设置菜单。需要 eternaltd.*。
/etd setup玩家打开 EternalTD 设置菜单(包浏览器,加上共享的插件更新、推荐插件和自动更新控制项)
/etd recommendedplugins任何人打开(玩家)或输出(控制台)EternalTD 的推荐配套插件
/etd downloadpluginupdate任何人如果有可用的 EternalTD 插件更新,则下载它。更新在下次重启后生效,除非 nightbreak.applyPluginUpdatesWithoutRestart 让它更早应用
/etd applypluginupdate任何人无需重启即可应用已下载的 EternalTD 插件更新。EternalTD 会被禁用,再以新 jar 重新启用,因此正在进行的关卡会结束。没有等待中的更新版本、另一次插件替换正在进行,或有其他作者的插件依赖 EternalTD 时,该命令会被拒绝;如果新 jar 无法启用,会重新加载之前的 jar
/etd downloadall任何人下载 EternalTD 插件更新以及所有可用内容
/etd downloadallcontent任何人下载所有可用的 EternalTD 内容(不含插件更新)
/etd updatecontent任何人下载过时的 EternalTD 内容的更新
/etd updateallcontent任何人/etd updatecontent 的别名
/etd forcereinstallcontent <package&#124;all>任何人通过正常的、经过认证的导入/重载流程重新下载内容,即使已安装的版本已经是最新的。all 覆盖所有被检测为已下载的包;一个 Nightbreak slug(支持 Tab 补全)则针对单个包,即便它的文件已完全缺失也仍然有效。当某个包的文件被删除或损坏时,用它来修复。
/etd install任何人如果 ResourcePackManager 可用,则向其注册官方资源包并请求重新加载。否则下载资源包、计算哈希并更新 server.properties,此方式需要重启服务器。注册失败时也会改用 server.properties。
/etd reload任何人原地重启 EternalTD(完整的禁用、加载、启用循环)

管理员注意事项:

  • EternalTD 的 plugin.yml 声明了两个权限节点,均为 default: op。eternaltd.* 授予管理员、设置和调试命令的访问权限。eternaltd.match.bypass 允许玩家传送进其他玩家正在进行的关卡世界而不会被送出(参见对战规则)。
  • 所有面向管理员的命令都归结到 eternaltd.*:setup、recommendedplugins、downloadall、downloadallcontent、downloadpluginupdate、applypluginupdate、updatecontent/updateallcontent、forcereinstallcontent、install、reload、cheat、setwave、selectfloor、selectfloorcoordinates、showselection、register、register start、register end,以及不带子命令的 /etd。(共享的 MagmaCore 命令把它拆分为“管理员”“设置”和“初始化”三种权限,但 EternalTD 三者都传入 eternaltd.*,因此实际要求完全相同。)
  • 两个 Nightbreak 账户命令使用它们自己的节点 nightbreak.login(default: op),该节点由 MagmaCore 在运行时注册,而不是通过 EternalTD 的 plugin.yml。
  • initialize由共享引导程序注册,同样需要eternaltd.*;预设模式不会决定是否注册此命令。
  • 只有面向玩家的命令不受限制:hub/lobby、join、start/go 和 quit/stop。
  • 第一个参数的 Tab 补全也会按权限过滤,因此没有 eternaltd.* 的玩家只会看到面向玩家的子命令。

游戏命令​

命令发送者当前用途
/etd join <level>玩家根据已加载的关卡文件请求创建会话。世界模板在主线程之外复制。请等到收到 "Created your world! We're ready to go." 后再开始;此前的 "Joined level!" 不代表成功,准备出错后也可能出现。准备期间的第二次请求会被拒绝,已在对局中的玩家(包括其他 Nightbreak 插件的对局)发出的请求也会被拒绝。断开连接,或 10 分钟内世界仍未就绪,都会取消准备。
/etd start玩家开始活跃会话的第一波
/etd go玩家/etd start 的别名
/etd quit玩家结束你当前的关卡会话
/etd stop玩家/etd quit 的别名
/etd hub玩家返回已配置的 EternalTD 大厅出生点。若有进行中的会话,会先结束会话、恢复玩家状态、移除防御塔并请求清理实例。如果尚未配置大厅,命令会停止,不会结束会话。传送被拒绝时会报告失败。
/etd lobby玩家/etd hub 的别名

调试和管理员游戏命令​

命令发送者当前用途
/etd cheat玩家切换作弊模式。每次执行都会将货币设为10,000,000、生命设为1,000,000,关闭模式时也一样。本局会被永久标记为作弊,不再计入最高分。
/etd setwave <wave>玩家设置保存的波次计数器,并将本局标记为作弊。不会替换当前敌人或立即开始指定波次;下一次正常切换使用计数器加一的波次。

这些是会话调试工具。作弊模式开启时,建造和升级不会扣除货币,但仍会检查余额是否足够。关闭作弊模式不会恢复最高分记录资格。setwave 接受整数,不会验证对应波次是否存在。

地图创作命令​

这些命令仍然存在于当前代码库中,用于地板选择和关卡注册工作。

命令发送者当前用途
/etd selectfloor玩家切换地板选择模式。左键点击方块设置角点1,右键设置角点2,与命令的介绍消息所述一致。关闭选择模式会丢弃选区。
/etd selectfloorcoordinates <x1> <y1> <z1> <x2> <y2> <z2>玩家在当前世界使用整数坐标设置角点,每个输入的Y值都会减1,以选中下方地板。两个角点的Y必须相同,包含两端的X/Z长度必须是3的倍数。
/etd showselection <level>玩家检查并保留当前地板选区。在选区将要注册的每个地板格上方显示一个仅你可见的 END_ROD 粒子。不保存任何内容。
/etd register <level>玩家为当前选区中的每个地板格向关卡文件写入一条 levelLocations 条目,替换已有列表,然后清除选区。选区无效或不含任何地板格时,不会写入任何内容,并保留选区。
/etd register <level> start玩家将玩家当前的整数方块坐标追加到 startLocation 并保存。需要已有活动选择条目;不会将Y减1。
/etd register <level> end玩家将玩家当前的整数方块坐标追加到 endLocation 并保存。需要已有活动选择条目;不会将Y减1。

发布更新日志​

MagmaCore 会为每个 Nightbreak 插件额外注册一个顶层命令,命名为根命令加上 changelog:

/etdchangelog
/etdchangelog dismiss
/etdchangelog disable
形式效果
/etdchangelog打开你尚未阅读的 EternalTD 版本(及被追踪的内容包)的发布说明
/etdchangelog dismiss把当前显示的版本标记为已读,并跳到下一批未读内容(如果还有的话)
/etdchangelog disable为该玩家永久停止更新日志提示

值得了解的行为:

  • 该命令仅限玩家且仅限管理员使用。这里的“管理员”指的是 op、eternaltd.*,或规范中的任意一种管理员/设置/初始化权限——而这三者 EternalTD 都设为了 eternaltd.*。
  • 加入服务器的管理员会在登录约 2 秒后收到一条带有可点击 view 按钮的聊天提示,但仅当确实有未读内容、且他们没有执行过 disable 时才会出现。
  • 已读/已忽略状态、开始追踪时的版本,以及缓存的发布文本都保存在 plugins/EternalTD/nightbreak-changelogs.yml 中。
  • 如果 etdchangelog 这个标签已被其他插件占用,MagmaCore 会改为注册一个带命名空间的回退命令(eternaltd:etdchangelog)。

注意事项​

  • EternalTD 的 plugin.yml 只声明根命令以及 eternaltd.* 和 eternaltd.match.bypass 权限。子命令在运行时通过命令管理器注册。
  • /etd reload 通过禁用、加载和启用流程重启 EternalTD。文件夹迁移、导入、内容包、波次、关卡、世界模板、NPC 和资源包设置都会重新运行。FreeMinecraftModels 并非每次都会重载:如果导入器在 FMM 已启用时向 FMM 的文件夹安装模型或其他文件,共享的模型安装事件会调用 FMM 的内容重载。
  • join、showselection 和 register 命令的关卡名补全会读取当前已加载的注册表,因此新加载的关卡无需重建命令管理器即可出现。执行命令时也会检查指定关卡是否存在。