EternalTDコンテンツパッケージ
EternalTDは現在、content_packages 設定セットを通じて公式コンテンツを追跡し、/etd setup を通じてそれらのパッケージを公開しています。
パッケージカテゴリ
現在のコードは3つのパッケージカテゴリを使用しています:
FREEPREMIUMRESOURCES
セットアップメニューでは現在、以下のように表示されます:
Free ContentPremium PacksResources
検証済みのプリメイドパッケージ
リポジトリで現在定義されているプリメイドパッケージは以下の通りです:
| パッケージ | カテゴリ | /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個、NPCファイル1個、ワールド5個 |
Towers from the Depths | プレミアム | はい | レベルファイル5個、ウェーブファイル1個、NPCファイル1個、ワールド5個 |
Towers of the Rising Sun | プレミアム | はい | レベルファイル5個、ウェーブファイル1個、NPCファイル1個、ワールド5個 |
EternalTD Custom Models | リソース | いいえ | マーカーファイルと、存在する場合はインポート済みのFreeMinecraftModelsコンテンツ |
パッケージのライフサイクル
パッケージブラウザは現在以下を区別します:
- 未ダウンロード
- 未インストール
- インストール済み
- 部分的にインストール済み
- 古く、更新可能
- 古いが、アクセス不可
- アクセスが必要
この状態は、ディスク上の追跡されたアセット、追跡された設定ファイル内の isEnabled フラグ、およびNightbreakのアクセス/更新チェックから計算されます。
パッケージが「部分的にインストール済み」から動かなくなったように見えるとき、次の2つの検出ルールが重要になります:
- ワールドコンテナのフォルダは両方のレイアウトで照合されます。 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が再起動します。無効化してもファイルはディスクに残ります。インストール状態はパッケージのフラグだけでなく、追跡対象のファイルで決まります。切り替えは、追跡対象のファイルをすべて読み込んでから書き込みを始めます。1つでも読み込めないファイルがあれば、どのファイルも変更されません。同様に、/etd setup がパッケージ状態の更新中に追跡対象のファイルを読み込めなかった場合、メニューは開かず、コンソールを確認するよう案内されます。
共有パッケージは通常の切り替えとは異なる動作をします:
- ハブワールドは共有インストール済みコンテンツとして扱われます。
- カスタムモデルパックは共有リソースコンテンツとして扱われます。
これらのパッケージについては、セットアップメニューがファイルを手動で削除してから /etd reload を実行するよう指示します。
一括操作
現在実装されている一括コンテンツ操作は以下の通りです:
/etd downloadall— EternalTDプラグインのアップデート および 利用可能なすべてのコンテンツをダウンロード/etd downloadallcontent— 利用可能なすべてのコンテンツをダウンロード(プラグインアップデートなし)/etd updatecontent(エイリアス/etd updateallcontent)— 古いコンテンツのみをダウンロード
コンテンツのダウンロード/更新コマンドは:
- リンクされたNightbreakトークンが必要
plugins/EternalTD/importsにダウンロード- ダウンロードでは未取得または古いパッケージを選択し、更新では古いパッケージを選んでキャッシュ上でアクセス拒否となっているものを除外
- ダウンロード成功後にEternalTDを自動的にリロード
通常のダウンロードではキャッシュ上のアクセス情報は参考扱いで、認証付きダウンロード要求が現在のアクセス可否を判断します。取得済みで最新のパッケージは、設定が無効でもスキップします。有効化するにはセットアップメニューの切り替えを使ってください。/etd forcereinstallcontent <package|all> は最新バージョンでも不足・破損したファイルを修復します。all はダウンロード済みと検出されたものを選び、Nightbreakスラグを指定すれば完全に消失したパッケージも対象にできます。
/etd downloadall はさらに、最初にプラグインアップデートの有無を確認してダウンロードします。トークンがリンクされていない場合や認証に失敗した場合は、コンテンツのステップに進む前に停止します。
実用的な注記
- パッケージチェックは一括ダウンロード/更新前にNightbreakスラグで重複を排除します。
- セットアップUIは開くたびにNightbreakへ問い合わせるのではなく、最低5分の間隔でコンテンツとアクセス情報の更新を要求します。
- カスタムモデルパッケージは
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だったため、恒久的に「完全にはインストールされていない」状態として表示されていました。追跡名は現在自動的に修正され、読み込み時にパッケージ設定へ書き戻されます — 手動での修正は不要です。