メインコンテンツまでスキップ

EternalTDコンテンツパッケージ

EternalTDは現在、content_packages 設定セットを通じて公式コンテンツを追跡し、/etd setup を通じてそれらのパッケージを公開しています。

パッケージカテゴリ​

現在のコードは3つのパッケージカテゴリを使用しています:

  • 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個、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 だったため、恒久的に「完全にはインストールされていない」状態として表示されていました。追跡名は現在自動的に修正され、読み込み時にパッケージ設定へ書き戻されます — 手動での修正は不要です。