1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Команды для bukkit

Тема в разделе "Разработка плагинов для новичков", создана пользователем CrazyJared, 2 янв 2013.

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

    CrazyJared Активный участник Пользователь

    Баллы:
    68
    Всем доброго времени суток!
    я умею делать только простые команды как эти:
    Код:
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
            if(cmd.getName().equals("test")){
                //Действия
            }
            return false;       
        }
    Возникла проблема, как написать чтоб работала эта команда ?
    /test player 1
    player - имя игрока, причем чтоб его искало в списке онлайна.
     
    Сникерсни нравится это.
  2. Xssnick

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

    Баллы:
    103
    Чтоб искало бери массив имен и используй
    Код:
    foreach(param1 in mass)
    {
        if(param1 =="ник")
        {
            действие
        }
    }

    где mass - массив имен

    Незнаю есть ли в яве такая функция, но все же попробуй так:
    где oldstr твое - test player 1
    Код:
    String str = oldstr.Split(' ');
     
  3. D_ART

    D_ART Старожил Девелопер Пользователь

    Баллы:
    173
    Имя в Minecraft:
    Artarious
    Если разобрать фразу, то получается:
    /test - сама команда
    player - аргумент № 1
    1 - аргумент № 2

    Если игрок отправляет команду с аргументами, то Bukkit создаёт массив, где первый аргумент (в нашем случае player) имеет индекс 0, а "1" собственно индекс 1

    Получается нужно предварительно проверить саму команду, а потом уже проверять необходимые аргументы.

    Пример:
    Код:
    //Проверяем саму команду
    if(cmd.getName().equalsIgnoreCase("test")){
    if(args[0].equalsIgnoreCase("player")){
    //если первый аргумент player, то выполняем дальнейшие проверки и в конце нужные действия
    }
    }
    P.S Лучше используйте .equalsIgnoreCase() и тогда у вас будет работать при разных регистрах написания команды будь то TeSt, то TEst, иначе с .equals() вас пустит только, если будет 100 %-но написано test
     
  4. Автор темы
    CrazyJared

    CrazyJared Активный участник Пользователь

    Баллы:
    68
    Я нашел статью, где написано про команды, там написано то же, что пишет D_ART. Единственное, что не совсем то, что нужно, это
    Код:
    if(args[0].equalsIgnoreCase("player")){
    .
    Я нашел решения сам, чтоб игрока искало в онлайне:
    Код:
    Player player = Bukkit.getPlayer(args[0]);
    P.S Возможно я не корректно поставил вопрос.
     
  5. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Код:
    if(cmd.getName().equalsIgnoreCase("test")){
    Данная строка нужна, если у нас на один обработчик завязано несколько различных команд. В противном случае является лишним.
    Перед обращением к любому члену массива рекомендую проверить на наличие нужного количества элементов в массиве. Массив ведь может быть и пустой(просто команда /test) и тогда плагин выдаст исключение.
     

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