MC Toolkit

가이드 / 명령어 및 데이터

/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
  1. as @a — 플레이어마다 한 번씩 반복
  2. at @s — 그 플레이어로 이동
  3. positioned ^ ^ ^3 — 그들이 바라보는 방향으로 3블록 앞

2번과 3번을 바꾸면 positioned ^ ^ ^3가 당신의 위치와 시선을 기준으로 계산됩니다. 그다음 at @s가 플레이어로 기준을 되돌리면서 그 오프셋을 완전히 버리게 됩니다.

캐럿(^)과 물결표(~)

  • ~ ~ ~ — 위치 기준, 세계 축에 정렬
  • ^ ^ ^ — 바라보는 방향 기준: 왼쪽, 위, 앞

캐럿 좌표 덕분에 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은 없으며, 두 개의 별도 명령이나 조건자(predicate)가 필요합니다.

execute as @a if entity @s[gamemode=survival] if score @s Lives matches 1.. run ...

고급 명령어 빌더에서 각 단계마다 컨텍스트를 확인하면서 하위 명령을 하나씩 추가해 체인을 만들어 보세요. 같은 폼에서 data, item, loot, schedule, particle, playsound도 다룹니다.

고급 명령어 빌더 — execute & data →

더 많은 가이드

모두 보기 →