Regionファイルフォーマット

ページ名:Regionファイルフォーマット
Brush.png
この記事はスタイルガイドの基準を満たす必要があります。 [議論]
この項目を整理してくださる協力者を求めています。
この項目はJava Edition限定の要素です。 

リージョンファイルフォーマット(英:Region file format)はBeta 1.3で導入されたMinecraftのチャンクの保存形式であり、32×32個のチャンク(512×256×512、合計67,108,864ブロック)のグループがリージョンファイルに保存されている。このファイル形式は、Infdevの開発段階から使用されていたAlphaレベルフォーマットにとって代わり、チャンクを個別のファイルに格納していた。リージョンはファイルシステムの一つであり、見出しがファイルごとのプレイヤーの位置を示し、セクタが割り当てサイズとなる。

このシステムは、Optimineプロジェクトを開発したことでも知られるScaevolus氏のModであるMcRegionを基にしている。[1]McRegionのフォーマットは、チャンク更新の時間軸の表が追加された以外はほぼそのまま採用されている。JahKob氏は、このフォーマットは以前のシステムに比べて最大7倍の速度を実現していると主張している。[2]リージョンファイルフォーマットとAlphaレベルフォーマットの間のワールドの総ファイルサイズの差は無視できるほどのものである。

このフォーマットはAnvilファイルフォーマットに取って代わったものであるが、AnvilファイルフォーマットはChunkフォーマットのみを変更し、リージョンファイルの拡張子のみが「.mcr」から「.mca」に変更された。

目次

リージョンファイル

リージョンファイルの位置

リージョンファイルは「region」と呼ばれるワールドディレクトリのサブフォルダにあり、r.x.z.mcrという形式で名前が付けられている。チャンクが属するリージョンの座標は、チャンクの座標の階数を32で割った値から求められる。

Java Editionでは:

int regionX = (int)floor(chunkX / 32.0); int regionZ = (int)floor(chunkZ / 32.0);

又はビット操作(ビットシフト)の場合。

int regionX = chunkX >> 5 int regionZ = chunkZ >> 5

例えば、(30,-3)のチャンクは(0,-1)の領域にあり、(70,-30)のチャンクは(2,-1)の領域にある。

構造

リージョンファイルは、どのチャンクがリージョンファイル内に存在しているか、最後に更新されたのはいつか、どこにあるかなどの情報を含む8kiBの見出しで始まる。(x,z)(チャンク座標)のチャンクのリージョンファイル内の位置は、そのリージョンファイル内のバイトオフセット4×{(x mod 32)+(z mod 32)×32}で見つけなければなりません。x mod 32またはz mod 32の値が負の場合(Java/C/C++で%演算子を使用した場合に発生)、単に32を追加するか、プmodを&(AND演算子)に置き換えられる。オフセットの計算は次のようになる:4×{(x&31)+(z&31)×32}。その時間軸は、ファイルの4096バイト後に見つけることができる。ファイルの残りの部分は、未使用の領域を挟んで1024チャンクまでのデータで構成されている。

バイト0 - 40954096 - 81918192...
説明位置(1024件)時間軸(1024件)チャンクと未使用の領域

チャンク位置

チャンクの位置情報は4バイトで構成され、2つのフィールドに分割されている。最初の3バイトは、ファイルの開始位置から4KiBセクターでのオフセット(ビッグエンディアン)で、残りの1バイトはチャンクの長さを示すバイトである(同じく4KiBセクターで、切り上げ)。チャンクのサイズは常に1MiB以下である。チャンクがリージョンファイルに存在しない場合(例えば、まだ生成されていない、または移行されていないなど)、両方のフィールドはゼロになる。

バイト0123
説明オフセットセクター数

オフセット2のチャンクは、時間軸の表の直後から始まる。

チャンク時間軸

時間軸の表のエントリは、個々の4バイトのビッグエンディアン整数で、チャンクの最終修正時間をエポック秒単位で表す。

バイト0123
説明時間軸

チャンクデータ

チャンクデータは、残りのチャンクデータの正確な長さをバイト単位で示す(ビッグエンディアン)4バイトの長さのフィールドで始まる。次のバイトはチャンクデータに使用される圧縮方式を示し、残りの(長さ-1)バイトが圧縮されたチャンクデータとなる。

