Skip to content

Repository files navigation

bannerbanner

Java Implementation for Minecraft Java Edition NBT Format.

LICENSERELEASE


This library is Java implementation of the NBT protocol for Minecraft Java Edition. This library provides functionality for handling Named Binary Tag (NBT) data, which is a data interchange format used by Minecraft.

The NBT specification defines 13 different types of tags:

Tag classIDPayload
End00 bytes
Byte11 byte / 8 bits, signed
Short22 bytes / 16 bits, signed, big endian
Int34 bytes / 32 bits, signed, big endian
Long48 bytes / 64 bits, signed, big endian
Float54 bytes / 32 bits, signed, big endian, IEEE 754-2008, binary32
Double68 bytes / 64 bits, signed, big endian, IEEE 754-2008, binary64
ByteArray7A signed integer (4 bytes) size, then the bytes comprising an array of length size.
String8An unsigned short (2 bytes) payload length, then a UTF-8 string resembled by length bytes.
List9A byte denoting the tag ID of the list's contents, followed by the list's length as a signed integer (4 bytes), then length number of payloads that correspond to the given tag ID.
Compound10Fully formed tags, followed by a TAG_End.
IntArray11A signed integer size, then size number of TAG_Int's payloads.
LongArray12A signed integer size, then size number of TAG_Long's payloads.
  • Every valid NBT structure starts with a compound tag, known as the root compound. All other elements within the NBT structure are nested within this root compound.

  • The End tag serves to mark the end of either a compound or an empty list tag within the NBT structure.

Features

  • Comprehensive support for all NBT tags
  • Lightweight and intuitive
  • Supports new changes introduced in 1.20.2 version of Minecraft
  • Supports SNBT serialization and deserialization, including boolean types
  • Supports compression
  • Easily expandable visitor API

SNBT Format

Library supports SNBT (Stringified NBT) format defined by Mojang, utilized to represent NBT tags as human-readable strings. This is widely used for NBT user input.

Example of SNBT format:

{Fire:10,Leashed:1b,FallFlying:0b,Rotation:[60F,15F],Leash:{X:12,Y:15,Z:1}}

Importing

Gradle

repositories {
maven {
name ="machinemcRepositoryReleases"
url = uri("https://repo.machinemc.org/releases")
}
}
dependencies {
implementation("org.machinemc:nbt-core:VERSION")
// for the SNBT parser
implementation("org.machinemc:nbt-parser:VERSION")
}

Maven

<repositories>
<repository>
<id>machinemc-repository-releases</id>
<name>MachineMC Repository</name>
<url>https://repo.machinemc.org/releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-core</artifactId>
<version>VERSION</version>
</dependency>
<!-- for the SNBT parser -->
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-parser</artifactId>
<version>VERSION</version>
</dependency>
</dependencies>

Example usage

The following code snippet shows how to create NBTCompound:

NBTCompoundcompound = newNBTCompound();
compound.set("hello", "there");
compound.set("test", 10);
compound.set("thing", -5.2);
compound.set("ints", newint[]{1, 2, 3});

More examples can be found in the unit tests.

License

NBT is free software licensed under the MIT license.

About

Data handlers for Minecraft's NBT format

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - MachineMC/NBT: Data handlers for Minecraft's NBT format · GitHub
Skip to content

Repository files navigation

bannerbanner

Java Implementation for Minecraft Java Edition NBT Format.

LICENSERELEASE


This library is Java implementation of the NBT protocol for Minecraft Java Edition. This library provides functionality for handling Named Binary Tag (NBT) data, which is a data interchange format used by Minecraft.

The NBT specification defines 13 different types of tags:

Tag classIDPayload
End00 bytes
Byte11 byte / 8 bits, signed
Short22 bytes / 16 bits, signed, big endian
Int34 bytes / 32 bits, signed, big endian
Long48 bytes / 64 bits, signed, big endian
Float54 bytes / 32 bits, signed, big endian, IEEE 754-2008, binary32
Double68 bytes / 64 bits, signed, big endian, IEEE 754-2008, binary64
ByteArray7A signed integer (4 bytes) size, then the bytes comprising an array of length size.
String8An unsigned short (2 bytes) payload length, then a UTF-8 string resembled by length bytes.
List9A byte denoting the tag ID of the list's contents, followed by the list's length as a signed integer (4 bytes), then length number of payloads that correspond to the given tag ID.
Compound10Fully formed tags, followed by a TAG_End.
IntArray11A signed integer size, then size number of TAG_Int's payloads.
LongArray12A signed integer size, then size number of TAG_Long's payloads.
  • Every valid NBT structure starts with a compound tag, known as the root compound. All other elements within the NBT structure are nested within this root compound.

  • The End tag serves to mark the end of either a compound or an empty list tag within the NBT structure.

