A python library for reading and writing NBT files
Project description
Python-NBT
A python library for reading and writing NBT files. Compatible with json.
Based on NBT Version: 19133 (Current version used by Minecraft)
What is NBT
NBT (Named Binary Tag) is a tag based binary format designed to carry large amounts of binary data with smaller amounts of additional data. An NBT file consists of a single GZIPped Named Tag of type TAG_Compound.
From official Minecraft Wiki.
Usage
Read an NBT file
>>> import python_nbt.nbt as nbt
>>> file = nbt.read_from_nbt_file("file.nbt")
This function returns an instance of NBTTagCompound, or by the name on Minecraft Wiki, an instance of TAG_Compound. It only accept 1 argument, which can be either a file path string or an opened file stream.
The TAG_Compound acts like a dict
in Python. More accurately, it is a subclass of dict
in Python with some restrictions put on its keys and values. So you can get, and set its items as shown below:
>>> file['drop_loot_crates']
{'type_id': 1, 'value': 0}
>>> file['drop_loot_crates'] = nbt.TAG_Byte(1)
>>> file['drop_loot_crates']
{'type_id': 1, 'value': 1}
In the dict shown as above, the key 'type_id'
represents the type id of an NBT. In our example, its 'type_id'
is 1
, which indicates this NBT is a TAG_Byte. And 'value'
indicates its actual value.
Write an NBT file
Once you've completed editing an NBT, you can store it into an NBT file with the function below:
write_to_nbt_file(file, tag)
The first argument file
should be a path string or a file stream to the file you want to create/write. The second argument tag
is the NBT you want to write.
Compat with Json
If you want to export NBT in json, you can use NBTTagBase.json_obj(full_json=True)
to get an json style dict
that contains all the NBT information. After that, you can use json
module in Python to do whatever you want. If you want a simpler version, which omits type id of an NBT, set full_json
to False
.
If you want to import NBT from a json object, you can use nbt.from_json(json_obj)
to do so. This function will return an NBT object. And its parameter must be as same format as what NBTTagBase.json_obj(full_json=True)
exports.
Note: Unable to import json format into NBT now, this feature is under developing.
Future features
- More json compat
- Convert json into NBT
- Better and configurable json output (omitting NBT types)
- Convenient classes for reading and writing Minecraft saves files
- World
- Region
- Chunk
- ItemStack
- TileEntity
- Entity
- Player
- Utilities for mods
- FTB Quests CurseForge
- GameStages CurseForge
- Recognize blocks and items form mods in World according to NEI exports
- A detailed doc/wiki
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
Hashes for Python_NBT-1.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 339c357ca4a9c1b80faf979583c0659257fb83e5732926c2bbaea05c94ebe9f6 |
|
MD5 | 25094510bfe544c09c8bef65cf7ee9ea |
|
BLAKE2b-256 | f995e786381118f7ffab96f7fc19a755e1b67227b23349353430fb86f24e210c |