はじめての.mcfunction:コマンドを書いてゲーム内で動かしてみよう

前の記事では、Datapackに必要なファイル構成を図解で確認しました。今回はその構成を実際に自分の手で作っていきます。フォルダを作り、ファイルを書き、コマンドがゲームの中で動く瞬間を体験するところまで、一気に進めていきましょう。

対応バージョン:Java Edition 1.21.11

目次

まず my_pack フォルダを作ってVSCodeで開こう

Datapackのファイルはすべてワールドの datapacks フォルダの中に置きます。まずそこに自分用のフォルダを作って、VSCodeで開くところから始めましょう。

  1. エクスプローラー(Finder)でワールドフォルダを開き、datapacks フォルダの中に my_datapack という名前のフォルダを新規作成する
  2. VSCodeを起動し、メニューの「ファイル」→「フォルダーを開く」で今作った my_datapack フォルダを選択する
  3. VSCodeのサイドバーに my_pack フォルダが表示されればOK。ここからすべてのファイルを作っていく

my_pack という名前はあくまで例です。自分のDatapackらしい名前に変えてもOKですが、半角英数字と _(アンダースコア)だけを使うようにしましょう。このフォルダ名がゲーム内で表示されるDatapack名になります。


必要なファイルとフォルダをすべて作ろう

VSCodeで my_datapack を開けたら、前の記事で学んだ構成通りにファイルとフォルダを作っていきます。作るものは全部で4つです。

作るもの場所役割
pack.mcmetamy_datapack/ 直下Minecraftにこれがデータパックだと伝える必須ファイル
data/my_datapack/function/my_datapack/data/ 以下コマンドファイル(.mcfunction)を置く場所
data/minecraft/tags/function/load.jsonmy_datapack/data/minecraft/ 以下リロード時に自動実行する関数を登録するファイル
hellow.mcfunctiondata/my_datapack/function/今回書く最初のコマンドファイル

まず pack.mcmeta から作りましょう。VSCodeのサイドバーで my_datapack フォルダを右クリック → 「新しいファイル」を選び、ファイル名を pack.mcmeta と入力します。

VSCodeのサイドバーで my_datapack フォルダを右クリックし、新しいファイルとして pack.mcmeta を作成する操作の様子

ファイルが開いたら、次の内容をそのまま貼り付けて保存してください。

{
  "pack": {
    "description": "はじめてのDatapack",
    "min_format": [94, 1],
    "max_format": [94, 1]
  }
}
VSCodeで pack.mcmeta を開く画像

次に、フォルダを2つ作ります。VSCodeのサイドバーで「新しいフォルダー」を使って、次の2つのパスになるようにフォルダを作ってください。フォルダの中にフォルダを作る入れ子構造になっているので、一段ずつ作っていくのがコツです。

data/my_pack/function/
data/minecraft/tags/function/
VSCodeのサイドバーで data/my_datapack/function と data/minecraft/tags/function のフォルダを順番に作っていく操作の様子

作り終えたら、サイドバーがこのような構成になっていれば完成です。

my_pack/
├── pack.mcmeta
└── data/
    ├── my_datapack/
    │   └── function/        ← ここに .mcfunction ファイルを置く
    └── minecraft/
        └── tags/
            └── function/    ← ここに load.json を置く
VSCodeのサイドバーに pack.mcmeta と data 以下のフォルダ構成がすべて表示されている状態のスクリーンショット

.mcfunctionファイルって何?

フォルダの準備ができたので、いよいよコマンドを書くファイルを作ります。Datapackのコマンドは .mcfunction(エムシーファンクション)という専用のファイルに書いていきます。拡張子が「.txt」ではなく「.mcfunction」になっているだけで、中身はただのテキストファイルです。

書き方にはいくつかの独自ルールがあります。チャット欄でコマンドを打つときとは少し異なるので、最初に頭に入れておきましょう。

  • コマンドの先頭に /(スラッシュ)はつけない
  • 1行に1コマンドだけ書く
  • # から始まる行はコメント(メモ)として無視される
  • 空白行があっても問題ない

