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

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Derik, 17 май 2016.

Статус темы:
Закрыта.
  1. Автор темы
    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);
            }
     
    Последнее редактирование: 17 май 2016
  2. Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    Ты проверяешь getItemMeta() у воздуха, вот и спамит. Сначала проверь есть ли у игрока в руке предмет, это делается так:
    if (p.getItemInHand() != null && p.getItemInHand().getType() != Material.AIR)

    Если у него есть предмет, проверяешь getItemMeta() на null. Если не null, то только тогда берешь саму getItemMeta(), затем делаешь еще одну проверку - на hasDisplayName(). Если true, получаешь getDisplayName() и радуешься
     
  3. Автор темы
    Derik

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

    Баллы:
    76
    Имя в Minecraft:
    Derik
    Спасибо уже сам допер.))
    Код:
    if(e.getPlayer().getInventory().getItemInMainHand().getType() == Material.AIR) return;
    Такую проверку добавил и все норм!
     
Статус темы:
Закрыта.

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