# @minecraft-js/nbt

> Read and write NBT files. Also supports Zlib and Gzip

Latest version **1.1.0** (published 2022-08-31) · MIT license · 0 weekly downloads

## Install

```sh
npm install @minecraft-js/nbt
pnpm add @minecraft-js/nbt
yarn add @minecraft-js/nbt
bun add @minecraft-js/nbt
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.0 |
| Published | 2022-08-31 |
| First published | 2022-08-31 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=18.x |
| Dependencies | 1 |
| Unpacked size | 713.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | RichardDorian |
| Maintainers | richarddorian |
| Keywords | minecraftjs |

## Links

- npm: https://www.npmjs.com/package/@minecraft-js/nbt
- Repository: https://github.com/MinecraftJS/nbt
- Homepage: https://github.com/MinecraftJS/nbt#readme
- Issues: https://github.com/MinecraftJS/nbt/issues
- npm.io page: https://npm.io/package/@minecraft-js/nbt

## Dependencies (1)

- [@minecraft-js/bufwrapper](https://npm.io/package/@minecraft-js/bufwrapper.md) ^1.4.6

## Recent versions

- 1.1.0 (latest) — 2022-08-31
- 1.0.0 — 2022-08-31

## README

# nbt

![GitHub Workflow Status](https://img.shields.io/github/workflow/status/MinecraftJS/nbt/Build?style=for-the-badge)
![GitHub](https://img.shields.io/github/license/MinecraftJS/nbt?style=for-the-badge)
![npm (scoped)](https://img.shields.io/npm/v/@minecraft-js/nbt?style=for-the-badge)

Read and write NBT files. Also supports Zlib and Gzip

# Documentation

## Installation

Install the package:

```bash
$ npm install @minecraft-js/nbt
```

And then import it in your JavaScript/TypeScript file

```ts
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._

```js
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.

```js
import { writeFileSync } from 'node:fs';

const buffer = writeNBT(compound);
writeFileSync('myFile.nbt', buffer);
```

# Benchmark

Data used: [bigtest.nbt](https://wiki.vg/NBT#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)
```

---
_Source: https://npm.io/package/@minecraft-js/nbt · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
