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

Команды для bukkit

Discussion in 'Разработка плагинов для новичков' started by CrazyJared, Jan 2, 2013.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Share This Page