Bukkit Death/Kill ошибка броска слушателя при убийстве void

Так что я делаю плагин счетчика убийств, и я сделал слушателя, который слушает смерти и убивает, это выглядит так:

@EventHandler
public void killPlayer(EntityDeathEvent e) {

    Entity deadEntity = e.getEntity();
    Entity killer = e.getEntity().getKiller();

    if (killer instanceof Player && deadEntity instanceof Player) {

        Player player = (Player) killer;
        Player dead = (Player) deadEntity;

        int killcount = 0;
        int deathcount = 0;
        String killpath = "playerkills." + player.getName().toLowerCase();
        String deathpath = "playerdeaths." + dead.getName().toLowerCase();


        if (config.contains(killpath)) {
            killcount = config.getInt(killpath);
        }

        if (config.contains(deathpath)) {
            deathcount = config.getInt(deathpath);
        }

        config.set(killpath, killcount  +1);
        config.set(deathpath, deathcount  +1);

        plugin.saveConfig();


    }

Я уже пытался сделать "pre listener", чтобы предотвратить ошибку, но она не работает. Это кусок кода, который я сделал:

@EventHandler
public void playerDeath(PlayerDeathEvent e){
    Entity entity = e.getEntity();
    EntityDamageEvent entityDamageEvent = entity.getLastDamageCause();
    if(entityDamageEvent.getCause() == EntityDamageEvent.DamageCause.VOID){
        //Player died from void
    }
}

Но я все еще получаю ту же самую точную ошибку. Это ошибка:

Ошибка

1 ответ

Дело в том:

Пустота не является сущностью в Bukkit.

Поэтому ваша линия

 Entity killer = e.getEntity().getKiller();

Выдает ошибку из-за того, что void не является сущностью.

Если это не Entity, метод getKiller() возвращает null!


Для общего исправления проверьте, является ли ваш убийца нулевым, прежде чем использовать его.

if (killer != null)//Continue
Другие вопросы по тегам