Начинающий
- Статус
- Оффлайн
- Регистрация
- 12 Май 2025
- Сообщения
- 32
- Реакции
- 0
помогите сделать ротацию под дуэлькиprivate void spookyTimeDuelsRotation() {
if (target == null) return;
final float MAX_YAW_SPEED = 35.0F;
final float MIN_YAW_SPEED = 25.0F;
final float MAX_PITCH_SPEED = 18.0F;
final float MIN_PITCH_SPEED = 8.0F;
final float RANDOM_SPEED_FACTOR = 0.5F;
final float YAW_RANDOM_JITTER = jitterAmount.get() * 0.8F;
final float PITCH_RANDOM_JITTER = jitterAmount.get() * 0.4F;
float neckHeight = target.getEyeHeight() - 0.3F;
Vector3d targetPos = target.getPositionVec().add(0, neckHeight, 0);
float randomOffsetX = (spookyRandom.nextFloat() - 0.5F) * 0.2F;
float randomOffsetY = (spookyRandom.nextFloat() - 0.5F) * 0.15F;
float randomOffsetZ = (spookyRandom.nextFloat() - 0.5F) * 0.2F;
targetPos = targetPos.add(randomOffsetX, randomOffsetY, randomOffsetZ);
Vector3d vecToTarget = targetPos.subtract(mc.player.getEyePosition(1.0F));
float targetYaw = (float) MathHelper.wrapDegrees(
Math.toDegrees(Math.atan2(vecToTarget.z, vecToTarget.x)) - 90.0
);
float targetPitch = (float) (-Math.toDegrees(
Math.atan2(vecToTarget.y, Math.hypot(vecToTarget.x, vecToTarget.z))
));
float currentYaw = mc.player.rotationYaw;
float currentPitch = mc.player.rotationPitch;
float yawDelta = MathHelper.wrapDegrees(targetYaw - currentYaw);
float pitchDelta = targetPitch - currentPitch;
float yawAbs = Math.abs(yawDelta);
float pitchAbs = Math.abs(pitchDelta);
float yawFraction = MathHelper.clamp(yawAbs / 180.0F, 0.0F, 1.0F);
float pitchFraction = MathHelper.clamp(pitchAbs / 90.0F, 0.0F, 1.0F);
float yawSpeed = MathHelper.lerp(yawFraction, MIN_YAW_SPEED, MAX_YAW_SPEED);
float pitchSpeed = MathHelper.lerp(pitchFraction, MIN_PITCH_SPEED, MAX_PITCH_SPEED);
float cooldown = 1.0F - MathHelper.clamp(mc.player.getCooledAttackStrength(1.0F), 0.0F, 1.0F);
float slowdown = MathHelper.lerp(cooldown, 0.7F, 1.0F);
yawSpeed *= slowdown;
pitchSpeed *= slowdown;
float randomScaleYaw = 1.0F + ((spookyRandom.nextFloat() * 2.0F - 1.0F) * RANDOM_SPEED_FACTOR);
float randomScalePitch = 1.0F + ((spookyRandom.nextFloat() * 2.0F - 1.0F) * RANDOM_SPEED_FACTOR);
yawSpeed = MathHelper.clamp(yawSpeed * randomScaleYaw, MIN_YAW_SPEED * 0.8F, MAX_YAW_SPEED);
pitchSpeed = MathHelper.clamp(pitchSpeed * randomScalePitch, MIN_PITCH_SPEED * 0.8F, MAX_PITCH_SPEED);
lastYawJitter = randomJitter(YAW_RANDOM_JITTER, lastYawJitter);
lastPitchJitter = randomJitter(PITCH_RANDOM_JITTER, lastPitchJitter);
float finalYaw = targetYaw + lastYawJitter;
float finalPitch = MathHelper.clamp(targetPitch + lastPitchJitter, -89.0F, 90.0F);
RotationComponent.update(
new Rotation(finalYaw, finalPitch),
false,
yawSpeed,
pitchSpeed,
yawSpeed * 0.6F,
pitchSpeed * 0.6F,
1,
5,
false
);
}
private float randomJitter(float bound, float previous) {
if (bound <= 0.0F) return 0.0F;
float next = (spookyRandom.nextFloat() * 2.0F - 1.0F) * bound;
return MathHelper.lerp(0.35F, previous, next);
}
банит по кд спустя 1-2 дуэли
буду очень блогадарен