MC Toolkit

가이드 / 명령어 및 데이터

/tellraw 텍스트 컴포넌트: click_event, hover_event, 그리고 메시지가 아무것도 표시되지 않는 이유

괄호 하나만 잘못 닫혀도 tellraw는 대상에게 아무것도 보내지 않습니다. 여기에서는 컴포넌트의 형태, 채팅에서 실제로 작동하는 클릭 및 호버 동작, 그리고 많은 사람이 놓치는 이스케이프 규칙을 다룹니다.

/tellraw는 텍스트 컴포넌트를 받는데, 실패 방식이 그다지 친절하지 않습니다. 형식이 잘못된 컴포넌트는 대상이 되는 누구에게도 메시지를 보내지 않습니다 — 유일한 오류는 명령을 실행한 사람에게, 또는 아무도 들여다보지 않는 명령 블록의 출력으로만 전달됩니다. 아래 내용은 처음부터 형태를 제대로 맞추는 방법에 관한 것입니다.

세 가지 유효한 형태

"plain string"
{"text":"one component"}
["joined ",{"text":"list","color":"gold"}]

흥미로운 걸 만들 때는 리스트 형태를 쓰세요. 각 요소가 자체적인 서식을 가질 수 있기 때문입니다. 첫 번째 요소의 서식은 다른 요소가 덮어쓰지 않는 한 나머지에 그대로 상속됩니다 — 그래서 메시지 전체가 예상치 않게 금색으로 나오는 일이 생깁니다. 이를 피하려면 리스트를 빈 문자열로 시작하세요:

/tellraw @a ["",{"text":"Warning: ","color":"red"},{"text":"low health"}]

클릭 동작

click_event는 동작과 그 동작에 해당하는 자체 필드를 받습니다 — 공용 value 같은 건 없습니다:

동작필드비고
run_commandcommand: "/spawn"플레이어로서, 플레이어의 권한 레벨로 실행됨
suggest_commandcommand: "/msg Steve "채팅창을 채우기만 하고 전송하지는 않음
open_urlurl: "https://…"열기 전에 확인을 요청함
copy_to_clipboardvalue: "any text"좌표를 공유할 때 가장 친절한 방식
change_pagepage: 2책 전용

run_command에는 함정이 하나 있습니다. 명령 블록의 권한이 아니라 클릭한 플레이어의 권한으로 실행된다는 점입니다. /gamemode creative를 호출하는 메뉴는 일반 플레이어에게는 아무 효과가 없습니다.

호버 동작

"hover_event":{"action":"show_text","value":["Click to teleport"]}

show_text, show_item, show_entity입니다. 이름에 주목하세요 — 오래된 가이드에서는 hoverEvent, clickEvent, contents를 쓰는데, 1.21.5에서 이들을 hover_event, click_event, 그리고 show_text의 경우 value로 대체했습니다. 이 이름 변경 때문에 튜토리얼에서 복사한 호버 툴팁이 작동하지 않는 경우가 많습니다.

이스케이프에서 무너진다

컴포넌트 전체가 하나의 명령 인수이므로, 내부의 따옴표는 명령 파서를 통과해야 합니다. 명령 블록에서는 그대로 입력하세요. 함수 파일에서는 백슬래시 이스케이프가 필요하지 않습니다. /give 글이 쓰인 책에서 페이지도 텍스트 컴포넌트이며 SNBT로 작성됩니다 — 1.21.5 이후로는 문자열 안의 문자열 이스케이프가 필요 없고, 이스케이프된 JSON 문자열로 여전히 작성된 페이지는 이제 따옴표가 그대로 붙은 채 문자 그대로의 텍스트로 표시됩니다.

경험칙: 아이템 컴포넌트 안에 텍스트 컴포넌트를 중첩한다면, 손으로 작성하지 말고 도구로 만드세요.

텍스트 안의 선택자

{"selector":"@p","separator":{"text":", "}}

는 전송 시점에 플레이어 이름으로 치환됩니다. {"score":{"name":"@s","objective":"Kills"}}는 스코어보드 값을 가져옵니다. 둘 다 값을 직접 이어붙이려는 시도보다 낫습니다.

번역 키는 언어를 넘나든다

{"translate":"block.minecraft.crafting_table"}

는 각 플레이어의 언어로 렌더링됩니다 — 한국어 클라이언트에서는 제작대, 일본어 클라이언트에서는 作業台입니다. 다국어 서버라면 영어를 하드코딩하는 것보다 확실히 낫습니다.

텍스트 및 디스플레이 명령을 만들고 미리 보려면 텍스트 및 디스플레이 명령 빌더를 이용하세요.

텍스트 & 표시 명령어 빌더 →

더 많은 가이드

모두 보기 →