Datapackが動かない!よくあるエラーと対処法

「Datapackを作ったのに、ゲームに反映されない」「コマンドが動かない」——そんな経験はありませんか?この記事では、Datapack初心者が最初にぶつかるよくあるエラーとその対処法を、原因から丁寧に解説します。エラーを自力で読み解けるようになると、制作スピードが格段に上がります。

対応バージョン:Java Edition 1.21.11

目次

この記事を読む前に

以下の知識があると、この記事をスムーズに読み進められます。

まず確認:/reload を忘れずに

Datapackのファイルを編集したあとは、まず VSCode などのエディタで ファイルを保存(Ctrl+S / Mac: Cmd+S) してから、ゲーム内で /reload コマンドを実行してください。「保存」と「リロード」の両方が揃って初めて変更が反映されます。VSCode のタブに●マーク(未保存の印)が残っていたら、まだ保存されていないサインです。確認してから /reload を実行しましょう。

vscodeの保存
/reloadコマンドを実行

エラーログの読み方

/reload を実行すると、チャット欄やログファイルにエラーメッセージが表示されます。まずここを確認する習慣をつけましょう。ログファイルは .minecraft/logs/latest.log にあります。エラーが出た場合は、メッセージに含まれるファイル名や行番号をヒントに原因を探します。

フォルダの場所

よくあるエラーと対処法

エラー1:pack_format が一致していない

pack.mcmeta に記述する pack_format の値は、バージョンごとに決まっています。Java Edition 1.21.11 では 48 を指定する必要があります。値が古いままだと、Datapackが認識されなかったり、機能しない場合があります。

{
  "pack": {
    "description": "My Fast Datapack",
    "min_format": [94, 1],
    "max_format": [94, 1]
  }
}

pack_format はバージョンアップのたびに変わります。別バージョン用のDatapackを流用するときは必ず確認しましょう。

エラー2:フォルダ名・ファイルパスの間違い

Datapackのファイルは、決められたフォルダ構成に従って配置する必要があります。パスが1文字でも間違っていると、ゲームはそのファイルを認識できません。

正しい構成例(関数ファイルの場合):

my_datapack/
├── pack.mcmeta
└── data/
    └── my_namespace/
        └── function/
            └── hello.mcfunction

ポイントは、functions(複数形)ではなく function(単数形)であることです。1.21以降は単数形が正しいフォルダ名です。また、data の直下はネームスペース(自分で決める識別子)であることも忘れずに。

エラー3:複数形フォルダ名を使っている(旧バージョンの書き方)

Java Edition 1.21 以前のDatapackでは functionstags/functions のように複数形のフォルダ名が使われていました。しかし1.21以降は単数形(functiontags/function)に変更されています。古いDatapackをそのまま使うと動かない原因になります。

// 旧バージョン(1.20以前)
data/my_namespace/functions/hello.mcfunction
data/my_namespace/tags/functions/tick.json

// 1.21以降(正しい書き方)
data/my_namespace/function/hello.mcfunction
data/my_namespace/tags/function/tick.json

エラー4:.mcfunction の構文ミス

.mcfunction ファイルの中にコメントや空行は問題ありませんが、コマンドの書き方が1文字でも間違っていると、そのコマンドだけ(または関数全体が)実行されません。よくあるミスを確認しましょう。

  • スペルミス:saysa と書くなど
  • スラッシュを先頭につける:/say Hello と書いてしまう(.mcfunction 内ではスラッシュは不要)
  • 全角スペースや全角文字の混入:日本語IMEがオンのまま書いてしまうことが原因
# 正しい例
say Hello, World!
give @a diamond 1

# よくある間違い(スラッシュをつけてしまっている)
/say Hello, World!
/give @a diamond 1

エラー5:load.json / tick.json のパスが間違っている

関数を自動で実行させるために使う load.jsontick.json は、minecraft ネームスペース下の特定のパスに配置する必要があります。また、中に書く関数のパスも正確に記述しなければなりません。

// ファイルの配置場所
data/minecraft/tags/function/load.json
data/minecraft/tags/function/tick.json

// load.json の中身(例)
{
  "values": [
    "my_namespace:setup"
  ]
}

values に書く関数名は ネームスペース:フォルダパス/ファイル名 の形式です。.mcfunction の拡張子は書きません。

エラー6:ネームスペースに大文字や記号を使っている

ネームスペース(data/ 直下のフォルダ名)には、小文字の英数字・アンダースコア(_)・ハイフン(-)のみ使用できます。大文字や日本語、スペースを含めるとDatapackが正しく認識されません。

// 良い例
my_datapack
mypack
my-namespace

// 悪い例(使ってはいけない)
MyDatapack
マイパック
my namespace

まとめ

  • ファイルを変更したら VSCode で必ず保存(Ctrl+S)してから、/reload を実行し、チャット欄のエラーログを確認する
  • pack_format はバージョンに対応した値(1.21.11 では 94.1)を指定する
  • 1.21以降はフォルダ名が function(単数形)に変わっている点に注意する
  • .mcfunction 内ではコマンドの先頭にスラッシュは不要
  • ネームスペースには小文字・アンダースコア・ハイフンのみ使用可能

エラーが解消してDatapackが動くようになったら、次は「13. Datapackを配布用にzip化して公開しよう」で、作ったDatapackを他の人に配れる形に仕上げる方法を学んでみましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次