Commit Graph

1149 Commits

Author SHA1 Message Date
Jesse Plamondon-Willard bbe5983acd
rewrite asset operations to reduce allocations
• When raising AssetRequested, SMAPI now creates a single event args model and reuses it for each handler.
• There's now a single AssetOperationGroup per asset, which tracks the loaders/editors registered by every mod for that asset.
• The operation group's loader/editor lists are now used directly instead of querying them.
2022-05-11 21:36:45 -04:00
Jesse Plamondon-Willard 45f6743034
optimize raising events for the most common cases 2022-05-11 17:59:44 -04:00
Jesse Plamondon-Willard d097825c84
fix error when mod loads XNB mod file without extension 2022-05-11 17:25:06 -04:00
Jesse Plamondon-Willard eb01aa275b
fix asset propagation for player sprite recolor masks 2022-05-10 18:51:37 -04:00
Jesse Plamondon-Willard 7a91cf1cd8
update schema for Content Patcher 1.26.0 2022-05-09 00:18:37 -04:00
Jesse Plamondon-Willard cbe8b597cb
prepare for release 2022-05-08 20:11:02 -04:00
Jesse Plamondon-Willard 26f95bca63
optimize case where there's no legacy IAssetLoader/IAssetEditor instances 2022-05-08 18:22:35 -04:00
Jesse Plamondon-Willard e286e5591b
enable case-insensitive file paths by default for Android/Linux players 2022-05-07 23:26:34 -04:00
Jesse Plamondon-Willard 3db0353126
simplify and rewrite case-insensitive file path feature 2022-05-07 23:12:33 -04:00
Jesse Plamondon-Willard d4ff9f3f5c
log fake content packs created by mods 2022-05-07 21:53:18 -04:00
Jesse Plamondon-Willard 709638f197
fix assets loaded through fake content pack using parent mod's path info 2022-05-07 21:21:02 -04:00
Jesse Plamondon-Willard b45f50b57e
prepare for release 2022-05-06 19:40:13 -04:00
Jesse Plamondon-Willard a969828e93
cache asset operation instances created legacy interceptors 2022-05-06 18:26:35 -04:00
Jesse Plamondon-Willard b834ed7ef5
fix errors reading empty JSON files 2022-05-06 18:06:47 -04:00
Jesse Plamondon-Willard 87d5288287
fix content managers' LoadBaseString not recognizing localized mod assets 2022-05-06 18:05:40 -04:00
Jesse Plamondon-Willard 295ad29b8d
remove aggressive memory optimizations option 2022-05-04 21:02:41 -04:00
Jesse Plamondon-Willard c1342bd4cd
disable case-insensitive paths by default pending performance rework 2022-05-04 20:35:08 -04:00
Jesse Plamondon-Willard 42bf82d870
update compatibility list 2022-05-01 22:46:56 -04:00
Jesse Plamondon-Willard f78093bdb5
prepare for release 2022-05-01 17:39:57 -04:00
Jesse Plamondon-Willard 0e4aa65708
fix crossplatform build scripts 2022-05-01 17:33:41 -04:00
Jesse Plamondon-Willard f507bd0f9c
set SMAPI version from main build script 2022-04-29 22:55:12 -04:00
Jesse Plamondon-Willard 6a43171e92
re-enable Pintail by default 2022-04-26 23:38:16 -04:00
Jesse Plamondon-Willard 9939061615
fix typo 2022-04-19 19:26:12 -04:00
Jesse Plamondon-Willard d486d940ba
temporarily disable Pintail by default pending out parameter fix 2022-04-16 19:17:16 -04:00
Jesse Plamondon-Willard e7fd95aafd
update release notes 2022-04-16 13:04:16 -04:00
Jesse Plamondon-Willard 9ba0670407
fix Nexus API key needed to launch web project locally 2022-04-16 11:21:44 -04:00
Jesse Plamondon-Willard c0d0ad0282
show simplified stack trace for deprecation notices 2022-04-14 23:55:08 -04:00
Jesse Plamondon-Willard 43c875c4c2
prepare mod build package 4.0.1 for release 2022-04-14 19:21:18 -04:00
Jesse Plamondon-Willard 3a777a511d
update release notes 2022-04-14 18:15:02 -04:00
Jesse Plamondon-Willard eb125f1994
fix assembly version conflict error in mod build package 2022-04-14 18:14:08 -04:00
Jesse Plamondon-Willard 045e4ddf2d
update release notes (#837) 2022-04-13 22:58:47 -04:00
Jesse Plamondon-Willard 1e61309d3d
add IAssetDataForMap.ExtendMap 2022-04-11 22:56:14 -04:00
Jesse Plamondon-Willard 85c769d2a2
update release notes 2022-04-09 16:57:41 -04:00
Jesse Plamondon-Willard 288ef5dc07
add environment variable form of new CLI args, update docs 2022-04-09 12:03:30 -04:00
Jesse Plamondon-Willard 238045ba9c
reverse mod build package migration to .NET 5 (#837)
The migrated package didn't work consistently in VIsual Studio, so this suppresses nullable annotations in .NET Standard instead.
2022-04-07 22:19:48 -04:00
Jesse Plamondon-Willard 6b05296e71
migrate mod build package to .NET 5 to allow full nullable annotations (#837) 2022-04-07 01:51:50 -04:00
Jesse Plamondon-Willard 3f9b412bed
expand & reorganize 3.14.0 release notes 2022-04-07 00:26:28 -04:00
Jesse Plamondon-Willard d1a7194bf6
allow null values in ISemanticVersion compare methods (#837) 2022-04-06 23:47:12 -04:00
Jesse Plamondon-Willard b4e979cc99
fix all warnings to simplify migration to nullable annotations (#837) 2022-04-06 22:46:19 -04:00
Jesse Plamondon-Willard 215a863945
drop update checks for Stardew64Installer 2022-04-06 18:34:58 -04:00
Jesse Plamondon-Willard 4e2d7f2550
make mod file paths case-insensitive in all SMAPI APIs 2022-04-01 23:42:37 -04:00
Jesse Plamondon-Willard 1d3c99cc25
split helper.Content API into game/mod content APIs 2022-03-27 13:42:14 -04:00
Jesse Plamondon-Willard bacb851d7b
add IContentHelper.ParseAssetName (#766) 2022-03-26 17:44:48 -04:00
Jesse Plamondon-Willard 8d70415376
add deprecation notices for SMAPI 4.0.0 (#766) 2022-03-26 15:02:11 -04:00
Jesse Plamondon-Willard 4c64f9f644
rewrite content loading to allow handling locale variants (#766, #786, #812)
The game's content pipeline automatically loads localized variants if present. For example, it will try to load "Maps/cave.fr-FR", then "Maps/cave_international", then "Maps/cave". The old content API obfuscates this logic and treats them as interchangeable, which causes edge cases like bundle corruption (#812). This commit rewrites the loading logic to match the game logic when using the new content events, while maintaining the legacy behavior for the old IAssetLoader/IAssetEditor interfaces that'll be removed in SMAPI 4.0.0.
2022-03-26 14:07:16 -04:00
Jesse Plamondon-Willard ad8912047b
add asset edit priority (#766) 2022-03-26 01:43:40 -04:00
Jesse Plamondon-Willard 021891ff0c
add load conflict resolution option (#766) 2022-03-25 22:49:14 -04:00
Jesse Plamondon-Willard 9025b0dcc5
fix asset load conflict always showing multiple-mod form 2022-03-25 22:16:49 -04:00
Jesse Plamondon-Willard e1fc566e0a
add content pack labels (#766) 2022-03-25 21:46:37 -04:00
Jesse Plamondon-Willard 2b0ce2bb4d
add AssetInvalidated content event (#766) 2022-03-24 22:55:55 -04:00
Jesse Plamondon-Willard 584725bb8e
add initial AssetRequested content event (#766) 2022-03-23 01:06:11 -04:00
Jesse Plamondon-Willard b07d2340a9
encapsulate & cache asset operation groups (#766)
This is needed for the upcoming Stardew Valley 1.6 to avoid duplicate checks between DoesAssetExist and Load calls, and to make sure the answer doesn't change between them.
2022-03-22 23:00:18 -04:00
Jesse Plamondon-Willard d96cec88e4
fix set_farm_type not updating warps 2022-03-10 23:24:01 -05:00
Jesse Plamondon-Willard 2216e37726
rework launch script argument parsing (#832)
This commit...

* replaces the internal `--no-reopen-terminal` arg with a documented `--use-current-shell` arg that works on Linux too;
* replaces the new SKIP_TERMINAL environment variable with the existing SMAPI_NO_TERMINAL one;
* moves argument parsing out of the 'initial setup' section (so it's easier for players to edit if needed);
* simplfies argument parsing (no need to support short opt names or add arguments for the default behavior);
* fixes arguments not parsed after the first unrecognized argument, so `--unknown --no-terminal` would still open a terminal.
2022-03-06 19:55:32 -05:00
Jesse Plamondon-Willard 8429485e69
update schema for Content Patcher 1.25.0 2022-02-27 20:40:49 -05:00
Jesse Plamondon-Willard f36b4e06ef
update release notes 2022-02-25 23:50:52 -05:00
Jesse Plamondon-Willard 3c29ae6a1e
add Constants.ContentPath 2022-02-19 11:26:24 -05:00
Jesse Plamondon-Willard 2d52681b10
add Constants.GamePath & deprecate Constants.ExecutionPath 2022-02-19 11:07:26 -05:00
Jesse Plamondon-Willard a2190df08c
add AssetName to encapsulate asset name handling (#766) 2022-02-18 15:39:49 -05:00
Jesse Plamondon-Willard 065859408f
Fix support for custom locale codes in asset names (#766) 2022-02-18 12:31:14 -05:00
Jesse Plamondon-Willard b0cc403098
add data-* attributes to log parser for external tools 2022-02-12 12:07:13 -05:00
Jesse Plamondon-Willard 4a1174cd50
fix thumbstick input overrides 2022-02-11 20:56:25 -05:00
Jesse Plamondon-Willard 25a9f54ecf
fix manifest JSON schema's update key pattern 2022-01-29 20:43:45 -05:00
Jesse Plamondon-Willard 3431f486a2
normalize season names in SDate constructor 2022-01-29 18:15:42 -05:00
Jesse Plamondon-Willard 6dd4a8a12b
fix item repo's handling of Journal Scraps and Secret Notes 2022-01-29 17:46:45 -05:00
Jesse Plamondon-Willard 53ed5f4faa
update release notes 2022-01-24 21:55:30 -05:00
Jesse Plamondon-Willard dbed0289d7
prepare for release 2022-01-16 22:57:40 -05:00
Jesse Plamondon-Willard 95f4513727
rewrite fallback assembly resolution
* SMAPI now also searches the root game folder for unresolved assemblies. This fixes an issue resolving the game DLL when the player's DLL version doesn't match the one used to compile SMAPI.
* The DLL search folders are now scanned once and cached to avoid repeated iterations on startup.
2022-01-16 22:56:48 -05:00
Jesse Plamondon-Willard 85f8631bee
fix typo 2022-01-16 18:54:00 -05:00
Jesse Plamondon-Willard ad0e6b315d
prepare for release 2022-01-16 17:13:28 -05:00
Jesse Plamondon-Willard 230f119205
merge field rewriters to reduce rewrite iterations 2022-01-16 17:08:08 -05:00
Jesse Plamondon-Willard 00bd9d19a1
bump min game version to 1.5.6
That avoids error reports on mods when pirated players have an older 1.5.5 build that break mods, and ensures that the new build number shown in the SMAPI log is available.
2022-01-16 00:15:03 -05:00
Jesse Plamondon-Willard 7e8d11ca3a
add Xbox app log instructions, redesign UI to fit 2022-01-15 23:41:01 -05:00
Jesse Plamondon-Willard 6f05580191
add detection for Xbox app game folders 2022-01-15 20:39:32 -05:00
Jesse Plamondon-Willard d029dd652f
fix JSON validator not recognizing manifest update subkeys 2022-01-15 18:04:33 -05:00
Jesse Plamondon-Willard 4cffd6c2c0
add save recovery for missing custom farm type 2022-01-15 17:21:11 -05:00
Jesse Plamondon-Willard 8ebb9ce8d4
fix backspaces ignored on Linux/macOS in SDV 1.5.5+ 2022-01-15 13:27:23 -05:00
Jesse Plamondon-Willard a8985e122e
fix suppressed console output not suppressing newlines 2022-01-15 12:21:22 -05:00
Jesse Plamondon-Willard e30e427628
add download option to log view 2022-01-02 19:59:38 -05:00
Jesse Plamondon-Willard 1fab386ab1
add Ukrainian translations (#823) 2022-01-02 13:57:14 -05:00
Jesse Plamondon-Willard 92f35837ad
fix syntax, update release notes 2022-01-02 13:48:53 -05:00
Jesse Plamondon-Willard aad77242f0
fix uninstaller not removing StardewModdingAPI.deps.json file 2021-12-23 23:08:49 -05:00
Jesse Plamondon-Willard 52f4df3f30
add new game build number to the SMAPI log 2021-12-21 20:33:08 -05:00
Jesse Plamondon-Willard 0d7d447600
auto-fix maps broken due to missing vanilla tilesheet 2021-12-20 22:18:09 -05:00
Jesse Plamondon-Willard 95f658014e
simplify running SMAPI without a terminal on Linux/macOS 2021-12-18 23:07:33 -05:00
Jesse Plamondon-Willard beb1acd4f8
update Steam error message 2021-12-18 22:21:31 -05:00
Jesse Plamondon-Willard aa5d1d4a20
update compatibility list 2021-12-09 19:57:57 -05:00
Jesse Plamondon-Willard 4e17716fa2
fix log parser handling when multiple mods have the exact same name 2021-12-09 19:56:46 -05:00
Jesse Plamondon-Willard 5b5dd47c22
prepare for release 2021-12-05 19:10:28 -05:00
Jesse Plamondon-Willard f4ca7dd228
add Windows build process to fix application icon until .NET bug is fixed 2021-12-05 18:55:10 -05:00
Jesse Plamondon-Willard c05fdf65cf
mark UI Info Suite incompatible 2021-12-05 18:39:08 -05:00
Jesse Plamondon-Willard 6a45640dd7
add known issue to release notes for missing pufferchick icon 2021-12-05 02:19:17 -05:00
Jesse Plamondon-Willard 98d01d522d
improve error when installer is pointed at a compatibility-branch game folder 2021-12-05 00:51:24 -05:00
Jesse Plamondon-Willard cb9d6ae5ad
improve error when installer is pointed at a SDV 1.5.4 folder 2021-12-04 23:47:27 -05:00
Jesse Plamondon-Willard 0f37c0f92d
update JSON validator for Content Patcher's new .fnt support 2021-12-04 22:41:59 -05:00
Jesse Plamondon-Willard c80d07fddf
migrate SMAPI to self-contained install
This removes the need to have .NET 5 installed to run SMAPI. Note that there's no need to actually bundle the .NET files, since they're already bundled into the game folder.
2021-12-04 15:55:29 -05:00
Jesse Plamondon-Willard 6df3b0b814
update for Stardew Valley 1.5.5 hotfix 2021-12-03 19:53:22 -05:00
Jesse Plamondon-Willard e4416925f9
add build script to set the release version 2021-12-03 02:16:27 -05:00
Jesse Plamondon-Willard 181508084b
make installer self-contained
This lets players run the installer without manually installing .NET 5, which was causing a lot of support requests.
2021-12-03 00:26:46 -05:00
Jesse Plamondon-Willard bf5a9b8762
switch to scripted release package process 2021-12-02 20:48:00 -05:00