คำสั่ง /give หลังการเปลี่ยนไปใช้ Data Component: อะไรมาแทนที่ NBT Tag
Minecraft 1.20.5 ได้เปลี่ยนจากการใช้ NBT ของไอเทมมาเป็น Data Component และโค้ดคำสั่ง /give ส่วนใหญ่ที่หาได้ทางออนไลน์ยังคงเป็นรูปแบบเก่า บทความนี้จะแสดงการจับคู่จาก NBT Tag ที่คุณคุ้นเคยไปสู่ Data Component ที่ใช้งานได้ในปัจจุบัน
หากคุณวางคำสั่ง /give จากคู่มือเก่าๆ แล้วเกมตอบกลับว่า Unknown item tag หรือเงียบหายไปพร้อมกับเอนชานต์ของคุณ นั่นหมายความว่าคำสั่งนั้นเขียนขึ้นตาม รูปแบบ NBT ก่อนเวอร์ชัน 1.20.5 ข้อมูลไอเทมได้ย้ายไปใช้ Data Component แล้ว และ {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}]
ใช้เครื่องหมายวงเล็บเหลี่ยม ไม่ใช่วงเล็บปีกกา Component จะเป็นรายการแบบเรียบ คั่นด้วยเครื่องหมายจุลภาคบน ID ของไอเทม
การจับคู่ที่คุณจะใช้งานจริง
| NBT แบบเก่า | Data Component |
|---|---|
display:{Name:...} | custom_name |
display:{Lore:[...]} | lore |
Enchantments:[{id,lvl}] | enchantments={id:level} |
Unbreakable:1b | unbreakable={} |
CustomModelData:3 | custom_model_data=3 |
AttributeModifiers:[...] | attribute_modifiers |
display:{color:...} | dyed_color |
SkullOwner | profile |
สามข้อควรระวัง
- การใส่เครื่องหมายคำพูด (Quoting)
custom_nameใช้ JSON text component ดังนั้นสตริงธรรมดาจึงยังคงต้องมี
เครื่องหมายคำพูดของตัวเองอยู่ภายในอาร์กิวเมนต์: custom_name='"Skybreaker"'
- การลบค่าเริ่มต้น ใส่คำนำหน้าด้วย
!เพื่อลบ Component ที่ไอเทมมีตามปกติ —
[!attribute_modifiers] จะให้ดาบที่ไม่มีโบนัสความเสียหายเลย
- หินดาน (Bedrock) ไม่มีสิ่งนี้ หินดาน
/giveยังคงใช้ data-value และ
component model ของตัวเอง สตริง Java component จะไม่สามารถทำงานได้ที่นั่น
/give Generator จะสร้างรูปแบบ component ให้คุณและแสดงผลลัพธ์สำหรับ ทั้งสองเวอร์ชัน เพื่อให้คุณสามารถคัดลอกอันที่ตรงกับเซิร์ฟเวอร์ที่คุณใช้งานอยู่