본문 바로가기
Game/Minecraft

마인크래프트 멀티플레이어리스트의 내서버를 띄어보자

by ryush00 2013. 4. 1.

2017-08-21

주의

이 글은 쓰여진지 4년이 다 되어가는 글입니다.

지금 마인크래프트와는 차이점이 많을 수 있으니, 다른 블로그 글을 참고하거나 직접 소스를 분석해서 서버 리스트에 서버를 추가하는 소스를 작성하시기 바랍니다.


이 소스대로 하면 마인크래프트를 실행할 때 마다 추가한 서버가 한개씩 늘어나는 괴현상이 생깁니다.

해당 처리는 이 포스팅에서 다루지 않습니다. 직접 알아보세요.




안녕하세요. 말똥이입니다.


이번에 포스팅할 것은 마인크래프트 멀티를 할때 꼭 누르게 되는 멀티플레이메뉴에

자신의 서버가 항상 뜨게 하는법을 알아보겠습니다.


서버 리스트를 로딩하는데를 찾으러 가볼까요?


ServerList.java로 가봅시다.


    public void loadServerList()



오.. 뭔가 있을거같죠?




            NBTTagCompound var1 = CompressedStreamTools.read(new File(this.mc.mcDataDir, "servers.dat")); // 여기서 서버주소,포트 뽑아서 var1이라는 NBTTagCompound형 변수에 넣고

            NBTTagList var2 = var1.getTagList("servers"); // 또 그걸 어떻게 정제하는지는 모르겠지만 또 NBTTagList형인 var2변수에 집어넣습니다.

            this.servers.clear(); // 그리고 서버리스트는 지워줍니다.



그리고 그 아래



            for (int var3 = 0; var3 < var2.tagCount(); ++var3)

            {

                this.servers.add(ServerData.getServerDataFromNBTCompound((NBTTagCompound)var2.tagAt(var3)));

            }


이런게 있습니다.


이건 복잡하게 생각할필요 없고 서버갯수만큼 for문을 돌려서 추가하는겁니다.


this.servers.add(ServerData.getServerDataFromNBTCompound((NBTTagCompound)var2.tagAt(var3)));


이렇게 추가를 하는군요..


더욱 줄여보자면


this.servers.add(서버 데이터);


이런 식으로 추가하는겁니다.


데이터를 받는곳을 보니



        NBTTagCompound var1 = new NBTTagCompound();

        var1.setString("name", this.serverName);

        var1.setString("ip", this.serverIP);

        var1.setBoolean("hideAddress", this.hideAddress);


        if (!this.field_78842_g)

        {

            var1.setBoolean("acceptTextures", this.acceptsTextures);

        }


        return var1;


이렇게 되있더라고요.


설명 들어갑니다





        NBTTagCompound var1 = new NBTTagCompound(); // var1이라는 NBTTagCompound형 변수를 만듬

        var1.setString("name", this.serverName); // 그변수의  서버이름 설정

        var1.setString("ip", this.serverIP); // 서버주소설정

        var1.setBoolean("hideAddress", this.hideAddress); // 주소숨기는건지 확인(Boolean형임 - true또는 false로 이루어진 변수형)


        if (!this.field_78842_g)

        {

            var1.setBoolean("acceptTextures", this.acceptsTextures);

        }

몰라요 이곳은 택팩관련일거임..;;


        return var1; var1을 리턴합니다.



그리하여


            ServerData var11 = new ServerData("서버이름", "서버주소");

            var11.hideAddress = true;

            var11.setAcceptsTextures(true);

            this.servers.add(var11);


소스가 이렇게 완성됩니다..


옵션 바꿀거 있으면 true를 false로 바꾸셔도 됩니다.


위 소스를


            for (int var3 = 0; var3 < var2.tagCount(); ++var3)

            {

                this.servers.add(ServerData.getServerDataFromNBTCompound((NBTTagCompound)var2.tagAt(var3)));

            }


이 for문 위에 넣으세요.


아래에 넣게 되면 for문 다 끝난다음 서버 목록에 추가되어서, 서버가 맨아래 추가됩니다. 우리는 맨 위에 추가하고 싶죠.


그러면




맨 위에 떠있게 됩니다.

우왕굳.



댓글