25w20a에 dialog가 추가되면서 모장이 이상한 업데이트도 같이 했음.
Technical Changes
The Data Pack version is now 77
The Resource Pack version is now 61
"Command Syntax" report now contains information about required permission level
클릭 이벤트로 실행된 커맨드의 권한 레벨이 0을 넘어가면 이런 못생기고 불편한 창이 등장함.
/tellraw @s {"text": "Click!", "click_event": {"action": "run_command", "command": "summon cow"}}
여기서 trigger라는 명령어를 사용할 수 있음. trigger의 권한 레벨은 0이므로, 클릭 이벤트에 사용하더라도 저런 못생고 불편한 창이 등장하지 않음.
trigger를 사용하려면 2개의 준비 과정이 필요함.
1. /scoreboard objectives add <objective name> trigger
2. /scoreboard players enable <player> <objective>
여기서 enable은 한 번만 유효함. 플레이어가 trigger를 사용하면 enable 해줘야 다시 사용할 수 있음.
이제 플레이어가 trigger 명령어를 사용하면 자신의 스코어보드를 변경할 수 있음.
/trigger <objective>
/trigger <objective> set <value>
/trigger <objective> add <value>
우리는 플레이어가 바꾼 스코어보드의 값을 감지해서 권한 레벨이 0을 초과하는 명령어를 커맨드 블록이나 함수로 실행해주면 된다.
이제 dialog에 응용해보자.
여기서 type과 scale을 trigger로 넘길 방법이 있을까? (Type: Chicken, Cow, Pig, Sheep; Scale: 1~4)
objective의 값을 문자열로는 설정할 수 없지만, objective의 이름에는 문자열을 사용할 수 있음.
약간의 노가다를 통해 Chicken_1, Chicken_2, Chicken_3, Chicken_4, ..., Sheep_4까지 objective를 만들어준다.
그리고 template에 "trigger $(type)_$(scale)"과 같이 적어주면 지정된 문자열이나 숫자의 값을 가져올 수 있음.
또는 Chicken, Cow, Pig, Sheep objective만 만들고 template에 "trigger $(type) set $(scale)"도 사용할 수 있음.
그런데 text 타입은 trigger로 가져오는 게 불가능해 보임. 그냥 못생기고 불편한 창을 감수하고 data를 쓸 수밖에...
진짜 하고 싶은 말
저거 안 나오게 하는 옵션 좀 추가해줘
민심을 떡상시켰다가 다시 떡락시켜 원점으로 유지하는 고도의 전술....!! 모장.. 너는 대체 어느 경지인 거냐!!!!
아니 저거 tellraw에서도 뜨는거였다니... 이런 갓 업데이트를 해놓고 대체 왜 대형똥업데이트를 같이해놓은거지..??? 마크를 좀만 했어도 저게 뜨는게 얼마나 불편한건지 알텐데.... 아직 스냅샷이니까 뭐 정식버전 나오면 저 메시지 없애는 옵션 추가되겠지..?
보안상 이유로 추가되서 삭제할 일은 없음