ข้อมูลโมเดลแบบกำหนดเอง: การให้ไอเท็มหนึ่งชิ้นมีหลายโมเดลโดยไม่ต้องแทนที่อะไรเลย
ระบบโมเดลไอเท็มได้เข้ามาแทนที่ CustomModelData predicate แบบเก่า นี่คือโครงสร้างโฟลเดอร์, JSON ที่แมปค่ากับโมเดล และสาเหตุที่พื้นผิวของคุณแสดงเป็นลูกบาศก์สีม่วง
โมเดลไอเท็มแบบกำหนดเองช่วยให้เซิร์ฟเวอร์สามารถแจก "ไม้กายสิทธิ์" ที่จริงแล้วคือแคร์รอตติดเบ็ดที่มีโมเดลต่างออกไป กลไกนี้มีการเปลี่ยนแปลง และบทช่วยสอนส่วนใหญ่ยังคงอธิบายวิธีเก่าอยู่
มีอะไรเปลี่ยนแปลงไปบ้าง
วิธีเก่า — บล็อก predicate ภายในไฟล์โมเดลของไอเท็มหลัก โดยใช้ custom_model_data เป็นตัวเลข:
{ "predicate": { "custom_model_data": 1 }, "model": "item/wand" }
วิธีปัจจุบัน — การกำหนด items/ ที่เลือกโมเดล:
assets/minecraft/items/carrot_on_a_stick.json
{
"model": {
"type": "minecraft:range_dispatch",
"property": "minecraft:custom_model_data",
"fallback": { "type": "minecraft:model", "model": "minecraft:item/carrot_on_a_stick" },
"entries": [
{ "threshold": 1, "model": { "type": "minecraft:model", "model": "minecraft:item/wand" } }
]
}
}
fallback คือสิ่งที่แคร์รอตติดเบ็ดธรรมดายังคงมีลักษณะเหมือนเดิม หากไม่มีสิ่งนี้ แคร์รอตติดเบ็ดที่ไม่ได้ถูกแก้ไขทุกชิ้นในโลกจะกลายเป็นไม้กายสิทธิ์ของคุณ
โครงสร้างโฟลเดอร์
pack.mcmeta
assets/minecraft/
├── items/carrot_on_a_stick.json the dispatch
├── models/item/wand.json the model
└── textures/item/wand.png the texture
models/item/wand.json ในรูปแบบที่ง่ายที่สุด:
{ "parent": "minecraft:item/generated", "textures": { "layer0": "minecraft:item/wand" } }
โปรดสังเกตว่าเส้นทางพื้นผิว ไม่มีคำนำหน้า textures/ และไม่มี .png — นี่คือสาเหตุที่พบบ่อยที่สุดของลูกบาศก์สีม่วง-ดำ
การให้ไอเท็ม
/give @p carrot_on_a_stick[custom_model_data={floats:[1]}]
คอมโพเนนต์นี้รับออบเจกต์ที่มีรายการแบบระบุประเภทแล้ว ไม่ใช่จำนวนเต็มเปล่า custom_model_data=1 คือไวยากรณ์เก่าและจะไม่มีผลใดๆ
ทำไมถึงแสดงเป็นลูกบาศก์สีม่วง
เรียงตามลำดับความน่าจะเป็น:
- เส้นทางพื้นผิวผิด — มี
textures/หรือ.pngหรือไฟล์ไม่ได้อยู่ในตำแหน่งที่เส้นทางระบุ - ตัวพิมพ์ชื่อไฟล์ — เกมจะคำนึงถึงตัวพิมพ์เล็ก-ใหญ่ แม้ว่าระบบปฏิบัติการของคุณจะไม่ใช่ก็ตาม
pack_formatต่ำเกินไป — แพ็กโหลดได้ แต่โฟลเดอร์items/ถูกละเว้น จับคู่รูปแบบกับเวอร์ชันที่คุณใช้งานอยู่- บีบอัดผิดวิธี —
pack.mcmetaต้องอยู่ที่ ราก ของไฟล์ zip ไม่ใช่ภายในโฟลเดอร์ที่อยู่ภายในไฟล์ zip
ตัวเลือกอื่นๆ
range_dispatch บนตัวเลขเป็นเพียงหนึ่งในตัวเลือกเท่านั้น คุณยังสามารถส่งต่อข้อมูลบน minecraft:display_context (โมเดลที่แตกต่างกันเมื่อถืออยู่ในมือเทียบกับอยู่ในกรอบ), minecraft:using_item หรือ minecraft:selected — ซึ่งเป็นวิธีที่คันธนูแสดงสถานะการดึงสาย
สร้าง JSON สำหรับการส่งต่อ, ไฟล์โมเดล และคำสั่งให้ไอเท็มร่วมกันใน เครื่องมือโมเดลและคอมโพเนนต์ไอเท็มแบบกำหนดเอง