
CommandAPI
CommandAPI - мощный плагин для Bukkit/Spigot, который упрощает создание команд с новым UI из Minecraft 1.13. Автоматическая проверка аргументов, поддержка /execute и функций - всё для удобства разработчиков.
CommandAPI - это плагин для серверов Bukkit/Spigot, который даёт полную поддержку новой системы команд, появившейся в Minecraft 1.13. Если ты разрабатываешь плагины и устал вручную парсить аргументы, проверять типы и обрабатывать ошибки - эта штука реально упростит жизнь.
Что такое CommandAPI и зачем он нужен
Начиная с Minecraft 1.13, Mojang переписали командную систему - появился новый UI, автодополнение, строгие типы аргументов. Но для разработчиков плагинов это означало головную боль: нужно было вручную работать с Brigadier, проверять, что игрок ввёл число, а не текст, и так далее. CommandAPI берёт всё это на себя. Ты просто описываешь команду и её аргументы, а плагин сам проверяет, парсит и подсказывает.
Основные фишки
- Умные команды - игроки не смогут ввести невалидную команду, а тебе не нужно писать кучу проверок.
- Автоматический парсинг аргументов - просто укажи тип (число, игрок, предмет, зелье и т.д.), и CommandAPI сам всё преобразует.
- Поддержка /execute - твои команды будут работать через /execute as ... run, как и положено.
- Поддержка функций и тегов - команды можно вызывать из майнкрафтовских функций.
- Не нужно регистрировать в plugin.yml - забудь про этот файл для команд.
- Никаких лишних зависимостей - Brigadier не нужен, всё уже внутри.
- Без слежки - плагин не собирает статистику, всё честно.
Как это выглядит в коде
Раньше, чтобы получить число из аргумента, приходилось писать так:
onCommand(CommandSender sender, Command command, String label, String[] args) {
try {
int i = Integer.parseInt(args[0]);
// Делаем что-то с числом
catch (NumberFormatException e) {
// Обрабатываем ошибку
}
}
С CommandAPI всё проще:
new CommandAPICommand("mycommand")
.withArguments(new IntegerArgument("myint"))
.executes((sender, args) -> {
int i = (int) args.get("myint");
// Делаем что-то с числом
})
.register();
Плагин сам проверит, что ввели именно число, и если нет - выдаст ошибку. Всего доступно больше 40 типов аргументов: от чисел до зачарований, сущностей, координат, предметов и эффектов зелья.
Проверка отправителя команды
Больше не нужно писать if (sender instanceof Player) - просто используй executesPlayer:
new CommandAPICommand("mycommand")
.withArguments(arguments)
.executesPlayer((player, args) -> {
player.sendMessage("Привет, " + player.getDisplayName());
})
.register();
Конвертер плагинов
Если у тебя уже есть плагин, команды которого не работают с /execute, не беда. CommandAPI умеет конвертировать команды других плагинов - они станут совместимы с /execute и датапаками. Без переписывания кода.
Что ещё умеет
- Парсить числа с диапазоном (например, только от 1 до 10).
- Работать с координатами (целые, дробные, относительные через ~).
- Преобразовывать сырой JSON в BaseComponent[].
- Подсказывать онлайн-игроков при вводе.
- Создавать свои типы аргументов.
- Назначать права на конкретные аргументы - без прав их даже не видно.
- Делать другие плагины совместимыми с /execute.
- Обрабатывать результаты и успех команд как в командных блоках.
- Давать контекстные подсказки на основе того, что уже ввёл пользователь.
Короче, если ты пишешь плагины для сервера на Майнкрафт и хочешь сэкономить кучу времени - CommandAPI реально мастхэв. Ставится просто, работает стабильно, документация есть (и она реально крутая). Скачать плагин CommandAPI можно для Bukkit/Spigot/Paper на Minecraft 1.13+.
