@Override
 public void activeAbility(World world, EntityLivingBase user, ItemStack is) {
   consumeMana(world, user, is);
   if (!world.isRemote) {
     ESelectorNonHostile sel = new ESelectorNonHostile();
     ESelectorProjectiles sel1 = new ESelectorProjectiles();
     double range = 16;
     List<Entity> list =
         world.getEntitiesWithinAABB(
             Entity.class,
             AxisAlignedBB.getBoundingBox(
                     user.posX, user.posY, user.posZ, user.posX, user.posY, user.posZ)
                 .expand(range, range, range));
     list.remove(user);
     for (Entity e : list) {
       Vector v = FuncHelper.vectorToEntity(e, user).normalize();
       double power = 0.4 * user.getDistanceToEntity(e);
       if (sel1.isEntityApplicable(e)
           || e instanceof EntityLivingBase
               && sel.isEntityApplicable(e) != sel.isEntityApplicable(user)) {
         v = v.reverse();
         power = 3;
       }
       v = v.multiply(power);
       e.motionX += v.x;
       e.motionY += v.y * 0.5;
       e.motionZ += v.z;
     }
   }
 }
 @Override
 public void passiveAbility(World world, EntityLivingBase user, ItemStack is) {
   if (user.ticksExisted % 4 == 0) {
     double range = 8;
     List<Entity> list =
         world.selectEntitiesWithinAABB(
             Entity.class,
             AxisAlignedBB.getBoundingBox(
                     user.posX, user.posY, user.posZ, user.posX, user.posY, user.posZ)
                 .expand(range, range, range),
             new ESelectorProjectiles());
     for (Entity e : list) {
       Vector v = FuncHelper.vectorToEntity(user, e).normalize();
       e.motionX += v.x * 0.35;
       e.motionY += v.y * 0.35;
       e.motionZ += v.z * 0.35;
     }
   }
 }