package me.tyler15555.minibosses.entity; import me.tyler15555.minibosses.item.MBItems; import me.tyler15555.minibosses.util.IMiniboss; import net.minecraft.entity.Entity; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIAttackOnCollide; import net.minecraft.entity.ai.EntityAILookIdle; import net.minecraft.entity.ai.EntityAINearestAttackableTarget; import net.minecraft.entity.ai.EntityAISwimming; import net.minecraft.entity.ai.EntityAIWander; import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; public class EntityWatcher extends EntityMob implements IMiniboss { public EntityWatcher(World par1World) { super(par1World); this.tasks.addTask(0, new EntityAIWander(this, 1.0D)); this.tasks.addTask(1, new EntityAISwimming(this)); this.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false)); this.tasks.addTask(3, new EntityAILookIdle(this)); this.tasks.addTask(4, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); this.targetTasks.addTask(0, new EntityAINearestAttackableTarget(this, EntityPlayer.class, true)); } @Override protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.maxHealth).setBaseValue(125D); this.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange).setBaseValue(20.5D); this.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.attackDamage).setBaseValue(4.5D); this.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.movementSpeed).setBaseValue(.40D); } @Override public boolean attackEntityAsMob(Entity entity) { super.attackEntityAsMob(entity); if(this.rand.nextInt(100) == 1 && entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)entity; player.addPotionEffect(new PotionEffect(Potion.blindness.id, 600)); player.addPotionEffect(new PotionEffect(Potion.confusion.id, 600)); return true; } return true; } @Override public Item getDropItem() { return MBItems.occulus_item; } @Override public String getBanlistName() { return "Watcher"; } @Override public ItemStack getPossibleLoot() { return new ItemStack(MBItems.medusaEye); } @Override public int getDropChance() { return 60; } }