Skip to content

Commit f302934

Browse files
committed
Merge branch 'develop' into stable
2 parents 74e20ea + c086b02 commit f302934

File tree

716 files changed

+46167
-44805
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

716 files changed

+46167
-44805
lines changed

.editorconfig

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,22 @@ csharp_prefer_braces = false:hint
7979
##########
8080
[*.md]
8181
guidelines = 100
82+
83+
##########
84+
## Suppress warnings in rewrite facades
85+
## See ReSharper docs: https://www.jetbrains.com/help/resharper/Reference__Code_Inspections_CSHARP.html.
86+
##########
87+
[src/SMAPI/Framework/ModLoading/Rewriters/**/*Facade.cs]
88+
dotnet_diagnostic.CS1591.severity = none # missing XML doc comment -- not meant to be used directly
89+
resharper_identifier_typo_highlighting = none # identifier typo -- matches game code
90+
resharper_inconsistent_naming_highlighting = none # inconsistent naming -- matches game code
91+
resharper_local_variable_hides_member_highlighting = none # local variable hides member -- matches game code
92+
resharper_parameter_hides_member_highlighting = none # parameter hides member -- matches game code
93+
resharper_redundant_base_qualifier_highlighting = none # redundant base qualifier -- deliberate for clarity, and to avoid accidentally calling a facade method
94+
resharper_unused_member_global_highlighting = none # unused member -- used via rewriting
95+
96+
##########
97+
## Suppress warnings in event interfaces
98+
##########
99+
[src/SMAPI/Events/I*Events.cs]
100+
dotnet_diagnostic.CS1572.severity = none # docblock has 'param' tag for missing parameter -- this is deliberate to let mods use <inheritdoc />

build/common.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ repo. It imports the other MSBuild files as needed.
77
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
88
<PropertyGroup>
99
<!--set general build properties -->
10-
<Version>4.0.8</Version>
10+
<Version>4.1.0</Version>
1111
<Product>SMAPI</Product>
1212
<LangVersion>latest</LangVersion>
1313
<AssemblySearchPaths>$(AssemblySearchPaths);{GAC}</AssemblySearchPaths>

build/deploy-local-smapi.targets

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,6 @@ This assumes `find-game-folder.targets` has already been imported and validated.
4040

4141
<!-- .NET dependencies -->
4242
<Copy SourceFiles="$(TargetDir)\System.Management.dll" DestinationFolder="$(GamePath)\smapi-internal" Condition="$(OS) == 'Windows_NT'" />
43-
44-
<!-- Legacy .NET dependencies (remove in SMAPI 4.0.0) -->
45-
<Copy SourceFiles="$(TargetDir)\System.Configuration.ConfigurationManager.dll" DestinationFolder="$(GamePath)\smapi-internal" />
46-
<Copy SourceFiles="$(TargetDir)\System.Runtime.Caching.dll" DestinationFolder="$(GamePath)\smapi-internal" />
47-
<Copy SourceFiles="$(TargetDir)\System.Security.Permissions.dll" DestinationFolder="$(GamePath)\smapi-internal" />
4843
</Target>
4944

5045
<!-- .NET metadata files -->

build/unix/prepare-install-package.sh

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ for folder in ${folders[@]}; do
6262

6363
echo "Compiling installer for $folder..."
6464
echo "-------------------------------------------------"
65-
dotnet publish src/SMAPI.Installer --configuration $buildConfig -v minimal --runtime "$runtime" -p:OS="$msbuildPlatformName" -p:GamePath="$gamePath" -p:CopyToGameFolder="false" -p:PublishTrimmed=True -p:TrimMode=Link --self-contained true
65+
dotnet publish src/SMAPI.Installer --configuration $buildConfig -v minimal --runtime "$runtime" -p:OS="$msbuildPlatformName" -p:GamePath="$gamePath" -p:CopyToGameFolder="false" --self-contained true
6666
echo ""
6767
echo ""
6868

@@ -151,11 +151,6 @@ for folder in ${folders[@]}; do
151151
cp "$smapiBin/System.Management.dll" "$bundlePath/smapi-internal"
152152
fi
153153

154-
# copy legacy .NET dependencies (remove in SMAPI 4.0.0)
155-
cp "$smapiBin/System.Configuration.ConfigurationManager.dll" "$bundlePath/smapi-internal"
156-
cp "$smapiBin/System.Runtime.Caching.dll" "$bundlePath/smapi-internal"
157-
cp "$smapiBin/System.Security.Permissions.dll" "$bundlePath/smapi-internal"
158-
159154
# copy bundled mods
160155
for modName in ${bundleModNames[@]}; do
161156
fromPath="src/SMAPI.Mods.$modName/bin/$buildConfig/$runtime/publish"

