【マイクラ】java版 で advancements 機能を使ってイベントを取得してみる

function 機能 を使う時は、tick を loop で実行することが多いが、

イベントを取得できる方法がわかった。

advancements 【進捗】を利用する。

world / datapacks /【データパック名】/ data/<名前>/advancements/<進捗名>.<名前>.json

root.json

{
    "display": {
        "title": "",
        "description": "",
        "icon": {
            "item": "air"
        }
    },
    "criteria": {
        "<一意の名前01>": {
            "trigger": "impossible"
        }
    }
}

リンゴを食べた時のイベントを取得。

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": "【ファンクションのパス】"
    }
}