【Minecraft】特殊な本や看板で使う『JSON』をマスターしよう!その③
みなさん、こんにちは!
赤石大好き!赤石愛です。
それでは続きをやっていきましょう。
マウスオーバー時の動作
マウスカーソルを乗せた時の動作を設定する特殊な装飾があります。
hoverEvent(ホバーイベント)
hoverEventにもいくつかのactionがありますが、どれもポップアップ(ツールチップ)を表示するもので、表示する内容が変わります。
hoverEventの種類
hoverEventの動作の種類actionには以下の4つの中から1つを指定します。
actionによって動作の内容valueに指定するものも変化します。
1.16+1.16以降では、valueの代わりにcontents(コンテンツ)の使用が推奨されています。
show_text(ショーテキスト)
テキストを表示します。valueにはテキストを文字列またはJSONで指定します。
1.16+contentsにはテキストを文字列またはJSONで指定します。
1.16+
『テキスト(text)は「マウスカーソルを乗せると…」です』
『マウスオーバー時の動作(hoverEvent)は【「文字が出ます」という「テキストを表示」】です』
というデータになります。
実行すると「マウスカーソルを乗せると…」と表示され、そこにマウスカーソルを持って行くと「文字が出ます」というポップアップが出ましたね。
show_textのvalueは文字列以外にJSONでも指定できます。
1.16+
『マウスオーバー時の動作(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を指定します。
countやtagは省略できます。countは0以下を指定すると空気扱いになる効果しかありません。
1.16+
『テキスト(text)は「マウスカーソルを乗せると…」です』
『マウスオーバー時の動作(hoverEvent)は【「エンチャントの本(シルクタッチ)」という「アイテムの詳細を表示」】です』
というデータになります。
Advanced tooltipsなし
Advanced tooltipsあり
show_entity(ショーエンティティ)
エンティティ詳細を表示します。
F3+Hで切り替えられるAdvanced tooltips有効時のみ表示されます。
valueには専用の書式でエンティティの詳細を指定します。
1.16+contentsにはJSONでエンティティの詳細を指定します。
1.16+
『テキスト(text)は「マウスカーソルを乗せると…」です』
『マウスオーバー時の動作(hoverEvent)は【「羊毛という名前でUUIDが00000000-0000-0000-0000-000000000000のひつじ」という「エンティティの詳細を表示」】です』
というデータになります。
show_entityのvalueに指定できるのはname、type、idの3つだけです。
nameはエンティティの表示名、typeはエンティティID、idはUUIDを表します。
いずれも省略可能で、通常存在しないものを指定しても特に問題はありません。※1.9時点
1.16+contentsのnameは文字列以外にJSONでも指定できます。
nameは省略可能ですが、typeやidには存在し得るものを必ず指定します。
1.16+
show_achievement(ショーアチーブメント)
※1.12以降はachievementがなくなったため使用できません。show_textとtranslateを使って、同じ見た目にすることはできます。
実績(または統計)詳細を表示します。valueには実績(または統計)名を指定します。
『テキスト(text)は「マウスカーソルを乗せると…」です』
『マウスオーバー時の動作(hoverEvent)は【「achievement.ghast」という「実績の詳細を表示」】です』
というデータになります。
同様に統計も指定できます。
ここまで、textと装飾について解説しましたが、text以外にもテキストを指定する方法があります。
次はそちらを見ていきましょう。
特殊なテキスト
selector(セレクター)
プレイヤーやエンティティの名前を表示できます。ターゲット選択子を指定します。
指定されたターゲット選択子に該当するプレイヤーやエンティティの名前を取得し自動で『insertion』と『hoverEventのshow_entity』が付与され、プレイヤーの場合は『clickEventのsuggest_command』も付与され、色の設定されたチームに入っている場合はその色も付与して表示されます。
ターゲット選択子についてはここでは解説しません。
自動で設定されないものであれば、装飾を加える事も出来ます。
hoverEventやinsertionは自動設定(上書き)されます。
hoverEventはshow_entity、insertionはエンティティの場合はUUID、プレイヤーの場合はプレイヤー名が設定されます。
チームに入っている場合、文字装飾は上書きされます。
プレイヤーの場合、clickEventにsuggest_commandが設定されます。
score(スコア)
スコアボードに保存されているスコアの値を表示できます。誰のどのスコアかをオブジェクト({}で囲んだデータのまとまり)で指定します。
スコアボードについてはここでは解説しません。
テキストが数値に置き換わるだけなので、装飾は自由です。
『テキストは【「Jumpというスコアボード」に「TEST」が持っているスコアの値】です』
『色(color)は緑(green)です』
というデータになっています。
name(ネーム)にはスコアを持つ対象の名前(エンティティの場合はUUID)を指定します。
objective(オブジェクティブ)にはスコアボード名を指定します。
nameにはターゲット選択子も指定できますが、対象が一人(一体)である必要があります。
また、特殊な指定方法としてnameに*を指定すると、『テキストが表示されるプレイヤー』を指定したことになります。
シングルモードでは*は@pと同じに思えるかもしれませんが、全く異なるものです。
上記のコマンドは、プレイヤー全員に、自身のJumpのスコアが表示されます。
上記のコマンドは、プレイヤー全員に、『コマンド実行地点から一番近いプレイヤー』のJumpのスコアが表示されます。
さて、ここまで分かると、プレイヤー名とスコアを一緒に表示したくなりますね。
次は複数のテキストを使った表示を解説します。
→その④へ進む