Classe Principale du Plugin

Note

Les instructions dans la documentation de Sponge suppose que vous avez des connaissances préalables en Java. SpongeAPI vous fournit les bases pour commencer à créer des plugins pour les serveurs Minecraft utilisant Sponge; en revanche, c’est à vous d’être créatif et de faire en sorte que votre code fonctionne ! Il existe plusieurs cours de Java, en ligne et gratuit, si vous avez peu d’expérience avec Java.

Commencer votre Classe

La prochaine étape après avoir ajouté SpongeAPI comme dépendance, est la création d’une nouvelle classe. La classe peut être appelée comme bon vous semble, et mise dans n’importe quel package ne commençant pas par org.spongepowered. Par convention, les noms de classe doivent être écrit en CamelCase (la première lettre de chaque mot est une majuscule).

Oracle recommande d’utiliser votre nom de domaine comme nom pour vos packages, si vous possédez un nom de domaine. Cependant, dans l’éventualité où vous ne posséderiez pas de nom de domaine, une pratique courante est d’utiliser une adresse email (par exemple com.gmail.username.project) ou un dépôt open-source (comme io.github.username.project).

Après avoir créé votre classe principale, l’annotation Plugin doit lui être apposée. Cette annotation permet à Sponge de facilement retrouver la classe principale de votre plugin, lorsque celui-ci est chargé. Un exemple d’utilisation est présenté ci-dessous, une utilisation plus détaillée est expliqué dans 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 {

}

Note

Voir Identifiants de Plugins si vous n’avez pas encore choisi votre plugin ID.

Initialiser votre Plugin

Les plugins sont chargés avant le jeu et les mondes. Ce qui laisse un petit moment pendant lequel votre plugin peut interagir avec le jeu, en enregistrant des commandes ou des events par exemple.

Votre plugin peut écouter un événement particulier, appelé state events (événements d’état), afin d’être informé des changements d’état du jeu. Dans l’exemple qui suit, la méthode onServerStart() est appelée quand l’événement GameStartedServerEvent se produit; Prenez note de l’annotation Listener se trouvant avant la méthode.

L’exemple ci-desssous va log un mesage lors du démarrage du serveur. Si votre plugin est chargé correctement, vous devriez voir ce message dans la sortie lors de l’initialisation du serveur.

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!!!");
    }

}

Astuce

La documentation Sponge fournit un guide avec plus d’informations sur les événements (voir Événements). Normalement, en plus d’ajouter un préfixe à la méthode gérant l’événement avec l’annotation @Listener, vous devez également enregistrer votre objet auprès du gestionnaire d’événement de Sponge. Toutefois, la classe principale de votre plugin est déjà enregistrée automatiquement.

Événements d’état

Il peut être également souhaitable d’écouter d’autres événements d’état, en particulier l’événement GameStoppingServerEvent. Il y a deux catégories d’événements d’état:

Pour toute information concernant chaque événement d’état, voir la documentation sur le cycle de vie des plugins.