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

The next step after adding the Sponge API as a dependency is creating a new class. The class can be named however you like, and can be in any package that does not begin with org.spongepowered. By convention, class names should be in title case.

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 Identifiers an, wenn du deine Plugin-ID noch nicht ausgewählt hast.

Initialisiere dein Plugin

Plugins are loaded before the game and the world(s). This leaves a specific timeframe when your plugin should begin interacting with the game, such as registering commands or 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

The Sponge documentation provides a guide with more information on events (see Events). Normally, in addition to prefixing event-handler methods with @Listener, you must also register your object with Sponge’s event bus. However, your main plugin class is registered automatically.

Status Events

It may also be desirable to listen for other state events, particularly the GameStoppingServerEvent. There are two categories of state events:

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