group technical docs, add general shortcut for mod build package docs (#651)
This commit is contained in:
parent
a352b1101c
commit
1dde811c36
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
<!-- if game path is invalid, show one user-friendly error instead of a slew of reference errors -->
|
<!-- if game path is invalid, show one user-friendly error instead of a slew of reference errors -->
|
||||||
<Target Name="ValidateInstallPath" AfterTargets="BeforeBuild">
|
<Target Name="ValidateInstallPath" AfterTargets="BeforeBuild">
|
||||||
<Error Condition="!Exists('$(GamePath)')" Text="Failed to find the game install path automatically. You can specify where to find it; see https://smapi.io/buildmsg/custom-game-path." />
|
<Error Condition="!Exists('$(GamePath)')" Text="Failed to find the game install path automatically. You can specify where to find it; see https://smapi.io/package/custom-game-path." />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<!-- copy files into game directory and enable debugging -->
|
<!-- copy files into game directory and enable debugging -->
|
||||||
|
|
|
@ -38,16 +38,16 @@ doesn't change any of your game files. It serves eight main purposes:
|
||||||
something goes wrong. (Via the bundled SaveBackup mod.)_
|
something goes wrong. (Via the bundled SaveBackup mod.)_
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
Have questions? Come [chat on Discord](https://discord.gg/KCJHWhX) with SMAPI developers and other
|
Have questions? Come [chat on Discord](https://stardewvalleywiki.com/Modding:Community) with SMAPI
|
||||||
modders!
|
developers and other modders!
|
||||||
|
|
||||||
### For players
|
### For players
|
||||||
* [Player guide](https://stardewvalleywiki.com/Modding:Player_Guide)
|
* [Player guide](https://stardewvalleywiki.com/Modding:Player_Guide)
|
||||||
|
|
||||||
### For modders
|
### For modders
|
||||||
* [Modding documentation](https://stardewvalleywiki.com/Modding:Index)
|
* [Modding documentation](https://stardewvalleywiki.com/Modding:Index)
|
||||||
* [Mod build configuration](mod-build-config.md)
|
* [Mod build configuration](technical/mod-package.md)
|
||||||
* [Release notes](release-notes.md)
|
* [Release notes](release-notes.md)
|
||||||
|
|
||||||
### For SMAPI developers
|
### For SMAPI developers
|
||||||
* [Technical docs](technical-docs.md)
|
* [Technical docs](technical/smapi.md)
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
← [README](README.md)
|
||||||
|
|
||||||
# Release notes
|
# Release notes
|
||||||
## 3.0 (upcoming release)
|
## 3.0 (upcoming release)
|
||||||
These changes have not been released yet.
|
These changes have not been released yet.
|
||||||
|
@ -674,7 +676,7 @@ Released 14 October 2017 for Stardew Valley 1.2.30–1.2.33.
|
||||||
|
|
||||||
* **Command-line install**
|
* **Command-line install**
|
||||||
For power users and mod managers, the SMAPI installer can now be scripted using command-line arguments
|
For power users and mod managers, the SMAPI installer can now be scripted using command-line arguments
|
||||||
(see [technical docs](technical-docs.md#command-line-arguments)).
|
(see [technical docs](technical/smapi.md#command-line-arguments)).
|
||||||
|
|
||||||
### Change log
|
### Change log
|
||||||
For players:
|
For players:
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
← [SMAPI](../README.md)
|
||||||
|
|
||||||
The **mod build package** is an open-source NuGet package which automates the MSBuild configuration
|
The **mod build package** is an open-source NuGet package which automates the MSBuild configuration
|
||||||
for SMAPI mods and related tools. The package is fully compatible with Linux, Mac, and Windows.
|
for SMAPI mods and related tools. The package is fully compatible with Linux, Mac, and Windows.
|
||||||
|
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
|
@ -1,10 +1,10 @@
|
||||||
← [README](README.md)
|
← [README](../README.md)
|
||||||
|
|
||||||
This file provides more technical documentation about SMAPI. If you only want to use or create
|
This file provides more technical documentation about SMAPI. If you only want to use or create
|
||||||
mods, this section isn't relevant to you; see the main README to use or create mods.
|
mods, this section isn't relevant to you; see the main README to use or create mods.
|
||||||
|
|
||||||
This document is about SMAPI itself; see also [mod build package](mod-build-config.md) and
|
This document is about SMAPI itself; see also [mod build package](mod-package.md) and
|
||||||
[web services](web-services.md).
|
[web services](web.md).
|
||||||
|
|
||||||
# Contents
|
# Contents
|
||||||
* [Customisation](#customisation)
|
* [Customisation](#customisation)
|
||||||
|
@ -102,4 +102,4 @@ on the wiki for the first-time setup.
|
||||||
4. Zip the two folders.
|
4. Zip the two folders.
|
||||||
|
|
||||||
## Release notes
|
## Release notes
|
||||||
See [release notes](release-notes.md).
|
See [release notes](../release-notes.md).
|
|
@ -1,3 +1,5 @@
|
||||||
|
← [README](../README.md)
|
||||||
|
|
||||||
**SMAPI.Web** contains the code for the `smapi.io` website, including the mod compatibility list
|
**SMAPI.Web** contains the code for the `smapi.io` website, including the mod compatibility list
|
||||||
and update check API.
|
and update check API.
|
||||||
|
|
|
@ -96,7 +96,7 @@ namespace SMAPI.ModBuildConfig.Analyzer.Tests
|
||||||
DiagnosticResult expected = new DiagnosticResult
|
DiagnosticResult expected = new DiagnosticResult
|
||||||
{
|
{
|
||||||
Id = "AvoidImplicitNetFieldCast",
|
Id = "AvoidImplicitNetFieldCast",
|
||||||
Message = $"This implicitly converts '{expression}' from {fromType} to {toType}, but {fromType} has unintuitive implicit conversion rules. Consider comparing against the actual value instead to avoid bugs. See https://smapi.io/buildmsg/avoid-implicit-net-field-cast for details.",
|
Message = $"This implicitly converts '{expression}' from {fromType} to {toType}, but {fromType} has unintuitive implicit conversion rules. Consider comparing against the actual value instead to avoid bugs. See https://smapi.io/package/avoid-implicit-net-field-cast for details.",
|
||||||
Severity = DiagnosticSeverity.Warning,
|
Severity = DiagnosticSeverity.Warning,
|
||||||
Locations = new[] { new DiagnosticResultLocation("Test0.cs", NetFieldAnalyzerTests.SampleCodeLine, NetFieldAnalyzerTests.SampleCodeColumn + column) }
|
Locations = new[] { new DiagnosticResultLocation("Test0.cs", NetFieldAnalyzerTests.SampleCodeLine, NetFieldAnalyzerTests.SampleCodeColumn + column) }
|
||||||
};
|
};
|
||||||
|
@ -138,7 +138,7 @@ namespace SMAPI.ModBuildConfig.Analyzer.Tests
|
||||||
DiagnosticResult expected = new DiagnosticResult
|
DiagnosticResult expected = new DiagnosticResult
|
||||||
{
|
{
|
||||||
Id = "AvoidNetField",
|
Id = "AvoidNetField",
|
||||||
Message = $"'{expression}' is a {netType} field; consider using the {suggestedProperty} property instead. See https://smapi.io/buildmsg/avoid-net-field for details.",
|
Message = $"'{expression}' is a {netType} field; consider using the {suggestedProperty} property instead. See https://smapi.io/package/avoid-net-field for details.",
|
||||||
Severity = DiagnosticSeverity.Warning,
|
Severity = DiagnosticSeverity.Warning,
|
||||||
Locations = new[] { new DiagnosticResultLocation("Test0.cs", NetFieldAnalyzerTests.SampleCodeLine, NetFieldAnalyzerTests.SampleCodeColumn + column) }
|
Locations = new[] { new DiagnosticResultLocation("Test0.cs", NetFieldAnalyzerTests.SampleCodeLine, NetFieldAnalyzerTests.SampleCodeColumn + column) }
|
||||||
};
|
};
|
||||||
|
|
|
@ -67,7 +67,7 @@ namespace SMAPI.ModBuildConfig.Analyzer.Tests
|
||||||
DiagnosticResult expected = new DiagnosticResult
|
DiagnosticResult expected = new DiagnosticResult
|
||||||
{
|
{
|
||||||
Id = "AvoidObsoleteField",
|
Id = "AvoidObsoleteField",
|
||||||
Message = $"The '{oldName}' field is obsolete and should be replaced with '{newName}'. See https://smapi.io/buildmsg/avoid-obsolete-field for details.",
|
Message = $"The '{oldName}' field is obsolete and should be replaced with '{newName}'. See https://smapi.io/package/avoid-obsolete-field for details.",
|
||||||
Severity = DiagnosticSeverity.Warning,
|
Severity = DiagnosticSeverity.Warning,
|
||||||
Locations = new[] { new DiagnosticResultLocation("Test0.cs", ObsoleteFieldAnalyzerTests.SampleCodeLine, ObsoleteFieldAnalyzerTests.SampleCodeColumn + column) }
|
Locations = new[] { new DiagnosticResultLocation("Test0.cs", ObsoleteFieldAnalyzerTests.SampleCodeLine, ObsoleteFieldAnalyzerTests.SampleCodeColumn + column) }
|
||||||
};
|
};
|
||||||
|
|
|
@ -135,22 +135,22 @@ namespace StardewModdingAPI.ModBuildConfig.Analyzer
|
||||||
private readonly DiagnosticDescriptor AvoidImplicitNetFieldCastRule = new DiagnosticDescriptor(
|
private readonly DiagnosticDescriptor AvoidImplicitNetFieldCastRule = new DiagnosticDescriptor(
|
||||||
id: "AvoidImplicitNetFieldCast",
|
id: "AvoidImplicitNetFieldCast",
|
||||||
title: "Netcode types shouldn't be implicitly converted",
|
title: "Netcode types shouldn't be implicitly converted",
|
||||||
messageFormat: "This implicitly converts '{0}' from {1} to {2}, but {1} has unintuitive implicit conversion rules. Consider comparing against the actual value instead to avoid bugs. See https://smapi.io/buildmsg/avoid-implicit-net-field-cast for details.",
|
messageFormat: "This implicitly converts '{0}' from {1} to {2}, but {1} has unintuitive implicit conversion rules. Consider comparing against the actual value instead to avoid bugs. See https://smapi.io/package/avoid-implicit-net-field-cast for details.",
|
||||||
category: "SMAPI.CommonErrors",
|
category: "SMAPI.CommonErrors",
|
||||||
defaultSeverity: DiagnosticSeverity.Warning,
|
defaultSeverity: DiagnosticSeverity.Warning,
|
||||||
isEnabledByDefault: true,
|
isEnabledByDefault: true,
|
||||||
helpLinkUri: "https://smapi.io/buildmsg/avoid-implicit-net-field-cast"
|
helpLinkUri: "https://smapi.io/package/avoid-implicit-net-field-cast"
|
||||||
);
|
);
|
||||||
|
|
||||||
/// <summary>The diagnostic info for an avoidable net field access.</summary>
|
/// <summary>The diagnostic info for an avoidable net field access.</summary>
|
||||||
private readonly DiagnosticDescriptor AvoidNetFieldRule = new DiagnosticDescriptor(
|
private readonly DiagnosticDescriptor AvoidNetFieldRule = new DiagnosticDescriptor(
|
||||||
id: "AvoidNetField",
|
id: "AvoidNetField",
|
||||||
title: "Avoid Netcode types when possible",
|
title: "Avoid Netcode types when possible",
|
||||||
messageFormat: "'{0}' is a {1} field; consider using the {2} property instead. See https://smapi.io/buildmsg/avoid-net-field for details.",
|
messageFormat: "'{0}' is a {1} field; consider using the {2} property instead. See https://smapi.io/package/avoid-net-field for details.",
|
||||||
category: "SMAPI.CommonErrors",
|
category: "SMAPI.CommonErrors",
|
||||||
defaultSeverity: DiagnosticSeverity.Warning,
|
defaultSeverity: DiagnosticSeverity.Warning,
|
||||||
isEnabledByDefault: true,
|
isEnabledByDefault: true,
|
||||||
helpLinkUri: "https://smapi.io/buildmsg/avoid-net-field"
|
helpLinkUri: "https://smapi.io/package/avoid-net-field"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -27,11 +27,11 @@ namespace StardewModdingAPI.ModBuildConfig.Analyzer
|
||||||
["AvoidObsoleteField"] = new DiagnosticDescriptor(
|
["AvoidObsoleteField"] = new DiagnosticDescriptor(
|
||||||
id: "AvoidObsoleteField",
|
id: "AvoidObsoleteField",
|
||||||
title: "Reference to obsolete field",
|
title: "Reference to obsolete field",
|
||||||
messageFormat: "The '{0}' field is obsolete and should be replaced with '{1}'. See https://smapi.io/buildmsg/avoid-obsolete-field for details.",
|
messageFormat: "The '{0}' field is obsolete and should be replaced with '{1}'. See https://smapi.io/package/avoid-obsolete-field for details.",
|
||||||
category: "SMAPI.CommonErrors",
|
category: "SMAPI.CommonErrors",
|
||||||
defaultSeverity: DiagnosticSeverity.Warning,
|
defaultSeverity: DiagnosticSeverity.Warning,
|
||||||
isEnabledByDefault: true,
|
isEnabledByDefault: true,
|
||||||
helpLinkUri: "https://smapi.io/buildmsg/avoid-obsolete-field"
|
helpLinkUri: "https://smapi.io/package/avoid-obsolete-field"
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -16,9 +16,7 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\..\build\find-game-folder.targets" Link="build\find-game-folder.targets" />
|
<None Include="..\..\build\find-game-folder.targets" Link="build\find-game-folder.targets" />
|
||||||
<None Include="..\..\docs\mod-build-config.md">
|
<None Include="..\..\docs\technical\mod-package.md" Link="mod-build-config.md" />
|
||||||
<Link>mod-build-config.md</Link>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -107,7 +107,7 @@
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
<Error Condition="'$(OS)' != 'OSX' AND '$(OS)' != 'Unix' AND '$(OS)' != 'Windows_NT'" Text="The mod build package doesn't recognise OS type '$(OS)'." />
|
<Error Condition="'$(OS)' != 'OSX' AND '$(OS)' != 'Unix' AND '$(OS)' != 'Windows_NT'" Text="The mod build package doesn't recognise OS type '$(OS)'." />
|
||||||
|
|
||||||
<Error Condition="!Exists('$(GamePath)')" Text="The mod build package can't find your game folder. You can specify where to find it; see https://smapi.io/buildmsg/custom-game-path." />
|
<Error Condition="!Exists('$(GamePath)')" Text="The mod build package can't find your game folder. You can specify where to find it; see https://smapi.io/package/custom-game-path." />
|
||||||
<Error Condition="!Exists('$(GamePath)\$(GameExecutableName).exe')" Text="The mod build package found a game folder at $(GamePath), but it doesn't contain the $(GameExecutableName) file. If this folder is invalid, delete it and the package will autodetect another game install path." />
|
<Error Condition="!Exists('$(GamePath)\$(GameExecutableName).exe')" Text="The mod build package found a game folder at $(GamePath), but it doesn't contain the $(GameExecutableName) file. If this folder is invalid, delete it and the package will autodetect another game install path." />
|
||||||
<Error Condition="!Exists('$(GamePath)\StardewModdingAPI.exe')" Text="The mod build package found a game folder at $(GamePath), but it doesn't contain SMAPI. You need to install SMAPI before building the mod." />
|
<Error Condition="!Exists('$(GamePath)\StardewModdingAPI.exe')" Text="The mod build package found a game folder at $(GamePath), but it doesn't contain SMAPI. You need to install SMAPI before building the mod." />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
|
@ -9,9 +9,9 @@
|
||||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||||
<license type="expression">MIT</license>
|
<license type="expression">MIT</license>
|
||||||
<repository type="git" url="https://github.com/Pathoschild/SMAPI" />
|
<repository type="git" url="https://github.com/Pathoschild/SMAPI" />
|
||||||
<projectUrl>https://github.com/Pathoschild/SMAPI/blob/develop/docs/mod-build-config.md#readme</projectUrl>
|
<projectUrl>https://smapi.io/package/readme</projectUrl>
|
||||||
<iconUrl>https://raw.githubusercontent.com/Pathoschild/SMAPI/develop/src/SMAPI.ModBuildConfig/assets/nuget-icon.png</iconUrl>
|
<iconUrl>https://raw.githubusercontent.com/Pathoschild/SMAPI/develop/src/SMAPI.ModBuildConfig/assets/nuget-icon.png</iconUrl>
|
||||||
<description>Automates the build configuration for crossplatform Stardew Valley SMAPI mods. For SMAPI 2.11 or later.</description>
|
<description>Automates the build configuration for crossplatform Stardew Valley SMAPI mods. For SMAPI 3.0 or later.</description>
|
||||||
<releaseNotes>
|
<releaseNotes>
|
||||||
3.0.0:
|
3.0.0:
|
||||||
- Updated for SMAPI 3.0 and Stardew Valley 1.4.
|
- Updated for SMAPI 3.0 and Stardew Valley 1.4.
|
||||||
|
|
|
@ -162,7 +162,7 @@ namespace StardewModdingAPI.Web
|
||||||
|
|
||||||
// shortcut redirects
|
// shortcut redirects
|
||||||
redirects.Add(new RedirectToUrlRule(@"^/3\.0\.?$", "https://stardewvalleywiki.com/Modding:Migrate_to_SMAPI_3.0"));
|
redirects.Add(new RedirectToUrlRule(@"^/3\.0\.?$", "https://stardewvalleywiki.com/Modding:Migrate_to_SMAPI_3.0"));
|
||||||
redirects.Add(new RedirectToUrlRule(@"^/buildmsg(?:/?(.*))$", "https://github.com/Pathoschild/SMAPI/blob/develop/docs/mod-build-config.md#$1"));
|
redirects.Add(new RedirectToUrlRule(@"^/(?:buildmsg|package)(?:/?(.*))$", "https://github.com/Pathoschild/SMAPI/blob/develop/docs/technical/mod-package.md#$1")); // buildmsg deprecated, remove when SDV 1.4 is released
|
||||||
redirects.Add(new RedirectToUrlRule(@"^/compat\.?$", "https://mods.smapi.io"));
|
redirects.Add(new RedirectToUrlRule(@"^/compat\.?$", "https://mods.smapi.io"));
|
||||||
redirects.Add(new RedirectToUrlRule(@"^/docs\.?$", "https://stardewvalleywiki.com/Modding:Index"));
|
redirects.Add(new RedirectToUrlRule(@"^/docs\.?$", "https://stardewvalleywiki.com/Modding:Index"));
|
||||||
redirects.Add(new RedirectToUrlRule(@"^/install\.?$", "https://stardewvalleywiki.com/Modding:Player_Guide/Getting_Started#Install_SMAPI"));
|
redirects.Add(new RedirectToUrlRule(@"^/install\.?$", "https://stardewvalleywiki.com/Modding:Player_Guide/Getting_Started#Install_SMAPI"));
|
||||||
|
|
|
@ -35,11 +35,15 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{09CF91E5
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{EB35A917-67B9-4EFA-8DFC-4FB49B3949BB}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{EB35A917-67B9-4EFA-8DFC-4FB49B3949BB}"
|
||||||
ProjectSection(SolutionItems) = preProject
|
ProjectSection(SolutionItems) = preProject
|
||||||
..\docs\mod-build-config.md = ..\docs\mod-build-config.md
|
|
||||||
..\docs\README.md = ..\docs\README.md
|
..\docs\README.md = ..\docs\README.md
|
||||||
..\docs\release-notes.md = ..\docs\release-notes.md
|
..\docs\release-notes.md = ..\docs\release-notes.md
|
||||||
..\docs\technical-docs.md = ..\docs\technical-docs.md
|
EndProjectSection
|
||||||
..\docs\web-services.md = ..\docs\web-services.md
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "technical", "technical", "{5947303D-3512-413A-9009-7AC43F5D3513}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
..\docs\technical\mod-package.md = ..\docs\technical\mod-package.md
|
||||||
|
..\docs\technical\smapi.md = ..\docs\technical\smapi.md
|
||||||
|
..\docs\technical\web.md = ..\docs\technical\web.md
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Internal", "Internal", "{82D22ED7-A0A7-4D64-8E92-4B6A5E74ED11}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Internal", "Internal", "{82D22ED7-A0A7-4D64-8E92-4B6A5E74ED11}"
|
||||||
|
@ -135,6 +139,7 @@ Global
|
||||||
{F4453AB6-D7D6-447F-A973-956CC777968F} = {4B1CEB70-F756-4A57-AAE8-8CD78C475F25}
|
{F4453AB6-D7D6-447F-A973-956CC777968F} = {4B1CEB70-F756-4A57-AAE8-8CD78C475F25}
|
||||||
{09CF91E5-5BAB-4650-A200-E5EA9A633046} = {86C452BE-D2D8-45B4-B63F-E329EB06CEDA}
|
{09CF91E5-5BAB-4650-A200-E5EA9A633046} = {86C452BE-D2D8-45B4-B63F-E329EB06CEDA}
|
||||||
{EB35A917-67B9-4EFA-8DFC-4FB49B3949BB} = {86C452BE-D2D8-45B4-B63F-E329EB06CEDA}
|
{EB35A917-67B9-4EFA-8DFC-4FB49B3949BB} = {86C452BE-D2D8-45B4-B63F-E329EB06CEDA}
|
||||||
|
{5947303D-3512-413A-9009-7AC43F5D3513} = {EB35A917-67B9-4EFA-8DFC-4FB49B3949BB}
|
||||||
{85208F8D-6FD1-4531-BE05-7142490F59FE} = {82D22ED7-A0A7-4D64-8E92-4B6A5E74ED11}
|
{85208F8D-6FD1-4531-BE05-7142490F59FE} = {82D22ED7-A0A7-4D64-8E92-4B6A5E74ED11}
|
||||||
{680B2641-81EA-467C-86A5-0E81CDC57ED0} = {82D22ED7-A0A7-4D64-8E92-4B6A5E74ED11}
|
{680B2641-81EA-467C-86A5-0E81CDC57ED0} = {82D22ED7-A0A7-4D64-8E92-4B6A5E74ED11}
|
||||||
{AA95884B-7097-476E-92C8-D0500DE9D6D1} = {82D22ED7-A0A7-4D64-8E92-4B6A5E74ED11}
|
{AA95884B-7097-476E-92C8-D0500DE9D6D1} = {82D22ED7-A0A7-4D64-8E92-4B6A5E74ED11}
|
||||||
|
|
Loading…
Reference in New Issue