summaryrefslogtreecommitdiff
path: root/src/SMAPI/Metadata
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2022-11-11 20:55:24 -0500
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2022-11-11 20:55:24 -0500
commit286c2d244949f4eee62e2de440938d2d8ae3ce76 (patch)
treeeef534bfffc3f6a026caa71f03aa82a2704f2c56 /src/SMAPI/Metadata
parentbe84248a9a0a57ee1b2384e63b25fc9bb694fa4d (diff)
downloadSMAPI-286c2d244949f4eee62e2de440938d2d8ae3ce76.tar.gz
SMAPI-286c2d244949f4eee62e2de440938d2d8ae3ce76.tar.bz2
SMAPI-286c2d244949f4eee62e2de440938d2d8ae3ce76.zip
pass multiplayer into asset propagator to avoid reflection
Diffstat (limited to 'src/SMAPI/Metadata')
-rw-r--r--src/SMAPI/Metadata/CoreAssetPropagator.cs16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/SMAPI/Metadata/CoreAssetPropagator.cs b/src/SMAPI/Metadata/CoreAssetPropagator.cs
index d94fe2ae..037e4573 100644
--- a/src/SMAPI/Metadata/CoreAssetPropagator.cs
+++ b/src/SMAPI/Metadata/CoreAssetPropagator.cs
@@ -40,6 +40,9 @@ namespace StardewModdingAPI.Metadata
/// <summary>Writes messages to the console.</summary>
private readonly IMonitor Monitor;
+ /// <summary>The multiplayer instance whose map cache to update.</summary>
+ private readonly Multiplayer Multiplayer;
+
/// <summary>Simplifies access to private game code.</summary>
private readonly Reflector Reflection;
@@ -70,13 +73,15 @@ namespace StardewModdingAPI.Metadata
/// <param name="mainContent">The main content manager through which to reload assets.</param>
/// <param name="disposableContent">An internal content manager used only for asset propagation.</param>
/// <param name="monitor">Writes messages to the console.</param>
+ /// <param name="multiplayer">The multiplayer instance whose map cache to update.</param>
/// <param name="reflection">Simplifies access to private code.</param>
/// <param name="parseAssetName">Parse a raw asset name.</param>
- public CoreAssetPropagator(LocalizedContentManager mainContent, GameContentManagerForAssetPropagation disposableContent, IMonitor monitor, Reflector reflection, Func<string, IAssetName> parseAssetName)
+ public CoreAssetPropagator(LocalizedContentManager mainContent, GameContentManagerForAssetPropagation disposableContent, IMonitor monitor, Multiplayer multiplayer, Reflector reflection, Func<string, IAssetName> parseAssetName)
{
this.MainContentManager = mainContent;
this.DisposableContentManager = disposableContent;
this.Monitor = monitor;
+ this.Multiplayer = multiplayer;
this.Reflection = reflection;
this.ParseAssetName = parseAssetName;
}
@@ -1166,12 +1171,9 @@ namespace StardewModdingAPI.Metadata
GameLocation location = locationInfo.Location;
Vector2? playerPos = Game1.player?.Position;
- // clear cachedMultiplayerMaps so Asset Propegation works on farmhands and Map edits can be applied after an initial load
- if (!Game1.IsMasterGame)
- {
- var multiplayer = this.Reflection.GetField<Multiplayer>(typeof(Game1), "multiplayer").GetValue();
- multiplayer.cachedMultiplayerMaps.Remove(locationInfo.Location.NameOrUniqueName);
- }
+ // clear multiplayer cache for farmhands
+ if (!Context.IsMainPlayer)
+ this.Multiplayer.cachedMultiplayerMaps.Remove(location.NameOrUniqueName);
// reload map
location.interiorDoors.Clear(); // prevent errors when doors try to update tiles which no longer exist