Перейти к основному содержимому

Java API плагинов

Сгенерированный справочник Java содержит классы, методы и сигнатуры с поиском, а также версию исходников и коммит каждого модуля.

Этот раздел предназначен для разработки Java-плагина, взаимодействующего с плагинами Nightbreak. Чтобы создавать игровое поведение без Java-плагина, начните с руководства по Lua.

Выбор плагина

Все координаты ниже используют группу com.magmaguy. Эти версии были указаны в публичном Maven-репозитории при обновлении документации; выбирайте версию установленного на сервере плагина. Страницы об актуальных исходниках и сгенерированные справочники могут описывать более новую сборку до публикации её Maven-артефакта.

ПлагинАртефакт и версияСправочник разработчика
EliteMobsEliteMobs:10.9.1Сущности, предметы, события и сервис Lua-способностей
FreeMinecraftModelsFreeMinecraftModels:2.12.1Модели, взаимодействия, маскировки, предметы и магическое оружие
ResourcePackManagerResourcePackManager:2.4.1Регистрация пакетов и перезагрузка
BetterStructuresBetterStructures:2.7.2События генерации построек
EternalTDEternalTD:1.7.3События башен, волн и боя
CannonRTPCannonRTP:1.2.2Запуск, проверка назначения и события приземления
ResurrectionChestResurrectionChest:2.3.1Границы интеграции
BetterFoodBetterFood:1.5.1Границы интеграции
MagmaCoreMagmaCore:2.2.0-SNAPSHOTНастройка встроенной библиотеки и жизненный цикл

Добавление зависимости от плагина

Выпущенные плагины доступны в Maven-репозитории MagmaGuy. Компилируйте против установленного плагина с Maven provided или Gradle compileOnly. JAR интеграции не должен содержать вторую копию этого плагина.

Например, интеграция с EliteMobs использует:

pom.xml sections
<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:

build.gradle.kts sections
repositories {
maven("https://repo.magmaguy.com/releases")
}

dependencies {
compileOnly("com.magmaguy:EliteMobs:10.9.1")
}

Проекту также нужна обычная зависимость Bukkit/Paper API. Для сборки этих примеров используйте Java 21, а для запуска сервера ту версию Java, которую он требует.

Объявите зависимость времени выполнения в описателе плагина:

plugin.yml section
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 перечисляет классы, методы и сигнатуры. Сопоставляйте указанные там версию и коммит исходников с выпуском, используемым вашей интеграцией.