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
Es gibt drei Kategorien von State-Events:
Initialisierungs-Status (englisch initialization): Wenn Sponge und Sponge-Plugins geladen werden, bevor das Spiel startet. Diese treten nur einmal auf.
Laufzeit-Status (englisch running): Wenn das Spielt und die Spielwelt geladen sind. Diese Events können mehrmals auftreten.
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
Das GameConstructionEvent wird ausgelöst. Während dieses Status wird die @Plugin
Klasse jedes Plugins aufgerufen.
PRE_INITIALIZATION
Das GamePreInitializationEvent wird ausgelöst. Hier soll sich das Plugin auf die Initialisierung vorbereiten. Zugriff auf den Standardlogger und bevorzugte Speicherorte für Konfigurationsdateien ist verfügbar.
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
GamePostInitializationEvent wird ausgelöst. Die Plugins sind für die Kommunikation untereinander bereit. Plugins die eine API bereitstellen sollten bereit sein Anfragen zu bearbeiten.
LOAD_COMPLETE
Das GameLoadCompleteEvent wird ausgelöst. Die Plugin Initialisierung sollte vollständig abgeschlossen sein.
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
Das GameAboutToStartServerEvent Event wird ausgelöst. Die Serverinstanz existiert, aber die Welten werden noch nicht geladen.
SERVER_STARTING
The GameStartingServerEvent is triggered. The server instance exists, and worlds are loaded. Command registration is handled during this state.
SERVER_STARTED
Das GameStartedServerEvent wird ausgelöst. Die Serverinstanz existiert und die Welten sind geladen.
SERVER_STOPPING
Das GameStoppingServerEvent wird ausgelöst. Dieser Status tritt unmittelbar vor dem letzten Tick des Servers auf, bevor die Welten gespeichert werden.
SERVER_STOPPED
Das GameStoppedServerEvent wird ausgelöst. Während dieses Status sind keine Spieler mit dem Server verbunden und Änderungen an den Welten werden nicht gespeichert.
Status stoppen
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 GameStoppingEvent is triggered.
This state occurs immediately before GAME_STOPPED
. Plugins providing an API should still be capable of accepting
basic requests.
GAME_STOPPED
The GameStoppedEvent 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.