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

Помогите Как зарегистрировать event right-click по слоту с предметом с названием "plugin"

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

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

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

    Баллы:
    48
    Имя в Minecraft:
    _Rufu5_
    Как зарегистрировать event right-click по слоту с предметом с названием "plugin" в быстром доступе?
     
    zuma2 нравится это.
  2. Den-Xs

    Den-Xs Старожил Пользователь

    Баллы:
    103
    Skype:
    denis_314
    Код:
    @EventHandler
    public void onImventoryClick (InventoryClickEvent  event) {
        if (event.isRightClick()) && (event.getCurrentItem().getType()==Material.ТУТ_НАЗВАНИЕ_ПРЕДМЕТА){
            ТУТ_НАШ_БЫДЛОКОД
        }
    }
     
  3. BeYkeR

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

    Баллы:
    173
    мб он хотел проверить имя "plugin" , а не тип предмета ?
     
  4. Den-Xs

    Den-Xs Старожил Пользователь

    Баллы:
    103
    Skype:
    denis_314
    @BeYkeR, ну если имя (т.н. отображаемое название предмета, то тогда так:
    Код:
    @EventHandler
    public void onImventoryClick(InventoryClickEvent event) {
        if ((event.isRightClick()) && (event.getCurrentItem().getItemMeta().getDisplayName() == "ТУТ ИМЯ ПРЕДМАТА")) {
            ТУТ_НАШ_БЫДЛОКОД
        }
    }
     
  5. BeYkeR

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

    Баллы:
    173
    Имя проверяем только так.

    Код:
    @EventHandler
    public void onImventoryClick(InventoryClickEvent event) {
        if ((event.isRightClick()) && (event.getCurrentItem().getItemMeta().getDisplayName().equals("Тут_Ваша_Имя"){
            ТУТ_НАШ_БЫДЛОКОД
        }
    }
     
  6. Den-Xs

    Den-Xs Старожил Пользователь

    Баллы:
    103
    Skype:
    denis_314
    @_Rufu5_, не за что, если есть вопросы - обращайся
    И, да, под сообщением есть кнопочка "Мне нравится" ;)

    @BeYkeR, и так и так можно
     
  7. Автор темы
    _Rufu5_

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

    Баллы:
    48
    Имя в Minecraft:
    _Rufu5_
    А где взять игрока?
     
  8. Jampire

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    А вот так event.getWhoClicked()
    (я подумал что ты немного слепой)
     
    Den_Abr нравится это.
  9. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Кто сравнивает строки через ==?
     
  10. Den-Xs

    Den-Xs Старожил Пользователь

    Баллы:
    103
    Skype:
    denis_314
    я... [​IMG]
     
  11. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Это не дело, через == сравниваются указатели на объекты, а не их содержимое
     
    Оригинало_о нравится это.
  12. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    А кто наличие дисплейнейма проверять будет? и самой итемметы?
     
  13. BeYkeR

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

    Баллы:
    173
    Ну ладно:
    Код:
    @EventHandler
    public void onImventoryClick(InventoryClickEvent event) {
    if(event.getCurrentItem().getItemMeta() != null){
    if(event.getCurrentItem().getItemMeta().getDisplayName() !=null){
    if ((event.isRightClick()) && (event.getCurrentItem().getItemMeta().getDisplayName().equals("Тут_Ваша_Имя"){
     ТУТ_НАШ_БЫДЛОКОД
      }
    }
    }
    }
    
    Теперь доволен ?
     
  14. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Вот так норм
     
  15. gamelax

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

    Баллы:
    103
    Имя в Minecraft:
    gamelax
    Не имеет смысла в этом случае.
    Если Вы уверены, что один из String'ов объявлен, то сравнивайте с ним свое значение.
    Код:
    "Тут_Ваше_Имя".equals(event.getCurrentItem().getItemMeta().getDisplayName())
    Для неверующих:
    Код:
    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = count;
            if (n == anotherString.count) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = offset;
                int j = anotherString.offset;
                while (n-- != 0) {
                    if (v1[i++] != v2[j++])
                        return false;
                }
                return true;
            }
        }
        return false;
    }
    Не думаю, что во всем коде расставлены подобного рода костыли, этим можно пренебречь.

    Разумнее сперва чекать "тип" event'а ("event.isRightClick()"), а потом уже проводить сравнения предметов.
     

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