【Minecraft】特殊な本や看板で使う『JSON』をマスターしよう!その③

みなさん、こんにちは!
赤石大好き!赤石愛です。

その① JSON・text・基本装飾・真偽値 →ar857358
その② clickEvent・オブジェクト・数字と数値・エスケープシーケンス →ar923853
その③ hoverEvent・selector・score →このページ
その④ リスト・extra・translate →ar923861
その⑤ エスケープシーケンス(改行・Unicode) →ar924533
おまけ 本や看板での使用例 →ar924964
その⑥ keybind・nbt・NBTパス →ar1905986


それでは続きをやっていきましょう。


マウスオーバー時の動作

マウスカーソルを乗せた時の動作を設定する特殊な装飾があります。

hoverEvent(ホバーイベント)

/tellraw @p {"text":"マウスカーソルを乗せると…","hoverEvent":{"action":"show_text","value":"文字が出ます"}}
clickEventにそっくりですが、クリックした時ではなく、マウスカーソルを乗せた時の動作を設定する装飾です。
hoverEventにもいくつかのactionがありますが、どれもポップアップ(ツールチップ)を表示するもので、表示する内容が変わります。

hoverEventの種類

hoverEventの動作の種類actionには以下の4つの中から1つを指定します。
actionによって動作の内容valueに指定するものも変化します。
1.16+1.16以降では、valueの代わりにcontents(コンテンツ)の使用が推奨されています。

show_text(ショーテキスト)
テキストを表示します。valueにはテキストを文字列またはJSONで指定します。
1.16+contentsにはテキストを文字列またはJSONで指定します。

/tellraw @p {"text":"マウスカーソルを乗せると…","hoverEvent":{"action":"show_text","value":"文字が出ます"}}

1.16+

/tellraw @p {"text":"マウスカーソルを乗せると…","hoverEvent":{"action":"show_text","contents":"文字が出ます"}}

『テキスト(text)は「マウスカーソルを乗せると…」です』
『マウスオーバー時の動作(hoverEvent)は【「文字が出ます」という「テキストを表示」】です』
というデータになります。
実行すると「マウスカーソルを乗せると…」と表示され、そこにマウスカーソルを持って行くと「文字が出ます」というポップアップが出ましたね。


show_textのvalueは文字列以外にJSONでも指定できます。

/tellraw @p {"text":"マウスカーソルを乗せるとヒント!","hoverEvent":{"action":"show_text","value":{"text":"クリックでダイヤをプレゼント!","color":"aqua","bold":true}},"clickEvent":{"action":"run_command","value":"/give @p minecraft:diamond"}}

1.16+

/tellraw @p {"text":"マウスカーソルを乗せるとヒント!","hoverEvent":{"action":"show_text","contents":{"text":"クリックでダイヤをプレゼント!","color":"aqua","bold":true}},"clickEvent":{"action":"run_command","value":"/give @p minecraft:diamond"}}
『テキスト(text)は「マウスカーソルを乗せるとヒント!」です』
『マウスオーバー時の動作(hoverEvent)は【「クリックでダイヤをプレゼント!」という「テキストを表示」】です』

『クリック時の動作(clickEvent)は【「/give @p minecraft:diamond」という「コマンドを実行」】です』
というデータになっています。
このようにマウスオーバー時に装飾されたテキストを表示することが出来ます。
また、hoverEventとclickEventを一緒に使うことも出来ます。

hoverEventはshow_text以外を使うことは殆どないと思いますので、残りの3つはササッと解説します。

show_item(ショーアイテム)
アイテム詳細を表示します。
F3+Hで切り替えられるAdvanced tooltips(アドバンスド・ツールチップス)も反映されます。
valueにはアイテムのNBTを指定します。NBTについてはここでは解説しません。
1.16+contentsにはアイテムIDだけを指定するか、次のようなJSONでアイテムID、個数、tagを指定します。

{"id":"アイテムID","count":個数,"tag":"アイテムのtag"}

countやtagは省略できます。countは0以下を指定すると空気扱いになる効果しかありません。

/tellraw @p {"text":"マウスカーソルを乗せると…","hoverEvent":{"action":"show_item","value":"{id:minecraft:enchanted_book,tag:{StoredEnchantments:[{id:33s,lvl:1s}]}}"}}

1.16+

/tellraw @p {"text":"マウスカーソルを乗せると…","hoverEvent":{"action":"show_item","contents":{"id":"minecraft:enchanted_book","count":1,"tag":"{StoredEnchantments:[{id:'minecraft:silk_touch',lvl:1s}]}"}}}

『テキスト(text)は「マウスカーソルを乗せると…」です』
『マウスオーバー時の動作(hoverEvent)は【「エンチャントの本(シルクタッチ)」という「アイテムの詳細を表示」】です』
というデータになります。
Advanced tooltipsなし
Advanced tooltipsあり

show_entity(ショーエンティティ)
エンティティ詳細を表示します。
F3+Hで切り替えられるAdvanced tooltips有効時のみ表示されます。
valueには専用の書式でエンティティの詳細を指定します。
1.16+contentsにはJSONでエンティティの詳細を指定します。

