MC Toolkit

가이드 / 명령어 및 데이터

/attribute: 기본값과 수정자(modifier), 그리고 값이 계속 초기화되는 이유

기본값을 설정하면 영구적이고 수정자를 설정하면 그렇지 않습니다 — 잘못된 연산을 고르지 않는 한. 세 가지 연산, 적용 순서, 그리고 슬롯 함정. 수정자 id가 이제 네임스페이스를 쓰는 점도 다룹니다.

/attribute는 하나의 명령어에 세 개의 하위 명령어가 있는 것처럼 보입니다. 하지만 실제로는 이름만 공유할 뿐 서로 다른 두 시스템이며, 이를 혼동하면 값이 계속 원래대로 돌아갑니다.

기본값 vs 수정자

/attribute @s minecraft:max_health base set 40
/attribute @s minecraft:max_health modifier add my_buff 20 add_value
  • base set는 엔티티 자체의 값을 덮어씁니다. 리로드 후에도 유지되며, 다른 base set 외에는 아무것도 제거하지 못합니다.
  • modifier add는 이름이 붙은 조정값을 그 위에 쌓습니다. 기본값과 마찬가지로 엔티티와 함께 저장되고, id를 가지며, 그 id로 제거할 수 있습니다.

변경 사항이 사라지지 않는다면, base set를 사용해서 base reset가 필요하거나, modifier remove <id>가 필요한 수정자를 추가한 것입니다.

세 가지 연산과 적용 순서

연산하는 일적용 시점
add_value값 + n첫 번째
add_multiplied_base값 + (기본값 × n)두 번째
add_multiplied_total누적 합계 × (1 + n)마지막

순서는 고정되어 있으며 중요합니다. 기본값 20에서 시작하여 add_value 10와 add_multiplied_total 0.5를 적용하면:

20 → 30 → 45          not  20 → 30 → 30 + 10 = 40

add_multiplied_base는 add_value 수정자가 더해진 후에 기본값에 곱합니다 — 누적 합계가 아니라 — 그래서 두 개를 적용하면 복리로 쌓이지 않고 선형으로 더해집니다.

수정자 id는 이제 네임스페이스를 사용합니다

예전 버전에서는 UUID를 사용했습니다. 최신 버전에서는 네임스페이스 id를 사용합니다:

/attribute @s minecraft:attack_damage modifier add my_pack:rage 5 add_value

같은 id로 두 번째 수정자를 추가하면 쌓이거나 대체되는 대신 "Modifier … is already present" 오류와 함께 실패합니다. 버프를 갱신하려면 먼저 modifier remove로 제거하세요.

장비 수정자는 엔티티가 아니라 아이템에 있습니다

검의 공격력 보너스는 attribute_modifiers 아이템 컴포넌트이며, 아이템이 올바른 슬롯에 있을 때만 적용됩니다:

/give @s diamond_sword[attribute_modifiers=[{type:"attack_damage",amount:5,
  operation:"add_value",slot:"mainhand",id:"my:bonus"}]]

slot를 빠뜨리는 것이 흔한 실수입니다. 기본값이 any이므로, 수정자가 모든 장비 슬롯에 적용됩니다 — 검이 주 손이 아니라 보조 손이나 방어구 슬롯에서도 버프를 줍니다.

유효한 슬롯: mainhand, offhand, hand, head, chest, legs, feet, armor, body, saddle, any.

값 다시 읽기

/attribute @s minecraft:max_health get

는 수정자를 포함한 실효 총합을 반환합니다. /attribute @s minecraft:max_health base get는 기본값만 반환합니다.

슬롯이 설정된 아이템 컴포넌트 형식을 포함하여 이 모든 것을 Entity & Combat Command Builder에서 만들 수 있습니다.

엔티티 & 전투 명령어 빌더 →

더 많은 가이드

모두 보기 →