Skip to main content

API для розробників

CommandGuard має єдиний API-модуль для обох платформ. Доступ до tab-груп і перевірка команд — однаковий код і для Spigot, і для Velocity. Відрізняється лише подія блокування команди — вона своя на кожній платформі.

Один артефакт на обидві платформи​

Точка входу — інтерфейс CGAPI, який ви отримуєте через CGAPIProvider.get(). Він однаковий і на Spigot, і на Velocity:

CGAPI api = CGAPIProvider.get();

api.getCommandManager(); // перевірка блокування команд
api.getTabGroupManager(); // робота з tab-групами
api.getPlatform(); // платформа (Bukkit / Velocity), версія, logger
попередження

CGAPIProvider.get() кидає IllegalStateException, якщо CommandGuard ще не увімкнено. Переконайтесь, що ваш плагін залежить від CommandGuard і звертається до API вже після його запуску.

Підключення​

Артефакт публікується на JitPack. Підключається однаково для Spigot і Velocity — це той самий api. Версія нижче підтягується автоматично — остання збірка з JitPack.

Репозиторій​

Gradle
maven { url = "https://jitpack.io" }
Maven
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>

Залежність​

dependencies {
compileOnly("com.github.1wairesd:CommandGuard:loading:api")
}

Що спільне для обох платформ​

Перевірка команди​

CommandManager cm = CGAPIProvider.get().getCommandManager();
// логіка блокування за конфігом — однакова на Spigot і Velocity

Робота з tab-групами​

TabGroupManager tgm = CGAPIProvider.get().getTabGroupManager();

// Дозволені команди для набору прав гравця
// serverName = null, якщо фільтр по серверу не потрібен
List<String> allowed = tgm.getTabCommands(permissions, serverName);

// Активні групи гравця (щонайменше ["default"])
List<String> groups = tgm.getActiveGroupNames(permissions, serverName);

Що відрізняється: подія блокування​

Подія блокування команди успадковує різні базові типи платформи, тому клас свій на кожній:

Spigot — BukkitCommandBlockedEvent​

Звичайна Bukkit-подія, що реалізує Cancellable.

@EventHandler
public void onCommandBlocked(BukkitCommandBlockedEvent event) {
event.getPlayer().sendMessage("Заблоковано: " + event.getFullCommand());
event.setCancelled(true); // пропустити команду попри блокування
}

Velocity — VelocityCommandBlockedEvent​

Реалізує ResultedEvent<GenericResult>.

@Subscribe
public void onCommandBlocked(VelocityCommandBlockedEvent event) {
event.getPlayer().sendMessage(Component.text("Заблоковано: " + event.getFullCommand()));
event.setResult(ResultedEvent.GenericResult.denied()); // дозволити команду
}

Обидві події дають getPlayer() і getFullCommand(). Жодної бізнес-логіки в події немає — лише дані та результат.

Підсумок​

Частина APISpigotVelocity
CGAPIProvider.get() / CGAPIспільнийспільний
CommandManager, TabGroupManager, Platformспільнийспільний
Подія блокуванняBukkitCommandBlockedEventVelocityCommandBlockedEvent