「データパック」の作成手順/フォルダ構成/使い方 (Java版1.13)【Minecraft】
Java版バージョン「1.13」には、様々な技術的な改良が含まれています。その一環として実装された機能「データパック」では、これまでバラバラの場所に配置していたファンクションの.mcfunctionファイル、進捗(Advancements)・ルートテーブル・カスタムレシピの.jsonファイル、ストラクチャーの.nbtファイルを、リソースパックのようにまとめて管理できるようになりました。この記事では、データパックの作成方法や、データパックのフォルダの配置を解説します。
※この記事の内容は、2021年9月5日現在のものです。今後仕様が変わる可能性もありますのでご注意ください。
目次
データパックの場所。ワールドごとに管理します
データパックを入れるdatapacksフォルダは、ワールドデータのフォルダ内にあります。 リソースパックと違い、データパックはワールドごとに適用されるということです。
ワールドを作成すると自動でdatapacksフォルダが作成されますが、当然中身は空です。この中に、データパックを複数入れることができます。
データパックのフォルダー構成
(公式サイトの記事をもとに作成)
- pack.mcmeta (必須) – リソースパック同様、パックの説明文を書く
- data/ – この中に全てのデータを入れる
- <名前空間>/ – リソースパック同様、名前空間が必要
- advancements/ – 進捗のファイルを入れる
- <ファイル名>.json – 進捗のファイル。<名前空間>:<ファイル名>で呼び出す
- functions/ – ファンクションのファイルを入れる
- <ファイル名>.mcfunction – ファンクションのファイル。<名前空間>:<ファイル名>で呼び出す
- loot_tables/ – Loot Tableのファイルを入れる
- <ファイル名>.json – ルートテーブルのファイル。<名前空間>:<ファイル名>で呼び出す
- structures/ – ストラクチャーのファイルを入れる
- <ファイル名>.nbt – ストラクチャーのファイル。<名前空間>:<ファイル名>で呼び出す
- recipes/ – レシピのファイルを入れる
- <ファイル名>.json – レシピのファイル。<名前空間>:<ファイル名>で呼び出す
- tags/ – タグのファイルを入れる
- blocks/ – ブロック用のタグのファイルを入れる
- <タグ名>.json – タグのファイル。<名前空間>:<ファイル名>で呼び出す
- items/ – アイテム用のタグのファイルを入れる
- <タグ名>.json – タグのファイル。<名前空間>:<ファイル名>で呼び出す
- fluids/ – 液体用のタグのファイルを入れる
- <タグ名>.json – タグのファイル。<名前空間>:<ファイル名>で呼び出す
- functions/ – ファンクション用のタグのファイルを入れる
- <タグ名>.json – タグのファイル。<名前空間>:<ファイル名>で呼び出す
- blocks/ – ブロック用のタグのファイルを入れる
- advancements/ – 進捗のファイルを入れる
- <名前空間>/ – リソースパック同様、名前空間が必要
新しくデータパックを作成する手順
datapacksフォルダの中に、早速自分でデータパックを作成してみましょう。
データパックのフォルダを作成
datapacksフォルダの中に、英数字で好きな名前を付けたフォルダーを作成します。もちろんリソースパックのように、ネットからダウンロードしたzipを入れることもできます。このフォルダ・zipの1つ1つが「データパック」です。この中に、進捗・ファンクション・ルートテーブル・ストラクチャー・レシピの各種ファイルを入れていきます。
1つのワールドに、複数のデータパックを入れることができます。それらは全てワールドと一緒に読み込まれます。また、データパックの読み込みには”優先順位”がありますが、現在は表示・変更できません。今後の改善を待ちましょう。
pack.mcmetaの作成
自分で作ったフォルダーの中に、pack.mcmetaというファイルを作成しましょう。Windowsの場合は右クリックメニューから新規テキストを作成して、「.txt」を「.mcmeta」に変えましょう。
- 拡張子表示する設定にしてね!
-
新規テキストを作成した際に「.txt」が出てこない方は、Windowsの場合は「表示」→「ファイル名拡張子」にチェックを入れて下さい。当ブログでは拡張子を表示している前提で解説しています。
pack.mcmetaをテキストエディタで開いて、中身を編集します。以下の内容をコピペしてください。
{ "pack": { "pack_format": 1, "description": "Super Data Pack!" } }
要は、リソースパックのpack.mcmetaの“pack_format”の数字がなんでもよくなった版です。(今後のSnapShotで数字が制限される可能性もありますので動向を随時チェックしましょう) リソースパック同様、“description”には英数字で説明文を書いて下さい。 このファイルは厳格なJSON文書なので、ダブルクオーテーションや丸括弧が欠けてはいけません。
説明文を書いたら、文字コードをUTF-8のBOMなし(UTF-8N)にして保存しましょう。大抵のテキストエディタには「ファイル」メニューに文字コードを指定して保存する機能があるはずです。
dataフォルダと名前空間フォルダの作成
pack.mcmetaの隣にdataフォルダを作成して下さい。このdataフォルダがデータパックのデータ部分です。(リソースパックで言うassetsに該当するフォルダです)
次に、dataフォルダの中に「名前空間」のフォルダを作成します。例えばリソースパックでバニラの要素をカスタマイズするときはassets/minecraftの中にテクスチャとか入れるじゃないですか。あのminecraftにあたる部分が名前空間なんです。
つまり、バニラのファイルを上書きしたい場合はminecraftというフォルダを作成しますが、バニラにない新しいファイルを追加したい場合はminecraftという名前は付けないで下さい。 例えば自分の名前とか配布ワールドの名前とか、ユニークな名前を付けましょう。
※名前空間に使える文字は、小文字のアルファベット、数字、アンダーバー、ハイフンだけです。
名前空間の中に、各種ファイルのためのフォルダを作ろう
データパックは、進捗(Advancements)、ファンクション、ルートテーブル、カスタムレシピ、ストラクチャーのファイルを一箇所に集約したものです。ファンクションファイルは.mcfunctionファイル、ストラクチャーは.nbtファイル、それ以外は全てJSONファイルですが、だからといってごちゃまぜに入れてはいけません。ちゃんと用途ごとにフォルダで分ける必要があるのです。
ということで、名前空間フォルダの中に、自分の追加したいファイルに合わせて適宜以下のフォルダを作成しましょう。(仕様上はrecipesフォルダを作れるけど、今作っても何も起きません。)
- 進捗を追加したい : advancements
- ファンクションを追加したい : functions
- ルートテーブルを追加したい : loot_tables
- レシピを追加したい : recipes
- ストラクチャーを追加したい : structures
- タグを追加したい : tags
mcfunction/nbt/jsonファイルを配置しよう
例えばルートテーブルを追加したい場合、loot_tablesフォルダの中に、自由にルートテーブルのJSONを配置すればいいんです。JSONを分類するためにフォルダを作ったり、loot_tables直下にJSONを置いても構いません。 ルートテーブル以外でもそうです。
※ファンクションファイルは.mcfunction、ストラクチャーファイルは.nbtという拡張子にします!
mcfunction/nbt/jsonファイルの名前に使える文字は、小文字のアルファベット、数字、アンダーバー、ハイフンだけです。
圧縮はしなくていいよ! & 圧縮する時の注意事項
リソースパック同様、データパックは圧縮しなくても読み込まれます。ですから圧縮するのはワールドやデータパックを配布するときだけで構いません。
- zip圧縮する際、フォルダを右クリックしちゃだめ。”中身を”圧縮しましょう
リソースパックと同様、データパックを圧縮する際は、外のフォルダを右クリックして圧縮してはいけません。中のdataフォルダとpack.mcmetaを同時に選択して右クリックし、圧縮しましょう。そうしないとzipになったデータパックが読み込まれません。
データパック内のファイルをマイクラ内で呼び出すには
データパックに置いたmcfunction/nbt/jsonファイルを、マイクラ内で呼び出す際の書き方を解説します。
例えば、/data/napoan_no_mono/loot_tables/chest/ にルートテーブルファイルのtest1.jsonを置いたとします。これをマイクラで呼び出すにはどう書けばいいんでしょうか?
正解は、napoan_no_mono:chest/test1です。要は、<名前空間>:フォルダ/ファイル名(拡張子抜き)と書けばいいんです。
ルートテーブルを指定することはマイクラ側も分かっているので、わざわざloot_tablesと書く必要はありません。データパック内のファイルを呼び出す際は、そういった種類分けのフォルダ名は省きます。
また、loot_tablesなどの種類分け用フォルダの直下にmcfunction/nbt/jsonファイルを置いた場合は、<名前空間>:ファイル名(拡張子抜き) と書きます。
ワールドにログイン中にデータパックの内容を編集したら、/reloadで再読込
データパックは、ワールド読み込み時に一緒にロードされます。つまり、ワールドで遊んでいる途中に内容を編集しても、ゲームには反映されません。 そんなときはもう一度ワールドに入り直すか、とある専用のコマンドを使って再読込する必要があります。
- ワールドのデータパックを再読込するコマンド
- /reload
ただ単に/reloadを実行すれば、そのワールドのデータパックが再読込され、変更が反映されます。1.12で実装されたコマンドですが、1.13では「データパックを再読込する」役割のコマンドになりました。
データパックを無効化・有効化するdatapackコマンドの使い方
17w46a時点では、データパックを読み込んだり、順番を変えたりする画面が用意されていません。データパックを無効化・有効化したり、順番を変えるには、17w46aで実装された/datapackコマンドを使います。
データパックの無効化
- 指定したデータパックを無効化するコマンド
- /datapack disable <データパック名>
データパックの最有効化、優先順位も指定可能
データパックは、デフォルトでは全て有効になっています。上記のコマンドで無効化した場合は、下記のコマンドで再度有効化できます。
- 指定したデータパックを有効化するコマンド
- /datapack enable <データパック名>
また、有効化する際にそのデータパックの読み込み優先順位も指定できます。
- 指定したデータパックを、最低の優先度で有効化するコマンド
- /datapack enable <データパック名> first
- 指定したデータパックを、最高の優先度で有効化するコマンド
- /datapack enable <データパック名> last
firstと書くと全てのデータパックより下、つまり最低の優先度で読み込まれます。lastと書くと全てのデータパックより上、つまり最高の優先度で読み込まれます。lastが最高です。くれぐれも間違えないように。
また、既存のデータパックを基準にして優先度を指定することも可能です。
- 指定したデータパックを、既存のデータパックよりひとつ低い優先度で有効化するコマンド
- /datapack enable <データパック名> before <基準になる既存のデータパック名>
- 指定したデータパックを、既存のデータパックよりひとつ高い優先度で有効化するコマンド
- /datapack enable <データパック名> after <基準になる既存のデータパック名>
beforeで指定したデータパックより低い優先度、afterで高い優先度で読み込みます。
8件のコメント
-
匿名2017年10月28日記事投稿時に複数箇所の間違いに気づいたので修正しました。もし変な箇所があったら記事を再読込していただければ直ってるかもしれません!
-
お餅2017年11月10日質問です。 早速17w43bでデータパックを利用して、記事通りの書き方でFunctionを実行しようと試みたのですが、なぜかUnknown Functionと吐かれます… ファイル構成や書き方などを見直してみましたが、やはり間違っていないようなのですが…スナップショット時点ではFunctionなどが使えないのでしょうか? お答えいただけると幸いです。
-
匿名2017年11月10日Functionのアドレスと、functionコマンドを書いていただければ分かるかもしれません
-
お餅2017年11月10日失礼いたしました。まず、ファイル構成はこんな感じです。(名前空間以外ファイル名は全く一緒) Datapacks LTestDataPack Ldata L Lfunctions LSystems LGameruleSettings.mcfunction また、コマンドはこちらです。 /function :systems/gamerulesettings (すべて小文字でないと1.12同様エラーになりました。)
-
kazuki uehara2017年11月29日自分もこの記事を参考に17W48aでデータパックを作ってみたのですが、データパック自体は認識されているのにファンクションは認識されていないようで、「Unknown function」と言われて使えません。どこかが違うのでしょうか?って書こうと思っていましたがBOM無しになっていなかったようで、BOM無しを使える別のテキストエディタ変えたらいけました。とてもこの記事に助けられました!
-
でんでん2017年12月9日「/function :systems/gamerulesettings」 を使うと完全に「systems」の中の「gamerulesettings.mcfunction」を参照するので、 「Systems」の中の「GameruleSettings.mcfunction」は参照されません。 よって、「Systems」ファイルの名前を「systems」に変更し、 「GameruleSetting.mcfunction」ファイルの名前を「gamerulesetting.mcfunction」に変更して、 先ほどのコマンドを打っていただければ「gamerulesetting.mcfuntion」の中身が実行されるはずですよ! 長文失礼しました。
-
kiiroinya2017年12月9日レシピの作り方を教えて下さい。
-
Hayato152017年12月10日17w49bでやったら"ワールドを読み込み中"で止まりっぱなしになっちゃいました。