case "Advance"-> {
if (options.getValueByName("Не бить сквозь стены").get() && !canSeeTargetWithDistance(target)) {
return;
}
float predictStrength = 0.57F;
Vector3d predictedPos = target.getPositionVec();
double stableY = target.getPosY() + target.getHeight();
predictedPos = new Vector3d(predictedPos.x, stableY, predictedPos.z).subtract(mc.player.getEyePosition(1.0F));
float yTo = (float) MathHelper.wrapDegrees(Math.toDegrees(Math.atan2(predictedPos.z, predictedPos.x)) - 90.0);
float pTo = (float) (-Math.toDegrees(Math.atan2(predictedPos.y, Math.hypot(predictedPos.x, predictedPos.z))));
float yDelta = MathHelper.wrapDegrees(yTo - this.rotateVector.x);
float pDelta = MathHelper.wrapDegrees(pTo - this.rotateVector.y);
float clampedYaw = Math.min(Math.max(Math.abs(yDelta), 0.0F), 66.7F);
float clampedPitch = Math.min(Math.max(Math.abs(pDelta), 0.0F), 7.2F);
float tYaw = this.rotateVector.x + (yDelta > 0.0F ? clampedYaw : -clampedYaw);
float tPitch = this.rotateVector.y + (pDelta > 0.0F ? clampedPitch : -clampedPitch);
float lerp = 0.717F;
float yaw = this.rotateVector.x + (tYaw - this.rotateVector.x) * lerp;
float pitch = this.rotateVector.y + (tPitch - this.rotateVector.y) * lerp;
float time = (float) (System.currentTimeMillis() % 10000L) / 1120.0F;
yaw += (float) Math.sin((double) (time * 2.0F) * Math.PI * 3.0) * 8.4F;
pitch += (float) Math.sin((double) (time * 2.0F) * Math.PI * 2.9) * 2.5F;
pitch = MathHelper.clamp(pitch, -90.0F, 85.0F);
float gcd4 = SensUtils.getGCDValue();
yaw -= (yaw - this.rotateVector.x) % gcd4;
pitch -= (pitch - this.rotateVector.y) % gcd4;
this.rotateVector = new Vector2f(yaw, pitch);
if ((Boolean) options.getValueByName("Коррекция движения").get()) {
mc.player.rotationYawOffset = yaw;
}
}