Difference between revisions of "Module:SMAPI compatibility/doc"

From Stardew Valley Wiki
Jump to navigation Jump to search
m (Text replacement - "tt>" to "samp>")
(update for disabled beta fields)
 
(8 intermediate revisions by 2 users not shown)
Line 5: Line 5:
 
<pre>
 
<pre>
 
{{#invoke:SMAPI compatibility|entry
 
{{#invoke:SMAPI compatibility|entry
   |name     = Lookup Anything
+
   |name   = Lookup Anything
   |author   = Pathoschild
+
   |author = Pathoschild
   |id       = Pathoschild.LookupAnything
+
   |id     = Pathoschild.LookupAnything
   |nexus id = 541
+
   |nexus   = 541
   |github   = Pathoschild/StardewMods
+
   |github = Pathoschild/StardewMods
 
}}
 
}}
 
</pre>
 
</pre>
Line 15: Line 15:
 
{{#invoke:SMAPI compatibility|header}}
 
{{#invoke:SMAPI compatibility|header}}
 
{{#invoke:SMAPI compatibility|entry
 
{{#invoke:SMAPI compatibility|entry
   |name     = Lookup Anything
+
   |name   = Lookup Anything
   |author   = Pathoschild
+
   |author = Pathoschild
   |id       = Pathoschild.LookupAnything
+
   |id     = Pathoschild.LookupAnything
   |nexus id = 541
+
   |nexus   = 541
   |github   = Pathoschild/StardewMods
+
   |github = Pathoschild/StardewMods
 
}}
 
}}
 
{{#invoke:SMAPI compatibility|footer}}
 
{{#invoke:SMAPI compatibility|footer}}
Line 26: Line 26:
 
<pre>
 
<pre>
 
{{#invoke:SMAPI compatibility|entry
 
{{#invoke:SMAPI compatibility|entry
   |name     = Lookup Anything
+
   |name   = Lookup Anything
   |author   = Pathoschild
+
   |author = Pathoschild
   |id       = Pathoschild.LookupAnything
+
   |id     = Pathoschild.LookupAnything
   |nexus id = 541
+
   |nexus   = 541
   |github   = Pathoschild/StardewMods
+
   |github = Pathoschild/StardewMods
 +
 
 
   |summary  =  
 
   |summary  =  
 
   |broke in = Stardew Valley 1.2
 
   |broke in = Stardew Valley 1.2
Line 37: Line 38:
 
{{#invoke:SMAPI compatibility|header}}
 
{{#invoke:SMAPI compatibility|header}}
 
{{#invoke:SMAPI compatibility|entry
 
{{#invoke:SMAPI compatibility|entry
   |name     = Lookup Anything
+
   |name   = Lookup Anything
   |author   = Pathoschild
+
   |author = Pathoschild
   |id       = Pathoschild.LookupAnything
+
   |id     = Pathoschild.LookupAnything
   |nexus id = 541
+
   |nexus   = 541
   |github   = Pathoschild/StardewMods
+
   |github = Pathoschild/StardewMods
 +
 
 
   |summary  =  
 
   |summary  =  
 
   |broke in = Stardew Valley 1.2
 
   |broke in = Stardew Valley 1.2
Line 52: Line 54:
 
   |unofficial url    = https://community.playstarbound.com/attachments/201345000
 
   |unofficial url    = https://community.playstarbound.com/attachments/201345000
 
   |unofficial version = 1.18.2-unofficial.1-example
 
   |unofficial version = 1.18.2-unofficial.1-example
  |pull request      = https://github.com/Pathoschild/Example/pull/1
 
 
</pre>
 
</pre>
 
{{#invoke:SMAPI compatibility|header}}
 
{{#invoke:SMAPI compatibility|header}}
 
{{#invoke:SMAPI compatibility|entry
 
{{#invoke:SMAPI compatibility|entry
   |name     = Lookup Anything
+
   |name   = Lookup Anything
   |author   = Pathoschild
+
   |author = Pathoschild
   |id       = Pathoschild.LookupAnything
+
   |id     = Pathoschild.LookupAnything
   |nexus id = 541
+
   |nexus   = 541
   |github   = Pathoschild/StardewMods
+
   |github = Pathoschild/StardewMods
 +
 
 
   |summary  =  
 
   |summary  =  
 
   |broke in = Stardew Valley 1.2
 
   |broke in = Stardew Valley 1.2
 
   |unofficial url    = https://community.playstarbound.com/attachments/201345000
 
   |unofficial url    = https://community.playstarbound.com/attachments/201345000
 
   |unofficial version = 1.18.2-unofficial.1-example
 
   |unofficial version = 1.18.2-unofficial.1-example
  |pull request      = https://github.com/Pathoschild/Example/pull/1
 
 
}}
 
}}
 
{{#invoke:SMAPI compatibility|footer}}
 
{{#invoke:SMAPI compatibility|footer}}
Line 88: Line 89:
 
| The latest unique mod ID, as listed in its <samp>manifest.json</samp> file. Delimit alternate/older IDs with commas (ideally in latest to oldest order). For very old mods with no ID, use <samp>none</samp> to disable validation checks.
 
| The latest unique mod ID, as listed in its <samp>manifest.json</samp> file. Delimit alternate/older IDs with commas (ideally in latest to oldest order). For very old mods with no ID, use <samp>none</samp> to disable validation checks.
 
|-
 
|-
| <code>nexus id</code>
+
| <code>nexus</code>
 
| The mod's unique ID on Nexus (if any). This is the number in the mod page's URL.
 
| The mod's unique ID on Nexus (if any). This is the number in the mod page's URL.
 
|-
 
|-
Line 116: Line 117:
 
| The unofficial update's version number, if any.
 
| The unofficial update's version number, if any.
 
|-
 
|-
| <code>pull request</code>
+
| <code>chucklefish</code>
| The URL of the pull request which submits changes for an unofficial update to the author, if any.
 
|-
 
| <code>cf id</code>
 
 
| The mod's ID in the [https://community.playstarbound.com/resources/categories/stardew-valley.22/ Chucklefish mod repository].
 
| The mod's ID in the [https://community.playstarbound.com/resources/categories/stardew-valley.22/ Chucklefish mod repository].
 
|-
 
|-
| <code>curseforge id</code>
+
| <code>curse</code>
| The mod's project ID in the [https://www.curseforge.com/stardewvalley CurseForge mod repository]. This is the value shown on the mod page next to "Project ID".
+
| The mod's project ID and key in the [https://www.curseforge.com/stardewvalley CurseForge mod repository]. The ID is shown on the mod page next to "Project ID", and the key is shown in the mod page's URL. This must be in the form <code>id,key</code>.
 
|-
 
|-
| <code>curseforge key</code>
+
| <code>moddrop</code>
| The mod's key in the [https://www.curseforge.com/stardewvalley CurseForge mod repository]. This is the mod key shown in the mod page's URL.
 
|-
 
| <code>moddrop id</code>
 
 
| The mod's ID in the [https://www.moddrop.com/stardew-valley/ ModDrop mod repository].
 
| The mod's ID in the [https://www.moddrop.com/stardew-valley/ ModDrop mod repository].
 
|-
 
|-
Line 136: Line 131:
 
| <code>source</code>
 
| <code>source</code>
 
| An arbitrary source code URL, if not on GitHub. Avoid if possible, since this makes crossreferencing more difficult.
 
| An arbitrary source code URL, if not on GitHub. Avoid if possible, since this makes crossreferencing more difficult.
|-
 
| <code>links</code>
 
| A comma-delimited list of URLs to add as superscript links. Mainly useful for linking to pull requests.
 
 
|-
 
|-
 
| <code>warnings</code>
 
| <code>warnings</code>
| Text explaining additional compatibility warnings about the mod (e.g. not compatible with Linux/Mac).
+
| Text explaining additional compatibility warnings about the mod (''e.g.,'' not compatible with Linux/Mac).
 
|-
 
|-
 
| <code>content pack for</code>
 
| <code>content pack for</code>
Line 150: Line 142:
 
|}
 
|}
  
 +
<!-- set 'enableBeta = true' in Lua code to enable these
 
===Beta fields===
 
===Beta fields===
 
When there's a Stardew Valley beta, some mods may have different compatibility statuses for stable vs beta. You can specify these optional fields to specify a different beta status.
 
When there's a Stardew Valley beta, some mods may have different compatibility statuses for stable vs beta. You can specify these optional fields to specify a different beta status.
Line 173: Line 166:
 
| The unofficial update's version number, if any.
 
| The unofficial update's version number, if any.
 
|}
 
|}
 
+
-->
===Override fields===
 
These fields override information provided by the author in the <samp>manifest.json</samp> or mod page, so they should only be used as a last resort.
 
 
 
{| class="wikitable"
 
|-
 
! field
 
! purpose
 
|-
 
| <code>change update keys</code>
 
| Overrides the [[Modding:Modder Guide/APIs/Update checks|update keys]] from the <samp>manifest.json</samp> or other compatibility list fields. Remove a key with <code>-</code>, add a key with an optional <code>+</code>, and separate keys with commas. For example:
 
<pre>
 
|override update keys = -Nexus:991, +Nexus:991@CFA
 
</pre>
 
|-
 
| <code>map remote version</code>
 
| When SMAPI performs an update check for the mod, this field overrides the version returned by the server. SMAPI will match the original version using [https://semver.org/ semantic rules] if it's parseable (e.g. <code>1.0</code> and <code>1.0.0</code> are equivalent), else it'll fallback to case-insensitive string comparison (e.g. <code>1.01</code> and <code>1.01.0</code> are ''not'' equivalent). If an invalid format is specified or the new version can't be parsed, the mapping will be ignored.
 
 
 
'''This is a specialised field; it's better to correct the mod page if possible.'''
 
 
 
Mappings are specified with an arrow, and multiple mappings can be separated by a semi-colon:
 
<pre>
 
|map remote versions = 0.01 → 0.0.1; 0.0.1-beta → 0.0.1
 
</pre>
 
|-
 
| <code>map local version</code>
 
| Equivalent to <code>map remote version</code>, but for the manifest version.
 
|}
 
 
 
 
===Valid statuses===
 
===Valid statuses===
 
{| class="wikitable"
 
{| class="wikitable"
Line 230: Line 195:
 
|-
 
|-
 
| <code>unknown</code>
 
| <code>unknown</code>
| The mod's compatibility status hasn't been tested. This should only be used as a placeholder (e.g. when adding a new beta), it should never be used long since that defeats the purpose of the compatibility list.
+
| The mod's compatibility status hasn't been tested. This should only be used as a placeholder (''e.g.,'' when adding a new beta), it should never be used long since that defeats the purpose of the compatibility list.
 
|}
 
|}
  
[[Category:Modding]]
+
[[Category:Modding Modules]]

Latest revision as of 15:13, 30 March 2024

This module provides the table structure and data for the Modding:Mod compatibility list.

Examples

Compatible mod

{{#invoke:SMAPI compatibility|entry
  |name    = Lookup Anything
  |author  = Pathoschild
  |id      = Pathoschild.LookupAnything
  |nexus   = 541
  |github  = Pathoschild/StardewMods
}}

Broken mod

{{#invoke:SMAPI compatibility|entry
  |name    = Lookup Anything
  |author  = Pathoschild
  |id      = Pathoschild.LookupAnything
  |nexus   = 541
  |github  = Pathoschild/StardewMods

  |summary  = 
  |broke in = Stardew Valley 1.2
}}

Unofficial update

For an unofficial update, use the broken-mod template and add these under the other fields:

  |unofficial url     = https://community.playstarbound.com/attachments/201345000
  |unofficial version = 1.18.2-unofficial.1-example

Usage

Limitations

The name, author, and id arguments are comma-separated. If the actual value contains a comma, use &#44; instead.

Main fields (shown above)

field purpose
name The normalised display name for the mod. Delimit alternate names with commas.
author The name of the author, as shown on Nexus or in its manifest.json file. Delimit alternate names with commas.
id The latest unique mod ID, as listed in its manifest.json file. Delimit alternate/older IDs with commas (ideally in latest to oldest order). For very old mods with no ID, use none to disable validation checks.
nexus The mod's unique ID on Nexus (if any). This is the number in the mod page's URL.
github The mod's GitHub repository in the form owner/repo.
summary Specify custom notes or instructions about the mod's compatibility. Should usually be blank.
broke in The SMAPI or Stardew Valley update which broke this mod (if applicable).

Other fields

field purpose
status Whether the mod is compatible with the latest versions of Stardew Valley and SMAPI (see #Valid statuses). If not specified, it defaults to unofficial if an unofficial URL is given, else broken if broke in is specified, else ok.
unofficial url A page URL where the player can download an unofficial update, if any.
unofficial version The unofficial update's version number, if any.
chucklefish The mod's ID in the Chucklefish mod repository.
curse The mod's project ID and key in the CurseForge mod repository. The ID is shown on the mod page next to "Project ID", and the key is shown in the mod page's URL. This must be in the form id,key.
moddrop The mod's ID in the ModDrop mod repository.
url The arbitrary mod URL, if not on a known mod site. Avoid if possible, since this makes crossreferencing more difficult.
source An arbitrary source code URL, if not on GitHub. Avoid if possible, since this makes crossreferencing more difficult.
warnings Text explaining additional compatibility warnings about the mod (e.g., not compatible with Linux/Mac).
content pack for The name of the mod which loads this content pack.
dev note Special notes intended for developers who maintain unofficial updates or submit pull requests.

Valid statuses

status description
ok The mod is compatible. This is the default and doesn't need to be specified.
Default summary: use latest version.
optional The mod is compatible, if you use an optional download on the mod page.
Default summary: use optional download.[1]
unofficial The mod is compatible using an unofficial update. There's no need to specify this; if you also set unofficial url and unofficial version, you can remove the status field.
workaround The mod isn't compatible, but the player can fix it or there's a good alternative. A summary should be provided manually. If you also set unofficial url and unofficial version, you can remove the status field.
broken The mod isn't compatible. The message depends on whether the source link is set.
Default summary: broken, not updated yet or broken, not open-source.
abandoned The mod is no longer maintained by the author, and an unofficial update or continuation is unlikely. This should only be used when the author has definitively abandoned the mod (either explicitly, or by removing the mod page or downloads).
Default summary: no longer maintained.
obsolete The mod is no longer needed and should be removed.
unknown The mod's compatibility status hasn't been tested. This should only be used as a placeholder (e.g., when adding a new beta), it should never be used long since that defeats the purpose of the compatibility list.