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