Skip to main content
CakeAuction предоставляет API для разработки аддонов, интеграции со сторонними плагинами и регистрации кастомных провайдеров валют. API входит в ядро плагина; зависимость можно подключить через Maven или Gradle. Подробная документация также доступна в репозитории CakeAuctionAPI.

GitHub

Исходный код CakeAuctionAPI.

JitPack

Зависимости для сборщиков проектов.

Подключение

Подключайте доступную версию зависимости как compileOnly (Gradle) или provided (Maven). Версия API 2.1.0 подготовлена в исходниках; её выпуск ещё не опубликован.

Gradle

Maven

Ядро CakeAuction релоцирует библиотеки net.kyori (Adventure) и com.tcoded (FoliaLib). При сборке аддона релоцируйте их в те же пакеты для предотвращения NoSuchMethodError:

Система аддонов

CakeAuction поддерживает модульную загрузку аддонов из директории plugins/CakeAuction/addons/.

Метаданные

Создайте addon.yml в src/main/resources:

Главный класс

Класс аддона наследует AbstractAddon. Зарегистрированные через него слушатели, команды и задачи автоматически очищаются при выгрузке:

Автообновление конфигов аддона

В ресурсе config.yml храните актуальные настройки и версию:
Файл создаётся или обновляется до onEnable() и при reloadConfig(). getConfig() по-прежнему возвращает Bukkit FileConfiguration. Без переименований верните ConfigUpdateOptions.DEFAULT; вызывать saveDefaultConfig() для такого аддона необязательно. Не используйте в методе правил поля, которые заполняются только в onEnable(). При изменении шаблона увеличивайте config-version на 1, оставляйте его последним ключом с пустой строкой перед ним. Для переименований указывайте версию перехода через .relocate(...) и сохраняйте прежние правила, чтобы поддерживать обновление через несколько выпусков. Обновление сохраняет пользовательские значения, комментарии и дополнительные ключи. При переносе разделов добавляются только отсутствующие поля: существующие новые значения имеют приоритет, а конфликтующие старые значения остаются на месте. Перед заменой файл копируется в backups/ рядом с ним. Повторная загрузка актуального файла не переписывает его; более новые версии не понижаются. Старые файлы без корректной версии считаются версией 1. Если YAML повреждён или обновление не удалось, файл не сбрасывается: загрузка аддона останавливается до исправления. Без переопределения getConfigUpdateOptions() прежнее поведение аддона не меняется. Для отдельных файлов из onLoad() или onEnable() используйте:
Ресурс и файл используют одинаковый относительный путь внутри каталога аддона. Ресурс тоже должен иметь config-version. Метод возвращает ConfigUpdateResult с версиями и путём резервной копии; кеш основного конфига он не перечитывает. Для config.yml используйте reloadConfig(). Обычный saveConfig() сохраняет текущий Bukkit-конфиг и может переформатировать комментарии.

Потоки и Folia

Для совместимости со Spigot, Paper и Folia используйте методы планировщика AbstractAddon:

Менеджеры API

Точка входа API: CakeAuctionAPI.getApi().

IEconomyManager

Управление мультивалютной экономикой и регистрация кастомных валют:

IAuctionManager

Создание лотов, поиск, регистрация категорий и сортировок:

ITaxManager

Расчет налогов с учетом валют и групп:

IUserManager

Проверка лимитов и параметров игрока:

IUUIDManager

Генерация упорядоченных по времени UUID v7 и компактных Base62 short ID:

IItemManager

Сериализация предметов в Base64 и получение контрольных сумм:

IHookManager

Регистрация кастомных провайдеров предметов:

IActionManager

Регистрация действий кликов в GUI:

IAIManager

Асинхронные методы работы с ИИ-моделями:

IDatabaseManager

Диагностика подключения к базе данных:

INetworkManager

Состояние межсерверного сетевого слоя:

IMonitorManager

Диагностика производительности и управление стресс-тестом:

IBonusLimitManager

Постоянные бонусные слоты и статус аренды:

IRentManager

Временная аренда слотов (/ah rent):

IPassManager

Создание предметов-абонементов и проверка скидок на комиссию:

События