Java NBT (Named Binary Tag) library.
For Gradle projects:
repositories {
maven { url 'https://maven.izzel.io/releases' }
}
dependencies {
compile 'io.izzel:nbt:VERSION'
}
The library requires Java 8 or above.
Conversion between different formats:
import java.nio.file.Path;
import java.nio.file.Paths;
import java.io.IOException;
import io.izzel.nbt.util.*;
// string <===> gzipped binary
public void copyLevelData() throws IOException {
Path input = Paths.get("level.dat");
Path output = Paths.get("level.dat_old");
String stringNbt = new CompressedNbtReader(input).toStringNbt();
new StringNbtReader(stringNbt).toCompressedBinaryFile(output);
}
// string <===> uncompressed binary
public void backupServers() throws IOException {
Path input = Paths.get("servers.dat");
Path output = Paths.get("backup/servers.dat");
String stringNbt = new NbtReader(input).toStringNbt();
new StringNbtReader(stringNbt).toBinaryFile(output);
}
Dealing with in-memory objects:
import java.nio.file.Path;
import java.nio.file.Paths;
import java.io.IOException;
import io.izzel.nbt.*;
import io.izzel.nbt.util.*;
public void filterOutLocalServers() throws IOException {
Path file = Paths.get("servers.dat");
CompoundTag root = new NbtReader(file).toCompoundTag();
ListTag serverList = root.getListOrDefault("servers");
ListTag.Builder builder = ListTag.builder();
for (int i = 0; i < serverList.size(); ++i) {
CompoundTag server = serverList.getCompoundOrDefault(i);
String ip = server.getString("ip", /*fallback*/"127.0.0.1");
if (!"127.0.0.1".equals(ip) && !"localhost".equals(ip)) {
builder.add(server);
}
}
ListTag newServerList = builder.build();
CompoundTag newRoot = CompoundTag.builder().add("servers", newServerList).build();
new TagReader(newRoot).toBinaryFile(file);
}
The library is open-source project, under MIT license.
Linux or macOS:
git clone https://github.com/IzzelAliz/nbt.git IzzelAlizNBT --depth 20
cd IzzelAlizNBT/
./gradlew build --exclude-task test
Microsoft Windows:
git clone https://github.com/IzzelAliz/nbt.git IzzelAlizNBT --depth 20
cd IzzelAlizNBT/
gradlew.bat build --exclude-task test
Please make sure you have installed Git on your machine.