
【Minecraft】カーソルを合わせたEntityやBlockのNBTを見る
こんにちは。かけです。
マイクラサークルハマクラさん主催の2024年アドベントカレンダー8日目の記事です。他の記事もぜひご覧ください。
なぜNBTを知りたいのか
コマンドを使ったゲーム開発ではしばしばNBTを見たくなることがあります。
例えば、markerのdataにゲームデータを保存して環境ではデバッグするときにmarkerのdataを見る機会が多いでしょう。
F3+I
MinecraftではEntityやBlockにカーソルを合わせてF3+Iを押すとクリップボードにNBTやComponentが保存されます。

例えば、スライムにカーソルを合わせてF3+Iを押すと、チャットにクリップボードにコピーしたとメッセージを受け取ります。
/summon minecraft:slime -39.13 -60.00 2.67 {Brain: {memories: {}}, HurtByTimestamp: 0, Size: 3, Invulnerable: 0b, FallFlying: 0b, PortalCooldown: 0, AbsorptionAmount: 0.0f, FallDistance: 0.0f, DeathTime: 0s, HandDropChances: [0.085f, 0.085f], PersistenceRequired: 0b, Motion: [0.0d, -0.0784000015258789d, 0.0d], wasOnGround: 1b, Health: 16.0f, LeftHanded: 1b, Air: 300s, OnGround: 1b, Rotation: [351.0f, 0.0f], HandItems: [{}, {}], ArmorDropChances: [0.085f, 0.085f, 0.085f, 0.085f], Fire: -1s, ArmorItems: [{}, {}, {}, {}], CanPickUpLoot: 0b, attributes: [{id: "minecraft:max_health", base: 16.0d}, {id: "minecraft:movement_speed", base: 0.6000000238418579d}, {id: "minecraft:follow_range", modifiers: [{amount: -0.07819838953184471d, id: "minecraft:random_spawn_bonus", operation: "add_multiplied_base"}], base: 16.0d}, {id: "minecraft:attack_damage", base: 4.0d}], HurtTime: 0s}
コピーされ文字列は上記のものです。
summonで同様のスライムが召喚されるようなコマンドが作られています。こちらの{Brain…}がスライムのNBTになっています。

このNBTをvscodeの拡張機能snbtを使うと見やすいフォーマットにできますし、シンタックスハイライトされて嬉しいです。
例えば、先ほどのmarkerをスライムに騎乗させておくことで、markerの情報をたやすく得ることができます。