개인 자료란 (JE)

  서버 커뮤니티

Profile doxa97 대표칭호 없음

doxa97 951212593122449fbdd52f302c595cf1

Profile

질문하기 Java

DamageCause 구문에서 NPE 발생

2022.02.10 조회 수 93 추천 수 0
이해도 플러그인 
게임버전 (JE) 버킷 

@EventHandler
public void AttackEvent(EntityDamageByEntityEvent event) {
    Player player = (Player) event.getDamager();
    double ac = player.getAttackCooldown();
    if (ac < 1.0) {
        event.setCancelled(true);
        player.sendMessage(ChatColor.DARK_AQUA+"[ Ercanel ]"+ChatColor.WHITE+"성급!");
    } else {
        if (event.getDamager() instanceof Projectile) {
            Projectile p = (Projectile) event.getDamager();
            if (p.getType() == EntityType.ARROW) {
                if (p.getShooter() != null && p.getShooter() instanceof Player && event.getEntity() instanceof Player) {
                    PlayerDamageByPlayer(event, (Player) p.getShooter(), (Player) event.getEntity(), (int) event.getDamage(), "B");
                } else if (p.getShooter() != null && p.getShooter() instanceof Player && !(event.getEntity() instanceof Player)) {
                    EntityDamageByPlayer(event, (Player) p.getShooter(), (int) event.getDamage(), "B");
                } else if (p.getShooter() != null && !(p.getShooter() instanceof Player) && event.getEntity() instanceof Player) {
                    PlayerDamageByEntity(event, (Player) event.getEntity());
                }
            }
        } else {
            if (event.getDamager() instanceof LivingEntity) {
                if (Objects.requireNonNull(event.getEntity().getLastDamageCause()).getCause().equals(EntityDamageEvent.DamageCause.MAGIC)) {
                    if (event.getDamager() instanceof Player && event.getEntity() instanceof Player) {
                        PlayerDamageByPlayer(event, (Player) event.getDamager(), (Player) event.getEntity(), (int) event.getDamage(), "M");
                    } else if (event.getDamager() instanceof Player && !(event.getEntity() instanceof Player)) {
                        EntityDamageByPlayer(event, (Player) event.getDamager(), (int) event.getDamage(), "M");
                    } else if (!(event.getDamager() instanceof Player) && event.getEntity() instanceof Player) {
                        PlayerDamageByEntity(event, (Player) event.getEntity());
                    }
                } else if (event.getEntity().getLastDamageCause().getCause().equals(EntityDamageEvent.DamageCause.ENTITY_ATTACK)){
                    if (event.getDamager() instanceof Player && event.getEntity() instanceof Player) {
                        PlayerDamageByPlayer(event, (Player) event.getDamager(), (Player) event.getEntity(), (int) event.getDamage(), "A");
                    } else if (event.getDamager() instanceof Player && !(event.getEntity() instanceof Player)) {
                        EntityDamageByPlayer(event, (Player) event.getDamager(), (int) event.getDamage(), "A");
                    } else if (!(event.getDamager() instanceof Player) && event.getEntity() instanceof Player) {
                        PlayerDamageByEntity(event, (Player) event.getEntity());
                    }
                }
            }
        }
    }
}

위의 구문에서
if (Objects.requireNonNull(event.getEntity().getLastDamageCause()).getCause().equals(EntityDamageEvent.DamageCause.MAGIC))

이 부분에 지속적으로 NullPointerException 이 뜨는데 어떻게 해결할 수 있을까요?

sendMessage 로 DamageCause 를 확인해보았는데 NPE 가 뜰 때 마다 DamageCause 구문이 인식을 못하는 것 같네요 ㅠㅠ




1개의 댓글

doxa97
2022.02.10

그냥 마인크래프트에서 생성되고 최초로 맞는 공격을 인식하지 못하는 것 같군요 ㅠㅠ

뉴스 및 창작물
/files/thumbnails/268/789/003/262x150.crop.jpg?20240515192032

레드스톤

벌레먹은 돌 빠르게 제거하는 법

GlassesFilm

2024-05-15

0

/files/thumbnails/797/788/003/262x150.crop.jpg?20240515090924

건축

마인크래프트로 구현한 카르카손 보드게임

Warak

2024-05-15

1

/files/thumbnails/487/784/003/262x150.crop.jpg?20240508233607

모드

Windows Borderless 모드에서 악성코드 발견 2

학교가기싫다

2024-05-08

1

/files/thumbnails/384/778/003/262x150.crop.jpg?20240512002324

업데이트

마인크래프트 자바 에디션 스냅샷 24w18a

학교가기싫다

2024-05-06

0

/files/thumbnails/855/781/003/262x150.crop.jpg?20240505141129

레드스톤

레이저 클리너

GlassesFilm

2024-05-05

1