Слушатель пакетов 1.12

Версия Minecraft
1.12.2
355
2
17
Добро, как нынче на 1.12 слушать отдельный канал с пакетами? Максимально простым способом, т.к пакеты с плагинов приходят.

Раньше регистрировал так

Java:
FMLEventChannel channel = NetworkRegistry.INSTANCE.newEventDrivenChannel("TestChannel");
channel.register(new NetworkHandler());

И уже там получал dis

Java:
    @SubscribeEvent
    public void onClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event)
    {
        try
        {
            ByteArrayInputStream inputStream = new ByteArrayInputStream(event.getPacket().payload().array());
            DataInputStream dis = new DataInputStream(inputStream);
        } catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }

Но на 1.12 жалуется. Нагуглил лишь инфу что массива там нынче нет и заранее мол нужно проверять на hasArray(), но это собственно никак не помогло.
java.lang.UnsupportedOperationException: direct buffer
 

tox1cozZ

aka Agravaine
8,455
598
2,892
ByteBufUtils.readUTF8String
Что такое строка? Массив символов. Из чего состоит массив? Из количества элементов и собственно элементов. Думаю несложно догадаться как сериализовать/десериализовать этот объект.
 
355
2
17
Ну погоду это никак не поменяло, этот рид читает пустоту.
С сервера отправляю так:

Java:
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        DataOutputStream out = new DataOutputStream(bytes);

        out.writeUTF("Info");

        player.sendPluginMessage(Accessories.INSTANCE, "TestChannel", bytes.toByteArray());


Опять же, игра версий. На версии 1.7.10 все работает, на 1.12 этот ByteBuf пустой приходит.
 
355
2
17
Значит DataOutputStream сериализует строку по-другому. Напиши свой метод тогда
Может мне еще свой netty написать?
Обернул все в IMessage и все отлично читает. Но как по мне это какой-то костыльный вариант, когда особо нет нужды в разбитии на отдельные пакеты.
 
Сверху