คำสั่ง /give หลังยุคดาต้าคอมโพเนนต์: อะไรเข้ามาแทนที่แท็ก NBT
1.20.5 เปลี่ยน NBT ของไอเทมมาเป็นดาต้าคอมโพเนนต์ และตัวอย่างคำสั่ง /give ส่วนใหญ่ที่ยังมีอยู่บนอินเทอร์เน็ตก็ยังเขียนแบบเก่ากันอยู่ นี่คือตารางเทียบแท็กที่คุณคุ้นเคยกับคอมโพเนนต์ที่ใช้ได้จริงในตอนนี้
ถ้าคุณคัดลอกคำสั่ง /give จากคู่มือเก่า ๆ แล้วเกมขึ้น syntax error แปลว่าคำสั่งนั้นเขียนตามรูปแบบ NBT ก่อน 1.20.5 ข้อมูลไอเทมย้ายไปอยู่ใน ดาต้าคอมโพเนนต์ (data components) แล้ว และก้อน {display:{Name:...}} แบบเก่าก็ไม่ถูกแปลงอีกต่อไป
รูปแบบเปลี่ยนไป
old /give @p diamond_sword{display:{Name:'"Skybreaker"'},Enchantments:[{id:sharpness,lvl:5}]}
new /give @p diamond_sword[custom_name="Skybreaker",enchantments={sharpness:5}]
ใช้วงเล็บเหลี่ยม ไม่ใช่วงเล็บปีกกา คอมโพเนนต์เป็นรายการแบนที่คั่นด้วยจุลภาคต่อท้ายไอดีไอเทม
ตารางเทียบที่คุณจะได้ใช้จริง
| NBT แบบเก่า | ดาต้าคอมโพเนนต์ |
|---|---|
display:{Name:...} | custom_name |
display:{Lore:[...]} | lore |
Enchantments:[{id,lvl}] | enchantments={id:level} |
Unbreakable:1b | unbreakable={} |
CustomModelData:3 | custom_model_data={floats:[3]} |
AttributeModifiers:[...] | attribute_modifiers |
display:{color:...} | dyed_color |
SkullOwner | profile |
สามจุดที่พลาดกันบ่อย
- การใส่เครื่องหมายคำพูด
custom_nameรับ text component ที่เขียนเป็น SNBT ดังนั้นชื่อธรรมดา ๆ ก็แค่custom_name="Skybreaker"ส่วนรูปแบบcustom_name='"Skybreaker"'แบบเก่าจากคู่มือยุค 1.20.5 ตอนนี้จะตั้งชื่อไอเทมโดยมีเครื่องหมายคำพูดติดมาด้วย - การลบค่าดีฟอลต์ ใส่
!นำหน้าเพื่อตัดคอมโพเนนต์ที่ไอเทมปกติมีอยู่ออก —[!attribute_modifiers]จะได้ดาบที่ไม่มีโบนัสความเสียหายเลย - Bedrock ไม่มีสิ่งเหล่านี้ คำสั่ง
/giveของ Bedrock ยังใช้โมเดล data-value และ คอมโพเนนต์ของตัวเองอยู่ สตริงคอมโพเนนต์ของ Java จะรันบนนั้นไม่ได้
/give Generator เขียนรูปแบบคอมโพเนนต์ให้คุณและแสดงผลลัพธ์สำหรับ ทั้งสองเอดิชัน คุณจึงคัดลอกอันที่ตรงกับเซิร์ฟเวอร์ที่คุณเล่นอยู่ได้เลย