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

Помогите связать 2 события в одно. Или "как проверить что поймал игрок"

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

Статус темы:
Закрыта.
  1. Автор темы
    GodLux

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

    Баллы:
    61
    Смысл затеи: когда игрок ловит рыбку, ему выводится сообщение "поздравляем, вы поймали рыбу" ну и выполняется какое-либо действие, вознаграждающее игрока.

    Но вот проблема. PlayerFishEvent не позволяет проверить что именно поймал игрок, максимум - показывает поймал ли он что-то или нет. Проверять энтити по id я пытался, он приравнивает всех к 1 (true).

    Второе же событие (PlayerPickupItemEvent) проверяет что именно подобрал игрок (как раз что мне надо), но вот беда, если другой игрок подкинет рыбку первому, то это зачтётся первому как пойманная рыба, ведь проверка на то "ловит ли рыбу игрок" проводилась в первом @EventHandler.

    Суть вопроса: как связать эти два эвента, чтобы можно было и проверить ловили ли рыбу и проверить что, собственно, мы поймали. Я уверен что это возможно, просто до меня не доходит как это сделать.

    Был еще вариант присвоить игроку переменную "bool ishefihedandhavegoodresult", а потом проверять если она true, то при получении игроком рыбы выполнять код вознаграждения, но

    1) так если кто-то кинет в игрока рыбу, когда он поймает деревянный топор - ему зачтеся.
    2) не совсем догоняю как создать переменную чтобы она была доступна из каждого Метода в @EventHandler. Так, чтобы она была конкретная для текущего игрока.

    Код:
     
    //ловим рыбку
     @SuppressWarnings("deprecation")
     @EventHandler
     public void FishEvent (PlayerFishEvent e){
     Player p = e.getPlayer();
     if ((isgame1) && (gametype == 4)) {
      if (e.getCaught() != null) {
      //сюда вставляем проверку рыбу ли поймал игрок
      }
     
     }
     }
     //проверка что получил игрок
     @EventHandler
     public void PickUpCheck (PlayerPickupItemEvent i) {
     if ((debug) && (gametype == 4)) { //если включена игра
     Player p = i.getPlayer(); //определяем игрока
     if (i.getItem().getItemStack().getType() == Material.RAW_FISH) { //срабатывает, когда одновременно игрок "уже рыбачил" и "получил рыбку в инвентарь".
      //вознаграждаем поймавшего рыбку
      }
     }
     }
    
     
  2. Хостинг MineCraft
    <
  3. Blc_Dragon

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    HashMap
     
  4. Автор темы
    GodLux

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

    Баллы:
    61
    Точняк, спасибо, где тебе + поставть?
     
Статус темы:
Закрыта.

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