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

  • Автор темы Автор темы 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) { //срабатывает, когда одновременно игрок "уже рыбачил" и "получил рыбку в инвентарь".
  //вознаграждаем поймавшего рыбку
  }
 }
 }
 
Смысл затеи: когда игрок ловит рыбку, ему выводится сообщение "поздравляем, вы поймали рыбу" ну и выполняется какое-либо действие, вознаграждающее игрока.

Но вот проблема. 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) { //срабатывает, когда одновременно игрок "уже рыбачил" и "получил рыбку в инвентарь".
  //вознаграждаем поймавшего рыбку
  }
}
}
HashMap
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх