개인 자료란 (JE)

  서버 커뮤니티

한국 마인크래프트 포럼

마인크래프트 자료 및 커뮤니티 플랫폼

전체 회원수 122,091명 ( +6명 )

※ 장기간 미활동 회원 제외

Profile 리미트 디벨로퍼 인증 개발자

LIMIT611 121f617fc6b7428c8d1cc3dd098ddd30

Profile

커뮤니티new 개발자란new 개발자 강좌 커맨드

[리미트의 명령어 강좌] 제 4강 - 대상 선택 인자에 대해 알아보자! [한달]

2020.05.04 조회 수 396 추천 수 0

5140ab54be08e2804a7f2190626a0178.gif

리미트계까지 려보는 명령어 강좌

제 4강  - 대상 선택 인자에 대해 알아보자!

목차



와 벌써 4강! 죽음의 4 (이게 일제 강점기에서 변형되었다는 소문도 있더군요) 강이므로 이번 강좌는 진짜 어려울 수도 있습니다.

(사실 그렇게 어렵진 않아요 명령어 초보한텐 어려울 수도?) 바로 시작 해보죠


WARNING! -

이 강좌는 상당히 깁니다. 마음의  준비를 하시고 보기 바랍니다!!

(내용도 조금 수준이 높은 편입니다.)


대상 선택 인자는? -


e4029dc4310c256c9d743159206962e4.jpg

(NPC 마을 하나를 처리 하면서 시작해봅시다.)


흠... 어디서 부터 시작해야 하나.........


흠 먼저 대상 선택 인자에 대해서 알려드리는게 나을 것 같군요.

대상 선택 인자는 어... 개체를 선택하는 방법(?) 같은거라고 하는 게 좋겠군요


9ed5b4b2edfb502c55ecbc6eb51c4060.png


예를 들어보면 이 명령어의 @e[type=!minecraft:player] 부분입니다.

뒤쪽에 자세히 설명하겠지만 대충 해석해보면 모든 엔티티중 플레이어가 아닌 것을 대상으로 선택한다는 말입니다.


대상 선택 인자의 종류 -


대상 선택 인자의 큰 틀은 5개 정도 있습니다.

@a, @e, @p, @r, @s 이렇게 다섯개요. 더 자세한 부분도 있지만 일단 넘어 갑시다. 좀이따 설명할게요

(저 @이가 왜 있는지는 묻지 마세요! 저도 모르니까요! 아마도 모장이 저렇게 하고싶었나보죠!)


저 대상 선택 인자 의 뜻을 좀 설명드려보면


@a : 모든 플레이어를 대상으로 합니다.

@e : 모든 엔티티를 대상으로 합니다.

@p : 가장 가까운 플레이어를 대상으로 합니다.

@r : 무작위로 한명의 플레이어를 대상으로 합니다.

@s : 명령을 실행시킨 엔티티를 대상으로 합니다.


(@s 부분을 잠시 들여다보면 엔티티를 대상으로 한다는 것을 알 수 있을겁니다. 그럼 드는 한가지 궁금증이 있을텐데

엔티티가 어떻게 명령을 실행시키지? 라고요. 엔티티가 명령을 실행시키는 것은 execute 로 가능한데 execute는 마지막 강의니까 일단 넘어갑시다.)


엔티티에 대한 지식이 있다면 이 부분은 그냥 알겁니다. (모른다면 댓글 남겨주세요 알려드림)

그러므로~! 자세한 부분으로 바로 넘어가겠습니다.


대상 선택 인자의 종류 심화 -


흠... 이 부분까지 자세히 사진넣어가며 설명하긴 지이ㅣ이이이이ㅣㅣ이이ㅣ이이ㅣ이이이ㅣ인 짜 힘들거 같아서

(사실 글 쓰기 전엔 사진을 뭘 찍어야 할지도 모르는 주제라서 더 힘들어유)

글로 자세히 설명하겠습니다. (글로 이해가 안되시면 댓글로 물어봐 주세요)


대상 선택 인자에 자세한 부분을 넣으려면 [@a/@e/@p/@r/@s] 중 하나 뒤에 대괄호 ( [ , ])  를 사용합니다.

대괄호를 작성하는 방식은 [인자 = 값, 인자 = 값, - - - >] 이런식입니다. 


! 를 사용해서 반대를 의미할 수 있습니다.

예를 들면 @e[type=player] 은 플레이어인 엔티티를 대상으로 하지만 << (minecraft: 는 생략 할게요)

@e[type=!player] 은 플레이어가 아닌 모든 엔티티를 대상으로 합니다.


