/tellraw JSONテキスト:clickEvent、hoverEvent、そしてメッセージが表示されない理由
角括弧が1つ間違っているだけで、tellrawはサイレントに失敗します。ここでは、コンポーネントの形状、チャットで実際に機能するクリックアクションとホバーアクション、そして見落とされがちなエスケープルールについて説明します。
/tellraw はJSONテキストコンポーネントを受け取りますが、失敗モードは役に立ちません。不正な形式のコンポーネントはメッセージもエラーも生成しません。以下のすべては、最初から正しい形状にするためのものです。
3つの有効な形状
"plain string"
{"text":"one component"}
["joined ",{"text":"list","color":"gold"}]
リスト形式は、各要素が独自の書式を持つことができるため、興味深いものには何でも使用できます。最初の要素の書式は、他の要素が上書きしない限り、残りの要素に継承されます。これが、メッセージ全体が予期せず金色になる理由です。これを避けるには、空の文字列でリストを開始します。
/tellraw @a ["",{"text":"Warning: ","color":"red"},{"text":"low health"}]
クリックアクション
clickEvent はアクションと値を受け取ります。
| アクション | 値 | 注記 |
|---|---|---|
run_command | /spawn | プレイヤーとして、その権限レベルで実行されます |
suggest_command | /msg Steve | チャットボックスに入力されますが、送信はされません |
open_url | https://… | 開く前にプロンプトが表示されます |
copy_to_clipboard | 任意のテキスト | 座標を共有するのに最も親切なもの |
change_page | ページ番号 | 本のみ |
run_command には落とし穴があります。これは、コマンドブロックの権限ではなく、クリックしたプレイヤーの権限で実行されます。/gamemode creative を呼び出すメニューは、通常のプレイヤーには何も実行しません。
ホバーアクション
"hoverEvent":{"action":"show_text","contents":["Click to teleport"]}
show_text、show_item、show_entity。contents に注意してください。古いガイドではvalue を使用していましたが、これは置き換えられ、現在はサイレントに失敗します。この単一の名称変更が、チュートリアルからコピーされた多くの機能しないホバーツールチップの原因となっています。
エスケープが壊れる場所
コンポーネント全体は1つのコマンド引数であるため、内部の引用符はコマンドパーサーを通過する必要があります。コマンドブロックでは、直接入力します。関数ファイルでは、バックスラッシュエスケープは不要です。/give の記入済みの本では、JSONは文字列内の文字列であり、エスケープが必要です。これが、\" の読みにくい壁を生成するケースです。
経験則:アイテムコンポーネント内にテキストコンポーネントをネストする場合は、手動ではなくツールで構築してください。
テキスト内のセレクター
{"selector":"@p","separator":{"text":", "}}
は送信時にプレイヤー名に解決されます。{"score":{"name":"@s","objective":"Kills"}} はスコアボード値を引き出します。どちらも、自分で値を連結しようとするよりも優れています。
翻訳キーは言語をまたいで機能する
{"translate":"block.minecraft.crafting_table"}
は、各プレイヤー自身の言語でレンダリングされます。韓国語クライアントでは 제작대、日本語クライアントでは 作業台 となります。多言語サーバーの場合、これは英語をハードコーディングするよりも厳密に優れています。
Text & Display Command Builder で、クリックアクションとホバーアクションを現在の形式で視覚的にコンポーネントを構築してください。