build/windows/prepare-install-package.ps1

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ foreach ($folder in $folders) {
7979

8080
echo "Compiling installer for $folder..."
8181
echo "-------------------------------------------------"
82-
dotnet publish src/SMAPI.Installer --configuration $buildConfig -v minimal --runtime "$runtime" --framework "$framework" -p:OS="$msbuildPlatformName" -p:TargetFrameworks="$framework" -p:GamePath="$gamePath" -p:CopyToGameFolder="false" -p:PublishTrimmed=True -p:TrimMode=Link --self-contained true
82+
dotnet publish src/SMAPI.Installer --configuration $buildConfig -v minimal --runtime "$runtime" --framework "$framework" -p:OS="$msbuildPlatformName" -p:TargetFrameworks="$framework" -p:GamePath="$gamePath" -p:CopyToGameFolder="false" --self-contained true
8383
echo ""
8484
echo ""
8585

@@ -177,11 +177,6 @@ foreach ($folder in $folders) {
177177
cp "$smapiBin/System.Management.dll" "$bundlePath/smapi-internal"
178178
}
179179

180-
# copy legacy .NET dependencies (remove in SMAPI 4.0.0)
181-
cp "$smapiBin/System.Configuration.ConfigurationManager.dll" "$bundlePath/smapi-internal"
182-
cp "$smapiBin/System.Runtime.Caching.dll" "$bundlePath/smapi-internal"
183-
cp "$smapiBin/System.Security.Permissions.dll" "$bundlePath/smapi-internal"
184-
185180
# copy bundled mods
186181
foreach ($modName in $bundleModNames) {
187182
$fromPath = "src/SMAPI.Mods.$modName/bin/$buildConfig/$runtime/publish"

docs/release-notes.md

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,68 @@
11
[README](README.md)
22

33
# Release notes
4+
## 4.1.0
5+
Released 04 November 2024 for Stardew Valley 1.6.9 or later. See [release highlights](https://www.patreon.com/posts/115304143).
6+
7+
* For players:
8+
* Updated for Stardew Valley 1.6.9.
9+
* SMAPI now auto-detects missing or modified content files, and logs a warning if found.
10+
* SMAPI now uses iTerm2 on macOS if it's installed (thanks to yinxiangshi!).
11+
* SMAPI now enables GameMode on Linux if it's installed (thanks to noah1510!).
12+
* SMAPI now anonymizes paths containing your home path (thanks to AnotherPillow!).
13+
* Removed confusing "Found X mods with warnings:" log message.
14+
* The installer on Linux now tries to open a terminal if needed (thanks to HoodedDeath!).
15+
* Fixed installer not detecting Linux Flatpak install paths.
16+
* Fixed various content issues for non-English players (e.g. content packs not detecting the current festival correctly).
17+
* Fixed dependencies on obsolete redundant mods not ignored in some cases.
18+
* Fixed issues in Console Commands:
19+
* Fixed `list_items` & `player_add` not handling dried items, pickled forage, smoked fish, and specific bait correctly.
20+
* Fixed `list_items` & `player_add` listing some flooring & wallpaper items twice.
21+
* Fixed `show_data_files` & `show_game_files` no longer working correctly (thanks to jakerosado!).
22+
* Fixed some mod overlays mispositioned when your UI scale is non-100% and zoom level is 100%.
23+
* Fixed incorrect 'direct console access' warnings.
24+
* Updated mod compatibility list.
25+
26+
* For mod authors:
27+
* Added support for [private assembly references](https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Manifest#Private_assemblies) (thanks to Shockah!).
28+
* Added support for [i18n subfolders](https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Translation#i18n_folder) (thanks to spacechase0!).
29+
* Added asset propagation for `Data/ChairTiles`.
30+
* Added new C# API methods:
31+
* Added `DoesAssetExist` methods to `helper.GameContent` and `helper.ModContent` (thanks to KhloeLeclair!).
32+
* Added scroll wheel suppression via `helper.Input.SuppressScrollWheel()` (thanks to MercuriusXeno!).
33+
* Added `PathUtilities.AnonymizePathForDisplay` to anonymize home paths (thanks to AnotherPillow!).
34+
* Added parameter docs to event interfaces. This lets you fully document your event handlers like `/// <inheritdoc cref="IGameLoopEvents.SaveLoaded" />`.
35+
* Translations now support [gender switch blocks](https://stardewvalleywiki.com/Modding:Dialogue#Gender_switch).
36+
* Translations now support tokens in their placeholder text.
37+
* SMAPI no longer blocks map edits which change the tilesheet order, since that no longer causes crashes in Stardew Valley 1.6.9.
38+
* The SMAPI log now includes the assembly version of each loaded mod (thanks to spacechase0!).
39+
* Updated dependencies, including...
40+
* [FluentHttpClient](https://github.com/Pathoschild/FluentHttpClient#readme) 4.3.0 → 4.4.1 (see [changes](https://github.com/Pathoschild/FluentHttpClient/blob/develop/RELEASE-NOTES.md#441));
41+
* [Pintail](https://github.com/Nanoray-pl/Pintail) 2.3.0 → 2.6.0 (see [changes](https://github.com/Nanoray-pl/Pintail/blob/master/docs/release-notes.md#260)).
42+
* Fixed `content.Load` ignoring language override in recent versions.
43+
* Fixed player sprites and building paint masks not always propagated on change.
44+
* Fixed `.tmx` map tile sizes being premultiplied, which is inconsistent with the game's `.tbin` maps.
45+
* Fixed various edge cases when chaining methods on `Translation` instances.
46+
47+
* For the update check server:
48+
* Rewrote update checks for mods on CurseForge and ModDrop to use new export API endpoints.
49+
_This should result in much faster update checks for those sites, and less chance of update-check errors when their servers are under heavy load._
50+
* Added workaround for CurseForge auto-syncing prerelease versions with an invalid version number.
51+
52+
* For the log parser:
53+
* Clicking a checkbox in the mod list now always only changes that checkbox, to allow hiding a single mod.
54+
* Fixed the wrong game folder path shown if the `Mods` folder path was customized.
55+
56+
* For the JSON validator:
57+
* Updated for Content Patcher 2.1.0 &ndash; 2.4.0, and fixed validation for `Priority` fields.
58+
* Fixed incorrect errors shown for..
59+
* some valid `Entries`, `Fields`, `MapProperties`, `MapTiles`, and `When` field values;
60+
* `CustomLocations` entries which use the new [unique string ID](https://stardewvalleywiki.com/Modding:Common_data_field_types#Unique_string_ID) format;
61+
* `AddWarps` warps when a location name contains a dot.
62+
63+
* For the web API:
64+
* The [anonymized metrics for update check requests](technical/web.md#modsmetrics) now counts requests by SMAPI and game version.
65+
466
## 4.0.8
567
Released 21 April 2024 for Stardew Valley 1.6.4 or later.
668

@@ -19,7 +81,7 @@ Released 21 April 2024 for Stardew Valley 1.6.4 or later.
1981
Released 18 April 2024 for Stardew Valley 1.6.4 or later.
2082

2183
* For players:
22-
* Updated for Stardew Valley 1.6.4. **This drops compatibility with Stardew Valley 1.6.0–1.6.3.**
84+
* Updated for Stardew Valley 1.6.4.
2385
* The installer now lists detected game folders with an incompatible version to simplify troubleshooting.
2486
* When the installer asks for a game folder path, entering an incorrect path to a file inside it will now still select the folder.
2587
* Fixed installer not detecting 1.6 compatibility branch.
@@ -119,6 +181,7 @@ Released 19 March 2024 for Stardew Valley 1.6.0 or later. See [release highlight
119181

120182
* For the web UI:
121183
* Updated JSON validator for Content Patcher 2.0.0.
184+
* Added [anonymized metrics for update check requests](technical/web.md#modsmetrics).
122185
* Fixed uploaded log/JSON file expiry alway shown as renewed.
123186
* Fixed update check for mods with a prerelease version tag not recognized by the ModDrop API. SMAPI now parses the version itself if needed.
124187

Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
&larr; [mod build config](./mod-build-config.md)
2+
3+
## Release notes
4+
## Upcoming release
5+
* Removed build warnings for implicit net field conversions, which were removed in Stardew Valley 1.6.9.
6+
7+
## 4.3.0
8+
Released 06 October 2024 for SMAPI 3.13.0 or later.
9+
10+
* You can now [bundle content packs with your mod](mod-package.md#bundle-content-packs) (thanks to abhiaagarwal!).
11+
12+
### 4.2.0
13+
Released 05 September 2024 for SMAPI 3.13.0 or later.
14+
15+
* Added support for `i18n` subfolders (thanks to spacechase0!).
16+
* Updated dependencies.
17+
18+
### 4.1.1
19+
Released 24 June 2023 for SMAPI 3.13.0 or later.
20+
21+
* Replaced `.pdb` files with embedded symbols by default. This fixes logged errors not having line numbers on Linux/macOS.
22+
23+
### 4.1.0
24+
Released 08 January 2023 for SMAPI 3.13.0 or later.
25+
26+
* Added `manifest.json` format validation on build (thanks to tylergibbs2!).
27+
* Fixed game DLLs not excluded from the release zip when they're referenced explicitly but `BundleExtraAssemblies` isn't set.
28+
29+
### 4.0.2
30+
Released 09 October 2022 for SMAPI 3.13.0 or later.
31+
32+
* Switched to the newer crossplatform `portable` debug symbols (thanks to lanturnalis!).
33+
* Fixed `BundleExtraAssemblies` option being partly case-sensitive.
34+
* Fixed `BundleExtraAssemblies` not applying `All` value to game assemblies.
35+
36+
### 4.0.1
37+
Released 14 April 2022 for SMAPI 3.13.0 or later.
38+
39+
* Added detection for Xbox app game folders.
40+
* Fixed "_conflicts between different versions of Microsoft.Win32.Registry_" warnings in recent SMAPI versions.
41+
* Internal refactoring.
42+
43+
### 4.0.0
44+
Released 30 November 2021 for SMAPI 3.13.0 or later.
45+
46+
* Updated for Stardew Valley 1.5.5 and SMAPI 3.13.0. (Older versions are no longer supported.)
47+
* Added `IgnoreModFilePaths` option to ignore literal paths.
48+
* Added `BundleExtraAssemblies` option to copy bundled DLLs into the mod zip/folder.
49+
* Removed the `GameExecutableName` and `GameFramework` options (since they now have the same value
50+
on all platforms).
51+
* Removed the `CopyModReferencesToBuildOutput` option (superseded by `BundleExtraAssemblies`).
52+
* Improved analyzer performance by enabling parallel execution.
53+
54+
**Migration guide for mod authors:**
55+
1. See [_migrate to 64-bit_](https://stardewvalleywiki.com/Modding:Migrate_to_64-bit_on_Windows) and
56+
[_migrate to Stardew Valley 1.5.5_](https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.5.5).
57+
2. Possible changes in your `.csproj` or `.targets` files:
58+
* Replace `$(GameExecutableName)` with `Stardew Valley`.
59+
* Replace `$(GameFramework)` with `MonoGame` and remove any XNA Framework-specific logic.
60+
* Replace `<CopyModReferencesToBuildOutput>true</CopyModReferencesToBuildOutput>` with
61+
`<BundleExtraAssemblies>Game</BundleExtraAssemblies>`.
62+
* If you need to bundle extra DLLs besides your mod DLL, see the [`BundleExtraAssemblies`
63+
documentation](#configure).
64+
65+
### 3.3.0
66+
Released 30 March 2021 for SMAPI 3.0.0 or later.
67+
68+
* Added a build warning when the mod isn't compiled for `Any CPU`.
69+
* Added a `GameFramework` build property set to `MonoGame` or `Xna` based on the platform. This can
70+
be overridden to change which framework it references.
71+
* Added support for building mods against the 64-bit Linux version of the game on Windows.
72+
* The package now suppresses the misleading 'processor architecture mismatch' warnings.
73+
74+
### 3.2.2
75+
Released 23 September 2020 for SMAPI 3.0.0 or later.
76+
77+
* Reworked and streamlined how the package is compiled.
78+
* Added [SMAPI-ModTranslationClassBuilder](https://github.com/Pathoschild/SMAPI-ModTranslationClassBuilder)
79+
files to the ignore list.
80+
81+
### 3.2.1
82+
Released 11 September 2020 for SMAPI 3.0.0 or later.
83+
84+
* Added more detailed logging.
85+
* Fixed _path's format is not supported_ error when using default `Mods` path in 3.2.
86+
87+
### 3.2.0
88+
Released 07 September 2020 for SMAPI 3.0.0 or later.
89+
90+
* Added option to change `Mods` folder path.
91+
* Rewrote documentation to make it easier to read.
92+
93+
### 3.1.0
94+
Released 01 February 2020 for SMAPI 3.0.0 or later.
95+
96+
* Added support for semantic versioning 2.0.
97+
* `0Harmony.dll` is now ignored if the mod references Harmony directly (it's bundled with SMAPI).
98+
99+
### 3.0.0
100+
Released 26 November 2019 for SMAPI 3.0.0 or later.
101+
102+
* Updated for SMAPI 3.0 and Stardew Valley 1.4.
103+
* Added automatic support for `assets` folders.
104+
* Added `$(GameExecutableName)` MSBuild variable.
105+
* Added support for projects using the simplified `.csproj` format.
106+
* Added option to disable game debugging config.
107+
* Added `.pdb` files to builds by default (to enable line numbers in error stack traces).
108+
* Added optional Harmony reference.
109+
* Fixed `Newtonsoft.Json.pdb` included in release zips when Json.NET is referenced directly.
110+
* Fixed `<IgnoreModFilePatterns>` not working for `i18n` files.
111+
* Dropped support for older versions of SMAPI and Visual Studio.
112+
* Migrated package icon to NuGet's new format.
113+
114+
### 2.2.0
115+
Released 28 October 2018.
116+
117+
* Added support for SMAPI 2.8+ (still compatible with earlier versions).
118+
* Added default game paths for 32-bit Windows.
119+
* Fixed valid manifests marked invalid in some cases.
120+
121+
### 2.1.0
122+
Released 27 July 2018.
123+
124+
* Added support for Stardew Valley 1.3.
125+
* Added support for non-mod projects.
126+
* Added C# analyzers to warn about implicit conversions of Netcode fields in Stardew Valley 1.3.
127+
* Added option to ignore files by regex pattern.
128+
* Added reference to new SMAPI DLL.
129+
* Fixed some game paths not detected by NuGet package.
130+
131+
### 2.0.2
132+
Released 01 November 2017.
133+
134+
* Fixed compatibility issue on Linux.
135+
136+
### 2.0.1
137+
Released 11 October 2017.
138+
139+
* Fixed mod deploy failing to create subfolders if they don't already exist.
140+
141+
### 2.0.0
142+
Released 11 October 2017.
143+
144+
* Added: mods are now copied into the `Mods` folder automatically (configurable).
145+
* Added: release zips are now created automatically in your build output folder (configurable).
146+
* Added: mod deploy and release zips now exclude Json.NET automatically, since it's provided by SMAPI.
147+
* Added mod's version to release zip filename.
148+
* Improved errors to simplify troubleshooting.
149+
* Fixed release zip not having a mod folder.
150+
* Fixed release zip failing if mod name contains characters that aren't valid in a filename.
151+
152+
### 1.7.1
153+
Released 28 July 2017.
154+
155+
* Fixed issue where i18n folders were flattened.
156+
* The manifest/i18n files in the project now take precedence over those in the build output if both
157+
are present.
158+
159+
### 1.7.0
160+
Released 28 July 2017.
161+
162+
* Added option to create release zips on build.
163+
* Added reference to XNA's XACT library for audio-related mods.
164+
165+
### 1.6.2
166+
Released 10 July 2017.
167+
168+
* Further improved crossplatform game path detection.
169+
* Removed undocumented `GamePlatform` build property.
170+
171+
### 1.6.1
172+
Released 09 July 2017.
173+
174+
* Improved crossplatform game path detection.
175+
176+
### 1.6.0
177+
Released 05 June 2017.
178+
179+
* Added support for deploying mod files into `Mods` automatically.
180+
* Added a build error if a game folder is found, but doesn't contain Stardew Valley or SMAPI.
181+
182+
### 1.5.0
183+
Released 23 January 2017.
184+
185+
* Added support for setting a custom game path globally.
186+
* Added default GOG path on macOS.
187+
188+
### 1.4.0
189+
Released 11 January 2017.
190+
191+
* Fixed detection of non-default game paths on 32-bit Windows.
192+
* Removed support for SilVerPLuM (discontinued).
193+
* Removed support for overriding the target platform (no longer needed since SMAPI crossplatforms
194+
mods automatically).
195+
196+
### 1.3.0
197+
Released 31 December 2016.
198+
199+
* Added support for non-default game paths on Windows.
200+
201+
### 1.2.0
202+
Released 24 October 2016.
203+
204+
* Exclude game binaries from mod build output.
205+
206+
### 1.1.0
207+
Released 21 October 2016.
208+
209+
* Added support for overriding the target platform.
210+
211+
### 1.0.0
212+
Released 21 October 2016.
213+
214+
* Initial release.
215+
* Added support for detecting the game path automatically.
216+
* Added support for injecting XNA/MonoGame references automatically based on the OS.
217+
* Added support for mod builders like SilVerPLuM.

0 commit comments

Comments
 (0)