Skip to main content
Добро пожаловать в документацию по API для плагина CakeRegionsPlus. Этот гайд поможет вам интегрировать ваш плагин с нашей системой регионов и взаимодействовать с ней. Исходный код API и последние релизы вы можете найти в нашем GitHub репозитории.

1. Подключение API

Для начала работы добавьте CakeRegionsAPI как зависимость в ваш проект.

Maven

Добавьте репозиторий в <repositories>:
<repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
</repository>
Затем добавьте зависимость:
<dependency>
    <groupId>com.github.CakesStudio</groupId>
    <artifactId>CakeRegionsAPI</artifactId>
    <version>VERSION</version> <!-- Укажите нужную версию -->
    <scope>provided</scope>
</dependency>

Gradle

Добавьте репозиторий и зависимость в build.gradle:
repositories {
    maven { url = 'https://jitpack.io' }
}

dependencies {
    compileOnly 'com.github.CakesStudio:CakeRegionsAPI:VERSION'
}
Не забудьте указать CakeRegionsAPI и CakeRegionsPlus в plugin.yml вашего плагина:
depend:
  - CakeRegionsAPI
  - CakeRegionsPlus

2. Получение доступа к API

Рекомендуется получать экземпляр API в методе onEnable, предварительно проверив, что плагин загружен:
import dev.cakestudio.cakeregionsapi.api.IRegionsAPI;
import dev.cakestudio.cakeregionsapi.CakeRegionsAPI;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;

public final class YourPlugin extends JavaPlugin {
    private IRegionsAPI cakeRegionsAPI;

    @Override
    public void onEnable() {
        if (!Bukkit.getPluginManager().isPluginEnabled("CakeRegionsPlus")) {
            getLogger().severe("CakeRegionsPlus не найден! Отключаем плагин.");
            getServer().getPluginManager().disablePlugin(this);
            return;
        }

        try {
            this.cakeRegionsAPI = CakeRegionsAPI.getApi();
        } catch (IllegalStateException e) {
            getLogger().severe("Не удалось получить CakeRegionsAPI!");
            getServer().getPluginManager().disablePlugin(this);
            return;
        }

        getLogger().info("Успешно подключено к CakeRegionsAPI!");
    }

    public IRegionsAPI getCakeRegionsAPI() {
        return cakeRegionsAPI;
    }
}

3. Работа с Событиями (Events)

API предоставляет кастомные события, которые вы можете отслеживать. Все они поддерживают отмену (cancellable).
  • RegionCreateEvent - Вызывается при создании нового региона.
  • RegionDestroyEvent - Вызывается при уничтожении региона.
  • RegionDurabilityChangeEvent - Вызывается при изменении прочности региона.
  • RegionExplosionEvent - Вызывается, когда взрыв затрагивает территорию региона.
  • RegionMemberAddEvent / RegionMemberRemoveEvent - Вызывается при добавлении/удалении участника.
  • RegionOwnerAddEvent / RegionOwnerRemoveEvent - Вызывается при добавлении/удалении владельца.

Пример слушателя

import dev.cakestudio.cakeregionsapi.api.event.RegionCreateEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class YourListenerClass implements Listener {
    @EventHandler
    public void onRegionPlace(RegionCreateEvent event) {
        // event.getPlayer() - игрок, создавший регион
        // event.getRegion() - созданный регион
        // event.setCancelled(true);
    }
}

4. Работа с Объектом IRegion

Когда вы получаете регион (IRegion), вы можете использовать его методы:
  • getCreator(): Возвращает UUID создателя региона.
  • getOwners(): Возвращает Set<UUID> совладельцев региона.
  • getMembers(): Возвращает Set<UUID> участников региона.
  • getFullMembers(): Возвращает всех участников (создатель, совладельцы, обычные участники).
  • getCenter(): Возвращает Location центрального блока региона.
  • getDurability(): Возвращает текущую прочность.
  • getFuelExpiryDate(): Возвращает время истечения топлива в мс.
  • isActive(): Активен ли регион (есть топливо/прочность).
  • getProtectionBlockType(): Возвращает объект типа блока привата (IProtectionBlock).
  • getCuboid(): Возвращает куб региона, описывающий его границы.