データパック作成解説

Java版バージョン「1.13」には、様々な技術的な改良が含まれています。その一環として実装された機能「データパック」では、これまでバラバラの場所に配置していたファンクションの.mcfunctionファイル、進捗(Advancements)・ルートテーブル・カスタムレシピの.jsonファイル、ストラクチャーの.nbtファイルを、リソースパックのようにまとめて管理できるようになりました。この記事では、データパックの作成方法や、データパックのフォルダの配置を解説します。

スポンサーリンク

※この記事の内容は、2018年7月22日 16:03現在のものです。今後仕様が変わる可能性もありますのでご注意ください。


データパックの場所。ワールドごとに管理します

datapacksフォルダーの場所

データパックを入れる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 - タグのファイル。<名前空間>:<ファイル名>で呼び出す

新しくデータパックを作成する手順

datapacksフォルダの中に、早速自分でデータパックを作成してみましょう。


データパックのフォルダを作成

zipもいい

datapacksフォルダの中に、英数字で好きな名前を付けたフォルダーを作成します。もちろんリソースパックのように、ネットからダウンロードしたzipを入れることもできます。このフォルダ・zipの1つ1つが「データパック」です。この中に、進捗・ファンクション・ルートテーブル・ストラクチャー・レシピの各種ファイルを入れていきます。

1つのワールドに、複数のデータパックを入れることができます。それらは全てワールドと一緒に読み込まれます。また、データパックの読み込みには"優先順位"がありますが、現在は表示・変更できません。今後の改善を待ちましょう。


pack.mcmetaの作成

pack.mcmeta

自分で作ったフォルダーの中に、pack.mcmetaというファイルを作成しましょう。Windowsの場合は右クリックメニューから新規テキストを作成して、「.txt」を「.mcmeta」に変えましょう。

拡張子表示する設定にしてね!
拡張子表示しろ
新規テキストを作成した際に「.txt」が出てこない方は、Windowsの場合は「表示」→「ファイル名拡張子」にチェックを入れて下さい。当ブログでは拡張子を表示している前提で解説しています。

pack.mcmetaの中身

pack.mcmetaをテキストエディタで開いて、中身を編集します。以下の内容をコピペしてください。

{
   "pack": {
      "pack_format": 1,
      "description": "Super Data Pack!"
   }
}

要は、リソースパックのpack.mcmetaの"pack_format"の数字がなんでもよくなった版です。(今後のSnapShotで数字が制限される可能性もありますので動向を随時チェックしましょう) リソースパック同様、"description"には英数字で説明文を書いて下さい。 このファイルは厳格なJSON文書なので、ダブルクオーテーションや丸括弧が欠けてはいけません。

説明文を書いたら、文字コードをUTF-8のBOMなし(UTF-8N)にして保存しましょう。大抵のテキストエディタには「ファイル」メニューに文字コードを指定して保存する機能があるはずです。


dataフォルダと名前空間フォルダの作成

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高い優先度で読み込みます。

スポンサーリンク

毎度毎度ツイート、コメント等ありがとうございます。Twitterではブログの更新状況など色々呟いてます。気軽にフォロー下さい。

この記事を読んだ人は、こんな記事も読んでいます

スポンサーリンク

コメント