この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
こんにちは!
マインクラフターのなつめ(@natsume_717b)です。
この記事では、こんな疑問を解決します!
- referenceはpredicateを指示する
- 実際の例
referenceは既に作成したpredicateを指示するpredicateです。
既に作成したものを指示して何をするのかと言うと、その指示したpredicateの結果をもとに真偽を決めます。
つまり、実質的に指示したpredicateと同じ条件を示すわけですね。
詳しく見ていきましょう!
本記事で紹介するデータパックのサンプルはGitHubにてダウンロードできます。
referenceはpredicateを指示する

referenceでは、既に作成したpredicateを指示します。
指示したpredicateが真となるならば、referenceも真となるという項目ですね。
ただ、指示したpredicateを呼び出すだけなので「何の意味があるのか?」と思う方もいるかと思います。
これは繰り返し書く際に簡単に指示できるための機能だと筆者は認識しています。
あまりにも情報がなかったため、詳細を知っている方は情報提供していただけると嬉しいです。
例えば、平野にいることを指示したlocation_checkのpredicateをreferenceで指示したなら、平野にいるかどうかで真偽を問います。
今回は例なのでシンプルですが、これがall_ofやany_ofなど複数項目を書く項目になると話が違います。
複雑なpredicateを繰り返し書かなきゃいけない場合でも、referenceでpredicateを指示するだけで、簡単かつミスも減らせるというわけですね。
実際の例

実際にデータパックを作成するとどうなるのか見ていきます。
今回は先ほども例に挙げた、平野にいることを条件とするlocation_checkをreferenceで指示します。
データパックの構造は以下の通り。
- datapack本体
- data
- sample
- predicates
- location_check.json
- reference.json
- predicates
- sample
- pack.mcmeta
- data
pack.mcmetaとjsonファイル以外は全てフォルダになります。
pack.mcmetaの中身は以下の通り。
{
"pack": {
"pack_format": 26,
"description": ""
}
}
jsonファイルはそれぞれ以下の通り。
まずはlocation_check.jsonから見ていきます。
{
"condition": "minecraft:location_check",
"predicate": {
"biome": "minecraft:plains"
}
}
上記の内容を呼び出すreference.jsonの内容がこちら。
{
"condition": "minecraft:reference",
"name": "sample:location_check"
}
ただただlocation_check.jsonを呼び出しているだけです。
なので、コード自体に難しいことはないですね。
一応、生成サイトのリンクも記載しておきます。
このように指示することができたら、あとはコマンドで使用するだけです。
/execute if predicate sample:reference run give @a diamond 1
平野にいる場合には真となり、ダイヤモンドが付与されます。
また、今回はpredicateでの使用方法を解説しましたが、ルートテーブルや進捗でもcondition部分に指示することが可能です。
まとめ
というわけで、今回のまとめです。
- referenceは既に作成したpredicateを指示することのできる項目。
この記事は以上になります。
2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!