“模组:制作指南/APIs/Manifest”的版本间的差异

来自Stardew Valley Wiki
跳到导航 跳到搜索
(文本替换 - 替换“{| class”为“{|class”)
(文本替换 - 替换“tt>”为“samp>”)
 
第1行: 第1行:
 
{{../../header}}
 
{{../../header}}
  
 每个模组都有且仅有一个<tt>manifest.json</tt>。Manifest一词,作名词时译为“清单,载货单,旅客名单”,在此语境中,可以理解成“对模组的描述”。
+
 每个模组都有且仅有一个<samp>manifest.json</samp>。Manifest一词,作名词时译为“清单,载货单,旅客名单”,在此语境中,可以理解成“对模组的描述”。
 你模组的'''基本信息'''都写在<tt>manifest.json</tt>里,SMAPI靠它来'''识别、加载模组,检测是否需要更新,等等'''。
+
 你模组的'''基本信息'''都写在<samp>manifest.json</samp>里,SMAPI靠它来'''识别、加载模组,检测是否需要更新,等等'''。
  
 
==一个简单的示例==
 
==一个简单的示例==
第46行: 第46行:
 
! 介绍
 
! 介绍
 
|-
 
|-
| <tt>Name</tt>
+
| <samp>Name</samp>
 
| 模组名称。例如:<syntaxhighlight lang="javascript">"Name": "Lookup Anything"</syntaxhighlight>
 
| 模组名称。例如:<syntaxhighlight lang="javascript">"Name": "Lookup Anything"</syntaxhighlight>
 
|-
 
|-
| <tt>Author</tt>
+
| <samp>Author</samp>
 
| 作者。
 
| 作者。
 
|-
 
|-
| <tt>Version</tt>
+
| <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>
 
|-
 
|-
| <tt>Description</tt>
+
| <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>
 
|-
 
|-
| <tt>UniqueID</tt>
+
| <samp>UniqueID</samp>
| 模组的唯一识别码。建议格式为<tt>&lt;作者名字&gt;.&lt;模组名称&gt;</tt>,不能有空格或特殊字符。这是你模组和外界交流的名片。例如:<syntaxhighlight lang="javascript">"UniqueID": "Pathoschild.LookupAnything"</syntaxhighlight>
+
| 模组的唯一识别码。建议格式为<samp>&lt;作者名字&gt;.&lt;模组名称&gt;</samp>,不能有空格或特殊字符。这是你模组和外界交流的名片。例如:<syntaxhighlight lang="javascript">"UniqueID": "Pathoschild.LookupAnything"</syntaxhighlight>
 
|-
 
|-
| <tt>EntryDll</tt> 或 <tt>ContentPackFor</tt> (二者选一)
+
| <samp>EntryDll</samp> 或 <samp>ContentPackFor</samp> (二者选一)
 
| <p>前者用于SMAPI模组,后者用于内容包。</p>
 
| <p>前者用于SMAPI模组,后者用于内容包。</p>
  
 对于SMAPI模组,<tt>EntryDll</tt>是.dll文件名。例如:<syntaxhighlight lang="javascript">"EntryDll": "LookupAnything.dll"</syntaxhighlight>
+
 对于SMAPI模组,<samp>EntryDll</samp>是.dll文件名。例如:<syntaxhighlight lang="javascript">"EntryDll": "LookupAnything.dll"</syntaxhighlight>
  
 对于SMAPI模组,<tt>ContentPackFor</tt>指定了该内容包的宿主模组。下面的<tt>MinimumVersion</tt>是可选属性,本章后面会讲到。例如:
+
 对于SMAPI模组,<samp>ContentPackFor</samp>指定了该内容包的宿主模组。下面的<samp>MinimumVersion</samp>是可选属性,本章后面会讲到。例如:
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
"ContentPackFor": {
 
"ContentPackFor": {
第96行: 第96行:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 前置的要求也可以很宽松:可以不是必备的。有安装就用,没安装就不用。<tt>IsRequired</tt>属性为<tt>false</tt>时,表示该前置可有可无。
+
 前置的要求也可以很宽松:可以不是必备的。有安装就用,没安装就不用。<samp>IsRequired</samp>属性为<samp>false</samp>时,表示该前置可有可无。
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
"Dependencies": [
 
"Dependencies": [
第107行: 第107行:
  
 
===UpdateKeys 属性===
 
===UpdateKeys 属性===
SMAPI根据<tt>UpdateKeys</tt>来检测更新。详见[[../Update checks|''update checks'']]。
+
SMAPI根据<samp>UpdateKeys</samp>来检测更新。详见[[../Update checks|''update checks'']]。
  
 
===其他属性===
 
===其他属性===
 其他属性是指模组作者可以自行添加的属性。它们都储存在<tt>IManifest.ExtraFields</tt>中,这是一个以<string>为键,以<object>为值的[https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.idictionary-2?view=net-5.0 字典集合]。SMAPI不会识别这些属性。
+
 其他属性是指模组作者可以自行添加的属性。它们都储存在<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]]

2021年11月4日 (四) 18:44的最新版本

制作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不会识别这些属性。