package net.minecraft.scoreboard;
import java.util.Collection;
import java.util.Iterator;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.nbt.NBTTagString;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.WorldSavedData;
public class ScoreboardSaveData extends WorldSavedData
{
private Scoreboard field_96507_a;
private NBTTagCompound field_96506_b;
public ScoreboardSaveData()
{
this("scoreboard");
}
public ScoreboardSaveData(String par1Str)
{
super(par1Str);
}
public void func_96499_a(Scoreboard par1Scoreboard)
{
this.field_96507_a = par1Scoreboard;
if (this.field_96506_b != null)
{
this.readFromNBT(this.field_96506_b);
}
}
/**
* reads in data from the NBTTagCompound into this MapDataBase
*/
public void readFromNBT(NBTTagCompound par1NBTTagCompound)
{
if (this.field_96507_a == null)
{
this.field_96506_b = par1NBTTagCompound;
}
else
{
this.func_96501_b(par1NBTTagCompound.getTagList("Objectives"));
this.func_96500_c(par1NBTTagCompound.getTagList("PlayerScores"));
if (par1NBTTagCompound.hasKey("DisplaySlots"))
{
this.func_96504_c(par1NBTTagCompound.getCompoundTag("DisplaySlots"));
}
if (par1NBTTagCompound.hasKey("Teams"))
{
this.func_96498_a(par1NBTTagCompound.getTagList("Teams"));
}
}
}
protected void func_96498_a(NBTTagList par1NBTTagList)
{
for (int i = 0; i < par1NBTTagList.tagCount(); ++i)
{
NBTTagCompound nbttagcompound = (NBTTagCompound)par1NBTTagList.tagAt(i);
ScorePlayerTeam scoreplayerteam = this.field_96507_a.func_96527_f(nbttagcompound.getString("Name"));
scoreplayerteam.func_96664_a(nbttagcompound.getString("DisplayName"));
scoreplayerteam.func_96666_b(nbttagcompound.getString("Prefix"));
scoreplayerteam.func_96662_c(nbttagcompound.getString("Suffix"));
if (nbttagcompound.hasKey("AllowFriendlyFire"))
{
scoreplayerteam.func_96660_a(nbttagcompound.getBoolean("AllowFriendlyFire"));
}
if (nbttagcompound.hasKey("SeeFriendlyInvisibles"))
{
scoreplayerteam.func_98300_b(nbttagcompound.getBoolean("SeeFriendlyInvisibles"));
}
this.func_96502_a(scoreplayerteam, nbttagcompound.getTagList("Players"));
}
}
protected void func_96502_a(ScorePlayerTeam par1ScorePlayerTeam, NBTTagList par2NBTTagList)
{
for (int i = 0; i < par2NBTTagList.tagCount(); ++i)
{
this.field_96507_a.func_96521_a(((NBTTagString)par2NBTTagList.tagAt(i)).data, par1ScorePlayerTeam);
}
}
protected void func_96504_c(NBTTagCompound par1NBTTagCompound)
{
for (int i = 0; i < 3; ++i)
{
if (par1NBTTagCompound.hasKey("slot_" + i))
{
String s = par1NBTTagCompound.getString("slot_" + i);
ScoreObjective scoreobjective = this.field_96507_a.getObjective(s);
this.field_96507_a.func_96530_a(i, scoreobjective);
}
}
}
protected void func_96501_b(NBTTagList par1NBTTagList)
{
for (int i = 0; i < par1NBTTagList.tagCount(); ++i)
{
NBTTagCompound nbttagcompound = (NBTTagCompound)par1NBTTagList.tagAt(i);
ScoreObjectiveCriteria scoreobjectivecriteria = (ScoreObjectiveCriteria)ScoreObjectiveCriteria.field_96643_a.get(nbttagcompound.getString("CriteriaName"));
ScoreObjective scoreobjective = this.field_96507_a.func_96535_a(nbttagcompound.getString("Name"), scoreobjectivecriteria);
scoreobjective.setDisplayName(nbttagcompound.getString("DisplayName"));
}
}
protected void func_96500_c(NBTTagList par1NBTTagList)
{
for (int i = 0; i < par1NBTTagList.tagCount(); ++i)
{
NBTTagCompound nbttagcompound = (NBTTagCompound)par1NBTTagList.tagAt(i);
ScoreObjective scoreobjective = this.field_96507_a.getObjective(nbttagcompound.getString("Objective"));
Score score = this.field_96507_a.func_96529_a(nbttagcompound.getString("Name"), scoreobjective);
score.func_96647_c(nbttagcompound.getInteger("Score"));
}
}
/**
* write data to NBTTagCompound from this MapDataBase, similar to Entities and TileEntities
*/
public void writeToNBT(NBTTagCompound par1NBTTagCompound)
{
if (this.field_96507_a == null)
{
MinecraftServer.getServer().getLogAgent().logWarning("Tried to save scoreboard without having a scoreboard...");
}
else
{
par1NBTTagCompound.setTag("Objectives", this.func_96505_b());
par1NBTTagCompound.setTag("PlayerScores", this.func_96503_e());
par1NBTTagCompound.setTag("Teams", this.func_96496_a());
this.func_96497_d(par1NBTTagCompound);
}
}
protected NBTTagList func_96496_a()
{
NBTTagList nbttaglist = new NBTTagList();
Collection collection = this.field_96507_a.func_96525_g();
Iterator iterator = collection.iterator();
while (iterator.hasNext())
{
ScorePlayerTeam scoreplayerteam = (ScorePlayerTeam)iterator.next();
NBTTagCompound nbttagcompound = new NBTTagCompound();
nbttagcompound.setString("Name", scoreplayerteam.func_96661_b());
nbttagcompound.setString("DisplayName", scoreplayerteam.func_96669_c());
nbttagcompound.setString("Prefix", scoreplayerteam.func_96668_e());
nbttagcompound.setString("Suffix", scoreplayerteam.func_96663_f());
nbttagcompound.setBoolean("AllowFriendlyFire", scoreplayerteam.func_96665_g());
nbttagcompound.setBoolean("SeeFriendlyInvisibles", scoreplayerteam.func_98297_h());
NBTTagList nbttaglist1 = new NBTTagList();
Iterator iterator1 = scoreplayerteam.getMembershipCollection().iterator();
while (iterator1.hasNext())
{
String s = (String)iterator1.next();
nbttaglist1.appendTag(new NBTTagString("", s));
}
nbttagcompound.setTag("Players", nbttaglist1);
nbttaglist.appendTag(nbttagcompound);
}
return nbttaglist;
}
protected void func_96497_d(NBTTagCompound par1NBTTagCompound)
{
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
boolean flag = false;
for (int i = 0; i < 3; ++i)
{
ScoreObjective scoreobjective = this.field_96507_a.func_96539_a(i);
if (scoreobjective != null)
{
nbttagcompound1.setString("slot_" + i, scoreobjective.getName());
flag = true;
}
}
if (flag)
{
par1NBTTagCompound.setCompoundTag("DisplaySlots", nbttagcompound1);
}
}
protected NBTTagList func_96505_b()
{
NBTTagList nbttaglist = new NBTTagList();
Collection collection = this.field_96507_a.getScoreObjectives();
Iterator iterator = collection.iterator();
while (iterator.hasNext())
{
ScoreObjective scoreobjective = (ScoreObjective)iterator.next();
NBTTagCompound nbttagcompound = new NBTTagCompound();
nbttagcompound.setString("Name", scoreobjective.getName());
nbttagcompound.setString("CriteriaName", scoreobjective.getCriteria().func_96636_a());
nbttagcompound.setString("DisplayName", scoreobjective.getDisplayName());
nbttaglist.appendTag(nbttagcompound);
}
return nbttaglist;
}
protected NBTTagList func_96503_e()
{
NBTTagList nbttaglist = new NBTTagList();
Collection collection = this.field_96507_a.func_96528_e();
Iterator iterator = collection.iterator();
while (iterator.hasNext())
{
Score score = (Score)iterator.next();
NBTTagCompound nbttagcompound = new NBTTagCompound();
nbttagcompound.setString("Name", score.func_96653_e());
nbttagcompound.setString("Objective", score.func_96645_d().getName());
nbttagcompound.setInteger("Score", score.func_96652_c());
nbttaglist.appendTag(nbttagcompound);
}
return nbttaglist;
}
}