public class PlayerUtility {
/**
* Получить позицию цели игрока с учетом смещения по определенной оси.
*
* @param player Игрок-цель
* @param offset Смещение по оси
* @return Вектор позиции игрока с учетом смещения
*/
public static Vector3d getTargetPos(PlayerEntity player, double offset) {
return new Vector3d(player.getPosX(), player.getPosY() + offset, player.getPosZ());
}
/**
* Проверить, находится ли игрок в пределах досяжності.
*
* @param player Игрок
* @param target Цель
* @param distance Максимальное расстояние
* @return true, если цель находится в пределах досяжности
*/
public static boolean isPlayerInReach(PlayerEntity player, PlayerEntity target, double distance) {
Vector3d playerPos = player.getPositionVec();
Vector3d targetPos = target.getPositionVec();
return playerPos.distanceTo(targetPos) <= distance;
}
/**
* Проверить, является ли цель враждебной или действующей.
*
* @param player Игрок
* @param target Цель
* @return true, если цель является враждебной и активной
*/
public static boolean isEnemy(PlayerEntity player, PlayerEntity target) {
// Допустим, что тут можно добавить проверку на команды или дружественные состояния
return target != player && target.isAlive() && !target.isSpectator();
}
}