문서:마인크래프트/명령어/execute

문서의 이전 버전(r41)을 보고 있습니다.

역사 raw
대문 랜덤 문서 최근 토론


1. JE
1.1. 실행 설정1.2. 조건 설정1.3. 저장 설정1.4. 설명1.5. 용례
2. BE
2.1. 문법2.2. 설명2.3. 용례


execute
JE: execute <세부 명령문...> run <실행할 명령>
BE: execute <개체> <좌표> <실행할 명령>
BE_detect: execute <개체> <좌표> detect <좌표2> <블록> <데이터 값> <실행할 명령>
역사
JE | [ruby(1.8, ruby=추가)] [ruby(1.13, ruby=변경)]

BE | [ruby(?, ruby=추가)]

EE | [ruby(?, ruby=추가)]
기능
JE: <세부 명령문...>에 따라 <실행할 명령>을 실행한다.
BE: <개체><좌표>를 기준으로 <실행할 명령>을 실행하게 만든다.
BE_detect: <좌표2>에 해당 <블록>이 설치되어 있어야 <개체><좌표>를 기준으로 <실행할 명령>을 실행하게 만든다.
관련 명령어
-
단축 명령어
-
기본값
-
명령 블록 실행
싱글플레이 사용
권한
가능
가능
OP 이상

명령어의 실행 주체, 위치, 시점, 차원을 설정하고 명령어가 실행될 조건과 명령어의 결과값을 저장하는 방식을 설정한다. 명령어의 일등공신.

BE 및 BE_detect 명령어의 경우 <좌표>, <좌표2>를 앞서 지정한 <개체>를 기준으로 한 상대 좌표로도 설정할 수 있다.

1. JE

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

1.1. 실행 설정

명령어의 실행 주체, 위치, 시점, 차원 등을 설정할 수 있다.
  • as <대상> <다음 명령>
    • 명령어의 실행 주체를 대상으로 설정한다. 위치를 바꾸진 않는다.
  • at <대상> <다음 명령>
    • 명령어의 실행 위치를 대상의 위치, 시점, 차원으로 설정한다. 이것이 없으면 particle, fill 과 같은 좌표 관련 명령어를 써도 명령어 블럭의 위치에만 효과가 나타난다. 대상을 바꾸진 않아서 effect처럼 대상에게 실행하는 명령어는 as가 있어야 한다.
  • positioned <좌표> <다음 명령>
    • 명령어의 실행 위치를 그 좌표로 설정한다.
  • positioned as <대상> <다음 명령>
    • 명령어의 실행 위치를 대상의 좌표로 설정한다.
  • align <기준> <다음 명령>
    • 명령어의 실행 위치를 <기준>에 따라 버림하여 정수로 만든다.
  • facing <좌표> <다음 명령>
    • 실행자의 시점이 <좌표>를 향해 있도록 설정한다.
  • facing entity <개체> <eyes|feet> <다음 명령>
    • 실행자의 시점이 개체의 눈이나 발을 향하게 설정한다.
  • rotated as <개체> <다음 명령>
    • 실행자의 시점이 <개체>의 방향으로 향해 있는 것으로 설정한다.
  • rotated <시점 좌표> <다음 명령>
    • 실행자의 시점을 <시점 좌표>로 설정한다.
  • in <minecraft:overworld|minecraft:the_end|minecraft:the_nether|(모드나 데이터팩으로 추가된 차원)> <다음 명령>
    • 실행자가 해당 차원에 있는 것으로 설정한다.
  • anchored <feet|eyes> <다음 명령>
    • 나머지 <다음 명령>의 시점의 기준을 발 또는 눈으로 설정한다. anchored eyes를 쓰면 대상의 시점이 있는 좌표에서 실행된다.

1.2. 조건 설정

조건을 설정하는 세부 명령문을 사용하면 조건에 맞지 않는 경우 명령어가 실행되지 않는다.
  • <if|unless> block <좌표> <블록> <다음 명령>
    • 해당 좌표에 맞는 블록이 있거나 있지 않을 때만 다음 명령을 실행한다.[8]
  • <if|unless> blocks <시작 좌표> <끝 좌표> <지점> (all|masked) <다음 명령>
    • 시작과 끝으로 설정된 지역의 블록이 지점 지역의 블록과 정확히 일치하거나 일치하지 않은 경우에만 다음 명령을 실행한다. /clone과 비슷한 문법이다.[10]
  • <if|unless> entity <개체> <다음 명령>
    • 개체가 존재하거나 존재하지 않을 때에만 다음 명령을 실행한다.[12]
  • <if|unless> score <대상> <대상 목표> 〈<|<=|=|>=|>〉 <기준> <기준 목표> <다음 명령>
    • 대상의 점수와 기준의 점수가 (부)등호에 맞거나 맞지 않을 때만 다음 명령을 실행한다.
  • <if|unless> score <대상> <목표> matches <범위> <다음 명령>
    • 대상의 점수가 범위에 들어갔거나 들어가지 않았을 때만 다음 명령을 실행한다.
  • <if|unless> predicate <술어> <다음 명령>