Features

  • Comprehensive support for all NBT tags
  • Lightweight and intuitive
  • Supports new changes introduced in 1.20.2 version of Minecraft
  • Supports SNBT serialization and deserialization, including boolean types
  • Supports compression
  • Easily expandable visitor API

SNBT Format

Library supports SNBT (Stringified NBT) format defined by Mojang, utilized to represent NBT tags as human-readable strings. This is widely used for NBT user input.

Example of SNBT format:

{Fire:10,Leashed:1b,FallFlying:0b,Rotation:[60F,15F],Leash:{X:12,Y:15,Z:1}}

Importing

Gradle

repositories {
maven {
name ="machinemcRepositoryReleases"
url = uri("https://repo.machinemc.org/releases")
}
}
dependencies {
implementation("org.machinemc:nbt-core:VERSION")
// for the SNBT parser
implementation("org.machinemc:nbt-parser:VERSION")
}

Maven

<repositories>
<repository>
<id>machinemc-repository-releases</id>
<name>MachineMC Repository</name>
<url>https://repo.machinemc.org/releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-core</artifactId>
<version>VERSION</version>
</dependency>
<!-- for the SNBT parser -->
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-parser</artifactId>
<version>VERSION</version>
</dependency>
</dependencies>

Example usage

The following code snippet shows how to create NBTCompound:

NBTCompoundcompound = newNBTCompound();
compound.set("hello", "there");
compound.set("test", 10);
compound.set("thing", -5.2);
compound.set("ints", newint[]{1, 2, 3});

More examples can be found in the unit tests.

License

NBT is free software licensed under the MIT license.

About

Data handlers for Minecraft's NBT format

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - MachineMC/NBT: Data handlers for Minecraft's NBT format · GitHub
Skip to content

Repository files navigation

bannerbanner

Java Implementation for Minecraft Java Edition NBT Format.

LICENSERELEASE


This library is Java implementation of the NBT protocol for Minecraft Java Edition. This library provides functionality for handling Named Binary Tag (NBT) data, which is a data interchange format used by Minecraft.

The NBT specification defines 13 different types of tags:

Tag classIDPayload
End00 bytes
Byte11 byte / 8 bits, signed
Short22 bytes / 16 bits, signed, big endian
Int34 bytes / 32 bits, signed, big endian
Long48 bytes / 64 bits, signed, big endian
Float54 bytes / 32 bits, signed, big endian, IEEE 754-2008, binary32
Double68 bytes / 64 bits, signed, big endian, IEEE 754-2008, binary64
ByteArray7A signed integer (4 bytes) size, then the bytes comprising an array of length size.
String8An unsigned short (2 bytes) payload length, then a UTF-8 string resembled by length bytes.
List9A byte denoting the tag ID of the list's contents, followed by the list's length as a signed integer (4 bytes), then length number of payloads that correspond to the given tag ID.
Compound10Fully formed tags, followed by a TAG_End.
IntArray11A signed integer size, then size number of TAG_Int's payloads.
LongArray12A signed integer size, then size number of TAG_Long's payloads.
  • Every valid NBT structure starts with a compound tag, known as the root compound. All other elements within the NBT structure are nested within this root compound.

  • The End tag serves to mark the end of either a compound or an empty list tag within the NBT structure.

Features

  • Comprehensive support for all NBT tags
  • Lightweight and intuitive
  • Supports new changes introduced in 1.20.2 version of Minecraft
  • Supports SNBT serialization and deserialization, including boolean types
  • Supports compression
  • Easily expandable visitor API

SNBT Format

Library supports SNBT (Stringified NBT) format defined by Mojang, utilized to represent NBT tags as human-readable strings. This is widely used for NBT user input.

Example of SNBT format:

{Fire:10,Leashed:1b,FallFlying:0b,Rotation:[60F,15F],Leash:{X:12,Y:15,Z:1}}

Importing

Gradle

