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;
}
}