Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @SubscribeEvent
- public void onClientTick(TickEvent.ClientTickEvent event) {
- if (event.phase == TickEvent.Phase.END) {
- EntityPlayerSP player = mc.thePlayer;
- if (player == null) return;
- for (Entity entity : mc.theWorld.loadedEntityList) {
- boolean contained = false;
- for (EntityInfo findingEntity : NoWalls.settings.getServerSettings(NoWalls.getConnectionIP()).finding.findingEntities) {
- if (findingEntity.entityName.equals(EntityList.getEntityString(entity))) {
- contained = true;
- }
- }
- entity.setGlowing(contained);
- }
- ItemStack held = player.getHeldItemMainhand();
- if (held != null && held.getItem() instanceof ItemBow) {
- EntityLivingBase target = RenderingEventHandler.aimBotTarget;
- if (mc.gameSettings.keyBindUseItem.isKeyDown() && target != null) {
- double dX = target.posX - player.posX;
- double dZ = target.posZ - player.posZ;
- player.rotationYaw = (float) ((Math.atan2(dZ, dX) - Math.PI / 2) * 180 / Math.PI);
- double d = Math.sqrt(dX * dX + dZ * dZ);
- float v = ItemBow.getArrowVelocity(held.getMaxItemUseDuration() - player.getItemInUseCount()) * 3;
- double g = 0.05;
- double playerEyeHeight = player.posY + (double) player.getEyeHeight() - 0.10000000149011612D;
- double y = (target.posY + target.getEyeHeight()) - playerEyeHeight;
- if (ProjectileHelper.calcMaxDistance(v, g) >= d) {
- double[] trajectories = ProjectileHelper.calcTrajectories(v, g, d, y);
- int i = 0;
- float angle = (float) -(trajectories[i] * 180 / Math.PI);
- if (angle >= -90 && angle <= 90) {
- player.rotationPitch = getAngleToHitTarget(player.rotationPitch, angle, v, player, target);
- }
- }
- }
- }
- }
- }
- public float getAngleToHitTarget(float currentAngle, float sourceAngle, float v, EntityPlayer shooter, Entity target) {
- if (doesAngleHitTarget(currentAngle, v, shooter, target)) {
- return currentAngle;
- }
- for (int i = -90; i <= 90; i++) {
- if (doesAngleHitTarget(i, v, shooter, target)) {
- return i;
- }
- }
- return currentAngle;
- }
- public boolean doesAngleHitTarget(float angle, float v, EntityPlayer shooter, Entity target) {
- EntityArrow arrow = new EntityTippedArrow(shooter.worldObj, shooter.posX, shooter.posY + (double) shooter.getEyeHeight() - 0.10000000149011612D, shooter.posZ);
- arrow.setAim(shooter, angle, shooter.rotationYaw, 0, v, 0);
- AxisAlignedBB hitbox = target.getEntityBoundingBox();
- double distanceToEntity = shooter.getDistanceToEntity(target);
- int maxTime = (int) (ProjectileHelper.calcTrajectoryTime(v, angle, distanceToEntity) + 10);
- int t = 0;
- while (true) {
- if (arrow.getDistanceToEntity(shooter) > distanceToEntity + 1) return false;
- if (arrow.onGround) return false;
- if (arrow.motionY < 0 && arrow.posY < target.posY) return false;
- if (hitbox.isVecInside(new Vec3d(arrow.posX, arrow.posY, arrow.posZ))) return true;
- if (t > maxTime) return false;
- arrow.onUpdate();
- t++;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement