Java API плагинов
Сгенерированный справочник Java содержит классы, методы и сигнатуры с поиском, а также версию исходников и коммит каждого модуля.
Этот раздел предназначен для разработки Java-плагина, взаимодействующего с плагинами Nightbreak. Чтобы создавать игровое поведение без Java-плагина, начните с руководства по Lua.
Выбор плагина
Все координаты ниже используют группу com.magmaguy. Эти версии были указаны в публичном Maven-репозитории при обновлении документации; выбирайте версию установленного на сервере плагина. Страницы об актуальных исходниках и сгенерированные справочники могут описывать более новую сборку до публикации её Maven-артефакта.
| Плагин | Артефакт и версия | Справочник разработчика |
|---|---|---|
| EliteMobs | EliteMobs:10.9.1 | Сущности, предметы, события и сервис Lua-способностей |
| FreeMinecraftModels | FreeMinecraftModels:2.12.1 | Модели, взаимодействия, маскировки, предметы и магическое оружие |
| ResourcePackManager | ResourcePackManager:2.4.1 | Регистрация пакетов и перезагрузка |
| BetterStructures | BetterStructures:2.7.2 | События генерации построек |
| EternalTD | EternalTD:1.7.3 | События башен, волн и боя |
| CannonRTP | CannonRTP:1.2.2 | Запуск, проверка назначения и события приземления |
| ResurrectionChest | ResurrectionChest:2.3.1 | Границы интеграции |
| BetterFood | BetterFood:1.5.1 | Границы интеграции |
| MagmaCore | MagmaCore:2.2.0-SNAPSHOT | Настройка встроенной библиотеки и жизненный цикл |
Добавление зависимости от плагина
Выпущенные плагины доступны в Maven-репозитории MagmaGuy. Компилируйте против установленного плагина с Maven provided или Gradle compileOnly. JAR интеграции не должен содержать вторую копию этого плагина.
Например, интеграция с EliteMobs использует:
<repositories>
<repository>
<id>magmaguy-releases</id>
<url>https://repo.magmaguy.com/releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.magmaguy</groupId>
<artifactId>EliteMobs</artifactId>
<version>10.9.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
Эквивалент на Gradle Kotlin DSL:
repositories {
maven("https://repo.magmaguy.com/releases")
}
dependencies {
compileOnly("com.magmaguy:EliteMobs:10.9.1")
}
Проекту также нужна обычная зависимость Bukkit/Paper API. Для сборки этих примеров используйте Java 21, а для запуска сервера ту версию Java, которую он требует.
Объявите зависимость времени выполнения в описателе плагина:
depend: [EliteMobs]
Для другой интеграции замените артефакт, версию и имя плагина. BetterStructures также требует WorldEdit на сервере. Java API регистрации ResourcePackManager работает на Bukkit-бэкенде; универсальный артефакт содержит и прокси-компоненты, но это не позволяет вызывать Bukkit API из прокси-плагина.
Для необязательной интеграции используйте softdepend и загружайте её классы только после проверки, что целевой плагин включён. Не ссылайтесь на типы необязательного плагина из всегда загружаемой точки входа. Порядок зависимостей не означает завершения асинхронной загрузки контента; используйте сигналы готовности и перезагрузки целевого плагина.
У MagmaCore другой контракт упаковки. Это встроенная библиотека, поэтому следуйте её руководству по shading и жизненному циклу, а не схеме подключения установленного плагина.
Жизненный цикл и совместимость
Используйте точки входа из соответствующих руководств. Даже публичный Java-класс в JAR плагина может быть деталью реализации. Перед обновлением проверяйте сигнатуры нужного выпуска, особенно при работе с менеджерами и сущностями вне пакета api.
Операции Bukkit с сущностями и мирами выполняйте в серверном потоке. Не блокируйте обработчики событий HTTP-запросами, файловыми операциями или длительными вычислениями. При возвращении из асинхронной работы повторно проверяйте сущности и готовность плагина.
Храните только состояние, принадлежащее вашей интеграции. При отключении освобождайте назначения моделей, регистрации и задачи, а после перезагрузки заново получайте объекты целевого плагина. Сохранённая ссылка на модель или подземелье не доказывает, что соответствующий объект ещё действует.
ResurrectionChest
В ResurrectionChest 2.3.1 нет отдельного API пользовательских событий Bukkit или фасада интеграции. Пакет events содержит внутренние слушатели Bukkit. Не создавайте их как точки расширения.
Для настройки сервера используйте описанные параметры и команды. Публичный артефакт Maven позволяет компилировать интеграцию против выпуска, но не устанавливает стабильный контракт управления сундуками.
BetterFood
В BetterFood 1.5.1 нет отдельного API пользовательских событий Bukkit или фасада интеграции. Логика выбора еды работает через собственные слушатели Bukkit.
Поддерживаемая настройка описана в руководстве по поведению и справочнике настройки. Код обычных событий Bukkit должен учитывать отмену и приоритет, а не напрямую вызывать внутренние слушатели BetterFood.
Документация классов и методов
Руководства выше описывают схемы интеграции, а сгенерированный справочник Java перечисляет классы, методы и сигнатуры. Сопоставляйте указанные там версию и коммит исходников с выпуском, используемым вашей интеграцией.