
この記事はJava版のデータパック初心者〜中級者向けです
function・tag・predicate・loot tableの関係を、実際に組む順番で整理します
Java版1.21以降はフォルダ名が大きく変わっているので、古い解説を見ている方は特に注意です
こんにちは。ゆずかきです。
マイクラJava版でデータパックを触り始めると、最初にぶつかるのが、
「functionって何?」
「tagってどこに置くの?」
「predicateとloot tableって何が違うの?」
「結局、どのファイルがどのファイルを呼んでいるの?」
というところだと思います。
筆者も最初、ここでかなり混乱しました。
コマンド単体ならまだ分かるんですが、データパックになると急に、フォルダ名・名前空間・JSON・mcfunction・タグが同時に出てくるんですよね。
ただ、仕組みを分けて見るとかなりシンプルです。
- function:コマンドをまとめて実行するファイル
- tag:ブロック・アイテム・functionなどをグループ化するファイル
- predicate:条件判定をまとめるファイル
- loot table:ドロップやチェスト中身を決めるファイル
この4つの関係が分かると、データパック作りは一気に見通しが良くなります。
この記事では、マイクラJava版のデータパックのコマンド構成を、function・tag・predicate・loot tableの順番で整理していきますね。
※本記事はJava版データパック向けです。統合版のビヘイビアーパックとは構成が異なります。
※Java版1.21以降のフォルダ構成を中心に解説しています。
※執筆時点ではJava版26.1.2が最新安定版、26.2はスナップショット段階です。
目次
1. データパックのコマンド構成とは
2. まず知っておくべきフォルダ構成
3. functionとは|コマンドをまとめる本体部分
4. tagとは|functionやアイテムをまとめる名簿
5. predicateとは|条件判定を外に出す仕組み
6. loot tableとは|ドロップやチェスト中身を決める仕組み
7. function・tag・predicate・loot tableの関係
8. 実例:ゾンビに条件付き追加ドロップを作る
9. Java版1.21以降で特に注意する変更点
10. よくあるエラーとチェックポイント
11. まとめ
12. 引用・参考文献
この記事で分かること
・Java版データパックの基本構成
・function / tag / predicate / loot tableの役割
・1.21以降の単数フォルダ名の注意点
・「Unknown function」「データパックが読み込まれない」時の見直しポイント

1. データパックのコマンド構成とは
マイクラJava版のデータパックは、簡単に言うと、ワールドに追加できるカスタム処理のまとまりです。
Modのようにゲーム本体へプログラムを追加するわけではありません。
マイクラに元から用意されている、
- コマンド
- 進捗
- レシピ
- ルートテーブル
- タグ
- 条件判定
- ワールド生成データ
などを、フォルダとJSONファイルで上書き・追加していく仕組みです。
このうち、コマンド系のデータパックで中心になるのが、今回扱う4つです。
| 要素 | 役割 | 主な使い道 |
|---|---|---|
| function | コマンドをまとめる | 定期処理・初期化・装置処理 |
| tag | 対象をまとめる | tick/load実行、アイテム分類、ブロック分類 |
| predicate | 条件を判定する | ランダム確率、天候、位置、エンティティ条件 |
| loot table | ドロップを決める | モブドロップ、ブロックドロップ、チェスト戦利品 |
最初に結論を言うと、functionだけでもデータパックは作れます。
ですが、少し凝った処理を作ろうとすると、すぐに、
- 自動でfunctionを実行したい
- アイテムをまとめて判定したい
- 条件分岐を外部ファイルに分けたい
- モブのドロップを変えたい
という話になります。
その時に出てくるのが、tag・predicate・loot tableです。
体験談
筆者は最初、全部functionに書けば良いと思っていました。
でも、ドロップ変更や条件分岐までfunctionに寄せると、ファイルが一気に読みにくくなります。
👉役割ごとにファイルを分ける方が、後から修正しやすいです。
ここから、1つずつ見ていきましょう。

