MC CommanderMinecraft非公式コマンド支援

データパックの作り方(Java版)

データパックを使うと、たくさんのコマンドをファイルにまとめて、1行で実行したり、ワールドを開いている間ずっと動かしたりできます。コマンドブロックを並べるより管理しやすく、配布もしやすくなります。ここでは、メッセージを表示するだけの最小のデータパックを作ってみます。

データパックfunctionJava版

Datapack Studioで作る

更新日:

完成形のフォルダ構成

mypack/
├─ pack.mcmeta
└─ data/
   ├─ mypack/
   │  └─ function/
   │     ├─ hello.mcfunction
   │     ├─ load.mcfunction
   │     └─ tick.mcfunction
   └─ minecraft/
      └─ tags/
         └─ function/
            ├─ load.json
            └─ tick.json

mypack の部分(名前空間)は自分で決めます。半角の小文字・数字・_ などだけを使い、大文字や日本語は使いません。

1. pack.mcmeta を作る

いちばん上のフォルダに pack.mcmeta というファイルを作り、次のように書きます。

{
  "pack": {
    "pack_format": 48,
    "description": "はじめてのデータパック"
  }
}

pack_format は、対応するゲームのバージョンを表す番号です。上の48はJava版1.21〜1.21.1の番号で、1.21.4は61です。番号はバージョンごとに変わり、新しい版では書き方そのものが変わったものもあります。合っていないと一覧で「互換性がない」と表示されることがあるので、遊んでいる版の番号を確認してください。

拡張子が pack.mcmeta.txt になっていないか注意します。Windowsでは「ファイル名拡張子」を表示する設定にしておくと確認しやすくなります。

2. 関数ファイル(mcfunction)を作る

data/mypack/function/hello.mcfunction を作り、実行したいコマンドを1行に1つずつ書きます。

say データパックが動きました
give @s minecraft:diamond 1

関数ファイルでは、コマンドの先頭の / を付けません。# で始まる行はメモ(コメント)として無視されます。

3. ワールドに入れる

  1. シングルプレイの場合、.minecraft/saves/ワールド名/datapacks/ に mypack フォルダごと入れます。
  2. ワールドに入って /reload を実行します。
  3. /datapack list で、有効なデータパックの一覧に入っているか確認します。
  4. /function mypack:hello で実行します。

関数ファイルを書き換えたあとも、/reload で読み込み直せます。zipにまとめて配布する場合は、zipを開いたすぐの場所に pack.mcmeta がある形にします。

4. ワールドを開いたとき・毎ティック動かす

data/minecraft/tags/function/load.json に書いた関数は、ワールドを開いたときと /reload のときに1回動きます。tick.json に書いた関数は、毎ティック(1秒に20回)動き続けます。

{
  "values": ["mypack:load"]
}

tick.json は値を "mypack:tick" にします。load.mcfunction にはスコアボードの準備など最初に1回だけ必要な処理を、tick.mcfunction には常に確認したい処理を書きます。tickに重い処理を書くとゲームが重くなるので、必要なものだけにします。

動かないときの確認ポイント

よくある質問

データパックを入れると実績は解除されなくなりますか?

データパックを入れるだけでは、実績(進捗)は止まりません。ただし内容によってはゲームの遊び方が変わるので、配布するときは説明を書いておきます。

サーバーで使えますか?

使えます。サーバーのワールドフォルダの中の datapacks フォルダに入れて、/reload を実行します。

functionの中からほかのfunctionを呼べますか?

呼べます。関数ファイルの中に function mypack:other のように書くと、別の関数を実行できます。

コマンドを確認する

エラーが出たときは、コマンドエラー診断にコマンドと版を入れると、Java版・統合版の書き方の違いやIDの間違いなど、確認する場所がわかります。

関連ページ

レシピと進捗をコマンドで全部解放する方法

マイクラJava版で、レシピ本のレシピをすべて解放する/recipe give @s *…

scheduleコマンドで数秒後に実行する方法

マイクラJava版の/scheduleで、ファンクションを5秒後や1日後に実行する方法を…

コマンドブロックの作り方

データパックとの使い分けを確認します。

ミニゲーム用のスコアボード例

loadとtickでよく使う処理です。

executeコマンドの基本

tickの関数で条件を判定するときに使います。

コマンド辞典

基本構文とコマンド別の使い方を確認できます。