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.world.WorldSavedData;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class ScoreboardSaveData extends WorldSavedData
{
private static final Logger logger = LogManager.getLogger();
private Scoreboard theScoreboard;
private NBTTagCompound field_96506_b;
private static final String __OBFID = "CL_00000620";
public ScoreboardSaveData()
{
this("scoreboard");
}
public ScoreboardSaveData(String p_i2310_1_)
{
super(p_i2310_1_);
}
public void func_96499_a(Scoreboard p_96499_1_)
{
this.theScoreboard = p_96499_1_;
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 p_76184_1_)
{
if (this.theScoreboard == null)
{
this.field_96506_b = p_76184_1_;
}
else
{
this.func_96501_b(p_76184_1_.getTagList("Objectives", 10));
this.func_96500_c(p_76184_1_.getTagList("PlayerScores", 10));
if (p_76184_1_.hasKey("DisplaySlots", 10))
{
this.func_96504_c(p_76184_1_.getCompoundTag("DisplaySlots"));
}
if (p_76184_1_.hasKey("Teams", 9))
{
this.func_96498_a(p_76184_1_.getTagList("Teams", 10));
}
}
}
protected void func_96498_a(NBTTagList p_96498_1_)
{
for (int i = 0; i < p_96498_1_.tagCount(); ++i)
{
NBTTagCompound nbttagcompound = p_96498_1_.getCompoundTagAt(i);
ScorePlayerTeam scoreplayerteam = this.theScoreboard.createTeam(nbttagcompound.getString("Name"));
scoreplayerteam.setTeamName(nbttagcompound.getString("DisplayName"));
scoreplayerteam.setNamePrefix(nbttagcompound.getString("Prefix"));
scoreplayerteam.setNameSuffix(nbttagcompound.getString("Suffix"));
if (nbttagcompound.hasKey("AllowFriendlyFire", 99))
{
scoreplayerteam.setAllowFriendlyFire(nbttagcompound.getBoolean("AllowFriendlyFire"));
}
if (nbttagcompound.hasKey("SeeFriendlyInvisibles", 99))
{
scoreplayerteam.setSeeFriendlyInvisiblesEnabled(nbttagcompound.getBoolean("SeeFriendlyInvisibles"));
}
this.func_96502_a(scoreplayerteam, nbttagcompound.getTagList("Players", 8));
}
}
protected void func_96502_a(ScorePlayerTeam p_96502_1_, NBTTagList p_96502_2_)
{
for (int i = 0; i < p_96502_2_.tagCount(); ++i)
{
this.theScoreboard.func_151392_a(p_96502_2_.getStringTagAt(i), p_96502_1_.getRegisteredName());
}
}
protected void func_96504_c(NBTTagCompound p_96504_1_)
{
for (int i = 0; i < 3; ++i)
{
if (p_96504_1_.hasKey("slot_" + i, 8))
{
String s = p_96504_1_.getString("slot_" + i);
ScoreObjective scoreobjective = this.theScoreboard.getObjective(s);
this.theScoreboard.setObjectiveInDisplaySlot(i, scoreobjective);
}
}
}
protected void func_96501_b(NBTTagList p_96501_1_)
{
for (int i = 0; i < p_96501_1_.tagCount(); ++i)
{
NBTTagCompound nbttagcompound = p_96501_1_.getCompoundTagAt(i);
IScoreObjectiveCriteria iscoreobjectivecriteria = (IScoreObjectiveCriteria)IScoreObjectiveCriteria.INSTANCES.get(nbttagcompound.getString("CriteriaName"));
ScoreObjective scoreobjective = this.theScoreboard.addScoreObjective(nbttagcompound.getString("Name"), iscoreobjectivecriteria);
scoreobjective.setDisplayName(nbttagcompound.getString("DisplayName"));
}
}
protected void func_96500_c(NBTTagList p_96500_1_)
{
for (int i = 0; i < p_96500_1_.tagCount(); ++i)
{
NBTTagCompound nbttagcompound = p_96500_1_.getCompoundTagAt(i);
ScoreObjective scoreobjective = this.theScoreboard.getObjective(nbttagcompound.getString("Objective"));
Score score = this.theScoreboard.getValueFromObjective(nbttagcompound.getString("Name"), scoreobjective);
score.setScorePoints(nbttagcompound.getInteger("Score"));
}
}
/**
* write data to NBTTagCompound from this MapDataBase, similar to Entities and TileEntities
*/
public void writeToNBT(NBTTagCompound p_76187_1_)
{
if (this.theScoreboard == null)
{
logger.warn("Tried to save scoreboard without having a scoreboard...");
}
else
{
p_76187_1_.setTag("Objectives", this.func_96505_b());
p_76187_1_.setTag("PlayerScores", this.func_96503_e());
p_76187_1_.setTag("Teams", this.func_96496_a());
this.func_96497_d(p_76187_1_);
}
}
protected NBTTagList func_96496_a()
{
NBTTagList nbttaglist = new NBTTagList();
Collection collection = this.theScoreboard.getTeams();
Iterator iterator = collection.iterator();
while (iterator.hasNext())
{
ScorePlayerTeam scoreplayerteam = (ScorePlayerTeam)iterator.next();
NBTTagCompound nbttagcompound = new NBTTagCompound();
nbttagcompound.setString("Name", scoreplayerteam.getRegisteredName());
nbttagcompound.setString("DisplayName", scoreplayerteam.func_96669_c());
nbttagcompound.setString("Prefix", scoreplayerteam.getColorPrefix());
nbttagcompound.setString("Suffix", scoreplayerteam.getColorSuffix());
nbttagcompound.setBoolean("AllowFriendlyFire", scoreplayerteam.getAllowFriendlyFire());
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 p_96497_1_)
{
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
boolean flag = false;
for (int i = 0; i < 3; ++i)
{
ScoreObjective scoreobjective = this.theScoreboard.getObjectiveInDisplaySlot(i);
if (scoreobjective != null)
{
nbttagcompound1.setString("slot_" + i, scoreobjective.getName());
flag = true;
}
}
if (flag)
{
p_96497_1_.setTag("DisplaySlots", nbttagcompound1);
}
}
protected NBTTagList func_96505_b()
{
NBTTagList nbttaglist = new NBTTagList();
Collection collection = this.theScoreboard.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().getName());
nbttagcompound.setString("DisplayName", scoreobjective.getDisplayName());
nbttaglist.appendTag(nbttagcompound);
}
return nbttaglist;
}
protected NBTTagList func_96503_e()
{
NBTTagList nbttaglist = new NBTTagList();
Collection collection = this.theScoreboard.func_96528_e();
Iterator iterator = collection.iterator();
while (iterator.hasNext())
{
Score score = (Score)iterator.next();
NBTTagCompound nbttagcompound = new NBTTagCompound();
nbttagcompound.setString("Name", score.getPlayerName());
nbttagcompound.setString("Objective", score.func_96645_d().getName());
nbttagcompound.setInteger("Score", score.getScorePoints());
nbttaglist.appendTag(nbttagcompound);
}
return nbttaglist;
}
}