- Баллы
- 76
- Имя в Minecraft
- SiRiuS_OSiRiuS
Создаём Простую Команду
Создаём простую команду, которая выдаёт игрокам вещи
------------------------------------------------------------------------------------------------------------------------------------------------------------
Разрабатываем командуСоздаём простую команду, которая выдаёт игрокам вещи
------------------------------------------------------------------------------------------------------------------------------------------------------------
Для начала, вам надо уже понимать, какую команду вы хотите сделать. Здесь мы в качестве примера создадим команду "/kit". Тем не менее, она может быть заменена любой командой, что вы выбрали для использования в своём собственном плагине.
Рекомендуется, да и считается более организованным создавать новый класс для каждой команды. Вам нужно реализовать интерфейс CommandExecutor. Файл класса будет выглядеть примерно так:
Java:
public class CommandKit implements CommandExecutor {
// Этот метод вызывается, когда кто-то использует нашу команду
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
return false;
}
}
- CommandSender обозначает того, кто отправляет команду. Может быть Player, ConsoleCommandSender или BlockCommandSender (командный блок)
- Command обозначает вызванную команду. Она будет почти всегда известна заранее.
- Label обозначает именно первое слово в команде (исключая аргументы), которое было введено отправителем
- Args - это остальная часть команды (т.е., исключая labell), разделённая пробелами и помещённая в массив.
Обратите внимание: Объект CommandSender, что передаётся нам в методе onCommand, иногда может быть использован без предварительного "кастинга" к игроку. Если вам нужно всего лишь отправить сообщение, проверять, игрок это или нет, просто бессмысленная нагрузка на вам код, которая делает вашу команду немного менее удобной для использования.
Java:
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (sender instanceof Player) {
Player player = (Player) sender;
// Здесь нам надо выдать предметы игроку
}
// Если игрок (или консоль) правильно использует нашу команду, мы можем возвращать истину
return true;
}
Код для нашей команды-примера будет выглядеть примерно так:
Java:
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (sender instanceof Player) {
Player player = (Player) sender;
// Создаём новый ItemStack (тип: алмаз)
ItemStack diamond = new ItemStack(Material.DIAMOND);
// Создаём новый ItemStack (тип: кирпич)
ItemStack bricks = new ItemStack(Material.BRICK);
// Устанавливаем количество ItemStack
bricks.setAmount(20);
// Выдаём игроку наши предметы (разделённый через запятые список всех ItemStack)
player.getInventory().addItem(bricks, diamond);
}
// Если игрок (или консоль) правильно использует нашу команду, мы можем возвращать истину
return true;
}
Java:
ItemStack bricks = new ItemStack(Material.BRICK, 20);
Регистрируем Команду
Затем нам надо зарегистрировать нашу команду. Чтобы сделать это, перейдите в ваш метод onEnable() в главном классе. Нам всего лишь надо добавить одну строку.
Java:
@Override
public void onEnable() {
// Регистрируем нашу команду "kit" (установите экземпляр класса вашей команды в качестве исполнителя)
this.getCommand("kit").setExecutor(new CommandKit());
}
Добавляем в plugin.yml
Последний шаг - добавить нашу команду в plugin.yml. Откройте его и добавьте строки, похожие на те, что ниже, и протестируйте ваш плагин.
YAML:
# Замените "kit" на название вашей команды
commands:
kit:
description: Ваше описание
usage: /kit
Обратите внимание на следующие вещи:
- Строка, которую вы используете при регистрации команды должна быть такой же, что используется в вашем plugin.yml
- Вы можете инициализировать ваш экземпляр CommandExecutor с аргументами конструктора, например, главным классом плагина (пример главного класса, пример CommandExecutor'а - прим. пер.), если необходимо.
- В вашем методе onCommand вы можете возвращать false, если хотите отправить CommandSender'у сообщение, показывающее ему правильное использование вашей команды (как указано в plugin.yml). Возвращайте true, чтобы бесшумно остановить выполнение.
- Считается хорошей практикой отправлять сообщение об ошибке, когда неверный CommandSender пытается использовать команду (например, когда консоль хочет использовать команду /kit).
Если вы хотите создать команду, не регистрируя её в plugin.yml, посмотрите эту тему. Если она кажется вам слишком сложной, изучите PlayerCommandPreprocessEvent - прим. перев.