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문 다 끝난다음 서버 목록에 추가되어서, 서버가 맨아래 추가됩니다. 우리는 맨 위에 추가하고 싶죠.
그러면
맨 위에 떠있게 됩니다.
우왕굳.