Отправка пакетов на сервер

Версия Minecraft
1.12.2
Пытаюсь с мода отправить пакеты на сервер, вот эту тему использую как основу. Скопировал все что там было, переименовал свои пакеты с 0 на 18 (S0PacketGetName -> S18PacketGetName), триггерю отправку пакета простым нажатием кнопки, стектрейс в моем коде заканчивается вот тут (именно на эту позицию идея ставит курсор)
1594791495065.png
Ошибка следующая
io.netty.handler.codec.EncoderException: java.lang.RuntimeException: Undefined discriminator for message type путь.к.S18PacketGetName in channel название-канала

п.с моя цель - отправлять сообщения с мода так, чтобы их могли обрабатывать плагины, если есть более интересные решения, с радостью почитаю про них
 
Больше кода, пожалуйста. И краш-репорт целиком.
там нет моего кода от слова совсем. все скопировано с этой темы, единственное изменение - PacketHandlerClient у меня без static методов, инстанс создается и хранится в основном классе
 
Последнее редактирование:

will0376

Токсичная личность
2,058
55
572
У меня где-то в nguard'e для ведра был способ отправки пакета...

Java:
final ByteArrayOutputStream bo = new ByteArrayOutputStream();
            final DataOutputStream output = new DataOutputStream(bo);
//Запись в output utf-стринга//
C17PacketCustomPayload cpl = new C17PacketCustomPayload("ngguard", bo.toByteArray());
            Minecraft.func_71410_x().field_71439_g.field_71174_a.func_147297_a((Packet)cpl);
Но тут srg обфа(мне лень её снимать, так что давай сам)
 
У меня где-то в nguard'e для ведра был способ отправки пакета...
в nguard
Java:
C17PacketCustomPayload payload = new C17PacketCustomPayload("канал", bos.toByteArray());
Minecraft.func_71410_x().field_71439_g.field_71174_a.func_147297_a(payload);
Без понятия кто такой этот C17PacketCustomPayload, в импорте там net.minecraft.network.play.client.C17PacketCustomPayload, на 1.12 нашел тож самое только без 17 в названии, это то что мне нужно?
 

will0376

Токсичная личность
2,058
55
572
Мой косяк, открыл версию для 1.7
Для 1.12:
Java:
ByteArrayOutputStream bo = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(bo);
PacketBuffer packetbuffer = new PacketBuffer(Unpooled.buffer());

packetbuffer.func_179250_a(bo.toByteArray());
CPacketCustomPayload cpl = new CPacketCustomPayload("ngguard", packetbuffer);
Minecraft.func_71410_x().field_71439_g.field_71174_a.func_147297_a((Packet)cpl);
 
Для тех, кто наткнется на эту тему вот код, решающий мою проблему
Клиент:
Java:
ByteArrayOutputStream bo = new ByteArrayOutputStream();
bo.write("hello".getBytes("UTF-8"));
PacketBuffer packetbuffer = new PacketBuffer(Unpooled.buffer());
packetbuffer.writeBytes(bo.toByteArray());
CPacketCustomPayload payload = new CPacketCustomPayload("channelName", packetbuffer);
Minecraft.getMinecraft().player.connection.sendPacket(payload);
На сервере простой листенер:
Java:
@Override
    public void onPluginMessageReceived(String channel, Player player, byte[] message) {
        String msg = new String(message, StandardCharsets.UTF_8);
        //do sth
    }
p.s вместо String может быть другой тип данных
 
Сверху