이곳은 개발을 위한 베타 사이트 입니다.
기여내역은 언제든 초기화될 수 있으며, 예기치 못한 오류가 발생할 수 있습니다.
기여내역은 언제든 초기화될 수 있으며, 예기치 못한 오류가 발생할 수 있습니다.
D.P. 시리즈에서 넘어왔습니다.
마인크래프트/명령어/execute
덤프버전 :
상위 문서: 마인크래프트/명령어
명령어의 실행 주체, 위치, 시점, 차원을 설정하고 명령어가 실행될 조건과 명령어의 결과값을 저장하는 방식을 설정한다. 명령어의 일등공신.[1]
세부 명령문은 한 명령어에 여러 번 쓰는 것이 가능하고 세부 명령문의 작성이 끝나면
명령어의 실행 주체, 위치, 시점, 차원 등을 설정할 수 있다.
조건을 설정하는 세부 명령문을 사용하면 조건에 맞지 않는 경우 명령어가 실행되지 않는다.
1. 개요[편집]
명령어의 실행 주체, 위치, 시점, 차원을 설정하고 명령어가 실행될 조건과 명령어의 결과값을 저장하는 방식을 설정한다. 명령어의 일등공신.[1]
2. execute 문법[편집]
세부 명령문은 한 명령어에 여러 번 쓰는 것이 가능하고 세부 명령문의 작성이 끝나면
run <실행할 명령>
으로 끝낸다. 이때, <실행할 명령>
앞에는 슬래시(/)를 사용해서는 안 된다.2.1. 실행 설정[편집]
명령어의 실행 주체, 위치, 시점, 차원 등을 설정할 수 있다.
as <대상> <다음 명령>
- 명령어의 실행 주체를 대상으로 설정한다. 위치를 바꾸진 않는다.
at <대상> <다음 명령>
- 명령어의 실행 위치를 대상의 위치, 시점, 차원으로 설정한다. 이것이 없으면 particle, fill 과 같은 좌표 관련 명령어를 써도 명령어 블럭의 위치에만 효과가 나타난다. 대상을 바꾸진 않아서 effect처럼 대상에게 실행하는 명령어는 as가 있어야 한다.
positioned <좌표> <다음 명령>
- 명령어의 실행 위치를 그 좌표로 설정한다.
positioned as <대상> <다음 명령>
- 명령어의 실행 위치를 대상의 좌표로 설정한다.
positioned over <하이트맵> <다음 명령>
(JE)- <하이트맵>에 따라 현재 서 있는 블록 중 가장 높은 위치를 설정한다. <하이트맵>에 넣을 문구는 다음과 같다.
world_surface
: Any non-air blockmotion_blocking
: Any motion blocking material (e.g. ignores flowers and grass)motion_blocking_no_leaves
: Any non-leaf motion blocking materialocean_floor
: Any non-fluid motion blocking material
- <하이트맵>에 따라 현재 서 있는 블록 중 가장 높은 위치를 설정한다. <하이트맵>에 넣을 문구는 다음과 같다.
align <기준> <다음 명령>
- 명령어의 실행 위치를 <기준>에 따라 버림하여 정수로 만든다.
facing <좌표> <다음 명령>
- 실행자의 시점이 <좌표>를 향해 있도록 설정한다.
facing entity <개체> <eyes|feet> <다음 명령>
- 실행자의 시점이 개체의 눈이나 발을 향하게 설정한다.
rotated as <개체> <다음 명령>
- 실행자의 시점이 <개체>의 방향으로 향해 있는 것으로 설정한다.
rotated <시점 좌표> <다음 명령>
- 실행자의 시점을 <시점 좌표>로 설정한다.
in <minecraft:overworld|minecraft:the_end|minecraft:the_nether|(모드나 플러그인, 데이터팩으로 추가된 차원)> <다음 명령>
- 실행자가 해당 차원에 있는 것으로 설정한다.
anchored <feet|eyes> <다음 명령>
- 나머지 <다음 명령>의 시점의 기준을 발 또는 눈으로 설정한다. anchored eyes를 쓰면 대상의 시점이 있는 좌표에서 실행된다.
summon <개체> <다음 명령>
(JE)- 개체를 소환하고 소환한 개체는 명령어의 실행 주체, 위치, 시점, 차원을 설정한다.
on <설정> <다음 명령>
(JE)- 실행자와 연관된 개체를 실행자로 선택하는 명령어다.
-
<설정>
에 넣을 문구는 다음과 같다.-
attacker
: 이전 5초 동안 실행자에게 마지막으로 피해를 입힌 개체를 실행자로 설정한다. interaction 개체는 5초 이전의 기록들도 기억한다. -
controller
: 실행자를 타고, 조종하는 개체를 실행자로 설정한다. (예시: 배 앞자리에 탄 플레이어) -
leasher
: 실행자를 끈으로 묶은 개체를 실행자로 설정한다. (울타리에 묶어둔 경우에는 아마 leash_knot가 선택될 것이다.) -
origin
: 실행자를 소환한 개체를 실행자로 설정한다. (예시: 화살을 발사한 개체, tnt를 점화시킨 개체) -
owner
: 실행자가 길들일 수 있는 개체일 경우(고양이, 늑대, 앵무새같은), 실행자의 주인을 실행자로 설정한다. -
passengers
: 실행자에 직접적으로 타고 있는 개체를 실행자로 설정한다. 실행자 위에 타고 있는 개체 위에 타고 있는 개체는 제외한다. -
target
: 실행자의 공격 대상을 실행자로 설정한다. -
vehicle
: 실행자가 타고 있는 개체를 실행자로 설정한다.
-
2.2. 조건 설정[편집]
조건을 설정하는 세부 명령문을 사용하면 조건에 맞지 않는 경우 명령어가 실행되지 않는다.
<if|unless> block <좌표> <블록> <다음 명령>
- 해당 좌표에 맞는 블록이 있거나 있지 않을 때만 다음 명령을 실행한다.[2]
<if|unless> blocks <시작 좌표> <끝 좌표> <지점> <all|masked> <다음 명령>
<if|unless> entity <개체> <다음 명령>
- 개체가 존재하거나 존재하지 않을 때에만 다음 명령을 실행한다.[4]
<if|unless> score <대상> <스코어보드1> 〈<|<=|=|>=|>〉 <기준> <스코어보드2> <다음 명령>
- 스코어보드1에 있는 대상의 점수와 스코어보드2에 있는 기준의 점수가 (부)등호에 맞거나 맞지 않을 때만 다음 명령을 실행한다.
<if|unless> score <대상> <스코어보드1> matches <범위> <다음 명령>
- 스코어보드1에 있는 대상의 점수가 범위에 들어갔거나 들어가지 않았을 때만 다음 명령을 실행한다.
<if|unless> biome <좌표> <생물 군계> <다음 명령>
(JE)- 해당 좌표에 있는 생물 군계가 있거나 있지 않을 때만 다음 명령을 실행한다.
<if|unless> dimension <차원> <다음 명령>
(JE)- 현재 차원이 맞거나 맞지 않을때 다음 명령을 실행한다.
<if|unless> loaded <좌표> <다음 명령>
(JE)- 해당 위치에 있는 청크가 완전히 로딩되어있거나 로딩되지 않을때 다음 명령을 실행한다.
<if|unless> predicate <술어> <다음 명령>
(JE)- 사용자 정의 술어가 맞거나 맞지 않을때 다음 명령을 실행한다. 술어에 대한 내용은 마인크래프트/데이터팩 참조
2.3. 저장 설정(JE)[편집]
store
을 이용해 다음 명령의 결과나 성공 횟수를 스코어, NBT데이터, 보스바 등에 저장할 수 있다. 결과는 모든 명령어가 실행을 마친 후에 저장된다. 또 명령어가 성공적으로 실행되지 않았다면, result
도 0으로 설정된다.store <result|success> ...
... score <대상> <스코어보드> <다음 명령>
- 다음 명령의 결과를 스코어보드에 있는 대상의 점수로 저장한다. 스코어보드는 무조건 존재해야 한다
... block <위치> <경로> <byte|short|int|long|float|double> <크기> <다음 명령>
- 블록의 NBT 데이터를 수정하고 결과를 저장한다.
... entity <대상> <경로> <byte|short|int|long|float|double> <크기> <다음 명령>
- 대상의 NBT 데이터를 수정하고 결과를 저장한다.
- 플레이어의 NBT는 그 어떠한 경우에도 수정이 불가능하다.
... bossbar <ID> <value|max> <다음 명령>
- 결과값을 해당 ID를 가진 보스바의 값이나 최대값으로 저장한다.
2.3.1. 출력[편집]
2.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
: 보스바의 IDvalue
: 값max
: 최댓값
2.5. 용례[편집]
- 모든 좀비의 위치에 번개를 소환한다.
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블록 반경에 있는 플레이어하고 떨어지는 번개와 아이템을 제외한 모든 개체에게 번개를 소환한다.
- JE:
execute as @a at @e[distance=..5,type=!player,type=!lightning_bolt,type=!item] run summon lightning_bolt ~ ~ ~
- BE:
execute as @a at @e[r=5,type=!player,type=!lightning_bolt,type=!item] run summon lightning_bolt ~ ~ ~
- JE:
- 플레이어의 아래에 흑요석이 감지될 경우 x y z로 tp한다. (점프맵 등에 사용됨)
-
execute as @a at @s if block ~ ~-0.001 ~ minecraft:obsidian run tp @s 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
- 가장 가까운 플레이어의 체력을 보스바로 나타낼 때(JE)
execute store result bossbar minecraft:1 value run scoreboard players get @p HP
- Pos라는 태그를 가진 blue라는 팀에 속한 갑옷 거치대를 기준으로 가장가까에 있는 team이 red인 플레이어를 100, 100, 100으로 텔레포트 시킨다.(JE)
execute as @e[ tag=Pos, type=armor_stand, team=blue ] at @s run tp @p[ team=red ] 100 100 100
- 아머스탠드의 오른팔이 분당 10번 돌아간다.(JE)
준비 : /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
- 모든 양의 양털 색깔이 스코어보드 숫자번호대로 바뀐다.(0 = 흰색, 1 = 주황색)(JE)
준비 : /scoreboard objectives add color dummy, /summon sheep X Y Z {Tags:[color],NoAI:1b}
반복 첫번째 : scoreboard players add $color color 1
연쇄 두번째(무조건) : execute if score $color color matches 16.. run scoreboard players set $color color 0
연쇄 세번째(무조건) : execute as @e[tag=color] at @s store result entity @s Color int 1 run scoreboard players get $color color
- 플레이어의 특정 아이템 수 스코어보드로 나타내기.(JE)
준비 : /scoreboard objectives add i.c dummy, /tag @s add i.c
반복 첫번째 : execute as @a[tag=i.c] store result score @s i.c run clear @s <특정 아이템> 0