Common Trait แบบแผน (**)

คืออะไร

แบบแผนนี้มีวัตถุประสงค์เพื่อนำระบบ Ore Dictionary จาก Forge ไปยังไอเทมกำหนดเองของดาต้าแพ็ค ทำได้โดยใช้คุณสมบัติ NBT ที่กำหนดเองของไอเทม เราสามารถใส่ NBT ภายในไอเทมใดก็ได้ที่เราสามารถใช้คำสั่งอื่นๆเพื่อเช็คหรือดูข้อมูลภายในของมันได้

โดยสิ่งนี้เราสามารถสร้างระบบการค้นหาแบบรวมที่ดาต้าแพ็คทุกอันสามารถใช้เพื่อหาไอเทมเฉพาะที่ต้องการ ซึ่งคุณสามารถใช้ syntax ที่ใส่ไว้ใน Common Trait Convention เพื่อสร้างฟังก์ชั่นเพื่อหาไอเทมที่คุณต้องการได้

การใช้งาน

มันยากที่จะจินตนาการว่าแบบแผนนี้จะใช้ประโยชน์ในโลกจริงได้อย่างไร เราจึงรวบรวมการใช้งานที่มีประโยชน์ ซึ่งจะไม่สามารถทำได้หากไม่ทำตามแบบแผนที่ว่าเหล่านี้

  1. สมมติว่าเราเพิ่ม custom furnace โดยคุณอยากจะหลอมแร่ทองแดงให้เป็นทองแดงแท่ง ด้วยแบบแผนนี้ คุณสามารถตรวจสอบแร่ทองแดง ใดๆก็ได้ ก็ได้จากดาต้าแพ็คอื่นๆเพื่อหลอมมัน (สรุปก็คือ หากดาต้าแพ็คของคุณมีเตาเผาที่สร้างขึ้นมาเองหรือกำหนดเอง เมื่อทำตามแบบแผนนี้มันจะทำให้เตาเผาของคุณหลอมแร่ทองแดงจากทั่วทุกสารทิศที่เพิ่มเข้ามาจากดาต้าแพ็คของคนอื่นหรืออาจจะรวมไปถึงแร่ของม็อดด้วย)
  2. สมมติว่าดาต้าแพ็คของคุณเพิ่ม fridge ตู้เย็น ที่รับเฉพาะไอเทมอาหารด้วยแบบแผนนี้คุณสามารถตรวจหาไอเทมอาหาร ใดๆก็ได้ แม้แต่ไอเทมอาหารที่ถูกสร้างขึ้นมาเองจากดาต้าแพ็คอื่นๆได้
  3. สมมติว่าดาต้าแพ็คของคุณได้เพิ่ม custom anvil ที่ทำให้คุณซ่อมของได้โดยตรงจากไอเทมที่ทดแทนกันได้แทนที่จะเป็นแร่เหล็ก เพชร ทอง เป็นต้น ด้วยแบบแผนนี้ คุณสามารถตรวจจับไอเทมวัสดุทดแทน ใดๆก็ได้ จากดาต้าแพ็คอื่นๆแม้วัสดุของไอเทมจะไม่ตรงกัน (สรุปก็คือ ถ้าคุณจะซ่อมดาบเหล็กสักเล่ม คุณต้องใช้แร่เหล็ก แต่เมื่อมีแบบแผนนี้ custom anvil ของคุณก็สามารถใช้แร่ที่ทดแทนเหล็กได้ อลูมิเนียม ไทเทเนี่ยม และอื่นๆถ้าในเกมมี)

Traits

Traits คือ อัตลักษณ์และคุณสมบัติที่ไอเทมสามารถมีได้ โดยการระบุคุณสมบัติพวกนี้ลงใน NBT ของไอเทม ดาต้าแพ็คอื่นๆจะสามารถอ้างอิงไอเทมนั้นๆผ่าน Traits แทนการใช้ ID ได้โดยตรง

Trait เป็น อาร์เรย์ของสตริงและมี trait แบบนี้ใน nbt (notice traits: [...]?)

/give @s diamond{ctc: {traits: {"some": 1b, "trait": 1b, "here": 1b}, id: "example", from: "convention:wiki"}}

Syntax

Syntax ของ Common Trait Convention จะเก็บอยู่ข้างใน ctc ของ nbt ไอเทม ภายในctc จะบรรจุข้อมูล: id, from และ traits nbts.ไว้

  • id: ไอดีจะอยู่ภายในของไอเทมของคุณซึ่งมันไม่ควรใช้ภายนอกดาต้าแพ็คของคุณ และต้องไม่ซ้ำกันถายในดาต้าแพ็คที่คุณเขียน
  • from: เป็นชื่อของคุณหรือ namespace ที่ระบุว่าไอเทมนั้นมาจากดาต้าแพ็คอะไร
  • traits: เป็นอาร์เรย์ของ traits ที่คุณสามารถใช้เพื่ออ้างอิงไอเทมจากดาต้าแพ็คภายนอกได้

