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

Помогите Отслеживание нажатия WASD сидя в арморстэнде

Тема в разделе "Разработка плагинов для новичков", создана пользователем xflyiwnl, 19 окт 2022.

Статус темы:
Закрыта.
  1. Автор темы
    xflyiwnl

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

    Баллы:
    66
    Имя в Minecraft:
    xflyiwnl
    Ну так вот, я посадил игрока на арморстэнд и теперь мне надо поворачивать арморстэнд в лево и право в зависимости от нажатой клавиши. С поворачиванием всё понятно, но как мне отследить WASD? Погуглив узнал, что делается с помощью ProtocolLib, но без нужного мне кода.
     
  2. Автор темы
    xflyiwnl

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

    Баллы:
    66
    Имя в Minecraft:
    xflyiwnl
    Что думаете насчёт этого?

    Код:
    protocolManager = ProtocolLibrary.getProtocolManager();
            protocolManager.addPacketListener(
                    new PacketAdapter(Main.instance, ListenerPriority.NORMAL, PacketType.Play.Client.STEER_VEHICLE) {
    
                        @Override
                        public void onPacketReceiving(PacketEvent event) {
                            final Player player = event.getPlayer();
                            if (event.getPacketType() == PacketType.Play.Client.STEER_VEHICLE
                                    && player.getVehicle() != null) {
                                final PacketContainer packet = event.getPacket();
    
    
         final float right = event.getPacket().getFloat().readSafely(0); // positive means right, negative is left
         final float forward = event.getPacket().getFloat().readSafely(1); // positive means forward, negative is backwards
         try {
           if (event.getPacket().getBooleans().readSafely(1)) {
             //the player used shift and is trying to get out of the vehicle
           }
           if (event.getPacket().getBooleans().readSafely(0)) {
            //player has pressed space
           }
         } catch (Error | Exception e45) {
         }
    
                            }
                        }
    
                    });
    
        }
     
  3. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Последнее редактирование: 21 окт 2022
  4. Автор темы
    xflyiwnl

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

    Баллы:
    66
    Имя в Minecraft:
    xflyiwnl
  5. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
  6. Автор темы
    xflyiwnl

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

    Баллы:
    66
    Имя в Minecraft:
    xflyiwnl
    Спасибо, еще хотел спросить. Его же можно прослушивать, даже если игрок не сидит в vehicle?

    У меня кастом машины будут
     
    Последнее редактирование: 22 окт 2022
  7. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Клиент должен знать, что он сидит на чем-либо, иначе этот пакет клиентом отсылаться не будет
     
  8. Автор темы
    xflyiwnl

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

    Баллы:
    66
    Имя в Minecraft:
    xflyiwnl
    Главное, чтобы игрок сидел?
     
  9. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    С точки зрения клиента он должен сидеть на сущности, да.
    Как ты это сделаешь на стороне сервера - решать тебе. Можно через баккит апи заспаунить условную стрелу и посадить на неё игрока. Можно пакетами. Короче как удобно
     
Статус темы:
Закрыта.

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