跳至主要內容

EternalTD 內容套件

EternalTD 現在透過 content_packages 設定集追蹤官方內容,並透過 /etd setup 公開這些套件。

套件類別​

目前的程式碼使用三種套件類別:

  • FREE
  • PREMIUM
  • RESOURCES

設定選單目前將它們顯示為:

  • Free Content
  • Premium Packs
  • Resources

已驗證的預製套件​

以下是目前在儲存庫中定義的預製套件:

套件類別在 /etd setup 中可切換追蹤的資產
EternalTD Hub World免費否伺服器世界容器資料夾 etd_spawn
EternalTD Tutorial免費是tutorial.yml、tutorial_waves.yml、tutorial_npc.yml、etd_tutorial
Towers of the Grassy Lands免費是5 個關卡檔案、1 個波次檔案、1 個 NPC 檔案、5 個世界
Towers from the Depths付費是5 個關卡檔案、1 個波次檔案、1 個 NPC 檔案、5 個世界
Towers of the Rising Sun付費是5 個關卡檔案、1 個波次檔案、1 個 NPC 檔案、5 個世界
EternalTD Custom Models資源否標記檔案與已存在的匯入後 FreeMinecraftModels 內容

套件生命週期​

套件瀏覽器目前區分以下狀態:

  • 未下載
  • 未安裝
  • 已安裝
  • 部分安裝
  • 已過時且可更新
  • 已過時但不可存取
  • 需要存取權限

該狀態根據磁碟上追蹤的資產、追蹤設定檔中的 isEnabled 標記以及 Nightbreak 存取/更新檢查計算得出。

當某個套件看起來卡在「部分安裝」時,有兩條偵測規則很重要:

  • 世界容器資料夾在兩種版面配置下都會被比對。 Paper 26.1 及更新版本會把插件世界遷移到 <level-name>/dimensions/minecraft/<world>。只要世界容器資料夾存在於舊有根目錄或遷移後的位置之一,EternalTD 就會視為已存在,而且它刻意檢查資料夾而非 level.dat —— 若要求 level.dat,在遷移進行到一半時該套件會翻轉為「未安裝」並觸發重新安裝,而 Paper 之後會拒絕合併。
  • 模型套件也能透過內容偵測。 plugins/ 下的 FreeMinecraftModels/models/EternalTD default towers 或舊版 FreeMinecraftModels/Models/EternalTD default towers 資料夾非空時,即視為存在。EternalTD 隨後嘗試寫入標記;寫入失敗會記錄日誌。這份資料夾清單定義在程式碼中,不從套件的 YAML 讀取。

這些檢查只確認內容是否存在、是否啟用,不驗證內容能否遊玩。刪除模型後標記可能仍在,偵測到世界資料夾也不代表其內容有效。缺少追蹤的資產時,優先顯示部分安裝;所有資產都存在但設定有的啟用、有的停用時,也會顯示此狀態。

可切換套件與共享套件​

可切換套件透過在以下位置的追蹤設定檔中切換 isEnabled 來運作:

plugins/EternalTD/levels/
plugins/EternalTD/waves/
plugins/EternalTD/npcs/

套件本身的 isEnabled 標記也會儲存,然後重新啟動 EternalTD。停用會保留磁碟上的檔案。安裝狀態由追蹤的檔案決定,不只看套件本身的標記。切換時會先讀取所有追蹤的檔案,再寫入任何檔案;只要有一個檔案無法讀取,就不會變更任何檔案。同樣地,若 /etd setup 在重新整理套件狀態時無法讀取某個追蹤的檔案,選單就不會開啟,並會提示你查看主控台。

共享套件的行為與普通切換不同:

  • 大廳世界被視為共享已安裝內容。
  • 自訂模型套件被視為共享資源內容。

對於這些套件,設定選單會告訴你手動刪除檔案,然後執行 /etd reload。

批次操作​

目前實作的批次內容操作有:

  • /etd downloadall — 下載 EternalTD 插件更新以及所有可用內容
  • /etd downloadallcontent — 下載所有可用內容(不含插件更新)
  • /etd updatecontent(別名 /etd updateallcontent)— 僅下載過時的內容

內容下載/更新指令會:

  • 需要已連結的 Nightbreak 令牌
  • 下載到 plugins/EternalTD/imports
  • 下載時選取缺少或過時的套件;更新時選取過時的套件,並略過快取中已拒絕存取的套件
  • 成功下載後自動重新載入 EternalTD

正常下載時,快取中的存取狀態僅供參考,目前的存取權限由經過驗證的下載要求決定。已下載且最新的套件會被略過,即使其設定已停用;請透過設定選單中的開關啟用。/etd forcereinstallcontent <package|all> 即使在目前版本也能修復缺少或損壞的檔案;all 選取偵測為已下載的套件,指定 Nightbreak slug 則可選取完全缺少的套件。

/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,導致它永遠被判讀為未完全安裝。追蹤名稱現在會自動修正並在載入時寫回套件設定 —— 不需要手動處理。