Minecraftは常に最後のチャンクのデータを調整し、長さが4096Bの倍数になるようにする(ファイル全体のサイズが4KiBの倍数になるように)。Minecraftは最後のチャンクが調整されていないファイルは受け付けない。この調整は長さフィールドには含まれないことに注意。

バイト012345...
説明長さ(バイト)圧縮タイプ圧縮データ(長さ-1バイト)

現在、定義された圧縮方式は2つある。

方法
1GZip (RFC1952) (未使用)
2Zlib (RFC1950)

圧縮されていないデータはNBTフォーマットで、Chunkフォーマットの記事で詳細に説明されている情報に従っている;圧縮方式1で圧縮された場合、圧縮データはAlphaチャンクファイルのディスク上の内容と同じになる。チャンクは常に公式クライアントによって圧縮方式2を使って保存されることに注意。

移行とlevel.dat

Minecraftを新形式に変換した際の見た目

Beta 1.3では「古い」チャンクはプレイ中に読み込まれるように増分的に読み込まれず、ワールドを読み込む前にリージョンファイルに変換される。変換の一環として、level.datはTAG_Int("version") (注)を19132に設定して更新された。Beta 1.3では新しいレベル名フィールドであるTAG_String("LevelName")も導入されている。また、プレイヤーのTAG_Compoundsに新しいTAG_Byte("Sleeping")が導入された - シングルプレイヤーではlevel.datmマルチプレイヤーではベッドの中にいるかどうかを示す[プレイヤー名].datを指定する。値は1(true)または0(false)である。Beta 1.8ではTAG_Int("GameType")が追加された。Beta 1.9ではTAG_byte("hardcore")が追加された。

それ以外の場合、level.datの形式は変更されない。

関連ページ

外部リンク

  • 新しいリージョンフォーマットのMojangの発表;ツールメーカーを支援するJeb
  • McRegion
  • JavaでのRegionFile
  • JavaでのRegionFileCache
  • 座標からリージョンファイルを探す

脚注

  1. http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/mods-discussion/1346703-mod-mcregion-v5-optimized-saves-1-2_02#p2619453
  2. http://www.pcgamer.com/minecraft-dev-diary-new-block-magic-fiddles/

ソフトウェア

コミュニティではリージョンファイルを扱うためのプログラムが開発されてきた。

名前説明スクリーンショット
McRegionこのMODは、チャンクがディスクに保存される方法を最適化し、プレイヤーがワールドを移動するときにチャンクを読み込んだり保存したりする一時停止がずっと短くなり、目立たなくなることを意味する。
Minecraft Region Fixerこのツールはリージョンファイルの問題を修正するPythonスクリプトである。典型的なエラー(チャンクの破損、チャンクの誤置、エンティティが多すぎる問題)を見つけ、様々な方法でこれらのエラーを修正できる(チャンクの削除、バックアップコピーで置換、チャンクを再配置)。これはコマンドラインアプリケーションである。
MCA2NBTシンプルなUnixコマンドラインユーティリティで、Minecraftの.mcaリージョンファイル(anvilフォーマット)を、各チャンクの圧縮されていないNBTファイルを含む同じベースネームのディレクトリに変換する。
Region ScannerJava Edition 1.7.10(のみ)のリージョンファイルを解析して大量編集するJavaコマンドラインユーティリティ
Minecraft: Java Edition
デモ版
開発
技術的情報
マルチプレイ
ゲームのカスタマイズ


特に記載のない限り、コミュニティのコンテンツはCC BY-NC-SAライセンスの下で利用可能です。

シェアボタン: このページをSNSに投稿するのに便利です。


最近更新されたページ

左メニュー

左メニューサンプル左メニューはヘッダーメニューの【編集】>【左メニューを編集する】をクリックすると編集できます。ご自由に編集してください。掲示板雑談・質問・相談掲示板更新履歴最近のコメントカウン...

黒色の染料

黒色の染料Black Dye.png希少度色一般的再生可スタック可(64)黒色の染料(英:Black Dye)は、イカスミからできる一次染料である。目次1 取引2 クラフトから3 用途3.1 製作材料...

