プラグインのライフサイクル

プラグインを表示させるすべての状態になる前に、プラグインローダーはまず使用可能なプラグインをソートし、すべての依存関係が存在するかどうかを判断し、依存関係の順序でプラグインをソートします。ライフサイクルイベントは、この順序でプラグインに与えられます。たとえば、プラグインAが「[required-] after:B」を含むと、プラグインBが特定の状態で作業を完了した後に各イベントが取得されます。さらに、ライフサイクルの状態はグローバルです。つまり、互いに見えるすべてのプラグインは、すべての状態を一度に移行する必要があります。

警告

Spongeの `` Server``オブジェクトは、常に利用可能なわけではありません。利用可能かどうかは `` Sponge.isServerAvailable()``や `` Game.isServerAvailable()``メソッドを使って確認できます。

イベントの状態

ステートイベントには3つの種類があります:

  1. 初期化: 実際のゲームが始まる前の Sponge とプラグインのロード時に一度だけ発生します。
  2. 実行中: ゲームとワールドのロード時に複数回発生することがあります。
  3. 終了中: ゲームの終了時に初期化ステートと同じく一回だけ発生します。

初期化状態

初期化状態は、1度の実行中に1度のみ発生します。

CONSTRUCTION

:javadoc:』GameConstructionEvent』 が発生します。この状態の時に各プラグインの 『@Plugin』 クラスのインスタンスが発生します。

PRE_INITIALIZATION

:javadoc:』GamePreInitializationEvent』 が発生します。この状態で、プラグインは初期化の準備が整います。デフォルトのロガーインスタンスへのアクセスと、優先設定ファイルの場所に関する情報へのアクセスができます。

INITIALIZATION

:javadoc:』GameInitializationEvent』 が発生します。この状態でプラグインが機能するために必要な作業を完了させる必要があります。また、グローバルイベントハンドラはこの状態までに登録されているべきです。

POST_INITIALIZATION

:javadoc:』GamePostInitializationEvent』 が発生します。この状態では、プラグイン間でのやりとりの準備ができているはずです。そのため、APIを提供するプラグインは、基本要求を受け入れる準備ができている必要があります。

LOAD_COMPLETE

:javadoc:』GameLoadCompleteEvent』 が発生します。この状態ですべてのプラグインの初期化を完了する必要があります。

実行状態

実行状態は、1回の実行中に複数回発生する可能性があります。』SERVER_ABOUT_TO_START』 は、』 SERVER_STOPPED 『の後に続く可能性があり、』 SERVER_STOPPED 『 はエラーがあれば処理中の任意の時点で発生します。

SERVER_ABOUT_TO_START

:javadoc:』GameAboutToStartServerEvent』 イベントがトリガーされます。サーバーインスタンスは存在しますが、ワールドはまだロードされていません。

SERVER_STARTING

:javadoc:』GameStartingServerEvent』 が発生します。サーバーインスタンスが存在し、ワールドがロードされます。コマンドの登録は、この状態で行われます。

SERVER_STARTED

:javadoc:』GameAboutToStartServerEvent』 イベントがトリガーされます。サーバーインスタンスが存在し、ワールドがロードされます。

SERVER_STOPPING

:javadoc:』GameStoppingServerEvent』 が発生します。この状態は、ワールドが保存される前の最終ティックの直前に発生します。

SERVER_STOPPED

:javadoc:』GameStoppedServerEvent』 が発生します。この状態では、プレイヤーは接続されておらず、ワールドへの変更は保存されません。

停止状態

停止状態は、1回の実行中に複数回発生することはありません。ゲームが正常に終了したときに発生します。(サーバーの場合: 『』/stop』』 コマンドを入力します。クライアントの場合: 「閉じる」ボタンまたは「ゲーム終了」ボタンをクリックします)

警告

停止中に停止状態が実行されることは保証されません。ゲームがCtrl-C、タスクマネージャー、コンピューターのクラッシュ、または同様の状況によって強制終了されている場合は停止状態が実行されません。

GAME_STOPPING

:javadoc:』GameStoppingEvent』 が発生します。この状態は 『GAME_STOPPED』 の直前に発生します。APIを提供するプラグインは、依然として基本要求を受け入れることができます。

GAME_STOPPED

:javadoc:』GameStoppedEvent』 が発生します。このイベントの実行が終了すると、Minecraftはシャットダウンします。この時点でゲームやその他のプラグインとのやりとりを行うとしないでください。