NbtLib 1.0.1

dotnet add package NbtLib --version 1.0.1
NuGet\Install-Package NbtLib -Version 1.0.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NbtLib" Version="1.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add NbtLib --version 1.0.1
#r "nuget: NbtLib, 1.0.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install NbtLib as a Cake Addin
#addin nuget:?package=NbtLib&version=1.0.1

// Install NbtLib as a Cake Tool
#tool nuget:?package=NbtLib&version=1.0.1

NbtLib

.NET library to work with NBT data.

NBT specification can be found here. Somewhat more technical specification here but it is older and missing a couple of the newer tag types (Int array and long array).

Basic usage

Raw NBT

Reading

using (var inputStream = System.IO.File.OpenRead("inputfile.nbt")) {
    var nbtData = NbtConvert.ParseNbtStream(inputStream);
}

Writing

var nbtTag = new NbtCompoundTag();
var outputStream = NbtConvert.CreateNbtStream(nbtTag);

In addition to the static helper methods, it is possible to use the NbtParser and NbtWriter classes directly.

According to the specification, NBT files should be GZipped. Parser functions will handle both compressed and uncompressed data. Writing functions will generate data that has been GZipped. Companion methods with Uncompressed in the name exist to create output streams without compressing the data.

(De)serialization

Reading

using (var inputStream = System.IO.File.OpenRead("inputfile.nbt")) {
    var myObject = NbtConvert.DeserializeObject<MyClass>(inputStream);
}

var tag = new NbtCompoundTag();
var myObject = NbtConvert.DeserializeObject<MyClass>(tag);

Writing

var myObject = new MyClass();
Stream outputStream = NbtConvert.SerializeObject(myObject);
NbtCompundTag tag = NbtConvert.SerializeObjectToTag(myObject);

In addition to the static helper methods, it is possible to use the NbtDeserializer and NbtSerializer classes directly.

(De)serialization can be further customized with the NbtIgnore or NbtProperty attributes, and/or by using NbtSerializerSettings

class MyClass
{
    // this property will not be populated by the deserializer
    // this property will not appear in serialized output
    [NbtIgnore]
    public string Ignored { get; set; }

    // this property will have the tag name TagName in the output, or will be read from a tag named TagName
    // this property will be serialized to a List tag with TagType Int instead of the default behavior of IntArray
    // if this list is empty, the tag type will be End instead of Int
    [NbtProperty(PropertyName="TagName", UseArrayType=false, EmptyListAsEnd=true)]
    public List<int> CustomizedProperty { get; set; }
}
var myObject = new MyClass();
var settings = new NbtSerializerSettings();
Stream outputStream = NbtConvert.SerializeObject(myObject, settings);
Available Settings

UseArrayTypes (Default true) If true, IEnumerables (including arrays) of byte, int, and long will be serialized to the corresponding array tag type. If false, they will be serialized to List tags

EmptyListAsEnd (Default: false) If true, empty IEnumerables that are serialized to lists will have their tag type set to Empty

NamingStrategy (Default: DefaultNamingStrategy) Object implementing INamingStrategy that will be used to format tag names. Default implementation leaves names unchanged.

Formatting

All tags return sensible values when calling ToString(), and can also return a formatted JSON representation via ToJsonString(). One of the easiest ways to get a reasonable representation of a NBT file is to parse it to a NbtCompoundTag then call ToJsonString.

License

MIT license

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.1 11,358 7/6/2019