อ้างอิง manifest.json ภาษาไทย

อธิบายทุก field ใน manifest.json ของมอด Stardew Valley ตามรูปแบบของ SMAPI ทั้ง field ที่จำเป็น กฎของ UniqueID, EntryDll, ContentPackFor, Dependencies และ UpdateKeys

อัปเดต

สถานะการตรวจสอบ: ตรวจกับเอกสารทางการแล้ว

เนื้อหาตรวจสอบกับเอกสารทางการแล้ว แต่ยังไม่ได้ทดสอบในเกมจริงทุกขั้นตอน (ตรวจล่าสุด )

ตรวจกับ: ManifestValidator.cs ของ SMAPI (สาขา develop), เอกสาร Manifest บน Stardew Valley Wiki

manifest.json คือไฟล์ที่ SMAPI อ่านเป็นอย่างแรกของทุกมอด ถ้าไฟล์นี้ผิด มอดจะไม่ถูกโหลดเลย หน้านี้รวมทุก field พร้อมกฎที่ SMAPI ใช้ตรวจจริง ตรวจไฟล์ของคุณได้ทันทีด้วย Manifest Validator

ตัวอย่างเต็ม

มอด C# (SMAPI mod)

{
  "Name": "My First Mod",
  "Author": "YourName",
  "Version": "1.0.0",
  "Description": "My first SMAPI mod.",
  "UniqueID": "YourName.MyFirstMod",
  "EntryDll": "MyFirstMod.dll",
  "MinimumApiVersion": "4.0.0",
  "Dependencies": [
    { "UniqueID": "spacechase0.SpaceCore", "MinimumVersion": "1.20.0", "IsRequired": false }
  ],
  "UpdateKeys": ["Nexus:12345"]
}

Content pack (Content Patcher)

{
  "Name": "My First Content Pack",
  "Author": "YourName",
  "Version": "1.0.0",
  "Description": "My first Content Patcher content pack.",
  "UniqueID": "YourName.MyFirstContentPack",
  "UpdateKeys": [],
  "ContentPackFor": {
    "UniqueID": "Pathoschild.ContentPatcher"
  }
}

Field ทั้งหมด

Field จำเป็น ชนิด ความหมาย
Name ใช่ ข้อความ ชื่อมอดที่ผู้เล่นเห็น ใช้ภาษาไทยได้
Version ใช่ ข้อความ เวอร์ชันแบบ semantic version ห้ามเป็น 0.0.0
UniqueID ใช่ ข้อความ รหัสไม่ซ้ำของมอด
Author ไม่ ข้อความ ชื่อผู้สร้าง
Description ไม่ ข้อความ คำอธิบายสั้นของมอด
EntryDll อย่างใดอย่างหนึ่ง ข้อความ ชื่อไฟล์ .dll ของมอด C#
ContentPackFor อย่างใดอย่างหนึ่ง object มอดที่จะอ่าน content pack นี้
MinimumApiVersion ไม่ ข้อความ SMAPI เวอร์ชันต่ำสุดที่มอดต้องการ
MinimumGameVersion ไม่ ข้อความ เวอร์ชันเกมต่ำสุดที่มอดต้องการ
Dependencies ไม่ array มอดอื่นที่มอดนี้ต้องใช้
UpdateKeys ไม่ array ใช้ให้ SMAPI ตรวจหาเวอร์ชันใหม่

กฎที่ SMAPI ตรวจ

กฎเหล่านี้ทำให้มอด ไม่ถูกโหลด ถ้าผิด

  1. ต้องมี Name, Version และ UniqueID ถ้า Version เป็น 0.0.0 จะนับว่าไม่มี
  2. ต้องมี EntryDll หรือ ContentPackFor อย่างใดอย่างหนึ่งเท่านั้น
  3. EntryDll ต้องเป็นชื่อไฟล์ ไม่ใช่ path (ใส่ / หรือ \ ไม่ได้)
  4. ถ้ามี ContentPackFor ต้องมี UniqueID อยู่ข้างใน
  5. UniqueID ใช้ได้เฉพาะตัวอักษรภาษาอังกฤษ ตัวเลข _ . และ -
  6. ทุกรายการใน Dependencies ต้องมี UniqueID ที่ถูกต้องตามกฎข้อ 5
flowchart TD
  Q{"มอดมีโค้ด C# ไหม?"}
  Q -- มี --> D["ใส่ EntryDll: ชื่อไฟล์ .dll"]
  Q -- ไม่มี --> C["ใส่ ContentPackFor: UniqueID ของ framework"]
  D --> X["ห้ามใส่ ContentPackFor"]
  C --> Y["ห้ามใส่ EntryDll"]

Dependencies

"Dependencies": [
  { "UniqueID": "Pathoschild.ContentPatcher" },
  { "UniqueID": "spacechase0.SpaceCore", "MinimumVersion": "1.20.0" },
  { "UniqueID": "Example.OptionalMod", "IsRequired": false }
]
Field ความหมาย
UniqueID UniqueID ของมอดที่ต้องใช้ (จำเป็น)
MinimumVersion เวอร์ชันต่ำสุดที่ยอมรับ ไม่ใส่ก็ได้
IsRequired true (ค่าเริ่มต้น) คือขาดไม่ได้ false คือใช้ถ้ามี

ถ้า dependency ที่จำเป็นไม่ได้ติดตั้ง SMAPI จะข้ามมอดพร้อมข้อความ it requires mods which aren't installed ดูความหมายข้อความอื่นที่ ข้อความ error ของ SMAPI

UpdateKeys

รูปแบบคือ เว็บไซต์:ID เว็บไซต์ที่ SMAPI รองรับได้แก่ Nexus, GitHub, ModDrop, CurseForge และ Chucklefish

"UpdateKeys": ["Nexus:12345", "GitHub:YourName/YourRepo"]

ใส่ได้หลังอัปโหลดมอดแล้วเท่านั้น ระหว่างพัฒนาให้เว้นเป็น array ว่าง []

เรื่องรูปแบบ JSON ที่ควรรู้

SMAPI อ่าน JSON ด้วย Json.NET ซึ่งยืดหยุ่นกว่า JSON มาตรฐาน

  • เขียนคอมเมนต์ // และ /* */ ได้
  • มีเครื่องหมายจุลภาคเกินท้ายรายการได้
  • ชื่อ field ไม่สนตัวพิมพ์เล็กใหญ่ (uniqueid ก็อ่านได้) แต่ควรเขียนตามรูปแบบมาตรฐานเพื่อให้อ่านง่าย
  • field ที่ SMAPI ไม่รู้จักจะถูกเก็บไว้เฉย ไม่ทำให้เกิด error จึงต้องระวังการสะกดผิด เพราะ SMAPI จะไม่เตือน

ข้อผิดพลาดที่พบบ่อย

สิ่งที่เขียน ปัญหา ที่ถูก
"UniqueID": "my mod" มีช่องว่าง "UniqueID": "YourName.MyMod"
"Version": "v1.0" มีตัว v นำหน้า "Version": "1.0.0"
"EntryDll": "bin/MyMod.dll" เป็น path "EntryDll": "MyMod.dll"
มีทั้ง EntryDll และ ContentPackFor ใช้พร้อมกันไม่ได้ เลือกอย่างใดอย่างหนึ่ง
"IsRequired": "false" เป็นข้อความ "IsRequired": false

เอกสารอ้างอิงทางการ

ค้นหาใน SVMT

กรองตามประเภท

พิมพ์คำที่ต้องการค้นหา (ภาษาไทยหรืออังกฤษ)