mir.pe (일반/밝은 화면)
최근 수정 시각 : 2024-12-03 19:23:32

마인크래프트/명령어/execute

파일:상위 문서 아이콘.svg   상위 문서: 마인크래프트/명령어
1. 개요2. execute 문법
2.1. 실행 설정2.2. 조건 설정2.3. 저장 설정(JE)
2.3.1. 출력
3. 설명4. 예시

1. 개요

<colbgcolor=#47A0FF> execute
execute <세부 명령문...> run <실행할 명령>
<colcolor=#fff> 역사 JE | [ruby(1.8, ruby=추가)] / [ruby(1.13, ruby=변경)]
BE | [ruby(PE 알파 0.16.0 빌드 1, ruby=추가)] / [ruby(1.19.50, ruby=변경)]
EE | [ruby(?, ruby=추가)]
기능 <세부 명령문...>에 따라 <실행할 명령>을 실행한다.
관련 명령어 -
단축 명령어 -
기본값 -
<rowcolor=#fff> 싱글 사용 권한
가능 2(JE), 1(BE)

명령어의 실행 주체, 위치, 시점, 차원을 설정하고 명령어가 실행될 조건과 명령어의 결과값을 저장하는 방식을 설정한다. scoreboard와 함께 명령어의 양대산맥이다.[1]

2. execute 문법

세부 명령문은 한 명령어에 여러 번 쓰는 것이 가능하고 세부 명령문의 작성이 끝나면 run <실행할 명령>으로 끝낸다. 이때, <실행할 명령> 앞에는 슬래시( /)를 사용해서는 안 된다.

2.1. 실행 설정

명령어의 실행 주체, 위치, 시점, 차원 등을 설정할 수 있다.

2.2. 조건 설정

조건을 설정하는 세부 명령문을 사용하면 조건에 맞거나 맞지 않는 경우 <다음 명령>이 실행된다.

2.3. 저장 설정(JE)

store을 이용해 다음 명령의 결과나 성공 횟수를 스코어, NBT데이터, 보스바 등에 저장할 수 있다. 결과는 모든 명령어가 실행을 마친 후에 저장된다.

2.3.1. 출력

