package net.minecraft.entity.monster; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.util.EnumParticleTypes; import net.minecraft.world.EnumDifficulty; import net.minecraft.world.World; public class EntityMagmaCube extends EntitySlime { private static final String __OBFID = "CL_00001691"; public EntityMagmaCube(World worldIn) { super(worldIn); this.isImmuneToFire = true; } protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.20000000298023224D); } /** * Checks if the entity's current position is a valid location to spawn this entity. */ public boolean getCanSpawnHere() { return this.worldObj.getDifficulty() != EnumDifficulty.PEACEFUL; } /** * Whether or not the current entity is in lava */ public boolean handleLavaMovement() { return this.worldObj.checkNoEntityCollision(this.getEntityBoundingBox(), this) && this.worldObj.getCollidingBoundingBoxes(this, this.getEntityBoundingBox()).isEmpty() && !this.worldObj.isAnyLiquid(this.getEntityBoundingBox()); } /** * Returns the current armor value as determined by a call to InventoryPlayer.getTotalArmorValue */ public int getTotalArmorValue() { return this.getSlimeSize() * 3; } /** * Gets how bright this entity is. */ public float getBrightness(float p_70013_1_) { return 1.0F; } protected EnumParticleTypes func_180487_n() { return EnumParticleTypes.FLAME; } protected EntitySlime createInstance() { return new EntityMagmaCube(this.worldObj); } protected Item getDropItem() { return Items.magma_cream; } /** * Drop 0-2 items of this living's type */ protected void dropFewItems(boolean p_70628_1_, int p_70628_2_) { Item var3 = this.getDropItem(); if (var3 != null && this.getSlimeSize() > 1) { int var4 = this.rand.nextInt(4) - 2; if (p_70628_2_ > 0) { var4 += this.rand.nextInt(p_70628_2_ + 1); } for (int var5 = 0; var5 < var4; ++var5) { this.dropItem(var3, 1); } } } /** * Returns true if the entity is on fire. Used by render to add the fire effect on rendering. */ public boolean isBurning() { return false; } /** * Gets the amount of time the slime needs to wait between jumps. */ protected int getJumpDelay() { return super.getJumpDelay() * 4; } protected void alterSquishAmount() { this.squishAmount *= 0.9F; } /** * Causes this entity to do an upwards motion (jumping). */ protected void jump() { this.motionY = (double)(0.42F + (float)this.getSlimeSize() * 0.1F); this.isAirBorne = true; } protected void func_180466_bG() { this.motionY = (double)(0.22F + (float)this.getSlimeSize() * 0.05F); this.isAirBorne = true; } public void fall(float distance, float damageMultiplier) {} /** * Indicates weather the slime is able to damage the player (based upon the slime's size) */ protected boolean canDamagePlayer() { return true; } /** * Gets the amount of damage dealt to the player when "attacked" by the slime. */ protected int getAttackStrength() { return super.getAttackStrength() + 2; } /** * Returns the name of the sound played when the slime jumps. */ protected String getJumpSound() { return this.getSlimeSize() > 1 ? "mob.magmacube.big" : "mob.magmacube.small"; } /** * Returns true if the slime makes a sound when it lands after a jump (based upon the slime's size) */ protected boolean makesSoundOnLand() { return true; } }