2. まず知っておくべきフォルダ構成
データパックは、ワールドフォルダ内のdatapacksフォルダに入れます。
基本の場所は、シングルプレイなら次の通りです。
.minecraft/saves/ワールド名/datapacks/
サーバーなら、基本的にはワールドフォルダの中です。
server_folder/world/datapacks/
そして、データパック本体はこんな形になります。
yuzukaki_datapack/
├─ pack.mcmeta
└─ data/
├─ minecraft/
│ └─ tags/
│ └─ function/
│ ├─ load.json
│ └─ tick.json
└─ yuzukaki/
├─ function/
│ ├─ load.mcfunction
│ ├─ tick.mcfunction
│ └─ sample.mcfunction
├─ predicate/
│ ├─ random_bonus.json
│ └─ player_bonus.json
├─ loot_table/
│ └─ gameplay/
│ └─ sample_bonus.json
└─ tags/
└─ item/
└─ bonus_items.json
ここで大事なのは、Java版1.21以降は、多くのフォルダ名が単数形になっていることです。
昔の解説だと、
functions loot_tables predicates recipes advancements
のように複数形で書かれていることがあります。
ですが、Java版1.21以降では、基本的に次のように書きます。
function loot_table predicate recipe advancement
これ、かなり重要です。
筆者も昔の情報を見ながら組んで、functionsフォルダに.mcfunctionを入れて、ずっと読み込まれない…という状態になりました。
1.21以降でfunctionが動かない時は、まずフォルダ名を確認してください。
pack.mcmetaの例
Java版1.21.9以降は、パック形式にマイナーバージョンが入るようになりました。
そのため、現在の形式ではmin_formatとmax_formatを書く形が基本になります。
例:Java版26.1〜26.1.2向け
{ "pack": { "min_format": [101, 1], "max_format": [101, 1], "description": "Yuzukaki sample datapack" } }
例:Java版1.21.11向け
{ "pack": { "min_format": [94, 1], "max_format": [94, 1], "description": "Yuzukaki sample datapack" } }
94.1や101.1のように小数っぽく見えますが、実際にはメジャー番号とマイナー番号の組み合わせとして扱うのが安全です。
[94, 1]
このように、配列で書くイメージですね。
※古いバージョン向けのデータパックではpack_formatを使う解説もあります。作りたい対象バージョンに合わせて書き方を変えてください。
※1.21.8以前の解説と、1.21.9以降の解説が混ざると混乱しやすいので注意です。

3. functionとは|コマンドをまとめる本体部分
functionは、データパックの中でコマンドをまとめて実行するファイルです。
ファイルの拡張子は、.mcfunctionです。
data/yuzukaki/function/sample.mcfunction
この場所に置いた場合、ゲーム内では次のように呼び出せます。
/function yuzukaki:sample
実際の.mcfunctionファイルの中身は、こんな感じです。
say データパックのfunctionが動きました give @p minecraft:diamond 1
通常のチャット欄でコマンドを打つ時は、先頭に/を付けますよね。
でも、.mcfunctionファイル内では、先頭のスラッシュは不要です。
# OK say こんにちは # NG /say こんにちは
これも初心者さんがかなりやりがちなミスです。
functionの使いどころ
functionは、次のような処理に向いています。
- ワールド読み込み時に初期設定をする
- 毎tick、または一定時間ごとに処理する
- スコアボードを使ってタイマーを作る
- 特定条件のプレイヤーに効果を付ける
- コマンドブロックの処理をファイル化する
例えば、読み込み時にスコアボードを作るなら、こんな感じです。
scoreboard objectives add yuzu_timer dummy
tellraw @a {"text":"データパックを読み込みました","color":"green"}
このような初期化処理をload.mcfunctionにまとめておくと、管理しやすいです。
functionは自動では動かない
ここが大事です。
data/yuzukaki/function/load.mcfunctionを作っただけでは、自動実行されません。
自動で動かすには、次の章で説明するfunction tagを使います。
重要
.mcfunctionは「実行されるコマンドの中身」です。
ただし、勝手に実行されるわけではありません。
👉自動実行したい場合は、minecraft:loadやminecraft:tickのタグに登録します。

