システム/ゲームディレクトリ
ゲームディレクトリとはワールドのセーブデータやリソースファイルなどを格納してるディレクトリである。
可能な限りディレクトリにあるファイル内容についても記載する。
パス[編集 | ソースを編集]
パスを変更していなければ、標準だと以下のようになる。
- Windows
- <ドライブ文字>:\Users\<ユーザー名>\AppData\Roaming\.minecraft
- macOS(OS X)
- /Users/<ユーザー名>/Library/Application Support/minecraft
- Linux
- /home/<ユーザー名>/.minecraft
ゲームディレクトリの移動[編集 | ソースを編集]
Windows:
- Windowsキー +Rキー を押して、ファイル名を指定して実行を開く
- 名前に%APPDATA%\.minecraftと入力してOKをクリック
■セーブフォルダを開く場合は?
%APPDATA%\.minecraft\saves
savesも参照
■リソースパックフォルダを開く場合は?
%APPDATA%\.minecraft\resourcepacks
resourcepacksも参照
※スタート → Windows システム ツール → ファイル名を指定して実行からでも起動する
※AppDataは隠しディレクトリのため、隠しファイルを表示していないと一覧に表示されない
macOS:
- Finderを開き、移動 → フォルダに移動を選択する(或いはcommand⌘キー +shiftキー +Gキーを押す)
- フォルダの場所を入力に~/Library/Application Support/minecraftと入力して移動をクリック
■セーブフォルダを開く場合は?
~/Library/Application Support/minecraft/saves
savesも参照
■リソースパックフォルダを開く場合は?
~/Library/Application Support/minecraft/resourcepacks
resourcepacksも参照
※Libraryは隠しディレクトリのため、隠しファイルを表示していないと一覧に表示されない
Linux:
ターミナルなどで移動します
cd~/.minecraft
※.(ドット)から始まるファイルやディレクトリ、つまりは.minecraftディレクトリ一は覧表示されない場合がある(macOSも同様)
ディレクトリと構成[編集 | ソースを編集]
assets[編集 | ソースを編集]
ファイル構成
- assets
- indexes- インデックスファイル群。objectsにどのようなファイルがあるかを記録したjsonファイルがある。
- log_configs
- objects- オブジェクトファイル群。翻訳データ、音声データ、および一部のテクスチャが格納されている。
- skins
オブジェクトファイルの参照[編集 | ソースを編集]
例として、assets/indexes/1.13.1.jsonのicons/icon_32x32.pngを参照する。
assets/indexes/1.13.1.json
{ "objects": { "icons/icon_16x16.png": { "hash": "bdf48ef6b5d0d23bbb02e17d04865216179f510a", "size": 3665 }, "icons/icon_32x32.png": { "hash": "92750c5f93c312ba9ab413d546f32190c56d6f1f", "size": 5362 }, "icons/minecraft.icns": { "hash": "991b421dfd401f115241601b2b373140a8d78572", "size": 114786 }, "~~~~~中略~~~~~": {}, "realms/lang/zh_tw.json": { "hash": "3bf5aafb7e87087aae7efa6bed2a137e972b4ef7", "size": 19732 } } }
icons/icon_32x32.pngのhash値は、92750c5f93c312ba9ab413d546f32190c56d6f1fとなっている。この値の先頭2文字を確認する。
assets/objects/92/ディレクトリを探し、内に92750c5f93c312ba9ab413d546f32190c56d6f1fファイルがあることを確認する。
つまりこれがicons/icon_32x32.png(アイコンとなってる作業台)となる。
なおsize値はファイルサイズを示す。
logs[編集 | ソースを編集]
ログファイルが格納されているディレクトリ。
クライアントを起動する度、前回のlatest.logを*.log.gzに圧縮変換し、新たに記録していく。
MODのログもここに格納する場合がある。
ログは必要無ければ削除しても問題は無い。
ただしサポートを求める場合、ログ提出が必要になるケースがある。
resourcepacks[編集 | ソースを編集]
リソースパックファイルが格納されているディレクトリ。
versions[編集 | ソースを編集]
各バージョンの実行ファイルがあるディレクトリ。
screenshots[編集 | ソースを編集]
撮影したスクリーンショットが保存されるディレクトリ。
saves[編集 | ソースを編集]
ワールドのセーブデータが格納されているディレクトリ
ファイル構成
- saves
- <ワールド名>
- advancements
- <プレイヤーのUUID>.json - 進捗の達成状況・レシピの開放状況
- data
- datapacks - データパック
- DIM1 - エンドのデータ
- region
- r.x.z.mca - エンドの地形のデータ
- region
- DIM-1 - ネザーのデータ
- region
- r.x.z.mca - ネザーの地形のデータ
- region
- playerdata - プレイヤーのデータ
- <プレイヤーのUUID>.dat - プレイヤーのデータタグ。
- poi
- r.x.z.mca - 村人のデータ(ver1.14~)
- region - 通常世界のデータ
- r.x.z.mca - 通常世界の地形のデータ
- stats
- <プレイヤーのUUID>.json - 統計のデータ
- icon.png - ワールドのアイコン画像
- level.dat - ワールド全体のデータ
- level.dat_old - level.datのバックアップ
- session.lock - 最終アクセス時間を保存
- advancements
- <ワールド名>
.dat、.dat_old、.mca拡張子のファイルはMinecraft独自のデータ形式となっている。一般的な構造は以下で説明する。
データ形式[編集 | ソースを編集]
.dat/.dat_old[編集 | ソースを編集]
GZip圧縮されたNBTフォーマット(一部は未圧縮のNBTフォーマット)。
.mca[編集 | ソースを編集]
最大1024個のチャンクのデータをまとめたもの。以下のような構造となっている。
バイト | 0~4095 | 4096~8091 | 8092~ |
---|---|---|---|
内容 | データ位置 | タイムスタンプ | データ本体 |
ファイル名が r.x.z.mca の場合、そのファイルには[32x,32z][1]から[32(x+1)-1,32(z+1)-1]までのチャンクのデータが含まれる。
冒頭4096バイトはチャンクのデータの位置および大きさを指定する。先頭から4バイトずつ、[32x,32z]、[32x+1,32z]、…、[32x+31,32z]、[32x,32z+1]、[32x+1,32z+1]、…の順にチャンクと対応している。
4バイトのデータのうち、前3バイトの値に4096をかけたものが .mca ファイル内でのチャンクのデータの開始位置を表しており、末尾1バイトはチャンクのデータ本体の長さを4096で割って切り上げた値を表す。
続く4096バイトは、4バイトずつ各チャンクのタイムスタンプを表しており、冒頭4096バイトと同じ順番でチャンクと対応している。
それ以降がチャンクのデータ本体である。各データは以下のような構造になっている。
ヘッダ | データ部 | |
---|---|---|
1~4バイト目 | 5バイト目 | 6バイト目以降 |
データ部の長さ | 圧縮形式(常に2) | 圧縮されたデータ本体 |
データ本体は、Zlib圧縮されたNBTフォーマットとなっている。
地形データを保存するものと、村人関係のデータを表すものとでデータの中身は異なる。
NBTフォーマット(NBT Format)[編集 | ソースを編集]
JSON類似のデータを表現する、Minecraft独自の保存形式である。
ゲーム内からはデータタグの形でアクセスされる。この説明でも、NBTフォーマットの構造を各データタグに対応づけて解説する。
構造の概要[編集 | ソースを編集]
内容 | タグの種類 | タグ名の長さ | タグ名 | (値) | 0(終端を表す) |
---|---|---|---|---|---|
バイト数 | 1 | 2 | (可変長) | (可変長) | 1 |
タグの種類は、1~12までのいずれかの数字で表され、タグ名はAsciiコードを用いて1文字1バイトで表現される。
タグの終端を表す0は、配列(TAG_Compound)にのみ存在する。
名前のないタグの場合は、タグ名の長さが0となり、タグ名の部分は存在しない。
配列(TAG_Compound)[編集 | ソースを編集]
内容 | 10 | タグ名の長さ | タグ名 | (中身のタグ) | 0 |
---|---|---|---|---|---|
バイト数 | 1 | 2 | (可変長) | (可変長) | 1 |
リスト(TAG_List)[編集 | ソースを編集]
内容 | 9 | タグ名の長さ | タグ名 | 要素となるタグの種類 | 要素の個数 | (各タグの値) |
---|---|---|---|---|---|---|
バイト数 | 1 | 2 | (可変長) | 1 | 4 | (可変長) |
文字列(TAG_String)[編集 | ソースを編集]
内容 | 8 | タグ名の長さ | タグ名 | 中身の長さ | 文字列(UTF-8) |
---|---|---|---|---|---|
バイト数 | 1 | 2 | (可変長) | 2 | (可変長) |
数値[編集 | ソースを編集]
1バイト整数(TAG_Byte)
内容 | 1 | タグ名の長さ | タグ名 | 数値 |
---|---|---|---|---|
バイト数 | 1 | 2 | (可変長) | 1 |
2バイト整数(TAG_Short)
内容 | 2 | タグ名の長さ | タグ名 | 数値 |
---|---|---|---|---|
バイト数 | 1 | 2 | (可変長) | 2 |
4バイト整数(TAG_Int)
内容 | 3 | タグ名の長さ | タグ名 | 数値 |
---|---|---|---|---|
バイト数 | 1 | 2 | (可変長) | 4 |
8バイト整数(TAG_Long)
内容 | 4 | タグ名の長さ | タグ名 | 数値 |
---|---|---|---|---|
バイト数 | 1 | 2 | (可変長) | 8 |
4バイト浮動小数点(TAG_Float)
内容 | 5 | タグ名の長さ | タグ名 | 数値 |
---|---|---|---|---|
バイト数 | 1 | 2 | (可変長) | 4 |
8バイト浮動小数点(TAG_Double)
内容 | 6 | タグ名の長さ | タグ名 | 数値 |
---|---|---|---|---|
バイト数 | 1 | 2 | (可変長) | 8 |
数値の配列[編集 | ソースを編集]
1バイト整数の配列(TAG_Byte_Array)
内容 | 7 | タグ名の長さ | タグ名 | 要素の個数 | 要素(数値) |
---|---|---|---|---|---|
バイト数 | 1 | 2 | (可変長) | 4 | 各1 |
4バイト整数の配列(TAG_Int_Array)
内容 | 11 | タグ名の長さ | タグ名 | 要素の個数 | 要素(数値) |
---|---|---|---|---|---|
バイト数 | 1 | 2 | (可変長) | 4 | 各4 |
8バイト整数の配列(TAG_Long_Array)
内容 | 12 | タグ名の長さ | タグ名 | 要素の個数 | 要素(数値) |
---|---|---|---|---|---|
バイト数 | 1 | 2 | (可変長) | 4 | 各8 |
脚注[編集 | ソースを編集]
- ↑ チャンク[X,Z]とは、x座標が16Xと16(X+1)の間、z座標が16Zと16(Z+1)の間の部分にあるチャンクのことを指す