この記事では、Minecraft Java Edition(バージョン1.20.5)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
こんにちは!
マインクラフターのなつめです。
この記事では、こんな疑問を解決します!
- filteredで条件が合ったときのみ適用する
- 実例
filteredは対象となるアイテムが適切かどうかを確認することが出来ます。
その確認を経てitem_modifierを適用するかどうかが決まるので、条件分岐として活用できるのが特徴です。
具体的な使い方を紹介しているので、ぜひ参考にしてくださいね。
それでは、さっそく見ていきましょう!
本記事で紹介するデータパックのサンプルはGitHubにてダウンロードできます。
filteredで条件が合ったときのみ適用する
filteredを使用することで、対象となるアイテムが適切な場合だけにitem_modifierを適用させることが可能です。
例えば、「ダイヤモンドが1つだけ、名前を変更する」という指示をした場合には、ダイヤモンドが1つの時にだけ名前が変更されます。
イメージとしては、フィルターとなる部分と、呼び出されるitem_modifierを設定するという感じになります。
名前が変更する場合には、呼び出されるitem_modifierとしてset_nameを指示します。
複雑なものであれば、referenceで既に作成したものを呼び出すのがおすすめです。
実例
実際の例を見てみましょう。
まずはデータパックの構造からです。
- データパック本体
- data
- minecraft
- loot_tables
- entities
- cod.json
- entities
- loot_tables
- フォルダー
(今回はsampleと命名したとします)- item_modifiers
- jsonファイル
(今回はtest.jsonと命名したとします)
- jsonファイル
- item_modifiers
- minecraft
- pack.mcmeta
- data
タラのドロップ品を変更しているほか、item_modifierとしてfilteredを呼び出せるようにしてます。
ルートテーブルの場合は選ばれたアイテムが適切かどうか。
item_modifierの場合は対象としたスロットにあるアイテムが適切かどうかをチェックします。
item_modifierとしての記述例
以下はダイヤモンドが1つだけ対象となった場合に、名前が「成功!」に変更されるよう指示しているものです。
{
"function": "minecraft:filtered",
"item_filter": {
"items": "minecraft:diamond",
"count": 1
},
"modifier": {
"function": "minecraft:set_name",
"entity": "this",
"target": "item_name",
"name": "成功!"
}
}
適用するには、itemコマンドを使用すればOKです。
/item modify entity @s weapon.mainhand sample:test
ルートテーブルとしての記述例
ルートテーブルの記述例としては、以下のようなものになります。
{
"type": "minecraft:entity",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:emerald",
"functions": [
{
"function": "minecraft:filtered",
"item_filter": {
"items": "minecraft:emerald",
"count": 1
},
"modifier": {
"function": "minecraft:set_name",
"entity": "this",
"target": "item_name",
"name": "成功!"
}
}
]
}
]
}
]
}
エメラルドが1つだけドロップする場合に、「成功!」と名前になるよう指示されています。
上記のルートテーブルでは1つのエメラルドしかドロップしませんが、数が変動する場合などにはその時々に応じてitem_modifierが適用されるかどうか判断されます。
まとめ
というわけで、今回のまとめです。
- filteredを指示することで、対象となるアイテムが適切かどうかによってitem_modifierを適用するかどうかを決められます。
この記事は以上になります。
2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!