From d8b95d77556f8c12294e1b2328b3597430016a80 Mon Sep 17 00:00:00 2001 From: deathcap Date: Tue, 16 Feb 2016 00:31:00 -0800 Subject: [PATCH] Compress compressedNbt on write --- src/datatypes/minecraft.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/datatypes/minecraft.js b/src/datatypes/minecraft.js index 7e32898..569e5d2 100644 --- a/src/datatypes/minecraft.js +++ b/src/datatypes/minecraft.js @@ -73,14 +73,26 @@ function writeCompressedNbt(value, buffer, offset) { buffer.writeInt16BE(-1,offset); return offset+2; } - buffer.writeInt16BE(sizeOfNbt(value),offset); - return nbt.proto.write(value,buffer,offset+2,"nbt"); + const nbtBuffer = new Buffer(sizeOfNbt(value)); + nbt.proto.write(value,nbtBuffer,0,"nbt"); + + const compressedNbt = zlib.gzipSync(nbtBuffer); // TODO: async + + buffer.writeInt16BE(compressedNbt.length,offset); + compressedNbt.copy(buffer,offset+2); + return offset+2+compressedNbt.length; } function sizeOfCompressedNbt(value) { if(value==undefined) return 2; - return 2+nbt.proto.sizeOf(value,"nbt"); + + const nbtBuffer = new Buffer(sizeOfNbt(value,"nbt")); + nbt.proto.write(value,nbtBuffer,0,"nbt"); + + const compressedNbt = zlib.gzipSync(nbtBuffer); // TODO: async + + return 2+compressedNbt.length; }