repositories {
maven {
name ="machinemcRepositoryReleases"
url = uri("https://repo.machinemc.org/releases")
}
}
dependencies {
implementation("org.machinemc:nbt-core:VERSION")
// for the SNBT parser
implementation("org.machinemc:nbt-parser:VERSION")
}

Maven

<repositories>
<repository>
<id>machinemc-repository-releases</id>
<name>MachineMC Repository</name>
<url>https://repo.machinemc.org/releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-core</artifactId>
<version>VERSION</version>
</dependency>
<!-- for the SNBT parser -->
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-parser</artifactId>
<version>VERSION</version>
</dependency>
</dependencies>

Example usage

The following code snippet shows how to create NBTCompound:

NBTCompoundcompound = newNBTCompound();
compound.set("hello", "there");
compound.set("test", 10);
compound.set("thing", -5.2);
compound.set("ints", newint[]{1, 2, 3});

More examples can be found in the unit tests.

License

NBT is free software licensed under the MIT license.

About

Data handlers for Minecraft's NBT format

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - MachineMC/NBT: Data handlers for Minecraft's NBT format · GitHub
Skip to content

Repository files navigation

bannerbanner

Java Implementation for Minecraft Java Edition NBT Format.

LICENSERELEASE


This library is Java implementation of the NBT protocol for Minecraft Java Edition. This library provides functionality for handling Named Binary Tag (NBT) data, which is a data interchange format used by Minecraft.

The NBT specification defines 13 different types of tags:

Tag classIDPayload
End00 bytes
Byte11 byte / 8 bits, signed
Short22 bytes / 16 bits, signed, big endian
Int34 bytes / 32 bits, signed, big endian
Long48 bytes / 64 bits, signed, big endian
Float54 bytes / 32 bits, signed, big endian, IEEE 754-2008, binary32
Double68 bytes / 64 bits, signed, big endian, IEEE 754-2008, binary64
ByteArray7A signed integer (4 bytes) size, then the bytes comprising an array of length size.
String8An unsigned short (2 bytes) payload length, then a UTF-8 string resembled by length bytes.
List9A byte denoting the tag ID of the list's contents, followed by the list's length as a signed integer (4 bytes), then length number of payloads that correspond to the given tag ID.
Compound10Fully formed tags, followed by a TAG_End.
IntArray11A signed integer size, then size number of TAG_Int's payloads.
LongArray12A signed integer size, then size number of TAG_Long's payloads.
  • Every valid NBT structure starts with a compound tag, known as the root compound. All other elements within the NBT structure are nested within this root compound.

  • The End tag serves to mark the end of either a compound or an empty list tag within the NBT structure.

Features

  • Comprehensive support for all NBT tags
  • Lightweight and intuitive
  • Supports new changes introduced in 1.20.2 version of Minecraft
  • Supports SNBT serialization and deserialization, including boolean types
  • Supports compression
  • Easily expandable visitor API

SNBT Format

Library supports SNBT (Stringified NBT) format defined by Mojang, utilized to represent NBT tags as human-readable strings. This is widely used for NBT user input.

Example of SNBT format:

{Fire:10,Leashed:1b,FallFlying:0b,Rotation:[60F,15F],Leash:{X:12,Y:15,Z:1}}

Importing

Gradle

repositories {
maven {
name ="machinemcRepositoryReleases"
url = uri("https://repo.machinemc.org/releases")
}
}
dependencies {
implementation("org.machinemc:nbt-core:VERSION")
// for the SNBT parser
implementation("org.machinemc:nbt-parser:VERSION")
}

Maven

<repositories>
<repository>
<id>machinemc-repository-releases</id>
<name>MachineMC Repository</name>
<url>https://repo.machinemc.org/releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-core</artifactId>
<version>VERSION</version>
</dependency>
<!-- for the SNBT parser -->
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-parser</artifactId>
<version>VERSION</version>
</dependency>
</dependencies>

Example usage

The following code snippet shows how to create NBTCompound:

NBTCompoundcompound = newNBTCompound();
compound.set("hello", "there");
compound.set("test", 10);
compound.set("thing", -5.2);
compound.set("ints", newint[]{1, 2, 3});

More examples can be found in the unit tests.

License

NBT is free software licensed under the MIT license.

About

Data handlers for Minecraft's NBT format

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - MachineMC/NBT: Data handlers for Minecraft's NBT format · GitHub
Skip to content

