개인 자료란 (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/576/775/003/262x150.crop.jpg?20240426232553

아티클

이달의 블록: 단단한 진흙

학교가기싫다

2024-04-26

0

/files/thumbnails/115/774/003/262x150.crop.jpg?20240426223813

업데이트

마인크래프트 1.20.5 정식 업데이트

학교가기싫다

2024-04-24

0

/files/thumbnails/762/770/003/262x150.crop.jpg?20240418073724

레드스톤

T.B.H (고민중독) | 노트블럭 버전 | NoteBlock Cover [한국어 영어 중국어 가사 추가]

노트블럭전문가

2024-04-18

0

/files/thumbnails/218/767/003/262x150.crop.jpg?20240412130213

레드스톤

우리의 꿈 - 원피스 오프닝

노트블럭전문가

2024-04-12

0

/files/thumbnails/505/766/003/262x150.crop.jpg?20240411122306

레드스톤

기동전사 건담 수성의 마녀 | 노트블럭 커버 1

노트블럭전문가

2024-04-11

1