function 機能 を使う時は、tick を loop で実行することが多いが、
いくつかのイベントが取得できることがわかった。
advancements 【進捗】を利用する。
world / datapacks /【データパック名】/ data/<名前>/advancements/<進捗名>.root.json
root.json
{
"display": {
"title": "",
"description": "",
"icon": {
"item": "air"
}
},
"criteria": {
"<一意の名前その01>": {
"trigger": "impossible"
}
}
}
リンゴを食べた時のイベントを取得する場合。
world / datapacks /【データパック名】/ data/<名前>/advancements/<進捗名>.test.json
test.json
{
"parent": "【データパック名】:<進捗名>/root",
"display": {
"title": "",
"description": "",
"icon": {
"item": "air"
},
"show_toast": false,
"announce_to_chat": false
},
"criteria": {
"<一意の名前その02>": {
"trigger": "consume_item",
"conditions": {
"item": {
"item": "apple"
}
}
}
},
"rewards": {
"function": "【ファンクションのパス】"
}
}
【ファンクションのパス】
advancement revoke @s only 【データパック名】:<進捗名>/test
実行した function【ファンクションのパス】 で、進捗をなかったことにすると、何度も使える。