ユーザーブロマガは2021年10月7日(予定)をもちましてサービスを終了します

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

新しい記事を投稿しました。シェアして読者に伝えましょう

×

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

2015-12-07 21:00
    みなさん、こんにちは!
    赤石大好き!赤石愛です。
    その① 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のスコアが表示されます。


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

    →その④へ進む

    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。