1.1.0 • Published 2 years ago

@minecraft-js/nbt v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

nbt

GitHub Workflow Status GitHub npm (scoped)

Read and write NBT files. Also supports Zlib and Gzip

Documentation

Installation

Install the package:

$ npm install @minecraft-js/nbt

And then import it in your JavaScript/TypeScript file

const { parseNBT, writeNBT } = require('@minecraft-js/nbt'); // CommonJS

import { parseNBT, writeNBT } from '@minecraft-js/nbt'; // ES6

Parsing

No need to specify the compression if the file is compressed. The writer will figure it out by itself.

Note: Here I got the data by reading a file but you can get it whatever you want as long as you provide a valid buffer with valid NBT data inside.

import { readFileSync } from 'node:fs';

const buffer = readFileSync('myFile.nbt');
const parsed = parseNBT(buffer);

Writing

To write an NBT file you must pass a NBT_Compound instance to the write function.

import { writeFileSync } from 'node:fs';

const buffer = writeNBT(compound);
writeFileSync('myFile.nbt', buffer);

Benchmark

Data used: bigtest.nbt

Computer specs: Ryzen 5 3600 - 16GB at 2100MHz

--- Reading benchmarks ---
Reading | Uncompressed x 587,802 ops/sec ±0.47% (96 runs sampled)
Reading | Gzip x 15,892 ops/sec ±0.36% (90 runs sampled)
Reading | Zlib x 83,879 ops/sec ±2.72% (84 runs sampled)

--- Writing benchmarks ---
Reading | Uncompressed x 305,369 ops/sec ±0.57% (96 runs sampled)
Reading | Gzip x 62,383 ops/sec ±1.14% (92 runs sampled)
Reading | Zlib x 63,816 ops/sec ±0.67% (89 runs sampled)