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