@bdsx/snbt
v1.1.2
Published
Provides API support for Stringified Named Binary Tag (SNBT).
Downloads
16
Readme
This plugin itself does not do anything, it provides an API for developers to make scripts to save and load NBT data with strings.
Formats of SNBT are referenced from https://minecraft.fandom.com/wiki/NBT_format.
Convert NBT into SNBT
/** Converts a Named Binary Tag (NBT) tag to a Stringified Named Binary Tag (SNBT) string. */
function SNBT.stringify(tag: Tag, indent?: string | number | undefined): string
import { SNBT } from "@bdsx/snbt";
const nbt = CompoundTag.allocateWith({
"byte": ByteTag.allocateWith(1),
"short": ShortTag.allocateWith(2),
"int": IntTag.allocateWith(3),
"long": Int64Tag.allocateWith(SNBT.Utils.makeBin64fromNumbericString("4")),
"float": FloatTag.allocateWith(5.5),
"double": DoubleTag.allocateWith(6.6),
"byteArray": ByteArrayTag.allocateWith(new Uint8Array([7, 8, 9])),
"string": StringTag.allocateWith("test"),
"list": ListTag.allocateWith([ListTag.allocateWith([]), ListTag.allocateWith([])]),
"compound": CompoundTag.allocateWith({
"weird name like this \"": StringTag.allocateWith("\"or weird value like this"),
"'or this": StringTag.allocateWith("'or this'"),
}),
"intArray": IntArrayTag.allocateWith(new Int32Array([11, 12, 13])),
});
const snbt = SNBT.stringify(nbt, 4);
{
'byte': 1b,
'byteArray': [B;
7b,
8b,
9b
],
'compound': {
"'or this": "'or this'",
'weird name like this "': '"or weird value like this'
},
'double': 6.6d,
'float': 5.5f,
'int': 3,
'intArray': [I;
11,
12,
13
],
'list': [
[],
[]
],
'long': 4L,
'short': 2s,
'string': 'test'
}
Convert NBT into SNBT
/** Converts a Stringified Named Binary Tag (SNBT) string into a Named Binary Tag (NBT) tag. */
function SNBT.parse(text: string): Tag
import { SNBT } from "@bdsx/snbt";
const nbt = SNBT.parse(`{'byte':1b,'byteArray':[B;7b,8b,9b],'compound':{"'or this":"'or this'",'weird name like this "':'"or weird value like this'},'double':6.6d,'float':5.5f,'int':3,'intArray':[I;11,12,13],'list':[[],[]],'long':4L,'short':2s,'string':'test'}`);
CompoundTag {
'byte' => ByteTag 1,
'byteArray' => ByteArrayTag Uint8Array [ 7, 8, 9 ],
'compound' => CompoundTag {
"'or this" => StringTag "'or this'",
'weird name like this "' => StringTag '"or weird value like this' },
'double' => DoubleTag 6.6,
'float' => FloatTag 5.5,
'int' => IntTag 3,
'intArray' => IntArrayTag Int32Array [ 11, 12, 13 ],
'list' => ListTag [ ListTag [], ListTag [] ],
'long' => LongTag '4',
'short' => ShortTag 2,
'string' => StringTag 'test' }