4. tagとは|functionやアイテムをまとめる名簿
tagは、マイクラ内の要素をまとめるための仕組みです。
ブロックタグ、アイテムタグ、エンティティタイプタグ、functionタグなどがあります。
イメージとしては、名簿です。
例えば、
- このアイテムたちは全部「ボーナス対象」
- このブロックたちは全部「特定ツールで壊せる対象」
- このfunctionたちは毎tick実行する
というように、複数の対象を1つの名前でまとめられます。
function tagの基本
データパックで特によく使うのが、function tagです。
Java版1.21以降では、次の場所に置きます。
data/minecraft/tags/function/load.json
中身はこうです。
{ "values": [ "yuzukaki:load" ] }
これで、yuzukaki:loadが/reload時やワールド読み込み時に実行されます。
毎tick実行したい場合は、こちらです。
data/minecraft/tags/function/tick.json
{ "values": [ "yuzukaki:tick" ] }
これで、yuzukaki:tickが毎tick実行されます。
マイクラは通常1秒20tickなので、毎秒20回です。
tickに重い処理を書きすぎない
tickは便利ですが、使いすぎるとワールドが重くなります。
例えば、毎tickすべてのプレイヤー・すべてのエンティティに対して重いexecuteを走らせると、サーバー負荷が上がります。
初心者さん向けには、まずタイマーを挟むのがおすすめです。
scoreboard players add yuzu.timer yuzu_timer 1 execute if score yuzu.timer yuzu_timer matches 1200.. run function yuzukaki:minute
scoreboard players set yuzu.timer yuzu_timer 0 say 1分ごとの処理です
1200tickは約60秒です。
毎tick動かす必要がない処理は、こうやって間隔を空けると安定しやすいです。
アイテムタグの例
アイテムタグは、複数アイテムをまとめて扱いたい時に使います。
data/yuzukaki/tags/item/bonus_items.json
{ "replace": false, "values": [ "minecraft:diamond", "minecraft:emerald", "minecraft:gold_ingot" ] }
このタグは、#yuzukaki:bonus_itemsとして参照できます。
覚え方
functionは「実行する中身」
tagは「まとめる名簿」
こう覚えると分かりやすいです。

5. predicateとは|条件判定を外に出す仕組み
predicateは、条件判定をJSONファイルにまとめる仕組みです。
例えば、
- ランダムで5%だけ成功する
- プレイヤーが倒した時だけ成功する
- 雨が降っている時だけ成功する
- 特定の場所にいる時だけ成功する
という条件を書けます。
functionの中にexecute ifをたくさん書いても条件分岐はできます。
ですが、条件が複雑になってくると、functionファイルがどんどん読みにくくなります。
そこで、条件部分だけをpredicateに分けると管理しやすくなります。
predicateファイルの例
data/yuzukaki/predicate/player_bonus.json
{ "condition": "minecraft:all_of", "terms": [ { "condition": "minecraft:killed_by_player" }, { "condition": "minecraft:random_chance", "chance": 0.05 } ] }
これは、
- プレイヤーが倒した
- さらに5%の確率に当選した
この両方を満たした時だけ成功するpredicateです。
ただし、minecraft:killed_by_playerは、ルートテーブルのようにキル時の情報が渡される場面向けです。
execute if predicateから使う場合は、その実行文脈だけで判定できる条件にしておくと安全です。
functionからpredicateを使う例
functionからは、execute if predicateで使えます。
例えば、ランダム判定だけをfunction側で使うなら、次のようなpredicateにします。
data/yuzukaki/predicate/random_bonus.json
{ "condition": "minecraft:random_chance", "chance": 0.05 }
function側では、次のように呼び出せます。
execute if predicate yuzukaki:random_bonus run say 条件に成功しました
これで、条件に成功した時だけsayが実行されます。
loot tableからpredicateを使う例
loot table内では、minecraft:referenceを使ってpredicateを呼べます。
{ "condition": "minecraft:reference", "name": "yuzukaki:player_bonus" }
つまり、predicateはfunctionとloot tableの両方から使える、共通の条件ファイルとして扱えます。
ただし、killed_by_playerやmatch_toolのように、その場面の情報が必要な条件もあるので、どこから呼ぶかは少し注意しましょう。
体験談
筆者は最初、loot tableの中に条件を直接書き続けていました。
ただ、条件が増えるとJSONが長くなって、どこで何を判定しているか分からなくなります。
👉何度も使う条件はpredicateに分けるのがおすすめです。

