Minecraft Bedrock пакеты

Рейтинг: 0Ответов: 0Опубликовано: 31.01.2023

Вот уже несколько дней пытаюсь писать прокси сервер для Minecraft Bedrock, и никак не могу разобраться как работает кодирование/декодирование серверных пакетов. Я относительно новичок в програмировании, и был бы очень рад если бы кто-то объяснил как это всё работает :/

Пока что я использую такой (не самый лучшый) JS код:

const dgram = require('dgram');
const dns = require('dns');

const client = dgram.createSocket('udp4');
const server = dgram.createSocket('udp4');

const info = {
    ip: 'server.com',
    port: 19132,
    proxyPort: 19132
};

let clientIp;
let clientPort;

dns.lookup(info.ip, (err, address, family) => {
    server.on('message', (msg, rinfo) => {
        client.send(msg, 0, msg.length, info.port, address, (err) => {
            clientIp = rinfo.address;
            clientPort = rinfo.port;
            
            console.log(msg);
        });
    });
    
    client.on('message', (msg, rinfo) => {
        server.send(msg, 0, msg.length, clientPort, clientIp, (err) => {
            console.log(msg);
        });
    });
});

server.on('listening', () => {
    const address = server.address();
    console.log(`${address.address}:${address.port}`);
});

server.bind(info.proxyPort);

Когда происходит обмен пакетами между сервером и клиентом, я получаю данные в виде бинарного массива:

<Buffer 01 00 00 00 00 00 00 16 f8 00 ff ff 00 fe fe fe fe fd fd fd fd 12 34 56 78 ff ff ff ff a3 38 e5 e0>

При использовании метода .toString() выводятся непонятные символы. Также я пытался читать эту документацию, но так и ничего не понял.

Ответы

Ответов пока нет.