Помогите Как проверить руку на пустоту

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

Derik

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Derik
Хочу зделать кирку которая ломала бы обсидиан быстро. Вроде все работает. Но если в руке нечего нету, когда бьеш по любому блоку, спамит в консоль ошибками. Как это исправить?

Код:
        @EventHandler
        public void onUsePick(PlayerInteractEvent e){ 
            if(e.getAction() != Action.LEFT_CLICK_BLOCK) return;
            if(e.getItem().getItemMeta().getDisplayName() == null) return;
            if(e.getItem().getItemMeta().getLore() == null) return;
            if (!e.getItem().getItemMeta().getDisplayName().equals(picname)) return;
            if(e.getClickedBlock().getType() == Material.OBSIDIAN){
            e.getClickedBlock().breakNaturally();
            }

Пробую использовать BlockBreak тоже самое, работает пока не удариш пустой рукой.
Код:
        @EventHandler
        public void OnUsePick(BlockBreakEvent  e){
            String item = e.getPlayer().getInventory().getItemInMainHand().getItemMeta().getDisplayName();
            e.getPlayer().sendMessage(item);
        }
 
Последнее редактирование:
Ты проверяешь getItemMeta() у воздуха, вот и спамит. Сначала проверь есть ли у игрока в руке предмет, это делается так:
if (p.getItemInHand() != null && p.getItemInHand().getType() != Material.AIR)

Если у него есть предмет, проверяешь getItemMeta() на null. Если не null, то только тогда берешь саму getItemMeta(), затем делаешь еще одну проверку - на hasDisplayName(). Если true, получаешь getDisplayName() и радуешься
 
Спасибо уже сам допер.))
Код:
if(e.getPlayer().getInventory().getItemInMainHand().getType() == Material.AIR) return;
Такую проверку добавил и все норм!
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх