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