Помогите Как в ивенте указать другой ивент

jamesg101

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
jamesg101
Всем привет. Делаю плагин на кровотечения.

Отловил ивент EntityDamageEvent, названный onBlooding, чтобы после нанесения удара накладывался бесконечное иссушение.

Но не могу отловить этот же ивент onBlooding в другом ивенте - PlayerMoveEvent, названный onMoveBlooding, где у игрока, двигаясь, появлялись частицы (неважно какие), но я не могу этот onBlooding отловить. Просто все перепробовал. Прошу помощи.

Сам ивент:
JavaScript:
    @EventHandler
    public static void onBlooding(EntityDamageEvent e) {
       
        if(!(e.getEntity() instanceof Player)) return;
       
        Player p = (Player) e.getEntity();
        Random r = new Random();
       
        if(r.nextInt(100) <= 50) {
            if(e.getCause().equals(DamageCause.ENTITY_ATTACK) && p.getLastDamageCause().getDamage() <= 5.0f) {
            MessageManager.getManager().msg(p, MsgType.INFORMATION, "Я получил серьезную рану и из нее течет кровь!");
           
            p.addPotionEffect(new PotionEffect(PotionEffectType.WITHER, Integer.MAX_VALUE, 1));
            }
        }
    }
 
А зачем отлавливать?При движении проверяй активные эффекты и если среди их есть нужный спавни частички.
 
А зачем отлавливать?При движении проверяй активные эффекты и если среди их есть нужный спавни частички.
А если это будет естественный эффект (появился, когда тебя ударил иссушительный скелет)
 
Так у тебя после любого удара накладывается эффект.
 
Дэк так и надо. Кровотечение не только от удара игрока может быть, но и от мобов.
При ударе игрока заноси его ник в лист игроков, у которых должно быть кровотечение.
А в PlayerMoveEvent делай проверку на наличие ника игрока в этом листе.

P.S. Не забудь удалять игрока из списка, когда у него останавливается кровотечение
 
При ударе игрока заноси его ник в лист игроков, у которых должно быть кровотечение.
А в PlayerMoveEvent делай проверку на наличие ника игрока в этом листе.

P.S. Не забудь удалять игрока из списка, когда у него останавливается кровотечение
Список - это ArrayList, так я понял? Я просто новичок в этом деле.
 
Прости конечно за глупый вопрос, но как игроков-то заносить? Сделал я ArrayList в мэйн классе?
 
Почему бы не ArrayList<Player> ?
 
Нужно в конфиг вводить специальную графу players_blooding (так назвал)
 
Вот добавил этот ивент, пишет ошибку на !this :
JavaScript:
    @EventHandler
    public static void onMoveBlooding(PlayerMoveEvent e) {
      
        Player p = e.getPlayer();
      
        if(!this.plugin.blooding_players.contains(e.getPlayer().getName())) {
          
        }
    }
Не знаю, что ему не нравится...
При этом я в главном классе все зарегал:

в onEnable()
this.blooding_players.addAll(this.getConfig().getStringList("blooding_players"));

в самом классе
public ArrayList<String> blooding_players = new ArrayList<>();
 
Последнее редактирование:
Так?
JavaScript:
    @EventHandler
    public void onMoveBlooding(PlayerMoveEvent e) {
       
        Player p = e.getPlayer();
       
        if(!this.plugin.blooding_players.contains(e.getPlayer().getName())) {
           
        }
    }
И что добавить нужно во внутрь этого ивента?
 
Назад
Верх