Bedrock NBTエディター — Java Editionにも対応

Minecraft Bedrock EditionとJava Editionに対応し、一般的なものから小規模なものまで両方の全サーバーコアを扱えます: Vanilla、Paper、Spigot、Purpur、Folia、Fabric、Forge、NeoForge、Mohist、Sponge、Bedrock Dedicated Server、PocketMine-MP、Nukkit、PowerNukkitX、Cloudburst、Dragonfly、Endstone、LeviLaminaなど。全一覧。

Bedrock Editionの全サーバーコアに対応し、Java Editionの一般的なものから小規模な実装まで扱えます。下の領域に level.dat、playerdata、.nbt、.mcstructure、.schem、.schematic をドロップし、ツリー内の任意のタグを編集して、同じバイナリ形式でダウンロードできます。バイト順、ヘッダー、圧縮方式は自動判定されます。処理はすべてブラウザー内で完結し、アップロード、アカウント、インストールは不要です。

Bedrock EditionJava EditionVanillaPaperSpigotPurpurPufferfishFoliaLeavesFabricQuiltForgeNeoForgeMohistArclightSpongeBedrock Dedicated ServerPocketMine-MPNukkitPowerNukkitXNukkit-MOTCloudburstDragonflyEndstoneLeviLaminaAllayJukeboxMCGoMintGeyserWaterdogPE

ここに任意のNBTファイルをドロップ

level.dat · .nbt · .mcstructure · .schem · .schematic · .dat · チャンクのダンプ

Minecraftが書き出すすべてのNBTファイル

NBT(Named Binary Tag)は複数のエンコードを持つ単一の形式で、Minecraftの各エディション、ランチャー、サーバーコアはそれぞれ異なる組み合わせを使います。このエディターはすべてを実装し、ファイルのバイト列から適切な形式を選ぶため、開く前に種類を調べる必要はありません。

ファイル生成元エンコード圧縮
level.datJavaワールド — Vanilla、Paper、Spigot、Fabric、Forgeビッグエンディアン、名前付きルートgzip
level.datBedrockワールド — BDS、PocketMine-MP、Nukkit、MCPEリトルエンディアン + 8バイトヘッダーなし
<uuid>.datJava playerdata/ビッグエンディアンgzip
servers.dat, hotbar.nbtJavaクライアントビッグエンディアンなし
idcounts.dat, raids.dat, map_*.datJavaワールドの data/ビッグエンディアンgzip
.nbtストラクチャーブロック、データパックの構造物ビッグエンディアンgzip
.schem, .schematicWorldEdit、Sponge、MCEditビッグエンディアンgzip
.mcstructureBedrockのストラクチャーブロックリトルエンディアンなし
チャンクペイロードリージョン .mca の抽出データ、LevelDB値どちらのバイト順も可zlibまたはなし
パケットダンプBedrockプロトコル、Java 1.20.2+プロトコルVarint LE / nameless BEなし

NBTファイルの編集方法

  1. サーバーまたは端末からファイルを取り出します。Javaサーバーでは world/、Bedrockサーバーでは worlds/YourWorld/、Androidでは games/com.mojang/minecraftWorlds/<id>/ にあります。コピー中に書き込まれないよう、先にサーバーを停止してください。
  2. エディターへドロップします。ツリー上部のバッジに、検出したエディション、エンコード、圧縮方式が表示されます。Bedrockではヘッダーのストレージバージョンも表示されます。
  3. 編集します。値を押すとその場で変更できます。検索で名前または値からタグへ移動し、+ でCompoundやListへタグを追加、× で削除します。
  4. 保存してダウンロードします。出力形式と圧縮方式の初期値は入力ファイルと同じなので、通常の編集では元の形式が保たれます。
  5. 元の場所へ戻して再起動します。ワールドが一度正常に読み込まれるまで、元ファイルをバックアップとして残してください。

このエディターの技術的な特徴

5種類のエンコードを1か所で処理

Javaビッグエンディアン、Bedrockリトルエンディアン、Bedrock varintネットワークNBT、Java 1.20.2+の名前なしルートネットワークNBT、ヘッダー付きBedrock level.dat に対応します。推測ではなく内容から判定します。

ブラウザー内でgzipとzlibを処理

展開と再圧縮には標準のCompression Streams APIを使うため、Java level.dat を編集してもゲームがそのまま受け付けるファイルになります。

正確な64ビットlong

TAG_Long の値は BigInt で保持します。ワールドシードやUUIDの各半分が浮動小数点の丸めで壊れません。

正しい文字列エンコード

Javaは修正版UTF-8(CESU-8)、Bedrockは標準UTF-8を使います。エディション別にエンコードするため、絵文字や非ラテン文字のワールド名も維持されます。

大きなファイル向けの実装

配列は型付き配列で保持し、ツリーは200項目ずつ遅延描画します。数MBのチャンクNBTでもタブを停止させずに開けます。

ツリー全体を検索

