Обводка entity

  • Автор темы Автор темы ilya50
  • Дата начала Дата начала

ilya50

Активный участник
Пользователь
Баллы
76
Всем привет. Как с помощью ProtocolLib обвести entity в какой либо цвет для определённого игрока ? Я говорю про эффект как от спектральной стрелы
 
Свечение - это параметр метаданных Entity. Соответственно получаешь оригинальный контейнер меты и добавляешь туда параметр glowing (в битмаску с индексом 0), после чего отправляешь обновлённую мету нужным игрокам.
В коде будет примерно так (используется PacketWrapper):
PHP:
        Entity entity = ...;
        Set<Player> viwers = ...;
        WrappedDataWatcher dataWatcher = WrappedDataWatcher.getEntityWatcher(entity);
        byte entityOptions = (byte) dataWatcher.getObject(0);
        entityOptions += 0x40; // Glowing effect
        dataWatcher.setObject(0, entityOptions);
        WrapperPlayServerEntityMetadata metaUpdate = new WrapperPlayServerEntityMetadata();
        metaUpdate.setEntityID(entity.getEntityId());
        metaUpdate.setMetadata(dataWatcher.getWatchableObjects());
        for (Player player : viwers)
            metaUpdate.sendPacket(player);
За цвет свечения отвечает цвет команды, в которой состоит, собственно, сам энтити.
Тут, надеюсь, сам разберёшься, какие пакеты нужны
 
Последнее редактирование:
Свечение - это параметр метаданных Entity. Соответственно получаешь оригинальный контейнер меты и добавляешь туда параметр glowing (в битмаску с индексом 0), после чего отправляешь обновлённую мету нужным игрокам.
В коде будет примерно так (используется PacketWrapper):
PHP:
        Entity entity = ...;
        Set<Player> viwers = ...;
        WrappedDataWatcher dataWatcher = WrappedDataWatcher.getEntityWatcher(entity);
        byte entityOptions = (byte) dataWatcher.getObject(0);
        entityOptions += 0x40; // Glowing effect
        dataWatcher.setObject(0, entityOptions);
        WrapperPlayServerEntityMetadata metaUpdate = new WrapperPlayServerEntityMetadata();
        metaUpdate.setEntityID(entity.getEntityId());
        metaUpdate.setMetadata(dataWatcher.getWatchableObjects());
        for (Player player : viwers)
            metaUpdate.sendPacket(player);
За цвет свечения отвечает цвет команды, в которой состоит, собственно, сам энтити.
Тут, надеюсь, сам разберёшься, какие пакеты нужны
Спасибо
 
Назад
Верх