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 }