Перейти к содержанию

Помогите с ProtocolLib entity metadata: серилизация ChatComponent


NotDen

Рекомендуемые сообщения

В теме 3 сообщения

Создавал ентити Text_display, не и столкнулся с проблемой, что как запихнуть компонент в Метадату.
Были 2 нерабочих варианта:

new WrappedDataValue(23, WrappedDataWatcher.Registry.get(String.class), GsonComponentSerializer.gson().serialize( <некий компонент> )), /* text */
new WrappedDataValue(23, WrappedDataWatcher.Registry.getChatComponentSerializer(), WrappedChatComponent.fromJson(GsonComponentSerializer.gson().serialize( <некий компонент> ))), /* text */

В первом случаи просто не работает, во втором ошибка WrappedChatComponent cannot be cast to class net.minecraft.network.chat.IChatBaseComponent
Если использовать WrappedChatComponent.class в Registry.get то ошибка No serializer found for class WrappedChatComponent

Вопрос: как это заставить работать?
Полный код:

Спойлер
PacketContainer packet = new PacketContainer(PacketType.Play.Server.ENTITY_METADATA);
packet.getIntegers().write(0, data.displayId());
{
   List<WrappedDataValue> vals = List.of(
         new WrappedDataValue(0, WrappedDataWatcher.Registry.get(Byte.class), (byte)0), /*  */
         new WrappedDataValue(4, WrappedDataWatcher.Registry.get(Boolean.class), true), /* is silent */
         new WrappedDataValue(5, WrappedDataWatcher.Registry.get(Boolean.class), true), /* no gravity */
         new WrappedDataValue(7, WrappedDataWatcher.Registry.get(Integer.class), 0), /* frozen ticks */

         new WrappedDataValue(8, WrappedDataWatcher.Registry.get(Integer.class), 1), /* interpolation delay */
         new WrappedDataValue(9, WrappedDataWatcher.Registry.get(Integer.class), 1), /* interpolation duration */
         new WrappedDataValue(10, WrappedDataWatcher.Registry.get(Integer.class), 1), /* interpolation duration */
         new WrappedDataValue(11, WrappedDataWatcher.Registry.get(Vector3f.class), new Vector3f(0f, -0.1f, 0f)), /* translation */
         new WrappedDataValue(12, WrappedDataWatcher.Registry.get(Vector3f.class), new Vector3f(1f, 1f, 1f)), /* scale */
         new WrappedDataValue(13, WrappedDataWatcher.Registry.get(Quaternionf.class), new Quaternionf(0f, 0f, 0f, 0f)), /* rotation left */
         new WrappedDataValue(14, WrappedDataWatcher.Registry.get(Quaternionf.class), new Quaternionf(0f, 0f, 0f, 0f)), /* rotation right */
         new WrappedDataValue(15, WrappedDataWatcher.Registry.get(Byte.class), (byte)3), /* billboard */
         new WrappedDataValue(16, WrappedDataWatcher.Registry.get(Integer.class), -1), /* brightness */
         new WrappedDataValue(17, WrappedDataWatcher.Registry.get(Float.class), 0f), /* view range */
         new WrappedDataValue(18, WrappedDataWatcher.Registry.get(Float.class), 0f), /* shadow radius */
         new WrappedDataValue(19, WrappedDataWatcher.Registry.get(Float.class), 0f), /* shadow strength */
         new WrappedDataValue(20, WrappedDataWatcher.Registry.get(Float.class), 1f), /* width */
         new WrappedDataValue(21, WrappedDataWatcher.Registry.get(Float.class), 1f), /* height */
         new WrappedDataValue(22, WrappedDataWatcher.Registry.get(Integer.class), -1), /* Glow color override */

         new WrappedDataValue(23, WrappedDataWatcher.Registry.getChatComponentSerializer(), WrappedChatComponent.fromJson(GsonComponentSerializer.gson().serialize( <некий компонент> ))), /* text */
         new WrappedDataValue(24, WrappedDataWatcher.Registry.get(Integer.class), 200), /* line width */
         new WrappedDataValue(25, WrappedDataWatcher.Registry.get(Integer.class), 0x40000000), /* BG color */
         new WrappedDataValue(26, WrappedDataWatcher.Registry.get(Byte.class), (byte)-1), /* text opacity */
         new WrappedDataValue(27, WrappedDataWatcher.Registry.get(Byte.class), (byte)(0x04 | 0x08)) /* default BG color | align center */
   );
   packet.getDataValueCollectionModifier().write(0, vals);
}
protocolManager.sendServerPacket(packetEvent.getPlayer(), packet);

Да, много лишнего
Но покрайнемере сущность заспанить получилось. Проверял через PacketType.Play.Server.CAMERA

 

Ссылка на комментарий
Поделиться на другие сайты

  • NotDen изменил название на Помогите с ProtocolLib entity metadata: серилизация ChatComponent
3 часа назад, Shomen сказал:

тебе с такими вопросами на bukkit.ru : /

К сожалению, заметил раньше.

Хотя решение уже вроде нашёл, но это не точно

Ссылка на комментарий
Поделиться на другие сайты

  • NotDen закрыл тема
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...