/attribute: giá trị cơ sở so với các bổ trợ, và lý do chỉ số của bạn cứ bị đặt lại
Đặt giá trị cơ sở là vĩnh viễn còn đặt bổ trợ thì không — trừ khi bạn chọn sai phép toán. Ba phép toán, thứ tự cộng dồn, và cái bẫy về ô trang bị.
/attribute trông giống như một câu lệnh với ba câu lệnh con. Thực ra nó là hai hệ thống khác nhau chỉ tình cờ trùng tên, và việc nhầm lẫn giữa chúng chính là lý do các giá trị cứ bị bật ngược trở lại.
giá trị cơ sở so với bổ trợ
/attribute @s minecraft:max_health base set 40
/attribute @s minecraft:max_health modifier add my_buff 20 add_value
base setghi đè giá trị của chính thực thể. Nó tồn tại vĩnh viễn qua các lần tải lại và không bị gỡ bỏ bởi bất cứ thứ gì ngoại trừ mộtbase setkhác.modifier addxếp chồng một điều chỉnh có tên lên trên. Nó được lưu cùng thực thể giống như giá trị cơ sở, nó có một id, và nó có thể bị gỡ bỏ bằng id đó.
Nếu thay đổi của bạn không chịu biến mất, thì hoặc bạn đã dùng base set và cần base reset, hoặc đã thêm một bổ trợ cần modifier remove <id>.
Ba phép toán, và thứ tự áp dụng chúng
| Phép toán | Tác dụng | Áp dụng |
|---|---|---|
add_value | giá trị + n | đầu tiên |
add_multiplied_base | giá trị + (cơ sở × n) | thứ hai |
add_multiplied_total | tổng đang chạy × (1 + n) | cuối cùng |
Thứ tự là cố định và nó rất quan trọng. Bắt đầu từ cơ sở 20, rồi add_value 10 và add_multiplied_total 0.5:
20 → 30 → 45 not 20 → 30 → 30 + 10 = 40
add_multiplied_base nhân với giá trị cơ sở sau khi các bổ trợ add_value đã được cộng vào — chứ không phải với tổng đang chạy — đó là lý do hai bổ trợ loại này cộng dồn theo kiểu cộng thêm thay vì nhân chồng lên nhau.
Id bổ trợ giờ đã có không gian tên
Các phiên bản cũ dùng UUID. Các phiên bản hiện đại dùng id có không gian tên:
/attribute @s minecraft:attack_damage modifier add my_pack:rage 5 add_value
Thêm một bổ trợ thứ hai cùng id sẽ thất bại với thông báo "Modifier … is already present" thay vì cộng dồn hay thay thế nó. Để làm mới một hiệu ứng tăng cường, hãy modifier remove nó trước.
Bổ trợ trang bị nằm trên vật phẩm, không phải trên thực thể
Phần thưởng sát thương của một thanh kiếm là một thành phần vật phẩm (item component) attribute_modifiers, và nó chỉ áp dụng khi vật phẩm nằm đúng ô:
/give @s diamond_sword[attribute_modifiers=[{type:"attack_damage",amount:5,
operation:"add_value",slot:"mainhand",id:"my:bonus"}]]
Bỏ sót slot là lỗi thường gặp. Nó mặc định là any, nên bổ trợ sẽ áp dụng ở mọi ô trang bị — một thanh kiếm tăng cường cho bạn từ tay phụ, hoặc từ ô giáp, chứ không chỉ từ tay chính.
Các ô hợp lệ: mainhand, offhand, hand, head, chest, legs, feet, armor, body, saddle, any.
Đọc lại một giá trị
/attribute @s minecraft:max_health get
trả về tổng hiệu lực, bao gồm cả các bổ trợ. /attribute @s minecraft:max_health base get chỉ trả về giá trị cơ sở.
Hãy tạo bất kỳ cái nào trong số này — kể cả dạng thành phần vật phẩm với ô đã được đặt — trong Entity & Combat Command Builder.