Помогите Двойное срабатывание внутри блока if else

Статус
Закрыто для дальнейших ответов.

multiplicator

Активный участник
Пользователь
Баллы
68
Имя в Minecraft
MultiPLicator
Добрый день форумчане! Спасибо всем кто отозвался на мой крик души...
Скажу сразу, что у меня нет программистского образования и некоторые вещи которые я могу описывать или делать могут быть в корне не правильны.
В майнкрафте с 2012, и всю жизнь хотель сам делать плагины, или что бы кто то делал, программист из команды...(есть небольшая, но я там не старший)
И вот спустя годы решил попробовать заняться, на костылях, но пытаюсь простое делать

Суть вопроса:
Пытаюсь сделать первый плагин. Функционал - по команде даёт вещь и игрок с этой вещью в руке может телепортироваться.

Столкнулся с проблемой, какой-то глупой непонятливостью - почему при нажатии ПКМ с воздухом, хлебом или сахаром(это тот самый предмет с лором) в блоке после if вызывается двойное срабатывание... методов, или как они правильно называются. а при нажатии ПКМ с колбой зелья или семенами - одиночное?
Сам свой код плохо понимаю, пытаюсь сделать всякие проверки, экспериментирую...

вот кусок кода
Код:
    @EventHandler
    public void clickOn(PlayerInteractEvent e) {
        Player p = e.getPlayer();
        Action a = e.getAction();
        Block b = e.getClickedBlock();
        
        if (!(a == Action.RIGHT_CLICK_AIR) ||
            p.getInventory().getItemInMainHand().getType() == Material.AIR ||p.getInventory().getItemInMainHand().getItemMeta().hasLore() != true ||
            b.getType() == Material.AIR) {
            
            p.sendMessage("Лора нет!");
            ItemStack i = new ItemStack((Material.BREAD), 1);
            p.getInventory().addItem(i);
            
        }
        else
            {
                List<String> lore = p.getInventory().getItemInMainHand().getItemMeta().getLore(); 
                
                if ((a == Action.RIGHT_CLICK_BLOCK && a != Action.LEFT_CLICK_BLOCK ) & lore.contains(ChatColor.DARK_AQUA + "Это личный телепорт " + p.getPlayerListName())) {
                    p.sendMessage("Я кретин!!!");
             }
             else p.sendMessage("Вы нажали на блок!");
        }
    }

Я тут конечно лишнего наверное навтыкал чего-то, но если поможете спасибо огромное!)
 
То есть нужно проверить с какой руки идёт клик?
Просто хочу понять как это работает. Я же кликаю только одной, а действия 2 происходит.
P.S. Наводку понял, спасибо за быстрый ответ)
 
дописал такую строчку и всё сработало
if (e.getHand() == EquipmentSlot.HAND) return;
спасибо!
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх