EternalTD 内容包
EternalTD 现在通过 content_packages 配置集跟踪官方内容,并通过 /etd setup 公开这些包。
包类别
当前代码使用三种包类别:
FREEPREMIUMRESOURCES
设置菜单当前将它们显示为:
Free ContentPremium PacksResources
已验证的预制包
以下是当前在仓库中定义的预制包:
| 包 | 类别 | 在 /etd setup 中可切换 | 跟踪的资产 |
|---|---|---|---|
EternalTD Hub World | Free | 否 | 服务器世界容器文件夹 etd_spawn |
EternalTD Tutorial | Free | 是 | tutorial.yml、tutorial_waves.yml、tutorial_npc.yml、etd_tutorial |
Towers of the Grassy Lands | Free | 是 | 5 个关卡文件、1 个波次文件、1 个 NPC 文件、5 个世界 |
Towers from the Depths | Premium | 是 | 5 个关卡文件、1 个波次文件、1 个 NPC 文件、5 个世界 |
Towers of the Rising Sun | Premium | 是 | 5 个关卡文件、1 个波次文件、1 个 NPC 文件、5 个世界 |
EternalTD Custom Models | Resources | 否 | 仅标记文件,加上存在时导入的 FreeMinecraftModels 内容 |
包生命周期
包浏览器当前区分以下状态:
- 未下载
- 未安装
- 已安装
- 部分安装
- 已过时且可更新
- 已过时但不可访问
- 需要访问权限
该状态根据磁盘上跟踪的资产、跟踪配置文件中的 isEnabled 标志以及 Nightbreak 访问/更新检查计算得出。
当某个包看起来卡在"部分安装"状态时,有两条检测规则很重要:
- 世界容器文件夹会在两种布局下匹配。 Paper 26.1 及更新版本会把插件世界迁移到
<level-name>/dimensions/minecraft/<world>。只要世界容器文件夹存在于旧版根目录或迁移后的位置之一,EternalTD 就会将其计为存在;而且它刻意只检查文件夹,而不检查level.dat—— 若要求level.dat,则在迁移进行到一半时该包会被翻转为"未安装",进而触发一次 Paper 随后会拒绝合并的重新安装。 - 由标记跟踪的包有内容回退检测。 仅由标记文件跟踪的包,也可以通过
plugins/下其内容文件夹的存在来检测。发生这种情况时会立即写入标记,以便之后状态保持稳定。正是这一点让自定义模型包在其模型是手动导入而非通过菜单导入时也能被识别为已安装。回退文件夹列表在代码中定义,不从包的 YAML 中读取。
可切换包与共享包
可切换包通过在以下位置的跟踪配置文件中切换 isEnabled 来工作:
plugins/EternalTD/levels/
plugins/EternalTD/waves/
plugins/EternalTD/npcs/
共享包的行为与普通切换不同:
- 大厅世界被视为共享已安装内容。
- 自定义模型包被视为共享资源内容。
对于这些包,设置菜单会告诉你手动删除文件,然后运行 /etd reload。
批量操作
当前实现的批量内容操作有:
/etd downloadall—— 下载 EternalTD 插件更新以及所有可用内容/etd downloadallcontent—— 下载所有可用内容(不含插件更新)/etd updatecontent(别名/etd updateallcontent)—— 仅下载过时内容
内容下载/更新命令:
- 需要已链接的 Nightbreak 令牌
- 下载到
plugins/EternalTD/imports - 跳过不可访问或已是最新版本的包
- 成功下载后自动重新加载 EternalTD
/etd downloadall 还会先检查并下载插件更新;如果未链接令牌或身份验证失败,它会在内容步骤之前停止。
实用说明
- 包检查在批量下载/更新前按 Nightbreak slug 去重。
- 设置界面以冷却时间刷新内容和访问信息,而不是每次打开都查询 Nightbreak。
- 自定义模型包在
plugins/EternalTD/content_markers/下写入标记,以便 EternalTD 可以跟踪共享资源包是否已下载。 - 跟踪的关卡、波次和 NPC 文件是按文件名在
levels/、waves/和npcs/下的任意位置匹配的,因此把文件放在子文件夹中发布的包仍然能被检测到。 Towers of the Rising Sun此前把它的波次文件跟踪为towers_of_the_rising_sun.yml,而该包实际发布的是towers_of_the_rising_sun_waves.yml,这导致它始终显示为未完全安装。现在跟踪名称会被自动纠正,并在加载时写回包配置 —— 无需手动修复。