6. loot tableとは|ドロップやチェスト中身を決める仕組み
loot tableは、モブやブロック、チェストなどから出るアイテムを決めるJSONファイルです。
代表的な使い道は、次の通りです。
- ゾンビのドロップを変更する
- ブロックを壊した時のドロップを変更する
- ダンジョンチェストの中身を変更する
- 釣りで出るアイテムを変更する
- コマンドの
/lootで独自テーブルを呼ぶ
例えば、ゾンビのドロップを上書きしたい場合は、Java版1.21以降なら次の場所に置きます。
data/minecraft/loot_table/entities/zombie.json
minecraft名前空間に置くのは、バニラのゾンビのルートテーブルを上書きするためです。
逆に、独自のルートテーブルを作るだけなら、次のように自分の名前空間でOKです。
data/yuzukaki/loot_table/gameplay/sample_bonus.json
loot tableの基本例
下の例は、5%の確率でダイヤを追加ドロップするイメージです。
{ "type": "minecraft:entity", "pools": [ { "rolls": 1, "entries": [ { "type": "minecraft:item", "name": "minecraft:rotten_flesh", "functions": [ { "function": "minecraft:set_count", "count": { "type": "minecraft:uniform", "min": 0, "max": 2 } } ] } ] }, { "rolls": 1, "conditions": [ { "condition": "minecraft:killed_by_player" }, { "condition": "minecraft:random_chance", "chance": 0.05 } ], "entries": [ { "type": "minecraft:item", "name": "minecraft:diamond" } ] } ] }
構造だけ見ると難しく見えますが、分解すると、
type:どんな場面のルートテーブルかpools:抽選グループrolls:抽選回数conditions:抽選する条件entries:候補アイテムfunctions:個数や名前などの加工
という形です。
loot functionとfunctionは別物です
ここ、名前が紛らわしいです。
.mcfunctionのfunctionは、コマンドを実行するファイルです。
一方で、loot table内のfunctionsは、生成されたアイテムを加工する処理です。
例えば、minecraft:set_countはアイテム数を変えるloot functionです。
これは、data/yuzukaki/function/sample.mcfunctionのfunctionとは別物です。
注意
loot tableはアイテムドロップを決める仕組みです。
通常のコマンド処理を動かしたい場合は、.mcfunction側で組みます。
名前が似ているので、ここは混同しないようにしましょう。

7. function・tag・predicate・loot tableの関係
ここまでの話を、関係図っぽく文字でまとめるとこうです。
データパック ├─ function │ └─ コマンドをまとめて実行する │ ├─ tag │ ├─ functionを自動実行に登録する │ ├─ item/block/entity_typeなどをまとめる │ └─ #タグ名で参照できる │ ├─ predicate │ ├─ 条件判定をまとめる │ ├─ functionから execute if predicate で使える │ └─ loot tableから reference で使える │ └─ loot_table ├─ モブ・ブロック・チェストなどのドロップを決める ├─ conditionsでpredicate的な条件を使える └─ tagを使ってアイテムグループを参照できる
大事なのは、全部が同じ役割ではないということです。
例えば、
- 毎tick処理したい → function + function tag
- 条件を分けたい → predicate
- ドロップを変えたい → loot table
- アイテムをまとめて参照したい → item tag
という感じで、目的によって使うファイルが変わります。
predicateは便利ですが、条件によってはloot tableのキル情報や採掘ツール情報など、呼び出し元の文脈が必要になるものもあります。
同じpredicateファイルでも、functionから呼ぶのか、loot tableから呼ぶのかは確認しておくと安心です。
実用的な組み合わせ
よく使う組み合わせを表にすると、こんな感じです。
| やりたいこと | 使うもの | 考え方 |
|---|---|---|
| ワールド読み込み時に初期化 | function + tag | loadタグにfunctionを登録 |
| 毎tick処理 | function + tag | tickタグにfunctionを登録 |
| 確率処理 | predicate | random_chanceで判定 |
| モブドロップ変更 | loot table | バニラのルートテーブルを上書き |
| 条件付きドロップ | loot table + predicate | conditionsで条件を付ける |
| 複数アイテムをまとめる | tag | #タグ名で呼び出す |
まずは、functionとtagで自動実行を作るところから始めるのが一番分かりやすいです。
その後、条件が欲しくなったらpredicate。
ドロップを触りたくなったらloot table。
こういう順番で覚えると迷子になりにくいです。