똑같은걸 여러개 쓸 수 있습니다.

@e[type=pig,type=cow] 도 가능합니다. 돼지와 소를 대상으로 한다는 뜻입니다. << (역시나 minecraft: 는 생략 할게요)


좌표  -

말 그대로 좌표를 기준으로 합니다.

기준으로 한다는 말은 무엇이냐면 이 좌표를 기준으로 범위를 설정해야 사용 할 수 있다는 뜻입니다.

distance 이나 dx , dy, dz 를 이용해서요.


사용 방법은 [x=(수),y=(수), z=(수)] 입니다.


distance -

distance는 좌표를 구의 중심으로 하여 distance 값 만큼 반지름을 설정해서 그 구 안에 있는 대상을 지정합니다.

그러니까 @a[x=0,y=0,z=0,distance=5] 라고 하면 반지름이 5고 중심이 (0, 0, 0) 인 구 안에 있는 플레이어를 대상으로 지정한다는게 됩니다. 

(이 distance가 반지름을 위 설명처럼 5 라고 하지 않고 (반지름) X √2 / 2 의 값으로 반지름을 설정하는 것 같다고 합니다.)


dx , dy , dz -

dx, dy, dz는 기준으로 부터 몇블럭까지 떨어진 지점을 범위로 할것인지를 설정합니다.

말이 좀 어려운데 

e1d41ccc6b9a788983a68ac6b0f5e29f.png

(빨간 점이 기준이에요), (dx , dy , dz 는 음수가 될 수도 있습니다.)

기준으로부터 X 몇블럭 Y 몇블럭 Z 몇블럭 이렇게 해서 저런 직육면체 안의 엔티티를 대상으로 한다는 말입니다.

@a[x=0,y=0,z=0,dx=1,dy=1,dz=1] 이라고 하면 부피가 1인 직육면체 안에 들어온 플레이어만 대상으로 하게 되겠죠


점수 -

점수 즉 스코어보드 값을 이용해서 대상을 지정합니다.

사용 방법은 scores={(스코어보드 이름)=(범위 또는 값)} 

<< 마인크래프트에선 범위를 (최솟값)..(최댓값) 으로 지정합니다. (그러니까 ..5 는 5 이하 6.. 는 6 이상 1..5 는 1이상 5 이하입니다.) (값)은 다들 아시겠죠? 그냥 숫자 때려 넣으면 됩니다.


@a[scores={SCORE = 1..5}] 는 "SCORE" 이라는 이름을 가진 스코어 보드 값이 1이상 5 이하인 플레이어를 대상으로 지정합니다.


태그 -

태그를 가진 엔티티를 대상으로 지정합니다.

태그는 엔티티의 이름표 같은 겁니다. 

엔티티에 관한 명령어 편에서 태그를 붙이는 방법을 알려릴 예정인데 흠... 벌써 이게 나와버렸..

어쨌든 사용방법은 tag=(태그 이름)  입니다.


@a[tag=1] 이라고 하면 1이라는 태그를 가진 플레이어를 대상으로 지정합니다.


팀 -

팀에 속해있는 엔티티를 대상으로 합니다.

스코어 보드 편에서 다룰 생각이였던 개념인데 scoreboard team 명령어에서 아예 새로운 명령어로 만들어 졌습니다.

사용 방법은 team=(팀 이름) 입니다.


@a[team=red] 이라고 하면 red 팀인 플레이어를 대상으로 합니다.


수 -

정렬된  개체중에서 얼마나 대상으로 할지를 정합니다.

사용 방법은 limit=(수) 입니다.


@a[limit=5] 라고 하면 정렬된 순서부터 5번째 까지를 대상으로 지정합니다.


정렬 -

정렬은 여러 기준으로 정할 수 있는데 4가지가 있습니다

(nearest, furthest, random, arbitrary)


사용방법은 sort=(기준)입니다.


[sort=nearest] : 가까운 순서부터 정렬합니다.
[sort=furthest] : 먼 순서부터 정렬합니다.
[sort=random] : 무작위로 정렬합니다.
[sort=arbitrary] : 소환된 순서부터 정렬합니다.

레벨 -

말 그대로 레벨이 범위내에 있는 사람을 대상으로 합니다.


사용 방법은 level=(범위)/(수) 입니다.


@a[level=1..5] 이라고 하면 레벨이 1이상 5이하인 플레이어를 대상으로 합니다.


게임 모드 -

그대로 게임모드가 지정한 게임모드인 사람을 대상으로 합니다.


사용 방법은 gamemode=(게임모드이름) 입니다.


@a[gamemode=survival] 이라고 하면 서바이벌 모드인 플레이어를 대상으로 합니다.


이름 -

지정된 이름을 가진 엔티티를 대상으로 합니다.


사용 방법은 name = (문자열) 입니다.


@a[name=limit_kr] 이라고 하면 limit_kr 이라는 이름을 가진 플레이어를 대상으로 합니다.


수직 회전 -

시선의 수직 방향 각도가 범위 내에 속해있는 개체를 대상으로 합니다.


사용 방법은  x_rotation=(범위) 입니다.


@a[x_rotation=1..100] 으로 하면 1이상 100 이하에 시선을 두고 있는 (수직방향) 플레이어를 대상으로 합니다.


수평회전 -

시선의 수평 방향 각도가 범위 내에 속해있는 개체를 대상으로 합니다.


사용방법은 y_rotation=(범위) 입니다.


@a[y_rotation=1..100] 으로 하면 1이상 100 이하에 (수평방향으로) 시선을 두고 있는 플레이어를 대상으로 합니다.


개체종류 -

지정된 개체 종류에 속하는 개체를 대상으로 합니다.


사용 방법은 type=(종류) 입니다.


@e[type=pig] 라고 하면 돼지를 대상으로 합니다.


발전 과제 -

지정된 발전과제를 깼거나 깨지 않은 개체를 대상으로 합니다.


사용 방법은 advancements={minecraft:(발전과제 분류) / (발전과제 id)=(true/false)}  입니다.


@a[advancements={minecraft:adventure/summon_iron_golem= true}] 라고 하면 철골렘을 소환하는 도전과제를 클리어 한 플레이어를 대상으로 합니다.


NBT - 

해당 NBT 값을 가지고 있는 개체를 대상으로 합니다.

NBT는 개체의 속성 같은 건데요 나중에 차차 설명 하도록 하죠 이 강좌에서 그걸 설명하려하면 분명히 글자 수가 8000자를 넘어 갈겁니다. 지금 벌써 4100자를 쳤거든요 (하...)


사용 방법은 nbt={속성(?)} 입니다.


@a[nbt={OnGround:1b}] 라고 하면 땅에 서 있는 플레이어를 대상으로 합니다.


Predicate -

흠...? 이건 저도 처음 봤습니다. 이 강좌쓰면서 공부하다보니 이런게 있더군요..

데이터팩 어쩌구 하던데 더 공부해서 알려드리도록 하겠습니다.


어... 대충 이렇게 알아봤는데요 << (긴 강좌 쓰느라 지쳤다)

다음 강좌에선 드디어!!! 명령어에 대해서 알아 보겠습니다.


목차


10개의 댓글

아이스틴
2020.05.04

아주 유용한 강좌네요

리미트
2020.05.05
@아이스틴

감사합니더!~

허두
2020.05.04

휴, 이번 편은 '커맨드' 가 하나밖에 없었네요 ㅋㅋ

 

도메인 생성이 완료되었습니다!

http://limitbasic4.ezcommand.kro.kr

리미트
2020.05.05
@허두

ㅋㅋㅋㅋ 다행이네요 ㅋㅋㅋㅋ

WintChoco
2020.05.06
@허두

limit를 init으로 본 저는 뭐죠..?

허두
2020.05.07
@WintChoco

윈초요

WintChoco
2020.05.07
@허두

Aㅏ 그렇군요

리미트
2020.05.07
@WintChoco

?? 뭔 맥락이지? 나만 이해 못하는 건가??

init 에서 갑자기 윈초에서 이해?

암호인가? 뭐지? 먼저 3칸씩 옮겨봐야 하나?

전치인가? 뭐지 대입을 ? 아닌데 뭐지....!

(심히 궁금함)

WintChoco
2020.05.07
@리미트

limit을 init으로 본 저는 윈초라는뜻.

리미트
2020.05.07
@WintChoco

Aㅏ 그렇군요.

컨텐츠
https://www.koreaminecraft.net/files/thumbnails/850/878/002/262x150.crop.jpg?20211018191640
(포션 시리즈) 3편 - 비 2

GlassesFilm

2021-10-18

3

https://www.koreaminecraft.net/files/thumbnails/337/871/002/262x150.crop.jpg?20211014221722

플러그인

달고나 뽑기 in Minecraft 8

BlueRing1017

2021-10-14

6

https://www.koreaminecraft.net/files/thumbnails/848/870/002/262x150.crop.jpg?20211014131239

답안지

한마탐 4주차 / 정오표 + 해설 1

베개냥이

2021-10-14

1