Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Туториал [урок] обработка команд

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем DmitriyMX, 16 дек 2011.

  1. Автор темы
    DmitriyMX

    DmitriyMX Старожил Пользователь

    Баллы:
    153
    Skype:
    dmn550
    Наш плагин чата уже многое умеет. Сейчас в нем не хватает одной важной детали: перезагрузка конфигурации. Проще говоря, если мы добавим в файл настроек какого-нибудь пользователи или изменим формат уже существующего, то в игре ничего не обновится, если не сделать рестарт сервера. Исправим это с помощью команды, набранной оператором в чате.

    Да, в этом уроке мы научимся тому, чем напичканы 99% плагинов: реагирование на команды.

    На самом деле это очень просто. Для этого служит метод onCommand(), объявленный в главном классе плагина(в нашем случае, в DMXChat).

    Код:
    public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args)
    sender – это ссылка на отправителя комманды. Здесь может быть как ссылка на игрока (объект Player), так и ссылка на консоль Bukkit’а
    cmd - здесь кроется название команды, которая набрана
    args – массив аргументов
    cmdLabel – …честно говоря не помню для чего служит, но и без нее можно жить
    возвращаемые данные – логический тип, т.е. выполнилась команда или нет.

    Для наглядности, пусть по команде /chat -reload наш плагин перечитывает список избранных. Данная команда состоит из двух частей: “chat”, который является самой командой и “-reload” являющийся аргументом команды.

    Итак, от теории к делу. В классе DMXChat добавим метот onComand():
    Код:
    public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args){
        if(cmd.getName().equalsIgnoreCase(“chat”)){
            if(args[0].equalsIgnoreCase(“-reload”)){
                chatListener.userList = config.getKeys(false);
                return true;
            }
        }
        return false;
    }
    Здесь всё довольно просто: в первых двух условиях проверяется соответствие команды и аргумента. Можно было бы залепить в одно условие, но я оставил так для наглядности. Такие проверки нужны, если ваш плагин “обслуживает” не одну команду и не один аргумент. После всех проверок, список избранных заново загружается в память. Ах да, чуть не забыл. Нужно сделать одну маленькую паправку в DMXChatListener:

    Код:
    public Set<String> userList;
    Иначе доступа к этой переменной(свойству?) мы не получим из вне класса.

    На этом можно было бы закончить, но не тут то было. Если сейчас скомпилировать плагин и залить его на сервер, то команда наша работать не будет. Но почему?! Мы же всё правильно сделали! Да, правильно, но не до конца. Чтобы Bukkit смог передать управление нашему плагину на обработку команды /chat, нужно в файле plugin.yml(о нем в первом уроке говорилось) добавить следующий текст:

    Код:
    commands:
      chat:
        usage: /chat -reload
    В ветке commands перечисляются команды, на которые наш плагин реагирует. А в usage пишется вспомогательный текст. Он будет отображаться, если onCommand() вернет false.

    Теперь точно всё. В следующем уроке, расскажу как реализовать разделение прав доступа с использованием сторонего плагина Permissions.

    _____________________________​
     
    jkl1234, D_ART, z0z1ch и ещё 1-му нравится это.
  2. Хостинг MineCraft
    <
  3. helfi228

    helfi228 Активный участник

    Баллы:
    63
    Имя в Minecraft:
    helfi228
    слушай скажи как стать админом на своём серве я пытался писать в консоли op иник игорока не получилось и пытался так /op иник игрока тоже не получилось
     
    ВремяПриключений нравится это.
  4. Merro

    Merro Старожил Пользователь

    Баллы:
    103
    ...
     

Поделиться этой страницей