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