Bukkit -> Forge, невозможность обработать пакеты

Короче... отправляю пакет через плагин Bukkit. Код отправки пакета:

        try {
            String full_msg = "Text(" + message + ")"; // Формируем текст сообщения
            byte[] data = full_msg.getBytes(StandardCharsets.UTF_8); // Получаем байты строки в UTF-8

            MinecraftKey channel = new MinecraftKey("chilove", "main"); // Указываем канал

            PacketContainer packet = new PacketContainer(PacketType.Play.Server.CUSTOM_PAYLOAD);
            packet.getMinecraftKeys().write(0, channel);

            ByteBuf byteBuf = Unpooled.wrappedBuffer(data);
            Object serializer = MinecraftReflection.getPacketDataSerializer(byteBuf);

            packet.getModifier().withType(ByteBuf.class).write(0, serializer);

            ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet);
            return true;
        } catch (Exception exception) {
            Bukkit.getLogger().info(ConsoleColor.ANSI_RED + "Error on TextPacket: " + ConsoleColor.ANSI_CYAN + " (" + exception.getMessage() + ")" + ConsoleColor.ANSI_RESET);
            exception.printStackTrace();
        }
        return false;
    }

Пакет сам отправляется безоговорочно... но вот обработчик на моде не работает от слова совсем. Код попытки создать обработчик:

private static final String PROTOCOL_VERSION = "1";
    public static final SimpleChannel INSTANCE = NetworkRegistry.newSimpleChannel(
            new ResourceLocation("chilove", "main"),
            () -> PROTOCOL_VERSION,
            PROTOCOL_VERSION::equals,
            PROTOCOL_VERSION::equals
    );

    public static void register() {
//        INSTANCE.registerMessage(0, TextPacket.class, TextPacket::encode, TextPacket::decode, TextPacket::handle);

        int id = 0;
        INSTANCE.messageBuilder(TextPacket.class, id++, NetworkDirection.PLAY_TO_SERVER)
                .decoder(TextPacket::decode)
                .consumerMainThread(TextPacket::handle)
                .add();
        INSTANCE.registerMessage(id++, TextPacket.class, TextPacket::encode, TextPacket::decode, TextPacket::handle);
        INSTANCE.messageBuilder(TextPacket.class, id++, NetworkDirection.PLAY_TO_CLIENT)
                .decoder(TextPacket::decode)
                .consumerMainThread(TextPacket::handle)
                .add();
    }

TextPacket.class:

public class TextPacket {
    private String text;

    public TextPacket() { }

    public TextPacket(String text) {
        this.text = text;
    }

    public String getText() {
        return text;
    }

    public static TextPacket decode(FriendlyByteBuf buffer) {
        byte[] bytes = buffer.readByteArray();
        String text = new String(bytes, StandardCharsets.UTF_8);
        ChiloveMod.LOGGER.info("Decoded text: {}", text);
        return new TextPacket(text);
    }

    public void encode(FriendlyByteBuf buffer) {
        byte[] bytes = text.getBytes(StandardCharsets.UTF_8);
        buffer.writeByteArray(bytes);
    }

    public void handle(Supplier<NetworkEvent.Context> ctx) {
        ctx.get().enqueueWork(() -> {
            ChiloveMod.LOGGER.info("Received message: {}", text);
        });
        ctx.get().setPacketHandled(true);
    }
}

Перепробовал ОЧЕНЬ много вариантов, и в интернете перерыл все что можно по поводу SimpleImpl. Обычно, при отправке пакета получаю в консоли 2 ошибки:

  • [15:15:32] [Netty Client IO #1/ERROR] [ne.mi.ne.si.IndexedMessageCodec/SIMPLENET]: Received invalid discriminator byte 84 on channel chilove:main
  • [15:15:32] [Render thread/WARN] [minecraft/ClientPacketListener]: Unknown custom packet identifier: chilove:main

Не знаю, что уже делать, перерыл реально всё что можно. Прошу помощи... Ах да, версия 1.19.3


Ответы (0 шт):