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