Repository files navigation

bannerbanner

Java Implementation for Minecraft Java Edition NBT Format.

LICENSERELEASE


This library is Java implementation of the NBT protocol for Minecraft Java Edition. This library provides functionality for handling Named Binary Tag (NBT) data, which is a data interchange format used by Minecraft.

The NBT specification defines 13 different types of tags:

Tag classIDPayload
End00 bytes
Byte11 byte / 8 bits, signed
Short22 bytes / 16 bits, signed, big endian
Int34 bytes / 32 bits, signed, big endian
Long48 bytes / 64 bits, signed, big endian
Float54 bytes / 32 bits, signed, big endian, IEEE 754-2008, binary32
Double68 bytes / 64 bits, signed, big endian, IEEE 754-2008, binary64
ByteArray7A signed integer (4 bytes) size, then the bytes comprising an array of length size.
String8An unsigned short (2 bytes) payload length, then a UTF-8 string resembled by length bytes.
List9A byte denoting the tag ID of the list's contents, followed by the list's length as a signed integer (4 bytes), then length number of payloads that correspond to the given tag ID.
Compound10Fully formed tags, followed by a TAG_End.
IntArray11A signed integer size, then size number of TAG_Int's payloads.
LongArray12A signed integer size, then size number of TAG_Long's payloads.
  • Every valid NBT structure starts with a compound tag, known as the root compound. All other elements within the NBT structure are nested within this root compound.

  • The End tag serves to mark the end of either a compound or an empty list tag within the NBT structure.

Features

  • Comprehensive support for all NBT tags
  • Lightweight and intuitive
  • Supports new changes introduced in 1.20.2 version of Minecraft
  • Supports SNBT serialization and deserialization, including boolean types
  • Supports compression
  • Easily expandable visitor API

SNBT Format

Library supports SNBT (Stringified NBT) format defined by Mojang, utilized to represent NBT tags as human-readable strings. This is widely used for NBT user input.

Example of SNBT format:

{Fire:10,Leashed:1b,FallFlying:0b,Rotation:[60F,15F],Leash:{X:12,Y:15,Z:1}}

Importing

Gradle

repositories {
maven {
name ="machinemcRepositoryReleases"
url = uri("https://repo.machinemc.org/releases")
}
}
dependencies {
implementation("org.machinemc:nbt-core:VERSION")
// for the SNBT parser
implementation("org.machinemc:nbt-parser:VERSION")
}

Maven

<repositories>
<repository>
<id>machinemc-repository-releases</id>
<name>MachineMC Repository</name>
<url>https://repo.machinemc.org/releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-core</artifactId>
<version>VERSION</version>
</dependency>
<!-- for the SNBT parser -->
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-parser</artifactId>
<version>VERSION</version>
</dependency>
</dependencies>

Example usage

The following code snippet shows how to create NBTCompound:

NBTCompoundcompound = newNBTCompound();
compound.set("hello", "there");
compound.set("test", 10);
compound.set("thing", -5.2);
compound.set("ints", newint[]{1, 2, 3});

More examples can be found in the unit tests.

License

NBT is free software licensed under the MIT license.

About

Data handlers for Minecraft's NBT format

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - MachineMC/NBT: Data handlers for Minecraft's NBT format · GitHub
Skip to content

Repository files navigation

bannerbanner

Java Implementation for Minecraft Java Edition NBT Format.

LICENSERELEASE


This library is Java implementation of the NBT protocol for Minecraft Java Edition. This library provides functionality for handling Named Binary Tag (NBT) data, which is a data interchange format used by Minecraft.

The NBT specification defines 13 different types of tags:

Tag classIDPayload
End00 bytes
Byte11 byte / 8 bits, signed
Short22 bytes / 16 bits, signed, big endian
Int34 bytes / 32 bits, signed, big endian
Long48 bytes / 64 bits, signed, big endian
Float54 bytes / 32 bits, signed, big endian, IEEE 754-2008, binary32
Double68 bytes / 64 bits, signed, big endian, IEEE 754-2008, binary64
ByteArray7A signed integer (4 bytes) size, then the bytes comprising an array of length size.
String8An unsigned short (2 bytes) payload length, then a UTF-8 string resembled by length bytes.
List9A byte denoting the tag ID of the list's contents, followed by the list's length as a signed integer (4 bytes), then length number of payloads that correspond to the given tag ID.
Compound10Fully formed tags, followed by a TAG_End.
IntArray11A signed integer size, then size number of TAG_Int's payloads.
LongArray12A signed integer size, then size number of TAG_Long's payloads.
  • Every valid NBT structure starts with a compound tag, known as the root compound. All other elements within the NBT structure are nested within this root compound.

  • The End tag serves to mark the end of either a compound or an empty list tag within the NBT structure.

