คู่มือ / การก่อสร้างและทรัพยากร
ภาพวาดและแผ่นเพลงแบบกำหนดเองต้องใช้สองแพ็ก และการติดตั้งเพียงอย่างเดียวคือสาเหตุความล้มเหลวที่พบบ่อย
Datapack ลงทะเบียนเนื้อหา ส่วน resource pack จัดหาพื้นผิวและเสียง ใช้ datapack เดียวจะลงทะเบียนได้แต่ไม่มีอะไรแสดงผล บวกกับขีดจำกัด 16×16 และสิ่งที่ความยาวแผ่นเพลงควบคุมจริง ๆ
ภาพวาดและแผ่นเพลงเป็น registry จริงใน Java สมัยใหม่ ซึ่งหมายความว่าคุณสามารถ เพิ่ม เข้าไปได้แทนที่จะแทนที่ของ vanilla ไม่มีอะไรที่คุณเพิ่มเข้าไปจะไปแทนที่ภาพวาดหรือแผ่นเพลงที่มีอยู่เดิม
จุดที่ต้องระวังคือเนื้อหาถูกแยกออกเป็นสองประเภทแพ็กที่แตกต่างกัน และแต่ละอย่างก็ไร้ประโยชน์หากใช้เดี่ยว ๆ
อะไรอยู่ที่ไหน
Datapack ลงทะเบียนตัวสิ่งของ:
data/<ns>/painting_variant/<id>.json asset_id, width, height, title, author
data/<ns>/jukebox_song/<id>.json sound_event, description, length_in_seconds, comparator_output
Resource pack จัดหาสิ่งที่คุณเห็นและได้ยิน:
assets/<ns>/textures/painting/<id>.png
assets/<ns>/sounds/<id>.ogg
assets/<ns>/sounds.json
ติดตั้งแค่ datapack เนื้อหาก็ลงทะเบียนสำเร็จ — มันมีอยู่ /give หาเจอ และก็แค่ไม่มีพื้นผิวและไม่มีเสียงเท่านั้น ผลลัพธ์แบบนี้สับสนกว่าความล้มเหลวแบบตรง ๆ มาก และนี่คือสาเหตุปกติที่ภาพวาดกำหนดเอง "ไม่ทำงาน" เครื่องมือในหน้านี้จัดส่งทั้งสองอย่างในไฟล์ zip เดียวโดยเฉพาะเพื่อไม่ให้แยกออกจากกัน
สังเกตไฟล์ pack.mcmeta สองไฟล์ พวกมันเป็นแพ็กแยกที่มีตัวตนแยกกัน ไม่มีรูปแบบรวมที่บรรจุทั้งสองอย่าง
Registry id เข้มงวดกว่าชื่อไฟล์
id หนึ่งสามารถมีได้แค่ a-z, 0-9, _, . และ - (บวก / สำหรับโฟลเดอร์ย่อย) อย่างอื่นเกมจะ ข้ามไฟล์นั้น พร้อมบรรทัด "Invalid path" ในล็อก — แพ็กโหลดได้ แต่รายการนั้นไม่เคยมีอยู่จริง ซึ่งสังเกตได้ยากกว่าความล้มเหลว ตัวพิมพ์ใหญ่และช่องว่างคือสองสิ่งที่คนมักพลาด เพราะทั้งคู่เป็นเรื่องปกติธรรมดาในชื่อไฟล์ที่คุณลากเข้ามา
ภาพวาด: สูงสุด 16×16 และ 17 ทำให้แพ็กพัง
ภาพวาดของ vanilla เองมีตั้งแต่ 1 × 1 ถึง 4 × 4 บล็อก และเครื่องมือนี้ก็มีช่วงเดียวกัน รูปแบบอนุญาตมากกว่านั้น: 26.3 อ่าน width และ height เป็นจำนวนบล็อกเต็มตั้งแต่ 1 ถึง 16 และภาพวาด 16 × 16 โหลดได้ แขวนได้ และอยู่บนผนังใดก็ได้ที่มีพื้นที่ 16 × 16 บล็อก — ทดสอบบนเซิร์ฟเวอร์ 26.3 สิ่งที่ตัดสินว่าภาพวาดจะอยู่ได้คือพื้นที่ ไม่ใช่ขนาด: ภาพวาดที่ไม่พอดีกับที่แขวนจะหล่นเป็นไอเทม และภาพวาด 1 × 1 ของ vanilla ที่ไม่มีอะไรอยู่ข้างหลังก็หล่นเหมือนกัน
เกิน 16 ไปเกมไม่ตัดตัวเลขให้อยู่ในช่วง แต่ปฏิเสธไปเลย "width": 17 ล้มเหลวด้วย "Value must be within range [1;16]" การโหลด registry ทั้งหมดหยุดตามไปด้วย และโลกจะไม่เปิดจนกว่าจะลบแพ็กออก
ขนาดประกาศใน JSON เป็น width และ height หน่วยเป็นบล็อก ไม่ได้อนุมานจาก PNG ดังนั้นภาพวาด 3 × 1 ที่พื้นผิวเป็นสี่เหลี่ยมจัตุรัสก็เป็นไฟล์ที่ถูกต้องและแสดงผลแบบยืดออก
ความยาวแผ่นเพลงไม่ใช่แค่ป้ายกำกับ
length_in_seconds คือเวลาที่เกมตัดสินว่าเพลงจบ หนึ่งวินาทีหลังจากความยาวที่ประกาศไว้ ตู้เพลงจะตัดเสียง หยุดโน้ตเพลง และปิดสัญญาณ redstone ที่มันส่งออกขณะเล่นเพลง — ความแรงเต็ม ไปยังบล็อกรอบ ๆ เป็นระยะเวลาเท่ากับที่มันคิดว่าเพลงยังเล่นอยู่พอดี
ดังนั้นความยาวที่ไม่แม่นยำไม่ใช่ข้อผิดพลาดด้านความสวยงาม ประกาศเพลง 200 วินาทีเป็น 100 แล้วเพลงจะถูกตัดกลางทาง พร้อมสัญญาณดับลงในจังหวะเดียวกัน ประกาศเป็น 300 แล้วตู้เพลงจะคงสัญญาณไว้ตลอด 100 วินาทีของความเงียบ ไม่ทางใดก็ทาง redstone ที่รอให้แผ่นเพลงจบจะทำงานผิดจังหวะ เครื่องมือนี้อ่านความยาวจริงจากไฟล์แทนที่จะให้คุณพิมพ์เอง ก็ด้วยเหตุผลนี้แหละ
ตัว comparator อ่านค่าอย่างอื่น: comparator_output ตัวเลขคงที่หนึ่งค่าตั้งแต่ 0 ถึง 15 ที่คงอยู่ตลอดเวลาที่แผ่นเพลงอยู่ในตู้เพลง ไม่ว่าจะเล่นอยู่หรือจบแล้ว มันไม่เพิ่มขึ้นตามเพลง และความยาวก็ไม่เปลี่ยนมัน — vanilla ใช้มันแยกแยะแผ่นเพลง (13 ให้ 1, cat ให้ 2, blocks ให้ 3)
แทร็กยังเขียนด้วย "stream": true ใน sounds.json เพลงนั้นยาว และการโหลดแทร็กเต็มเข้าหน่วยความจำก่อนเล่นจะกระตุก — streaming คือค่าเริ่มต้นที่ถูกต้องสำหรับอะไรก็ตามที่มีความยาวระดับแผ่นเพลง และเป็นค่าที่ผิดสำหรับเสียงเอฟเฟกต์สั้น ๆ