Hoofdklasse uw plugin
Notitie
The instructions within the Sponge Documentation assume that you have prior knowledge of Java. SpongeAPI provides the foundation for you to begin creating plugins for Minecraft servers powered by Sponge; however, it is up to you to be creative and make your code work! There are several free Java courses online if you have had little experience with Java.
Uw klasse maken
The next step after adding SpongeAPI 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 raadt aan om uw domeinnaam te gebruiken als package naam, indien u een domeinnaam heeft. Als u geen domeinnaam heeft is het gebruikelijk om een e-mailadres te gebruiken (zoals com.gmail.gebruikersnaam.project
) of een open-source repository (zoals io.github.gebruikersnaam.project
).
Na het aanmaken van uw hoofdklasse moet u de Plugin annotatie toevoegen als prefix. Deze annotatie zorgt ervoor dat Sponge makkelijk de hoofdklasse van uw plugin kan vinden wanneer uw plugin wordt geladen. Een voorbeeld wordt hieronder geïllustreerd, uitgebreidere informatie is te vinden bij Plugin Metadata.
package io.github.username.project;
import org.spongepowered.api.plugin.Plugin;
@Plugin(id = "exampleplugin", name = "Example Plugin", version = "1.0", description = "Example")
public class ExamplePlugin {
}
Notitie
Refereer naar Plugin-ID’s als u nog niet uw plugin-ID heeft gekozen.
Jouw plugin initialiseren
Plugins worden geladen voor het spel en de wereld(en). Dit creëert een tijdspanne waarin uw plugin moeten beginnen met de interactie met het spel, zoals het registreren van commando’s of events.
Uw plugin kan luisteren naar bepaalde events die state events worden genoemd, om meldingen te krijgen over veranderingen in de state van het spel. In het voorbeeld hieronder wordt onServerStart()
aangeroepen wanneer het GameStartedServerEvent event plaats vindt; merk de Listener annotatie op voor de methode.
The example below will log a message upon starting the server. If your plugin is correctly loaded, you should see this message as part of the server’s initialization output.
import org.spongepowered.api.plugin.Plugin;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.game.state.GameStartedServerEvent;
// Imports for logger
import com.google.inject.Inject;
import org.slf4j.Logger;
@Plugin(id = "exampleplugin", name = "Example Plugin", version = "1.0", description = "Example")
public class ExamplePlugin {
@Inject
private Logger logger;
@Listener
public void onServerStart(GameStartedServerEvent event) {
logger.info("Successfully running ExamplePlugin!!!");
}
}
Tip
De Sponge documentatie beschikt over een handleiding met meer informatie over events (zie Events). Normaal gesproken, als aanvulling op het prefixen van event-handler methodes met @Listener
, moet u ook het object registreren met de event bus van Sponge. De hoofdklasse van uw plugin wordt echter automatisch geregistreerd.
State Events
Het kan ook wenselijk zijn om te luisteren naar andere state events, vooral het GameStoppingServerEvent
. Er zijn twee categorieën state events:
Initialization: Deze events gebeuren wanneer Sponge en de plugins geladen worden.
Running: Deze events gebeuren wanneer het spel en de wereld geladen worden.
Voor meer informatie omtrent wanneer elke state event gebeurt, zie plugin lifecycle documentation.