개인 자료란 (JE)

  서버 커뮤니티

Profile 한국산로얄감자 대표칭호 없음

Korean_Potato a7ac699fe8c9497190f1b29da7460c3a

Profile

질문하기 Java

[플러그인]리듬게임 플러그인 구현하는데 문제가 생겼네요.

2021.06.22 조회 수 97 추천 수 0
이해도 플러그인 
게임버전 (JE) 버킷 

제가 리듬게임 플러그인 구현하는데 문제가 생겼는데, 어떻게 해야 하나요?

문제의 코드 : 

                Variables.Scores returnScore = null; //문제의 변수


                HashMap<Player, Variables.Scores> dHash = new HashMap<>();
                for (int i = 0; i < Variables.q.size(); i++) { 
                    for (Player pe : Variables.q.get(i).keySet()) { 
                        if (pe.equals(p)) {
                            returnScore = Variables.q.get(i).get(pe);
                            Variables.q.get(i).remove(pe);
                            break;
                        }
                    }
                }


                if (p.getInventory().getHeldItemSlot() != 4) {


                    ArmorStand tArmorStand = null;
                    List<Entity> a = p.getWorld().getEntities();
                    for (Entity e : a) {
                        if (e.getCustomName() == Variables.SUMMONTOKEN) {
                            tArmorStand = (ArmorStand)e;
                            break;
                        }
                    }
                    if (tArmorStand == null) {
                        returnScore.MISS++; // 문제가 생긴곳
                        dHash.put(p, returnScore);
                        GameFunc.putToQ(dHash, p);
                    }

오류 내용 : 

[13:09:00] [Server thread/WARN]: [rhythmcraft] Task #24 for rhythmcraft v1.0.1 generated an exception

java.lang.NullPointerException: null

    at com.github.neomaster.rhythmcraft.game.repeat.GameRepeat$2.run(GameRepeat.java:75) ~[?:?]

    at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftTask.run(CraftTask.java:81) ~[spigot-1.12.2.jar:2991-Spigot-018b9a0-f3f3094]

    at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:400) [spigot-1.12.2.jar:2991-Spigot-018b9a0-f3f3094]

    at net.minecraft.server.v1_16_R3.MinecraftServer.b(MinecraftServer.java:1060) [spigot-1.12.2.jar:2991-Spigot-018b9a0-f3f3094]

    at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:355) [spigot-1.12.2.jar:2991-Spigot-018b9a0-f3f3094]

    at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1008) [spigot-1.12.2.jar:2991-Spigot-018b9a0-f3f3094]

    at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:847) [spigot-1.12.2.jar:2991-Spigot-018b9a0-f3f3094]

    at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) [spigot-1.12.2.jar:2991-Spigot-018b9a0-f3f3094]

    at net.minecraft.server.v1_16_R3.MinecraftServer$$Lambda$3198/1976267310.run(Unknown Source) [spigot-1.12.2.jar:2991-Spigot-018b9a0-f3f3094]

    at java.lang.Thread.run(Unknown Source) [?:1.8.0_51]

3개의 댓글

DDang_
2021.06.22

75번째 줄 확인하세요

A_bins
2021.06.23

NPE 즉 NullPointerException이 어떤 연유로 인해, 어떤 의미를 가지는지도
알아보신다면 대충 문제 파악이 되셨을 것이고 그에 따라

문제의 변수가 무엇인지도 잘 아시는 듯 한데,  솔루션은 딱 하나 아닐까요?
결국에, returnScore라는 Scores 타입의 변수가 null이라서 그런 것 아니겠습니까?
그렇기에 일단 먼저 returnScore라는 변수에 값이 제대로 대입이 되는가 부터 알아보시죠

예컨데 

if (pe.equals(p)) { returnScore = Variables.q.get(i).get(pe); Variables.q.get(i).remove(pe); break; }

이 부분 말입니다 if가 넘어가는지는 확실히 알고 계신가요? pe라는 변수는 Player 객체인 것으로 보아 그에 대한 equals 대상인 pPlayer 객체로 예상이 됩니다.

하지만, 자바를 조금 해보셨다면 아시겠지만 객체입니다
또한 Player 객체 클래스에는 equals를 오버라이드 하는 새로운 로직이 없습니다
그렇기에 객체에 equals를 해버리시면 무조건 주소값이 같거나 해야 equlas를 넘어가지 않을까 하고 예상해 봅니다

테스트 해보시죠 pe.equals(p)가 true를 반환하는가요.

@A_bins

감사합니다!ㅠㅠ

뉴스 및 창작물
/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 모드에서 악성코드 발견

학교가기싫다

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