    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 EntityMagmaCube extends EntitySlime
    007    {
    008        public EntityMagmaCube(World par1World)
    009        {
    010            super(par1World);
    011            this.texture = "/mob/lava.png";
    012            this.isImmuneToFire = true;
    013            this.landMovementFactor = 0.2F;
    014        }
    015
    016        /**
    017         * Checks if the entity's current position is a valid location to spawn this entity.
    018         */
    019        public boolean getCanSpawnHere()
    020        {
    021            return this.worldObj.difficultySetting > 0 && this.worldObj.checkIfAABBIsClear(this.boundingBox) && this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).isEmpty() && !this.worldObj.isAnyLiquid(this.boundingBox);
    022        }
    023
    024        /**
    025         * Returns the current armor value as determined by a call to InventoryPlayer.getTotalArmorValue
    026         */
    027        public int getTotalArmorValue()
    028        {
    029            return this.getSlimeSize() * 3;
    030        }
    031
    032        @SideOnly(Side.CLIENT)
    033        public int getBrightnessForRender(float par1)
    034        {
    035            return 15728880;
    036        }
    037
    038        /**
    039         * Gets how bright this entity is.
    040         */
    041        public float getBrightness(float par1)
    042        {
    043            return 1.0F;
    044        }
    045
    046        /**
    047         * Returns the name of a particle effect that may be randomly created by EntitySlime.onUpdate()
    048         */
    049        protected String getSlimeParticle()
    050        {
    051            return "flame";
    052        }
    053
    054        protected EntitySlime createInstance()
    055        {
    056            return new EntityMagmaCube(this.worldObj);
    057        }
    058
    059        /**
    060         * Returns the item ID for the item the mob drops on death.
    061         */
    062        protected int getDropItemId()
    063        {
    064            return Item.magmaCream.shiftedIndex;
    065        }
    066
    067        /**
    068         * Drop 0-2 items of this living's type
    069         */
    070        protected void dropFewItems(boolean par1, int par2)
    071        {
    072            int var3 = this.getDropItemId();
    073
    074            if (var3 > 0 && this.getSlimeSize() > 1)
    075            {
    076                int var4 = this.rand.nextInt(4) - 2;
    077
    078                if (par2 > 0)
    079                {
    080                    var4 += this.rand.nextInt(par2 + 1);
    081                }
    082
    083                for (int var5 = 0; var5 < var4; ++var5)
    084                {
    085                    this.dropItem(var3, 1);
    086                }
    087            }
    088        }
    089
    090        /**
    091         * Returns true if the entity is on fire. Used by render to add the fire effect on rendering.
    092         */
    093        public boolean isBurning()
    094        {
    095            return false;
    096        }
    097
    098        /**
    099         * Gets the amount of time the slime needs to wait between jumps.
    100         */
    101        protected int getJumpDelay()
    102        {
    103            return super.getJumpDelay() * 4;
    104        }
    105
    106        protected void func_70808_l()
    107        {
    108            this.field_70813_a *= 0.9F;
    109        }
    110
    111        /**
    112         * Causes this entity to do an upwards motion (jumping).
    113         */
    114        protected void jump()
    115        {
    116            this.motionY = (double)(0.42F + (float)this.getSlimeSize() * 0.1F);
    117            this.isAirBorne = true;
    118        }
    119
    120        /**
    121         * Called when the mob is falling. Calculates and applies fall damage.
    122         */
    123        protected void fall(float par1) {}
    124
    125        /**
    126         * Indicates weather the slime is able to damage the player (based upon the slime's size)
    127         */
    128        protected boolean canDamagePlayer()
    129        {
    130            return true;
    131        }
    132
    133        /**
    134         * Gets the amount of damage dealt to the player when "attacked" by the slime.
    135         */
    136        protected int getAttackStrength()
    137        {
    138            return super.getAttackStrength() + 2;
    139        }
    140
    141        /**
    142         * Returns the sound this mob makes when it is hurt.
    143         */
    144        protected String getHurtSound()
    145        {
    146            return "mob.slime." + (this.getSlimeSize() > 1 ? "big" : "small");
    147        }
    148
    149        /**
    150         * Returns the sound this mob makes on death.
    151         */
    152        protected String getDeathSound()
    153        {
    154            return "mob.slime." + (this.getSlimeSize() > 1 ? "big" : "small");
    155        }
    156
    157        /**
    158         * Returns the name of the sound played when the slime jumps.
    159         */
    160        protected String getJumpSound()
    161        {
    162            return this.getSlimeSize() > 1 ? "mob.magmacube.big" : "mob.magmacube.small";
    163        }
    164
    165        /**
    166         * Whether or not the current entity is in lava
    167         */
    168        public boolean handleLavaMovement()
    169        {
    170            return false;
    171        }
    172
    173        /**
    174         * Returns true if the slime makes a sound when it lands after a jump (based upon the slime's size)
    175         */
    176        protected boolean makesSoundOnLand()
    177        {
    178            return true;
    179        }
    180    }