黒板

黒板Chalkboard Slate.pngChalkboard_Board.png再生不可スタック可(16)回収道具なし爆発耐性?硬度?発光しない透過する可燃性なし溶岩からの引火?黒板 (英:Cha...

黒曜石の柱

黒曜石の柱Obsidian_Pillar.pngバイオームジ・エンド構成ブロック黒曜石岩盤鉄格子エンドクリスタル炎既存チャンクでの生成はい(エンダードラゴンがリスポーンした際に)エンドの柱(英:End...

黒曜石の土台

黒曜石の土台Obsidian platform.pngバイオームジ・エンド構成ブロック黒曜石既存チャンクでの生成可、ディメンションに再び入る際に再設置。黒曜石の土台 (英:Obsidian Platf...

黒曜石のボート/ED

エンティティデータすべてのエンティティに共通するタグ obsidian: 1 または 0(true / false)。true の場合は、ボートが黒曜石のボートになる。V1.18.10現在は存在して...

黒曜石のボート

その他の用法については「黒曜石 (曖昧さ回避)」をご覧ください。そのほかの種類のボートについては「ボート (曖昧さ回避)」をご覧ください。Dark Oak Sapling JE2 BE2.pngこの記...

黒曜石 (曖昧さ回避)

黒曜石(英:Obsidian)は以下のいずれかを指す。目次1 ブロック2 アイテム3 構造物4 Minecraft Dungeons5 関連項目 ブロック黒曜石泣く黒曜石輝く黒曜石‌[Bedrock ...

黒曜石

その他の用法については「黒曜石 (曖昧さ回避)」をご覧ください。黒曜石Obsidian_JE3_BE2.png再生可スタック可(64)回収道具爆発耐性1,200硬度50発光しない透過しない可燃性なし溶...

黄色の染料

黄色の染料Dandelion Yellow.png希少度色一般的耐久度11 (データ)再生はいスタックはい (64)黄色の染料(英:Dandelion Yellow)は1次染料の1つであり、黄色の花ま...

黄緑色の染料

黄緑色の染料Lime Dye.png希少度色一般的再生可スタック可(64)黄緑色の染料(英:Lime Dye)とは2次染料の1つであり、緑色の染料1つと骨粉1つを作製枠で組み合わせて作製される。目次1...

鳥(英:Bird)は、小さな羽、意味がないクチバシ、翼を持つ飛行と滑空をするMinecraftのMobである。ニワトリオウムMinecraft EarthStormy ChickenCluckshro...

この記事では、Mobやアイテムについて説明しています。要素については「釣り」をご覧ください。魚(英:Fish)は水生生物であり、海洋の種類に関係なくどこにでも存在する。Mobの1グループであり、以下に...

高速装填

高速装填最大レベルIII一次アイテム二次アイテム該当なし出現比10名前空間IDquick_charge数値ID35高速装填、クイックチャージ‌[Bedrock Edition限定](英:Quick C...

高度

Clock JE3.gifこの記事は内容の更新を必要とします。 この記事を更新して、最近のアップデートや新たな情報を反映してください。詳細:「高度と天然資源」および「ネザー」の節のグラフ画像Y座標と層...

骨粉

骨粉Bone Meal.png希少度色一般的耐久度15 (データ)再生はいスタックはい (64)骨粉(英:Bone Meal)は多くの植物の肥料や、染料の作製素材として用いられる素材である。目次1 入...

骨ブロック/DV

データ値説明0上/下向きの骨ブロック1未使用2未使用3未使用4東/西向きの骨ブロック5未使用6未使用7未使用8北/南向きの骨ブロック特に記載のない限り、コミュニティのコンテンツはCC BY-NC-SA...

骨ブロック/BS

Java Edition:名前デフォルト値取り得る値説明axisyx東西を向いた状態y上下を向いた状態z南北を向いた状態Bedrock Edition:名前デフォルト値取り得る値説明pillar_ax...

骨ブロック

骨ブロックBone_Block_%28UD%29_JE2_BE2.pngBone_Block_%28NS%29_JE2_BE2.png再生可スタック可(64)回収道具爆発耐性2硬度2発光しない透過しな...