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

마크 플러그인 (#1)

by krapoi 2021. 8. 30.
반응형

오늘 플러그인의 기능 2개를 만들었다.

체력의 값을 가져와 힘을 부여하는 버서커 능력

그리고 위치를 저장하고 그 위치로 이동하는 능력 도주 만들었다.

백번 말로 하는 것보다 보는 것이 빠를 것이다.

 

먼저 버서커 능력이다.

체력에 따라 주어지는 힘버프가 다르다.

코드

package com.tistory.workshop;

import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;

public class Berserker implements Listener {
    @EventHandler
    public void bsk(EntityDamageEvent e){
        if(e.getEntityType() != EntityType.PLAYER)
            return;

        Player p = (Player) e.getEntity();
        if(p.getHealth() - e.getDamage() <= 10){
            p.addPotionEffect(new PotionEffect(PotionEffectType.INCREASE_DAMAGE,1000000000,1));
        }else if(p.getHealth() - e.getDamage() <= 7 && p.getHealth() > 5 ){
            p.addPotionEffect(new PotionEffect(PotionEffectType.INCREASE_DAMAGE,1000000000,2));
        }else if(p.getHealth() - e.getDamage()<= 5){
            p.addPotionEffect(new PotionEffect(PotionEffectType.INCREASE_DAMAGE,1000000000,4));
        }
    }
}

그다음 도주 스킬이다.

첫번째 shift입력으로 현재 위치를 받은뒤 두번째 shift입력으로 저장된 위치로 이동하며 원래있던 자리에 폭발을 일으킴

코드

package com.tistory.workshop;



import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerToggleSneakEvent;

import java.util.HashMap;
import java.util.UUID;


public class escape implements Listener {

    private static HashMap<UUID,Location> lo = new HashMap<UUID,Location>();
    private static HashMap<UUID,Location> lo2 = new HashMap<UUID,Location>();

    @EventHandler
    public void es(PlayerToggleSneakEvent e){

        Player p = e.getPlayer();

        if(p.isSneaking() && lo.isEmpty()) {
            lo.put(p.getUniqueId(), p.getLocation());
            p.sendMessage("위치저장!");
        }else if (p.isSneaking()){
            lo2.put(p.getUniqueId(),p.getLocation());
             p.teleport(lo.get(p.getUniqueId()));
             
             p.getWorld().createExplosion(lo2.get(p.getUniqueId()),3,false,false);
             p.sendMessage("위치이동!");
             lo.remove(p.getUniqueId());
             lo2.remove(p.getUniqueId());
        }
    }
}

오랜만에 만지는 플러그인이라 만드는데 지겹지 않았다.

대충 11월 내로 다 만들 생각이다.

 

플러그인 설정에 관한 건 : https://workshop-6349.tistory.com/entry/%EB%A7%88%ED%81%AC-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0-1

이곳으로

반응형

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

마크 플러그인(#4)  (0) 2021.09.13
마크 플러그인 #3  (0) 2021.09.08
마크 플러그인 (#2)  (0) 2021.09.02
마크 플러그인 (#0)  (0) 2021.08.26