UNPKG

@rlqd/minecraft-server-util

Version:

A Node.js library for Minecraft servers that can retrieve status, perform queries, and RCON into servers.

37 lines (26 loc) 729 B
export async function readVarInt(readByte: () => Promise<number>): Promise<number> { let numRead = 0; let result = 0; let read: number, value: number; do { if (numRead > 4) throw new Error('VarInt exceeds data bounds'); read = await readByte(); value = (read & 0b01111111); result |= (value << (7 * numRead)); numRead++; if (numRead > 5) throw new Error('VarInt is too big'); } while ((read & 0b10000000) != 0); return result; } export function writeVarInt(value: number): Buffer { let buf = Buffer.alloc(0); do { let temp = value & 0b01111111; value >>>= 7; if (value != 0) { temp |= 0b10000000; } buf = Buffer.concat([buf, Buffer.from([temp])]); } while (value != 0); return buf; }