ファイル内の任意のタグを名前または値で検索し、経路を展開した状態で直接移動できます。

SNBTエクスポート

ツリー全体を、/data やデータパックで使うテキスト形式のSNBTとして出力できます。比較、共有、コマンドへの貼り付けに使えます。

形式変換

Bedrockファイルを読み、Javaビッグエンディアンgzipで書き出すことも、その逆も可能です。プロトコル開発、テスト、ツール作成に利用できます。

ファイルは端末外へ送信されない

ファイルは FileReader で読み取り、JavaScriptで解析し、メモリー内のblobとして返します。アップロード用エンドポイントはありません。

対応サーバーソフトウェア

NBTはサーバー実装ではなくゲーム形式によって定義されます。Minecraftワールドを保存するコアは、このエディターが読めるいずれかのエンコードを使います。以下は宣伝用の一覧ではなく技術的な互換範囲です。

Bedrock Edition — リトルエンディアンNBT、8バイトの level.dat ヘッダー

Bedrock Dedicated Server (BDS)、PocketMine-MP(PM3、PM4、PM5)、Nukkit、Nukkit-MOT、PowerNukkitX、Cloudburst Server、Dragonfly、Endstone、LeviLamina、BDSX、Allay、JukeboxMC、GoMint、Sculk、ElementZero、LiteLoaderBDS、およびAndroid、iOS、Windows、コンソール、Switch上の MCPE と MCBE クライアント。いずれも同じ worlds/<World>/level.dat、ヘッダー、タグを使います。サーバー側の手順も参照してください。

Java Edition — ビッグエンディアンNBT、gzip

Vanilla、CraftBukkit、Spigot、Paper、Purpur、Pufferfish、Folia、Leaves、Gale、Petal、Airplane、Sponge(SpongeVanilla、SpongeForge)、Fabric、Quilt、Forge、NeoForge、Mohist、Arclight、Magma、Ketting、Banner、Cardboard、Glowstone、Thermos、Uberbukkit、その他すべてのフォーク、Modパックサーバー、旧ビルド。world/level.dat を書く実装なら開けます。詳細はこちらです。

プロキシとブリッジ

Geyser、WaterdogPE、Waterfall、Velocity、BungeeCord はワールドを保持せず、通信上でNBTを転送します。ソケットから取得したデータはネットワークNBTで、Bedrock側はvarintリトルエンディアン、Java 1.20.2+側は名前なしルートのビッグエンディアンです。どちらも直接開けます。

一覧にない実装

独自フォーク、非公開コア、教材、自作サーバーでも、ファイルがNBTなら5種類のエンコードから判定して開きます。処理はコア名に依存しません。

自分のコードからパーサーを使う

ページはエンジンを window.NBT として公開しています。UIと同じパーサーをブラウザーコンソールから操作したり、ユーザースクリプトで再利用したりできます。

const bytes = new Uint8Array(await file.arrayBuffer());
const { root, format, compression, headerVersion } = await NBT.read(bytes);

root.value.find(t => t.name === "LevelName").value = "New World";

const out = await NBT.write(root, format, { compression, headerVersion });

タグは { type, name, value, listType } 形式の通常のオブジェクトです。配列は Int8Array、Int32Array、BigInt64Array、longは BigInt です。完全なNBT形式リファレンスに各タグ型とエンコードの違いを記載しています。

よくある質問

このNBTエディターは無料ですか?

はい。MITライセンスのオープンソースです。有料プラン、登録、アップロード容量の制限はありません。サーバー側コンポーネントを使わず、静的ページと2つのアセットファイルだけで動作します。

Java EditionとBedrock Editionの両方で使えますか?

両方に対応します。Javaファイルはビッグエンディアンで通常gzip圧縮、Bedrockファイルはリトルエンディアンで、level.dat には追加の8バイトヘッダーがあります。受け取った形式を判定し、保存時に同じ形式で書き戻します。

ワールドファイルはアップロードされますか?

いいえ。ファイルはFileReader APIで端末内から読み取り、ダウンロードデータはメモリー内のblobから生成されます。ページ読み込み後はネットワークを切断しても動作します。

AndroidやiOSでも使えますか?

はい。44 pxのタップ領域と固定アクションバーを備えたモバイル優先の画面です。Androidではファイルマネージャーから選択できます。iOSではサンドボックス制限により、先に「ファイル」アプリへ保存してください。

NBTとSNBTの違いは何ですか?

NBTはMinecraftがディスクへ保存するバイナリエンコードです。SNBTはそのテキスト表現で、/data merge などのコマンドに入力する構文です。このエディターはバイナリNBTを読み、比較やコマンドへの貼り付けに使えるSNBTを出力できます。

どのツールの代わりになりますか?

NBTExplorerなどのデスクトップNBTエディターや、1エディションだけを扱うWebツールの代わりに使えます。対応機能の違いはNBTExplorerオンライン版との比較を参照してください。

関連ツール