-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Credits: tg: @CacheSystem
Sel$codd:
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.math.vector.Vector2f;
import net.minecraft.entity.Entity;
import net.minecraft.client.Minecraft;
/**
* [USER=35246]@Author[/USER] cachesystem
* [USER=30931]@since[/USER] 09.11.2024
*/
public class RotateUtils {
// no pasta its sel$$$$$$$$$codeeeeeede
public static Vector2f calculateAngle(Entity target) {
Vector3d playerPos = Minecraft.getInstance().player.getEyePosition(1.0F);
Vector3d targetPos = target.getPositionVec().add(0, target.getEyeHeight() / 2.0, 0);
Vector3d diff = targetPos.subtract(playerPos);
double dist = diff.length();
float yaw = (float) MathHelper.wrapDegrees(Math.toDegrees(Math.atan2(diff.z, diff.x)) - 90.0);
float pitch = (float) -Math.toDegrees(Math.atan2(diff.y, dist));
return new Vector2f(yaw, pitch);
}
public static Vector2f smoothRotate(float currentYaw, float currentPitch, float targetYaw, float targetPitch, float yawSpeed, float pitchSpeed, float yawThreshold, float pitchThreshold) {
float yawDelta = MathHelper.wrapDegrees(targetYaw - currentYaw);
float pitchDelta = MathHelper.wrapDegrees(targetPitch - currentPitch);
if (Math.abs(yawDelta) < yawThreshold && Math.abs(pitchDelta) < pitchThreshold) {
return new Vector2f(currentYaw, currentPitch);
}
float clampedYaw = MathHelper.clamp(yawDelta, -yawSpeed, yawSpeed);
float clampedPitch = MathHelper.clamp(pitchDelta, -pitchSpeed, pitchSpeed);
float newYaw = currentYaw + clampedYaw;
float newPitch = MathHelper.clamp(currentPitch + clampedPitch, -90, 90);
return new Vector2f(newYaw, newPitch);
}
public static boolean isLookingAt(Entity target, float threshold) {
Vector2f angles = calculateAngle(target);
return isAngleWithinThreshold(angles.x, Minecraft.getInstance().player.rotationYaw, angles.y, Minecraft.getInstance().player.rotationPitch, threshold);
}
// privet
private static boolean isAngleWithinThreshold(float targetYaw, float currentYaw, float targetPitch, float currentPitch, float threshold) {
float yawDifference = MathHelper.wrapDegrees(targetYaw - currentYaw);
float pitchDifference = MathHelper.wrapDegrees(targetPitch - currentPitch);
return Math.abs(yawDifference) < threshold && Math.abs(pitchDifference) < threshold;
}
}
Последнее редактирование: