package net.minecraft.entity.monster; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.item.Item; import net.minecraft.world.World; public class EntityMagmaCube extends EntitySlime { public EntityMagmaCube(World par1World) { super(par1World); this.texture = "/mob/lava.png"; this.isImmuneToFire = true; this.landMovementFactor = 0.2F; } /** * Checks if the entity's current position is a valid location to spawn this entity. */ public boolean getCanSpawnHere() { return this.worldObj.difficultySetting > 0 && this.worldObj.checkIfAABBIsClear(this.boundingBox) && this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).isEmpty() && !this.worldObj.isAnyLiquid(this.boundingBox); } /** * Returns the current armor value as determined by a call to InventoryPlayer.getTotalArmorValue */ public int getTotalArmorValue() { return this.getSlimeSize() * 3; } @SideOnly(Side.CLIENT) public int getBrightnessForRender(float par1) { return 15728880; } /** * Gets how bright this entity is. */ public float getBrightness(float par1) { return 1.0F; } /** * Returns the name of a particle effect that may be randomly created by EntitySlime.onUpdate() */ protected String getSlimeParticle() { return "flame"; } protected EntitySlime createInstance() { return new EntityMagmaCube(this.worldObj); } /** * Returns the item ID for the item the mob drops on death. */ protected int getDropItemId() { return Item.magmaCream.itemID; } /** * Drop 0-2 items of this living's type. @param par1 - Whether this entity has recently been hit by a player. @param * par2 - Level of Looting used to kill this mob. */ protected void dropFewItems(boolean par1, int par2) { int var3 = this.getDropItemId(); if (var3 > 0 && this.getSlimeSize() > 1) { int var4 = this.rand.nextInt(4) - 2; if (par2 > 0) { var4 += this.rand.nextInt(par2 + 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 func_70808_l() { this.field_70813_a *= 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; } /** * Called when the mob is falling. Calculates and applies fall damage. */ protected void fall(float par1) {} /** * 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 sound this mob makes when it is hurt. */ protected String getHurtSound() { return "mob.slime." + (this.getSlimeSize() > 1 ? "big" : "small"); } /** * Returns the sound this mob makes on death. */ protected String getDeathSound() { return "mob.slime." + (this.getSlimeSize() > 1 ? "big" : "small"); } /** * Returns the name of the sound played when the slime jumps. */ protected String getJumpSound() { return this.getSlimeSize() > 1 ? "mob.magmacube.big" : "mob.magmacube.small"; } /** * Whether or not the current entity is in lava */ public boolean handleLavaMovement() { return false; } /** * 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; } }