Predicate ที่มีเงื่อนไขเดียวจะไม่มี wrapper ซึ่งเป็นการเปลี่ยนรูปทรงที่แท้จริง
เงื่อนไขเดียวคือตัว object เอง ส่วนสองเงื่อนไขขึ้นไปจะถูกห่อด้วย all_of หรือ any_of พร้อมกับประเภทเงื่อนไขทั้งแปด และเหตุผลที่การกลับด้านเป็น wrapper ไม่ใช่ flag
Predicate ของ datapack คือไฟล์ JSON ที่อธิบายเงื่อนไข และโครงสร้างของมันจะเปลี่ยนไปตามจำนวนเงื่อนไขที่คุณมี นี่คือส่วนที่ทำให้คนสับสนเมื่อคัดลอกตัวอย่างและนำไปขยายต่อ
หนึ่งไม่ใช่รายการของหนึ่ง
| เงื่อนไข | รูปแบบผลลัพธ์ |
|---|---|
| 0 | {} |
| 1 | ตัว object เงื่อนไขเอง |
| 2+ | { "condition": "minecraft:all_of", "terms": [ … ] } |
ไม่มี wrapper ห่อหุ้มเงื่อนไขเดียว เมื่อเพิ่มเงื่อนไขที่สอง ไฟล์ทั้งหมดจะเปลี่ยนรูปทรงไป เงื่อนไขเดิมจะกลายเป็นองค์ประกอบแรกของอาร์เรย์ terms ภายใต้ root ใหม่ อะไรก็ตามที่อ่านหรือสร้างสิ่งเหล่านี้จะต้องจัดการทั้งสองรูปแบบ และตัวอย่างที่สร้างจากเงื่อนไขเดียวจะไม่แสดงให้เห็นถึงรูปทรงที่คุณต้องการในทันทีที่คุณเพิ่มเงื่อนไขอื่น
any_of คือตัวรวมทางเลือก: ทุก เงื่อนไขต้องผ่าน หรือ เงื่อนไขใด เงื่อนไขหนึ่งในนั้น
การกลับด้านก็เป็น wrapper เช่นกัน ไม่ใช่ flag
ไม่มีฟิลด์ "invert": true เงื่อนไขที่ถูกปฏิเสธจะถูกห่อหุ้ม:
{ "condition": "minecraft:inverted", "term": { …the original condition… } }
โปรดสังเกต term ซึ่งเป็นเอกพจน์ — inverted รับเพียงหนึ่งเดียว ในขณะที่ all_of และ any_of รับอาร์เรย์ terms คีย์สองตัวที่ดูคล้ายกันแต่มีรูปทรงต่างกัน และการกลับด้านจะใช้กับแต่ละเงื่อนไข ดังนั้น predicate สามารถผสมเงื่อนไขที่กลับด้านและเงื่อนไขปกติได้อย่างอิสระภายใน all_of เดียว
ประเภทเงื่อนไขทั้งแปด
entity_properties random_chance
value_check random_chance_with_looting
weather_check time_check
location_check match_tool
random_chance_with_looting เป็นสิ่งที่เราควรหยุดพิจารณา: มันรับค่าโอกาสพื้นฐาน (base chance) และ ค่าโชค (Luck) looting_multiplier ดังนั้นความน่าจะเป็นจะปรับตามระดับการฉกชิง (Looting) ของผู้สังหาร นั่นทำให้มันมีความหมายเฉพาะในบริบทที่มีผู้สังหารอยู่เท่านั้น — มันเป็นเงื่อนไขอัตราการดรอป ไม่ใช่ประตูสุ่มอเนกประสงค์ ส่วน random_chance ธรรมดาคือสิ่งที่ควรใช้ในที่อื่นๆ
value_check เปรียบเทียบตัวเลขกับหนึ่งในสามแหล่งที่มา: ระดับการร่ายเวท (enchantment level), โชค (luck), หรือนิพจน์ที่กำหนดเองที่คุณแก้ไขลงใน JSON ด้วยตนเองหลังจากคัดลอก
ตัวเลือกคือชุดข้อมูล vanilla เป๊ะๆ
เป็นสิ่งสำคัญที่ควรทราบเมื่อคุณตรวจสอบว่า ID ชีวนิเวศ (biome) หรือโครงสร้าง (structure) นั้นมีอยู่จริงหรือไม่: รายการดรอปดาวน์ของตัวสร้างไม่ใช่ตัวอย่างที่คัดสรรมา
- 66 ชีวนิเวศ — ชีวนิเวศทุกชนิดในเกม ไม่มีอะไรขาดหายและไม่มีอะไรถูกสร้างขึ้นมาใหม่
- 34 โครงสร้าง — เช่นกัน
- 18 แท็กบล็อกและ 15 ไอเทม ซึ่ง เป็น ชุดย่อยที่ใช้งานได้
สิ่งนี้ได้รับการยืนยันจากข้อมูลการลงทะเบียนของเกมเอง ไม่ใช่การสันนิษฐาน ดังนั้นหาก ID หายไปจากรายการชีวนิเวศหรือโครงสร้าง แสดงว่า ID นั้นไม่มีอยู่จริง สำหรับแท็กบล็อกและไอเทมนั้นตรงกันข้าม: การไม่มีอยู่หมายความเพียงว่าตัวเลือกไม่ได้แสดงรายการ และการพิมพ์ ID ด้วยตนเองก็ใช้ได้ดี