    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    }