.jar.
Более подробную инструкцию по использованию API вы можете найти здесь.
GitHub Репозиторий
Исходный код и последние релизы API.
JitPack
Подключение зависимости в ваш проект.
🚀 Подключение
ИспользуйтеcompileOnly (Gradle) или provided (Maven), чтобы API не попадало в ваш итоговый JAR-файл.
Gradle (Groovy)
Maven
VERSION на актуальную версию, например 2.0.0)
🧩 Система Аддонов
CakeRegionsPlus включает полноценную управляемую систему аддонов с изолированным жизненным циклом. Аддоны — это JAR-файлы, которые помещаются в папкуplugins/CakeRegionsPlus/addons/.
1. Метаданные (addon.yml)
Создайте файлaddon.yml в папке resources вашего проекта:
2. Реализация (AbstractAddon)
Наследуйте ваш главный класс отAbstractAddon. Это обеспечит автоматическую очистку ресурсов (слушателей, команд, задач, открытых меню) при выключении.
Автоматическая очистка ресурсов: При отключении аддона CakeRegions автоматически:
- Выгружает все зарегистрированные через
registerListener()слушатели событий. - Удаляет все зарегистрированные через
registerCommand()команды. - Отменяет все задачи, запланированные методами
runTask*(). - Закрывает все GUI-меню, открытые вашим аддоном.
3. Конфигурация аддона
AbstractAddon предоставляет встроенное управление конфигурацией, аналогичное JavaPlugin:
plugins/CakeRegionsPlus/addons/<имя_аддона>/.
⚡ Потоки и Folia (Concurrency)
Для корректной работы на Folia, Paper и Spigot используйте встроенные методы планировщика. Это гарантирует безопасность региональных потоков и автоматическую отмену задач при выгрузке аддона.🛠️ Основные методы API
Доступ к API осуществляется черезCakeRegionsAPI.getApi().
🗺️ Регионы (IRegion)
Поиск, создание и управление регионами:📋 Объект IRegion
Когда вы получаете регион (IRegion), вам доступны следующие методы:
| Метод | Описание |
|---|---|
getId() | Уникальный ID региона |
getCenter() | Location центрального блока |
getCreator() | UUID создателя |
getOwners() | Set<UUID> совладельцев |
getMembers() | Set<UUID> участников |
getFullMembers() | Все участники (создатель + владельцы + участники) |
isActive() | Активен ли регион (есть топливо/прочность) |
getDurability() | Текущая прочность |
getFuelExpiryDate() | Время истечения топлива (unix ms) |
getRemainingFuel() | Остаток времени топлива в секундах |
getAge() | Возраст региона в секундах |
isAutoAdd() | Включено ли автодобавление соклановцев |
setAutoAdd(boolean) | Установить статус автодобавления соклановцев |
isFuelBar() | Отображается ли боссбар топлива владельцу |
setFuelBar(boolean) | Установить видимость боссбара топлива |
getRole(UUID) | Получить строковый ID роли участника (например, "owner", "member") |
getFormattedCreationDate() | Дата создания в читаемом формате |
getProtectionBlockType() | Настройки типа блока привата (IProtectionBlock) |
getCuboid() | Куб, описывающий границы региона (ICuboid) |
Управление прочностью и топливом
Проверка ролей
Метаданные и Теги (Tags)
Вы можете сохранять любые строковые метаданные прямо внутри региона. Они будут сохранены в базу данных:👥 Управление участниками
🔐 Права участников (IPlayerPermissions)
RegionPermValue:
| Значение | Описание |
|---|---|
ADD_FUEL | Добавление топлива |
ADD_MEMBER | Добавление участников |
REMOVE_MEMBER | Удаление участников |
ADD_OWNER | Добавление совладельцев |
REMOVE_OWNER | Удаление совладельцев |
MODIFY_PERMISSIONS | Изменение прав |
🏗️ Блоки привата (IProtectionBlock)
IProtectionBlock предоставляет полный доступ к настройкам из конфига:
| Метод | Описание |
|---|---|
getTypeId() | ID типа (напр. "diamond") |
getMaterial() | Материал блока |
getRadius() | Радиус защиты |
getMaxMembers() | Максимум участников |
getEconomyProvider() | Провайдер экономики |
getHologramEngine() | Движок голограмм |
getPlaceCost() | Стоимость установки |
isFuelSystemEnabled() | Включена ли система топлива |
getHologram() | Настройки голограммы |
getDurability() | Настройки прочности |
getPlacementRules() | Правила размещения (биомы, блоки) |
getCraftData() | Настройки крафта |
getActions() | Действия при событиях |
getRequirements() | Требования для установки |
🔭 Голограммы
💰 Экономика (IEconomyManager)
CakeRegionsPlus поддерживает несколько экономических провайдеров: Vault, VaultUnlocked, BVault, PlayerPoints, XP (стандартный опыт Minecraft). Каждый тип блока привата может использовать свой провайдер.Регистрация кастомной экономики
Если ваш аддон вводит собственную валюту, реализуйте интерфейсIEconomyProvider:
Gems можно указать в конфиге блока привата (economy-provider: Gems).
🔌 Кастомные предметы (IItemHookManager)
CakeRegionsPlus умеет распознавать и выдавать кастомные предметы из ItemsAdder, Oraxen и Nexo. Вы также можете добавить поддержку своего плагина предметов.Регистрация своего провайдера кастомных предметов
🗃️ Дополнительные Менеджеры API
Помимо основных методов,IRegionsAPI предоставляет доступ к специализированным менеджерам для гибкого управления всеми системами плагина:
🔋 Менеджер Топлива (IFuelManager)
Управление типами топлива и проверкой предметов:🔧 Менеджер Починки (IRepairManager)
Управление ремонтными материалами:🎬 Менеджер Действий (IActionManager)
Выполнение кастомных цепочек действий (Actions):📢 Менеджер Уведомлений (INotificationManager)
Отправка рейдов и предупреждений:🌌 Менеджер Эффектов (IEffectsManager)
Визуальные эффекты вокруг блоков привата:🗂️ Менеджер Меню (IMenuManager)
Открытие кастомных инвентарей плагина:📊 Менеджер Статистики (IStatsManager)
Получение статистики о регионах и рейдах игроков:👁️ Визуализатор Регионов (IRegionVisualizer)
Управление визуальным показом границ приватов:⚙️ Настройки Игрока (Player Settings)
Управление персональными настройками игроков (например, отображением BossBar):⚡ Улучшения и Бустеры (Upgrades & Boosters)
Система улучшений и PVE бустеров предоставляет полные методы для расширения функционала приватов:📅 Система Событий (Events)
Все события находятся в пакетеdev.cakestudio.cakeregionsapi.api.event и наследуют стандартный класс org.bukkit.event.Event. Большинство событий поддерживают Cancellable.
| Событие | Описание | Отменяемое | Ключевые данные |
|---|---|---|---|
RegionCreateEvent | Создание нового региона | ✅ | getPlayer(), getRegion(), getIProtectionBlockType() |
RegionDestroyEvent | Удаление региона | ✅ | getRegion(), getDestroyer(), getCause(), setDropItem() |
RegionExplosionEvent | Взрыв затрагивает регион | ✅ | getRegion(), getExplosionSource(), getAffectedBlocks() |
RegionDurabilityChangeEvent | Изменение прочности | ✅ | getRegion(), getOldDurability(), getNewDurability() |
RegionMemberAddEvent | Добавление участника | ✅ | getRegion(), getMember() |
RegionMemberRemoveEvent | Удаление участника | ✅ | getRegion(), getMember() |
RegionOwnerAddEvent | Добавление совладельца | ✅ | getRegion(), getMember() |
RegionOwnerRemoveEvent | Удаление совладельца | ✅ | getRegion(), getMember() |
RegionEnterEvent | Вход игрока в зону региона | ❌ | getPlayer(), getRegion() |
RegionLeaveEvent | Выход игрока из зоны региона | ❌ | getPlayer(), getRegion() |
RegionFuelAddEvent | Пополнение топлива региона | ✅ | getPlayer(), getRegion(), getFuelItem(), getFuelPoints() |
RegionFuelExpireEvent | Истечение срока действия топлива региона | ❌ | getRegion() |
RegionRepairEvent | Починка региона ремонтным предметом | ✅ | getPlayer(), getRegion(), getRepairItem(), getRepairPoints() |
RegionTeleportEvent | Телепортация игрока к региону | ✅ | getPlayer(), getRegion() |
RegionRaidStartEvent | Обнаружение начала рейда на регион | ❌ | getRegion(), getRaider(), getDamageSource() |
RegionPermissionChangeEvent | Изменение прав участника в регионе | ✅ | getRegion(), getTarget(), getPermission(), isNewState() |
RegionOwnerTransferEvent | Передача владения регионом (creator) | ✅ | getRegion(), getPreviousCreator(), getNewCreator() |
RegionUpgradeEvent | Покупка улучшения уровня региона | ✅ | getRegion(), getPlayer(), getUpgradeType(), getPreviousLevel(), getNewLevel() |
RegionBoosterActivateEvent | Активация PVE бустера в регионе | ✅ | getRegion(), getPlayer(), getBoosterId(), getDurationSeconds() |
RegionBoosterExpireEvent | Истечение срока действия бустера | ❌ | getRegion(), getBoosterId() |
RegionBoosterToggleEvent | Переключение игроком активности бустера | ✅ | getRegion(), getPlayer(), getBoosterId(), isNewEnabledState() |
RegionDestroyEvent содержит перечисление DestroyCause со значениями:
PLAYER_BREAK— регион сломан игроком.EXPLOSION— регион уничтожен взрывом.
Пример слушателя
🎯 Полный пример аддона
Полный рабочий пример аддона доступен в репозитории: example_addonСтруктура проекта
build.gradle
MyAddon.java
addon.yml
🧰 Утилиты API
| Метод | Описание |
|---|---|
api.getPlugin() | Экземпляр JavaPlugin основного плагина |
api.getFoliaLib() | Экземпляр FoliaLib для планирования задач |
api.getDataFolder() | Папка данных плагина |
api.registerCommand(cmd) | Динамическая регистрация команды |
api.unregisterCommand(cmd) | Удаление команды |
api.toggleRegionCreation(player) | Переключить создание регионов для игрока |
api.isCreationDisabled(player) | Проверить, отключено ли создание |
api.setCreationDisabled(player, bool) | Установить запрет создания |
api.getPlayerRegionLimit(player) | Лимит регионов для игрока |
api.isAreaOverlapping(cuboid) | Проверить пересечение областей |