Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Не работает PlayerInteractEvent при Material.AIR

Тема в разделе "Разработка плагинов для новичков", создана пользователем BeYkeR, 18 фев 2014.

  1. Автор темы
    BeYkeR

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

    Баллы:
    173
    Есть кусочек кода:

    PHP:
    if(event.getAction() == Action.RIGHT_CLICK_AIR){
    if(
    player.getItemInHand().getType() == Material.AIR){
    //СУПЕР СЕКРЕТНЫЙ КОД
    }
    }
           
    И непонятной мной причиной метод не работает, в чем ошибка ?
     
  2. Хостинг MineCraft
    <
  3. dark32

    dark32 А где твой ТЗ? Пользователь

    Баллы:
    123
    Имя в Minecraft:
    dark32
    А теперь назови вещь у которой материал Воздух?
    Тут скорей нужно проверять не пусто ли в руках.
    Попробуй поставить отладочное сообщение на материал при клике по воздуху, чтобы точно видеть какой материал.
     
  4. kris13

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

    Баллы:
    78
    Насколько я помню, если в руке пусто player.getItemInHand() вернет null
     
  5. Автор темы
    BeYkeR

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

    Баллы:
    173
    Назвать вещь ? Пустая ячейка в инвертаре.
    Я взял материал потому что когда я использую:
    PHP:
    if(player.getItemInHand() == null)
    Дальнейшие действия просто не идут или сыпятся ошибки из-за null.
    И еще: Если вместо RIGHT_CLICK_AIR написать RIGHT_CLICK_BLOCK то код начнет работать, но если кликать воздух , то код не работает.
     
  6. aceJKE

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

    Баллы:
    123
    Код:
     if (player.getItemInHand().equals(Material.AIR)) {
                if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.RIGHT_CLICK_AIR)) {
        //мб так...
      }
    }
     
  7. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Начиная с последних версий Action RIGHT_CLICK_AIR будет "стрелять" только если у человека есть что-то в руках.
    В противном случае Event просто не будет вызыван
     
    BeYkeR нравится это.
  8. Shockwave

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

    Баллы:
    103
    Просто блок воздуха не взаимодействует ни с чем кроме блока, попробуйте в игре кликнуть по воздуху, не получится
     
    Likeobot, Hilgert и BeYkeR нравится это.
  9. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    Код:
        @EventHandler
        public void onInteract(PlayerInteractEvent e){
            if(e.getPlayer().getItemInHand() == null){
                if(e.getAction() == Action.LEFT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_AIR){
                    //Твой супер-секретный код:3
                }
            }
        }
     
    Hephest нравится это.

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