EternalTD 命令
EternalTD 注册根命令:
/eternaltd
/etd
设置期间使用的 Nightbreak 账户命令是由 MagmaCore 注册的独立顶层命令:
/nightbreaklogin <token>
/nightbreaklogout
两者都受 nightbreak.login(default: op)保护。/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 插件更新,则下载它(在下次重启后生效) |
/etd downloadall | 任何人 | 下载 EternalTD 插件更新以及所有可用内容 |
/etd downloadallcontent | 任何人 | 下载所有可用的 EternalTD 内容(不含插件更新) |
/etd updatecontent | 任何人 | 下载过时的 EternalTD 内容的更新 |
/etd updateallcontent | 任何人 | /etd updatecontent 的别名 |
/etd forcereinstallcontent <package|all> | 任何人 | 通过正常的、经过认证的导入/重载流程重新下载内容,即使已安装的版本已经是最新的。all 覆盖所有被检测为已下载的包;一个 Nightbreak slug(支持 Tab 补全)则针对单个包,即便它的文件已完全缺失也仍然有效。当某个包的文件被删除或损坏时,用它来修复。 |
/etd install | 任何人 | 应用官方 EternalTD 资源包设置 |
/etd reload | 任何人 | 原地重启 EternalTD(完整的禁用、加载、启用循环) |
管理员注意事项:
- EternalTD 的
plugin.yml只声明了一个权限节点eternaltd.*(default: op),其说明为授予对管理员、设置和调试命令的访问权限。 - 所有面向管理员的功能都归结到这一个节点:
setup、recommendedplugins、downloadall、downloadallcontent、downloadpluginupdate、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> | 玩家 | 从已加载的关卡文件开始新的关卡会话。模板世界在主线程之外复制,因此该命令会先回复 "Preparing world - hang tight!",等实例就绪后再回复 "Created your world! We're ready to go."。在复制进行中再次运行会被拒绝,并提示 "Your level is already being prepared. Please wait!" |
/etd start | 玩家 | 开始活跃会话的第一波 |
/etd go | 玩家 | /etd start 的别名 |
/etd quit | 玩家 | 结束你当前的关卡会话 |
/etd stop | 玩家 | /etd quit 的别名 |
/etd hub | 玩家 | 将你传送回 EternalTD 大厅出生点。如果在游戏过程中运行,则会先干净地结束活跃会话(恢复物品栏、移除塔、删除实例世界)。需要在 config.yml 中配置大厅出生点;如果服务器拒绝了这次传送,该命令会报告失败,而不是谎称成功。 |
/etd lobby | 玩家 | /etd hub 的别名 |
调试和管理员游戏命令
| 命令 | 发送者 | 当前用途 |
|---|---|---|
/etd cheat | 玩家 | 切换活跃会话的作弊模式 |
/etd setwave <wave> | 玩家 | 将活跃会话跳转到特定波次 |
这些不是普通的玩家设置命令。它们是会话/调试工具。
地图创作命令
这些命令仍然存在于当前代码库中,用于地板选择和关卡注册工作。
| 命令 | 发送者 | 当前用途 |
|---|---|---|
/etd selectfloor | 玩家 | 通过点击开始或停止地板角落选择 |
/etd selectfloorcoordinates <x1> <y1> <z1> <x2> <y2> <z2> | 玩家 | 直接从坐标设置选择区域 |
/etd showselection <level> | 玩家 | 检查并保留当前地板选区。当前实现已禁用粒子预览。 |
/etd register <level> | 玩家 | 检查选区后清除选择。不会显示粒子,也不会保存levelLocations;请手动将地板范围写入关卡YAML。 |
/etd register <level> start | 玩家 | 将玩家当前所站的方块添加到关卡的 startLocation 列表中 |
/etd register <level> end | 玩家 | 将玩家当前所站的方块添加到关卡的 endLocation 列表中 |
发布更新日志
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.*权限。子命令在运行时通过命令管理器注册。 /etd reload是一次真正的插件重启:它调用插件的禁用、加载和启用流程,而不是轻量级的内容重新导入。启动时发生的一切(文件夹迁移、导入器、内容包、波次、关卡、世界模板、NPC、资源包辅助工具)都会再次运行。它不会调用 FreeMinecraftModels 的重新加载流程 —— 源代码中存在会执行该操作的方法,但没有任何地方调用它。join、showselection和register命令的关卡名参数是在你按 Tab 补全时解析的,而不是在插件启动时解析的,因此通过下载或重新加载新增的关卡无需重启即可出现。