Tiny, liberally-licensed NBT library (Minecraft).
Project description
PyNBT
PyNBT is a tiny, liberally licenced (MIT) NBT library. It supports reading and writing big endian or little endian NBT files. Tested and supported on Py3.5-Py3.9, pypy3.
Using the Library
Using the library in your own programs is simple and is capable of reading, modifying, and saving NBT files.
Writing
NOTE: Beginning with version 1.1.0, names are optional for TAG_*'s that are added to a TAG_Compound, as they will be given the same name as their key. If you do
specify a name, it will be used instead. This breaks compatibility with old code, as the position of the name
and value
parameter have now swapped.
from pynbt import NBTFile, TAG_Long, TAG_List, TAG_String
value = {
'long_test': TAG_Long(104005),
'list_test': TAG_List(TAG_String, [
'Timmy',
'Billy',
'Sally'
])
}
nbt = NBTFile(value=value)
with open('out.nbt', 'wb') as io:
nbt.save(io)
Reading
Reading is simple, and will accept any file-like object providing read()
.
Simply pretty-printing the file created from the example under writing:
from pynbt import NBTFile
with open('out.nbt', 'rb') as io:
nbt = NBTFile(io)
print(nbt.pretty())
This produces the output:
TAG_Compound(''): 2 entries
{
TAG_Long('long_test'): 104005
TAG_List('list_test'): 3 entries
{
TAG_String(None): 'Timmy'
TAG_String(None): 'Billy'
TAG_String(None): 'Sally'
}
}
Every tag exposes a minimum of two fields, .name
and .value
. Every tag's value maps to a plain Python type, such as a dict()
for TAG_Compound
and a list()
for TAG_List
. Every tag
also provides complete __repr__
methods for printing. This makes traversal very simple and familiar to existing Python developers.
with open('out.nbt', 'rb') as io:
nbt = NBTFile(io)
# Iterate over every TAG in the root compound as you would any other dict
for name, tag in nbt.items():
print(name, tag)
# Print every tag in a list
for tag in nbt['list_test']:
print(tag)
Changelog
These changelogs are summaries only and not comprehensive. See the commit history between tags for full changes.
v3.0.0
- TAG_Byte_Array now returns and accepts
bytearray()
, rather than a list of bytes (#18).
v2.0.0
- Py2 is no longer supported.
v1.4.0
- Removed pocket detection helpers and
RegionFile
, leaving PyNBT to only handle NBT. - Added a simple unicode test.
v1.3.0
- Internal cleanups in
nbt.py
to ease some C work. NBTFile.__init__()
andNBTFile.save()
's arguments have changed. For most cases changingcompressed=True
toNBTFIle.Compression.GZIP
will suffice.NBTFile.__init__()
andNBTFile.save()
no longer accept paths, instead accepting only file-like objects implementingread()
andwrite()
, respectively.name
must now be provided at construction or before saving of anNBTFile()
(defaults toNone
instead of '').
v1.2.
- TAG_List's values no longer need to be
TAG_*
objects. They will be converted when the tag is saved. This allows much easier lists of native types.
v1.2.0
- Internal code cleanup. Breaks compatibility with pocket loading and saving (to be reimplemented as helpers).
- Slight speed improvements.
- TAG_List can now be treated as a plain python list (
.value
points toself
)
v1.1.0
- Breaks compatibility with older code, but allows much more
convenient creation of
TAG_Compound
.name
andvalue
have in most cases swapped spots. name
is now the last argument of everyTAG_*
, and optional for children of aTAG_Compound
. Instead, they'll be given the key they're assigned to as a name.TAG_Compound
s can now be treated like dictionaries for convienience..value
simply maps to itself.
v1.0.1
- Small bugfixes.
- Adds support for
TAG_Int_Array
.
v1.0.0
- First release.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file PyNBT-3.1.0.tar.gz
.
File metadata
- Download URL: PyNBT-3.1.0.tar.gz
- Upload date:
- Size: 6.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0e47a493df7c64390425d635bf78cd9028d692caa6e73a00b4ae579a126f45d |
|
MD5 | e510ff68a93e5059899536dc9d6d419e |
|
BLAKE2b-256 | 30e6315b58ca0920deeeaca7bdaef687dc801658ff6c6d5c3350f6b8ad7d3b4f |
File details
Details for the file PyNBT-3.1.0-py3-none-any.whl
.
File metadata
- Download URL: PyNBT-3.1.0-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5cd26b6b59c6c31534db077f10700178159786fc1da5a74b79731438e33a8de2 |
|
MD5 | 5912e4828378de8008e070858c4f5c2a |
|
BLAKE2b-256 | b39260045a2666dffed27555afee1cfdeb041f79ac43e87aa7ba7bcd0124b324 |