001package net.minecraft.entity.boss;
002
003import net.minecraft.entity.Entity;
004import net.minecraft.entity.IEntityMultiPart;
005import net.minecraft.nbt.NBTTagCompound;
006import net.minecraft.util.DamageSource;
007
008public 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}