Запускаем IDE и выбираем проект Maven
Скриншот
Заполняем описание плагина:
Описание

1. GroupId: ID группы плагина. Если у вас есть домен, то нужно написать домен в обратном порядке, например:
1. java.com - com.java
2. spongeapi.com - com.spongeapi
Если нет домена, то можно использовать свой ник на github,
например:
1. XakepSDK - com.github.xakepsdk
2. GreWeMa - com.github.grewema
- ArtifactId: Название плагина.
- Version: Версия
Все 3 поля должны быть на английском!
Далее нажмите next и finish. Создастся Maven проект с заданными данными.
Скриншот
Как вы видите, в pom описании проекта записаны те данные, что мы указали. Их можно сменить в любой момент.
Далее нужно подключить SpongeAPI и указать Java 8 минимальной версией.
Спойлер(это надо добавить в pom.xml)
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>sponge</id>
<url>https://repo.spongepowered.org/maven</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spongepowered</groupId>
<artifactId>spongeapi</artifactId>
<version>7.0.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
7.0.0-SNAPSHOT
- версия API.
В конце статьи небольшой список версий.

Мы подключили репозиторий sponge в блоке repositories
и подключили SpongeAPI в блоке dependencies
.
Если бы SpongeAPI был в репозитории Maven Central, то нам не нужно было бы подключать сторонний репозиторий, а просто записать блок dependency
в блоке dependencies
.
Теперь нужно создать главный класс плагина.
Как сделать главный класс

1. Нужно указать, что Sponge должен загружать наш главный класс как плагин, для этого нужно аннотировать главный класс аннотацией @Plugin

1. id - обязательный параметр. Должен начинаться с латинской маленькой буквы. Разрешены латинские буквы, цифры и знак подчеркивания(_
). Все остальные параметры опциональные.
2. name - название плагина.
3. version - версия плагина.
4. description - описание плагина
5. url - ссылка на сайт плагина
6. authors - авторы плагина
Главный класс создали, теперь напишем простенький плагин, который выведет Hello World
в консоли во время запуска сервера.
Теперь можно вывести наше сообщение!
Код
@Inject
private Logger logger;
@Listener
public void onGameInit(GameInitializationEvent event) {
logger.info("Hello World!");
}

Скомпилируем плагин, с помощью Maven:
Скриншот
Жмем на Package
и ждём, компиляция занимает на моем компьютере примерно 1 секунду. Первая компиляция может занять некоторое время, так как maven будет скачивать зависимости в локальный репозиторий.
Если компиляция пройдет успешно, в выводе вы уведите что-то вроде:
Скриншот
В папке проекта появится папка target
, там можно будет взять готовый jar плагина.
Скриншот
Копируем SimplePlugin-0.1-SNAPSHOT.jar
в папку с плагинами (mods
по-умолчанию) и запускаем сервер!
Скриншот
Третье сообщение - от нашего плагина!
Но ведь это не интересно? Давайте выведем сообщение в чат, когда игрок зайдёт?
Достаточно добавить еще один @Listener
и всё!
К примеру, мы выведем: Привет, %username%
синим цветом? Проще пареной репы!
Код
@Listener
public void onPlayerJoin(ClientConnectionEvent.Join event, @Root Player player) {
String msg = "Привет, " + player.getName();
player.sendMessage(Text.builder(msg).color(TextColors.BLUE).build());
}

Как видите, всё работает!
Скриншот
Исходный код