개인 자료란 (JE)

  서버 커뮤니티

Profile Hinoto_04 대표칭호 없음
Profile

이해도 플러그인 
게임버전 (JE) 버킷 

플러그인 만들기 위해 플러그인만을 위한 자바 공부를 시작한 초보 개발자입니다.


SMM2에 있는 많은 기능들을 마인크래프트에 구현하고자 플러그인 작업중인데,

이번에 구현하고 있는 것이 ON / OFF 블록 및 스위치입니다.


때렸을 때 ON/OFF를 바꾸기 위해 코드를 만들었는데,

모든 월드의 모든 엔티티를 대상으로 한 코드를 어떻게 짜는 지 모르겠네요.

하나의 스위치를 건들이면 모든 양의 색깔이 변해야 하는데,

이게 지옥에 있을 수도 엔드에 있을 수도 있어서,

어떻게 해야할 지 알려주실 분 찾습니다.


일단 대미지 감지이다보니 Invulnerable을 안썼습니다.

대신 Absorption(흡수)를 10000으로 부여했습니다.(이게 setAbsorptionAmount로 되는지는 모르겠습니다)

(Sheep이라서 maxHealth가 취소선처리되더라구요.)


아래는 ON/OFF 스위치 양이 피해를 입었을 때 작동되는 코드입니다.

블레이즈 막대로 때리면 ON/OFF스위치를 제거하기 위해서 만들어뒀습니다.

현재 boolean isOn이 이벤트 핸들러 밖에 있는 상태입니다.

@EventHandler
public void OnOffSwitchClick(EntityDamageByEntityEvent e) {
    Sheep en = (Sheep)e.getEntity();
    if (en.getName().equals(ChatColor.RED + "ON" + ChatColor.WHITE + "/" + ChatColor.BLUE + "OFF" + ChatColor.WHITE + "스위치")) {
        if (e.getDamager() instanceof Player) {
            Player p = (Player) e.getDamager();
            if (p.getItemInHand().getItemMeta().getDisplayName().equals(ChatColor.RED + "ON" + ChatColor.WHITE + "/" + ChatColor.BLUE + "OFF" + ChatColor.WHITE + "스위치")) {
                en.damage(100000);
                return;
            }
        }
        if(isOn==true) {
            off();
        } else {
            on();
        }
        en.setAbsorptionAmount(10000);
    }
}

혹시 다른 문제점 발견하셔도 지적 부탁드립니다.

5개의 댓글

분열
2020.03.21

for each문을 이용해 서버에 있는 모든 월드 목록을 하나하나씩 가져온 다음, 가져온 월드의 모든 엔티티를 for each문으로 비교하시면 될것 같습니다.

for (World world : getServer().getWorlds){
    for (Entity entity : world.getEntities){
         #엔티티 비교
    }
}
Hinoto_04
2020.03.22
@분열

getServer를 잊고 있었네요, 감사합니다

펜델(skyneton)
2020.03.22

Sheep 형태로 바로 가져오시지 마시고 먼저 양인지 확인후 가져오세요

Hinoto_04
2020.03.22
@펜델(skyneton)
public void OnOffSwitchClick(EntityDamageByEntityEvent e) {
    Sheep en = (Sheep)e.getEntity();

를 Sheep으로 가져오지 말고

public void OnOffSwitchClick(EntityDamageByEntityEvent e) {
   if(e.getEntity()==EntityType.SHEEP) {
       Sheep en = (Sheep)e.getEntity();
   }

로 양인지 확인하고 양으로 가져와야된다는거죠?

뉴스 및 창작물
/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