Changes

Jump to navigation Jump to search
→‎Usage: remove deleted 'pull request' parameter
Line 10: Line 10:  
</noinclude><!--
 
</noinclude><!--
   −
Define a few expensive variables here.
+
Define a few variables here:
 +
  {{#arrayindex:has_source|0}}    = set if a GitHub project name or custom source URL is set, else blank
 +
  {{#arrayindex:status|0}}        = compatibility status for the stable SMAPI/SDV release
 +
  {{#arrayindex:beta_status|0}}    = compatibility status for the beta SMAPI/SDV release
   −
  {{#arrayindex:vars|0}} = main status
+
-->{{#arraydefine:has_source|{{#if:{{{github|}}}{{{source|}}}|1}}}}<!--
  {{#arrayindex:vars|1}} = main status (no subtag)
  −
  {{#arrayindex:vars|2}} = beta status
  −
  {{#arrayindex:vars|3}} = beta status (no subtag)
  −
  {{#arrayindex:statuscompare|0}} = whether the compatibility info is equivalent between main and beta ('same' or 'different')
     −
-->{{#arraydefine:vars|<!--
+
-->{{#arraydefine:status|{{#if:{{{status|}}}
  0-->{{Modding:SMAPI compatibility/entry/status|source={{#if:{{{github|}}}|{{{github}}}|{{{source|}}}}}|unofficial={{{unofficial url|}}}|broke in={{{broke in|}}}|status={{{status|}}}}},<!--
+
   |{{{status}}}
   1-->{{Modding:SMAPI compatibility/entry/status|source={{#if:{{{github|}}}|{{{github}}}|{{{source|}}}}}|unofficial={{{unofficial url|}}}|broke in={{{broke in|}}}|status={{{status|}}}|no subtag=1}},<!--
+
   |{{#if:{{{unofficial url|}}}
   2-->{{Modding:SMAPI compatibility/entry/status|source={{#if:{{{github|}}}|{{{github}}}|{{{source|}}}}}|unofficial={{{unofficial url|}}}|broke in={{{broke in|}}}|status={{{status|}}}|beta unofficial={{{beta unofficial url|}}}|beta broke in={{{beta broke in|}}}|beta status={{{beta status|}}}}},<!--
+
    |unofficial
  3-->{{Modding:SMAPI compatibility/entry/status|source={{#if:{{{github|}}}|{{{github}}}|{{{source|}}}}}|unofficial={{{unofficial url|}}}|broke in={{{broke in|}}}|status={{{status|}}}|beta unofficial={{{beta unofficial url|}}}|beta broke in={{{beta broke in|}}}|beta status={{{beta status|}}}|no subtag=1}}
+
    |{{#if:{{{broke in|}}}
}}{{#arraydefine:statuscompare|<!--
+
      |broken
   0-->{{Modding:SMAPI compatibility/entry/compare status|source={{#if:{{{github|}}}|{{{github}}}|{{{source|}}}}}|unofficial={{{unofficial url|}}}|broke in={{{broke in|}}}|status={{{status|}}}|beta unofficial={{{beta unofficial url|}}}|beta broke in={{{beta broke in|}}}|beta status={{{beta status|}}}}}
+
      |ok
}}<!--
+
    }}
 +
   }}
 +
}}}}<!--
    
Parse input arrays
 
Parse input arrays
Line 32: Line 33:  
-->{{#arraydefine:authors|{{{author|}}}}}{{#arrayslice:altAuthors|authors|1}}<!--
 
-->{{#arraydefine:authors|{{{author|}}}}}{{#arrayslice:altAuthors|authors|1}}<!--
 
-->{{#arraydefine:ids|{{{id|}}}}}<!--
 
-->{{#arraydefine:ids|{{{id|}}}}}<!--
 +
-->{{#arraydefine:warnings|{{{warnings|}}}}}<!--
    
Build output
 
Build output
    
-->
 
-->
|- class="mod" style="line-height: 1em; {{#switch:{{#arrayindex:vars|3}} |ok|optional=background: #9F9; |workaround|unofficial=background: #CF9; |broken=background: #F99; |obsolete|abandoned=background: #999}}" <!--
+
|- class="mod" style="line-height: 1em; {{#switch:{{#arrayindex:status|0}} |ok|optional=background: #9F9; |workaround|unofficial=background: #CF9; |broken=background: #F99; |obsolete|abandoned=background: #999}}" <!--
 
-->id="{{anchorencode:{{#arrayindex:names|0}}}}" <!--
 
-->id="{{anchorencode:{{#arrayindex:names|0}}}}" <!--
-->data-status="{{#arrayindex:vars|1}}" <!--
+
-->data-id="{{#arrayprint:ids|,|@@@|@@@}}" <!--
-->data-beta-status="{{#arrayindex:vars|3}}" <!--
+
-->data-name="{{#arrayprint:names|,|@@@|@@@}}" <!--
 +
-->data-author="{{#arrayprint:authors|,|@@@|@@@}}" <!--
 +
-->{{#if:{{{chucklefish id|}}}|data-cf-id="{{{chucklefish id}}}"}} <!--
 +
-->{{#if:{{{curseforge id|}}}|data-curseforge-id="{{{curseforge id}}}"}} <!--
 +
-->{{#if:{{{curseforge key|}}}|data-curseforge-key="{{{curseforge key}}}"}} <!--
 +
-->{{#if:{{{nexus id|}}}|data-nexus-id="{{{nexus id}}}"}} <!--
 +
-->{{#if:{{{moddrop id|}}}|data-moddrop-id="{{{moddrop id}}}"}} <!--
 
-->{{#if:{{{github|}}}|data-github="{{{github}}}"}} <!--
 
-->{{#if:{{{github|}}}|data-github="{{{github}}}"}} <!--
-->{{#if:{{{source|}}}|data-custom-source="{{{source|}}}"}}
+
-->{{#if:{{{source|}}}|data-custom-source="{{#tag:nowiki|{{{source}}}}}"}} <!--
| {{#if:{{{nexus id|}}}|[{{nexus mod|{{{nexus id}}}}} <span class="mod-name">{{#arrayindex:names|0}}</span>]|{{#if:{{{cf id|}}}|[https://community.playstarbound.com/resources/{{urlencode:{{{cf id}}}}} <span class="mod-name">{{#arrayindex:names|0}}</span>]|{{#if:{{{url|}}}|[{{{url}}} <span class="mod-name">{{#arrayindex:names|0}}</span>]|<span class="mod-name">{{#arrayindex:names|0}}</span>}}}}}}{{#ifexpr:{{#arraysize:altNames}} > 0|<br /><small style="font-size:0.75em;">(aka <span class="mod-name2">{{#arrayprint:altNames|, |@@@|@@@}}</span>)</small>}}
+
-->data-url="{{#tag:nowiki|{{#if:{{{nexus id|}}}|{{nexus mod|{{{nexus id}}}}}|{{#if:{{{moddrop id|}}}|{{ModDrop mod|{{{moddrop id}}}}}|{{#if:{{{curseforge key|}}}|https://www.curseforge.com/stardewvalley/mods/{{urlencode:{{{curseforge key}}}}}|{{#if:{{{chucklefish id|}}}|https://community.playstarbound.com/resources/{{urlencode:{{{chucklefish id}}}}}|{{{url|}}}}}}}}}}}}}" <!--
| <span class="mod-author">{{#arrayindex:authors|0}}</span>{{#ifexpr:{{#arraysize:altAuthors}} > 0|<br /><small style="font-size:0.75em;">(aka <span class="mod-author2">{{#arrayprint:altAuthors|, |@@@|@@@}}</span>)</small>}}
+
-->data-status="{{#arrayindex:status|0}}" <!--
|class="summary"|<!--
+
-->{{#if:{{{broke in|}}}|data-broke-in="{{{broke in}}}"}} <!--
 +
-->{{#if:{{{unofficial version|}}}|data-unofficial-version="{{{unofficial version}}}"}} <!--
 +
-->{{#if:{{{unofficial url|}}}|data-unofficial-url="{{#tag:nowiki|{{{unofficial url}}}}}"}} <!--
 +
-->{{#if:{{{pull request|}}}|data-pr="{{#tag:nowiki|{{{pull request}}}}}"}} <!--
 +
-->{{#ifexpr:{{#arraysize:warnings}} > 0|data-warnings="{{#arrayprint:warnings|, |@@@|@@@}}"}} <!--
 +
-->{{#if:{{{content pack for|}}}|data-content-pack-for="{{{content pack for}}}"}} <!--
 +
-->{{#if:{{{dev note|}}}|data-dev-note="{{{dev note}}}"}} <!--
 +
-->{{#if:{{{map local versions|}}}|data-map-local-versions="{{{map local versions}}}"}} <!--
 +
-->{{#if:{{{map remote versions|}}}|data-map-remote-versions="{{{map remote versions}}}"}}<!--
 +
-->{{#if:{{{change update keys|}}}|data-change-update-keys="{{{change update keys}}}"}}
 +
| {{#if:{{{nexus id|}}}|[{{nexus mod|{{{nexus id}}}}} {{#arrayindex:names|0}}]|{{#if:{{{moddrop id|}}}|{{ModDrop mod|{{{moddrop id}}}|{{#arrayindex:names|0}}}}|{{#if:{{{curseforge key|}}}|[https://www.curseforge.com/stardewvalley/mods/{{urlencode:{{{curseforge key}}}}} {{#arrayindex:names|0}}]|{{#if:{{{chucklefish id|}}}|[https://community.playstarbound.com/resources/{{urlencode:{{{chucklefish id}}}}} {{#arrayindex:names|0}}]|{{#if:{{{url|}}}|[{{{url}}} {{#arrayindex:names|0}}]|{{#arrayindex:names|0}}}}}}}}}}}}{{#ifexpr:{{#arraysize:altNames}} > 0|<br /><small style="font-size:0.75em;">(aka {{#arrayprint:altNames|, |@@@|@@@}})</small>}}
 +
| {{#arrayindex:authors|0}}{{#ifexpr:{{#arraysize:altAuthors}} > 0|<br /><small style="font-size:0.75em;">(aka {{#arrayprint:altAuthors|, |@@@|@@@}})</small>}}
 +
|<!--
   −
stable label (if different)-->{{#ifeq:{{#arrayindex:statuscompare|0}}|different|'''{{version|stable|link=0}}:'''&#32;}}<!--
+
summary--><span class="mod-summary">{{#switch:{{#arrayindex:status|0}}
 +
|ok        = ✓ {{#if:{{{summary|}}}|{{{summary}}}|use latest version.}}
 +
|optional  = ✓ {{#if:{{{summary|}}}|{{{summary}}}|use optional download.}}
 +
|unofficial = ⚠ broken{{#if:{{{unofficial url|}}}|, use [{{{unofficial url}}} unofficial update]{{#if:{{{unofficial version|}}}|&#32;(<small>{{{unofficial version}}}</small>)}}|{{{unofficial url}}}}}.
 +
|workaround = ⚠ broken, {{{summary}}}
 +
|broken    = ↻ broken, {{#if:{{{summary|}}}|{{{summary}}}|{{#if:{{#arrayindex:has_source|0}}|not updated yet.|not open-source.}}}}
 +
|obsolete  = ✖ {{#if:{{{summary|}}}|{{{summary}}}|remove this mod (obsolete).}}
 +
|abandoned  = ✖ {{#if:{{{summary|}}}|{{{summary}}}|remove this mod (no longer maintained).}}
 +
|unknown    = ☐ {{#if:{{{summary|}}}|{{{summary}}}|not tested yet.}}
 +
}}</span>{{#ifeq:{{#arrayindex:status|0}}|optional|<ref name="optional-update" />}}<!--
   −
stable summary--><span class="mod-summary">{{Modding:SMAPI compatibility/entry/summary
+
warnings-->{{#if:{{{warnings|}}}|<br />⚠&#32;{{#arrayprint:warnings|<br />⚠&#32;}}}}
  |status            = {{#arrayindex:vars|0}}
+
| <small>{{{broke in|}}}</small>
  |summary            = {{{summary|}}}
+
| {{#if:{{{github|}}}|[https://github.com/{{{github}}} source]|{{#if:{{{source|}}}|[{{{source}}} source]|<span style="color: red; font-size: 0.85em; opacity: 0.5;">closed source</span>}}}}
  |unofficial url    = {{{unofficial url|}}}
+
| class="no-wrap"|<small><!--
  |unofficial version = {{{unofficial version|}}}
  −
}}</span>{{#ifeq:{{#arrayindex:vars|0}}|optional|<ref name="optional-update" />}}<!--
     −
beta summary (if different)-->{{#ifeq:{{#arrayindex:statuscompare|0}}|different|<br />'''{{version|beta|link=0}}-beta:'''&#32;<span class="mod-beta-summary">{{Modding:SMAPI compatibility/entry/summary
+
anchor-->[[#{{#arrayindex:names|0}}|#]] <!--
  |status            = {{#arrayindex:vars|2}}
+
pull request-->{{#if:{{{pull request|}}}|&#32;[{{{pull request}}} PR]}} <!--
  |summary            = {{{beta summary|}}}
+
developer note-->{{#if:{{{dev note|}}}|<abbr title="{{{dev note|}}}">[dev note]</abbr>}}<!--
  |unofficial url    = {{{beta unofficial url|}}}
  −
  |unofficial version = {{{beta unofficial version|}}}
  −
}}</span>{{#ifeq:{{#arrayindex:vars|2}}|optional|<ref name="optional-update" />}}}}{{#if:{{{warnings|}}}|<br />⚠&#32;{{#arraydefine:warningArray|{{{warnings}}}}}{{#arrayprint:warningArray|<br />⚠&#32;}}}}
  −
| <small>{{#if:{{{beta broke in|}}}|<span class="mod-broke-in">{{{beta broke in}}}</span>|<span class="broke-in">{{{broke in|}}}</span>}}</small>
  −
| {{#if:{{{github|}}}|[https://github.com/{{{github}}} source]|{{#if:{{{source|}}}|[{{{source}}} source]|<span style="color: red; font-size: 0.85em; opacity: 0.5;">closed source</span>}}}}
  −
| <small>[[#{{#arrayindex:names|0}}|#]] {{#if:{{{hide-url|}}}|&#32;[{{{hide-url}}} o]}}{{#if:{{{links|}}}|&#32;{{#arraydefine:linkArray|{{{links}}}}}{{#arrayprint:linkArray|&#32;|@@@|[@@@ {{#expr:{{#arraysearch:linkArray|@@@}} + 1}}]}}}} {{#ifexpr:{{#arraysize:ids}} = 0|⚠ no id}}</small><!--
     −
machine-readable metadata (this must be HTML elements because we don't have Scribunto's attribute formatting)
+
validation-->{{#ifeq:{{#if:{{{curseforge id|}}}|1|0}}|{{#if:{{{curseforge key|}}}|1|0}}||<abbr title="The mod data is invalid: can't specify CurseForge key or ID without the other.">[⚠ invalid data]</abbr>}}</small><noinclude>
--><div class="mod-metadata" style="display: none;">
  −
  <div class="mod-anchor">{{anchorencode:{{#arrayindex:names|0}}}}</div>
  −
  <div class="mod-id">{{#arrayprint:ids|,|@@@|@@@}}</div>
  −
  <div class="mod-url">{{#tag:nowiki|{{#if:{{{nexus id|}}}|{{nexus mod|{{{nexus id}}}}}|{{#if:{{{cf id|}}}|https://community.playstarbound.com/resources/{{urlencode:{{{cf id}}}}}|{{{url|}}}}}}}}}</div>
  −
  {{#if:{{{nexus id|}}}|<div class="mod-nexus-id">{{{nexus id|}}}</div>}}
  −
  {{#if:{{{cf id|}}}|<div class="mod-cf-id">{{{cf id|}}}</div>}}
  −
  {{#if:{{{github|}}}|<div class="mod-github">{{{github|}}}</div>}}
  −
  {{#if:{{{source|}}}|<div class="mod-custom-source">{{#tag:nowiki|{{{source|}}}}}</div>}}
  −
  <div class="mod-status">{{#arrayindex:vars|1}}</div>
  −
  {{#if:{{{broke in|}}}|<div class="mod-broke-in">{{{broke in|}}}</div>}}
  −
  {{#if:{{{unofficial version|}}}|<div class="mod-unofficial-version">{{{unofficial version|}}}</div>}}
  −
  {{#if:{{{unofficial url|}}}|<div class="mod-unofficial-url">{{#tag:nowiki|{{{unofficial url|}}}}}</div>}}
  −
{{#ifeq:{{#arrayindex:statuscompare|0}}|different|
  −
  <div class="mod-beta-status">{{#arrayindex:vars|3}}</div>
  −
  {{#if:{{{beta broke in|}}}|<div class="mod-beta-broke-in">{{{beta broke in|}}}</div>}}
  −
  {{#if:{{{beta unofficial version|}}}|<div class="mod-beta-unofficial-version">{{{beta unofficial version|}}}</div>}}
  −
  {{#if:{{{beta unofficial url|}}}|<div class="mod-beta-unofficial-url">{{#tag:nowiki|{{{beta unofficial url|}}}}}</div>}}
  −
}}
  −
  {{#if:{{{warnings|}}}|<div class="mod-warnings">{{{warnings|}}}</div>}}
  −
</div><noinclude>
   
|}
 
|}
   Line 108: Line 109:  
! source
 
! source
 
! &nbsp;
 
! &nbsp;
{{Modding:SMAPI_compatibility/entry
+
{{Modding:Mod compatibility/entry
 
   |name    = Lookup Anything
 
   |name    = Lookup Anything
 
   |author  = Pathoschild
 
   |author  = Pathoschild
Line 126: Line 127:  
   |github  = Pathoschild/StardewMods
 
   |github  = Pathoschild/StardewMods
 
   |summary  =  
 
   |summary  =  
 +
 
   |broke in = Stardew Valley 1.2
 
   |broke in = Stardew Valley 1.2
 
}}
 
}}
Line 137: Line 139:  
! source
 
! source
 
! &nbsp;
 
! &nbsp;
{{Modding:SMAPI_compatibility/entry
+
{{Modding:Mod compatibility/entry
 
   |name    = Lookup Anything
 
   |name    = Lookup Anything
 
   |author  = Pathoschild
 
   |author  = Pathoschild
Line 144: Line 146:  
   |github  = Pathoschild/StardewMods
 
   |github  = Pathoschild/StardewMods
 
   |summary  =  
 
   |summary  =  
 +
 
   |broke in = Stardew Valley 1.2
 
   |broke in = Stardew Valley 1.2
 
}}
 
}}
Line 149: Line 152:     
===Unofficial update===
 
===Unofficial update===
For an unofficial update, use the broken-mod template and add these under the other fields:
+
For an unofficial update, use the broken-mod template and add these under <samp>broke in</samp>:
 
<pre>
 
<pre>
   |unofficial url    = https://community.playstarbound.com/attachments/201345000
+
   |unofficial url    = https://community.playstarbound.com/threads/updating-mods-for-stardew-valley-1-3.142524/page-62#post-3329160
 
   |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>
 
{| class="wikitable plainlinks"
 
{| class="wikitable plainlinks"
Line 162: Line 166:  
! source
 
! source
 
! &nbsp;
 
! &nbsp;
{{Modding:SMAPI_compatibility/entry
+
{{Modding:Mod compatibility/entry
 
   |name    = Lookup Anything
 
   |name    = Lookup Anything
 
   |author  = Pathoschild
 
   |author  = Pathoschild
Line 169: Line 173:  
   |github  = Pathoschild/StardewMods
 
   |github  = Pathoschild/StardewMods
 
   |summary  =  
 
   |summary  =  
   |broke in = Stardew Valley 1.2
+
 
   |unofficial url    = https://community.playstarbound.com/attachments/201345000
+
   |broke in           = Stardew Valley 1.2
 +
   |unofficial url    = https://community.playstarbound.com/threads/updating-mods-for-stardew-valley-1-3.142524/page-62#post-3329160
 
   |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
 
}}
 
}}
 
|}
 
|}
    
==Usage==
 
==Usage==
 +
===Limitations===
 +
* Avoid using quotes (<code>"</code>) in argument values; use <code>&amp;quot;</code> instead.
 +
* The <nowiki>name</nowiki>, <nowiki>author</nowiki>, and <nowiki>id</nowiki> arguments are comma-separated. If the actual value contains a comma, use <code>&amp;#44;</code> instead.
 +
 
===Main fields (shown above)===
 
===Main fields (shown above)===
 
{| class="wikitable"
 
{| class="wikitable"
Line 186: Line 196:  
|-
 
|-
 
| <code>author</code>
 
| <code>author</code>
| The name of the author, as shown on Nexus or in its <tt>manifest.json</tt> file. Delimit alternate names with commas.
+
| The name of the author, as shown on Nexus or in its <samp>manifest.json</samp> file. Delimit alternate names with commas.
 
|-
 
|-
 
| <code>id</code>
 
| <code>id</code>
| The unique mod ID, as listed in its <tt>manifest.json</tt> file. Delimit alternate/older IDs with commas (ideally in latest to oldest order). For very old mods with no ID, use <tt>none</tt> to disable validation checks.
+
| The 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 id</code>
Line 195: Line 205:  
|-
 
|-
 
| <code>github</code>
 
| <code>github</code>
| The mod's GitHub repository in the form <tt>owner/repo</tt>.
+
| The mod's GitHub repository in the form <samp>owner/repo</samp>.
 
|-
 
|-
 
| <code>summary</code>
 
| <code>summary</code>
Line 219: Line 229:  
| The unofficial update's version number, if any.
 
| The unofficial update's version number, if any.
 
|-
 
|-
| <code>cf id</code>
+
| <code>chucklefish id</code>
| The mod's ID in the 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>
 +
| 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".
 +
|-
 +
| <code>curseforge key</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].
 
|-
 
|-
 
| <code>url</code>
 
| <code>url</code>
| The arbitrary mod URL, if not on Nexus or Chucklefish. Avoid if possible, since this makes crossreferencing more difficult.
+
| The arbitrary mod URL, if not on a known mod site. Avoid if possible, since this makes crossreferencing more difficult.
 
|-
 
|-
 
| <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>hide-url</code>
+
| <code>warnings</code>
| Use this instead of (<code>url</code>) to move it into a superscript link. Mainly useful for broken mods with a workaround, so players don't automatically click through to the old mod.
+
| Text explaining additional compatibility warnings about the mod (''e.g.,'' not compatible with Linux/Mac).
 
|-
 
|-
| <code>links</code>
+
| <code>content pack for</code>
| A comma-delimited list of URLs to add as superscript links. Mainly useful for linking to pull requests.
+
| The name of the mod which loads this content pack.
 
|-
 
|-
| <code>warnings</code>
+
| <code>dev note</code>
| Text explaining additional compatibility warnings about the mod (e.g. not compatible with Linux/Mac).
+
| Special notes intended for developers who maintain unofficial updates or submit pull requests.
 
|}
 
|}
   −
===Beta fields===
+
===Override 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.
+
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"
 
{| class="wikitable"
Line 246: Line 265:  
! purpose
 
! purpose
 
|-
 
|-
| <code>beta summary</code>
+
| <code>change update keys</code>
| Specify custom notes or instructions about the mod's compatibility. Should usually be blank.
+
| 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>beta broke in</code>
+
| <code>map remote version</code>
| The SMAPI or Stardew Valley update which broke this mod (if applicable).
+
| 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.
|-
+
 
| <code>beta status</code>
+
'''This is a specialised field; it's better to correct the mod page if possible.'''
| Whether the mod is compatible with the latest versions of Stardew Valley and SMAPI (see [[#Valid statuses]]). If not specified, it defaults to <code>unofficial</code> if an unofficial URL is given, else <code>broken</code> if <code>broke in</code> is specified, else <code>ok</code>.
+
 
|-
+
Mappings are specified with an arrow, and multiple mappings can be separated by a semi-colon:
| <code>beta unofficial url</code>
+
<pre>
| A page URL where the player can download an unofficial update, if any.
+
|map remote versions = 0.01 → 0.0.1; 0.0.1-beta → 0.0.1
 +
</pre>
 
|-
 
|-
| <code>beta unofficial version</code>
+
| <code>map local version</code>
| The unofficial update's version number, if any.
+
| Equivalent to <code>map remote version</code>, but for the manifest version.
 
|}
 
|}
   Line 275: Line 298:  
|-
 
|-
 
| <code>unofficial</code>
 
| <code>unofficial</code>
| The mod is compatible using an unofficial update. There's no need to specify this; if you also set <tt>unofficial url</tt> and <tt>unofficial version</tt>, you can remove the status field.
+
| The mod is compatible using an unofficial update. There's no need to specify this; if you also set <samp>unofficial url</samp> and <samp>unofficial version</samp>, you can remove the status field.
 
|-
 
|-
 
| <code>workaround</code>
 
| <code>workaround</code>
| 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 <tt>unofficial url</tt> and <tt>unofficial version</tt>, you can remove the status field.
+
| 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 <samp>unofficial url</samp> and <samp>unofficial version</samp>, you can remove the status field.
 
|-
 
|-
 
| <code>broken</code>
 
| <code>broken</code>
Line 288: Line 311:  
| <code>obsolete</code>
 
| <code>obsolete</code>
 
| The mod is no longer needed and should be removed.
 
| The mod is no longer needed and should be removed.
 +
|-
 +
| <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.
 
|}
 
|}
   −
==Script==
+
[[de:Modding:SMAPI Kompatibilität/entry]]
This script generates the template call when run from a Nexus or Chucklefish mod page.
  −
<source lang="javascript">
  −
switch(location.host)
  −
{
  −
case "www.nexusmods.com":
  −
var url = location.origin + location.pathname.replace(/\/*$/, '');
  −
var name = $(".header-name").text();
  −
var author = $(".uploader a").text();
  −
var author2 = $(".header-author strong").text();
  −
break;
  −
 
  −
case "community.playstarbound.com":
  −
var url = location.origin + location.pathname.replace(/\/*$/, '');
  −
var name = $.trim($("h1:first").contents().first().text());
  −
var author = $(".primaryContent[data-author]:first").attr("data-author");
  −
break;
  −
 
  −
default:
  −
throw `Unknown domain: ${location.host}`;
  −
}
  −
 
  −
var template = `
  −
{{/entry
  −
  |name    = ${name}
  −
  |author  = ${author}`;
  −
if(author2 && author2 != author)
  −
  template += `, ${author2}`;
  −
template += `
  −
  |url    = ${url}
  −
  |status  = ok
  −
  |summary =
  −
  |source  =
  −
}}
  −
`;
  −
</source>
     −
[[Category:Modding]]</noinclude>
+
[[Category:Modding]]
 +
</noinclude>
translators
8,411

edits

Navigation menu