模组:制作指南/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不会识别这些属性。