개인 자료란 (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/308/815/003/262x150.crop.jpg?20240617084353

레드스톤

[피아노커버] 디스코드 - QWER

노트블럭전문가

2024-06-17

0

/files/thumbnails/932/812/003/262x150.crop.jpg?20240616121638

업데이트

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

학교가기싫다

2024-06-14

1

/files/thumbnails/308/805/003/262x150.crop.jpg?20240605201646

레드스톤

[노트블럭 커버] 팬서비스/mona 【 HoneyWorks 】

노트블럭전문가

2024-06-05

0

/files/thumbnails/288/791/003/262x150.crop.jpg?20240602150002

아티클

《까다로운 시련》 업데이트 날짜 공개 및 정보

학교가기싫다

2024-06-02

0

/files/thumbnails/841/773/003/262x150.crop.jpg?20240526120908

레드스톤

마인크래프트 노트블록버전 『 봄을 고하다 (春を告げる) 』 [더블옥타브 버전]

노트블럭전문가

2024-05-26

0