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.util.EnumChatFormatting;
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 nbt)
{
if (this.theScoreboard == null)
{
this.field_96506_b = nbt;
}
else
{
this.func_96501_b(nbt.getTagList("Objectives", 10));
this.func_96500_c(nbt.getTagList("PlayerScores", 10));
if (nbt.hasKey("DisplaySlots", 10))
{
this.func_96504_c(nbt.getCompoundTag("DisplaySlots"));
}
if (nbt.hasKey("Teams", 9))
{
this.func_96498_a(nbt.getTagList("Teams", 10));
}
}
}
protected void func_96498_a(NBTTagList p_96498_1_)
{
for (int var2 = 0; var2 < p_96498_1_.tagCount(); ++var2)
{
NBTTagCompound var3 = p_96498_1_.getCompoundTagAt(var2);
ScorePlayerTeam var4 = this.theScoreboard.createTeam(var3.getString("Name"));
var4.setTeamName(var3.getString("DisplayName"));
if (var3.hasKey("TeamColor", 8))
{
var4.func_178774_a(EnumChatFormatting.getValueByName(var3.getString("TeamColor")));
}
var4.setNamePrefix(var3.getString("Prefix"));
var4.setNameSuffix(var3.getString("Suffix"));
if (var3.hasKey("AllowFriendlyFire", 99))
{
var4.setAllowFriendlyFire(var3.getBoolean("AllowFriendlyFire"));
}
if (var3.hasKey("SeeFriendlyInvisibles", 99))
{
var4.setSeeFriendlyInvisiblesEnabled(var3.getBoolean("SeeFriendlyInvisibles"));
}
Team.EnumVisible var5;
if (var3.hasKey("NameTagVisibility", 8))
{
var5 = Team.EnumVisible.func_178824_a(var3.getString("NameTagVisibility"));
if (var5 != null)
{
var4.func_178772_a(var5);
}
}
if (var3.hasKey("DeathMessageVisibility", 8))
{
var5 = Team.EnumVisible.func_178824_a(var3.getString("DeathMessageVisibility"));
if (var5 != null)
{
var4.func_178773_b(var5);
}
}
this.func_96502_a(var4, var3.getTagList("Players", 8));
}
}
protected void func_96502_a(ScorePlayerTeam p_96502_1_, NBTTagList p_96502_2_)
{
for (int var3 = 0; var3 < p_96502_2_.tagCount(); ++var3)
{
this.theScoreboard.func_151392_a(p_96502_2_.getStringTagAt(var3), p_96502_1_.getRegisteredName());
}
}
protected void func_96504_c(NBTTagCompound p_96504_1_)
{
for (int var2 = 0; var2 < 19; ++var2)
{
if (p_96504_1_.hasKey("slot_" + var2, 8))
{
String var3 = p_96504_1_.getString("slot_" + var2);
ScoreObjective var4 = this.theScoreboard.getObjective(var3);
this.theScoreboard.setObjectiveInDisplaySlot(var2, var4);
}
}
}
protected void func_96501_b(NBTTagList p_96501_1_)
{
for (int var2 = 0; var2 < p_96501_1_.tagCount(); ++var2)
{
NBTTagCompound var3 = p_96501_1_.getCompoundTagAt(var2);
IScoreObjectiveCriteria var4 = (IScoreObjectiveCriteria)IScoreObjectiveCriteria.INSTANCES.get(var3.getString("CriteriaName"));
if (var4 != null)
{
ScoreObjective var5 = this.theScoreboard.addScoreObjective(var3.getString("Name"), var4);
var5.setDisplayName(var3.getString("DisplayName"));
var5.func_178767_a(IScoreObjectiveCriteria.EnumRenderType.func_178795_a(var3.getString("RenderType")));
}
}
}
protected void func_96500_c(NBTTagList p_96500_1_)
{
for (int var2 = 0; var2 < p_96500_1_.tagCount(); ++var2)
{
NBTTagCompound var3 = p_96500_1_.getCompoundTagAt(var2);
ScoreObjective var4 = this.theScoreboard.getObjective(var3.getString("Objective"));
Score var5 = this.theScoreboard.getValueFromObjective(var3.getString("Name"), var4);
var5.setScorePoints(var3.getInteger("Score"));
if (var3.hasKey("Locked"))
{
var5.func_178815_a(var3.getBoolean("Locked"));
}
}
}
/**
* write data to NBTTagCompound from this MapDataBase, similar to Entities and TileEntities
*/
public void writeToNBT(NBTTagCompound nbt)
{
if (this.theScoreboard == null)
{
logger.warn("Tried to save scoreboard without having a scoreboard...");
}
else
{
nbt.setTag("Objectives", this.func_96505_b());
nbt.setTag("PlayerScores", this.func_96503_e());
nbt.setTag("Teams", this.func_96496_a());
this.func_96497_d(nbt);
}
}
protected NBTTagList func_96496_a()
{
NBTTagList var1 = new NBTTagList();
Collection var2 = this.theScoreboard.getTeams();
Iterator var3 = var2.iterator();
while (var3.hasNext())
{
ScorePlayerTeam var4 = (ScorePlayerTeam)var3.next();
NBTTagCompound var5 = new NBTTagCompound();
var5.setString("Name", var4.getRegisteredName());
var5.setString("DisplayName", var4.func_96669_c());
if (var4.func_178775_l().func_175746_b() >= 0)
{
var5.setString("TeamColor", var4.func_178775_l().getFriendlyName());
}
var5.setString("Prefix", var4.getColorPrefix());
var5.setString("Suffix", var4.getColorSuffix());
var5.setBoolean("AllowFriendlyFire", var4.getAllowFriendlyFire());
var5.setBoolean("SeeFriendlyInvisibles", var4.func_98297_h());
var5.setString("NameTagVisibility", var4.func_178770_i().field_178830_e);
var5.setString("DeathMessageVisibility", var4.func_178771_j().field_178830_e);
NBTTagList var6 = new NBTTagList();
Iterator var7 = var4.getMembershipCollection().iterator();
while (var7.hasNext())
{
String var8 = (String)var7.next();
var6.appendTag(new NBTTagString(var8));
}
var5.setTag("Players", var6);
var1.appendTag(var5);
}
return var1;
}
protected void func_96497_d(NBTTagCompound p_96497_1_)
{
NBTTagCompound var2 = new NBTTagCompound();
boolean var3 = false;
for (int var4 = 0; var4 < 19; ++var4)
{
ScoreObjective var5 = this.theScoreboard.getObjectiveInDisplaySlot(var4);
if (var5 != null)
{
var2.setString("slot_" + var4, var5.getName());
var3 = true;
}
}
if (var3)
{
p_96497_1_.setTag("DisplaySlots", var2);
}
}
protected NBTTagList func_96505_b()
{
NBTTagList var1 = new NBTTagList();
Collection var2 = this.theScoreboard.getScoreObjectives();
Iterator var3 = var2.iterator();
while (var3.hasNext())
{
ScoreObjective var4 = (ScoreObjective)var3.next();
if (var4.getCriteria() != null)
{
NBTTagCompound var5 = new NBTTagCompound();
var5.setString("Name", var4.getName());
var5.setString("CriteriaName", var4.getCriteria().getName());
var5.setString("DisplayName", var4.getDisplayName());
var5.setString("RenderType", var4.func_178766_e().func_178796_a());
var1.appendTag(var5);
}
}
return var1;
}
protected NBTTagList func_96503_e()
{
NBTTagList var1 = new NBTTagList();
Collection var2 = this.theScoreboard.func_96528_e();
Iterator var3 = var2.iterator();
while (var3.hasNext())
{
Score var4 = (Score)var3.next();
if (var4.getObjective() != null)
{
NBTTagCompound var5 = new NBTTagCompound();
var5.setString("Name", var4.getPlayerName());
var5.setString("Objective", var4.getObjective().getName());
var5.setInteger("Score", var4.getScorePoints());
var5.setBoolean("Locked", var4.func_178816_g());
var1.appendTag(var5);
}
}
return var1;
}
}