diff options
author | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2022-03-26 14:07:16 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2022-03-26 14:07:16 -0400 |
commit | 4c64f9f644c2349d2ca2407ce3aff736ba3fc354 (patch) | |
tree | 61528364330c2c2d9551da7543a8d83e4fedfaba /src/SMAPI/Framework/ModHelpers | |
parent | ad8912047beaf84ce34f4918703d55841be13ff0 (diff) | |
download | SMAPI-4c64f9f644c2349d2ca2407ce3aff736ba3fc354.tar.gz SMAPI-4c64f9f644c2349d2ca2407ce3aff736ba3fc354.tar.bz2 SMAPI-4c64f9f644c2349d2ca2407ce3aff736ba3fc354.zip |
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.
Diffstat (limited to 'src/SMAPI/Framework/ModHelpers')
-rw-r--r-- | src/SMAPI/Framework/ModHelpers/ContentHelper.cs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/SMAPI/Framework/ModHelpers/ContentHelper.cs b/src/SMAPI/Framework/ModHelpers/ContentHelper.cs index 4e522c8d..3416c286 100644 --- a/src/SMAPI/Framework/ModHelpers/ContentHelper.cs +++ b/src/SMAPI/Framework/ModHelpers/ContentHelper.cs @@ -88,10 +88,10 @@ namespace StardewModdingAPI.Framework.ModHelpers switch (source) { case ContentSource.GameContent: - return this.GameContentManager.Load<T>(assetName, this.CurrentLocaleConstant, useCache: false); + return this.GameContentManager.LoadLocalized<T>(assetName, this.CurrentLocaleConstant, useCache: false); case ContentSource.ModFolder: - return this.ModContentManager.Load<T>(assetName, Constants.DefaultLanguage, useCache: false); + return this.ModContentManager.LoadExact<T>(assetName, useCache: false); default: throw new SContentLoadException($"{this.ModName} failed loading content asset '{key}' from {source}: unknown content source '{source}'."); |