Advertisement
Guest User

Untitled

a guest
Aug 20th, 2016
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.64 KB | None | 0 0
  1. @SubscribeEvent
  2.     public void onClientTick(TickEvent.ClientTickEvent event) {
  3.         if (event.phase == TickEvent.Phase.END) {
  4.             EntityPlayerSP player = mc.thePlayer;
  5.             if (player == null) return;
  6.             for (Entity entity : mc.theWorld.loadedEntityList) {
  7.                 boolean contained = false;
  8.                 for (EntityInfo findingEntity : NoWalls.settings.getServerSettings(NoWalls.getConnectionIP()).finding.findingEntities) {
  9.                     if (findingEntity.entityName.equals(EntityList.getEntityString(entity))) {
  10.                         contained = true;
  11.                     }
  12.                 }
  13.                 entity.setGlowing(contained);
  14.             }
  15.  
  16.             ItemStack held = player.getHeldItemMainhand();
  17.             if (held != null && held.getItem() instanceof ItemBow) {
  18.                 EntityLivingBase target = RenderingEventHandler.aimBotTarget;
  19.                 if (mc.gameSettings.keyBindUseItem.isKeyDown() && target != null) {
  20.                     double dX = target.posX - player.posX;
  21.                     double dZ = target.posZ - player.posZ;
  22.  
  23.                     player.rotationYaw = (float) ((Math.atan2(dZ, dX) - Math.PI / 2) * 180 / Math.PI);
  24.  
  25.                     double d = Math.sqrt(dX * dX + dZ * dZ);
  26.                     float v = ItemBow.getArrowVelocity(held.getMaxItemUseDuration() - player.getItemInUseCount()) * 3;
  27.                     double g = 0.05;
  28.                     double playerEyeHeight = player.posY + (double) player.getEyeHeight() - 0.10000000149011612D;
  29.                     double y = (target.posY + target.getEyeHeight()) - playerEyeHeight;
  30.  
  31.                     if (ProjectileHelper.calcMaxDistance(v, g) >= d) {
  32.                         double[] trajectories = ProjectileHelper.calcTrajectories(v, g, d, y);
  33.                         int i = 0;
  34.                         float angle = (float) -(trajectories[i] * 180 / Math.PI);
  35.                         if (angle >= -90 && angle <= 90) {
  36.                             player.rotationPitch = getAngleToHitTarget(player.rotationPitch, angle, v, player, target);
  37.                         }
  38.                     }
  39.                 }
  40.             }
  41.         }
  42.     }
  43.  
  44.     public float getAngleToHitTarget(float currentAngle, float sourceAngle, float v, EntityPlayer shooter, Entity target) {
  45.         if (doesAngleHitTarget(currentAngle, v, shooter, target)) {
  46.             return currentAngle;
  47.         }
  48.         for (int i = -90; i <= 90; i++) {
  49.             if (doesAngleHitTarget(i, v, shooter, target)) {
  50.                 return i;
  51.             }
  52.         }
  53.         return currentAngle;
  54.     }
  55.  
  56.     public boolean doesAngleHitTarget(float angle, float v, EntityPlayer shooter, Entity target) {
  57.         EntityArrow arrow = new EntityTippedArrow(shooter.worldObj, shooter.posX, shooter.posY + (double) shooter.getEyeHeight() - 0.10000000149011612D, shooter.posZ);
  58.  
  59.         arrow.setAim(shooter, angle, shooter.rotationYaw, 0, v, 0);
  60.  
  61.         AxisAlignedBB hitbox = target.getEntityBoundingBox();
  62.  
  63.         double distanceToEntity = shooter.getDistanceToEntity(target);
  64.  
  65.         int maxTime = (int) (ProjectileHelper.calcTrajectoryTime(v, angle, distanceToEntity) + 10);
  66.  
  67.         int t = 0;
  68.  
  69.         while (true) {
  70.             if (arrow.getDistanceToEntity(shooter) > distanceToEntity + 1) return false;
  71.             if (arrow.onGround) return false;
  72.             if (arrow.motionY < 0 && arrow.posY < target.posY) return false;
  73.             if (hitbox.isVecInside(new Vec3d(arrow.posX, arrow.posY, arrow.posZ))) return true;
  74.             if (t > maxTime) return false;
  75.             arrow.onUpdate();
  76.             t++;
  77.         }
  78.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement