1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Перемещение руки ArmorStand

Тема в разделе "Разработка плагинов для новичков", создана пользователем OGDeveloper, 9 июл 2019.

  1. Автор темы
    OGDeveloper

    OGDeveloper Новичок

    Баллы:
    6
    Имя в Minecraft:
    OGDeveloper
    Здравствуйте. Появилась проблема. Есть ArmorStand, ему нужно выпрямить правую руку (от тела (вытянуть)). Чуть разобравшись в теме, я нагуглил про EulerAngle, выяснил что он работает по координатам радиана. Далее столкнулся с проблемой 3 координат. Попробовал 3 координаты, выяснил что вроде как за это направление отвечает координата Y, задал ей координату 3.14 (половину круга). Но рука вообще двинулась по неправильной траектории. Если можно, объясните, или скиньте пример, как поднять эту руку.
     
  2. Nikolai_Faint

    Nikolai_Faint Активный участник Пользователь

    Баллы:
    96
  3. Автор темы
    OGDeveloper

    OGDeveloper Новичок

    Баллы:
    6
    Имя в Minecraft:
    OGDeveloper
    upload_2019-7-9_7-24-12.png

    P.S - меняю координату Y
     
  4. Nikolai_Faint

    Nikolai_Faint Активный участник Пользователь

    Баллы:
    96
  5. Автор темы
    OGDeveloper

    OGDeveloper Новичок

    Баллы:
    6
    Имя в Minecraft:
    OGDeveloper
    upload_2019-7-9_19-35-1.png

    Код:
    EulerAngle eulerAngle = stand.getRightArmPose();
            eulerAngle = eulerAngle.setX(-3.14);
    
            stand.setRightArmPose(eulerAngle);
     
  6. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    https://haselkern.com/Minecraft-ArmorStand/
    upload_2019-7-9_20-3-46.png
    Останется перевести градусы в радианы, если EulerAngle реально принимает их.
    Вместо 3.14 используй Math.PI
     
  7. Автор темы
    OGDeveloper

    OGDeveloper Новичок

    Баллы:
    6
    Имя в Minecraft:
    OGDeveloper
    Спасибо. Всё получилось. Повернул координату Z на 90 градусов. upload_2019-7-9_20-58-50.png

    Теперь ещё одна проблема. Как повернуть голову что бы она смотрела ровно вперед? (Я про голову в руке)
     
  8. Абсик

    Абсик Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Abcik
    Думаю, это уже невозможно
     
  9. Автор темы
    OGDeveloper

    OGDeveloper Новичок

    Баллы:
    6
    Имя в Minecraft:
    OGDeveloper
    Возможно. Я уже сделал. Теперь как выдать предмет в левую руку? Я не нашел метода для левой руки
     
  10. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Это действительно невозможно.
    Ты просто выкручивал руку таким образом, чтобы голова в руке располагалась ровно.
    Других способов выровнять это дело нет.
    Ну, ещё можешь заспаунить второй стенд и надеть ему на голову стак головы, но это такое...
    stand.getEquipment().getItemInMainHand(stack) - для правой
    stand.getEquipment().setItemInOffHand(stack) - для левой
     
  11. Автор темы
    OGDeveloper

    OGDeveloper Новичок

    Баллы:
    6
    Имя в Minecraft:
    OGDeveloper
    Спасибо. А теперь вопрос, как можно сделать какой то предмет на плече игрока (что-бы оно было ровно), и двигался синхронно с игроком? Я пробовал арморстенд и просто через Runnable телепортировал к игроку. Но двигалось оно не синхронно.. В этом то и проблема. Как это можно ещё реализовать?
     
  12. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Если только садить стенд на игрока. Иначе такой синхронизации без модов, увы, не получить. Пролаги сервера и пинг игрока всегда будет портить малину.
     
  13. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    В теории ничего не мешает отправлять передвижение стенда при отправке передвижения игрока.
    Но на чистом бакките такого, конечно, не сделать.
     
  14. Автор темы
    OGDeveloper

    OGDeveloper Новичок

    Баллы:
    6
    Имя в Minecraft:
    OGDeveloper
    То есть нужно слушать входящие на сервер пакеты от клиента? Задержка уменьшиться?
     
  15. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    На практике увы не работает. Будет отставать на 1 тик.
     
  16. TheSkiffSailor

    TheSkiffSailor Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    TheSkiffSailor
    Рука крутится на 360, можно всё.
     
  17. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Речь шла про предмет в руке, а не про руку.
    Предмет в руке никак не повернуть.
     
  18. Cool_boy

    Cool_boy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Конечно, сомневаюсь что это будет работать, но для попугаев в 1.12 добавили методы setShoulderEntityRight и setShoulderEntityLeft. Их сбрасывает при прыжке, но думаю это можно отменить.
     
  19. TheSkiffSailor

    TheSkiffSailor Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    TheSkiffSailor
    Крутишь руку, предмет в руке находится не в одной позе, а прикрепленной к точке на руке. повернешь руку - повернешь предмет в ней.
     
  20. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Сам же и опроверг свои слова, отличная работа. Двигать предмет отдельно от руки ты не сможешь, и, например, если ты хочешь, чтобы руки стояли в определенные стороны, а предметы устремлены в другую - ты просто сфейлишься.
     

Поделиться этой страницей