From e48f146528795cc7d003ea02b8fe270a3c8c14b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filiph=20Sandstr=C3=B6m?= Date: Wed, 18 Jan 2017 09:26:56 +0100 Subject: [PATCH] Add writePacket and writeData. --- src/createServer.js | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/src/createServer.js b/src/createServer.js index 516d548..90a6cdd 100644 --- a/src/createServer.js +++ b/src/createServer.js @@ -44,7 +44,7 @@ function createServer(options, encryption) { server.on('connection', function(client) { client.receiveCounter = 0; client.sendCounter = 0; - client.encryptionEnabled = encryption ? encryption : false; + client.encryptionEnabled = encryption ? true : false; let proto = new ProtoDef(); proto.addTypes(require('./datatypes/minecraft')); @@ -60,22 +60,45 @@ function createServer(options, encryption) { packets.forEach(packet => client.readEncapsulatedPacket(Buffer.concat([new Buffer([0xfe]), packet]))); }); - client.writeMCPE = (name, params) => { - if (client.encryptionEnabled) + // client.writePacket (string, object) + // Send data to the client + // + // string: packet name + // object: packet data + client.writeMCPE = function (name, params) { + if (client.encryptionEnabled) { client.mcpePacketSerializer.write({ name, params }); - else + } else { client.writeEncapsulated('mcpe', { name, params }); + } }; - client.writeBatch = function(packets) { + client.writePacket = client.writeMCPE; + + // client.writeData (array) + // Send data to the client + // + // array: packets to send + client.writeBatch = function (packets) { const payload = zlib.deflateSync(batchProto.createPacketBuffer('insideBatch', packets.map(packet => client.mcpePacketSerializer.createPacketBuffer(packet)))); - client.writeMCPE('batch', { + client.writePacket('batch', { payload: payload }); }; + client.writeData = client.writeBatch; - client.on('game_login', (packet) => { + // client.writeAll (string, object) + // Send data to the client + // + // string: packet name + // object: packet data + client.writeAll = function (name, data) { + return; //TODO + server._writeAll(name, data); + }; + + client.on('game_login', function (packet) { try { let dataProto = new ProtoDef(); dataProto.addType('data_chain', ['container', [{ @@ -91,6 +114,7 @@ function createServer(options, encryption) { }]]); //FIXME: Xbox & Non-Xbox support + console.log(packet); let body = dataProto.parsePacketBuffer('data_chain', zlib.inflateSync(packet.body)), chain = null, decode = null, @@ -120,4 +144,4 @@ function createServer(options, encryption) { return server; } -module.exports = createServer; +module.exports = createServer; \ No newline at end of file