summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build/GlobalAssemblyInfo.cs4
-rw-r--r--build/common.targets12
-rw-r--r--docs/release-notes.md31
-rw-r--r--docs/technical-docs.md4
-rw-r--r--src/SMAPI.Installer/windows-install.bat9
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/Framework/Commands/World/SetTimeCommand.cs2
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs14
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/ModEntry.cs4
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/StardewModdingAPI.Mods.ConsoleCommands.csproj2
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/manifest.json4
-rw-r--r--src/SMAPI.Mods.SaveBackup/manifest.json4
-rw-r--r--src/SMAPI.Tests/Utilities/SemanticVersionTests.cs2
-rw-r--r--src/SMAPI.Web/Controllers/ModsApiController.cs7
-rw-r--r--src/SMAPI.Web/Framework/Clients/ModDrop/IModDropClient.cs17
-rw-r--r--src/SMAPI.Web/Framework/Clients/ModDrop/ModDropClient.cs96
-rw-r--r--src/SMAPI.Web/Framework/Clients/ModDrop/ModDropMod.cs24
-rw-r--r--src/SMAPI.Web/Framework/Clients/ModDrop/ResponseModels/FileDataModel.cs21
-rw-r--r--src/SMAPI.Web/Framework/Clients/ModDrop/ResponseModels/ModDataModel.cs15
-rw-r--r--src/SMAPI.Web/Framework/Clients/ModDrop/ResponseModels/ModListModel.cs11
-rw-r--r--src/SMAPI.Web/Framework/Clients/ModDrop/ResponseModels/ModModel.cs12
-rw-r--r--src/SMAPI.Web/Framework/ConfigModels/ApiClientsConfig.cs9
-rw-r--r--src/SMAPI.Web/Framework/ModRepositories/ModDropRepository.cs59
-rw-r--r--src/SMAPI.Web/Startup.cs8
-rw-r--r--src/SMAPI.Web/ViewModels/ModModel.cs5
-rw-r--r--src/SMAPI.Web/Views/Index/Index.cshtml1
-rw-r--r--src/SMAPI.Web/Views/Mods/Index.cshtml11
-rw-r--r--src/SMAPI.Web/appsettings.json3
-rw-r--r--src/SMAPI.Web/wwwroot/Content/js/mods.js84
-rw-r--r--src/SMAPI/Constants.cs7
-rw-r--r--src/SMAPI/Context.cs2
-rw-r--r--src/SMAPI/Events/BuildingListChangedEventArgs.cs2
-rw-r--r--src/SMAPI/Events/ContentEvents.cs17
-rw-r--r--src/SMAPI/Events/ControlEvents.cs59
-rw-r--r--src/SMAPI/Events/CursorMovedEventArgs.cs2
-rw-r--r--src/SMAPI/Events/DebrisListChangedEventArgs.cs2
-rw-r--r--src/SMAPI/Events/EventArgsClickableMenuChanged.cs4
-rw-r--r--src/SMAPI/Events/EventArgsClickableMenuClosed.cs4
-rw-r--r--src/SMAPI/Events/EventArgsControllerButtonPressed.cs2
-rw-r--r--src/SMAPI/Events/EventArgsControllerButtonReleased.cs4
-rw-r--r--src/SMAPI/Events/EventArgsControllerTriggerPressed.cs2
-rw-r--r--src/SMAPI/Events/EventArgsControllerTriggerReleased.cs4
-rw-r--r--src/SMAPI/Events/EventArgsInput.cs2
-rw-r--r--src/SMAPI/Events/EventArgsIntChanged.cs2
-rw-r--r--src/SMAPI/Events/EventArgsInventoryChanged.cs2
-rw-r--r--src/SMAPI/Events/EventArgsKeyPressed.cs2
-rw-r--r--src/SMAPI/Events/EventArgsKeyboardStateChanged.cs2
-rw-r--r--src/SMAPI/Events/EventArgsLevelUp.cs2
-rw-r--r--src/SMAPI/Events/EventArgsLocationBuildingsChanged.cs2
-rw-r--r--src/SMAPI/Events/EventArgsLocationObjectsChanged.cs2
-rw-r--r--src/SMAPI/Events/EventArgsLocationsChanged.cs2
-rw-r--r--src/SMAPI/Events/EventArgsMineLevelChanged.cs4
-rw-r--r--src/SMAPI/Events/EventArgsMouseStateChanged.cs4
-rw-r--r--src/SMAPI/Events/EventArgsPlayerWarped.cs2
-rw-r--r--src/SMAPI/Events/EventArgsValueChanged.cs6
-rw-r--r--src/SMAPI/Events/GameEvents.cs59
-rw-r--r--src/SMAPI/Events/GraphicsEvents.cs53
-rw-r--r--src/SMAPI/Events/InputEvents.cs23
-rw-r--r--src/SMAPI/Events/InventoryChangedEventArgs.cs5
-rw-r--r--src/SMAPI/Events/LargeTerrainFeatureListChangedEventArgs.cs2
-rw-r--r--src/SMAPI/Events/LevelChangedEventArgs.cs5
-rw-r--r--src/SMAPI/Events/LocationEvents.cs29
-rw-r--r--src/SMAPI/Events/LocationListChangedEventArgs.cs2
-rw-r--r--src/SMAPI/Events/MenuChangedEventArgs.cs2
-rw-r--r--src/SMAPI/Events/MenuEvents.cs23
-rw-r--r--src/SMAPI/Events/MineEvents.cs17
-rw-r--r--src/SMAPI/Events/MouseWheelScrolledEventArgs.cs2
-rw-r--r--src/SMAPI/Events/MultiplayerEvents.cs35
-rw-r--r--src/SMAPI/Events/NpcListChangedEventArgs.cs2
-rw-r--r--src/SMAPI/Events/ObjectListChangedEventArgs.cs2
-rw-r--r--src/SMAPI/Events/PlayerEvents.cs29
-rw-r--r--src/SMAPI/Events/SaveEvents.cs47
-rw-r--r--src/SMAPI/Events/SpecialisedEvents.cs17
-rw-r--r--src/SMAPI/Events/TerrainFeatureListChangedEventArgs.cs2
-rw-r--r--src/SMAPI/Events/TimeChangedEventArgs.cs2
-rw-r--r--src/SMAPI/Events/TimeEvents.cs23
-rw-r--r--src/SMAPI/Events/UnvalidatedUpdateTickedEventArgs.cs2
-rw-r--r--src/SMAPI/Events/UnvalidatedUpdateTickingEventArgs.cs2
-rw-r--r--src/SMAPI/Events/UpdateTickedEventArgs.cs2
-rw-r--r--src/SMAPI/Events/UpdateTickingEventArgs.cs2
-rw-r--r--src/SMAPI/Events/WarpedEventArgs.cs5
-rw-r--r--src/SMAPI/Events/WindowResizedEventArgs.cs2
-rw-r--r--src/SMAPI/Framework/ContentCoordinator.cs16
-rw-r--r--src/SMAPI/Framework/ContentManagers/BaseContentManager.cs20
-rw-r--r--src/SMAPI/Framework/ContentManagers/GameContentManager.cs27
-rw-r--r--src/SMAPI/Framework/ContentManagers/IContentManager.cs4
-rw-r--r--src/SMAPI/Framework/DeprecationManager.cs6
-rw-r--r--src/SMAPI/Framework/Events/EventManager.cs8
-rw-r--r--src/SMAPI/Framework/ModHelpers/ModHelper.cs36
-rw-r--r--src/SMAPI/Framework/ModLoading/AssemblyLoader.cs9
-rw-r--r--src/SMAPI/Framework/ModLoading/InstructionHandleResult.cs2
-rw-r--r--src/SMAPI/Framework/ModLoading/ModWarning.cs2
-rw-r--r--src/SMAPI/Framework/SCore.cs86
-rw-r--r--src/SMAPI/Framework/SGame.cs127
-rw-r--r--src/SMAPI/Framework/SMultiplayer.cs2
-rw-r--r--src/SMAPI/Framework/StateTracking/FieldWatchers/ComparableListWatcher.cs83
-rw-r--r--src/SMAPI/Framework/StateTracking/FieldWatchers/ComparableWatcher.cs13
-rw-r--r--src/SMAPI/Framework/StateTracking/FieldWatchers/NetCollectionWatcher.cs3
-rw-r--r--src/SMAPI/Framework/StateTracking/FieldWatchers/NetDictionaryWatcher.cs2
-rw-r--r--src/SMAPI/Framework/StateTracking/FieldWatchers/NetValueWatcher.cs14
-rw-r--r--src/SMAPI/Framework/StateTracking/FieldWatchers/ObservableCollectionWatcher.cs3
-rw-r--r--src/SMAPI/Framework/StateTracking/FieldWatchers/WatcherFactory.cs8
-rw-r--r--src/SMAPI/Framework/StateTracking/WorldLocationsTracker.cs50
-rw-r--r--src/SMAPI/Framework/WatcherCore.cs3
-rw-r--r--src/SMAPI/IModHelper.cs16
-rw-r--r--src/SMAPI/Metadata/CoreAssetPropagator.cs82
-rw-r--r--src/SMAPI/Metadata/InstructionMetadata.cs80
-rw-r--r--src/SMAPI/SemanticVersion.cs2
-rw-r--r--src/SMAPI/StardewModdingAPI.csproj3
-rw-r--r--src/StardewModdingAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs2
-rw-r--r--src/StardewModdingAPI.Toolkit.CoreInterfaces/StardewModdingAPI.Toolkit.CoreInterfaces.csproj4
-rw-r--r--src/StardewModdingAPI.Toolkit/Framework/Clients/WebApi/ModExtendedMetadataModel.cs4
-rw-r--r--src/StardewModdingAPI.Toolkit/Framework/Clients/Wiki/WikiClient.cs4
-rw-r--r--src/StardewModdingAPI.Toolkit/Framework/Clients/Wiki/WikiModEntry.cs3
-rw-r--r--src/StardewModdingAPI.Toolkit/Framework/ModScanning/ModScanner.cs15
-rw-r--r--src/StardewModdingAPI.Toolkit/Framework/UpdateData/ModRepositoryKey.cs3
-rw-r--r--src/StardewModdingAPI.Toolkit/SemanticVersion.cs38
-rw-r--r--src/StardewModdingAPI.Toolkit/Serialisation/Converters/SemanticVersionConverter.cs24
-rw-r--r--src/StardewModdingAPI.Toolkit/StardewModdingAPI.Toolkit.csproj4
118 files changed, 1493 insertions, 331 deletions
diff --git a/build/GlobalAssemblyInfo.cs b/build/GlobalAssemblyInfo.cs
index 7a6de93c..207c11c3 100644
--- a/build/GlobalAssemblyInfo.cs
+++ b/build/GlobalAssemblyInfo.cs
@@ -1,5 +1,5 @@
using System.Reflection;
[assembly: AssemblyProduct("SMAPI")]
-[assembly: AssemblyVersion("2.8.2")]
-[assembly: AssemblyFileVersion("2.8.2")]
+[assembly: AssemblyVersion("2.9.0")]
+[assembly: AssemblyFileVersion("2.9.0")]
diff --git a/build/common.targets b/build/common.targets
index d9ad89f4..e08e7066 100644
--- a/build/common.targets
+++ b/build/common.targets
@@ -97,9 +97,9 @@
<Error Condition="!Exists('$(GamePath)')" Text="Failed to find the game install path automatically; edit the *.csproj file and manually add a &lt;GamePath&gt; setting with the full directory path containing the Stardew Valley executable." />
</Target>
- <!-- copy files into game directory and enable debugging (only in debug mode) -->
+ <!-- copy files into game directory and enable debugging -->
<Target Name="AfterBuild">
- <CallTarget Targets="CopySMAPI;CopyDefaultMods" Condition="'$(Configuration)' == 'Debug'" />
+ <CallTarget Targets="CopySMAPI;CopyDefaultMods" />
</Target>
<Target Name="CopySMAPI" Condition="'$(MSBuildProjectName)' == 'StardewModdingAPI'">
<Copy SourceFiles="$(TargetDir)\$(TargetName).exe" DestinationFolder="$(GamePath)" />
@@ -116,19 +116,19 @@
<Copy SourceFiles="$(TargetDir)\$(TargetName).pdb" DestinationFolder="$(GamePath)\Mods\$(AssemblyName)" Condition="Exists('$(TargetDir)\$(TargetName).pdb')" />
<Copy SourceFiles="$(TargetDir)\manifest.json" DestinationFolder="$(GamePath)\Mods\$(AssemblyName)" />
</Target>
- <Target Name="CopyToolkit" Condition="'$(MSBuildProjectName)' == 'StardewModdingAPI.Toolkit' AND '$(Configuration)' == 'Debug' AND $(TargetFramework) == 'net4.5'" AfterTargets="PostBuildEvent">
+ <Target Name="CopyToolkit" Condition="'$(MSBuildProjectName)' == 'StardewModdingAPI.Toolkit' AND $(TargetFramework) == 'net4.5'" AfterTargets="PostBuildEvent">
<Copy SourceFiles="$(TargetDir)\$(TargetName).dll" DestinationFolder="$(GamePath)\smapi-internal" />
<Copy SourceFiles="$(TargetDir)\$(TargetName).pdb" DestinationFolder="$(GamePath)\smapi-internal" />
<Copy SourceFiles="$(TargetDir)\$(TargetName).xml" DestinationFolder="$(GamePath)\smapi-internal" />
</Target>
- <Target Name="CopyToolkitCoreInterfaces" Condition="'$(MSBuildProjectName)' == 'StardewModdingAPI.Toolkit.CoreInterfaces' AND '$(Configuration)' == 'Debug' AND $(TargetFramework) == 'net4.5'" AfterTargets="PostBuildEvent">
+ <Target Name="CopyToolkitCoreInterfaces" Condition="'$(MSBuildProjectName)' == 'StardewModdingAPI.Toolkit.CoreInterfaces' AND $(TargetFramework) == 'net4.5'" AfterTargets="PostBuildEvent">
<Copy SourceFiles="$(TargetDir)\$(TargetName).dll" DestinationFolder="$(GamePath)\smapi-internal" />
<Copy SourceFiles="$(TargetDir)\$(TargetName).pdb" DestinationFolder="$(GamePath)\smapi-internal" />
<Copy SourceFiles="$(TargetDir)\$(TargetName).xml" DestinationFolder="$(GamePath)\smapi-internal" />
</Target>
- <!-- launch SMAPI on debug -->
- <PropertyGroup Condition="$(Configuration) == 'Debug'">
+ <!-- launch SMAPI through Visual Studio -->
+ <PropertyGroup>
<StartAction>Program</StartAction>
<StartProgram>$(GamePath)\StardewModdingAPI.exe</StartProgram>
<StartWorkingDirectory>$(GamePath)</StartWorkingDirectory>
diff --git a/docs/release-notes.md b/docs/release-notes.md
index 90986cd4..cf11df7c 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -1,9 +1,36 @@
# Release notes
+## 2.9
+* For players:
+ * Added support for ModDrop in update checks and the mod compatibility list.
+ * Added friendly error for Steam players when Steam isn't loaded.
+ * Fixed cryptic error when running the installer from inside a zip file on Windows.
+ * Fixed error when leaving and rejoining a multiplayer server in the same session.
+ * Fixed empty "mods with warnings" list in some cases due to hidden warnings.
+ * Fixed Console Commands' handling of tool upgrade levels for item commands.
+
+* For modders:
+ * Added ModDrop update keys (see [docs](https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Manifest#Update_checks)).
+ * Added `IsLocalPlayer` to new player events.
+ * Added `helper.CreateTemporaryContentPack` to replace the deprecated `CreateTransitionalContentPack`.
+ * Reloading a map asset will now update affected locations.
+ * Reloading the `Data\NPCD