다이얼로그 화면: 모드 없이 진짜 메뉴 만들기
데이터팩 다이얼로그를 사용하면 입력 필드와 버튼이 있는 제대로 된 창을 만들 수 있습니다. 여기에서는 JSON 구조, 버튼으로 명령을 실행하는 방법, 그리고 책 메뉴 편법과의 비교를 다룹니다.
서버 메뉴는 예전에는 클릭 가능한 페이지가 있는 책으로 만들거나, 아이템 액자를 이용해 상자 GUI를 흉내 내는 방식이었습니다. 다이얼로그는 이 둘을 대체하여 실제 화면을 제공합니다.
다이얼로그란
데이터팩 안에 창을 정의하는 JSON 파일입니다:
data/<namespace>/dialog/welcome.json
{
"type": "minecraft:notice",
"title": { "text": "Welcome" },
"body": [{ "type": "minecraft:plain_message",
"contents": { "text": "Pick a class to begin." } }],
"action": { "label": { "text": "Continue" } }
}
그다음 /dialog show @p my_pack:welcome.
종류
| 종류 | 형태 |
|---|---|
notice | 텍스트와 닫기 버튼 하나 |
confirmation | 예 / 아니오, 각각 고유한 동작 |
multi_action | 버튼 격자 |
server_links | 내장 링크 목록 |
dialog_list | 다른 다이얼로그를 여는 메뉴 |
multi_action은(는) 핵심입니다 — 직업 선택기, 상점, 워프 목록이 모두 이것입니다.
버튼은 명령을 실행합니다
{ "label": { "text": "Warp to spawn" },
"action": { "type": "minecraft:run_command", "command": "/spawn" } }
채팅에서 clickEvent과(와) 마찬가지로, 이 명령은 클릭한 플레이어로서 해당 플레이어의 권한 레벨로 실행됩니다. 운영자 전용 명령을 호출하는 버튼은 일반 플레이어에게는 아무 효과가 없습니다. 일반적인 해결 방법은 trigger 목표(objective)를 사용하는 것입니다: 버튼이 /trigger warp set 1을(를) 실행하고, 틱 함수가 권한이 필요한 부분을 처리합니다.
입력
"inputs": [
{ "type": "minecraft:text", "key": "name", "label": { "text": "Your name" }, "max_length": 16 },
{ "type": "minecraft:boolean", "key": "pvp", "label": { "text": "Enable PvP" } },
{ "type": "minecraft:single_option", "key": "class", "label": { "text": "Class" }, "options": [
{ "id": "mage", "display": { "text": "Mage" } },
{ "id": "rogue", "display": { "text": "Rogue" } } ] }
]
값은 동작이 minecraft:dynamic/run_command인 버튼을 통해 명령에 전달됩니다: 해당 버튼의 template이(가) 각 입력에 대해 $(key)을(를) 받습니다. 일반 run_command 버튼은 아무것도 받지 않습니다.
"action": {
"type": "minecraft:dynamic/run_command",
"template": "function my_pack:join {name:'$(name)',class:'$(class)'}"
}
그다음 호출되는 함수는 매크로입니다:
$say Welcome $(name), you chose $(class)
줄 앞의 $ 접두사와 양쪽 끝의 $(key) 치환이 전부입니다. 이것이 바인딩 메커니즘의 전부이며, 다이얼로그를 장식이 아닌 진짜로 유용하게 만드는 요소입니다.
책 편법보다 나은 이유
- 화면이기 때문에 채팅 기록에 남는 대신 입력을 일시 정지합니다.
- 입력이 실제로 존재합니다. 책은 링크만 제공할 수 있었습니다.
- 아이템이 필요 없습니다. 잃어버리거나 떨어뜨리거나 복제할 것이 없습니다.
- 깔끔하게 닫히고 다시 스크롤할 수 없습니다.
책이 여전히 더 나은 점은 장문 읽기입니다 — 다이얼로그 본문은 세 페이지 분량의 설정 이야기를 담기에 좋은 곳이 아닙니다.
웨이포인트 스타일
같은 도구가 로케이터 바 웨이포인트도 다루며, 그 스타일은 리소스 팩 에셋(assets/<namespace>/waypoint_style/)으로 추적 중인 플레이어나 위치의 스프라이트와 페이드 거리를 제어합니다; 색상은 /waypoint modify <target> color으로(로) 별도로 설정합니다. 보스바가 너무 거슬릴 팀 마커에 유용합니다.
Dialog Input & Waypoint Style Builder에서 입력과 버튼이 있는 다이얼로그 화면을 만들고 웨이포인트 스타일을 커스터마이즈하세요.