8. 実例:ゾンビに条件付き追加ドロップを作る
ここでは、実際に、
ゾンビをプレイヤーが倒した時、5%の確率でダイヤを追加ドロップする
という構成を作るイメージで見ていきます。
※分かりやすさ優先のサンプルです。実際のワールドに入れる前に、必ずバックアップを取ってくださいね。
1. データパックのフォルダを作る
まず、ワールドのdatapacks内にフォルダを作ります。
yuzukaki_zombie_bonus/
├─ pack.mcmeta
└─ data/
├─ minecraft/
│ └─ loot_table/
│ └─ entities/
│ └─ zombie.json
└─ yuzukaki/
└─ predicate/
└─ player_bonus.json
今回はゾンビのドロップを上書きするので、zombie.jsonはdata/minecraft/loot_table/entities/に置きます。
2. predicateを作る
data/yuzukaki/predicate/player_bonus.json
{ "condition": "minecraft:all_of", "terms": [ { "condition": "minecraft:killed_by_player" }, { "condition": "minecraft:random_chance", "chance": 0.05 } ] }
これで、
- プレイヤーが倒した
- 5%抽選に当たった
という条件を1つにまとめられました。
3. ゾンビのloot tableを作る
data/minecraft/loot_table/entities/zombie.json
{ "type": "minecraft:entity", "pools": [ { "rolls": 1, "entries": [ { "type": "minecraft:item", "name": "minecraft:rotten_flesh", "functions": [ { "function": "minecraft:set_count", "count": { "type": "minecraft:uniform", "min": 0, "max": 2 } } ] } ] }, { "rolls": 1, "conditions": [ { "condition": "minecraft:reference", "name": "yuzukaki:player_bonus" } ], "entries": [ { "type": "minecraft:item", "name": "minecraft:diamond" } ] } ] }
この例では、2つ目のpoolに条件を付けています。
{ "condition": "minecraft:reference", "name": "yuzukaki:player_bonus" }
ここで、さっき作ったpredicateを呼んでいます。
つまり、loot tableがpredicateを参照して、条件に成功した時だけダイヤを候補に入れるという形です。
4. /reloadで読み込む
データパックを入れたら、ゲーム内で次を実行します。
/reload
読み込みに失敗した場合は、チャットやログにエラーが出ることがあります。
特にJSONのカンマ抜けや、フォルダ名のミスはかなり多いです。
5. 動作確認する
クリエイティブの検証用ワールドで、ゾンビを倒して確認します。
/summon minecraft:zombie ~ ~ ~
5%なので、数体倒しただけでは出ないことがあります。
検証時は一時的にchanceを1.0にして、必ず出る状態で確認すると楽です。
{ "condition": "minecraft:random_chance", "chance": 1.0 }
動作確認が終わったら、0.05に戻しましょう。
検証のコツ
最初から低確率で試すと、動いていないのか、単に当たっていないのか分かりません。
👉まず100%で動作確認、その後に確率を戻すのがおすすめです。

9. Java版1.21以降で特に注意する変更点
データパック解説で一番混乱しやすいのが、バージョン差分です。
特にJava版1.21以降は、古い記事と新しい記事でフォルダ名が違うことがあります。
1. フォルダ名が単数形になった
Java版1.21以降では、次のように単数形を使います。
| 用途 | 1.20以前でよく見る表記 | 1.21以降の表記 |
|---|---|---|
| function | functions | function |
| loot table | loot_tables | loot_table |
| predicate | predicates | predicate |
| recipe | recipes | recipe |
| advancement | advancements | advancement |
| function tag | tags/functions | tags/function |
ここを間違えると、データパック自体は認識されているのに、functionだけ見つからない…という状態になります。
2. pack.mcmetaの書き方が変わった
Java版1.21.9以降、データパック形式にマイナーバージョンが入るようになりました。
例えば、Java版1.21.11ではデータパック形式が94.1です。
Java版26.1系では101.1です。
この場合、pack.mcmetaでは次のように配列で指定すると分かりやすいです。
{ "pack": { "min_format": [94, 1], "max_format": [94, 1], "description": "1.21.11 datapack" } }
{ "pack": { "min_format": [101, 1], "max_format": [101, 1], "description": "26.1 datapack" } }
3. 古いsupported_formatsは注意
古い解説では、supported_formatsを使っている例もあります。
ただし、新しい形式では扱いが変わっているため、1.21.9以降向けに作る場合は、まずmin_formatとmax_formatを確認してください。
特に、
- 古い記事の
pack_formatだけを更新した 94.1を小数として書いた- 古い
functionsフォルダをそのまま使った
このあたりは、動かない原因になりやすいです。
4. 26.2はスナップショット段階なので注意
執筆時点では、Java版26.2はSnapshot 8まで公開されています。
スナップショット版はデータパック形式も変わりやすく、途中で仕様変更が入ることがあります。
サバイバル本ワールドで使うデータパックは、基本的には安定版に合わせるのが安心です。
筆者の考え
スナップショットで新機能を触るのは楽しいですが、配布用・長期ワールド用のデータパックは安定版基準がおすすめです。
👉本ワールドに入れる前に、必ず検証用ワールドで確認しましょう。

