마인크래프트/명령어/대상 선택 인자
덤프버전 :
상위 문서: 마인크래프트/명령어
1. 개요[편집]
대상 선택 인자는 자세한 조건 하에서 개체를 선택하고자 할 때 이용할 수 있다. 인자들은 대소문자를 구분하며, 존재하지 않는 인자 값은 경고 출력 없이 무시된다. 또한 부정 인자를 지원하므로
=
뒤에 !
를 붙이면 그 인자에 해당하는 개체를 제외한 개체가 대상이 된다. 일반 인자는 같은 인자에 겹칠 수 없지만 부정 인자는 같은 인자에 겹칠 수 있다. scores는 부정 인자가 불가능하다.- 예시: 플레이어를 제외한 모든 개체를 죽임:
/kill @e[type=!player]
2. 사용법[편집]
@x[인자=값,인자=값,인자=값,...]
인자 뒤에 반드시 붙여서 대괄호
[]
를 이용해 써야 한다. 예를 들어, 범위를 2칸 이내로 설정하고자 한다면, @a[distance=..2]
로 쓰면 된다. 대상 선택 인자의 값 설정은 :
이 아니라 =
로 한다.여러 인자를 동시에 쓸 땐
[type=@,name=@,gamemode=@]
와 같이 쉼표를 쓰면 된다.3. 값이 될 수 있는 것[편집]
대상 선택 인자마다 값으로 가지는 고유한 유형이 존재하며 그 목록은 다음과 같다.
- 수: 어느 특정한 하나의 수이다.
- 예시) 3, 2.4, 62.34
- 구간: 하나 이상의 수, 필요 시
으로 정의되는 집합이다. 현재 자바에디션에서만 사용할 수 있다. 베드락 에디션의 경우 분리된 두 인자를 각각 수로 지정한다. 최소값보다 최대값이 작으면 안 된다...
- 예시)
= (2 이하) /..2
= (6 이상) /6..
= (4.5 이상 9.3 이하) /4.5..9.3
= (정확히 5)5
- 예시)
- 문자열: 말 그대로 특정한 단어이다. 영어를 제외한 다른 언어(한글 포함)를 포함한 문자열은
과 같이 큰따옴표(")로 감싸야 한다. 물론 영어에 큰따옴표를 써도 된다."이름"
- 예시)
,c
,survival
,zombie
"홍길동"
- 예시)
- 식: 다른 식이다. 일반적으로
} 형태로 쓴다. 즉 중괄호({식
)로 식을 감싼다.{}
- 예시)
},{asdf=1
}{minecraft:adventure/summon_iron_golem=true
- 예시)
4. 대상 선택 인자 목록[편집]
4.1. JE[편집]
기준을 설정하는 인자이기 때문에 단독으로 사용할 수는 없다.
tag= 으로 태그 이름을 비울 경우 태그가 없는 개체를 대상으로 적용된다.
team= 으로 팀 이름을 비울 경우 팀이 없는 개체를 대상으로 적용된다.
일부 명령어는 단순히 대상 선택 인자를 통해 선택하여도 대상으로 선택되지 않는 경우가 있다. 이는 대상이 단 하나만 선택되어야 할 경우[2] 인데, 이는 limit 이라는 선택 인자를 사용해 대상을 단 하나로 지정함으로써 해결할 수 있다.
- 예시
-
kill @e[type=zombie, sort=nearest, limit=2]
-
명령어를 사용한 위치로부터 가장 가까운 순서로 좀비 2마리를 죽인다.
-
tp @p @e[type=armor_stand, sort=random, limit=1]
랜덤한 아머 스탠드로 플레이어를 순간이동 시킨다.
type=#skeletons
나 type=#raiders
처럼 비슷한 특성이 있는 여러 개체를 한 번에 지정할 수도 있다.데이터 팩의 일부인 Predicate를 이용해 대상 선택 인자로 사용할 수 있다.
는 거리가 가까운 순서에 따라 정렬한다. (@p의 기본값)[sort=nearest]
는 거리가 먼 순서에 따라 정렬한다. (c=-1)[sort=furthest]
은 무작위로 정렬한다. (@r의 기본값)[sort=random]
는 소환한 순서에 따라 정렬한다.[sort=arbitrary]
4.2. BE[편집]
JE와 대상 인자 이름이 조금씩 다르며 구간으로 정의하기 보다는 수 2개로 정의하려는 경향이 있다. 또한
team
, advancements
등은 BE에 해당 기능이 없어서 대상 선택 인자로도 제공되지 않는다.기준을 설정하는 인자이기 때문에 단독으로 사용할 수는 없다.
rm
은 최소 반지름, r
은 최대 반지름이다.JE는 limit를 쓴다.
lm
은 최소 수이고, l
은 최대 수이다.JE에서는
gamemode
로 쓴다.BE는 JE와 다르게 모드 번호 및 모드 단축 이름을 쓸 수 있다.
rxm
은 최소 수직 회전이고, rx
는 최대 수직 회전이다.rym
은 최소 수평 회전이고, ry
는 최대 수평 회전이다.예시: 8번 핫바에 사과 1개 ~ 5개를 둔 모든 플레이어의 다이아몬드 1개를 없애는 명령어
/clear @a[hasitem={item=apple, quantity=1..5, data=0, location=slot.hotbar, slot=8}] diamond 0 1
5. 각 대상 선택 인자 특성[편집]
scores
인자는 scores={"점수판 이름"=인수 범위}
형태로 사용할 수 있다.hasitem
인자는 hasitem={"종류"=아이템 또는 수량 등}
형태로 사용할 수 있다. 종류에는 item, quantity, data,[5] location, slot이 있다.6. 용례[편집]
- 실행 주체로부터 반경 20블록 안에 있는 모든 플레이어를 위쪽으로 20블록만큼 텔레포트
tp @a[distance=..20] ~ ~20 ~
- x=10, y=20, z=30을 기준으로 반경 20블록 안에 있는 좀비 두 마리를 위로 20블록만큼 텔레포트
execute positioned 10 20 30 as @e[distance=..20,limit=2,type=zombie] run tp @s ~ ~20 ~
- x=10, y=20, z=30을 기준으로 반경 20블록 안에 있는 test 점수가 3 이상 5 이하인 좀비 두 마리를 위로 20블록만큼 텔레포트
execute positioned 10 20 30 as @e[distance=..20,limit=2,type=zombie,scores={test=3..5}] run tp @s ~ ~20 ~
- 가장 가까운 좀비 두 마리를 위로 20블록만큼 텔레포트
tp @e[type=zombie,sort=nearest,limit=2] ~ ~20 ~
[1] 원래는 설정한 값을 r이라 할 때, [math(\dfrac{\sqrt2}2r)]을 반지름으로 썼지만, 이제는 설정한 값을 그대로 쓴다.[2] 예를 들어 tp 명령어의 경우,
/tp <대상1> <대상2>
로 사용하는데, <대상1>
은 여럿이라도 상관 없지만 <대상2>
는 하나여만 한다.[3] 이름에 띄어쓰기가 없으면 큰따옴표를 적지 않아도 된다.[4] 몬스터, 몹, 좀비류, 언데드 및 좀비, 스켈레톤, 크리퍼, 엔더맨 등[5] 모든 아이템을 감지하고자 -1을 쓰면 게임이 꺼지는 버그가 있다. 때문에 다음 업데이트 또는 정식 출시까지 쓰지 않는게 좋다. 이 문서의 내용 중 전체 또는 일부는 2023-11-27 00:54:12에 나무위키 마인크래프트/명령어/대상 선택 인자 문서에서 가져왔습니다.