Der Plugin-Lebenszyklus

Bevor Plugins aktiviert werden liest der Plugin-Loader alle verfügbaren Plugins ein, stellt fest ob alle Abhängigkeiten erfüllt sind und sortiert die Plugins nach ihrer Abhängigkeitsreihenfolge. Lebenszyklus-Events werden den Plugins dann in dieser Reihenfolge gemeldet. Beispielsweise wird ein Plugin A welches „[required-]after:B“ enthält jedes Event erst erhalten nachdem Plugin B meldet, dass das Event abgearbeitet wurde. Darüber hinaus sind Lebenszyklus Status global. Das heisst, dass alle Plugins die voneinander abhängig sind alle Status gemeinsam durchlaufen müssen.

Warnung

Das Sponge Server Objekt ist nicht immer verfügbar. Die Verfügbarkeit kann mithilfe von Sponge.isServerAvailable() oder Game.isServerAvailable() überprüft werden.

Status Events

There are three categories of state events:

  1. Initialisierungs-Status (englisch initialization): Wenn Sponge und Sponge-Plugins geladen werden, bevor das Spiel startet. Diese treten nur einmal auf.
  2. Laufzeit-Status (englisch running): Wenn das Spielt und die Spielwelt geladen sind. Diese Events können mehrmals auftreten.
  3. Stopping: When the game is shutting down. Stopping states, like initialization states, only occur once.

Initialisierungs-Status

Initialisierungs-Status treten nur einmalig während dem Ausführen der Servers auf.

CONSTRUCTION

The GameConstructionEvent is triggered. During this state, the @Plugin class instance for each plugin is triggered.

PRE_INITIALIZATION

The GamePreInitializationEvent is triggered. During this state, the plugin gets ready for initialization. Access to a default logger instance and access to information regarding preferred configuration file locations is available.

INITIALIZATION

The GameInitializationEvent is triggered. During this state, the plugin should finish any work needed in order to be functional. Global event handlers should get registered in this stage.

POST_INITIALIZATION

The GamePostInitializationEvent is triggered. By this state, inter-plugin communication should be ready to occur. Plugins providing an API should be ready to accept basic requests.

LOAD_COMPLETE

The GameLoadCompleteEvent is triggered. By this state, all plugin initialization should be completed.

Laufzeit-Status

Laufzeit-Status können mehrmals während eines einzelnen Serverlaufs auftreten. SERVER_ABOUT_TO_START kann auf SERVER_STOPPED folgen und SERVER_STOPPED kann jederzeit während der Laufzeit ausgelöst werden, wenn ein Fehler auftritt.

SERVER_ABOUT_TO_START

The GameAboutToStartServerEvent event is triggered. The server instance exists, but worlds are not yet loaded.

SERVER_STARTING

The GameStartingServerEvent is triggered. The server instance exists, and worlds are loaded. Command registration is handled during this state.

SERVER_STARTED

The GameStartedServerEvent event is triggered. The server instance exists, and worlds are loaded.

SERVER_STOPPING

The GameStoppingServerEvent is triggered. This state occurs immediately before the final tick, before the worlds are saved.

SERVER_STOPPED

The GameStoppedServerEvent is triggered. During this state, no players are connected and no changes to worlds are saved.

Stopping States

Stopping states never occur more than once during a single run. They occur when the game stops normally. (On Servers: the /stop command is typed. On Clients: The „Close“ button or the „Quit Game“ button are clicked)

Warnung

Stopping states are not guaranteed to be run during shutdown. They may not fire if the game is force-stopped via Ctrl-C, Task Manager, a computer crash, or similar situations.

GAME_STOPPING

The GameStoppingServerEvent is triggered. This state occurs immediately before GAME_STOPPED. Plugins providing an API should still be capable of accepting basic requests.

GAME_STOPPED

The GameStoppedServerEvent is triggered. Once this event has finished executing, Minecraft will shut down. No further interaction with the game or other plugins should be attempted at this point.