模组:制作指南/APIs/Manifest
阅读
2024-10-15更新
最新编辑:sizau
阅读:
更新日期:2024-10-15
最新编辑:sizau
← 模组:目录
每个模组都有且仅有一个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"
|
EntryDll 或 ContentPackFor (二者选一) | 前者用于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不会识别这些属性。