001    package net.minecraft.entity.boss;
002    
003    import net.minecraft.entity.Entity;
004    import net.minecraft.entity.IEntityMultiPart;
005    import net.minecraft.nbt.NBTTagCompound;
006    import net.minecraft.util.DamageSource;
007    
008    public class EntityDragonPart extends Entity
009    {
010        /** The dragon entity this dragon part belongs to */
011        public final IEntityMultiPart entityDragonObj;
012    
013        /** The name of the Dragon Part */
014        public final String name;
015    
016        public EntityDragonPart(IEntityMultiPart par1, String par2, float par3, float par4)
017        {
018            super(par1.func_82194_d());
019            this.setSize(par3, par4);
020            this.entityDragonObj = par1;
021            this.name = par2;
022        }
023    
024        protected void entityInit() {}
025    
026        /**
027         * (abstract) Protected helper method to read subclass entity data from NBT.
028         */
029        protected void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) {}
030    
031        /**
032         * (abstract) Protected helper method to write subclass entity data to NBT.
033         */
034        protected void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) {}
035    
036        /**
037         * Returns true if other Entities should be prevented from moving through this Entity.
038         */
039        public boolean canBeCollidedWith()
040        {
041            return true;
042        }
043    
044        /**
045         * Called when the entity is attacked.
046         */
047        public boolean attackEntityFrom(DamageSource par1DamageSource, int par2)
048        {
049            return this.isEntityInvulnerable() ? false : this.entityDragonObj.attackEntityFromPart(this, par1DamageSource, par2);
050        }
051    
052        /**
053         * Returns true if Entity argument is equal to this Entity
054         */
055        public boolean isEntityEqual(Entity par1Entity)
056        {
057            return this == par1Entity || this.entityDragonObj == par1Entity;
058        }
059    }