たとえばゲーム内チャットで /say Hello と打つ場面では、ファイルの中には say Hello とスラッシュなしで書きます。慣れてしまえばすぐに自然に感じられるルールです。

.mcfunctionは「上から順に」実行されます。ファイルの中に10行コマンドがあれば、1行目から最後の行まで順番に実行されます。注意したいのは、コマンドの書き方にミスがあるとそのファイル全体が /function で実行できなくなります。「/function を打ったのに何も起きない」ときは、まずコマンドのスペルミスや全角スペースの混入を確認してみましょう。


最初のコマンドを書いてみよう

それでは data/my_pack/function/ フォルダの中に、最初の .mcfunction ファイルを作ります。サイドバーでそのフォルダを右クリック → 「新しいファイル」で hellow.mcfunction と入力してください。

VSCodeのサイドバーで data/my_datapack/function フォルダを右クリックし、hello.mcfunction を作成する操作の様子

ファイルが開いたら、次のコマンドを書き込みましょう。動いたことがはっきりわかるコマンドを2行選びました。

# 最初のDatapack:ゲーム内で動作確認するためのコマンド
say Hello, World!
give @a minecraft:diamond 1

# から始まる1行目はコメントで、ゲームには影響しません。2行目の say はチャットに文字を表示し、3行目の give はダイヤモンドを1個自分に渡します。書き終えたら保存してください(Ctrl+S / Cmd+S)。

mcfunctionの中に記述している画像

続けて、data/minecraft/tags/function フォルダの中に load.json を作ります。同じく右クリック → 「新しいファイル」で load.json と入力して、次の内容を書いてください。

{
  "values": [
    "my_datapack:hellow"
  ]
}

"my_datapack:hello" は「my_datapack 名前空間の hello.mcfunction をリロード時に自動実行してね」という意味です。my_pack の部分は自分の名前空間の名前に合わせて変えてください。書き終えたら保存します。

jsonを見ている

ゲームで動かしてみよう

ファイルがすべて揃いました。ゲームを開いて、いよいよ自分で書いたコマンドを動かしてみましょう。ワールドに入ったらチャット欄を開いて、次のコマンドを実行します。

/reload

/reload は、Datapackをゲームに再読み込みさせるコマンドです。実行すると load.json が読み込まれ、登録した hello.mcfunction が自動的に実行されます。ファイルを編集したあとも、このコマンドで変更内容を反映できます。

ゲーム内でチャット欄を開き /reload と入力して実行する操作の様子

チャット欄に「Hello, World!」と表示され、インベントリにダイヤモンドが1個入っていれば成功です!自分で書いたコマンドがゲームの中で動きました。

/reload 後にチャットに「Hello, World!」が表示され、インベントリにダイヤモンドが追加されているスクリーンショット

おまけ:手動でも関数を呼び出せる

load.json に登録した関数はリロード時に自動実行されますが、チャットから手動で呼び出すこともできます。ゲームを止めずにすぐ試せるので、開発中はこちらも活用してみてください。

/function my_pack:hellow

このコマンドを実行するたびに hello.mcfunction の中身が動きます。「書く → 保存 → /reload/function で確認」のサイクルを繰り返しながら作っていくのが、Datapack制作の基本の流れです。

チャット欄で /function my_datapack:hello を手動実行している状態のスクリーンショット

まとめ

今回学んだことを振り返っておきましょう。

  • datapacks/ フォルダ内に作った my_pack フォルダをVSCodeで開いて作業する
  • pack.mcmetadata/my_datapack/function/data/minecraft/tags/function/ の3つを最初に用意する
  • .mcfunction ファイルにはスラッシュなしで1行1コマンドを書く。コマンドにミスがあるとファイルごと実行できなくなるので注意
  • load.json に「名前空間:ファイル名」の形式で登録すると、/reload 時に自動実行される
  • 次の記事からはDatapack初級編へ突入。プレイヤーへの効果付与や条件分岐など、できることが一気に広がっていきます!
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次