    001package net.minecraft.entity.item;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import net.minecraft.entity.Entity;
    006import net.minecraft.nbt.NBTTagCompound;
    007import net.minecraft.world.World;
    008
    009public class EntityTNTPrimed extends Entity
    010{
    011    /** How long the fuse is */
    012    public int fuse;
    013
    014    public EntityTNTPrimed(World par1World)
    015    {
    016        super(par1World);
    017        this.fuse = 0;
    018        this.preventEntitySpawning = true;
    019        this.setSize(0.98F, 0.98F);
    020        this.yOffset = this.height / 2.0F;
    021    }
    022
    023    public EntityTNTPrimed(World par1World, double par2, double par4, double par6)
    024    {
    025        this(par1World);
    026        this.setPosition(par2, par4, par6);
    027        float var8 = (float)(Math.random() * Math.PI * 2.0D);
    028        this.motionX = (double)(-((float)Math.sin((double)var8)) * 0.02F);
    029        this.motionY = 0.20000000298023224D;
    030        this.motionZ = (double)(-((float)Math.cos((double)var8)) * 0.02F);
    031        this.fuse = 80;
    032        this.prevPosX = par2;
    033        this.prevPosY = par4;
    034        this.prevPosZ = par6;
    035    }
    036
    037    protected void entityInit() {}
    038
    039    /**
    040     * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to
    041     * prevent them from trampling crops
    042     */
    043    protected boolean canTriggerWalking()
    044    {
    045        return false;
    046    }
    047
    048    /**
    049     * Returns true if other Entities should be prevented from moving through this Entity.
    050     */
    051    public boolean canBeCollidedWith()
    052    {
    053        return !this.isDead;
    054    }
    055
    056    /**
    057     * Called to update the entity's position/logic.
    058     */
    059    public void onUpdate()
    060    {
    061        this.prevPosX = this.posX;
    062        this.prevPosY = this.posY;
    063        this.prevPosZ = this.posZ;
    064        this.motionY -= 0.03999999910593033D;
    065        this.moveEntity(this.motionX, this.motionY, this.motionZ);
    066        this.motionX *= 0.9800000190734863D;
    067        this.motionY *= 0.9800000190734863D;
    068        this.motionZ *= 0.9800000190734863D;
    069
    070        if (this.onGround)
    071        {
    072            this.motionX *= 0.699999988079071D;
    073            this.motionZ *= 0.699999988079071D;
    074            this.motionY *= -0.5D;
    075        }
    076
    077        if (this.fuse-- <= 0)
    078        {
    079            this.setDead();
    080
    081            if (!this.worldObj.isRemote)
    082            {
    083                this.explode();
    084            }
    085        }
    086        else
    087        {
    088            this.worldObj.spawnParticle("smoke", this.posX, this.posY + 0.5D, this.posZ, 0.0D, 0.0D, 0.0D);
    089        }
    090    }
    091
    092    private void explode()
    093    {
    094        float var1 = 4.0F;
    095        this.worldObj.createExplosion((Entity)null, this.posX, this.posY, this.posZ, var1, true);
    096    }
    097
    098    /**
    099     * (abstract) Protected helper method to write subclass entity data to NBT.
    100     */
    101    protected void writeEntityToNBT(NBTTagCompound par1NBTTagCompound)
    102    {
    103        par1NBTTagCompound.setByte("Fuse", (byte)this.fuse);
    104    }
    105
    106    /**
    107     * (abstract) Protected helper method to read subclass entity data from NBT.
    108     */
    109    protected void readEntityFromNBT(NBTTagCompound par1NBTTagCompound)
    110    {
    111        this.fuse = par1NBTTagCompound.getByte("Fuse");
    112    }
    113
    114    @SideOnly(Side.CLIENT)
    115    public float getShadowSize()
    116    {
    117        return 0.0F;
    118    }
    119}