Hauptklasse des Plugins

Bemerkung

Die Anleitungen in der Sponge-Dokumentation gehen davon aus, dass du bereits über Java-Kenntnisse verfügst. Die Sponge-API stellt das Grundgerüst dar, auf dem du deine Plugins für Server mit Sponge erstellen kannst. Du kannst natürlich auch kreativ sein und deinen Code so zum Laufen bringen. Es gibt viele gute Java-Onlinekurse, die du durcharbeiten kannst, falls du noch wenig Erfahrung mit Java besitzt.

Die Klasse beginnen

Der nächste Schritt nach dem Hinzufügen der Sponge-API als Abhängigkeit (englisch dependency) ist das Erstellen einer neuen Klasse. Diese Klasse kannst du nach deinen Wünschen benennen, solange sie nicht mit org.spongepowered beginnt. Gemäß unserer Konvention sollen Klassennamen in Großbuchstaben angelegt sein.

Oracle empfiehlt deine Domain als Package Namen zu verwenden, falls du eine Domain besitzt. Falls du keine hast, wird das Nutzen einer Email Adresse (wie z.B. com.gmail.Benutzername.Projekt) oder eines open-source Repositories (wie z.B. io.github.Benutzername.Projekt) empfohlen, da es die gängige Praxis darstellt.

Nachdem du deine Main-Klasse erstellst hast, muss dieser die Plugin Beifügung (englisch annotation) angehangen werden. Diese Annotation erlaubt es Sponge deine Main-Klasse einfacher zu finden, wenn dein Plugin geladen wird. Hier ist ein Beispiel dargestellt.

package io.github.username.project;

import org.spongepowered.api.plugin.Plugin;

@Plugin(id = "exampleplugin", name = "Example Plugin", version = "1.0")
public class ExamplePlugin {

}

Bemerkung

Schau dir Plugin-Bezeichner an, wenn du deine Plugin-ID noch nicht ausgewählt hast.

Initialisiere dein Plugin

Plugins werden eingelesen, bevor das Spiel und die Spielwelt(en) geladen werden. Dies ermöglicht ein Zeitfenster, in dem dein Plugins mit dem Spiel interagieren kann, beispielsweise durch Registrieren eines Befehls oder Events.

Dein Plugin kann auf bestimmte Events lauschen, die sogenannten state events. Diese informieren über Änderungen des Spielstatus. Im unten dargestellten Beispiel wird onServerStart() aufgerufen, wenn das GameStartedServerEvent ausgelöst wird. Beachte die Listener Annotation vor der Methode.

import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.game.state.GameStartedServerEvent;

@Plugin(id = "exampleplugin", name = "Example Plugin", version = "1.0")
public class ExamplePlugin {
    @Listener
    public void onServerStart(GameStartedServerEvent event) {
        // Hey! The server has started!
        // Try instantiating your logger in here.
        // (There's a guide for that)
    }
}

Tipp

Die Sponge Dokumentation enthält einen Guide mit weiteren Informationen über Events (siehe: Ereignisse). Normalerweise müssen Methoden die Events abwickeln (englisch event-handler), zusätzlich zur @Listener hinzugefügt, noch auf dem Sponge Eventbus registriert werden. Für die Main-Klasse deines Plugins geschiet dies automatisch.

Status Events

Es kann gewünscht sein auch andere State-Events zu überwachen, genauer das GameStoppingServerEvent. Es gibt zwei Kategorien von State-Events:

Für weiterführende Informationen, wann welches Event ausgelöst wird, schaue hier nach: Plugin Lebenszyklus.