import java.io.DataInputStream; import java.io.IOException; import java.net.URL; public class WorldList { public World[] worlds; private WorldList() { } //World list binary format: http://www.runescape.com/slr.ws?order=LPWM public static WorldList newInstance(String worldListAddress) throws IOException { WorldList worldList = new WorldList(); DataInputStream in = new DataInputStream(new URL(worldListAddress).openStream()); in.skip(4); worldList.worlds = new World[in.readShort()]; for(int i = 0; i < worldList.worlds.length; i++) { int j = in.readShort(); StringBuffer prefix = new StringBuffer(); byte b = -1; while((b = in.readByte()) != 0) prefix.append((char)b); worldList.worlds[i] = new World(prefix.toString(), j & 0x7FFF, in.readShort(), (j & 0x8000) != 0); } return worldList; } }