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;
@SideOnly(Side.CLIENT)
public class ServerList
{
/** The Minecraft instance. */
private final Minecraft mc;
/** List of ServerData instances. */
private final List servers = new ArrayList();
public ServerList(Minecraft par1Minecraft)
{
this.mc = par1Minecraft;
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
{
NBTTagCompound var1 = CompressedStreamTools.read(new File(this.mc.mcDataDir, "servers.dat"));
NBTTagList var2 = var1.getTagList("servers");
this.servers.clear();
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
{
this.servers.add(ServerData.getServerDataFromNBTCompound((NBTTagCompound)var2.tagAt(var3)));
}
}
catch (Exception var4)
{
var4.printStackTrace();
}
}
/**
* Runs getNBTCompound on each ServerData instance, puts everything into a "servers" NBT list and writes it to
* servers.dat.
*/
public void saveServerList()
{
try
{
NBTTagList var1 = new NBTTagList();
Iterator var2 = this.servers.iterator();
while (var2.hasNext())
{
ServerData var3 = (ServerData)var2.next();
var1.appendTag(var3.getNBTCompound());
}
NBTTagCompound var5 = new NBTTagCompound();
var5.setTag("servers", var1);
CompressedStreamTools.safeWrite(var5, new File(this.mc.mcDataDir, "servers.dat"));
}
catch (Exception var4)
{
var4.printStackTrace();
}
}
/**
* Gets the ServerData instance stored for the given index in the list.
*/
public ServerData getServerData(int par1)
{
return (ServerData)this.servers.get(par1);
}
/**
* Removes the ServerData instance stored for the given index in the list.
*/
public void removeServerData(int par1)
{
this.servers.remove(par1);
}
/**
* Adds the given ServerData instance to the list.
*/
public void addServerData(ServerData par1ServerData)
{
this.servers.add(par1ServerData);
}
/**
* 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 par1, int par2)
{
ServerData var3 = this.getServerData(par1);
this.servers.set(par1, this.getServerData(par2));
this.servers.set(par2, var3);
this.saveServerList();
}
/**
* Sets the given index in the list to the given ServerData instance.
*/
public void setServer(int par1, ServerData par2ServerData)
{
this.servers.set(par1, par2ServerData);
}
public static void func_78852_b(ServerData par0ServerData)
{
ServerList var1 = new ServerList(Minecraft.getMinecraft());
var1.loadServerList();
for (int var2 = 0; var2 < var1.countServers(); ++var2)
{
ServerData var3 = var1.getServerData(var2);
if (var3.serverName.equals(par0ServerData.serverName) && var3.serverIP.equals(par0ServerData.serverIP))
{
var1.setServer(var2, par0ServerData);
break;
}
}
var1.saveServerList();
}
}