summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md30
-rw-r--r--.github/ISSUE_TEMPLATE/config.yml8
-rw-r--r--.github/ISSUE_TEMPLATE/custom.md37
-rw-r--r--.github/ISSUE_TEMPLATE/feature_request.md12
-rw-r--r--.github/ISSUE_TEMPLATE/general.md12
-rw-r--r--build/0Harmony.dllbin238592 -> 241152 bytes
-rw-r--r--build/0Harmony.xml27
-rw-r--r--build/common.targets2
-rwxr-xr-xbuild/unix/prepare-install-package.sh2
-rwxr-xr-xbuild/unix/set-smapi-version.sh2
-rwxr-xr-xbuild/windows/finalize-install-package.sh2
-rw-r--r--build/windows/prepare-install-package.ps14
-rw-r--r--docs/release-notes.md92
-rw-r--r--docs/technical/mod-package.md16
-rw-r--r--docs/technical/smapi.md4
-rw-r--r--src/SMAPI.Installer/assets/install on Linux.sh2
-rw-r--r--src/SMAPI.Installer/assets/install on Windows.bat4
-rw-r--r--src/SMAPI.Installer/assets/install on macOS.command2
-rw-r--r--src/SMAPI.ModBuildConfig.Analyzer.Tests/SMAPI.ModBuildConfig.Analyzer.Tests.csproj4
-rw-r--r--src/SMAPI.ModBuildConfig/DeployModTask.cs40
-rw-r--r--src/SMAPI.ModBuildConfig/Framework/ModFileManager.cs35
-rw-r--r--src/SMAPI.ModBuildConfig/SMAPI.ModBuildConfig.csproj4
-rw-r--r--src/SMAPI.ModBuildConfig/build/smapi.targets20
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/SetColorCommand.cs2
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs16
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/manifest.json4
-rw-r--r--src/SMAPI.Mods.ErrorHandler/manifest.json4
-rw-r--r--src/SMAPI.Mods.SaveBackup/ModEntry.cs57
-rw-r--r--src/SMAPI.Mods.SaveBackup/manifest.json4
-rw-r--r--src/SMAPI.Tests/Core/AssetNameTests.cs41
-rw-r--r--src/SMAPI.Tests/Core/AssumptionTests.cs62
-rw-r--r--src/SMAPI.Tests/SMAPI.Tests.csproj9
-rw-r--r--src/SMAPI.Tests/Utilities/KeybindListTests.cs6
-rw-r--r--src/SMAPI.Tests/Utilities/SemanticVersionTests.cs4
-rw-r--r--src/SMAPI.Toolkit/Framework/GameScanning/GameScanner.cs65
-rw-r--r--src/SMAPI.Toolkit/Framework/ManifestValidator.cs106
-rw-r--r--src/SMAPI.Toolkit/Framework/ModScanning/ModScanner.cs4
-rw-r--r--src/SMAPI.Toolkit/SMAPI.Toolkit.csproj7
-rw-r--r--src/SMAPI.Toolkit/Serialization/Models/Manifest.cs53
-rw-r--r--src/SMAPI.Web/Framework/Clients/Nexus/NexusClient.cs4
-rw-r--r--src/SMAPI.Web/Framework/LogParsing/LogParser.cs13
-rw-r--r--src/SMAPI.Web/Framework/LogParsing/Models/ParsedLog.cs6
-rw-r--r--src/SMAPI.Web/SMAPI.Web.csproj16
-rw-r--r--src/SMAPI.Web/Views/LogParser/Index.cshtml35
-rw-r--r--src/SMAPI.Web/wwwroot/Content/css/log-parser.css5
-rw-r--r--src/SMAPI.Web/wwwroot/Content/js/log-parser.js11
-rw-r--r--src/SMAPI.Web/wwwroot/schemas/content-patcher.json4
-rw-r--r--src/SMAPI.sln5
-rw-r--r--src/SMAPI/Constants.cs6
-rw-r--r--src/SMAPI/Context.cs2
-rw-r--r--src/SMAPI/Framework/Content/AssetDataForImage.cs166
-rw-r--r--src/SMAPI/Framework/Content/AssetInfo.cs4
-rw-r--r--src/SMAPI/Framework/Content/AssetName.cs114
-rw-r--r--src/SMAPI/Framework/ContentCoordinator.cs13
-rw-r--r--src/SMAPI/Framework/ContentManagers/BaseContentManager.cs2
-rw-r--r--src/SMAPI/Framework/ContentManagers/ModContentManager.cs140
-rw-r--r--src/SMAPI/Framework/Deprecations/DeprecationManager.cs2
-rw-r--r--src/SMAPI/Framework/InternalExtensions.cs30
-rw-r--r--src/SMAPI/Framework/Logging/LogManager.cs12
-rw-r--r--src/SMAPI/Framework/Logging/LogOnceCacheKey.cs10
-rw-r--r--src/SMAPI/Framework/ModHelpers/CommandHelper.cs2
-rw-r--r--src/SMAPI/Framework/ModHelpers/ContentHelper.cs4
-rw-r--r--src/SMAPI/Framework/ModHelpers/ModHelper.cs2
-rw-r--r--src/SMAPI/Framework/ModHelpers/ModRegistryHelper.cs47
-rw-r--r--src/SMAPI/Framework/ModLoading/AssemblyLoader.cs2
-rw-r--r--src/SMAPI/Framework/ModLoading/Finders/EventFinder.cs2
-rw-r--r--src/SMAPI/Framework/ModLoading/ModResolver.cs138
-rw-r--r--src/SMAPI/Framework/Models/SConfig.cs62
-rw-r--r--src/SMAPI/Framework/Monitor.cs11
-rw-r--r--src/SMAPI/Framework/SCore.cs140
-rw-r--r--src/SMAPI/Framework/SModHooks.cs18
-rw-r--r--src/SMAPI/Framework/StateTracking/FieldWatchers/ComparableListWatcher.cs2
-rw-r--r--src/SMAPI/IMod.cs10
-rw-r--r--src/SMAPI/Metadata/CoreAssetPropagator.cs10
-rw-r--r--src/SMAPI/Mod.cs6
-rw-r--r--src/SMAPI/SMAPI.config.json40
-rw-r--r--src/SMAPI/SMAPI.csproj8
-rw-r--r--src/SMAPI/Utilities/AssetPathUtilities/AssetNamePartEnumerator.cs70
-rw-r--r--src/SMAPI/Utilities/DelegatingModHooks.cs137
-rw-r--r--src/SMAPI/Utilities/Keybind.cs4
-rw-r--r--src/SMAPI/Utilities/PerScreen.cs8
-rw-r--r--src/SMAPI/i18n/ko.json4
82 files changed, 1535 insertions, 597 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index c51d164b..00000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-name: Bug report
-about: Report a problem with SMAPI.
-
----
-
-<!--
-
-Only report a bug here if you're sure it's a SMAPI bug!
-To request support instead, see https://smapi.io/community.
-
-Replace the instructions below with the bug details.
-
--->
-
-**Describe the bug**
-A clear and concise description of what the bug is. Provide any other details you think might be relevant here.
-
-**To Reproduce**
-Exact steps which reproduce the bug, if possible. For example:
-1. Load save '...'.
-2. Walk to '....'.
-3. Click '....'.
-4. Error occurs.
-
-**Log file**
-Upload your SMAPI log to https://smapi.io/log and post a link here.
-
-**Screenshots**
-If applicable, add screenshots to help explain your problem.
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 00000000..63d7bb67
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,8 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Troubleshooting guide for players
+ url: https://smapi.io/troubleshoot
+ about: See if your question is already answered first!
+ - name: Get help or discuss
+ url: https://smapi.io/help
+ about: Ask for help from the community, or join the Stardew Valley Discord to ask questions, report issues, or discuss with the SMAPI developer, players, and mod authors. The SMAPI developer is @Pathoschild#0001 on Discord.
diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md
new file mode 100644
index 00000000..11306e7f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/custom.md
@@ -0,0 +1,37 @@
+---
+name: Create a development task
+about: DON'T DO THIS BEFORE READING. This is for specific changes to the code or technical bug reports. See below if something isn't working, you have questions or ideas, or you want to discuss something.
+
+---
+
+<!--
+
+
+
+
+STOP!
+
+Is this a specific development task? Don't create an issue if not!
+See https://smapi.io/community if something isn't working, you have questions or ideas, or you want
+to discuss something.
+
+If you're absolutely sure it's a specific development task (e.g. a specific bug, not just
+'something went wrong on my computer'), edit the template below.
+
+-->
+
+**Describe the bug**
+A clear and concise description of what the bug is. Provide any other details you think might be relevant here.
+
+**To Reproduce**
+Exact steps which reproduce the bug, if possible. For example:
+1. Load save '...'.
+2. Walk to '....'.
+3. Click '....'.
+4. Error occurs.
+
+**Log file**
+Upload your SMAPI log to https://smapi.io/log and post a link here.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index 8d935dc8..00000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for SMAPI.
-
----
-
-<!--
-
-GitHub issues are only used for development tasks. Please don't submit feature requests here!
-Instead, see https://smapi.io/community to discuss SMAPI.
-
--->
diff --git a/.github/ISSUE_TEMPLATE/general.md b/.github/ISSUE_TEMPLATE/general.md
deleted file mode 100644
index f02d3c9a..00000000
--- a/.github/ISSUE_TEMPLATE/general.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-name: General
-about: Create a ticket about something else.
-
----
-
-<!--
-
-GitHub issues are only used for development tasks.
-For support and questions, see https://smapi.io/community instead.
-
--->
diff --git a/build/0Harmony.dll b/build/0Harmony.dll
index 492255be..72ca2b61 100644
--- a/build/0Harmony.dll
+++ b/build/0Harmony.dll
Binary files differ
diff --git a/build/0Harmony.xml b/build/0Harmony.xml
index 8499d20b..f1b9b4cf 100644
--- a/build/0Harmony.xml
+++ b/build/0Harmony.xml
@@ -845,7 +845,7 @@
</member>
<member name="F:HarmonyLib.ExceptionBlockType.BeginExceptFilterBlock">
- <summary>The beginning of an except filter block</summary>
+ <summary>The beginning of an except filter block (currently not supported to use in a patch)</summary>
</member>
<member name="F:HarmonyLib.ExceptionBlockType.BeginFaultBlock">
@@ -2661,6 +2661,18 @@
<param name="name">The optional name</param>
</member>
+ <member name="M:HarmonyLib.CodeMatch.#ctor(System.Linq.Expressions.Expression{System.Action},System.String)">
+ <summary>Creates a code match that calls a method</summary>
+ <param name="expression">The lambda expression using the method</param>
+ <param name="name">The optional name</param>
+
+ </member>
+ <member name="M:HarmonyLib.CodeMatch.#ctor(System.Linq.Expressions.LambdaExpression,System.String)">
+ <summary>Creates a code match that calls a method</summary>
+ <param name="expression">The lambda expression using the method</param>
+ <param name="name">The optional name</param>
+
+ </member>
<member name="M:HarmonyLib.CodeMatch.#ctor(HarmonyLib.CodeInstruction,System.String)">
<summary>Creates a code match</summary>
<param name="instruction">The CodeInstruction</param>
@@ -3217,6 +3229,13 @@
<returns>True if the instruction loads the constant</returns>
</member>
+ <member name="M:HarmonyLib.CodeInstructionExtensions.LoadsConstant(HarmonyLib.CodeInstruction,System.String)">
+ <summary>Tests if the code instruction loads a string constant</summary>
+ <param name="code">The <see cref="T:HarmonyLib.CodeInstruction"/></param>
+ <param name="str">The string</param>
+ <returns>True if the instruction loads the constant</returns>
+
+ </member>
<member name="M:HarmonyLib.CodeInstructionExtensions.LoadsField(HarmonyLib.CodeInstruction,System.Reflection.FieldInfo,System.Boolean)">
<summary>Tests if the code instruction loads a field</summary>
<param name="code">The <see cref="T:HarmonyLib.CodeInstruction"/></param>
@@ -3346,7 +3365,11 @@
<summary>A file log for debugging</summary>
</member>
- <member name="F:HarmonyLib.FileLog.logPath">
+ <member name="P:HarmonyLib.FileLog.LogWriter">
+ <summary>Set this to make Harmony write its log content to this stream</summary>
+
+ </member>
+ <member name="P:HarmonyLib.FileLog.LogPath">
<summary>Full pathname of the log file, defaults to a file called <c>harmony.log.txt</c> on your Desktop</summary>
</member>
diff --git a/build/common.targets b/build/common.targets
index 7fe66fab..1ead1508 100644
--- a/build/common.targets
+++ b/build/common.targets
@@ -7,7 +7,7 @@ repo. It imports the other MSBuild files as needed.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!--set general build properties -->
- <Version>3.16.2</Version>
+ <Version>3.18.3</Version>
<Product>SMAPI</Product>
<LangVersion>latest</LangVersion>
<AssemblySearchPaths>$(AssemblySearchPaths);{GAC}</AssemblySearchPaths>
diff --git a/build/unix/prepare-install-package.sh b/build/unix/prepare-install-package.sh
index 1d805e00..304579b9 100755
--- a/build/unix/prepare-install-package.sh
+++ b/build/unix/prepare-install-package.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
#
#
diff --git a/build/unix/set-smapi-version.sh b/build/unix/set-smapi-version.sh
index 0c0cbeb0..02b5e615 100755
--- a/build/unix/set-smapi-version.sh
+++ b/build/unix/set-smapi-version.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
#
#
diff --git a/build/windows/finalize-install-package.sh b/build/windows/finalize-install-package.sh
index 0996e3ed..117e33e5 100755
--- a/build/windows/finalize-install-package.sh
+++ b/build/windows/finalize-install-package.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
##########
## Read config
diff --git a/build/windows/prepare-install-package.ps1 b/build/windows/prepare-install-package.ps1
index 87a4fe01..71de1154 100644
--- a/build/windows/prepare-install-package.ps1
+++ b/build/windows/prepare-install-package.ps1
@@ -158,6 +158,10 @@ foreach ($folder in $folders) {
cp "$smapiBin/$name" "$bundlePath/smapi-internal"
}
+ if ($folder -eq "windows") {
+ cp "$smapiBin/VdfConverter.dll" "$bundlePath/smapi-internal"
+ }
+
cp "$smapiBin/SMAPI.config.json" "$bundlePath/smapi-internal/config.json"
cp "$smapiBin/SMAPI.metadata.json" "$bundlePath/smapi-internal/metadata.json"
if ($folder -eq "linux" -or $folder -eq "macOS") {
diff --git a/docs/release-notes.md b/docs/release-notes.md
index ea459bcb..e99218bd 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -7,9 +7,97 @@
_If needed, you can update to SMAPI 3.16.0 first and then install the latest version._
-->
-## Upcoming release
+## 3.18.3
+Released 09 April 2023 for Stardew Valley 1.5.6 or later.
+
+* For players:
+ * Fixed `findstr` installer error for some players.
+ * Fixed installer error for some Linux players due to a non-portable shebang (thanks to freyacoded!).
+ * Fixed error using load order overrides when there are broken mods installed (thanks to atravita!).
+ * Removed `LargeAddressAware` flag on SMAPI (no longer needed since it's 64-bit now).
+ * Improved translations. Thganks to stylemate (updated Korean)!
+
+* For mod authors:
+ * Added `IsActiveForScreen()` method to `PerScreen<T>`.
+ * Updated to [FluentHttpClient](https://github.com/Pathoschild/FluentHttpClient#readme) 4.3.0 (see [changes](https://github.com/Pathoschild/FluentHttpClient/blob/develop/RELEASE-NOTES.md#430)).
+ * Adjusted `ModContentManager.HandleUnknownFileType` to let mods patch it.
+ * Fixed `Context.IsWorldReady` being editable by mods.
+
+* For the web UI:
+ * Updated the JSON validator/schema for Content Patcher 1.29.0.
+
+## 3.18.2
+Released 09 January 2023 for Stardew Valley 1.5.6 or later.
+
+* For players:
+ * Fixed empty save backups for some macOS players.
+ * Fixed `player_add` console command not handling custom slingshots correctly (thanks too DaLion!).
+
+* For mod authors:
+ * Added `DelegatingModHooks` utility for mods which need to override SMAPI's mod hooks directly.
+ * Updated to Newtonsoft.Json 13.0.2 (see [changes](https://github.com/JamesNK/Newtonsoft.Json/releases/tag/13.0.2)) and Pintail 2.2.2 (see [changes](https://github.com/Nanoray-pl/Pintail/blob/master/docs/release-notes.md#222)).
+
+## 3.18.1
+Released 01 December 2022 for Stardew Valley 1.5.6 or later.
+
+* For players:
+ * Fixed mod texture edits sometimes cut off (thanks to atravita!).
+
+* For the web UI:
+ * The log parser no longer warns about missing Error Handler on Android, where it doesn't exist yet (thanks to AnotherPillow!).
+
+## 3.18.0
+Released 12 November 2022 for Stardew Valley 1.5.6 or later. See [release highlights](https://www.patreon.com/posts/74565278).
+
* For players:
- * Fixed update alert sh