package net.minecraft.entity.monster; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.init.Items; import net.minecraft.item.Item; 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 p_i1737_1_) { super(p_i1737_1_); 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.difficultySetting != EnumDifficulty.PEACEFUL && this.worldObj.checkNoEntityCollision(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 p_70070_1_) { return 15728880; } /** * Gets how bright this entity is. */ public float getBrightness(float p_70013_1_) { 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); } 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 item = this.getDropItem(); if (item != null && this.getSlimeSize() > 1) { int j = this.rand.nextInt(4) - 2; if (p_70628_2_ > 0) { j += this.rand.nextInt(p_70628_2_ + 1); } for (int k = 0; k < j; ++k) { this.dropItem(item, 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; net.minecraftforge.common.ForgeHooks.onLivingJump(this); } /** * Called when the mob is falling. Calculates and applies fall damage. */ protected void fall(float distance) {} /** * 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"; } /** * 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; } }