d1092
대표칭호 없음
이해도 | 입문자 |
---|---|
게임버전 (JE) | 1.19.2 |
게임버전 (BE) | 관련없음 |
발사체로 유리를 두 번 맞추면 성공이라는 메시지가 나오고 다시 유리를 두 번 맞춰도 성공이라는 메시지가 나오게 할려고 했는데 안되 가지고요 ㅠㅜㅠ 도와주실 분 있으면 도와주시면 감사하겠습니다
아래는 코드입니다
@EventHandler public void aedpopq(ProjectileHitEvent e) { int i = 1; int i1 = 2; Player p = (Player) e.getHitEntity(); if (e.getEntity() instanceof Snowball) { if (e.getHitBlock().getType() == Material.GLASS) { System.out.println(i1 - i); if (i1 == 0) { p.sendMessage("성공"); i1 = 2; } } } }
Dalsu
2023.01.23코드 알고리즘 자체가 잘못되었습니다. 자바를 조금 더 배우고 오시는걸 추천드립니다
d1092
2023.01.23그럼 어디에서 잘못됐는지 알수 있을까요?
하이라이트|highright
2023.01.231. i1 값이 method 안에 있음 ( method 밖에 나두는 형식으로 바꿔야함 )
2. i1 값이 바뀌지 않음( i1 -1 은 값을 바꾸는게 아닙니다)
코드 느낌마다 다르겠지만 번외
3. 위에걸 고쳤어도 다른 플레이어 혹은 다른 위치의 유리에 쏘더라도 성공으로 뜨게됨
0reo
2023.01.23메소드 안에서만 처리되는 지역변수가지고는 못만듭니다 저거도 제가 전에 딴분한테 써드렸던거 코드 어찌 변경해서 쓰시는거같은데 eventhandler 어노테이션이 붙은경우에는 이벤트가 일어났을때 호출되는거라.. 호출당할때마다 매번 초기화당하는걸 아시면 될거같아요
0reo
2023.01.23테스트 안해봤습니다
0reo
2023.01.23윗분 댓글대로 구현하려면 머리 좀 아플거에요 ㅋㅋ 3번에 집어주신거 고치려면 메타데이터쓰면 편할겁니다
d1092
2023.01.24앗 알겠습니다!
d1092
2023.01.24어.. 저 그 위에 코드를 해보았는데 안돼가지고요.. 어떻게 해결할수 있을까용?
0reo
2023.01.24e.getEntity 대신에 e.getEntity().getShooter()로 바꿔보세요
d1092
2023.01.24아 감사합니당 혹시 실례가 안된다면 눈덩이나 엔더진주 말고 화살로만 맞췄을 때 작동되는 방법도 알려주실 수 있나용?
0reo
2023.01.24e.getEntity instanceof Arrow 조건문 넣으세요
0reo
2023.01.24자바 기초도좀 익히시는게 나을거같아요 그리고