package net.minecraft.client.multiplayer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import net.minecraft.client.Minecraft; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @SideOnly(Side.CLIENT) public class ServerList { private static final Logger logger = LogManager.getLogger(); /** The Minecraft instance. */ private final Minecraft mc; /** List of ServerData instances. */ private final List servers = new ArrayList(); private static final String __OBFID = "CL_00000891"; public ServerList(Minecraft p_i1194_1_) { this.mc = p_i1194_1_; this.loadServerList(); } /** * Loads a list of servers from servers.dat, by running ServerData.getServerDataFromNBTCompound on each NBT compound * found in the "servers" tag list. */ public void loadServerList() { try { this.servers.clear(); NBTTagCompound nbttagcompound = CompressedStreamTools.read(new File(this.mc.mcDataDir, "servers.dat")); if (nbttagcompound == null) { return; } NBTTagList nbttaglist = nbttagcompound.getTagList("servers", 10); for (int i = 0; i < nbttaglist.tagCount(); ++i) { this.servers.add(ServerData.getServerDataFromNBTCompound(nbttaglist.getCompoundTagAt(i))); } } catch (Exception exception) { logger.error("Couldn\'t load server list", exception); } } /** * Runs getNBTCompound on each ServerData instance, puts everything into a "servers" NBT list and writes it to * servers.dat. */ public void saveServerList() { try { NBTTagList nbttaglist = new NBTTagList(); Iterator iterator = this.servers.iterator(); while (iterator.hasNext()) { ServerData serverdata = (ServerData)iterator.next(); nbttaglist.appendTag(serverdata.getNBTCompound()); } NBTTagCompound nbttagcompound = new NBTTagCompound(); nbttagcompound.setTag("servers", nbttaglist); CompressedStreamTools.safeWrite(nbttagcompound, new File(this.mc.mcDataDir, "servers.dat")); } catch (Exception exception) { logger.error("Couldn\'t save server list", exception); } } /** * Gets the ServerData instance stored for the given index in the list. */ public ServerData getServerData(int p_78850_1_) { return (ServerData)this.servers.get(p_78850_1_); } /** * Removes the ServerData instance stored for the given index in the list. */ public void removeServerData(int p_78851_1_) { this.servers.remove(p_78851_1_); } /** * Adds the given ServerData instance to the list. */ public void addServerData(ServerData p_78849_1_) { this.servers.add(p_78849_1_); } /** * Counts the number of ServerData instances in the list. */ public int countServers() { return this.servers.size(); } /** * Takes two list indexes, and swaps their order around. */ public void swapServers(int p_78857_1_, int p_78857_2_) { ServerData serverdata = this.getServerData(p_78857_1_); this.servers.set(p_78857_1_, this.getServerData(p_78857_2_)); this.servers.set(p_78857_2_, serverdata); this.saveServerList(); } public void func_147413_a(int p_147413_1_, ServerData p_147413_2_) { this.servers.set(p_147413_1_, p_147413_2_); } public static void func_147414_b(ServerData p_147414_0_) { ServerList serverlist = new ServerList(Minecraft.getMinecraft()); serverlist.loadServerList(); for (int i = 0; i < serverlist.countServers(); ++i) { ServerData serverdata1 = serverlist.getServerData(i); if (serverdata1.serverName.equals(p_147414_0_.serverName) && serverdata1.serverIP.equals(p_147414_0_.serverIP)) { serverlist.func_147413_a(i, p_147414_0_); break; } } serverlist.saveServerList(); } }