본문 바로가기
취미/마인크래프트 플러그인

마크 플러그인 #3

by krapoi 2021. 9. 8.
반응형

오늘은 파이터 클래스를 만들었다.

기술 중 대충 더킹이라는 기술과 바디 블로우 기술을 구현해봤다.

 

먼저 더킹이다.

일단 shift를 누르면 발동하게 되었고, 발동하며 더킹 유지 시에는 공격이 안된다.(나중에 공격이 안 되는 대신 저항 등 방어력을 높일 예정)

이유는 더킹은 공격기술이아니라 방어기술이기 때문이다.

아래는 더킹 코드이다.

public static HashMap<UUID, Boolean> hasSneak = new HashMap<>();

    @EventHandler
    public void ducking(PlayerToggleSneakEvent e) {
        Player player = e.getPlayer();
        if (!JobVariable.getPlayerJob(player, "Fighter")) {
            return;
        }
        if (e.isSneaking()) {
            hasSneak.put(player.getUniqueId(), true);
            Vector vector = new Vector(player.getLocation().getDirection().getX(), 0, player.getLocation().getDirection().getZ());
            vector.normalize();
            player.setVelocity(vector.multiply(1));

        }
        else {
            hasSneak.replace(player.getUniqueId(), true, false);
        }
    }

그다음은 바디블로우이다.

테스트 플레이어가 없어 잘 담아내지는 못했지만,

대미지를 주며 구속과 실명을 부여하는 기술이다.

현실에서도 일반인이나 취미로 복싱하는 사람이 맞으면 그냥 쓰러진다고 한다.

아래는 코드이다.

@EventHandler
    public void isDucking(EntityDamageByEntityEvent e) {
        if (e.getDamager() instanceof Player) {
            Player player = (Player) e.getDamager();
            if (!JobVariable.getPlayerJob(player, "Fighter")) {
                return;
            }
            if (hasSneak.get(player.getUniqueId())) {
                e.setCancelled(true);
            }
            else {
                ((Damageable)e.getEntity()).damage(8);
                ((LivingEntity)e.getEntity()).addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 600, 10));
                ((LivingEntity)e.getEntity()).addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 600, 10));
            }
        }
    }

 

다음엔 마법사의 스킬도 만들어 와 보겠다.

반응형

'취미 > 마인크래프트 플러그인' 카테고리의 다른 글

마크 플러그인(#4)  (0) 2021.09.13
마크 플러그인 (#2)  (0) 2021.09.02
마크 플러그인 (#1)  (0) 2021.08.30
마크 플러그인 (#0)  (0) 2021.08.26