เราจะสมมติว่า syntax ดังต่อไปนี้เป็นโครงสร้าง NBT ของ คำสั่ง /give

{
    ctc: {
        id: "my_copper_ore",
        from: "convention:wiki",
        traits: {"metal/copper": 1b, "block": 1b, "ore": 1b}
    }
}

เกมไม่มีการ เซ็ต ประเภทข้อมูล ดังนั้นเราเลยใช้การผสมแท็กแบบซ้ำ ซึ่งหมายความว่าทุก trait ต้องมีค่า 1b หรือ true เพื่อให้สอดคล้องกัน.

ลองดูที่ traits nbt

  • metal/copper, trait traits นี้บอกเราว่าไอเทมนี้เป็นทองแดง
  • block, trait นี้บอกเราว่าไอเทมนี้เป็นบล็อกที่สามารถวางได้
  • ore, trait นี้บอกเราว่าไอเทมนี้เป็นแร่

เครื่องหมายสแลช

ในตัวอย่างจะเห็นว่ามีการใช้ / ใน metal/copper, ซึ่งจะใช้ก็ต่อเมื่อ trait (ลักษณะ)ของวัตถุไม่สามารถระบุได้เพียง 1 อย่าง เช่น ลักษณะพิเศษของ orange (ส้ม) หมายถึงอะไรได้บ้างมันเป็น สี ส้มหรือ ส้ม ที่เป็นผลไม้

ซึ่งเราจะใช้ เครื่องหมายสแลช เพื่อแยกประเภทเหล่านี้ให้ออก color/orange และ fruit/orange

การนำไปใช้

ในการตรวจจับหรือเช็คคุณสมบัติบางอย่างคุณเพียงแค่ตรวจสอบ traits nbt ของไอเทม

ตรวจจับว่าผู้เล่นถืออาวุธหรือไม่

execute as @a if entity @s SelectedItem.tag.ctc.traits."tool/weapon" run ...

คำสั่งนี้เช็คผู้เล่นว่ามีการถือไอเทมที่มีข้อมูล trait `tool/weapon`

---

ตรวจจับว่าภายในบล็อคเก็บของมีแร่ทองแดง

execute if block ~ ~ ~ Items[].tag.ctc.traits{"metal/copper": 1b, "ore": 1b} run ...

คำสั่งนี้เช็คกล่องบางอย่างว่าเก็บไอเทมที่มีข้อมูล traits `metal/copper` and `ore` อยู่ภายใน

---

ตรวจจับว่าภายในบล็อคเก็บของมีไอเทมที่วางได้

execute if block ~ ~ ~ Items[].tag.ctc.traits."block" run ...

คำสั่งนี้เช็คไอเทมบางอย่างว่ามีการเก็บข้อมูล traits block ซึ่งแสดงว่าบล็อคดังกล่าวนั้นวางได้


แม้ว่าเครื่องหมาย "" รอบๆ trait นั้นไม่จำเป็นในบางกรณี, แต่ฉันใส่มันไว้เพื่อความสอดคล้องที่ครอบคลุม.

trait พื้นฐาน

นี่คือ trait ของไอเทมที่คุณสามารถใช้ได้ แต่มันไม่ได้หมายความว่าคุณไม่สามารถสร้าง trait หรืออัตลักษณ์ใหม่สำหรับการใช้งานของคุณเอง แต่ถ้าคุณสมบัติของไอเทมที่เราระบุในตารางเหล่านี้เหมาะสมกับความต้องการของคุณ คุณก็ใช้มันแทนได้เลย

ลิสต์ถูกแบ่งออกเป็นหลายกลุ่มและคุณ ไม่ควร ใช้ traits จากกลุ่มเดียวกันสองครั้ง

กลุ่มของประเภทวัตถุ

trait แสดงเกี่ยวกับไอเทมที่ถืออยู่

Traitคำอธิบาย
gasสารที่เป็นก๊าช
liquidของเหลว
blockไอเทมที่วางได้
itemไอเทมปกติในไมน์คราฟต์

กลุ่มของประเภทพิเศษ