Features

  • Comprehensive support for all NBT tags
  • Lightweight and intuitive
  • Supports new changes introduced in 1.20.2 version of Minecraft
  • Supports SNBT serialization and deserialization, including boolean types
  • Supports compression
  • Easily expandable visitor API

SNBT Format

Library supports SNBT (Stringified NBT) format defined by Mojang, utilized to represent NBT tags as human-readable strings. This is widely used for NBT user input.

Example of SNBT format:

{Fire:10,Leashed:1b,FallFlying:0b,Rotation:[60F,15F],Leash:{X:12,Y:15,Z:1}}

Importing

Gradle

repositories {
maven {
name ="machinemcRepositoryReleases"
url = uri("https://repo.machinemc.org/releases")
}
}
dependencies {
implementation("org.machinemc:nbt-core:VERSION")
// for the SNBT parser
implementation("org.machinemc:nbt-parser:VERSION")
}

Maven

<repositories>
<repository>
<id>machinemc-repository-releases</id>
<name>MachineMC Repository</name>
<url>https://repo.machinemc.org/releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-core</artifactId>
<version>VERSION</version>
</dependency>
<!-- for the SNBT parser -->
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-parser</artifactId>
<version>VERSION</version>
</dependency>
</dependencies>

Example usage

The following code snippet shows how to create NBTCompound:

NBTCompoundcompound = newNBTCompound();
compound.set("hello", "there");
compound.set("test", 10);
compound.set("thing", -5.2);
compound.set("ints", newint[]{1, 2, 3});

More examples can be found in the unit tests.

License

NBT is free software licensed under the MIT license.

About

Data handlers for Minecraft's NBT format

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - MachineMC/NBT: Data handlers for Minecraft's NBT format · GitHub
Skip to content

Repository files navigation

bannerbanner

Java Implementation for Minecraft Java Edition NBT Format.

LICENSERELEASE


This library is Java implementation of the NBT protocol for Minecraft Java Edition. This library provides functionality for handling Named Binary Tag (NBT) data, which is a data interchange format used by Minecraft.

The NBT specification defines 13 different types of tags:

Tag classIDPayload
End00 bytes
Byte11 byte / 8 bits, signed
Short22 bytes / 16 bits, signed, big endian
Int34 bytes / 32 bits, signed, big endian
Long48 bytes / 64 bits, signed, big endian
Float54 bytes / 32 bits, signed, big endian, IEEE 754-2008, binary32
Double68 bytes / 64 bits, signed, big endian, IEEE 754-2008, binary64
ByteArray7A signed integer (4 bytes) size, then the bytes comprising an array of length size.
String8An unsigned short (2 bytes) payload length, then a UTF-8 string resembled by length bytes.
List9A byte denoting the tag ID of the list's contents, followed by the list's length as a signed integer (4 bytes), then length number of payloads that correspond to the given tag ID.
Compound10Fully formed tags, followed by a TAG_End.
IntArray11A signed integer size, then size number of TAG_Int's payloads.
LongArray12A signed integer size, then size number of TAG_Long's payloads.
  • Every valid NBT structure starts with a compound tag, known as the root compound. All other elements within the NBT structure are nested within this root compound.

  • The End tag serves to mark the end of either a compound or an empty list tag within the NBT structure.

Features

  • Comprehensive support for all NBT tags
  • Lightweight and intuitive
  • Supports new changes introduced in 1.20.2 version of Minecraft
  • Supports SNBT serialization and deserialization, including boolean types
  • Supports compression
  • Easily expandable visitor API

SNBT Format

Library supports SNBT (Stringified NBT) format defined by Mojang, utilized to represent NBT tags as human-readable strings. This is widely used for NBT user input.

Example of SNBT format:

{Fire:10,Leashed:1b,FallFlying:0b,Rotation:[60F,15F],Leash:{X:12,Y:15,Z:1}}

Importing

Gradle

