模组:製作指南/APIs/Manifest

出自Stardew Valley Wiki
跳至導覽 跳至搜尋

製作SMAPI模組 SMAPI mascot.png


模組:目錄

每個模組都有且僅有一個manifest.json。Manifest一詞,作名詞時譯為「清單,載貨單,旅客名單」,在此語境中,可以理解成「對模組的描述」。 你模組的基本信息都寫在manifest.json里,SMAPI靠它來識別、加載模組,檢測是否需要更新,等等

一個簡單的示例

SMAPI模組 內容包 (Content Pack)
{
  "Name": "Your Project Name",
  "Author": "your name",
  "Version": "1.0.0",
  "Description": "One or two sentences about the mod.",
  "UniqueID": "YourName.YourProjectName",
  "EntryDll": "YourDllFileName.dll",
  "UpdateKeys": []
}
{
  "Name": "Your Project Name",
  "Author": "your name",
  "Version": "1.0.0",
  "Description": "One or two sentences about the mod.",
  "UniqueID": "YourName.YourProjectName",
  "UpdateKeys": [],
  "ContentPackFor": {
    "UniqueID": "Pathoschild.ContentPatcher"
  }
}

屬性

必備屬性

下列屬性所有模組必須寫明

屬性 介紹
Name 模組名稱。例如:
"Name": "Lookup Anything"
Author 作者。
Version 模組的版本(號)。用於檢測模組是否需要更新,以及兼容性。每次更新別忘記更新版本號!示例:
"Version": "1.0.0"
"Version": "1.0.1-beta.2"
Description 模組功能的簡單描述。例如:
"Description": "View metadata about anything by pressing a button."
UniqueID 模組的唯一識別碼。建議格式為<作者名字>.<模組名稱>,不能有空格或特殊字符。這是你模組和外界交流的名片。例如:
"UniqueID": "Pathoschild.LookupAnything"
EntryDllContentPackFor (二者選一)

前者用於SMAPI模組,後者用於內容包。

對於SMAPI模組,EntryDll是.dll文件名。例如:
"EntryDll": "LookupAnything.dll"

對於SMAPI模組,ContentPackFor指定了該內容包的宿主模組。下面的MinimumVersion是可選屬性,本章後面會講到。例如:

"ContentPackFor": {
   "UniqueID": "Pathoschild.ContentPatcher",
   "MinimumVersion": "1.0.0"
}

Minimum SMAPI version 屬性

顧名思義,該屬性將指定需要的最早的SMAPI版本號。只有SMAPI版本大於或等於這個版本號,你的模組才會加載進去,否則會提示更新SMAPI。這裏有一個潛台詞是,這個版本號不僅指定SMAPI,還限定了原遊戲的最小版本。這是由於不同版本SMAPI有相對應的遊戲版本。

"MinimumApiVersion": "3.8.0"

Dependencies 屬性

Dependencies屬性定義了:你的模組「依賴」的其他模組。所謂的前置,指的就是這個。如果忘了安裝前置,會報錯,SMAPI控制台跳紅字,提醒你安裝必備的前置,同時你的模組不會加載。

"Dependencies": [
   {
      "UniqueID": "SMAPI.ConsoleCommands",
      "MinimumVersion": "3.8.0" // 选填。表示该前置允许的最小版本号。
   }
]

前置的要求也可以很寬鬆:可以不是必備的。有安裝就用,沒安裝就不用。IsRequired屬性為false時,表示該前置可有可無。

"Dependencies": [
   {
      "UniqueID": "SMAPI.ConsoleCommands",
      "IsRequired": false
   }
]

UpdateKeys 屬性

SMAPI根據UpdateKeys來檢測更新。詳見update checks

其他屬性

其他屬性是指模組作者可以自行添加的屬性。它們都儲存在IManifest.ExtraFields中,這是一個以<string>為鍵,以<object>為值的字典集合。SMAPI不會識別這些屬性。