Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

_Rufu5_

Активный участник
Пользователь
Баллы
78
Имя в Minecraft
_Rufu5_
Как зарегистрировать event right-click по слоту с предметом с названием "plugin" в быстром доступе?
 
Код:
@EventHandler
public void onImventoryClick (InventoryClickEvent  event) {
    if (event.isRightClick()) && (event.getCurrentItem().getType()==Material.ТУТ_НАЗВАНИЕ_ПРЕДМЕТА){
        ТУТ_НАШ_БЫДЛОКОД
    }
}
 
Код:
@EventHandler
public void onImventoryClick (InventoryClickEvent  event) {
    if (event.isRightClick()) && (event.getCurrentItem().getType()==Material.ТУТ_НАЗВАНИЕ_ПРЕДМЕТА){
        ТУТ_НАШ_БЫДЛОКОД
    }
}
мб он хотел проверить имя "plugin" , а не тип предмета ?
 
@BeYkeR, ну если имя (т.н. отображаемое название предмета, то тогда так:
Код:
@EventHandler
public void onImventoryClick(InventoryClickEvent event) {
    if ((event.isRightClick()) && (event.getCurrentItem().getItemMeta().getDisplayName() == "ТУТ ИМЯ ПРЕДМАТА")) {
        ТУТ_НАШ_БЫДЛОКОД
    }
}
 
@BeYkeR, ну если имя (т.н. отображаемое название предмета, то тогда так:
Код:
@EventHandler
public void onImventoryClick(InventoryClickEvent event) {
    if ((event.isRightClick()) && (event.getCurrentItem().getItemMeta().getDisplayName().equals("Тут_Ваша_Имя"){
        ТУТ_НАШ_БЫДЛОКОД
    }
}

Имя проверяем только так.

Код:
@EventHandler
public void onImventoryClick(InventoryClickEvent event) {
    if ((event.isRightClick()) && (event.getCurrentItem().getItemMeta().getDisplayName().equals("Тут_Ваша_Имя"){
        ТУТ_НАШ_БЫДЛОКОД
    }
}
 
@_Rufu5_, не за что, если есть вопросы - обращайся
И, да, под сообщением есть кнопочка "Мне нравится" ;)

@BeYkeR, и так и так можно
 
Имя проверяем только так.

Код:
@EventHandler
public void onImventoryClick(InventoryClickEvent event) {
    if ((event.isRightClick()) && (event.getCurrentItem().getItemMeta().getDisplayName().equals("Тут_Ваша_Имя"){
        ТУТ_НАШ_БЫДЛОКОД
    }
}
А где взять игрока?
 
Кто сравнивает строки через ==?
я...
blush2.gif
 
Имя проверяем только так.

Код:
@EventHandler
public void onImventoryClick(InventoryClickEvent event) {
    if ((event.isRightClick()) && (event.getCurrentItem().getItemMeta().getDisplayName().equals("Тут_Ваша_Имя"){
        ТУТ_НАШ_БЫДЛОКОД
    }
}
А кто наличие дисплейнейма проверять будет? и самой итемметы?
 
А кто на
личие дисплейнейма проверять будет? и самой итемметы?
Ну ладно:
Код:
@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("Тут_Ваша_Имя"){
 ТУТ_НАШ_БЫДЛОКОД
  }
}
}
}

Теперь доволен ?
 
@EventHandler
public void onImventoryClick(InventoryClickEvent event) {
if(event.getCurrentItem().hasItemMeta()){
if(event.getCurrentItem().getItemMeta().hasDisplayName()){
if ((event.isRightClick()) && (event.getCurrentItem().getItemMeta().getDisplayName().equals("Тут_Ваша_Имя"){
ТУТ_НАШ_БЫДЛОКОД
}
}
}
}
Вот так норм
 
А кто наличие дисплейнейма проверять будет?
Не имеет смысла в этом случае.
Если Вы уверены, что один из 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()"), а потом уже проводить сравнения предметов.
 

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

Назад
Верх