Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Bukkit死亡/杀死侦听器被void杀死时抛出错误_Java_Bukkit - Fatal编程技术网

Java Bukkit死亡/杀死侦听器被void杀死时抛出错误

Java Bukkit死亡/杀死侦听器被void杀死时抛出错误,java,bukkit,Java,Bukkit,所以我制作了kill counter插件,我制作了一个监听死亡并杀死它的监听器,它看起来像这样: @EventHandler public void killPlayer(EntityDeathEvent e) { Entity deadEntity = e.getEntity(); Entity killer = e.getEntity().getKiller(); if (killer instanceof Player && deadEntity

所以我制作了kill counter插件,我制作了一个监听死亡并杀死它的监听器,它看起来像这样:

@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();


    }
我已经试过制作“预侦听器”来防止错误的发生,但它不起作用。这是我编写的一段代码:

@EventHandler
public void playerDeath(PlayerDeathEvent e){
    Entity entity = e.getEntity();
    EntityDamageEvent entityDamageEvent = entity.getLastDamageCause();
    if(entityDamageEvent.getCause() == EntityDamageEvent.DamageCause.VOID){
        //Player died from void
    }
}
但我还是得到了同样的错误。这就是错误:

问题是:

Void不是Bukkit中的实体

因此,您的线路

 Entity killer = e.getEntity().getKiller();
由于void不是实体而引发错误

如果它不是一个实体


对于一般修复,请在使用前检查杀手是否为空

if (killer != null)//Continue

如果您阅读stacktrace,最后在net.battleheroes.java.deathcost.Events包的PlayerDeath类的第25行得到一个NullPointerException,如果您不发布该部分代码,我们将无法帮助您。可能的void副本不是实体<代码>!=空的是神奇的