/tellraw @p {"text":"マウスカーソルを乗せると…","hoverEvent":{"action":"show_entity","value":"{name:羊毛,type:Sheep,id:00000000-0000-0000-0000-000000000000}"}}

1.16+

/tellraw @p {"text":"マウスカーソルを乗せると…","hoverEvent":{"action":"show_entity","contents":{"name":"羊毛","type":"minecraft:sheep","id":"00000000-0000-0000-0000-000000000000"}}}

『テキスト(text)は「マウスカーソルを乗せると…」です』
『マウスオーバー時の動作(hoverEvent)は【「羊毛という名前でUUIDが00000000-0000-0000-0000-000000000000のひつじ」という「エンティティの詳細を表示」】です』
というデータになります。

{name:羊毛,type:Sheep,id:00000000-0000-0000-0000-000000000000}

show_entityのvalueに指定できるのはname、type、idの3つだけです。
nameはエンティティの表示名、typeはエンティティID、idはUUIDを表します。
いずれも省略可能で、通常存在しないものを指定しても特に問題はありません。※1.9時点

/tellraw @p {"text":"いか","hoverEvent":{"action":"show_entity","value":"{name:たこ,type:えび,id:くらげ}"}}


1.16+contentsのnameは文字列以外にJSONでも指定できます。
nameは省略可能ですが、typeやidには存在し得るものを必ず指定します。
1.16+

/tellraw @p {"text":"いか","hoverEvent":{"action":"show_entity","contents":{"name":{"text":"たこ"},"type":"minecraft:salmon","id":"0-0-0-0-0"}}}



show_achievement(ショーアチーブメント)
※1.12以降はachievementがなくなったため使用できません。show_textとtranslateを使って、同じ見た目にすることはできます。
実績(または統計)詳細を表示します。valueには実績(または統計)名を指定します。

/tellraw @p {"text":"マウスカーソルを乗せると…","hoverEvent":{"action":"show_achievement","value":"achievement.ghast"}}

『テキスト(text)は「マウスカーソルを乗せると…」です』
『マウスオーバー時の動作(hoverEvent)は【「achievement.ghast」という「実績の詳細を表示」】です』
というデータになります。


同様に統計も指定できます。

/tellraw @p {"text":"マウスカーソルを乗せると…","hoverEvent":{"action":"show_achievement","value":"stat.pigOneCm"}}




ここまで、textと装飾について解説しましたが、text以外にもテキストを指定する方法があります。
次はそちらを見ていきましょう。


 

特殊なテキスト


selector(セレクター)
プレイヤーやエンティティの名前を表示できます。ターゲット選択子を指定します。
指定されたターゲット選択子に該当するプレイヤーやエンティティの名前を取得し自動で『insertion』と『hoverEventのshow_entity』が付与され、プレイヤーの場合は『clickEventのsuggest_command』も付与され、色の設定されたチームに入っている場合はその色も付与して表示されます。
ターゲット選択子についてはここでは解説しません。

/tellraw @p {"selector":"@e[type=Item]"}



自動で設定されないものであれば、装飾を加える事も出来ます。

/tellraw @p {"selector":"@e[type=Villager]","color":"yellow","italic":true}



hoverEventやinsertionは自動設定(上書き)されます。
hoverEventはshow_entity、insertionはエンティティの場合はUUID、プレイヤーの場合はプレイヤー名が設定されます。

/tellraw @p {"selector":"@a","color":"black","italic":true}


チームに入っている場合、文字装飾は上書きされます。
プレイヤーの場合、clickEventにsuggest_commandが設定されます。


score(スコア)
スコアボードに保存されているスコアの値を表示できます。誰のどのスコアかをオブジェクト({}で囲んだデータのまとまり)で指定します。
スコアボードについてはここでは解説しません。
テキストが数値に置き換わるだけなので、装飾は自由です。

/tellraw @p {"score":{"name":"TEST","objective":"Jump"},"color":"green"}

『テキストは【「Jumpというスコアボード」に「TEST」が持っているスコアの値】です』
『色(color)は緑(green)です』
というデータになっています。
name(ネーム)にはスコアを持つ対象の名前(エンティティの場合はUUID)を指定します。
objective(オブジェクティブ)にはスコアボード名を指定します。


nameにはターゲット選択子も指定できますが、対象が一人(一体)である必要があります。

/tellraw @p {"score":{"name":"@p","objective":"Jump"}}
/tellraw @p {"score":{"name":"@e","objective":"Jump"}}



また、特殊な指定方法としてnameに*を指定すると、『テキストが表示されるプレイヤー』を指定したことになります。

/tellraw @a {"score":{"name":"*","objective":"Jump"}}



シングルモードでは*は@pと同じに思えるかもしれませんが、全く異なるものです。

/tellraw @a {"score":{"name":"*","objective":"Jump"}}

上記のコマンドは、プレイヤー全員に、自身のJumpのスコアが表示されます。

/tellraw @a {"score":{"name":"@p","objective":"Jump"}}

上記のコマンドは、プレイヤー全員に、『コマンド実行地点から一番近いプレイヤー』のJumpのスコアが表示されます。


さて、ここまで分かると、プレイヤー名とスコアを一緒に表示したくなりますね。
次は複数のテキストを使った表示を解説します。

→その④へ進む