Комуникация Forge и Bukkit

Версия Minecraft
1.12.2
API
Forge
Всем хорошего дня, уже какой час занимаюсь анальной терапией с forge и bukkit plugin, мне нужно из бакита получить определенный стринг и инт,
PacketAPI пробовал, с ним не получилось. Тут где-то прикреплю мои варианты попыток, а и версия 1.12.2

Forge:

java:
NetworkRegistry.INSTANCE.newEventDrivenChannel("redutills").register(this);

Java:
    @SubscribeEvent
    public void onPacket(FMLNetworkEvent.ClientCustomPacketEvent e) {

        ByteBuf buf = e.getPacket().payload();
        System.out.println(Arrays.toString(buf.array()));
        //Minecraft.getMinecraft().player.sendChatMessage(data);
      //  System.out.println(data);
    //String data = ByteBufUtils.readUTF8String(event.getPacket().payload()); 
    //Minecraft.getMinecraft().player.sendChatMessage(data);
       // String data = new String(e.getPacket().payload().array());
      //  Minecraft.getMinecraft().player.sendChatMessage(data);
    }



Bukkit plugin:

Java:
NmsManager.sendPluginMessage(event.getPlayer(), TimerPlugin.CHANNEL_NAME, "REGISTER".getBytes(TimerPlugin.UTF_8_CHARSET));


Java:
    public static void sendPluginMessage(Player player, String channel, byte[] message) {
        try {
            Object packet;

            // 1.13+
            if (NmsManager.minecraftKeyClass != null) {
                Object minecraftKey = NmsManager.minecraftKeyConstructor.newInstance("redutills");
                Object byteBuf = NmsManager.wrappedBufferMethod.invoke(null, (Object) message);
                Object packetDataSerializer = NmsManager.packetDataSerializerConstructor.newInstance(byteBuf);

                packet = NmsManager.packetPlayOutCustomPayloadConstructor.newInstance(minecraftKey, packetDataSerializer);
            } else if (NmsManager.packetDataSerializerClass != null) { // 1.8+
                Object byteBuf = NmsManager.wrappedBufferMethod.invoke(null, (Object) message);
                Object packetDataSerializer = NmsManager.packetDataSerializerConstructor.newInstance(byteBuf);

                packet = NmsManager.packetPlayOutCustomPayloadConstructor.newInstance(channel, packetDataSerializer);
            } else { // 1.7
                // Work our magic to make the packet
                packet = NmsManager.packetPlayOutCustomPayloadConstructor.newInstance(channel, message);
            }

            // Work our magic to send the packet
            Object nmsPlayer = NmsManager.getHandleMethod.invoke(player);
            Object playerConnection = NmsManager.playerConnectionField.get(nmsPlayer);
            NmsManager.sendPacketMethod.invoke(playerConnection, packet);
        } catch (Exception ex) {
            NmsManager.plugin.getLogger().severe("");
            ex.printStackTrace();
        }
    }

Очень спасибо заранее если кто-то поможет
 
Решение
1) зачем ты используешь nms? у тебя же ведро. заюзай его прелести...
2)
клиент: регистрация в мейне
Java:
FMLEventChannel nevent = NetworkRegistry.INSTANCE.newEventDrivenChannel("канал");
        nevent.register(new PacketHandler());
Java:
public class PacketHandler {
    @SubscribeEvent
    public void onClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event) {
        if (event.getPacket().channel().equals("канал")) {
            try {
                ByteBuf e = event.getPacket().payload();
                int bytesCount = e.readableBytes();
                byte[] imageBytes = new byte[bytesCount];
                for (int i = 0; i < bytesCount; ++i)
                    imageBytes[i] = e.readByte();
             
                String[]...

will0376

Токсичная личность
2,072
55
584
1) зачем ты используешь nms? у тебя же ведро. заюзай его прелести...
2)
клиент: регистрация в мейне
Java:
FMLEventChannel nevent = NetworkRegistry.INSTANCE.newEventDrivenChannel("канал");
        nevent.register(new PacketHandler());
Java:
public class PacketHandler {
    @SubscribeEvent
    public void onClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event) {
        if (event.getPacket().channel().equals("канал")) {
            try {
                ByteBuf e = event.getPacket().payload();
                int bytesCount = e.readableBytes();
                byte[] imageBytes = new byte[bytesCount];
                for (int i = 0; i < bytesCount; ++i)
                    imageBytes[i] = e.readByte();
             
                String[] data = new String(imageBytes).split(";");
                //работаешь с data, разделитель ";"(Можешь и своё сделать.)
         
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }
}
^ вырезка из моего мода, который я писал в прошлом году... Так что оно рабочее.(часть ведра ищи в инете, ибо я под банжу писал)
 
Сверху