Guides / Commands & Data

/attribute: 기본값과 보정값, 그리고 자꾸 초기화되는 이유

기본값 설정은 영구적이지만, 보정값 설정은 그렇지 않습니다. 잘못된 연산 방식을 선택하면 초기화될 수 있습니다. 세 가지 연산 방식, 적용 순서, 그리고 슬롯 함정에 대해 알아봅니다.

/attribute는 세 가지 하위 명령을 가진 하나의 명령처럼 보입니다. 하지만 실제로는 우연히 이름만 공유하는 두 가지 다른 시스템이며, 이 둘을 혼동하는 것이 값이 자꾸 원래대로 돌아가는 이유입니다.

기본값 대 보정값

/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이 필요합니다.

세 가지 연산 방식과 적용 순서

연산내용적용 순서
add_value값 + n첫 번째
add_multiplied_base값 + (기본값 × n)두 번째
add_multiplied_total누적 합계 × (1 + n)마지막

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

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

add_multiplied_base은 항상 누적 합계가 아닌 원래 기본값을 곱합니다. 이것이 두 개의 add_multiplied_base이 복합적으로 작용하는 대신 가산적으로 누적되는 이유입니다.

보정값 ID는 이제 네임스페이스를 사용합니다

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

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

동일한 ID로 두 번째 보정값을 추가하면 첫 번째 보정값이 누적되는 대신 교체됩니다. 이것이 버프를 새로 고치는 의도된 방식입니다. 먼저 제거할 필요가 없습니다.

장비 보정값은 엔티티가 아닌 아이템에 존재합니다

마법이 부여된 검의 피해 보너스는 attribute_modifiers 아이템 컴포넌트이며, 아이템이 올바른 슬롯에 있을 때만 적용됩니다:

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

slot은 필수이며 흔한 실수입니다. 이를 생략하면 보정값이 모든 슬롯에 적용되어, 인벤토리에 있는 검이 그곳에 있는 동안 버프를 줍니다.

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

값 읽어오기

/attribute @s minecraft:max_health get

는 유효한 총합이 아닌 기본값을 반환합니다. 보정값을 포함한 총합을 얻으려면 스코어보드에서 execute store result을 사용하고 그 값을 읽으세요.

슬롯이 설정된 아이템 컴포넌트 형식을 포함하여 이 모든 것을 엔티티 및 전투 명령 생성기에서 만들 수 있습니다.

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

More guides

Browse all →

다른 마인크래프트 도구도 찾고 계신가요?

브라우저에서 바로 쓰는 생성기·뷰어·변환기 모음입니다. 전부 무료입니다.