001 package net.minecraft.entity.player;
002
003 import cpw.mods.fml.relauncher.Side;
004 import cpw.mods.fml.relauncher.SideOnly;
005 import net.minecraft.nbt.NBTTagCompound;
006
007 public class PlayerCapabilities
008 {
009 /** Disables player damage. */
010 public boolean disableDamage = false;
011
012 /** Sets/indicates whether the player is flying. */
013 public boolean isFlying = false;
014
015 /** whether or not to allow the player to fly when they double jump. */
016 public boolean allowFlying = false;
017
018 /**
019 * Used to determine if creative mode is enabled, and therefore if items should be depleted on usage
020 */
021 public boolean isCreativeMode = false;
022
023 /** Indicates whether the player is allowed to modify the surroundings */
024 public boolean allowEdit = true;
025 private float flySpeed = 0.05F;
026 private float walkSpeed = 0.1F;
027
028 public void writeCapabilitiesToNBT(NBTTagCompound par1NBTTagCompound)
029 {
030 NBTTagCompound var2 = new NBTTagCompound();
031 var2.setBoolean("invulnerable", this.disableDamage);
032 var2.setBoolean("flying", this.isFlying);
033 var2.setBoolean("mayfly", this.allowFlying);
034 var2.setBoolean("instabuild", this.isCreativeMode);
035 var2.setBoolean("mayBuild", this.allowEdit);
036 var2.setFloat("flySpeed", this.flySpeed);
037 var2.setFloat("walkSpeed", this.walkSpeed);
038 par1NBTTagCompound.setTag("abilities", var2);
039 }
040
041 public void readCapabilitiesFromNBT(NBTTagCompound par1NBTTagCompound)
042 {
043 if (par1NBTTagCompound.hasKey("abilities"))
044 {
045 NBTTagCompound var2 = par1NBTTagCompound.getCompoundTag("abilities");
046 this.disableDamage = var2.getBoolean("invulnerable");
047 this.isFlying = var2.getBoolean("flying");
048 this.allowFlying = var2.getBoolean("mayfly");
049 this.isCreativeMode = var2.getBoolean("instabuild");
050
051 if (var2.hasKey("flySpeed"))
052 {
053 this.flySpeed = var2.getFloat("flySpeed");
054 this.walkSpeed = var2.getFloat("walkSpeed");
055 }
056
057 if (var2.hasKey("mayBuild"))
058 {
059 this.allowEdit = var2.getBoolean("mayBuild");
060 }
061 }
062 }
063
064 public float getFlySpeed()
065 {
066 return this.flySpeed;
067 }
068
069 @SideOnly(Side.CLIENT)
070 public void setFlySpeed(float par1)
071 {
072 this.flySpeed = par1;
073 }
074
075 public float getWalkSpeed()
076 {
077 return this.walkSpeed;
078 }
079
080 @SideOnly(Side.CLIENT)
081 public void func_82877_b(float par1)
082 {
083 this.walkSpeed = par1;
084 }
085 }