MineJSv0.5.1

NBTEncoder

Source: encoder.ts:281

Binary encoding helper


Constructors

new NBTEncoder( object: Record<string, CompoundField>, ): NBTEncoder

Parameters

  • object (Record<string, CompoundField>)

Returns

NBTEncoder


Methods

encode(): Buffer<ArrayBuffer>

Start encode

Returns

  • Buffer<ArrayBuffer>

getBuffer(): Buffer<ArrayBuffer>

Returns

  • Buffer<ArrayBuffer>

wipeBuffer(): void

Returns

  • void

write( size: number, val: any, writeFunc: (buf: Buffer) => (val: any) => void, ): NBTEncoder

Write shortcut

Allocate size-byte buffer, use writeFunc to write the data, then concatenate to internal buffer;

Parameters

  • size (number)
  • val (any)
  • writeFunc ((buf: Buffer) => (val: any) => void)

Returns

writeArray( type: ByteArray | IntArray | LongArray, arr: any[], ): NBTEncoder

Write a byte / int / long array

Parameters

  • type (ByteArray | IntArray | LongArray)
  • arr (any[])

Returns

writeBoolean(val: boolean): NBTEncoder

Write boolean

Parameters

  • val (boolean)

Returns

writeByte(val: number): NBTEncoder

Write 1 byte singed integer

Parameters

  • val (number)

Returns

writeDouble(val: number): NBTEncoder

Write 8 bytes double

Parameters

  • val (number)

Returns

writeFixedSize(type: FixedSizeTag, value: any): NBTEncoder

Write a fixed-size tag to buffer

Parameters

  • type (FixedSizeTag)
  • value (any)

Returns

writeFloat(val: number): NBTEncoder

Write 4 bytes float

Parameters

  • val (number)

Returns

writeInt(val: number): NBTEncoder

Write 4 bytes singed integer

Parameters

  • val (number)

Returns

writeList(type: Tag, arr: any[]): NBTEncoder

Write a list Unsafe

Parameters

  • type (Tag)
  • arr (any[])

Returns

writeLong(val: number | bigint): NBTEncoder

Write 8 bytes singed integer

Parameters

  • val (number | bigint)

Returns

writeLpVec3(vec3: Vec3): NBTEncoder

Write LpVec3

Read this article for more information: https://minecraft.wiki/w/Java_Edition_protocol/Data_types#LpVec3

Parameters

Returns

writeNumber(val: number | bigint): NBTEncoder

Auto find the suitable tag and write it to the buffer

Parameters

  • val (number | bigint)

Returns

writeObject(obj: Record<string, any>): NBTEncoder

Write a compound

Parameters

  • obj (Record<string, any>)

Returns

writePosition(position: Vec3): NBTEncoder

Write a Position

A position packet is a 64-bit value, split into three signed integer parts:

CODE
x: 26 MSBs
z: 26 middle bits
y: 12 LSBs

Parameters

Returns

writePrefixedArray( length: number, writeFunc: (encoder: BinaryEncoder, index: number) => Buffer<ArrayBufferLike> | BinaryEncoder, ): NBTEncoder

Write a length-prefixed array with raw buffer

An array packet would look like this: [VarInt as length][N bytes of data]

Parameters

Returns

writeRaw(buf: Buffer): NBTEncoder

Parameters

  • buf (Buffer)

Returns

writeRawPrefixedArray(data: Buffer, size: number): NBTEncoder

Write a length-prefixed array with raw buffer

An array packet would look like this: [VarInt as length][N bytes of data]

Parameters

  • data (Buffer)
  • size (number) — size of the item, in byte

Returns

writeShort(val: number): NBTEncoder

Write 2 bytes singed integer

Parameters

  • val (number)

Returns

writeString(str: string): NBTEncoder

Write a string

Parameters

  • str (string)

Returns

writeTag(tag: Tag): NBTEncoder

Write buffer to buffer

Parameters

  • tag (Tag)

Returns

writeUByte(val: number): NBTEncoder

Write 1 byte unsinged integer

Parameters

  • val (number)

Returns

writeUShort(val: number): NBTEncoder

Write 2 bytes unsinged integer

Parameters

  • val (number)

Returns

writeVarInt(value: number): NBTEncoder

Write a VarInt

A VarInt packet would look like this:

[7 bits of data][1 bit indicate if the VarInt ended here]

Parameters

  • value (number)

Returns

writeVarLong(value: bigint): NBTEncoder

Write a VarLong

Similar to VarInt, A VarLong packet would look like this:

[7 bits of data][1 bit indicate if the VarLong ended here]

Parameters

  • value (bigint)

Returns