Помогите Как отследить стрелка?

Статус
Закрыто для дальнейших ответов.

pro100koder

Активный участник
Пользователь
Баллы
76
Не знаю, почему не получается сделать это так:
Код:
public void onPlayerDeath(PlayerDeathEvent e){
            if(p.getKiller() instanceof Arrow){
            Player pl = (Player) ((Projectile) p.getKiller()).getShooter();
            pl.sendMessage(ChatColor.GREEN + "Вы застрелили игрока" + ChatColor.DARK_RED + p.getName() + ChatColor.GREEN + ". " + ChatColor.GOLD + "+1 монетка!");
        }
        }
, но по какой-то, наверное, грубейшей/тупейшей ошибке моей невнимательности, этот код не находит стрелка и не пишет ему ничего в чат. Ошибок нет, другие версии убийств работают, но со стрелой проблемы.
 
Не знаю, почему не получается сделать это так:
Код:
public void onPlayerDeath(PlayerDeathEvent e){
            if(p.getKiller() instanceof Arrow){
            Player pl = (Player) ((Projectile) p.getKiller()).getShooter();
            pl.sendMessage(ChatColor.GREEN + "Вы застрелили игрока" + ChatColor.DARK_RED + p.getName() + ChatColor.GREEN + ". " + ChatColor.GOLD + "+1 монетка!");
        }
        }
, но по какой-то, наверное, грубейшей/тупейшей ошибке моей невнимательности, этот код не находит стрелка и не пишет ему ничего в чат. Ошибок нет, другие версии убийств работают, но со стрелой проблемы.
Ну... Можно потанцевать с бубном, чтобы получить стрелу которая убила игрока
PHP:
public void onPlayerDeath(PlayerDeathEvent e){
    Player player = e.getPlayer();
    EntityDamageEvent ldc = player.getLastDamageCause();
    if(ldc instanceof EntityDamageByEntityEvent) {
        EntityDamageByEntityEvent ev = (EntityDamageByEntityEvent) ldc;
        if(ev.getDamager() instanceof Arrow) {
            Arrow arrow = (Arrow) ev.getDamager();
            if(arrow.getShooter() instanceof Player) {
                Player shooter = (Player) arrow.getShooter();
            }
        }
    }
 
Ну... Можно потанцевать с бубном, чтобы получить стрелу которая убила игрока
PHP:
public void onPlayerDeath(PlayerDeathEvent e){
    Player player = e.getPlayer();
    EntityDamageEvent ldc = player.getLastDamageCause();
    if(ldc instanceof EntityDamageByEntityEvent) {
        EntityDamageByEntityEvent ev = (EntityDamageByEntityEvent) ldc;
        if(ev.getDamager() instanceof Arrow) {
            Arrow arrow = (Arrow) ev.getDamager();
            if(arrow.getShooter() instanceof Player) {
                Player shooter = (Player) arrow.getShooter();
            }
        }
    }
Через нмс же стрелок берётся, не?
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх