HURDOO 2b370e4f33334fd5af2d1419cfe356a7
게임버전 | 1.16.x |
---|
http://attribute.ezcommand.kro.kr )
(이 게시글 주소:막 그런거 있잖아요,
에센셜 플러그인을 적용하면 나는 속도를 바꿀 수 있고,
어떤 것을 착용하면 최대 체력이 한 칸으로 줄어들고...
이젠 명령어로도 할 수 있게 되었습니다!
/attribute
우리들의 능력치를 우리 멋대로 조정해봅시다!
자바 에디션 1.16 버전부터 사용 가능합니다.
지옥 업데이트를 좋아하시는 분들은 바로 사용이 가능하겠네요!
베드락 에디션에서는 아직 사용이 불가능합니다.
해당 명령어가 추가될 때까지 업데이트를 기다려주세요!
자, Attribute를 다루는 명령어를 알기 위해선, Attribute가 무엇인지부터 알아봐야겠죠?
예를 들어서, 1.16에서 새로 나온(!!!) 네더라이트 검을 한번 봅시다.
설명을 보면,
주로 사용하는 손에 있을 때: 8 공격 피해 1.6 공격 속도라고 나와있는 것이 보이시죠?
보통은 그냥 지나치셨을 이 문구는 사실
이 무기를 들었을 때 우리의 능력치(Attribute)가 어떻게 바뀌는지를 알려주는 것이었습니다.
즉, 우리는 우리도 모르게 Attribute를 이용하고 있었던 것이죠.
이와 같이 우리의 마인크래프트 곳곳에서는 Attribute가 숨어 있었습니다.
무기와 방어구, 도구, 몇몇 물약들과 물약 화살들 등등은 Attribute를 통해 제 기능을 시행하죠.
하지만, 우리는 이 편안한 기능을 1.15까지는 사용하지 못했습니다.
Attribute는 NBT를 통해 저장되는데, 커멘드로는 플레이어의 NBT 태그를 수정할 수 없거든요.
(아직까지도 그렇습니다.)
Attribute를 잘 뜯어보면, 크게 우리의 기본 능력치와 추가 능력치로 나뉩니다.
기본 능력치 + 추가 능력치 = 총 능력치 로 계산되죠.
예를 들어, 우리의 평소 공격력은 1입니다.
-1 + 기본 공격력 1 - 1 + (추가) 맨손 공격력 1 = 총 공격력 1(공격력 능력치는 특이하게도 기본 공격력에 -1이 붙습니다)
하지만 여기에 공격력이 8이 되는 네더라이트 검을 들게 되면?
-1 + 기본 공격력 1 - 1 + (추가) 네더라이트 검 공격력 8 = 총 공격력 8위와 같이 총 공격력이 8가 되게 됩니다.
그러면 여기서 힘 II 포션까지 마셔보죠.
-1 + 기본 공격력 1 + (추가) 네더라이트 검 공격력 8 + (추가) 힘 II 포션 공격력 6 = 총 공격력 14이런 식으로 Attribute가 작동됩니다.
자, 그럼 대충 Attribute가 무엇인지 이해하신 것 같으니,
본격적으로 /attribute 명령어도 알러 가봅시다!
0단계
/attribute 대상 속성 ...
난이도: ☆☆☆☆☆
/attribute 명령어는 꽤 구조가 복잡합니다.
그러니, 여기서 틀을 먼저 다져두고 가도록 하죠.
'대상'에는 능력치를 다룰 대상이 들어가게 됩니다. 플레이어든 몹이든, 엔티티이기만 하면 상관없죠.
'속성'에는 능력치의 영문 코드가 들어가게 됩니다.
[팁: Attribute 능력치 목록(마인크래프트 위키)]
엔티티마다 적용될 수 있는 Attribute의 종류가 달라진다는 것 주의해주세요!
자, 이제 이 뒤로 나올 옵션들을 살펴보러 가자고요!
1단계
/attribute 대상 속성 get
난이도: ★☆☆☆☆
총 능력치(-1+기본 능력치+추가 능력치) 값을 알려주는 명령어입니다.
예를 들어, 힘 II 포션을 마신 상태에서 네더라이트 검을 들게 되면
총 공격력이 14가 되는 것을 알 수 있죠.
2단계
/attribute 대상 속성 base get
난이도: ★☆☆☆☆
1단계에서 총 능력치를 알아보았다면, 이번에는 기본 능력치를 알아봅시다!
1단계와 다른 것들은 모두 같지만, 이번에는 기본 능력치만 출력됩니다!
3단계
/attribute 대상 속성 base set 값
난이도: ★★☆☆☆
지금까지는 능력치의 값을 받아오기만 하였죠?
이번에는 능력치의 값을 직접 설정해봅시다!
이번 3단계에서는 기본 능력치를 설정해보죠!
'값'에 해당 능력치의 기본값으로 정하고자 하는 실수를 적어주시면 됩니다.
예를 들어,
명령어를 이런 식으로 입력하면 기본 공격력이 2로 변하게 되죠!
4단계
/attribute 대상 속성 modifier add UUID 이름 값 연산방식
난이도: ★★★★★
자아, 갑자기 난이도가 올라가서 놀라셨죠?
사실 /attribute는 3단계까지만 아셔도 충분히 쓰실 수 있습니다.
다만 이 modifier, 즉 '변경자' 를 다룰 줄 아신다면 더욱 활용도가 높아지겠죠!
변경자는 '추가 능력치'를 다뤄줍니다!
즉, 기본 능력치를 건드리지 않고도 우리의 총 능력치를 올려줄 수 있다는 것이죠!
그치만, 그렇게 편리한 만큼 어렵습니다... 잘 따라오셔야 해요!
우선 변경자는 다음의 속성들을 가집니다.
이름: 변경자의 이름
UUID: 변경자의 UUID
속성: 변경자가 상향/하향시킬 능력치의 종류
값: 변경자가 상향/하향시킬 양
연산방식: 변경자가 능력치를 상향/하향시키는 방법의 종류
이 중에서 속성은 앞에 나왔고... 나머지만 신경 쓰면 되겠죠?
자, 일단은 명령어 형식이 너무 위로 올라갔으니 좀 밑으로 끌고 내려오겠습니다.
/attribute A 속성 modifier add UUID 이름 값 연산방식
먼저 예시를 좀 보여드리고 나서 설명드리는 것이 편하겠네요.
/attribute @s minecraft:generic.attack_damage modifier add 1-1-1-1-1 BossReward 1 add
자, 저기에서 앞 부분은 빼고, modifier 부분부터 보도록 하죠.
... modifier add 1-1-1-1-1 BossReward 1 add ... modifier add UUID 이름 값 연산방식
색을 이용하여 한번 정리해보았습니다.
조금 감이 오시나요?
UUID는 JE 1.15까지 쓰였던 8자리-4자리-4자리-4자리-12자리 형식을 사용합니다.
단, 위에서 보시다시피 0은 생략할 수도 있죠.
1-1-1-1-1 은 00000001-0001-0001-0001-000000000001 이 된다는 뜻입니다.
단, 이미 있는 변경자와 UUID가 겹치면 안됩니다.
이름에는 그냥 구별하기 쉬운 이름을 써주시면 됩니다.
영어와 _ - + . 등등의 특수문자가 들어갈 수 있습니다.
값에는 연산할 값을 넣어주시면 됩니다. 물론 유리수 범위에서요.
연산방식은... 이게 좀 복잡합니다.
들어갈 수 있는 옵션에는 add와 multiply, multiply_base 이렇게 총 3가지가 있습니다.
add가 가장 먼저 계산됩니다.
그냥 지금까지 있던 총 능력치에 '값'을 더해줍니다.
예를 들어, 현재 총 능력치가 8이고 add 형식의 변경자 2개가 각각 4, 5의 값을 가지고 있다면
8+4+5=17이 되는 것이죠.
그 다음으로 multiply_base가 계산됩니다. 이 친구는
(같은 multiply_base 연산 방식의 변경자들의 모든 '값'의 합+1) 을 지금까지의 총 능력치에 곱해줍니다.
예를 들어, 현재 총 능력치가 3이고 multiply_base 형식의 변경자 2개가 각각 4, 5의 값을 가지고 있다면
3 × (1+4+5) = 3 × 10 = 30 이 되는 것이죠.
마지막으로 multiply가 계산됩니다.
이 친구는 그냥 각각 변경자마다의 ('값'+1) 을 지금까지의 총 능력치에 곱해줍니다.
예를 들어, 현재 총 능력치가 3이고 multiply 형식의 변경자 2개가 각각 4,5의 값을 가지고 있다면
3×(1+4)×(1+5) = 3×5×6 = 90 이 되는 것이죠.
이를 바탕으로 아까의 예시를 가져와보면,
/attribute @s minecraft:generic.attack_damage modifier add 1-1-1-1-1 BossReward 1 add
이번에 추가되는 변경자는
UUID가 00000001-0001-0001-0001-000000000001로,
BossReward라는 이름을 가지고 있으며,
공격력의 총 능력치에 1을 더해주는 계산을 가장 먼저 수행합니다.
5단계
/attribute 대상 속성 modifier value get UUID
난이도: ★★★☆☆
자, 이 변경자를 이해하셨다면 이제부터는 쉽습니다!
(난이도도 별 3개로 확 떨어졌어요!)
이 명령어는 'UUID'의 UUID를 가지고 있는 변경자가 가지고 있는 '값'을 알려줍니다!
6단계
/attribute 대상 속성 modifier remove UUID
난이도: ★★★☆☆
추가도 하고, 값도 알아봤으니.
이젠 삭제도 한번 해봐야겠죠?
이 명령어는 'UUID'의 UUID를 가지고 있는 변경자를 제거합니다!
휴우... 드디어 끝입니다...
사실 이 /attribute 명령어는 시험 끝나자마자 쓰기 시작했는데,
능력치 계산 방식이랑 변경자에서 막혀 그 시스템을 이해하느라 3주나 걸렸네요ㅠㅠ
별다른 말 없이 3주동안 아무 게시글이 없었어서 죄송합니다!
(다행히 이번 1.16.2에 /spawnpoint 업데이트가 있어서 어제 그걸로 글을 올리긴 했다만요)
제가 부재중인 동안 게시판이 비어있지 않도록 강의를 올려주신 분들께도 너무 감사드립니다!
다시 EZCommand 게시판에도 게시글이 많이 올라오기 시작할 테니 많은 관심 부탁드립니다!
오랜만에 이 문장으로 게시글을 마치도록 하죠!
모두의 커멘드가 EZ해지는 그날까지! http://ezcommand.kro.kr
세리시아
2020.08.13흥미롭지만 어려운 커맨드를 이해하기 쉽게 정리해주셔서 감사합니다! :D
허두
2020.08.21그렇습니다. 허두는 수학에 약합니다.
글 쓰고 일주일 후에 알아챈거 실화?아이스틴
2020.12.231.16 나온지 오래되었는데 드디어 attribute를 접해보네요 ㅋㅋ 이제 곧 1.17 나오는데.....