MC Toolkit

คู่มือ / คำสั่งและข้อมูล

/attribute: ค่าฐานเทียบกับตัวปรับแต่ง และทำไมค่าของคุณถึงรีเซ็ตอยู่เรื่อย

การตั้งค่าฐานเป็นแบบถาวร แต่การตั้งตัวปรับแต่งไม่ใช่ — เว้นแต่คุณจะเลือก operation ผิด สาม operation ลำดับการซ้อนทับ และกับดักของ slot

/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 หรือไม่ก็เพิ่มตัวปรับแต่งที่ต้องใช้ modifier remove <id>

สาม operation และลำดับที่มันถูกนำไปใช้

Operationทำอะไรถูกนำไปใช้
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 ของตัวปรับแต่งใช้ namespace แล้ว

เวอร์ชันเก่าใช้ UUID เวอร์ชันใหม่ใช้ namespaced id:

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

การเพิ่มตัวปรับแต่งตัวที่สองที่มี id เดียวกันจะล้มเหลวด้วยข้อความ "Modifier … is already present" แทนที่จะซ้อนทับหรือแทนที่ ถ้าต้องการรีเฟรชบัฟ ให้ modifier remove มันก่อน

ตัวปรับแต่งจากอุปกรณ์อยู่บนไอเทม ไม่ใช่บนเอนทิตี

โบนัสความเสียหายของดาบคือ item component attribute_modifiers และมันจะทำงานเฉพาะเมื่อไอเทมอยู่ใน slot ที่ถูกต้องเท่านั้น:

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

การลืมใส่ slot คือความผิดพลาดที่พบบ่อยที่สุด ค่าเริ่มต้นของมันคือ any ดังนั้นตัวปรับแต่งจะทำงานในทุก slot ของอุปกรณ์ — ดาบจะบัฟคุณจากมือรอง หรือจาก slot เกราะ ไม่ใช่แค่จากมือหลัก

slot ที่ใช้ได้: mainhand, offhand, hand, head, chest, legs, feet, armor, body, saddle, any

การอ่านค่ากลับ

/attribute @s minecraft:max_health get

จะคืนค่ายอดรวมที่แท้จริง ซึ่งรวมตัวปรับแต่งเข้าไปด้วย ส่วน /attribute @s minecraft:max_health base get จะคืนแค่ค่าฐาน

สร้างสิ่งใดก็ตามเหล่านี้ — รวมถึงรูปแบบ item component ที่ตั้ง slot ไว้แล้ว — ได้ใน Entity & Combat Command Builder

ตัวสร้างคำสั่งเอนทิตีและการต่อสู้ →

คู่มือเพิ่มเติม

ดูทั้งหมด →