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

Помогите С кодом

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

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

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

    Баллы:
    88
    Skype:
    theefwio
    Имя в Minecraft:
    TheEfwio
    У меня не работает код выдачи предметов игроку
    Код:
    p.getInventory().addItem(new ItemStack(4, 64)); 
    Этот тоже не работает
    Код:
    PlayerInventory inv = p.getInventory();
    inv.addItem(new ItemStack(4, 64));
     
    slavik123123123 нравится это.
  2. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Метод весь покажи
     
    efwio нравится это.
  3. Автор темы
    efwio

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

    Баллы:
    88
    Skype:
    theefwio
    Имя в Minecraft:
    TheEfwio
    Код:
    public boolean onCommand(CommandSender sender, Command command, String label, String args[])       
    if(command.getName().equalsIgnoreCase("bpjoin")) {
                p.getInventory().addItem(new ItemStack(4, 64));
            return true;
            }
        {
             return false;
            }
            
     
  4. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    А ты удостоверился, что метод onCommand() вызывается?
     
    efwio нравится это.
  5. Автор темы
    efwio

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

    Баллы:
    88
    Skype:
    theefwio
    Имя в Minecraft:
    TheEfwio
    вроде да
     
  6. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Сижу параллельно на буржуйском сообществе буккита, и вижу подобную проблему с такой же ошибкой.
    В аргументах onCommand() допущена ошибка.
    Надо так
    Код:
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
     
    efwio нравится это.
  7. Автор темы
    efwio

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

    Баллы:
    88
    Skype:
    theefwio
    Имя в Minecraft:
    TheEfwio
    У меня все равно p подчеркивается как ошибка
     
    slavik123123123 нравится это.
  8. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Ну да, ты же не определил эту переменную
     
    efwio нравится это.
  9. Автор темы
    efwio

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

    Баллы:
    88
    Skype:
    theefwio
    Имя в Minecraft:
    TheEfwio
    А как определить?
     
  10. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Учи синтаксис
     
  11. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Да, учи java. А потом учи Bukkit API
    аргумент CommandSender sender - это тот, кто исполнил команду
    Это может быть игрок, консоль, командный блок или еще что-либо.
    Сначала нужно удостовериться, что это именно игрок:
    Код:
    if(sender instanceof Player){
        ...
    }
    а теперь, удостоверившись, можем присвоить значение переменной p, принудительно приведя ее к типу Player:
    Код:
    if(sender instanceof Player){
        Player p = (Player) sender;
        /* тут работай с переменной p как хочешь */
        return true;
    }
    Чтобы не возникло еще вопросов:
    тот код, что я привел, нужно вставить во внутрь метода onCommand
    А после этой конструкции сделать return false;

    Еще замечание:
    Код:
    command.getName().equalsIgnoreCase("bpjoin")
    Эта проверка лишняя.
    Метод и так регистрируется ТОЛЬКО НА ОДНУ команду, и проверять соответствие не обязательно.
    Исключением является случай, когда мы регистрируем алиасы.
     
  12. Автор темы
    efwio

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

    Баллы:
    88
    Skype:
    theefwio
    Имя в Minecraft:
    TheEfwio
    Спасибо но это я уже понял! И нашел свою ошибку + определил переменную
     

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