Java Réception packet 2.51

Inscrit
27 Juin 2023
Messages
1
Reactions
0
#1
Bonjour je suis actuuellement en train de code un emulateur en java j'ai commencer par test avec la version 2.38 je reçois bien les packets, mais quand je test avec une version 2.51 je ne reçois pas les packets je reçois des opcode incohérent en regardant dans le client je vois un int (instance) qui n'est pas présent dans la 2.38 apres plusieurs test je n'arrive toujours pas a reçevoir les packets voici mon code

Réception:
  protected byte[] readMessage(InputStream dataStream) throws IOException {
        
        int HIGH_HEADER_LENGTH = 2;

        byte[] fullMessageBuffer = new byte[0];
        int totalBytesRead = 0;
        boolean fullMessageHasBeenRead = false;
        int messageTypeLen = 0;
        int messageLength = -1;

        // what we read in an iteration. Its size fluctuates.
        byte[] messagePartBuffer = new byte[HIGH_HEADER_LENGTH];

        // next number of bytes to read
        int nextChunkSize = 0;

        while (!fullMessageHasBeenRead) {
            int bytesRead = dataStream.read(messagePartBuffer);
            if (bytesRead == -1) {
                break;
            }

            // data is D2 high header
            if (totalBytesRead == 0) {
                messageTypeLen = messagePartBuffer[1] & 0b00000011;
                nextChunkSize = messageTypeLen;

            }


            // data is D2 messageLength
            else if (totalBytesRead == HIGH_HEADER_LENGTH) {
                switch (messageTypeLen) {
                    case 0:
                        messageLength = 0;
                        break;
                    case 1:
                        messageLength = messagePartBuffer[0];
                        break;
                    case 2:
                        messageLength = messagePartBuffer[0] << 8 | messagePartBuffer[1];
                        break;
                    case 3:
                        messageLength = messagePartBuffer[0] << 16 | messagePartBuffer[1] << 8 | messagePartBuffer[0];
                }
                //
                nextChunkSize = messageLength;
                logger.info("message lenght : " + messageTypeLen);
            }
            // else data is message content. We just add it to the result buffer.

            totalBytesRead += bytesRead;
            if (messageLength != -1 && totalBytesRead == messageLength + messageTypeLen + HIGH_HEADER_LENGTH) {
                fullMessageHasBeenRead = true;
            }

            // add bytes read to full message
            byte[] newFullMessageBuffer = new byte[fullMessageBuffer.length + bytesRead];
            System.arraycopy(fullMessageBuffer, 0, newFullMessageBuffer, 0, fullMessageBuffer.length);
            System.arraycopy(messagePartBuffer, 0, newFullMessageBuffer, fullMessageBuffer.length, bytesRead);
            fullMessageBuffer = newFullMessageBuffer;

            messagePartBuffer = new byte[nextChunkSize];
        }
        return fullMessageBuffer;
    }
Merci d'avance à tous ( Si Jamais quelqu'un aurais un client 2.51 ou + qui est patché je suis preneur)
 
Haut Bas