17 KiB
Release notes
1.12
See log.
For mod developers:
- Fixed content API error when loading a PNG during early game init (e.g. in mod's
Entry
). - Fixed content API error when loading an XNB from the mod folder on Mac.
1.11
See log.
For players:
- SMAPI now detects issues in
ObjectInformation.xnb
files caused by outdated XNB mods. - Errors when loading a save are now shown in the SMAPI console.
- Improved console logging performance.
- Fixed errors during game update causing the game to hang.
- Fixed errors due to mod events triggering during game save in Stardew Valley 1.2.
For mod developers:
- Added a content API which loads custom textures/maps/data from the mod's folder (
.xnb
or.png
format) or game content. Console.Out
messages are now written to the log file.Monitor.ExitGameImmediately
now aborts SMAPI initialisation and events more quickly.
1.10
See log.
For players:
- Updated to Stardew Valley 1.2.
- Added logic to rewrite many mods for compatibility with game updates, though some mods may still need an update.
- Fixed
SEHException
errors affecting some players. - Fixed issue where SMAPI didn't unlock some files on exit.
- Fixed rare issue where the installer would crash trying to delete a bundled mod from
%appdata%
. - Improved TrainerMod commands:
- Added
world_setyear
to change the current year. - Replaced
player_addmelee
withplayer_addweapon
with support for non-melee weapons.
- Added
For mod developers:
- Mods are now initialised after the
Initialize
/LoadContent
phase, which means theGameEvents.Initialize
andGameEvents.LoadContent
events are deprecated. You can move any logic in those methods to your mod'sEntry
method. - Added
IsBetween
and string overloads to theISemanticVersion
methods. - Fixed mouse-changed event never updating prior mouse position.
- Fixed
monitor.ExitGameImmediately
not working correctly. - Fixed
Constants.SaveFolderName
not set for a new game until the save is created.
1.9
See log.
For players:
- SMAPI now detects incompatible mods and disables them before they cause problems.
- SMAPI now allows mods nested into an otherwise empty parent folder (like
Mods\ModName-1.0\ModName\manifest.json
), since that's a common default behaviour when unpacking mods. - The installer now detects if you need to update .NET Framework before installing SMAPI.
- The installer now detects if you need to run the game at least once (to let it perform first-time setup) before installing SMAPI.
- The installer on Linux now finds games installed to
~/.steam/steam/steamapps/common/Stardew Valley
too. - The installer now removes old SMAPI logs to prevent confusion.
- The console now has simpler error messages.
- The console now has improved command handling & feedback.
- The console no longer shows the game's debug output (unless you use a SMAPI for developers build).
- Fixed the game-needs-an-update error not pausing before exit.
- Fixed installer errors for some players when deleting files.
- Fixed installer not ignoring potential game folders that don't contain a Stardew Valley exe.
- Fixed installer not recognising Linux/Mac paths starting with
~/
or containing an escaped space. - Fixed TrainerMod letting you add invalid items which may crash the game.
- Fixed TrainerMod's
world_downminelevel
command not working. - Fixed rare issue where mod dependencies would override SMAPI dependencies and cause unpredictable bugs.
- Fixed errors in mods' console command handlers crashing the game.
For mod developers:
- Added a simpler API for console commands (see
helper.ConsoleCommands
). - Added
TimeEvents.AfterDayStarted
event triggered when a day starts. This happens no matter how the day started (including new game, loaded save, or player went to bed). - Added
ContentEvents.AfterLocaleChanged
event triggered when the player changes the content language (for the upcoming Stardew Valley 1.2). - Added
SaveEvents.AfterReturnToTitle
event triggered when the player returns to the title screen (for the upcoming Stardew Valley 1.2). - Added
helper.Reflection.GetPrivateProperty
method. - Added a
--log-path
argument to specify the SMAPI log path during testing. - SMAPI now writes XNA input enums (
Buttons
andKeys
) to JSON as strings automatically, so mods no longer need to add aStringEnumConverter
themselves for those. - The SMAPI log now has a simpler filename.
- The SMAPI log now shows the OS caption (like "Windows 10") instead of its internal version when available.
- The SMAPI log now always uses
\r\n
line endings to simplify crossplatform viewing. - Fixed
SaveEvents.AfterLoad
being raised during the new-game intro before the player is initialised. - Fixed SMAPI not recognising
Mod
instances that don't subclassMod
directly. - Several obsolete APIs have been removed (see deprecation guide), and all notice-level deprecations have been increased to info.
- Removed the experimental
IConfigFile
.
For SMAPI developers:
- Added support for debugging SMAPI on Linux/Mac if supported by the editor.
1.8
See log.
For players:
- Mods no longer generate
.cache
subfolders. - Fixed multiple issues where mods failed during assembly loading.
- Tweaked install package to reduce confusion.
For mod developers:
- The
SemanticVersion
constructor now accepts a string version. - Increased deprecation level for
Extensions
to pending removal. - Warning:
Assembly.GetExecutingAssembly().Location
will no longer reliably return a valid path, because mod assemblies are loaded from memory when rewritten for compatibility. This approach has been discouraged since SMAPI 1.3; usehelper.DirectoryPath
instead.
For SMAPI developers:
- Rewrote assembly loading from the ground up. The new implementation...
- is much simpler;
- eliminates the
.cache
folders by loading rewritten assemblies from memory; - ensures DLLs are loaded in leaf-to-root order (i.e. dependencies first);
- improves dependent assembly resolution;
- no longer loads DLLs if they're not referenced;
- reduces log verbosity.
1.7
See log.
For players:
- The console now shows the folder path where mods should be added.
- The console now shows deprecation warnings after the list of loaded mods (instead of intermingled).
For mod developers:
- Added a mod registry which provides metadata about loaded mods.
- The
Entry(…)
method is now deferred until all mods are loaded. - Fixed
SaveEvents.BeforeSave
and.AfterSave
not triggering on days when the player shipped something. - Fixed
PlayerEvents.LoadedGame
andSaveEvents.AfterLoad
being fired before the world finishes initialising. - Fixed some
LocationEvents
,PlayerEvents
, andTimeEvents
being fired during game startup. - Increased deprecation levels for
SObject
,LogWriter
(notLog
), andMod.Entry(ModHelper)
(notMod.Entry(IModHelper)
) to pending removal. Increased deprecation levels forMod.PerSaveConfigFolder
,Mod.PerSaveConfigPath
, andVersion.VersionString
to info.
1.6
See log.
For players:
- Added console commands to open the game/data folders.
- Updated list of incompatible mods.
- Fixed
config.json
values being duplicated in some cases. - Fixed some Linux users not being able to launch SMAPI from Steam.
- Fixed the installer not finding custom install paths on 32-bit Windows.
- Fixed error when loading a mod which was released with a
.cache
folder for a different platform. - Fixed error when the console doesn't support colour.
- Fixed error when a mod reads a custom JSON file from a directory that doesn't exist.
For mod developers:
- Added three events:
SaveEvents.BeforeSave
,SaveEvents.AfterSave
, andSaveEvents.AfterLoad
. - Deprecated three events:
TimeEvents.OnNewDay
is unreliable; useTimeEvents.DayOfMonthChanged
orSaveEvents
instead.PlayerEvents.LoadedGame
is replaced bySaveEvents.AfterLoad
.PlayerEvents.FarmerChanged
serves no purpose.
For SMAPI developers:
- Added support for specifying a lower bound in mod incompatibility data.
- Added support for custom incompatible-mod error text.
- Fixed issue where
TrainerMod
used older logic to detect the game path.
1.5
See log.
For players:
- Added an option to disable update checks.
- SMAPI will now show a friendly error with update links when you try to use a known incompatible mod version.
- Fixed an error when a mod uses the new reflection API on a missing field or method.
- Fixed an issue where mods weren't notified of a menu change if it changed while SMAPI was still notifying mods of the previous change.
For developers:
- Deprecated
Version
in favour ofSemanticVersion
.
This new implementation is semver 2.0-compliant, introducesNewerThan(version)
andOlderThan(version)
convenience methods, adds support for parsing a version string into aSemanticVersion
, and fixes various bugs with the former implementation. This also replacesManifest
withIManifest
. - Increased deprecation levels for
SObject
,Extensions
,LogWriter
(notLog
),SPlayer
, andMod.Entry(ModHelper)
(notMod.Entry(IModHelper)
).
1.4
See log.
For players:
- SMAPI will now prevent mods from crashing your game with menu errors.
- The installer will now automatically detect most custom install paths.
- The installer will now automatically clean up old SMAPI files.
- Each mod now has its own
.cache
folder, so removing the mod won't leave orphaned cache files behind. - Improved installer wording to reduce confusion.
- Fixed the installer not removing TrainerMod from appdata if it's already in the game mods directory.
- Fixed the installer not moving mods out of appdata if the game isn't installed on the same Windows partition.
- Fixed the SMAPI console not being shown on Linux and Mac.
For developers:
- Added a reflection API (via
helper.Reflection
) that simplifies robust access to the game's private fields and methods. - Added a searchable
list_items
console command to replace theout_items
,out_melee
, andout_rings
commands. - Added
TypeLoadException
details when intercepted by SMAPI. - Fixed an issue where you couldn't debug into an assembly because it was copied into the
.cache
directory. That will now only happen if necessary.
1.3
See log.
For players:
- You can now run most mods on any platform (e.g. run Windows mods on Linux/Mac).
- Fixed the normal uninstaller not removing files added by the 'SMAPI for developers' installer.
1.2
See log.
For players:
- Fixed compatibility with some older mods.
- Fixed mod errors in most event handlers crashing the game.
- Fixed mod errors in some event handlers preventing other mods from receiving the same event.
- Fixed game crashing on startup with an audio error for some players.
For developers:
- Improved logging to show
ReflectionTypeLoadException
details when it's caught by SMAPI.
1.1
See log.
For players:
- Fixed console exiting immediately when some exceptions occur.
- Fixed an error in 1.0 when mod uses
config.json
but the file doesn't exist. - Fixed critical errors being saved to a separate log file.
- Fixed compatibility with some older mods.1.1.1
- Fixed race condition where some mods would sometimes crash because the game wasn't ready yet.1.1.1
For developers:
- Added new logging interface:
- easier to use;
- supports trace logs (written to the log file, but hidden in the console by default);
- messages are now listed in order;
- messages now show which mod logged them;
- more consistent and intuitive console color scheme.
- Added optional
MinimumApiVersion
tomanifest.json
. - Added emergency interrupt feature for dangerous mods.
- Fixed deprecation warnings being repeated if the mod can't be identified.1.1.1
1.0
See log.
For players:
- Added support for Linux and Mac.
- Added installer to automate adding & removing SMAPI.
- Added background update check on launch.
- Fixed missing
steam_appid.txt
file. - Fixed some mod UIs disappearing at a non-default zoom level for some users.
- Removed undocumented support for mods in AppData folder (breaking change).
- Removed
F2
debug mode.
For mod developers:
- Added deprecation warnings.
- Added OS version to log.
- Added zoom-adjusted mouse position to mouse-changed event arguments.
- Added SMAPI code documentation.
- Switched to semantic versioning.
- Fixed mod versions not shown correctly in the log.
- Fixed misspelled field in
manifest.json
schema. - Fixed some events getting wrong data.
- Simplified log output.
For SMAPI developers:
- Simplified compiling from source.
- Formalised release process and added automated build packaging.
- Removed obsolete and unfinished code.
- Internal cleanup & refactoring.
0.x
-
0.40.1.1 (2016-09-30, log)
- Added support for Stardew Valley 1.1.
-
0.40.0 (2016-04-05, log)
- Fixed an error that ocurred during minigames.
-
0.39.7 (2016-04-04, log)
- Added 'no check' graphics events that are triggered regardless of game's if checks.
-
0.39.6 (2016-04-01, log)
- Added game & SMAPI versions to log.
- Fixed conflict in graphics tick events.
- Bug fixes.
-
0.39.5 (2016-03-30, log)
-
0.39.4 (2016-03-29, log)
-
0.39.3 (2016-03-28, log)
-
0.39.2 (2016-03-23, log)
-
0.39.1 (2016-03-23, log)
-
0.38.8 (2016-03-23, log)
-
0.38.7 (2016-03-23, log)
-
0.38.6 (2016-03-22, log)
-
0.38.5 (2016-03-22, log)
-
0.38.4 (2016-03-21, log)
-
0.38.3 (2016-03-21, log)
-
0.38.2 (2016-03-21, log)
-
0.38.0 (2016-03-20, log)
-
0.38.1 (2016-03-20, log)
-
0.37.3 (2016-03-08, log)
-
0.37.2 (2016-03-07, log)
-
0.37.1 (2016-03-06, log)
-
0.36 (2016-03-04, log)
-
0.37 (2016-03-04, log)
-
0.35 (2016-03-02, log)
-
0.34 (2016-03-02, log)
-
0.33 (2016-03-02, log)
-
0.32 (2016-03-02, log)
-
0.31 (2016-03-02, log)
-
0.3 (2016-03-01, log)
-
0.2 (2016-02-29, log
-
0.1 (2016-02-28)