1.3. 저장 설정

store을 이용해 다음 명령의 결과나 성공 횟수를 저장할 수 있다. 결과는 모든 명령어가 실행을 마친 후에 저장된다. 또 명령어가 성공적으로 실행되지 않았다면, result도 0으로 설정된다.
  • store <result|success> score <대상> <목표> <다음 명령>
    • 결과값이 대상의 목표에 해당하는 스코어보드에 저장된다. 목표는 무조건 존재해야 한다
  • store <result|success> block <위치> <경로> <byte|short|int|long|float|double> <크기> <다음 명령>
    • 블록의 NBT 데이터를 수정하고 결과를 저장한다.
  • store <result|success> entity <대상> <경로> <byte|short|int|long|float|double> <크기> <다음 명령>
    • 대상의 NBT 데이터를 수정하고 결과를 저장한다.
data, execute store 는 플레이어 NBT를 수정할 수 없다. 예외적으로, 인벤토리 아이템의 태그 키에 내장되어 있는 NBT나 엔더 상자의 아이템의 NBT는 execute store로 수정할 수 있다.
이후 1.15 버전의 패치로 인해 플레이어의 NBT는 그 어떠한 경우에도 수정이 불가능해졌다.
  • store (result|success) bossbar <ID> <value|max> <다음 명령>
    • 결과값을 해당 ID를 가진 보스바의 값이나 최대값으로 저장한다.

1.4. 설명

  • 기준: x, y, z를 조합해 쓰고 쓴 영어에 해당하는 좌표의 값을 소수 부분을 버림한다. x, xz, zyx, yz 등으로 쓸 수 있다.
    • 예: x의 값이 2.9이고 <기준>을 x로 하면 x=2가 된다. y의 값이 -13.2이고 z의 값이 6.24이며 <기준>을 yz로 하면 y=-14, z=6이 된다.
  • eyes: 눈(시점 설정)
  • feet: 발(시점 설정)
  • overworld: 오버월드
  • the_end: 엔드
  • the_nether: 네더
  • if: 조건과 일치할 때 <다음 명령>을 실행한다.
  • unless: 조건과 일치하지 않을 때 <다음 명령>을 실행한다.
  • all: 모든 블록이 일치
  • masked: 공기 블록을 제외하고 일치
  • 범위: 대상의 점수가 범위에 있는지 확인하는 인수로 1, 1..5, ..6, 3..처럼 지정한다.
  • result: 결과
    • 명령어의 실행 결과를 저장한다.
  • success: 성공 횟수
    • 명령어가 몇 번 성공했는지를 저장한다.
  • byte|short|int|long|float|double: 자료형 (byte는 -7에서7, short, int, long은 정수형, float, double은 유리수형. 쉽게 생각하여 NoAI:1b의 b가 byte고, int는 그냥 숫자 앞에 아무것도 없는 것이라 생각하면 된다.)
  • ID: 보스바의 ID
  • value: 값
  • max: 최댓값