นี่คือ traits ทั่วไปของไมน์คราฟต์ม็อด ซึ่งจะช่วยให้ดาต้าแพ็คของคุณรวบรวมไอเทมที่ใช้กับดาต้าแพ็คของคุณทั้งหมดได้ด้วยแบบแผนนี้

กลุ่มนี้เป็นข้อยกเว้นของกฎข้างต้นคุณสามารถใช้ traits หลายอย่างจากกลุ่มนี้ได้มากเท่าที่คุณต้องการ

Traitคำอธิบาย
oreบล็อกแร่ที่สามารถหาเจอได้จากถ้ำ
seedไอเทมที่ใช้ปลูกโตเป็นฟืชได้
flowerไอเทมดอกไม้
grassบล็อกที่สามารถแพร่กระจายจากบล็อกนึงไปยังอีกบล็อกนึงได้
saplingบล็อกที่โตเป็นต้นไม้ได้
vegetableไอเทมอาหารจาก seed
logไอเทมที่ดรอปจากต้นไม้
planksไอเทมที่ได้จากการแปรรูปไม้ log

กลุ่มบีบอัด

traits นี้แสดงถึงไอเทมที่สามารถคราฟรวมกันให้บีบอัดอยู่ใน 1 ไอเทมได้ และ คราฟกลับออกมาแยกส่วนได้

ตัวอย่างเช่น:

  • redstone dust -> redstone block
  • ice -> packed ice
  • iron block -> iron ingot
Traitคำอธิบาย
packedรูปแบบอัดแน่นที่สุดของไอเทม, ซึ่งปกติจะอยู่ในรูปของบล็อก
ingotรูปแบบปกติของไอเทม, ซึ่งปกติจะอยู่ในรูปของแท่งแร่
nuggetรูปแบบไอเทมที่เล็กสุด, ซึ่งปกติจะอยู่ในรูปของนักเก็ต

กลุ่มที่กินได้

traits นี้แสดงถึงไอเทมที่ผู้เล่นสามารถกินได้ (รวมไปถึงเครื่องดื่ม)

Traitคำอธิบาย
foodไอเทมที่กินได้ทุกประเภท

กลุ่มชุดเกราะ

traits นี้แสดงถึงไอเทมที่ผู้เล่นหรือเอ็นทิตี้อื่นๆสามารถสวมใส่ได้

Traitคำอธิบาย
armorไอเทมที่สวมใส่ได้ทุกประเภท

กลุ่มแยกย่อยของเครื่องมือ

นี้ trait ใช้ เครื่องหมายสแลช!

traits นี้แสดงถึงไอเทม ที่สามารถใช้กับโลกได้

Traitคำอธิบาย
tool/miningไอเทมนี้สามารถใช้ขุดบล็อกหรือบล็อกอื่นๆที่เกี่ยวข้อง
tool/choppingไอเทมนี้สามารถใช้ตัดไม้และวัสดุไม้
tool/tillingไอเทมนี้สามารถใช้ไถพรวนดิน
tool/wateringไอเทมนี้สามารถใช้รดน้ำได้
tool/weaponไอเทมนี้สามารถใช้สู้กับมอนสเตอร์แลพผู้เล่นอื่น

กลุ่มย่อยของมณี

นี้ trait ใช้ เครื่องหมายสแลช!

traits นี้แสดงถึงไอเทมที่มีโครงสร้างเป็นผลึก

Traitคำอธิบาย
gem/diamondอัญมณี เพชร
gem/rubyอัญมณี ทับทิม
gem/emeraldอัญมณี มรกต
gem/sapphireอัญมณี แซฟไฟร์ (ไพลิน)
gem/prismarineพริสมารีน
gem/lapisอัญมณี ลาพิส ลาซูลี
gem/obsidianวัสดุ ออปซิเดี้ยน ใดๆ
gem/quartzวัสดุ ควอตซ์ ใดๆ
gem/opalอัญมณี โอปอล

กลุ่มย่อยของโลหะ

นี้ trait ใช้ เครื่องหมายสแลช!

traits นี้แสดงถึงไอเทม ที่มักถูกเพิ่มโดยม็อด

Traitคำอธิบาย
metal/ironไอเทมที่ทำจากเหล็ก
metal/goldไอเทมที่ทำจากทอง
metal/copperไอเทมที่ทำจากทองแดง
metal/aluminiumไอเทมที่ทำจากอลูมิเนียม
metal/tinไอเทมที่ทำจากดีบุก
metal/silverไอเทมที่ทำจากเงิน
metal/leadไอเทมที่ทำจากตะกัว
metal/nickleไอเทมที่ทำจากนิคเกิล
metal/platinumไอเทมที่ทำจากทองคำขาว

อ้างอิง