10. よくあるエラーとチェックポイント
データパックが動かない時は、原因の多くがかなり基本的なところにあります。
筆者がよく確認するポイントをまとめますね。
データパック自体が認識されない
- [ ]
pack.mcmetaがデータパック直下にあるか? - [ ]
pack.mcmeta.txtになっていないか? - [ ] JSONのカンマや波括弧が壊れていないか?
- [ ]
datapacksフォルダの中に、データパック本体フォルダを入れているか? - [ ] zip化している場合、zipの中にさらにフォルダが二重で入っていないか?
functionが見つからない
- [ ] Java版1.21以降なのに
functionsフォルダに入れていないか? - [ ] 正しくは
data/名前空間/function/になっているか? - [ ] ファイル名が
.mcfunctionになっているか? - [ ] function内のコマンド先頭に
/を付けていないか? - [ ] 名前空間やファイル名に大文字・スペースを使っていないか?
load / tickが動かない
- [ ]
data/minecraft/tags/function/load.jsonに置いているか? - [ ]
data/minecraft/tags/function/tick.jsonに置いているか? - [ ]
valuesに書いたfunction名が実在しているか? - [ ]
/reloadを実行したか? - [ ]
load.jsonやtick.jsonのJSON構文が壊れていないか?
predicateが効かない
- [ ]
data/名前空間/predicate/に置いているか? - [ ]
condition名が正しいか? - [ ]
minecraft:referenceで呼ぶ名前が合っているか? - [ ] 呼び出し元の文脈に合わない条件を使っていないか?
- [ ] 低確率のまま検証していないか?
- [ ] まず
chance: 1.0で試したか?
loot tableが反映されない
- [ ] 上書きしたい対象の名前空間が合っているか?
- [ ] ゾンビ上書きなら
data/minecraft/loot_table/entities/zombie.jsonになっているか? - [ ] Java版1.21以降なのに
loot_tablesになっていないか? - [ ]
typeやpoolsのJSON構造が壊れていないか? - [ ] 他のデータパックと上書きが競合していないか?
まず試すコマンド
データパックが読み込まれているか確認するなら、次を使います。
/datapack list
functionが候補に出るか確認するなら、途中まで入力して補完を見るのも有効です。
/function yuzukaki:
ここで候補に出ない場合、たいていはフォルダ名・名前空間・ファイル名のどこかが違います。
トラブル時のコツ
いきなり複雑な処理を作らず、まずsay testだけのfunctionを作って読み込み確認しましょう。
それが動いてから、predicateやloot tableを足す方が原因を切り分けやすいです。

11. まとめ
今回は、マイクラJava版データパックのコマンド構成として、function・tag・predicate・loot tableの関係を整理しました。
要点をまとめると、
- functionは、コマンドをまとめて実行するファイル
- tagは、functionやアイテムなどをまとめる名簿
- predicateは、条件判定を外部ファイル化する仕組み
- loot tableは、モブ・ブロック・チェストなどのドロップを決める仕組み
- Java版1.21以降は、
function・loot_table・predicateなど単数形フォルダ名に注意 - Java版1.21.9以降は、
pack.mcmetaのmin_format・max_formatも確認する
という感じです。
最初は専門用語が多くて難しく感じますが、実際は、
function = コマンド本体 tag = 名簿 predicate = 条件 loot table = ドロップ表
と分けて考えるとかなり理解しやすいです。
特に、データパック初心者さんは、まずこの順番がおすすめです。
say testだけのfunctionを作るload.jsonで自動実行するtick.jsonで毎tick処理を作る- predicateで条件を分ける
- loot tableでドロップを変更する
この流れで慣れていけば、コマンドブロックでは作りにくかった処理も、データパックとしてかなり整理して組めるようになります。
では、本日はここまでで終わります。
最後までご覧いただき、ありがとうございました。
柚子クラでは、他にもマイクラJava版の便利装置・コマンド・データパック系の解説をまとめていくので、ぜひ他の記事もご覧くださいね(^^♪

12. 引用・参考文献
この記事を書くにあたり、以下の公式リリースノート・Minecraft Wiki・データパック関連資料を参考にしています。
- Minecraft Wiki(Data pack)
- Minecraft Wiki(Function / Java Edition)
- Minecraft Wiki(Tag)
- Minecraft Wiki(Predicate)
- Minecraft Wiki(Loot table)
- Minecraft Wiki(Pack format)
- Minecraft公式(Minecraft Java Edition 1.21)
- Minecraft公式(Minecraft Java Edition 1.21.9)
- Minecraft公式(Minecraft Java Edition 1.21.11)
- Minecraft公式(Minecraft Java Edition 26.1)
- Minecraft公式(Minecraft Java Edition 26.1.2)
- Minecraft公式(Minecraft 26.2 Snapshot 8)
- Misode(Pack.mcmeta Generator)