@Override
 public boolean shouldExecute() {
   if (cooldownTicks-- > 0 || host.getCurrentAction() != BossActions.IDLE) return false;
   EntityLivingBase AITarget = host.getAttackTarget();
   if (AITarget == null || AITarget.isDead) return false;
   this.target = AITarget;
   return true;
 }
 @Override
 public boolean continueExecuting() {
   EntityLivingBase AITarget = host.getAttackTarget();
   if (AITarget == null
       || AITarget.isDead
       || (host.getCurrentAction() == BossActions.THROWING_SICKLE
           && host.getTicksInCurrentAction() > host.getCurrentAction().getMaxActionTime())) {
     host.setCurrentAction(BossActions.IDLE);
     cooldownTicks = 50;
     return false;
   }
   return true;
 }
  @Override
  public void updateTask() {
    host.getLookHelper().setLookPositionWithEntity(target, 30, 30);
    if (host.getDistanceSqToEntity(target) > 100) {
      host.getNavigator().tryMoveToEntityLiving(target, moveSpeed);
    } else {
      host.getNavigator().clearPathEntity();
      if (host.getCurrentAction() != BossActions.THROWING_SICKLE)
        host.setCurrentAction(BossActions.THROWING_SICKLE);

      if (host.getTicksInCurrentAction() == 12) {
        host.faceEntity(target, 180, 180);
        if (!host.worldObj.isRemote) {
          EntityThrownSickle projectile = new EntityThrownSickle(host.worldObj, host, 2.0f);
          projectile.setThrowingEntity(host);
          projectile.setProjectileSpeed(2.0);
          host.worldObj.spawnEntityInWorld(projectile);
        }
      }
    }
  }