Вопрос Рука арморстенда по центру игрока

Версия Minecraft
1.20.X

Айсон :)

Разработчик
Пользователь
Сообщения
456
Решения
19
Создаю арморстенд с мечом в руке
Java:
ArmorStand sword = (ArmorStand) player.getWorld().spawnEntity(player.getLocation().add(0, 100, 0), EntityType.ARMOR_STAND);
sword.setVisible(false);
sword.setGravity(false);
sword.setItem(EquipmentSlot.HAND,player.getInventory().getItemInMainHand());
sword.setRightArmRotations(Rotations.ofDegrees(-10, 0, 90));

Дальше пытаюсь его выровнять так, чтобы этот меч был прямо в игроке
Java:
float yaw = player.getLocation().getYaw();
yaw = (yaw % 360 + 360) % 360;
if (yaw > 135 || yaw < -135) sword.teleport(player.getLocation().add(-0.8, 0, 0));
else if (yaw < -45) sword.teleport(player.getLocation().add(0, 0, -0.8));
else if (yaw > 45) sword.teleport(player.getLocation().add(0, 0, 0.8));
else sword.teleport(player.getLocation().add(0.8, 0, 0));

Но на некоторых частях света он спавнится не там. Подскажите, как лучше сделать
 
Если что, вот решение
Java:
Vector direction = player.getEyeLocation().getDirection();

double x = direction.getX();
double z = direction.getZ();

if (Math.abs(x) > Math.abs(z)) {
    if (x < 0) sword.teleport(player.getLocation().add(0, 0, 0.8));
    else sword.teleport(player.getLocation().add(0, 0, -0.8));
}
else {
    if (z < 0) sword.teleport(player.getLocation().add(-0.8, 0, 0));
    else sword.teleport(player.getLocation().add(0.8, 0, 0));
}
 
Назад
Сверху Снизу