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

Помогите Использование невидимого предмета в ивенте PlayerInteractEvent

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

Статус темы:
Закрыта.
  1. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Всем снова привет. Столкнулся с проблемой, очень серьезной. Сделал я использование предмета, все работает, он отбирается, проверяется, но если выкинуть этот предмет и клацнуть ПКМ, то предмет таинственным образом используется, хотя у меня рука пуста, дебажил метод, он работает также, как и с предметов, т.е до конца. Помогите мне, что это за хрень такая:


    Код:
        @EventHandler
        public void useDirtyBandage(PlayerInteractEvent e) {
    
            Player p = e.getPlayer();
    
            GetLogger.warning("1");
            if (e.getHand() != EquipmentSlot.HAND) return;
            GetLogger.warning("2");
            if (e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
            GetLogger.warning("3");
            if (!p.getInventory().getItemInMainHand().hasItemMeta()) return;
            GetLogger.warning("4");
            if (!p.getInventory().getItemInMainHand().getItemMeta().hasDisplayName()) return;
            GetLogger.warning("5");
            if (!p.getInventory().getItemInMainHand().getItemMeta().getDisplayName().equalsIgnoreCase(ListItems.dirtyBandage.getItemMeta().getDisplayName())) return;
    
            if (!DiseaseManager.hasBlood(p)) {
                p.sendMessage(C.getPrefix() + C.c("&cЗачем мне использовать грязную ткань, если у меня нет кровотечения?"));
                return;
            }
    
            if (!r.nextBoolean()) {
                p.sendMessage(C.getPrefix() + C.c("&cГрязная ткань была слишком дырявой и я не остановил кровотечение!"));
                removeItem(p);
                return;
            }
    
            DiseaseManager.removeBlood(p);
            removeItem(p);
            p.sendMessage(C.getPrefix() + C.c("&aЯ использовал грязную ткань и остановил кровотечение!"));
        }
     
  2. Blc_Dragon

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

    Баллы:
    76
    if(p.getInventory().getItemInMainHand().getType()==Material.AIR)

    Радуйся додя
     
  3. alexandrage

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

    Баллы:
    173
    Потому что это визуал, а предмет не дропнулся и все еще в руке.
     
  4. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Убило :D. Как-то не дошло проверить на воздух
     
  5. alexandrage

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

    Баллы:
    173
    В руке не бывает null, пора бы запомнить.
     
  6. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Да, спасибо, запомню.
     
Статус темы:
Закрыта.

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