[SOLVED] Дублируется код внутри проверки getItemInMainHand();

  • Автор темы Автор темы Zemf4you
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Zemf4you

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
zemf4you
Ну, вот да, в общем. Знаю, обсуждалось и не раз, но чёт вариант @alexandrage не помог.
Код:
@EventHandler
    public void interact(PlayerInteractEvent event) {
        Action action = event.getAction();
        if(action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK) {
            Player player = event.getPlayer();
            ItemStack item = player.getItemInHand();
        }
getItemInHand() выпилили, а getItemInMainHand() и getPlayer().getInventory().getItemInMainHand() не пашет. Подскажите, пожалуйста, метод)
 
player.getInventory().getItemInMainHand() работает?
И PlayerInteractEvent проходит два раза, для обоих рук, будь осторожен.
 
Последнее редактирование:
player.getInventory().getItemInMainHand() работает?
И PlayerInteractEvent проходит два раза, для обоих рук, будь осторожен.
UPD: Ну. я шот тупой и не понял, что делать - код внутри if дублируется, как ты и предупреждал. Как пофиксить?
Код:
@EventHandler
    public void interact(PlayerInteractEvent event) {
        Action a = event.getAction();
        if(a == Action.RIGHT_CLICK_AIR || a == Action.RIGHT_CLICK_BLOCK) {
            Player p = event.getPlayer();
            ItemStack item = p.getInventory().getItemInMainHand();
            if(item.getType() == Material.STICK) { 
                p.sendMessage("§3Условие выполнено");
            }
        }
       
    }
 
UPD: Ну. я шот тупой и не понял, что делать - код внутри if дублируется, как ты и предупреждал. Как пофиксить?
Код:
@EventHandler
    public void interact(PlayerInteractEvent event) {
        Action a = event.getAction();
        if(a == Action.RIGHT_CLICK_AIR || a == Action.RIGHT_CLICK_BLOCK) {
            Player p = event.getPlayer();
            ItemStack item = p.getInventory().getItemInMainHand();
            if(item.getType() == Material.STICK) {
                p.sendMessage("§3Условие выполнено");
            }
        }
     
    }
... Потому что ивент один и тот же и вызывается два раза, сначала для правой руки, а потом - для левой
hashCode сравнивай
 
... Потому что ивент один и тот же и вызывается два раза, сначала для правой руки, а потом - для левой
hashCode сравнивай
Можешь подсказать как, пожалуйста?
 
Последнее редактирование:
Спасибо большое, @xDark! Проблема решена!
Код:
@EventHandler
    public void interact(PlayerInteractEvent event) {
        Action a = event.getAction();
        if(a == Action.RIGHT_CLICK_AIR || a == Action.RIGHT_CLICK_BLOCK) {
            Player p = event.getPlayer();
            ItemStack item = p.getInventory().getItemInMainHand();
            if (event.getHand() == EquipmentSlot.HAND && item.getType() == Material.STICK) {
                p.sendMessage("§4Условие выполнено");
            }
           
        }
       
    }
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх