มนตร์กำหนดเองแบบไม่ต้องใช้มอด: รูปแบบมนตร์แบบขับเคลื่อนด้วยข้อมูล
มนตร์กลายเป็นข้อมูล datapack JSON ดังนั้นมนตร์กำหนดเองจึงไม่ต้องใช้มอด นี่คือรูปร่างไฟล์ คอมโพเนนต์เอฟเฟกต์ที่ทำงานได้จริง และวิธีทำให้ได้มา
มนตร์เคยถูกฮาร์ดโค้ดไว้ ตอนนี้มันเป็นข้อมูล datapack ซึ่งหมายความว่ามนตร์กำหนดเองจริง ๆ — ชื่อใหม่ เอฟเฟกต์ใหม่ เส้นโค้งราคาใหม่ — คือไฟล์ JSON
อยู่ที่ไหน
data/<namespace>/enchantment/lightning_strike.json
เอกพจน์ enchantment/ เหมือนกับหมวดหมู่ datapack อื่น ๆ ทั้งหมดตั้งแต่การเปลี่ยนชื่อ
ไฟล์ขั้นต่ำ
{
"description": { "translate": "enchantment.my_pack.lightning_strike" },
"supported_items": "#minecraft:enchantable/melee_weapon",
"weight": 2,
"max_level": 3,
"min_cost": { "base": 10, "per_level_above_first": 10 },
"max_cost": { "base": 50, "per_level_above_first": 10 },
"anvil_cost": 4,
"slots": ["mainhand"]
}
แค่นั้นก็ได้มนตร์จริงที่โหลดและแสดงบนไอเทมแล้ว แต่มันยังไม่ทำอะไร — พฤติกรรมแยกออกไป — และโต๊ะจะไม่เสนอมันจนกว่าจะติดแท็ก (ด้านล่าง)
weightคือความหายากที่โต๊ะร่ายมนตร์ วานิลลาใช้ 10 สำหรับธรรมดา 1 สำหรับหายากมาก มันเป็นค่าสัมพัทธ์ ไม่ใช่เปอร์เซ็นต์slotsตัดสินใจว่ามนตร์ทำงานที่ไหน:mainhand,offhand,armor,headและอื่น ๆ มันจำเป็น: ละเว้นแล้วไฟล์จะโหลดไม่สำเร็จsupported_itemsรับแท็กไอเทมหรือรายการ แท็ก#minecraft:enchantable/*มีอยู่แล้วสำหรับกลุ่มที่สมเหตุสมผล —melee_weapon,sharp_weapon,mining,armorและอื่น ๆ ไม่มีenchantable/sword; แท็กที่ไม่มีอยู่จะทำให้ไฟล์ล้มเหลว
ทำให้มันทำอะไรบางอย่าง
effects แนบพฤติกรรม:
"effects": {
"minecraft:post_attack": [{
"enchanted": "attacker",
"affected": "victim",
"effect": { "type": "minecraft:run_function", "function": "my_pack:strike" },
"requirements": { "condition": "minecraft:random_chance", "chance": 0.25 }
}]
}
post_attack ต้องรู้ว่ามนตร์เป็นของใคร (enchanted) และเอฟเฟกต์ตกกับใคร (affected) — ทั้งคู่จำเป็น run_function คือทางออกฉุกเฉิน — อะไรก็ตามที่ฟังก์ชันทำได้ มนตร์ก็ทำได้ ประเภทเอฟเฟกต์ในตัวครอบคลุมความเสียหาย การตีกระดอน ความทนทาน ไอเทมดรอป และแอตทริบิวต์โดยไม่ต้องใช้ฟังก์ชันเลย และมันถูกกว่า
requirements รับเพรดิเคตใด ๆ ดังนั้นการกั้นด้วยประเภทของเป้าหมาย สภาพอากาศ หรือโอกาสสุ่มก็เป็น JSON บล็อกเดียว
ตั้งชื่อมัน
description เป็นคอมโพเนนต์ข้อความ ดังนั้นชื่อฮาร์ดโค้ดก็ใช้ได้:
"description": { "text": "Lightning Strike", "color": "gold" }
แต่คีย์ translate บวกไฟล์ภาษใน resource pack คือสิ่งที่ทำให้มันอ่านถูกต้องสำหรับผู้เล่นในภาษาอื่น — เหตุผลเดียวกับที่ไซต์นี้ใช้คำศัพท์เกมจากคำแปลของ Mojang เอง
ทำให้ได้มา
สามเส้นทาง และปกติคุณอยากได้มากกว่าหนึ่ง:
- โต๊ะร่ายมนตร์ — เมื่อตั้ง
weightและเส้นโค้งราคาแล้ว และมนตร์อยู่ใน#minecraft:in_enchanting_table - ตารางดรอป —
enchant_randomlyพร้อมมนตร์ของคุณในรายการ หรือenchant_with_levelsถ้ามันควรแข่งขันด้านราคา - ชาวบ้านซื้อขาย — หนังสือร่ายมนตร์ที่มีมนตร์ของคุณในไอเทมของการซื้อขาย
การเพิ่มมันใน #minecraft:in_enchanting_table คือสิ่งที่ทำให้โต๊ะเสนอมันเลย; แท็กนี้ลืมง่ายและสร้างมนตร์ที่มีอยู่แต่ไม่เคยปรากฏ
สร้าง JSON มนตร์และคู่หู armor-trim ของมัน พร้อมแท็กและสล็อตที่ตั้งไว้ ใน Custom Enchantment & Trim Builder