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

Примечание

Документация Sponge рассчитана на тех, кто знает Java. API Sponge предоставляет основу для создания плагинов для серверов Minecraft, на которых установлен Sponge; однако, именно разработчик плагина должен быть творческим и создавать правильный программный код! Тем, у кого мало опыта в Java, рекомендуется сначала поискать в Интернете бесплатные курсы или учебники по Java.

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

Следующий шаг, после добавления Sponge API в качестве зависимости, это создание нового класса. Класс может называться как угодно, и может быть в любом пакете, который не начинается с org.spongepowered. По соглашению, каждое слово в имени класса должно начинаться с большой буквы.

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")
public class ExamplePlugin {

}

Примечание

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

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

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

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

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

Совет

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

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

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

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