Difference between revisions of "Modding:Mod compatibility/entry"
Jump to navigation
Jump to search
Pathoschild (talk | contribs) (remove '3.0 ready' field, no longer needed) |
Pathoschild (talk | contribs) (add dev notes field) |
||
Line 59: | Line 59: | ||
-->}} <!-- | -->}} <!-- | ||
-->{{#ifexpr:{{#arraysize:warnings}} > 0|data-warnings="{{#arrayprint:warnings|, |@@@|@@@}}"}} <!-- | -->{{#ifexpr:{{#arraysize:warnings}} > 0|data-warnings="{{#arrayprint:warnings|, |@@@|@@@}}"}} <!-- | ||
− | -->{{#if:{{{content pack for|}}}|data-content-pack-for="{{{content pack for}}}"}} | + | -->{{#if:{{{content pack for|}}}|data-content-pack-for="{{{content pack for}}}"}}<!-- |
+ | -->{{#if:{{{dev notes|}}}|data-dev-notes="{{{dev notes}}}"}} | ||
| {{#if:{{{nexus id|}}}|[{{nexus mod|{{{nexus id}}}}} {{#arrayindex:names|0}}]|{{#if:{{{cf id|}}}|[https://community.playstarbound.com/resources/{{urlencode:{{{cf id}}}}} {{#arrayindex:names|0}}]|{{#if:{{{moddrop id|}}}|[https://www.moddrop.com/sdv/mod/{{urlencode:{{{moddrop 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>}} | | {{#if:{{{nexus id|}}}|[{{nexus mod|{{{nexus id}}}}} {{#arrayindex:names|0}}]|{{#if:{{{cf id|}}}|[https://community.playstarbound.com/resources/{{urlencode:{{{cf id}}}}} {{#arrayindex:names|0}}]|{{#if:{{{moddrop id|}}}|[https://www.moddrop.com/sdv/mod/{{urlencode:{{{moddrop 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>}} | | {{#arrayindex:authors|0}}{{#ifexpr:{{#arraysize:altAuthors}} > 0|<br /><small style="font-size:0.75em;">(aka {{#arrayprint:altAuthors|, |@@@|@@@}})</small>}} | ||
Line 83: | Line 84: | ||
| <small>{{#if:{{{beta broke in|}}}|{{{beta broke in}}}|{{{broke in|}}}}}</small> | | <small>{{#if:{{{beta broke in|}}}|{{{beta broke in}}}|{{{broke in|}}}}}</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>}}}} | | {{#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>}}}} | ||
− | | class="no-wrap"|<small>[[#{{#arrayindex:names|0}}|#]] {{#if:{{{link labels|}}}|{{#arraydefine:labelsArray|{{{link labels}}}}}}}{{#if:{{{links|}}}| {{#arraydefine:linkArray|{{{links}}}}}{{#arrayprint:linkArray| |@@@|[@@@ {{#if:{{#arrayindex:labelsArray|{{#arraysearch:linkArray|@@@}}}}|{{#arrayindex:labelsArray|{{#arraysearch:linkArray|@@@}}}}|{{#expr:{{#arraysearch:linkArray|@@@}} + 1}}}}]}}}}</small><noinclude> | + | | class="no-wrap"|<small><!-- |
+ | |||
+ | anchor-->[[#{{#arrayindex:names|0}}|#]] <!-- | ||
+ | metadata links-->{{#if:{{{link labels|}}}|{{#arraydefine:labelsArray|{{{link labels}}}}}}}{{#if:{{{links|}}}| {{#arraydefine:linkArray|{{{links}}}}}{{#arrayprint:linkArray| |@@@|[@@@ {{#if:{{#arrayindex:labelsArray|{{#arraysearch:linkArray|@@@}}}}|{{#arrayindex:labelsArray|{{#arraysearch:linkArray|@@@}}}}|{{#expr:{{#arraysearch:linkArray|@@@}} + 1}}}}]}}}} <!-- | ||
+ | developer notes-->{{#if:{{{dev notes|}}}|<abbr title="{{{dev notes|}}}">[dev notes]</abbr>}}</small><noinclude> | ||
|} | |} | ||
Line 248: | Line 253: | ||
| <code>content pack for</code> | | <code>content pack for</code> | ||
| The name of the mod which loads this content pack. | | The name of the mod which loads this content pack. | ||
+ | |- | ||
+ | | <code>dev notes</code> | ||
+ | | Special notes intended for developers who maintain unofficial updates or submit pull requests. | ||
|} | |} | ||
Revision as of 22:11, 14 July 2019
mod name | author | compatibility | broke in | source | |
---|---|---|---|---|---|
Modding:Mod compatibility/entry/summary | closed source | # |
Examples
Compatible mod
{{/entry |name = Lookup Anything |author = Pathoschild |id = Pathoschild.LookupAnything |nexus id = 541 |github = Pathoschild/StardewMods }}
mod name | author | compatibility | broke in | source | |
---|---|---|---|---|---|
Lookup Anything | Pathoschild | Modding:Mod compatibility/entry/summary | source | # |
Broken mod
{{/entry |name = Lookup Anything |author = Pathoschild |id = Pathoschild.LookupAnything |nexus id = 541 |github = Pathoschild/StardewMods |summary = |broke in = Stardew Valley 1.2 |links = https://github.com/Pathoschild/SMAPI/issues |link labels = PR }}
mod name | author | compatibility | broke in | source | |
---|---|---|---|---|---|
Lookup Anything | Pathoschild | Modding:Mod compatibility/entry/summary | Stardew Valley 1.2 | source | # PR |
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
mod name | author | compatibility | broke in | source | |
---|---|---|---|---|---|
Lookup Anything | Pathoschild | Modding:Mod compatibility/entry/summary | Stardew Valley 1.2 | source | # |
Usage
Limitations
- Avoid using quotes (
"
) in argument values; use"
instead. - The name, author, and id arguments are comma-separated. If the actual value contains a comma, use
,
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 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 id
|
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. |
cf id
|
The mod's ID in the Chucklefish mod repository. |
moddrop id
|
The mod's ID in the ModDrop mod repository. |
url
|
The arbitrary mod URL, if not on Nexus or Chucklefish. 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. |
links
|
A comma-delimited list of URLs to add as links in the metadata column. Mainly useful for linking to pull requests. |
link labels
|
A comma-delimited list of link labels for the links URLs. If omitted, the links will be numbered instead.
|
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 notes
|
Special notes intended for developers who maintain unofficial updates or submit pull requests. |
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.
field | purpose |
---|---|
beta summary
|
Specify custom notes or instructions about the mod's compatibility. Should usually be blank. |
beta broke in
|
The SMAPI or Stardew Valley update which broke this mod (if applicable). |
beta 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 .
|
beta unofficial url
|
A page URL where the player can download an unofficial update, if any. |
beta unofficial version
|
The unofficial update's version number, if any. |
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. |
Script
This script generates the template call when run from a Nexus or Chucklefish mod page.
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 =
}}
`;