You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.4 KiB
Java
98 lines
3.4 KiB
Java
package net.minecraft.stats;
|
|
|
|
import com.google.common.collect.Maps;
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
import java.util.Map;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.util.IJsonSerializable;
|
|
import net.minecraft.util.TupleIntJsonSerializable;
|
|
|
|
public class StatFileWriter
|
|
{
|
|
protected final Map field_150875_a = Maps.newConcurrentMap();
|
|
private static final String __OBFID = "CL_00001481";
|
|
|
|
/**
|
|
* Returns true if the achievement has been unlocked.
|
|
*/
|
|
public boolean hasAchievementUnlocked(Achievement p_77443_1_)
|
|
{
|
|
return this.writeStat(p_77443_1_) > 0;
|
|
}
|
|
|
|
/**
|
|
* Returns true if the parent has been unlocked, or there is no parent
|
|
*/
|
|
public boolean canUnlockAchievement(Achievement p_77442_1_)
|
|
{
|
|
return p_77442_1_.parentAchievement == null || this.hasAchievementUnlocked(p_77442_1_.parentAchievement);
|
|
}
|
|
|
|
public void func_150871_b(EntityPlayer p_150871_1_, StatBase p_150871_2_, int p_150871_3_)
|
|
{
|
|
if (!p_150871_2_.isAchievement() || this.canUnlockAchievement((Achievement)p_150871_2_))
|
|
{
|
|
this.func_150873_a(p_150871_1_, p_150871_2_, this.writeStat(p_150871_2_) + p_150871_3_);
|
|
}
|
|
}
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public int func_150874_c(Achievement p_150874_1_)
|
|
{
|
|
if (this.hasAchievementUnlocked(p_150874_1_))
|
|
{
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
int i = 0;
|
|
|
|
for (Achievement achievement1 = p_150874_1_.parentAchievement; achievement1 != null && !this.hasAchievementUnlocked(achievement1); ++i)
|
|
{
|
|
achievement1 = achievement1.parentAchievement;
|
|
}
|
|
|
|
return i;
|
|
}
|
|
}
|
|
|
|
public void func_150873_a(EntityPlayer p_150873_1_, StatBase p_150873_2_, int p_150873_3_)
|
|
{
|
|
TupleIntJsonSerializable tupleintjsonserializable = (TupleIntJsonSerializable)this.field_150875_a.get(p_150873_2_);
|
|
|
|
if (tupleintjsonserializable == null)
|
|
{
|
|
tupleintjsonserializable = new TupleIntJsonSerializable();
|
|
this.field_150875_a.put(p_150873_2_, tupleintjsonserializable);
|
|
}
|
|
|
|
tupleintjsonserializable.setIntegerValue(p_150873_3_);
|
|
}
|
|
|
|
public int writeStat(StatBase p_77444_1_)
|
|
{
|
|
TupleIntJsonSerializable tupleintjsonserializable = (TupleIntJsonSerializable)this.field_150875_a.get(p_77444_1_);
|
|
return tupleintjsonserializable == null ? 0 : tupleintjsonserializable.getIntegerValue();
|
|
}
|
|
|
|
public IJsonSerializable func_150870_b(StatBase p_150870_1_)
|
|
{
|
|
TupleIntJsonSerializable tupleintjsonserializable = (TupleIntJsonSerializable)this.field_150875_a.get(p_150870_1_);
|
|
return tupleintjsonserializable != null ? tupleintjsonserializable.getJsonSerializableValue() : null;
|
|
}
|
|
|
|
public IJsonSerializable func_150872_a(StatBase p_150872_1_, IJsonSerializable p_150872_2_)
|
|
{
|
|
TupleIntJsonSerializable tupleintjsonserializable = (TupleIntJsonSerializable)this.field_150875_a.get(p_150872_1_);
|
|
|
|
if (tupleintjsonserializable == null)
|
|
{
|
|
tupleintjsonserializable = new TupleIntJsonSerializable();
|
|
this.field_150875_a.put(p_150872_1_, tupleintjsonserializable);
|
|
}
|
|
|
|
tupleintjsonserializable.setJsonSerializableValue(p_150872_2_);
|
|
return p_150872_2_;
|
|
}
|
|
} |