NBTとは結局何なのか

NBTNamed Binary Tag(名前付きバイナリタグ)の略で、Minecraftが独自に設計したバイナリデータ形式です。中心となる考え方は、すべてのデータに「名前 + データ型 + 値」の3点セットを持たせ、それを入れ子にしてツリー構造として組み立てることです。よく使われる型には整数、浮動小数点数、文字列、リスト、そしてさらに中へネストできる「複合タグ(Compound)」があります。

ワールド内の多くの重要なデータがNBTで保存されています。

  • level.dat —— ワールドのメタデータ。名前、ゲームモード、シード、スポーン地点、ゲームルール、バージョンなどで、それ自体が1つのNBT(通常はさらにgzipで圧縮)です。
  • エンティティとブロックエンティティ —— モブ、チェスト内のアイテム、看板の文字といったデータも、NBT形式で記録されます。
  • プレイヤーデータ —— インベントリ、位置、状態なども同じくNBTです。

level.dat に何が入っているのか、失われるとどうなるのかを詳しく知りたい場合は、ワールドの level.dat とは をご覧ください。

なぜメモ帳で開くと文字化けするのか

NBTはプレーンテキストではなくバイナリだからです。型のマーカーと数値をそのままバイトに詰め込んでおり、level.dat はさらにgzipで圧縮されていることが多いため、メモ帳やテキストエディタでそのまま開くと文字化けしか見えません。中身をはっきり見るには、専用の NBTエディタ を使うか、いっそゲーム自身に読み込ませる必要があります。

これは、よくある誤解の理由でもあります。ワールドが「開けない」のは、多くの場合NBTの内容が壊れているのではなくパッケージ構造が正しくないことが原因です。たとえば level.dat が圧縮ファイルのルートに置かれていない、外側にフォルダが1階層多く被さっている、といったケースです。この種の構造の問題はNBT自体とは無関係です。Java版のワールドファイルがどう構成されているかは、Java版の region/.mca ファイルとは を参照してください。

TopoBlocksはこれらのNBTをどう扱うのか

.mcworld / .zip / Java版ワールドを開いたり診断したりするとき、TopoBlocksは level.dat などのNBT構造を読み取り、ファイルの種類、バージョン、構造が壊れていないか、欠けているファイルがないかを判定します。これらのセーブファイルが普段どこに置かれ、どのような姿をしているのかは、Minecraftのワールドセーブはどこにあるか をご覧ください。

いくつかはっきりさせておきたい点があります。

  • 既定で無料、端末内で行われます。 診断でNBTを読み取るのは問題を特定するためだけで、ワールドをクラウドに送る必要はありません。クラウドバックアップなどの機能を使うときに初めて、あなたの明示的な許可が必要になります。
  • 元ファイルを決して上書きしません。 修復するときも新しいファイルを生成し、元のファイルとハッシュを残して追跡できるようにします。あなたの元のNBTを直接書き換えることはありません。
  • 誠実な境界線。 構造修復が解決するのはファイル / パッケージ / 構造の問題です。NBTデータ自体が深刻に壊れている場合、単純な修復では救えないこともあり、複雑な破損は高度な修復(¥9/回)に進みます。支払いの前に問題、成功確率、リスクを先に提示し、失敗した場合は自動返金、価格はApp内の表示が優先されます。

簡単に言えば、NBTはMinecraftがワールドデータを保存する「内部言語」であり、これを理解すると、なぜ一部のワールドが開けないのか、そして修復時に実際にどの層を触っているのかが分かるようになります。