@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; } } }