package me.tyler15555.minibosses.entity;
import me.tyler15555.minibosses.block.MBBlocks;
import me.tyler15555.minibosses.item.MBItems;
import me.tyler15555.minibosses.util.IMiniboss;
import me.tyler15555.minibosses.util.Resources;
import net.minecraft.entity.IEntityLivingData;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.monster.EntitySlime;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MathHelper;
import net.minecraft.world.DifficultyInstance;
import net.minecraft.world.World;
public class EntitySuperSlime extends EntitySlime implements IMiniboss {
public EntitySuperSlime(World par1World) {
super(par1World);
}
@Override
public void setDead() {
this.isDead = true;
}
@Override
protected void applyEntityAttributes() {
super.applyEntityAttributes();
this.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.maxHealth).setBaseValue(125D);
}
@Override
public void onCollideWithPlayer(EntityPlayer player) {
super.onCollideWithPlayer(player);
if(this.rand.nextInt(10) == 1) {
player.knockBack(player, 10.5F, 10.5F, 10.5F);
}
}
@Override
public void entityInit() {
super.entityInit();
}
@Override
public void onLivingUpdate() {
super.onLivingUpdate();
int minionSpawnCounter = 0;
if(this.rand.nextInt(24) == 1) {
minionSpawnCounter++;
if(minionSpawnCounter >= 10 && this.getAttackTarget() != null && !this.worldObj.isRemote) {
EntitySlime slime = new EntitySlime(this.worldObj);
slime.copyLocationAndAnglesFrom(this);
this.worldObj.spawnEntityInWorld(slime);
minionSpawnCounter = 0;
}
}
}
/*
@Override
public boolean getCanSpawnHere() {
super.getCanSpawnHere();
if(Resources.entityBlockList.containsKey("SuperSlime")) {
return Resources.entityBlockList.get("SuperSlime") == this.worldObj.provider.dimensionId;
} else {
return true;
}
} */
@Override
public Item getDropItem() {
return Item.getItemFromBlock(MBBlocks.blockSlime);
}
@Override
public void dropFewItems(boolean hitRecently, int looting) {
if(hitRecently) {
this.dropItem(Item.getItemFromBlock(MBBlocks.blockSlime), this.rand.nextInt(2));
this.dropItem(Items.slime_ball, this.rand.nextInt(9));
}
}
@Override
public String getBanlistName() {
return "SuperSlime";
}
@Override
public ItemStack getPossibleLoot() {
return new ItemStack(MBItems.reviveHeart);
}
@Override
public int getDropChance() {
return 85;
}
@Override
public void setSlimeSize(int size) {
super.setSlimeSize(size);
}
@Override
public IEntityLivingData func_180482_a(DifficultyInstance difficulty, IEntityLivingData data) {
this.setSlimeSize(MathHelper.getRandomIntegerInRange(rand, 10, 15));
return data;
}
}