見出し画像

[Minecraft Java 1.20.5] componentsについて


はじめに

初めまして、borshchです。

私は普段からMinecraftのデータパックを作って遊んでいたのですが、4/23にver1.20.5が更新されコマンドやデータパック周りに大幅な変更が加わったらしいので調査していきます。

具体的にどのような変更が加わったのかというと・・・

We have made some large changes to how Item Stack-specific properties are stored and represented in this release, replacing the current NBT 'tag' with structured 'components'.

MINECRAFT JAVA EDITION 1.20.5(公式ページ)

どうやらアイテムの情報をnbtタグではなく『components』で管理するようになったらしいです。

上記のページには具体的な仕様も書かれていたのですが、実際に触ってみたほうがわかりやすそう・・・

ということで、この記事では実際にMinecraftを遊びながらcomponentsの仕様を確かめていきたいと思います。

実際に遊んで確認してみる

まずは適当なアイテムを投げてみてエンティティデータを確認しましょうか。

早速ワールドを作り、以下のコマンドを打ってみます。

/data get entity @e[type=item,sort=nearest,limit=1]
アイテム化したジャングルの原木が持つエンティティデータ (ver1.20.4)
アイテム化したジャングルの原木が持つエンティティデータ (ver1.20.5)

うーん変わってないですね・・・

あくまで『アイテムが持っているnbtタグ』が更新対象のため、エンティティが持っているnbtタグは変更されないということでしょうか。

ジャングルの原木自体はnbtタグを持っていないため、エンティティデータの変更もなかったみたいです。

ということで次はnbtタグを持っているアイテムのエンティティデータを確認しています。

アイテム化した怪しげなシチューが持つエンティティデータ (ver1.20.4)
アイテム化した怪しげなシチューが持つエンティティデータ (ver1.20.5)

Itemの中身が変わってますね。両者比較してみると飲んだ時に得られるバフ効果の表記が変化していることがわかります。

tag: {
    effects: [
        {
            duration: 7,
            id: "minecraft:saturation"
        }
    ]
}
components: {
    "minecraft:suspicious_stew_effects": [
        {
            duration: 7,
            id: "minecraft:saturation"
        }
    ]
}

上が ver1.20.4 、下が ver1.20.5 です。今までtagで管理されていたものがcomponentsで管理されるようになっています。

最大の変更点はフィールドの名前がわかりやすくなったことでしょうか。今まではバフの内容はeffectタグで指定されていたのが ver1.20.5 では "minecraft:suspicious_stew_effects" に代わっています。

今までは同じeffectタグでも怪しげなシチューが持っているものとポーションが持っているもので意味が変わっていましたが、そのあたりの判別がつきやすくなっていますね。

おわりに

今回はcomponentsの仕様を確認してみましたが、表示形式が変わっただけで中身はnbtタグとあまり変わらないように感じました。

componentsの一覧は公式ページに乗っているため、気になる方は読んでみてもいいと思います(英語ですが・・・)。

今後も備忘録がてらMinecraft関係の記事を投稿していきたいと考えています。

最後までお読みいただきありがとうございました。


この記事が気に入ったらサポートをしてみませんか?