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"}}


 

7fed8273a8826deb3fe8e9e44f9f706b22e14eb7c09e8826a891207f5dd6ca3adf1655

 


여기서 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에 응용해보자.


 

7fed8273a8826deb3fe8e9e7469f746f0b7d8aaef8dfe6bd06041c0e06247b0d37e843

 


여기서 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를 쓸 수밖에...


진짜 하고 싶은 말

저거 안 나오게 하는 옵션 좀 추가해줘