Помогите getKiller() и NPE 24/7

IcedwinterZ

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
IcedwinterZ
В PlayerDeathEvent при попытке получить киллера, я жру NPE. Киллер точно есть, это моб, вернуть эта штука должна LivingEntity, но возвращает NPE, что делать?


Код:
Player p = e.getEntity();
        Entity killer = p.getKiller();
        if(killer instanceof Player){
            return;
        }
        if(killer == null){
            p.sendMessage("гавно");
            return;
        }
        p.sendMessage("*****cь");
        if(HellMobParser.toSett.containsKey(killer.getCustomName())){
            HellMob mob = HellMobParser.toSett.get(killer.getCustomName());
            if(mob.isDamageMessage()){
                rand = HellWar.plugin.getConfig().getInt("kill-message-rand");
                if(rand == 0){
                    rand ++;
                }
                if(r.nextInt(rand) == 0){
                    String message = "&a&l[" + killer.getCustomName() + "&a&l] " + mob.getDamageMessages().get(r.nextInt(mob.getDamageMessages().size()));
                    p.sendMessage(Utils.color(message));
                }
            }
        }
 
там вроде только игрока возвращает. и всё
 
e.getEntity().getLastDamageCause().getEntity()
попробуй так
 
Java:
    @EventHandler
    public void PlayerDeathEvent(PlayerDeathEvent event) {
        Entity entity = event.getEntity();
        Player victim = (Player) entity;
        Entity killer = victim.getKiller();
        if (killer != null && killer.getType() == EntityType.КАКОЙ-ТОМОБ) {
               //TODO
        }
    }
 
Последнее редактирование:
А как ты это сделал?
Код:
ent.getEquipment().setItemInHand(mob.getHand());
        ent.getEquipment().setHelmet(mob.getHilmet());
        ent.getEquipment().setChestplate(mob.getChestplate());
        ent.getEquipment().setBoots(mob.getBots());
        ent.setMaxHealth(mob.getHeal());
        ent.setHealth(mob.getHeal());
        ent.setCustomName(mob.getName());
        ent.setCustomNameVisible(true);
        NMSController.setRangeDetection(ent, mob.getDetect());
        NMSController.setSpeed(ent, mob.getSpeed());
        NMSController.setDamage(ent, mob.getDamage());
        listToRandom.clear();
        mobsByType.clear();

ПАМАГИТЕ))0))
 
можно покостылить (ne testil)
@EventHandler
public void onDamage(EntityDamageByEntityEvent e) {
Entity attacked = e.getEntity();
if ((attacked.getHealth() - e.getDamage()) > 0) return;
Entity damager = e.getDamager();
//todo
}
 
Назад
Верх