repositories {
maven {
name ="machinemcRepositoryReleases"
url = uri("https://repo.machinemc.org/releases")
}
}
dependencies {
implementation("org.machinemc:nbt-core:VERSION")
// for the SNBT parser
implementation("org.machinemc:nbt-parser:VERSION")
}

Maven

<repositories>
<repository>
<id>machinemc-repository-releases</id>
<name>MachineMC Repository</name>
<url>https://repo.machinemc.org/releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-core</artifactId>
<version>VERSION</version>
</dependency>
<!-- for the SNBT parser -->
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-parser</artifactId>
<version>VERSION</version>
</dependency>
</dependencies>

Example usage

The following code snippet shows how to create NBTCompound:

NBTCompoundcompound = newNBTCompound();
compound.set("hello", "there");
compound.set("test", 10);
compound.set("thing", -5.2);
compound.set("ints", newint[]{1, 2, 3});

More examples can be found in the unit tests.

License

NBT is free software licensed under the MIT license.

About

Data handlers for Minecraft's NBT format

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - MachineMC/NBT: Data handlers for Minecraft's NBT format · GitHub
Skip to content

Repository files navigation

bannerbanner

Java Implementation for Minecraft Java Edition NBT Format.

LICENSERELEASE


This library is Java implementation of the NBT protocol for Minecraft Java Edition. This library provides functionality for handling Named Binary Tag (NBT) data, which is a data interchange format used by Minecraft.

The NBT specification defines 13 different types of tags:

Tag classIDPayload
End00 bytes
Byte11 byte / 8 bits, signed
Short22 bytes / 16 bits, signed, big endian
Int34 bytes / 32 bits, signed, big endian
Long48 bytes / 64 bits, signed, big endian
Float54 bytes / 32 bits, signed, big endian, IEEE 754-2008, binary32
Double68 bytes / 64 bits, signed, big endian, IEEE 754-2008, binary64
ByteArray7A signed integer (4 bytes) size, then the bytes comprising an array of length size.
String8An unsigned short (2 bytes) payload length, then a UTF-8 string resembled by length bytes.
List9A byte denoting the tag ID of the list's contents, followed by the list's length as a signed integer (4 bytes), then length number of payloads that correspond to the given tag ID.
Compound10Fully formed tags, followed by a TAG_End.
IntArray11A signed integer size, then size number of TAG_Int's payloads.
LongArray12A signed integer size, then size number of TAG_Long's payloads.
  • Every valid NBT structure starts with a compound tag, known as the root compound. All other elements within the NBT structure are nested within this root compound.

  • The End tag serves to mark the end of either a compound or an empty list tag within the NBT structure.

Features

  • Comprehensive support for all NBT tags
  • Lightweight and intuitive
  • Supports new changes introduced in 1.20.2 version of Minecraft
  • Supports SNBT serialization and deserialization, including boolean types
  • Supports compression
  • Easily expandable visitor API

SNBT Format

Library supports SNBT (Stringified NBT) format defined by Mojang, utilized to represent NBT tags as human-readable strings. This is widely used for NBT user input.

Example of SNBT format:

{Fire:10,Leashed:1b,FallFlying:0b,Rotation:[60F,15F],Leash:{X:12,Y:15,Z:1}}

Importing

Gradle

repositories {
maven {
name ="machinemcRepositoryReleases"
url = uri("https://repo.machinemc.org/releases")
}
}
dependencies {
implementation("org.machinemc:nbt-core:VERSION")
// for the SNBT parser
implementation("org.machinemc:nbt-parser:VERSION")
}

Maven

<repositories>
<repository>
<id>machinemc-repository-releases</id>
<name>MachineMC Repository</name>
<url>https://repo.machinemc.org/releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-core</artifactId>
<version>VERSION</version>
</dependency>
<!-- for the SNBT parser -->
<dependency>
<groupId>org.machinemc</groupId>
<artifactId>nbt-parser</artifactId>
<version>VERSION</version>
</dependency>
</dependencies>

Example usage

The following code snippet shows how to create NBTCompound:

NBTCompoundcompound = newNBTCompound();
compound.set("hello", "there");
compound.set("test", 10);
compound.set("thing", -5.2);
compound.set("ints", newint[]{1, 2, 3});

More examples can be found in the unit tests.

License

NBT is free software licensed under the MIT license.

About

Data handlers for Minecraft's NBT format

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages