summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/release-notes.md4
-rw-r--r--src/SMAPI/Framework/SCore.cs24
2 files changed, 20 insertions, 8 deletions
diff --git a/docs/release-notes.md b/docs/release-notes.md
index 82cf51db..9cd45f61 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -1,6 +1,10 @@
← [README](README.md)
# Release notes
+## Upcoming release
+* For mod authors:
+ * Fixed assets loaded through a fake content pack not working correctly since 3.14.0.
+
## 3.14.1
Released 06 May 2022 for Stardew Valley 1.5.6 or later.
diff --git a/src/SMAPI/Framework/SCore.cs b/src/SMAPI/Framework/SCore.cs
index ad6de997..c8dcf747 100644
--- a/src/SMAPI/Framework/SCore.cs
+++ b/src/SMAPI/Framework/SCore.cs
@@ -1880,20 +1880,28 @@ namespace StardewModdingAPI.Framework
/// <param name="packDirPath">The absolute path to the fake content pack's directory.</param>
/// <param name="packManifest">The fake content pack's manifest.</param>
/// <param name="contentCore">The content manager to use for mod content.</param>
- /// <param name="mod">The mod for which the content pack is being created.</param>
- private IContentPack CreateFakeContentPack(string packDirPath, IManifest packManifest, ContentCoordinator contentCore, IModMetadata mod)
+ /// <param name="parentMod">The mod for which the content pack is being created.</param>
+ private IContentPack CreateFakeContentPack(string packDirPath, IManifest packManifest, ContentCoordinator contentCore, IModMetadata parentMod)
{
- IMonitor packMonitor = this.LogManager.GetMonitor(packManifest.Name);
+ IModMetadata fakeMod = new ModMetadata(
+ displayName: $"{parentMod.DisplayName} (fake content pack: {Path.GetRelativePath(Constants.ModsPath, packDirPath)})",
+ directoryPath: packDirPath,
+ rootPath: Constants.ModsPath,
+ manifest: packManifest,
+ dataRecord: null,
+ isIgnored: false
+ );
+ IMonitor packMonitor = this.LogManager.GetMonitor(packManifest.Name);
IFilePathLookup relativePathCache = this.GetFilePathLookup(packDirPath);
- GameContentHelper gameContentHelper = new(contentCore, mod, packManifest.Name, packMonitor, this.Reflection);
- IModContentHelper packContentHelper = new ModContentHelper(contentCore, packDirPath, mod, packManifest.Name, gameContentHelper.GetUnderlyingContentManager(), relativePathCache, this.Reflection);
- TranslationHelper packTranslationHelper = new(mod, contentCore.GetLocale(), contentCore.Language);
+ GameContentHelper gameContentHelper = new(contentCore, fakeMod, packManifest.Name, packMonitor, this.Reflection);
+ IModContentHelper packContentHelper = new ModContentHelper(contentCore, packDirPath, fakeMod, packManifest.Name, gameContentHelper.GetUnderlyingContentManager(), relativePathCache, this.Reflection);
+ TranslationHelper packTranslationHelper = new(fakeMod, contentCore.GetLocale(), contentCore.Language);
ContentPack contentPack = new(packDirPath, packManifest, packContentHelper, packTranslationHelper, this.Toolkit.JsonHelper, relativePathCache);
- this.ReloadTranslationsForTemporaryContentPack(mod, contentPack);
- mod.FakeContentPacks.Add(new WeakReference<ContentPack>(contentPack));
+ this.ReloadTranslationsForTemporaryContentPack(parentMod, contentPack);
+ parentMod.FakeContentPacks.Add(new WeakReference<ContentPack>(contentPack));
return contentPack;
}