“模组:制作指南/APIs/Manifest”的版本间的差异
跳到导航
跳到搜索
(开荒。) |
|||
(未显示2个用户的3个中间版本) | |||
第1行: | 第1行: | ||
{{../../header}} | {{../../header}} | ||
− | 每个模组都有且仅有一个< | + | 每个模组都有且仅有一个<samp>manifest.json</samp>。Manifest一词,作名词时译为“清单,载货单,旅客名单”,在此语境中,可以理解成“对模组的描述”。 |
− | 你模组的'''基本信息'''都写在< | + | 你模组的'''基本信息'''都写在<samp>manifest.json</samp>里,SMAPI靠它来'''识别、加载模组,检测是否需要更新,等等'''。 |
==一个简单的示例== | ==一个简单的示例== | ||
− | {| class="wikitable" | + | {|class="wikitable" |
|- | |- | ||
! SMAPI模组 | ! SMAPI模组 | ||
第41行: | 第41行: | ||
下列属性'''所有模组必须写明''': | 下列属性'''所有模组必须写明''': | ||
− | {| class="wikitable" | + | {|class="wikitable" |
|- | |- | ||
! 属性 | ! 属性 | ||
! 介绍 | ! 介绍 | ||
|- | |- | ||
− | | < | + | | <samp>Name</samp> |
| 模组名称。例如:<syntaxhighlight lang="javascript">"Name": "Lookup Anything"</syntaxhighlight> | | 模组名称。例如:<syntaxhighlight lang="javascript">"Name": "Lookup Anything"</syntaxhighlight> | ||
|- | |- | ||
− | | < | + | | <samp>Author</samp> |
| 作者。 | | 作者。 | ||
|- | |- | ||
− | | < | + | | <samp>Version</samp> |
| 模组的[https://semver.org/lang/zh-CN/ 版本(号)]。用于检测模组是否需要更新,以及兼容性。每次更新别忘记更新版本号!示例: | | 模组的[https://semver.org/lang/zh-CN/ 版本(号)]。用于检测模组是否需要更新,以及兼容性。每次更新别忘记更新版本号!示例: | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
第61行: | 第61行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|- | |- | ||
− | | < | + | | <samp>Description</samp> |
| 模组功能的简单描述。例如:<syntaxhighlight lang="javascript">"Description": "View metadata about anything by pressing a button."</syntaxhighlight> | | 模组功能的简单描述。例如:<syntaxhighlight lang="javascript">"Description": "View metadata about anything by pressing a button."</syntaxhighlight> | ||
|- | |- | ||
− | | < | + | | <samp>UniqueID</samp> |
− | | 模组的唯一识别码。建议格式为< | + | | 模组的唯一识别码。建议格式为<samp><作者名字>.<模组名称></samp>,不能有空格或特殊字符。这是你模组和外界交流的名片。例如:<syntaxhighlight lang="javascript">"UniqueID": "Pathoschild.LookupAnything"</syntaxhighlight> |
|- | |- | ||
− | | < | + | | <samp>EntryDll</samp> 或 <samp>ContentPackFor</samp> (二者选一) |
| <p>前者用于SMAPI模组,后者用于内容包。</p> | | <p>前者用于SMAPI模组,后者用于内容包。</p> | ||
− | 对于SMAPI模组,< | + | 对于SMAPI模组,<samp>EntryDll</samp>是.dll文件名。例如:<syntaxhighlight lang="javascript">"EntryDll": "LookupAnything.dll"</syntaxhighlight> |
− | 对于SMAPI模组,< | + | 对于SMAPI模组,<samp>ContentPackFor</samp>指定了该内容包的宿主模组。下面的<samp>MinimumVersion</samp>是可选属性,本章后面会讲到。例如: |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
"ContentPackFor": { | "ContentPackFor": { | ||
第96行: | 第96行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | 前置的要求也可以很宽松:可以不是必备的。有安装就用,没安装就不用。< | + | 前置的要求也可以很宽松:可以不是必备的。有安装就用,没安装就不用。<samp>IsRequired</samp>属性为<samp>false</samp>时,表示该前置可有可无。 |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
"Dependencies": [ | "Dependencies": [ | ||
第107行: | 第107行: | ||
===UpdateKeys 属性=== | ===UpdateKeys 属性=== | ||
− | SMAPI根据< | + | SMAPI根据<samp>UpdateKeys</samp>来检测更新。详见[[../Update checks|''update checks'']]。 |
===其他属性=== | ===其他属性=== | ||
− | 其他属性是指模组作者可以自行添加的属性。它们都储存在< | + | 其他属性是指模组作者可以自行添加的属性。它们都储存在<samp>IManifest.ExtraFields</samp>中,这是一个以<string>为键,以<object>为值的[https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.idictionary-2?view=net-5.0 字典集合]。SMAPI不会识别这些属性。 |
[[en:Modding:Modder Guide/APIs/Manifest]] | [[en:Modding:Modder Guide/APIs/Manifest]] | ||
+ | [[es:Modding:Guía del Modder/APIs/Manifest]] | ||
+ | [[tr:Modlama:Mod Rehberi/API'ler/Manifest]] |
2024年9月21日 (六) 12:31的最新版本
← 模组:目录
每个模组都有且仅有一个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不会识别这些属性。