Основной класс плагина

Примечание

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.

Начинаем создание главного класса плагина

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 рекомендует использовать ваш домен как имя пакета, если у вас есть домен. В противном случае, часто используется email адрес (например com.gmail.username.project) или репозиторий с открытым исходным кодом (например io.github.username.project).

После создания главного класса, необходимо добавить к нему аннотацию Plugin. Эта аннотация позволяет Sponge легко находить главный класс вашего плагина при загрузке. Пример использования показан ниже, более подробное использование объясняется на Метаданные плагина.

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 {

}

Примечание

Если Вы ещё не выбрали ID плагина, посмотрите статью Идентификаторы плагина.

Инициализация плагина

Плагины загружаются до загрузки самой игры и игровых миров. При этом существует промежуток времени, в который плагин может начать взаимодействовать с игрой, например зарегистрировать команды или события.

Плагин может слушать определенные события, называемые эвенты, чтобы получать уведомления об изменениях состояния игры. В примере ниже метод onServerStart() вызывается когда возникает событие GameStartedServerEvent; обратите внимание на аннотацию Listener перед методом.

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

}

Совет

Документация Sponge предоставляет более подробную информацию про события (смотрите События). Обычно, помимо добавления аннотации @Listener, вам также необходимо зарегистрировать ваш слушатель. Однако главный класс плагина регистрируется автоматически.

События изменения состояния

Также, может быть полезно слушать другие события жизни сервера, особенно GameStoppingServerEvent. Существует две категории события жизни сервера:

Для получения более подробной информации, когда вызывается каждое события жизни сервера, смотрите документацию жизненного цикла плагина.