명령어 상태 execute store result ...
advancement 오류 변하지 않음
실패 0
성공 각 플레이어에서 추가/제거된 발전/기준의 총 수.
attribute any 실패 0
... get [규모] 성공 속성 값의 [규모]만큼 곱한 다음 유형을 Int로 변환한다.
... base get [규모] 성공
... modifier value get [규모] 성공
... base set ...
... modifier add ...
... modifier remove ...
성공 1
ban - 실패 0
성공 차단한 플레이어의 이름 길이 수
ban-ip - 실패 0
성공 ???
banlist - 실패 0
성공 현재 차단중인 플레이어 수
clear any 실패 0
성공 지워지거나 감지된 아이템의 수
clone any 실패 0
성공 대상 지역에서 변경된 블록 수.
data any 실패 0
... get ... [대상 NBT경로] [규모] 성공 [규모]만큼 곱한 다음 유형을 Int로 변환한다.
datapack any 실패 0
datapack list 성공 활성화된 데이터 팩 개수.
debug any 실패 0
start 성공 0
stop 성공 평균 TPS
function 성공 실행된 명령 수(성공 여부에 관계없음)
deop - 실패 0
성공 OP 권한이 제거된 플레이어 수
difficulty - 실패 0
성공 현재 난이도(평화로움 = 0, 쉬움 = 1, 보통 = 2, 어려움 = 3)
... 성공 1
effect - 실패 0
성공 효과가 주어 지거나 취소 된 개체의 수
enchant - 실패 0
성공 성공적으로 부여된 플레이어의 수
execute - 실패 0
... <if|unless> block 실패 0
성공 1
... <if|unless> blocks 실패 0
성공 감지된 블록 수
... <if|unless> entity 실패 0
성공 감지된 개체 수
... <if|unless> items 실패 0
성공 감지된 아이템 수
... <if|unless> score 실패 0
성공 ?
... <if|unless> biome 실패 0
성공 ?
... <if|unless> dimension 실패 0
성공 1
... <if|unless> function 실패 0
성공 execute 출력 문단 참고.
... <if|unless> loaded 실패 0
성공 1
... <if|unless> predicate 실패 0
성공 ?
experience - 실패 0
experience ... 성공 플레이어의 경험치 또는 레벨 수
experience <add|set> ... 성공 대상 플레이어 수
fill - 실패 0
성공 성공적으로 채워진 블록 수
fillbiome - 실패 0
성공 성공적으로 채워진 생물 군계 수
function - 실패 0
성공 실행된 명령 수(성공 여부에 관계없음)
gamemode - 실패 0
성공 게임 모드가 변경된 플레이어의 수
gamerule - 실패 0
성공 현재 게임 규칙의 값(false = 0, true = 1, 정수일경우 Int.)
help - 성공 목록에 뜬 명령어 개수
kick - 실패 0
성공 대상 플레이어 수
kill - 실패 0
성공 대상 플레이어 수
list - 성공 현재 접속 중인 플레이어 수
locate - 실패 0
성공 실행자 위치와 구조물 및 생물군계간 거리
loot - 실패 0
loot spawn ... 성공 ?
loot give ... 성공 ?
loot insert ... 성공 ?
particle - 실패 0
성공 입자를 볼 수 있는 플레이어 수
playsound - 실패 0
성공 소리를 들을 수 있는 플레이어 수
random - 실패 0
<value|roll> ... 성공 출력된 난수값
reset ... 성공 리셋된 sequenceId의 개수
reload - 성공 1
return - 실패 0
<값> 성공 <값>
run <명령어> 성공 execute 출력 문단 참고.
실패 0
return fail 성공? 0
ride - 실패 0
성공 1
scoreboard - 실패 0
... <add|remove> 성공 실행 후 대상의 스코어보드 현재 값
... get 성공 대상의 스코어보드 현재 값
... list 성공 스코어보드의 수
seed - 성공 현재 시드값의 32비트로 변환되어 출력된다.
stop - 성공 1
time - 실패 0
... query ... 성공 인게임 시간.
... <add|set> ... 성공 실행 후 인게임 시간.
worldborder - 실패 0
... get 성공 정수로 반올림 한 다음 세계 경계 크기.

3. 설명

세부 명령문는 왼쪽으로부터 시작하여 오른쪽으로 순서대로 처리한다. 예를 들어 아래 명령어는 구성은 같지만 문법의 위치만 다르다.
일부 세부 명령문은 명령어를 여러번 실행할 수 있다. 즉 그 뒤에 오는 세부 명령문이 여러번 실행된다. 예를 들어 "as" 세부 명령문에 여러 개체를 선택하는 경우 그 뒤에 나오는 세부 명령문은 개체당 한 번씩 실행된다.

또한 세부 명령문이 테스트에 실패하거나 대상 지정이 없다면 다음 세부 명령문은 실행 시도조차 하지 않는다. 이를 이용해 명령어 최적화가 가능하다. 위 명령어는 둘다 같은 일을 하지만 대상을 지정 후 조건 확인, 조건 확인 후 대상을 지정의 차이점이다. 실행 조건이 있는데 굳이 먼저 모든 대상을 지정해야 했을까? 거기에 as가 다수라면 그 조건을 여러번 확인하기에 최적화도 더 안좋다. 따라서 웬만하면 조건 확인 후 다음 명령어를 실행하는 게 더 좋다.

... run execute ...는 효과가 전혀 없다. 아래 명령어는 모두 동일하며, 쓸데없는 연산을 하기에 명령어 실행 시 지연이 추가로 발생한다.

4. 예시


[1] 과장이 아니라, execute와 scoreboard 없이 뭔가 작동하는 미니게임 같은 걸 만드는 건 어마어마한 노가다가 필요하거나 아예 불가능하다. [2] 양탄자는 충돌 판정이 있음에도 없는 판정으로 계산된다. [3] 다음의 '대상'은 모두 '앞의 명령구를 실행하던 (이전) 주체'를 지칭한다. [4] 만약 현재 대상이 좀비이고 이 좀비가 어떤 주민을 쫓고 있다면 그 주민이 주체가 되어 다음 명령을 실행한다.