/execute: as/at 명령어 순서가 중요한 이유와 store의 실제 작동 방식
대부분의 잘못된 execute 명령어 체인은 누가 명령어를 실행하는지와 어디서 실행하는지를 혼동하는 데서 비롯됩니다. 각 하위 명령어가 무엇을 변경하는지, 그리고 이를 수정하는 올바른 순서를 알려드립니다.
/execute는 스크립팅 언어인 척하는 하나의 명령어입니다. 거의 모든 오류는 같은 일을 하는 것처럼 들리지만 실제로는 그렇지 않은 두 가지 하위 명령어에서 비롯됩니다.
as는 '누가'를, at은 '어디서'를 변경합니다.
as <target>— 실행자를 바꿉니다.@s는 이제 해당 엔티티를 의미합니다. 위치는 이동하지 않습니다.at <target>— 위치, 회전 및 차원을 바꿉니다. 실행자는 변경되지 않습니다.
따라서 다음은 아무런 유용한 작업을 하지 않습니다.
execute as @e[type=zombie] run setblock ~ ~ ~ stone
이것은 좀비당 한 번씩 실행되지만, 항상 당신의 발밑에서 실행되므로, 하나의 블록을 계속해서 놓습니다. 해결책은 둘 다 사용하는 것입니다.
execute as @e[type=zombie] at @s run setblock ~ ~ ~ stone
at @s는 as가 방금 선택한 좀비에 다시 고정됩니다. as … at @s는 전체 명령어에서 가장 흔한 조합이며, at @s를 잊는 것이 가장 흔한 버그입니다.
순서는 왼쪽에서 오른쪽이며, 누적됩니다.
하위 명령어는 순서대로 실행되며, 각 명령어는 다음 명령어가 볼 컨텍스트를 수정합니다.
execute as @a at @s positioned ^ ^ ^3 run particle flame
as @a— 플레이어당 한 번씩at @s— 해당 플레이어로 이동positioned ^ ^ ^3— 그들이 바라보는 곳에서 3블록 앞
2단계와 3단계를 바꾸면 캐럿 오프셋이 그들의 회전 대신 당신의 회전을 기준으로 측정됩니다.
캐럿 대 틸드
~ ~ ~— 위치를 기준으로, 월드 축에 정렬됨^ ^ ^— 바라보는 방향을 기준으로: 왼쪽, 위, 앞
캐럿 좌표 때문에 positioned ^ ^ ^3는 "앞에"를 의미하고 ~ ~ ~3는 "남쪽으로 3블록"을 의미합니다. 하나의 좌표 튜플에서 두 가지 표기법을 혼합하는 것은 구문 오류입니다.
store는 변수가 아닌 반환 값입니다.
store는 명령어가 반환하는 것을 캡처합니다. 일반적으로 성공 횟수 또는 결과 값입니다.
execute store result score @s Count run data get entity @s Inventory
사람들이 잘못 이해하는 두 가지:
result대success.result는 명령어가 생성하는 숫자입니다.success는 명령어가 실행되었는지 여부에 대한 1 또는 0입니다. 엔티티를 세려면result가 필요합니다.store는run앞에 오며,run뒤의 명령어에 적용되고 하위 명령어 체인에는 적용되지 않습니다.
if 대 unless 단락
if와 unless는 필터링합니다. 테스트가 실패하면 체인이 거기서 멈춥니다. 여러 if 절은 AND입니다. OR는 없으며, 두 개의 별도 명령어 또는 술어가 필요합니다.
execute as @a if entity @s[gamemode=survival] if score @s Lives matches 1.. run ...
고급 명령어 빌더에서 각 단계에서 표시되는 컨텍스트와 함께 하위 명령어를 하나씩 체인을 구축하세요. 이 빌더는 동일한 양식에서 데이터, 아이템, 전리품, 스케줄, 파티클 및 플레이사운드도 다룹니다.