1.5. 용례

  • 가장 가까운 플레이어의 체력을 보스바로 나타낼 때
    • execute store result bossbar minecraft:1 value run scoreboard players get @p HP

  • 모든 좀비의 위치에 번개를 소환한다. (1.13 이후 JE 한정)
    • execute as @e[type=zombie] at @s run summon lightning_bolt ~ ~ ~

  • 모래 위에 있는 좀비의 위치에 번개를 소환한다.
    • execute as @e[type=zombie] at @s if block ~ ~-1 ~ minecraft:sand run summon lightning_bolt ~ ~ ~

  • 모든 플레이어에게서 5블록 반경에 있는 플레이어하고 떨어지는 번개와 아이템을 제외한 모든 개체에게 번개를 소환한다.
    • execute as @p at @e[distance=..5,type=!player,type=!lightning_bolt,type=!item] run summon lightning_bolt ~ ~ ~

  • 플레이어의 아래에 흑요석이 감지될 경우 x y z로 tp한다. (점프맵 등에 사용됨)
    • execute as @a at @s if block ~ ~-0.001 ~ minecraft:obsidian run tp @p[distance=0] x y z

  • 플레이어의 아래에 금 블럭이 감지될 경우 플레이어에게 다이아몬드 검을 주고 그 블럭을 없앤다. (점프맵 등에 사용됨)
    • 첫번째 명령어 : execute as @a at @s if block ~ ~-1 ~ minecraft:gold_block run give @s minecraft:diamond_sword
    • 두번째 명령어(연쇄형) : execute as @a at @s if block ~ ~-1 ~ minecraft:gold_block run setblock ~ ~-1 ~ minecraft:air

  • 아머스탠드의 오른팔이 분당 10번 돌아간다.
    • 준비 : /scoreboard objectives add test dummy, /summon x y z armor_stand{ShowArms:1,Pose:{RightArm:[0.0f,0.0f,0.0f]},Tags:[test]}
    • execute as @e[tag=test,limit=1] store result @s Pose.RightArm[0] float 1 run scoreboard players add @s test 3




2. BE

BE의 execute 명령어 사용법이다. JE 1.13 미만 버전인 경우 이 명령어를 사용해야 한다.

2.1. 문법

  • 그냥 사용할 경우: execute <개체> <좌표> <실행할 명령> (낮은 버전만 사용 가능)
  • 특정한 블록을 감지하는 경우: execute <개체> <좌표> detect <좌표2> <블록> <데이터 값> <실행할 명령>

2.2. 설명

  • 좌표: 해당 명령어가 실행되는 위치이며 상대 좌표의 경우 지정한 개체를 기준으로 설정된다.
  • 좌표2: 블록을 감지하는 좌표이다. testfor와 같이 조건을 설정한다.
  • 블록: 블록의 영문 이름을 쓰면 된다. 기억나는 철자로 쓰다 보면 입력란 위에 정확한 이름이 표시된다.
  • 데이터 값: 같은 종류의 블록이라도 여러 상태가 존재하는 경우가 많은데 [15] 이러한 것들을 특정하기 위한 정보이다. -1이나 *을 넣을 경우에는 어떤 데이터 값이나 상태를 가지더라도 상관이 없다는 의미이다.

2.3. 용례

  • 모든 좀비의 위치에 번개를 소환한다.
    • execute @e[type=zombie] ~ ~ ~ summon lightning_bolt
  • 모래 위에 있는 좀비의 위치에 번개를 소환한다.
    • execute @e[type=zombie] ~ ~ ~ detect ~ ~-1 ~ minecraft:sand -1 summon lightning_bolt
  • 모든 플레이어에게서 5블록 반경에 있는 플레이어하고 떨어지는 번개와 아이템을 제외한 모든 개체에게 번개를 소환한다.
    • execute @a ~ ~ ~ execute @e[r=5,type=!player,type=!lightning_bolt,type=!item] ~ ~ ~ summon lightning_bolt
  • 태그가 blue인 모든 플레이어 위치에 좀비를 설치
    • execute @a[tag=blue] ~ ~ ~ summon zombie}
      #tag명령어는 여기를 참고

[1] 기존 testforblock 명령어.[2] 기존 testforblocks 명령어.[3] 여기서 if 구문의 경우는 이전 버전에 존재하는 testfor 명령어랑 사용법이 비슷하다.[4] 기존 testforblock 명령어.[5] 기존 testforblocks 명령어.[6] 여기서 if 구문의 경우는 이전 버전에 존재하는 testfor 명령어랑 사용법이 비슷하다.[7] 기존 testforblock 명령어.[8] 기존 testforblock 명령어.[9] 기존 testforblocks 명령어.[10] 기존 testforblocks 명령어.[11] 여기서 if 구문의 경우는 이전 버전에 존재하는 testfor 명령어랑 사용법이 비슷하다.[12] 여기서 if 구문의 경우는 이전 버전에 존재하는 testfor 명령어랑 사용법이 비슷하다.[13] 불이 붙지 않는 화로, 불이 붙은 화로나, 유리나 점토 같이 여러 색깔으로 염색할 수 있는 블록 등.[14] 불이 붙지 않는 화로, 불이 붙은 화로나, 유리나 점토 같이 여러 색깔으로 염색할 수 있는 블록 등.[15] 불이 붙지 않는 화로, 불이 붙은 화로나, 유리나 점토 같이 여러 색깔으로 염색할 수 있는 블록 등.