Clase de Plug-in Principal

Nota

Las instrucciones dentro de la Documentación Sponge asumen que usted tiene conocimientos previos de Java. La SpongeAPI proporciona las bases para que usted comienze creando plugins para servidores de Minecraft de Sponge; sin embargo, usted decide si quiere ser creativo y hacer que su código funcione! Hay varios cursos gratis de Java online si usted tiene poca experiencia con Java.

Comenzando Su Clase

El próximo paso luego de añadir el API de Sponge como dependencia es crear una nueva clase. La clase puede ser nombrada como desee, y puede estar en cualquier paquete que no empiece con org.spongepowered. Por convención, los nombres de clase deberían estar en tamaño de título.

Oracle recomienda para usar su dominio como si nombre de paquete, si es dueño de un dominio. Sin embargo, en caso de que no sea dueño de alguno, es comun usar una dirección de correo electrónico (como com.gmail.username.project) o un repositorio de código abierto (como io.github.username.project).

Luego de crear su clase principal, la anotación Plugin debe estar fija a esta. Esta anotación permite a Sponge encontrar facilmente la clase de su plug-in principal cuando su plug-in se carga. Un ejemplo de su uso es ilustrado aquí abajo.

package io.github.username.project;

import org.spongepowered.api.plugin.Plugin;

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

}

Nota

Diríjase a Identificadores de Complementos si usted aún no ha elegido su ID de plugin.

Inicializando tu plugin

Los plugins son cargados antes del juego y el/los mundo(s). Esto deja un período de tiempo en el que tus plugins deberían de comenzar a interactuar con el juego, como registrar comandos o eventos.

Su plug-in puede escuchar eventos particulares, llamados eventos de estado, para ser notificado sobre los cambios en el estado del juego. En el ejemplo posterior, onServerStart() se llama cuando ocurre el GameStartedServerEvent; tome nota de la anotación Listener antes del método.

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)
    }
}

Truco

La documentación de Sponge proporciona una guía con más información sobre eventos (ver Eventos). Normalmente, además de prefijar los métodos de manejo de eventos con @Listener, también debes registrar tu objeto con el bus de eventos de Sponge. Sin embargo, tu clase de complementos principal es registrada automáticamente.

Eventos de Estado

También podría ser deseable escuchar otros eventos de estado, particularmente el GameStoppingServerEvent. Hay dos categorías de eventos de estado:

Para información acerca de cuando cada evento de estado ocurre, vea el documentación del ciclo de vida de plugin.