NBTフォーマット(The Named Binary Tag format)はMinecraftでデータをファイルに保存するのに使われる。このフォーマットをNotchが簡潔に説明しているspecification。このフォーマットは様々な"タグ"からなるツリー構造でデータを蓄えている。全てのタグはIDとnameを持っている。元の基地のバージョンは、Minecraft Beta 1.3で導入っされた19132であったが、その後Anvilで19133に更新されInt Arrayタグが追加された。NBT形式は、Minecraft Indevのタグ0~10を使用する。
タグ定義
タグはデータツリーの一部分である。タグの最初のバイトはタグタイプIDである。続いて2バイトがnameの長さで、それからnameがUTF-8フォーマットで続いている(注意: TAG_Endに名前は無いので2バイトは必要ない、名前が空であると仮定されている)。タグnameにもしかしたらスペースがあるかもしれない、だがMinecraft自身はけっしてnameにスペースを含めタグを保存することはない。最終的にタグのタイプによりタグのペイロードバイトが続く。このテーブルはNBTFormat19133バージョンにおける12のタグの説明である。
ID | アイコン | タグの種類 | ペイロード | 説明 | ストレージ容量 |
---|---|---|---|---|---|
0 | TAG_End | なし | 終了するのに使用する。このタグに名前はない、だから1バイト(0)のみである。空のリストのタグになることもある。 | N/A | |
1 | TAG_Byte | 1バイト/8ビット符号付き | 符号付整数型 しばしば真偽値を表すのにも使用される | 範囲 -(27)から(27 - 1) (-128から127) | |
2 | TAG_Short | 2バイト/16ビット符号付きビッグエンディアン | 符号付整数型 | 範囲 -(215)から(215 - 1) (-32,768から32,767) | |
3 | TAG_Int | 4バイト/32ビット符号付きビッグエンディアン | 符号付整数型 | 範囲 -(231)から(231 - 1) (-2,147,483,648から2,147,483,647) | |
4 | TAG_Long | 8バイト/64ビット符号付きビッグエンディアン | 符号付整数型. | 範囲 -(263)から(263 - 1) (-9,223,372,036,854,775,808から9,223,372,036,854,775,807) | |
5 | TAG_Float | 4バイト/32ビット符号付きビッグエンディアン, IEEE 754-2008, バイナリ32 | 符号付浮動小数点数. | 精度は数字の行全体で異なる: Single-precision floating-point format参照。最大値3.4*1038 | |
6 | TAG_Double | 8バイト/64ビット符号付きビッグエンディアンIEEE 754-2008, バイナリ64 | 符号付浮動小数点数 | 精度は数字の行全体で異なる: Double-precision floating-point format参照。最大値 1.8*10308 | |
7 | TAG_Byte_Array | TAG_Intで要素数 それから要素数分のTAG_Byteのペイロード. | バイト配列 | 最大要素数 (231 - 9) and (231 - 1) (2,147,483,639 and 2,147,483,647) JVMによる | |
8 | TAG_String | TAG_Shortのペイロードでバイト数 それからUTF-8文字列のバイト. | UTF-8でエンコードされた文字列。
サイズがあり、nullで終わることはない。 |
最大で32767バイト 詳しくはUTF-8フォーマットを参照 | |
9 | TAG_List | TAG_ByteのペイロードでTagタイプを決め、続いてTAG_Intのペイロードで要素数を決める。それから指定したタグIDのペイロードが続く。 | タグペイロードのリスト、なおTagIDは省略され名前も無い。 | 最大要素数は231-9個 または20億4748万3639個である。
(JVMの上限やjava.util.ArrayListの実装による) (リストは512回以上入れ子にできない) | |
10 | TAG_Compound | フリーフォーマットである。終端にTAG_Endを指定する。 | フリーフォーマット | JVMのメモリによるが、リストと違い、要素(タグ)の数に上限はない。(512回以上入れ子にはできない) | |
11 | TAG_Int_Array | TAG_Intのペイロードで要素数、それからTAG_Intのペイロードが要素数分続く。 | 4バイト整数配列 | 特定のJVMに応じ、エレメントの最大数の範囲は(231 - 9)から(231 - 1) (2,147,483,639から2,147,483,647) |
ListおよびComponentタグは、再帰的にネストできる。また、リストのリストでは、サブリストのそれぞれが異なる種類のタグをリストできる事に注意。 注意:要素数や文字数を示す型は符号付きである。
Fileフォーマット
NBTファイルは、GZipされた複合タグであり、名前とタグIDが含まれている。 Minecraftで使用されるファイルの一部は圧縮されていない場合があるが、ほとんどの場合、ファイルはNotchの元の仕様に従っており、GZipで圧縮されている。Xbox 360 Editionでは、LZX圧縮アルゴリズムのバリエーションであるXMemCompressでチャンクが圧縮される。バージョンやその他の情報を指定するヘッダーはない。level.datファイルのみがバージョンを指定する。
Minecraftで使用されるもの
MinecraftのNBT形式の使用は時々奇妙である。場合によっては、空のリストは、正しい種類のリストではなく、バイトタグのリストとして、または新しいバージョンのMinecraftの終了タグのリストとして表されることがある。さらに、ほとんどすべてのルートタグには空の名前文字列があり、実際のデータと名前を持つ1つの複合タグのみをカプセル化する。 例えば:
- ほとんどのMinecraft NBT構造のルートタグ。
- SomeName: ルートタグ内に含まれる唯一のタグ - 名前があり、すべての実際のデータが含まれる。
もう1つの注目すべき奇妙な点は、Notchによる元の仕様ではタグ名にスペースを使用できるが、例でもタグ名にスペースを使用しているにもかかわらず、Minecraftにはタグに名前にスペースが含まれる既知のファイルがないということである。また、大部分がlowerCamelCaseまたはUpperCamelCaseのいずれかであるが、場合によってはすべて小文字でもよいなど、大文字小文字の使用に一貫性がない。
使用
- level.datは圧縮されたNBT形式で保存される
- <player>.datファイルは圧縮されたNBT形式で保存される
- idcounts.datは非圧縮NBT形式で保存される
- villages.datは圧縮されたNBT形式で保存される
- map_<#>.datファイルは圧縮されたNBT形式で保存される
- servers.datは保存されたマルチプレイヤーサーバーのリストを非圧縮NBTとして保存するのに使用される
- ChunksはRegionファイル内に圧縮されたNBT形式で保存される
- scoreboard.datは圧縮されたNBT形式で保存される
- Generated structuresは圧縮されたNBT形式で保存される
ソフトウェア
Mojangは、開発者がMcRegion -> Anvil converterコンバーターのソースコードの一部として使用および参照するためのサンプルJava NBTクラスを提供している。これ以外に、コミュニティは圧縮および非圧縮のNBTファイルを表示および変更するプログラムを開発した。
名前 | NBTバージョン | 説明 | スクリーンショット |
---|---|---|---|
MineBack Ultimate | 19133 | MineBack Ultimateは、利用可能なすべてのタイプのNBT形式ファイル(マップ、レベル、ワールドなど)をサポートする完全なNBTエディターを提供する。最新のGUIと多くのヘルパー機能が付属している。 | |
NBTEdit | 19132 | Windowsツリーコントロールを介してNBTファイルを表示および変更できる。 NBTバージョンが遅れているだけでなく、同じ名前の複数のタグをサポートせず、一部の種類で誤った範囲を強制し、非圧縮のNBTファイルをサポートしていないため、時代遅れである。 | |
NBTExplorer - Forum Post | 19133 | このプログラムは、NBTEditに触発され、それに基づいており、Windowsツリーコントロールを介してNBTファイルを表示および編集できる。圧縮および非圧縮のNBTファイルをサポートし、MCRegionおよびAnvilファイル、level.datなどのNBT構造を直接編集できる。 | |
NBT grammar for Synalyze It! | 19132 | これを使用すると、解析されたタグツリーとともに色分けされた16進ダンプが表示される。現在、非圧縮ファイルのみがサポートされている。 | |
NEINedit | 19132 | テキストベースのツリー構造を備えたMac用のNBTエディター。 | |
NBT2YAML | 19133 | nbt2yamlは、カスタムYAML形式を使用してMinecraft NBTファイルを読み取りおよび編集するためのコマンドラインインターフェイスを提供しする。 また、単純なPythonデータ構造との間でNBTファイルを解析および書き込むためのPython APIも含まれている。 | |
webNBT | 19133 | webNBTは、ユーザーがアプリケーションをダウンロードしたり、サードパーティのブラウザープラグイン(FlashやJavaなど)を使用したりすることなく、最新のブラウザーで実行されるNBTエディターである |
ヘルプ | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
メニュー画面 |
| ||||||||||||||||
開発元 | |||||||||||||||||
ゲームのカスタマイズ | |||||||||||||||||
エディション |
| ||||||||||||||||
ゲーム |
| ||||||||||||||||
映画 |
| ||||||||||||||||
書籍 |
| ||||||||||||||||
その他メディア |
| ||||||||||||||||
イベント |
| ||||||||||||||||
公式商品 |
| ||||||||||||||||
その他 |