Войти или зарегистрироваться

Помогите getDamage и getDamager

  • Автор темы Автор темы GodlikE
  • Дата начала Дата начала

GodlikE

Старожил
Пользователь
Баллы
103
Имя в Minecraft
GodlikE
Как можно совместить getDamager() и getDamage, если они находятся в разных событиях?=) Если у кого-нибудь найдется минутка, напишите пожалуйста код-связку=)
Или хотя бы подскажите событие, когда игрок бьет другого игрока=) буду благодарен
 
Событие: EntityDamageByEntityEvent, пример:
PHP:
@EventHandler
public void OnEntityDamage (EntityDamageByEntityEvent event) {
        if (event.getDamager() instanceof Player && event.getEntity instanceof Player) {
        Player player = (Player) event.getDamager();
        Player player2 = (Player) event.getEntity(); 
        player.sendMessage("lol TEST");
        player2.sendMessage("Вас ударил: " + player.getName());   
}
        }
 
Событие: EntityDamageByEntityEvent, пример:
PHP:
@EventHandler
public void OnEntityDamage (EntityDamageByEntityEvent event) {
        if (event.getDamager() instanceof Player) {
        Player player = (Player) event.getDamager();
                player.sendMessage("lol TEST");
}
        }
Спасибо=) Эта строчка: if(event.getDamager() instanceof Player) расшифровывается, как "Если атакующий является игроком"?=)
 
Спасибо=) Эта строчка: if(event.getDamager() instanceof Player) расшифровывается, как "Если атакующий является игроком"?=)
Да, но как помню можно использовать так:

PHP:
if(event.getDamager().getType() == EntityType.PLAYER){
//Код
}
 
Оператор instanceof вернет true если объект произошел от указанного класса.

т.е. если object - игрок
object instanceof Player => True
object instanceof EntityLiving => True
object instanceof Sheep => False

Но как уже сказали выше - есть способ лучше
 
Всем спасибо=)
Подскажите еще, как называется событие поджигания игрока?=)
 
Всем спасибо=)
Подскажите еще, как называется событие поджигания игрока?=)
Вроде это событие ловится через EntityDamageByEntityEvent (Ну или EntityDamageEvent) , а поджиг через getCause().
 
Последнее редактирование:
Код:
public void onEntityDamage(EntityDamageEvent event){
        if(event.getCause() == DamageCause.FIRE_TICK){
            event.setCancelled(true);
            return;
        }
}
Отловит любую горящую единицу на сервере и потушит её
 
Назад
Верх